diff options
Diffstat (limited to 'src/devices/bus/a800/a8sio.h')
-rw-r--r-- | src/devices/bus/a800/a8sio.h | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/src/devices/bus/a800/a8sio.h b/src/devices/bus/a800/a8sio.h index a2c88b08328..b513ea0c9f1 100644 --- a/src/devices/bus/a800/a8sio.h +++ b/src/devices/bus/a800/a8sio.h @@ -35,25 +35,21 @@ #pragma once - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_A8SIO_SLOT_ADD(_nbtag, _tag, _def_slot) \ - MCFG_DEVICE_ADD(_tag, A8SIO_SLOT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(a8sio_cards, _def_slot, false) \ - downcast<a8sio_slot_device &>(*device).set_a8sio_slot(_nbtag, _tag); - -#define MCFG_A8SIO_DATA_IN_CB(_devcb) \ - downcast<a8sio_device &>(*device).set_data_in_callback(DEVCB_##_devcb); - +void a8sio_cards(device_slot_interface &device); class a8sio_slot_device : public device_t, public device_slot_interface { public: // construction/destruction + a8sio_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, char const *dflt) + : a8sio_slot_device(mconfig, tag, owner, (uint32_t)0) + { + option_reset(); + a8sio_cards(*this); + set_default_option(dflt); + set_fixed(false); + } a8sio_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration @@ -84,9 +80,9 @@ public: a8sio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - template <class Object> devcb_base &set_clock_in_callback(Object &&cb) { return m_out_clock_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_data_in_callback(Object &&cb) { return m_out_data_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_audio_in_callback(Object &&cb) { return m_out_audio_in_cb.set_callback(std::forward<Object>(cb)); } + auto clock_in() { return m_out_clock_in_cb.bind(); } + auto data_in() { return m_out_data_in_cb.bind(); } + auto audio_in() { return m_out_audio_in_cb.bind(); } void add_a8sio_card(device_a8sio_card_interface *card); device_a8sio_card_interface *get_a8sio_card(); @@ -114,7 +110,6 @@ protected: device_a8sio_card_interface *m_device; }; - // device type definition DECLARE_DEVICE_TYPE(A8SIO, a8sio_device) @@ -141,7 +136,4 @@ public: const char *m_a8sio_slottag; }; - -void a8sio_cards(device_slot_interface &device); - #endif // MAME_BUS_A800_A8SIO_H |