diff options
Diffstat (limited to 'src/devices/bus/cbmiec/cbmiec.h')
-rw-r--r-- | src/devices/bus/cbmiec/cbmiec.h | 26 |
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 |