summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/a800/a8sio.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/a800/a8sio.h')
-rw-r--r--src/devices/bus/a800/a8sio.h32
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