summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/cbmiec/cbmiec.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/cbmiec/cbmiec.h')
-rw-r--r--src/devices/bus/cbmiec/cbmiec.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/devices/bus/cbmiec/cbmiec.h b/src/devices/bus/cbmiec/cbmiec.h
index ceb03d44948..4977bfc97be 100644
--- a/src/devices/bus/cbmiec/cbmiec.h
+++ b/src/devices/bus/cbmiec/cbmiec.h
@@ -21,6 +21,46 @@
#define CBM_IEC_TAG "iec_bus"
+
+//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_CBM_IEC_BUS_ADD() \
+ MCFG_DEVICE_ADD(CBM_IEC_TAG, CBM_IEC, 0)
+
+
+#define MCFG_CBM_IEC_BUS_SRQ_CALLBACK(_write) \
+ downcast<cbm_iec_device *>(device)->set_srq_callback(DEVCB_##_write);
+
+#define MCFG_CBM_IEC_BUS_ATN_CALLBACK(_write) \
+ downcast<cbm_iec_device *>(device)->set_atn_callback(DEVCB_##_write);
+
+#define MCFG_CBM_IEC_BUS_CLK_CALLBACK(_write) \
+ downcast<cbm_iec_device *>(device)->set_clk_callback(DEVCB_##_write);
+
+#define MCFG_CBM_IEC_BUS_DATA_CALLBACK(_write) \
+ downcast<cbm_iec_device *>(device)->set_data_callback(DEVCB_##_write);
+
+#define MCFG_CBM_IEC_BUS_RESET_CALLBACK(_write) \
+ downcast<cbm_iec_device *>(device)->set_reset_callback(DEVCB_##_write);
+
+
+#define MCFG_CBM_IEC_SLOT_ADD(_tag, _address, _slot_intf, _def_slot) \
+ MCFG_DEVICE_ADD(_tag, CBM_IEC_SLOT, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
+ downcast<cbm_iec_slot_device *>(device)->set_address(_address);
+
+
+#define MCFG_CBM_IEC_ADD(_default_drive) \
+ MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, nullptr) \
+ MCFG_CBM_IEC_SLOT_ADD("iec8", 8, cbm_iec_devices, _default_drive) \
+ MCFG_CBM_IEC_SLOT_ADD("iec9", 9, cbm_iec_devices, nullptr) \
+ MCFG_CBM_IEC_SLOT_ADD("iec10", 10, cbm_iec_devices, nullptr) \
+ MCFG_CBM_IEC_SLOT_ADD("iec11", 11, cbm_iec_devices, nullptr) \
+ MCFG_CBM_IEC_BUS_ADD()
+
+
void cbm_iec_devices(device_slot_interface &device);
//**************************************************************************
@@ -38,6 +78,11 @@ public:
// construction/destruction
cbm_iec_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ template <class Object> devcb_base &set_srq_callback(Object &&wr) { return m_write_srq.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_atn_callback(Object &&wr) { return m_write_atn.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_clk_callback(Object &&wr) { return m_write_clk.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_data_callback(Object &&wr) { return m_write_data.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_reset_callback(Object &&wr) { return m_write_reset.set_callback(std::forward<Object>(wr)); }
auto srq_callback() { return m_write_srq.bind(); }
auto atn_callback() { return m_write_atn.bind(); }
auto clk_callback() { return m_write_clk.bind(); }