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.h26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/devices/bus/cbmiec/cbmiec.h b/src/devices/bus/cbmiec/cbmiec.h
index 0ed382142e0..fb889573709 100644
--- a/src/devices/bus/cbmiec/cbmiec.h
+++ b/src/devices/bus/cbmiec/cbmiec.h
@@ -61,6 +61,7 @@
MCFG_CBM_IEC_BUS_ADD()
+void cbm_iec_devices(device_slot_interface &device);
//**************************************************************************
// TYPE DEFINITIONS
@@ -82,6 +83,11 @@ public:
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(); }
+ auto data_callback() { return m_write_data.bind(); }
+ auto reset_callback() { return m_write_reset.bind(); }
void add_device(cbm_iec_slot_device *slot, device_t *target);
@@ -150,6 +156,8 @@ private:
int m_line[SIGNAL_COUNT];
};
+DECLARE_DEVICE_TYPE(CBM_IEC, cbm_iec_device)
+
// ======================> cbm_iec_slot_device
@@ -160,6 +168,18 @@ public:
// construction/destruction
cbm_iec_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ static void add_slot(machine_config &config, const char *_tag, int _address, const char *_def_slot);
+ template <typename T> static void add(machine_config &config, T &&_bus_tag, const char *_default_drive)
+ {
+ add_slot(config, "iec4", 4, nullptr);
+ add_slot(config, "iec8", 8, _default_drive);
+ add_slot(config, "iec9", 9, nullptr);
+ add_slot(config, "iec10", 10, nullptr);
+ add_slot(config, "iec11", 11, nullptr);
+
+ CBM_IEC(config, std::forward<T>(_bus_tag), 0);
+ }
+
void set_address(int address) { m_address = address; }
int get_address() { return m_address; }
@@ -198,12 +218,6 @@ protected:
cbm_iec_slot_device *m_slot;
};
-
-// device type definition
-DECLARE_DEVICE_TYPE(CBM_IEC, cbm_iec_device)
DECLARE_DEVICE_TYPE(CBM_IEC_SLOT, cbm_iec_slot_device)
-
-void cbm_iec_devices(device_slot_interface &device);
-
#endif // MAME_BUS_CBMIEC_CBMIEC_H