diff options
Diffstat (limited to 'src/devices/bus/ecbbus/ecbbus.h')
-rw-r--r-- | src/devices/bus/ecbbus/ecbbus.h | 38 |
1 files changed, 14 insertions, 24 deletions
diff --git a/src/devices/bus/ecbbus/ecbbus.h b/src/devices/bus/ecbbus/ecbbus.h index f4d53b5cc9a..c14f1c53de4 100644 --- a/src/devices/bus/ecbbus/ecbbus.h +++ b/src/devices/bus/ecbbus/ecbbus.h @@ -56,27 +56,6 @@ #define ECBBUS_TAG "ecbbus" - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_ECBBUS_ADD() \ - MCFG_DEVICE_ADD(ECBBUS_TAG, ECBBUS, 0) -#define MCFG_ECBBUS_SLOT_ADD(_num, _tag, _slot_intf, _def_slot) \ - MCFG_DEVICE_ADD(_tag, ECBBUS_SLOT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - downcast<ecbbus_slot_device &>(*device).set_ecbbus_slot(ECBBUS_TAG, _num); - - -#define MCFG_ECBBUS_IRQ_CALLBACK(_write) \ - downcast<ecbbus_device &>(*device).set_irq_wr_callback(DEVCB_##_write); - -#define MCFG_ECBBUS_NMI_CALLBACK(_write) \ - downcast<ecbbus_device &>(*device).set_nmi_wr_callback(DEVCB_##_write); - - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -90,6 +69,17 @@ class ecbbus_slot_device : public device_t, { public: // construction/destruction + template <typename T> + ecbbus_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, int num, T &&opts, char const *dflt) + : ecbbus_slot_device(mconfig, tag, owner, 0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + set_ecbbus_slot(ECBBUS_TAG, num); + } + ecbbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // device-level overrides @@ -121,10 +111,10 @@ class ecbbus_device : public device_t { public: // construction/destruction - ecbbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ecbbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); - template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_write_nmi.set_callback(std::forward<Object>(cb)); } + auto irq_wr_callback() { return m_write_irq.bind(); } + auto nmi_wr_callback() { return m_write_nmi.bind(); } void add_card(device_ecbbus_card_interface *card, int pos); |