summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2018-10-29 18:39:36 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2018-10-29 18:39:36 +0100
commit93308b483ee73cecc46a6b44fccc126edf3c512a (patch)
treeb1aacbfa0398b30d22252901836a3e99255924fe /src/devices/machine
parent95863464389feba1cb8bf3e6a2c1057d72e33344 (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.h14
-rw-r--r--src/devices/machine/r10696.h15
-rw-r--r--src/devices/machine/r10788.h11
-rw-r--r--src/devices/machine/ra17xx.h21
-rw-r--r--src/devices/machine/rf5c296.h2
-rw-r--r--src/devices/machine/roc10937.h45
-rw-r--r--src/devices/machine/rp5c01.h15
-rw-r--r--src/devices/machine/rp5c15.h2
-rw-r--r--src/devices/machine/rp5h01.h3
-rw-r--r--src/devices/machine/rtc4543.cpp6
-rw-r--r--src/devices/machine/rtc4543.h20
-rw-r--r--src/devices/machine/rtc65271.h11
-rw-r--r--src/devices/machine/rtc9701.h10
-rw-r--r--src/devices/machine/s2636.h18
-rw-r--r--src/devices/machine/s3520cf.h10
-rw-r--r--src/devices/machine/s3c2400.h64
-rw-r--r--src/devices/machine/s3c2410.h84
-rw-r--r--src/devices/machine/s3c2440.h81
-rw-r--r--src/devices/machine/saa1043.h99
-rw-r--r--src/devices/machine/scnxx562.h100
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)
{