diff options
author | 2018-10-29 18:39:36 +0100 | |
---|---|---|
committer | 2018-10-29 18:39:36 +0100 | |
commit | 93308b483ee73cecc46a6b44fccc126edf3c512a (patch) | |
tree | b1aacbfa0398b30d22252901836a3e99255924fe /src/devices/machine | |
parent | 95863464389feba1cb8bf3e6a2c1057d72e33344 (diff) |
cpu/pps4 - machine/pxa255, r10696, r10788, ra17xx, rf5c296, roc10937, rp5c01, rp5c15, rp5h01, rtc4543, rtc65271, rtc9701, s2636, s3520cf, s3c2400, s3c2410, s3c2440, sa1043, scnxx562: removed MCFG macros (nw)
Diffstat (limited to 'src/devices/machine')
-rw-r--r-- | src/devices/machine/pxa255.h | 14 | ||||
-rw-r--r-- | src/devices/machine/r10696.h | 15 | ||||
-rw-r--r-- | src/devices/machine/r10788.h | 11 | ||||
-rw-r--r-- | src/devices/machine/ra17xx.h | 21 | ||||
-rw-r--r-- | src/devices/machine/rf5c296.h | 2 | ||||
-rw-r--r-- | src/devices/machine/roc10937.h | 45 | ||||
-rw-r--r-- | src/devices/machine/rp5c01.h | 15 | ||||
-rw-r--r-- | src/devices/machine/rp5c15.h | 2 | ||||
-rw-r--r-- | src/devices/machine/rp5h01.h | 3 | ||||
-rw-r--r-- | src/devices/machine/rtc4543.cpp | 6 | ||||
-rw-r--r-- | src/devices/machine/rtc4543.h | 20 | ||||
-rw-r--r-- | src/devices/machine/rtc65271.h | 11 | ||||
-rw-r--r-- | src/devices/machine/rtc9701.h | 10 | ||||
-rw-r--r-- | src/devices/machine/s2636.h | 18 | ||||
-rw-r--r-- | src/devices/machine/s3520cf.h | 10 | ||||
-rw-r--r-- | src/devices/machine/s3c2400.h | 64 | ||||
-rw-r--r-- | src/devices/machine/s3c2410.h | 84 | ||||
-rw-r--r-- | src/devices/machine/s3c2440.h | 81 | ||||
-rw-r--r-- | src/devices/machine/saa1043.h | 99 | ||||
-rw-r--r-- | src/devices/machine/scnxx562.h | 100 |
20 files changed, 93 insertions, 538 deletions
diff --git a/src/devices/machine/pxa255.h b/src/devices/machine/pxa255.h index 1f125108d57..e0ef592271d 100644 --- a/src/devices/machine/pxa255.h +++ b/src/devices/machine/pxa255.h @@ -21,14 +21,6 @@ #include "pxa255defs.h" -#define MCFG_PXA255_GPIO0_SET_CALLBACK(_devcb) \ - downcast<pxa255_periphs_device &>(*device).set_gpio0_set_cb(DEVCB_##_devcb); - -#define MCFG_PXA255_GPIO0_CLEAR_CALLBACK(_devcb) \ - downcast<pxa255_periphs_device &>(*device).set_gpio0_clear_cb(DEVCB_##_devcb); - -#define MCFG_PXA255_GPIO0_IN_CALLBACK(_devcb) \ - downcast<pxa255_periphs_device &>(*device).set_gpio0_in_cb(DEVCB_##_devcb); class pxa255_periphs_device : public device_t { @@ -42,9 +34,9 @@ public: pxa255_periphs_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> devcb_base &set_gpio0_set_cb(Object &&cb) { return m_gpio0_set_func.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_gpio0_clear_cb(Object &&cb) { return m_gpio0_clear_func.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_gpio0_in_cb(Object &&cb) { return m_gpio0_in_func.set_callback(std::forward<Object>(cb)); } + auto gpio0_set_cb() { return m_gpio0_set_func.bind(); } + auto gpio0_clear_cb() { return m_gpio0_clear_func.bind(); } + auto gpio0_in_cb() { return m_gpio0_in_func.bind(); } DECLARE_READ32_MEMBER(pxa255_i2s_r); DECLARE_WRITE32_MEMBER(pxa255_i2s_w); diff --git a/src/devices/machine/r10696.h b/src/devices/machine/r10696.h index 1abbb030d88..17e0c4e1c84 100644 --- a/src/devices/machine/r10696.h +++ b/src/devices/machine/r10696.h @@ -20,16 +20,6 @@ #include "device.h" -/************************************* - * - * Device configuration macros - * - *************************************/ - -/* Set the read and write group (4-bit; nibble) delegates */ -#define MCFG_R10696_IO(_devcb_rd,_devcb_wr) \ - downcast<r10696_device &>(*device).set_iord(DEVCB_##_devcb_rd); \ - downcast<r10696_device &>(*device).set_iowr(DEVCB_##_devcb_wr); class r10696_device : public device_t { @@ -39,8 +29,9 @@ public: DECLARE_READ8_MEMBER ( io_r ); DECLARE_WRITE8_MEMBER( io_w ); - template <class Object> devcb_base &set_iord(Object &&cb) { return m_iord.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_iowr(Object &&cb) { return m_iowr.set_callback(std::forward<Object>(cb)); } + /* Set the read and write group (4-bit; nibble) delegates */ + auto iord_cb() { return m_iord.bind(); } + auto iowr_cb() { return m_iowr.bind(); } protected: // device-level overrides diff --git a/src/devices/machine/r10788.h b/src/devices/machine/r10788.h index 1a8f4b13af8..ef783cb5a2d 100644 --- a/src/devices/machine/r10788.h +++ b/src/devices/machine/r10788.h @@ -19,15 +19,6 @@ #include "device.h" -/************************************* - * - * Device configuration macros - * - *************************************/ - -/* Set the writer used to update a display digit */ -#define MCFG_R10788_UPDATE(devcb) \ - downcast<r10788_device &>(*device).set_update(DEVCB_##devcb); class r10788_device : public device_t { @@ -48,7 +39,7 @@ public: DECLARE_READ8_MEMBER ( io_r ); DECLARE_WRITE8_MEMBER( io_w ); - template <class Object> devcb_base &set_update(Object &&cb) { return m_display.set_callback(std::forward<Object>(cb)); } + auto update_cb() { return m_display.bind(); } /* Set the writer used to update a display digit */ protected: // device-level overrides diff --git a/src/devices/machine/ra17xx.h b/src/devices/machine/ra17xx.h index 4e84a725756..1523c8d0b15 100644 --- a/src/devices/machine/ra17xx.h +++ b/src/devices/machine/ra17xx.h @@ -19,21 +19,6 @@ #include "device.h" #include "cpu/pps4/pps4.h" -/************************************* - * - * Device configuration macros - * - *************************************/ - -// Set the read line handler -#define MCFG_RA17XX_READ(devcb) \ - downcast<ra17xx_device &>(*device).set_iord(DEVCB_##devcb); -// Set the write line handler -#define MCFG_RA17XX_WRITE(devcb) \ - downcast<ra17xx_device &>(*device).set_iowr(DEVCB_##devcb); - -#define MCFG_RA17XX_CPU(tag) \ - downcast<ra17xx_device &>(*device).set_cpu_tag(tag); class ra17xx_device : public device_t { @@ -43,9 +28,9 @@ public: DECLARE_READ8_MEMBER ( io_r ); DECLARE_WRITE8_MEMBER( io_w ); - template <class Object> devcb_base &set_iord(Object &&cb) { return m_iord.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_iowr(Object &&cb) { return m_iowr.set_callback(std::forward<Object>(cb)); } - void set_cpu_tag(const char *tag) { m_cpu.set_tag(tag); } + auto iord_cb() { return m_iord.bind(); } + auto iowr_cb() { return m_iowr.bind(); } + template <typename T> void set_cpu_tag(T &&tag) { m_cpu.set_tag(std::forward<T>(tag)); } protected: // device-level overrides diff --git a/src/devices/machine/rf5c296.h b/src/devices/machine/rf5c296.h index fc95d3fdc4f..5945b97fd05 100644 --- a/src/devices/machine/rf5c296.h +++ b/src/devices/machine/rf5c296.h @@ -7,8 +7,6 @@ #include "pccard.h" -#define MCFG_RF5C296_SLOT(name) \ - downcast<rf5c296_device &>(*device).set_pccard(name); class rf5c296_device : public device_t { diff --git a/src/devices/machine/roc10937.h b/src/devices/machine/roc10937.h index 41b468c719e..8adacfef5e5 100644 --- a/src/devices/machine/roc10937.h +++ b/src/devices/machine/roc10937.h @@ -12,51 +12,6 @@ #pragma once -#define MCFG_ROC10937_ADD(_tag,_val) \ - MCFG_DEVICE_ADD(_tag, ROC10937,60)\ - MCFG_ROC10937_PORT(_val) - -#define MCFG_ROC10937_PORT(_val) \ - downcast<roc10937_device &>(*device).set_port_value(_val); -#define MCFG_ROC10937_REMOVE(_tag) \ - MCFG_DEVICE_REMOVE(_tag) - -#define MCFG_ROC10957_ADD(_tag,_val) \ - MCFG_DEVICE_ADD(_tag, ROC10957,60)\ - MCFG_ROC10957_PORT(_val) - -#define MCFG_ROC10957_PORT(_val) \ - downcast<roc10957_device &>(*device).set_port_value(_val); -#define MCFG_ROC10957_REMOVE(_tag) \ - MCFG_DEVICE_REMOVE(_tag) - -#define MCFG_MSC1937_ADD(_tag,_val) \ - MCFG_DEVICE_ADD(_tag, MSC1937,60)\ - MCFG_MSC1937_PORT(_val) - -#define MCFG_MSC1937_PORT(_val) \ - downcast<msc1937_device &>(*device).set_port_value(_val); - -#define MCFG_MSC1937_REMOVE(_tag) \ - MCFG_DEVICE_REMOVE(_tag) - -#define MCFG_MIC10937_ADD(_tag,_val) \ - MCFG_DEVICE_ADD(_tag, MIC10937,60)\ - MCFG_MIC10937_PORT(_val) - -#define MCFG_MIC10937_PORT(_val) \ - downcast<mic10937_device &>(*device).set_port_value(_val); - -#define MCFG_MIC10937_REMOVE(_tag) \ - MCFG_DEVICE_REMOVE(_tag) - -#define MCFG_S16LF01_ADD(_tag,_val) \ - MCFG_DEVICE_ADD(_tag, S16LF01,60)\ - MCFG_S16LF01_PORT(_val) - -#define MCFG_S16LF01_PORT(_val) \ - downcast<s16lf01_device &>(*device).set_port_value(_val); - class rocvfd_device : public device_t { public: diff --git a/src/devices/machine/rp5c01.h b/src/devices/machine/rp5c01.h index fe2c92f19ac..19f2711c67a 100644 --- a/src/devices/machine/rp5c01.h +++ b/src/devices/machine/rp5c01.h @@ -26,19 +26,6 @@ #include "dirtc.h" - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_RP5C01_OUT_ALARM_CB(_devcb) \ - downcast<rp5c01_device &>(*device).set_out_alarm_callback(DEVCB_##_devcb); - -// include this macro if the chip is not battery backed -#define MCFG_RP5C01_REMOVE_BATTERY() \ - downcast<rp5c01_device &>(*device).remove_battery(); - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -53,7 +40,7 @@ public: // construction/destruction rp5c01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> devcb_base &set_out_alarm_callback(Object &&cb) { return m_out_alarm_cb.set_callback(std::forward<Object>(cb)); } + auto out_alarm_callback() { return m_out_alarm_cb.bind(); } void remove_battery() { m_battery_backed = false; } DECLARE_READ8_MEMBER( read ); diff --git a/src/devices/machine/rp5c15.h b/src/devices/machine/rp5c15.h index a5805703ffe..156393fc4da 100644 --- a/src/devices/machine/rp5c15.h +++ b/src/devices/machine/rp5c15.h @@ -32,8 +32,6 @@ public: // construction/destruction rp5c15_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> devcb_base &set_out_alarm_callback(Object &&cb) { return m_out_alarm_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_clkout_callback(Object &&cb) { return m_out_clkout_cb.set_callback(std::forward<Object>(cb)); } auto alarm() { return m_out_alarm_cb.bind(); } auto clkout() { return m_out_clkout_cb.bind(); } diff --git a/src/devices/machine/rp5h01.h b/src/devices/machine/rp5h01.h index 10110c0ee79..686367c694e 100644 --- a/src/devices/machine/rp5h01.h +++ b/src/devices/machine/rp5h01.h @@ -68,9 +68,6 @@ private: DECLARE_DEVICE_TYPE(RP5H01, rp5h01_device) -#define MCFG_RP5H01_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, RP5H01, 0) - /* * Device uses memory region * with the same tag as the one diff --git a/src/devices/machine/rtc4543.cpp b/src/devices/machine/rtc4543.cpp index 9e883ab7fab..28cdfa69bb7 100644 --- a/src/devices/machine/rtc4543.cpp +++ b/src/devices/machine/rtc4543.cpp @@ -57,7 +57,7 @@ rtc4543_device::rtc4543_device(const machine_config &mconfig, const char *tag, d rtc4543_device::rtc4543_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock) , device_rtc_interface(mconfig, *this) - , data_cb(*this) + , m_data_cb(*this) , m_ce(0), m_clk(0), m_wr(0), m_data(0), m_curbit(0) , m_clock_timer(nullptr) { @@ -70,7 +70,7 @@ rtc4543_device::rtc4543_device(const machine_config &mconfig, device_type type, void rtc4543_device::device_start() { - data_cb.resolve_safe(); + m_data_cb.resolve_safe(); // allocate timers m_clock_timer = timer_alloc(); @@ -279,7 +279,7 @@ void rtc4543_device::load_bit(int reg) // shift data bit m_data = (m_regs[reg] >> bit) & 1; - data_cb(m_data); + m_data_cb(m_data); } diff --git a/src/devices/machine/rtc4543.h b/src/devices/machine/rtc4543.h index 534c6f7fc43..f93fa097d59 100644 --- a/src/devices/machine/rtc4543.h +++ b/src/devices/machine/rtc4543.h @@ -15,22 +15,6 @@ #include "dirtc.h" - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_RTC4543_ADD(tag, clock) \ - MCFG_DEVICE_ADD((tag), RTC4543, (clock)) - -#define MCFG_RTC4543_DATA_CALLBACK(cb) \ - downcast<rtc4543_device &>(*device).set_data_cb(DEVCB_##cb); - -#define MCFG_JRC6355E_ADD(tag, clock) \ - MCFG_DEVICE_ADD((tag), JRC6355E, (clock)) - - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -52,7 +36,7 @@ public: DECLARE_READ_LINE_MEMBER( data_r ); DECLARE_WRITE_LINE_MEMBER( data_w ); - template <class Object> devcb_base &set_data_cb(Object &&cb) { return data_cb.set_callback(std::forward<Object>(cb)); } + auto data_cb() { return m_data_cb.bind(); } protected: rtc4543_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -76,7 +60,7 @@ protected: void advance_bit(); void update_effective(); - devcb_write_line data_cb; + devcb_write_line m_data_cb; int m_ce; int m_clk; diff --git a/src/devices/machine/rtc65271.h b/src/devices/machine/rtc65271.h index b6d5c3b5803..65ee8233675 100644 --- a/src/devices/machine/rtc65271.h +++ b/src/devices/machine/rtc65271.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Raphael Nabet, R. Belmont /* - rtc65271.h: include file for rtc65271.c + rtc65271.h: include file for rtc65271.cpp */ #ifndef MAME_MACHINE_RTC65271_H @@ -10,14 +10,6 @@ #pragma once -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_RTC65271_INTERRUPT_CB(cb) \ - downcast<rtc65271_device &>(*device).set_interrupt_callback(DEVCB_##cb); - - // ======================> rtc65271_device class rtc65271_device : public device_t, @@ -27,7 +19,6 @@ public: // construction/destruction rtc65271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> devcb_base &set_interrupt_callback(Object &&cb) { return m_interrupt_cb.set_callback(std::forward<Object>(cb)); } auto interrupt_cb() { return m_interrupt_cb.bind(); } DECLARE_READ8_MEMBER( rtc_r ); diff --git a/src/devices/machine/rtc9701.h b/src/devices/machine/rtc9701.h index 628b3bb6e5e..922fc6a0ad6 100644 --- a/src/devices/machine/rtc9701.h +++ b/src/devices/machine/rtc9701.h @@ -14,14 +14,6 @@ #pragma once - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_RTC9701_ADD(tag) \ - MCFG_DEVICE_ADD((tag), RTC9701, XTAL(32'768)) - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -34,7 +26,7 @@ class rtc9701_device : public device_t, { public: // construction/destruction - rtc9701_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + rtc9701_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 32'768); // I/O operations diff --git a/src/devices/machine/s2636.h b/src/devices/machine/s2636.h index 85c4a587c54..befa3cd9e56 100644 --- a/src/devices/machine/s2636.h +++ b/src/devices/machine/s2636.h @@ -18,22 +18,6 @@ /************************************* * - * Device configuration macros - * - *************************************/ - -#define MCFG_S2636_OFFSETS(yoffs, xoffs) \ - downcast<s2636_device &>(*device).set_offsets((yoffs), (xoffs)); - -#define MCFG_S2636_DIVIDER(divider) \ - downcast<s2636_device &>(*device).set_divider((divider)); - -#define MCFG_S2623_SET_INTREQ_CALLBACK(cb) \ - downcast<s2636_device &>(*device).set_intreq_cb(DEVCB_##cb); - - -/************************************* - * * Device state class * *************************************/ @@ -49,7 +33,7 @@ public: void set_divider(int divider) { m_divider = divider; } - template <class Object> devcb_base &set_intreq_cb(Object &&cb) { return m_intreq_cb.set_callback(std::forward<Object>(cb)); } + auto intreq_cb() { return m_intreq_cb.bind(); } // returns a BITMAP_FORMAT_IND16 bitmap the size of the screen // D0-D2 of each pixel is the pixel color diff --git a/src/devices/machine/s3520cf.h b/src/devices/machine/s3520cf.h index 675349985ff..e05e76ec85a 100644 --- a/src/devices/machine/s3520cf.h +++ b/src/devices/machine/s3520cf.h @@ -12,14 +12,6 @@ Seiko/Epson S-3520CF #pragma once - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_S3520CF_ADD(tag) \ - MCFG_DEVICE_ADD((tag), S3520CF, XTAL(32'768)) - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -30,7 +22,7 @@ class s3520cf_device : public device_t { public: // construction/destruction - s3520cf_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + s3520cf_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 32'768); // I/O operations DECLARE_READ_LINE_MEMBER( read_bit ); diff --git a/src/devices/machine/s3c2400.h b/src/devices/machine/s3c2400.h index b22f306af2f..dd598177308 100644 --- a/src/devices/machine/s3c2400.h +++ b/src/devices/machine/s3c2400.h @@ -15,48 +15,6 @@ #include "emupal.h" -/******************************************************************************* - MACROS / CONSTANTS -*******************************************************************************/ - -#define S3C2400_TAG "s3c2400" - -#define MCFG_S3C2400_PALETTE(palette_tag) \ - downcast<s3c2400_device &>(*device).set_palette_tag(palette_tag); - -#define MCFG_S3C2400_SCREEN(screen_tag) \ - downcast<s3c2400_device &>(*device).set_screen_tag(screen_tag); - -#define MCFG_S3C2400_CORE_PIN_R_CB(cb) \ - downcast<s3c2400_device &>(*device).set_core_pin_r_callback(DEVCB_##cb); - -#define MCFG_S3C2400_CORE_PIN_W_CB(cb) \ - downcast<s3c2400_device &>(*device).set_core_pin_w_callback(DEVCB_##cb); - -#define MCFG_S3C2400_GPIO_PORT_R_CB(cb) \ - downcast<s3c2400_device &>(*device).set_gpio_port_r_callback(DEVCB_##cb); - -#define MCFG_S3C2400_GPIO_PORT_W_CB(cb) \ - downcast<s3c2400_device &>(*device).set_gpio_port_w_callback(DEVCB_##cb); - -#define MCFG_S3C2400_I2C_SCL_W_CB(cb) \ - downcast<s3c2400_device &>(*device).set_i2c_scl_w_callback(DEVCB_##cb); - -#define MCFG_S3C2400_I2C_SDA_R_CB(cb) \ - downcast<s3c2400_device &>(*device).set_i2c_sda_r_callback(DEVCB_##cb); - -#define MCFG_S3C2400_I2C_SDA_W_CB(cb) \ - downcast<s3c2400_device &>(*device).set_i2c_sda_w_callback(DEVCB_##cb); - -#define MCFG_S3C2400_ADC_DATA_R_CB(cb) \ - downcast<s3c2400_device &>(*device).set_adc_data_r_callback(DEVCB_##cb); - -#define MCFG_S3C2400_I2S_DATA_W_CB(cb) \ - downcast<s3c2400_device &>(*device).set_i2s_data_w_callback(DEVCB_##cb); - -#define MCFG_S3C2400_LCD_FLAGS(flags) \ - downcast<s3c2400_device &>(*device).set_lcd_flags((flags)); - enum { S3C2400_GPIO_PORT_A = 0, @@ -162,17 +120,17 @@ public: ~s3c2400_device(); // configuration - void set_palette_tag(const char *tag) { m_palette.set_tag(tag); } - void set_screen_tag(const char *tag) { m_screen.set_tag(tag); } - template <class Object> devcb_base &set_core_pin_r_callback(Object &&cb) { return m_pin_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_core_pin_w_callback(Object &&cb) { return m_pin_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_gpio_port_r_callback(Object &&cb) { return m_port_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_gpio_port_w_callback(Object &&cb) { return m_port_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_i2c_scl_w_callback(Object &&cb) { return m_scl_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_i2c_sda_r_callback(Object &&cb) { return m_sda_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_i2c_sda_w_callback(Object &&cb) { return m_sda_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_adc_data_r_callback(Object &&cb) { return m_data_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_i2s_data_w_callback(Object &&cb) { return m_data_w_cb.set_callback(std::forward<Object>(cb)); } + template <typename T> void set_palette_tag(T &&tag) { m_palette.set_tag(std::forward<T>(tag)); } + template <typename T> void set_screen_tag(T &&tag) { m_screen.set_tag(std::forward<T>(tag)); } + auto core_pin_r_callback() { return m_pin_r_cb.bind(); } + auto core_pin_w_callback() { return m_pin_w_cb.bind(); } + auto gpio_port_r_callback() { return m_port_r_cb.bind(); } + auto gpio_port_w_callback() { return m_port_w_cb.bind(); } + auto i2c_scl_w_callback() { return m_scl_w_cb.bind(); } + auto i2c_sda_r_callback() { return m_sda_r_cb.bind(); } + auto i2c_sda_w_callback() { return m_sda_w_cb.bind(); } + auto adc_data_r_callback() { return m_data_r_cb.bind(); } + auto i2s_data_w_callback() { return m_data_w_cb.bind(); } void set_lcd_flags(int flags) { m_flags = flags; } protected: diff --git a/src/devices/machine/s3c2410.h b/src/devices/machine/s3c2410.h index fe0507b5a68..9057e981528 100644 --- a/src/devices/machine/s3c2410.h +++ b/src/devices/machine/s3c2410.h @@ -15,60 +15,6 @@ #include "emupal.h" -/******************************************************************************* - MACROS / CONSTANTS -*******************************************************************************/ - -#define S3C2410_TAG "s3c2410" - -#define MCFG_S3C2410_PALETTE(palette_tag) \ - downcast<s3c2410_device &>(*device).set_palette_tag(palette_tag); - -#define MCFG_S3C2410_SCREEN(screen_tag) \ - downcast<s3c2410_device &>(*device).set_screen_tag(screen_tag); - -#define MCFG_S3C2410_CORE_PIN_R_CB(cb) \ - downcast<s3c2410_device &>(*device).set_core_pin_r_callback(DEVCB_##cb); - -#define MCFG_S3C2410_CORE_PIN_W_CB(cb) \ - downcast<s3c2410_device &>(*device).set_core_pin_w_callback(DEVCB_##cb); - -#define MCFG_S3C2410_GPIO_PORT_R_CB(cb) \ - downcast<s3c2410_device &>(*device).set_gpio_port_r_callback(DEVCB_##cb); - -#define MCFG_S3C2410_GPIO_PORT_W_CB(cb) \ - downcast<s3c2410_device &>(*device).set_gpio_port_w_callback(DEVCB_##cb); - -#define MCFG_S3C2410_I2C_SCL_W_CB(cb) \ - downcast<s3c2410_device &>(*device).set_i2c_scl_w_callback(DEVCB_##cb); - -#define MCFG_S3C2410_I2C_SDA_R_CB(cb) \ - downcast<s3c2410_device &>(*device).set_i2c_sda_r_callback(DEVCB_##cb); - -#define MCFG_S3C2410_I2C_SDA_W_CB(cb) \ - downcast<s3c2410_device &>(*device).set_i2c_sda_w_callback(DEVCB_##cb); - -#define MCFG_S3C2410_ADC_DATA_R_CB(cb) \ - downcast<s3c2410_device &>(*device).set_adc_data_r_callback(DEVCB_##cb); - -#define MCFG_S3C2410_I2S_DATA_W_CB(cb) \ - downcast<s3c2410_device &>(*device).set_i2s_data_w_callback(DEVCB_##cb); - -#define MCFG_S3C2410_NAND_COMMAND_W_CB(cb) \ - downcast<s3c2410_device &>(*device).set_nand_command_w_callback(DEVCB_##cb); - -#define MCFG_S3C2410_NAND_ADDRESS_W_CB(cb) \ - downcast<s3c2410_device &>(*device).set_nand_address_w_callback(DEVCB_##cb); - -#define MCFG_S3C2410_NAND_DATA_R_CB(cb) \ - downcast<s3c2410_device &>(*device).set_nand_data_r_callback(DEVCB_##cb); - -#define MCFG_S3C2410_NAND_DATA_W_CB(cb) \ - downcast<s3c2410_device &>(*device).set_nand_data_w_callback(DEVCB_##cb); - -#define MCFG_S3C2410_LCD_FLAGS(flags) \ - downcast<s3c2410_device &>(*device).set_lcd_flags((flags)); - enum { S3C2410_GPIO_PORT_A = 0, @@ -192,21 +138,21 @@ public: ~s3c2410_device(); // configuration - void set_palette_tag(const char *tag) { m_palette.set_tag(tag); } - void set_screen_tag(const char *tag) { m_screen.set_tag(tag); } - template <class Object> devcb_base &set_core_pin_r_callback(Object &&cb) { return m_pin_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_core_pin_w_callback(Object &&cb) { return m_pin_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_gpio_port_r_callback(Object &&cb) { return m_port_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_gpio_port_w_callback(Object &&cb) { return m_port_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_i2c_scl_w_callback(Object &&cb) { return m_scl_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_i2c_sda_r_callback(Object &&cb) { return m_sda_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_i2c_sda_w_callback(Object &&cb) { return m_sda_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_adc_data_r_callback(Object &&cb) { return m_data_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_i2s_data_w_callback(Object &&cb) { return m_data_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_nand_command_w_callback(Object &&cb) { return m_command_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_nand_address_w_callback(Object &&cb) { return m_address_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_nand_data_r_callback(Object &&cb) { return m_nand_data_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_nand_data_w_callback(Object &&cb) { return m_nand_data_w_cb.set_callback(std::forward<Object>(cb)); } + template <typename T> void set_palette_tag(T &&tag) { m_palette.set_tag(std::forward<T>(tag)); } + template <typename T> void set_screen_tag(T &&tag) { m_screen.set_tag(std::forward<T>(tag)); } + auto core_pin_r_callback() { return m_pin_r_cb.bind(); } + auto core_pin_w_callback() { return m_pin_w_cb.bind(); } + auto gpio_port_r_callback() { return m_port_r_cb.bind(); } + auto gpio_port_w_callback() { return m_port_w_cb.bind(); } + auto i2c_scl_w_callback() { return m_scl_w_cb.bind(); } + auto i2c_sda_r_callback() { return m_sda_r_cb.bind(); } + auto i2c_sda_w_callback() { return m_sda_w_cb.bind(); } + auto adc_data_r_callback() { return m_data_r_cb.bind(); } + auto i2s_data_w_callback() { return m_data_w_cb.bind(); } + auto nand_command_w_callback() { return m_command_w_cb.bind(); } + auto nand_address_w_callback() { return m_address_w_cb.bind(); } + auto nand_data_r_callback() { return m_nand_data_r_cb.bind(); } + auto nand_data_w_callback() { return m_nand_data_w_cb.bind(); } void set_lcd_flags(int flags) { m_flags = flags; } DECLARE_WRITE_LINE_MEMBER( frnb_w ); diff --git a/src/devices/machine/s3c2440.h b/src/devices/machine/s3c2440.h index 066e6f70d77..a16f6d49576 100644 --- a/src/devices/machine/s3c2440.h +++ b/src/devices/machine/s3c2440.h @@ -14,60 +14,9 @@ #include "s3c24xx.h" #include "emupal.h" -/******************************************************************************* - MACROS / CONSTANTS -*******************************************************************************/ #define S3C2440_TAG "s3c2440" -#define MCFG_S3C2440_PALETTE(_palette_tag) \ - downcast<s3c2440_device &>(*device).set_palette_tag(_palette_tag); - -#define MCFG_S3C2440_SCREEN(screen_tag) \ - downcast<s3c2440_device &>(*device).set_screen_tag(screen_tag); - -#define MCFG_S3C2440_CORE_PIN_R_CB(_devcb) \ - downcast<s3c2440_device &>(*device).set_core_pin_r_callback(DEVCB_##_devcb); - -#define MCFG_S3C2440_CORE_PIN_W_CB(_devcb) \ - downcast<s3c2440_device &>(*device).set_core_pin_w_callback(DEVCB_##_devcb); - -#define MCFG_S3C2440_GPIO_PORT_R_CB(_devcb) \ - downcast<s3c2440_device &>(*device).set_gpio_port_r_callback(DEVCB_##_devcb); - -#define MCFG_S3C2440_GPIO_PORT_W_CB(_devcb) \ - downcast<s3c2440_device &>(*device).set_gpio_port_w_callback(DEVCB_##_devcb); - -#define MCFG_S3C2440_I2C_SCL_W_CB(_devcb) \ - downcast<s3c2440_device &>(*device).set_i2c_scl_w_callback(DEVCB_##_devcb); - -#define MCFG_S3C2440_I2C_SDA_R_CB(_devcb) \ - downcast<s3c2440_device &>(*device).set_i2c_sda_r_callback(DEVCB_##_devcb); - -#define MCFG_S3C2440_I2C_SDA_W_CB(_devcb) \ - downcast<s3c2440_device &>(*device).set_i2c_sda_w_callback(DEVCB_##_devcb); - -#define MCFG_S3C2440_ADC_DATA_R_CB(_devcb) \ - downcast<s3c2440_device &>(*device).set_adc_data_r_callback(DEVCB_##_devcb); - -#define MCFG_S3C2440_I2S_DATA_W_CB(_devcb) \ - downcast<s3c2440_device &>(*device).set_i2s_data_w_callback(DEVCB_##_devcb); - -#define MCFG_S3C2440_NAND_COMMAND_W_CB(_devcb) \ - downcast<s3c2440_device &>(*device).set_nand_command_w_callback(DEVCB_##_devcb); - -#define MCFG_S3C2440_NAND_ADDRESS_W_CB(_devcb) \ - downcast<s3c2440_device &>(*device).set_nand_address_w_callback(DEVCB_##_devcb); - -#define MCFG_S3C2440_NAND_DATA_R_CB(_devcb) \ - downcast<s3c2440_device &>(*device).set_nand_data_r_callback(DEVCB_##_devcb); - -#define MCFG_S3C2440_NAND_DATA_W_CB(_devcb) \ - downcast<s3c2440_device &>(*device).set_nand_data_w_callback(DEVCB_##_devcb); - -#define MCFG_S3C2440_LCD_FLAGS(_flags) \ - downcast<s3c2440_device &>(*device).set_lcd_flags(_flags); - enum { S3C2440_GPIO_PORT_A = 0, @@ -209,21 +158,21 @@ public: ~s3c2440_device(); // configuration - void set_palette_tag(const char *tag) { m_palette.set_tag(tag); } - void set_screen_tag(const char *tag) { m_screen.set_tag(tag); } - template <class Object> devcb_base &set_core_pin_r_callback(Object &&cb) { return m_pin_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_core_pin_w_callback(Object &&cb) { return m_pin_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_gpio_port_r_callback(Object &&cb) { return m_port_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_gpio_port_w_callback(Object &&cb) { return m_port_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_i2c_scl_w_callback(Object &&cb) { return m_scl_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_i2c_sda_r_callback(Object &&cb) { return m_sda_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_i2c_sda_w_callback(Object &&cb) { return m_sda_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_adc_data_r_callback(Object &&cb) { return m_data_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_i2s_data_w_callback(Object &&cb) { return m_data_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_nand_command_w_callback(Object &&cb) { return m_command_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_nand_address_w_callback(Object &&cb) { return m_address_w_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_nand_data_r_callback(Object &&cb) { return m_nand_data_r_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_nand_data_w_callback(Object &&cb) { return m_nand_data_w_cb.set_callback(std::forward<Object>(cb)); } + template <typename T> void set_palette_tag(T &&tag) { m_palette.set_tag(std::forward<T>(tag)); } + template <typename T> void set_screen_tag(T &&tag) { m_screen.set_tag(std::forward<T>(tag)); } + auto core_pin_r_callback() { return m_pin_r_cb.bind(); } + auto core_pin_w_callback() { return m_pin_w_cb.bind(); } + auto gpio_port_r_callback() { return m_port_r_cb.bind(); } + auto gpio_port_w_callback() { return m_port_w_cb.bind(); } + auto i2c_scl_w_callback() { return m_scl_w_cb.bind(); } + auto i2c_sda_r_callback() { return m_sda_r_cb.bind(); } + auto i2c_sda_w_callback() { return m_sda_w_cb.bind(); } + auto adc_data_r_callback() { return m_data_r_cb.bind(); } + auto i2s_data_w_callback() { return m_data_w_cb.bind(); } + auto nand_command_w_callback() { return m_command_w_cb.bind(); } + auto nand_address_w_callback() { return m_address_w_cb.bind(); } + auto nand_data_r_callback() { return m_nand_data_r_cb.bind(); } + auto nand_data_w_callback() { return m_nand_data_w_cb.bind(); } void set_lcd_flags(int flags) { m_flags = flags; } DECLARE_WRITE_LINE_MEMBER( frnb_w ); diff --git a/src/devices/machine/saa1043.h b/src/devices/machine/saa1043.h index 92f2f5a0669..e601ebcf197 100644 --- a/src/devices/machine/saa1043.h +++ b/src/devices/machine/saa1043.h @@ -32,69 +32,6 @@ #pragma once - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -// NB: This is effectively an aggregate of the X and Y inputs. -#define MCFG_SAA1043_TYPE(_type) \ - &downcast<saa1043_device &>(*device).set_type(_type); - -#define MCFG_SAA1043_BC_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_bc_callback(DEVCB_##_write); - -#define MCFG_SAA1043_FH2_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_fh2_callback(DEVCB_##_write); - -#define MCFG_SAA1043_FH3_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_fh3_callback(DEVCB_##_write); - -#define MCFG_SAA1043_FH80_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_fh80_callback(DEVCB_##_write); - -#define MCFG_SAA1043_PH_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_ph_callback(DEVCB_##_write); - -#define MCFG_SAA1043_NS_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_ns_callback(DEVCB_##_write); - -#define MCFG_SAA1043_RI_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_ri_callback(DEVCB_##_write); - -#define MCFG_SAA1043_WMP_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_wmp_callback(DEVCB_##_write); - -#define MCFG_SAA1043_RR_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_rr_callback(DEVCB_##_write); - -#define MCFG_SAA1043_V1_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_v1_callback(DEVCB_##_write); - -#define MCFG_SAA1043_V2_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_v2_callback(DEVCB_##_write); - -#define MCFG_SAA1043_CLP_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_clp_callback(DEVCB_##_write); - -#define MCFG_SAA1043_DL_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_dl_callback(DEVCB_##_write); - -#define MCFG_SAA1043_H1_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_h1_callback(DEVCB_##_write); - -#define MCFG_SAA1043_H2_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_h2_callback(DEVCB_##_write); - -#define MCFG_SAA1043_CB_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_cb_callback(DEVCB_##_write); - -#define MCFG_SAA1043_CS_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_cs_callback(DEVCB_##_write); - -#define MCFG_SAA1043_ID_CALLBACK(_write) \ - downcast<saa1043_device &>(*device).set_id_callback(DEVCB_##_write); - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -141,24 +78,24 @@ public: void set_type(signal_type type) { m_type = type; } - template <class Object> devcb_base &set_bc_callback(Object &&cb) { m_outputs_hooked[BC] = true; return m_outputs[BC].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_fh2_callback(Object &&cb) { m_outputs_hooked[FH2] = true; return m_outputs[FH2].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_fh3_callback(Object &&cb) { m_outputs_hooked[FH3] = true; return m_outputs[FH3].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_fh80_callback(Object &&cb) { m_outputs_hooked[FH80] = true; return m_outputs[FH80].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_ph_callback(Object &&cb) { m_outputs_hooked[PH] = true; return m_outputs[PH].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_ns_callback(Object &&cb) { m_outputs_hooked[NS] = true; return m_outputs[NS].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_ri_callback(Object &&cb) { m_outputs_hooked[RI] = true; return m_outputs[RI].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_wmp_callback(Object &&cb) { m_outputs_hooked[WMP] = true; return m_outputs[WMP].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_rr_callback(Object &&cb) { m_outputs_hooked[RR] = true; return m_outputs[RR].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_v1_callback(Object &&cb) { m_outputs_hooked[V1] = true; return m_outputs[V1].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_v2_callback(Object &&cb) { m_outputs_hooked[V2] = true; return m_outputs[V2].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_clp_callback(Object &&cb) { m_outputs_hooked[CLP] = true; return m_outputs[CLP].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_dl_callback(Object &&cb) { m_outputs_hooked[DL] = true; return m_outputs[DL].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_h1_callback(Object &&cb) { m_outputs_hooked[H1] = true; return m_outputs[H1].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_h2_callback(Object &&cb) { m_outputs_hooked[H2] = true; return m_outputs[H2].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_cb_callback(Object &&cb) { m_outputs_hooked[CB] = true; return m_outputs[CB].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_cs_callback(Object &&cb) { m_outputs_hooked[CS] = true; return m_outputs[CS].set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_id_callback(Object &&cb) { m_outputs_hooked[ID] = true; return m_outputs[ID].set_callback(std::forward<Object>(cb)); } + auto bc_callback() { m_outputs_hooked[BC] = true; return m_outputs[BC].bind(); } + auto fh2_callback() { m_outputs_hooked[FH2] = true; return m_outputs[FH2].bind(); } + auto fh3_callback() { m_outputs_hooked[FH3] = true; return m_outputs[FH3].bind(); } + auto fh80_callback() { m_outputs_hooked[FH80] = true; return m_outputs[FH80].bind(); } + auto ph_callback() { m_outputs_hooked[PH] = true; return m_outputs[PH].bind(); } + auto ns_callback() { m_outputs_hooked[NS] = true; return m_outputs[NS].bind(); } + auto ri_callback() { m_outputs_hooked[RI] = true; return m_outputs[RI].bind(); } + auto wmp_callback() { m_outputs_hooked[WMP] = true; return m_outputs[WMP].bind(); } + auto rr_callback() { m_outputs_hooked[RR] = true; return m_outputs[RR].bind(); } + auto v1_callback() { m_outputs_hooked[V1] = true; return m_outputs[V1].bind(); } + auto v2_callback() { m_outputs_hooked[V2] = true; return m_outputs[V2].bind(); } + auto clp_callback() { m_outputs_hooked[CLP] = true; return m_outputs[CLP].bind(); } + auto dl_callback() { m_outputs_hooked[DL] = true; return m_outputs[DL].bind(); } + auto h1_callback() { m_outputs_hooked[H1] = true; return m_outputs[H1].bind(); } + auto h2_callback() { m_outputs_hooked[H2] = true; return m_outputs[H2].bind(); } + auto cb_callback() { m_outputs_hooked[CB] = true; return m_outputs[CB].bind(); } + auto cs_callback() { m_outputs_hooked[CS] = true; return m_outputs[CS].bind(); } + auto id_callback() { m_outputs_hooked[ID] = true; return m_outputs[ID].bind(); } protected: // device-level overrides diff --git a/src/devices/machine/scnxx562.h b/src/devices/machine/scnxx562.h index 72c2df22a17..eb95b8c2370 100644 --- a/src/devices/machine/scnxx562.h +++ b/src/devices/machine/scnxx562.h @@ -44,78 +44,6 @@ #include "machine/z80daisy.h" #include "diserial.h" -//************************************************************************** -// DEVICE CONFIGURATION MACROS -//************************************************************************** - -//#define LOCAL_BRG 0 FIXME - what is this for? the name is overly generic and shouldn't be in global namespace - -/* Variant ADD macros - use the right one to enable the right feature set! */ -#define MCFG_DUSCC26562_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \ - MCFG_DEVICE_ADD(_tag, DUSCC26562, _clock) \ - MCFG_DUSCC_OFFSETS(_rxa, _txa, _rxb, _txb) - -#define MCFG_DUSCC26C562_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \ - MCFG_DEVICE_ADD(_tag, DUSCC26C562, _clock) \ - MCFG_DUSCC_OFFSETS(_rxa, _txa, _rxb, _txb) - -#define MCFG_DUSCC68562_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \ - MCFG_DEVICE_ADD(_tag, DUSCC68562, _clock) \ - MCFG_DUSCC_OFFSETS(_rxa, _txa, _rxb, _txb) - -#define MCFG_DUSCC68C562_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \ - MCFG_DEVICE_ADD(_tag, DUSCC68C562, _clock) \ - MCFG_DUSCC_OFFSETS(_rxa, _txa, _rxb, _txb) - -/* generic ADD macro - Avoid using it directly, see above for correct variant instead */ -#define MCFG_DUSCC_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \ - MCFG_DEVICE_ADD(_tag, DUSCC, _clock) \ - MCFG_DUSCC_OFFSETS(_rxa, _txa, _rxb, _txb) - -/* Generic macros */ -#define MCFG_DUSCC_OFFSETS(_rxa, _txa, _rxb, _txb) \ - downcast<duscc_device &>(*device).configure_channels(_rxa, _txa, _rxb, _txb); - -// Port A callbacks -#define MCFG_DUSCC_OUT_TXDA_CB(_devcb) \ - downcast<duscc_device &>(*device).set_out_txda_callback(DEVCB_##_devcb); - -#define MCFG_DUSCC_OUT_DTRA_CB(_devcb) \ - downcast<duscc_device &>(*device).set_out_dtra_callback(DEVCB_##_devcb); - -#define MCFG_DUSCC_OUT_RTSA_CB(_devcb) \ - downcast<duscc_device &>(*device).set_out_rtsa_callback(DEVCB_##_devcb); - -#define MCFG_DUSCC_OUT_SYNCA_CB(_devcb) \ - downcast<duscc_device &>(*device).set_out_synca_callback(DEVCB_##_devcb); - -#define MCFG_DUSCC_OUT_TRXCA_CB(_devcb) \ - downcast<duscc_device &>(*device).set_out_trxca_callback(DEVCB_##_devcb); - -#define MCFG_DUSCC_OUT_RTXCA_CB(_devcb) \ - downcast<duscc_device &>(*device).set_out_rtxca_callback(DEVCB_##_devcb); - -// Port B callbacks -#define MCFG_DUSCC_OUT_TXDB_CB(_devcb) \ - downcast<duscc_device &>(*device).set_out_txdb_callback(DEVCB_##_devcb); - -#define MCFG_DUSCC_OUT_DTRB_CB(_devcb) \ - downcast<duscc_device &>(*device).set_out_dtrb_callback(DEVCB_##_devcb); - -#define MCFG_DUSCC_OUT_RTSB_CB(_devcb) \ - downcast<duscc_device &>(*device).set_out_rtsb_callback(DEVCB_##_devcb); - -#define MCFG_DUSCC_OUT_SYNCB_CB(_devcb) \ - downcast<duscc_device &>(*device).set_out_syncb_callback(DEVCB_##_devcb); - -#define MCFG_DUSCC_OUT_TRXCB_CB(_devcb) \ - downcast<duscc_device &>(*device).set_out_trxcb_callback(DEVCB_##_devcb); - -#define MCFG_DUSCC_OUT_RTXCB_CB(_devcb) \ - downcast<duscc_device &>(*device).set_out_rtxcb_callback(DEVCB_##_devcb); - -#define MCFG_DUSCC_OUT_INT_CB(_devcb) \ - downcast<duscc_device &>(*device).set_out_int_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -608,20 +536,20 @@ public: // construction/destruction duscc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> devcb_base &set_out_txda_callback(Object &&cb) { return m_out_txda_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_dtra_callback(Object &&cb) { return m_out_dtra_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_rtsa_callback(Object &&cb) { return m_out_rtsa_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_synca_callback(Object &&cb) { return m_out_synca_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_rtxca_callback(Object &&cb) { return m_out_rtxca_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_trxca_callback(Object &&cb) { return m_out_trxca_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> devcb_base &set_out_txdb_callback(Object &&cb) { return m_out_txdb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_dtrb_callback(Object &&cb) { return m_out_dtrb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_rtsb_callback(Object &&cb) { return m_out_rtsb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_syncb_callback(Object &&cb) { return m_out_syncb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_rtxcb_callback(Object &&cb) { return m_out_rtxcb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_trxcb_callback(Object &&cb) { return m_out_trxcb_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); } + auto out_txda_callback() { return m_out_txda_cb.bind(); } + auto out_dtra_callback() { return m_out_dtra_cb.bind(); } + auto out_rtsa_callback() { return m_out_rtsa_cb.bind(); } + auto out_synca_callback() { return m_out_synca_cb.bind(); } + auto out_rtxca_callback() { return m_out_rtxca_cb.bind(); } + auto out_trxca_callback() { return m_out_trxca_cb.bind(); } + + auto out_txdb_callback() { return m_out_txdb_cb.bind(); } + auto out_dtrb_callback() { return m_out_dtrb_cb.bind(); } + auto out_rtsb_callback() { return m_out_rtsb_cb.bind(); } + auto out_syncb_callback() { return m_out_syncb_cb.bind(); } + auto out_rtxcb_callback() { return m_out_rtxcb_cb.bind(); } + auto out_trxcb_callback() { return m_out_trxcb_cb.bind(); } + auto out_int_callback() { return m_out_int_cb.bind(); } void configure_channels(int rxa, int txa, int rxb, int txb) { |