diff options
Diffstat (limited to 'src/devices/bus/hp9845_io/hp9845_io.h')
-rw-r--r-- | src/devices/bus/hp9845_io/hp9845_io.h | 52 |
1 files changed, 18 insertions, 34 deletions
diff --git a/src/devices/bus/hp9845_io/hp9845_io.h b/src/devices/bus/hp9845_io/hp9845_io.h index 4f18ab75939..7252ac25520 100644 --- a/src/devices/bus/hp9845_io/hp9845_io.h +++ b/src/devices/bus/hp9845_io/hp9845_io.h @@ -4,7 +4,7 @@ hp9845_io.h - I/O bus of HP9845 systems + I/O bus of HP9825/HP9845 systems *********************************************************************/ @@ -13,20 +13,6 @@ #pragma once - -#define MCFG_HP9845_IO_SLOT_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, HP9845_IO_SLOT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(hp9845_io_slot_devices, nullptr, false) - -#define MCFG_HP9845_IO_IRQ_CB(_devcb) \ - downcast<hp9845_io_slot_device &>(*device).set_irq_cb_func(DEVCB_##_devcb); - -#define MCFG_HP9845_IO_STS_CB(_devcb) \ - downcast<hp9845_io_slot_device &>(*device).set_sts_cb_func(DEVCB_##_devcb); - -#define MCFG_HP9845_IO_FLG_CB(_devcb) \ - downcast<hp9845_io_slot_device &>(*device).set_flg_cb_func(DEVCB_##_devcb); - #define HP9845_IO_FIRST_SC 1 // Lowest SC used by I/O cards #define MCFG_HP9845_IO_SC(_default_sc) \ @@ -57,23 +43,26 @@ public: virtual void device_start() override; // Callback setups - template <class Object> devcb_base &set_irq_cb_func(Object &&cb) { return m_irq_cb_func.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_sts_cb_func(Object &&cb) { return m_sts_cb_func.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_flg_cb_func(Object &&cb) { return m_flg_cb_func.set_callback(std::forward<Object>(cb)); } + auto irq() { return m_irq_cb_func.bind(); } + auto sts() { return m_sts_cb_func.bind(); } + auto flg() { return m_flg_cb_func.bind(); } + auto dmar() { return m_dmar_cb_func.bind(); } - // irq/sts/flg signal handlers - void irq_w(uint8_t sc , int state); - void sts_w(uint8_t sc , int state); - void flg_w(uint8_t sc , int state); + // irq/sts/flg/dmar signal handlers for card devices + DECLARE_WRITE_LINE_MEMBER(irq_w); + DECLARE_WRITE_LINE_MEMBER(sts_w); + DECLARE_WRITE_LINE_MEMBER(flg_w); + DECLARE_WRITE_LINE_MEMBER(dmar_w); // getter for r/w handlers // return value is SC (negative if no card is attached to slot) int get_rw_handlers(read16_delegate& rhandler , write16_delegate& whandler); private: - devcb_write8 m_irq_cb_func; - devcb_write8 m_sts_cb_func; - devcb_write8 m_flg_cb_func; + devcb_write_line m_irq_cb_func; + devcb_write_line m_sts_cb_func; + devcb_write_line m_flg_cb_func; + devcb_write_line m_dmar_cb_func; }; class hp9845_io_card_device : public device_t, @@ -93,22 +82,17 @@ protected: hp9845_io_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); virtual ~hp9845_io_card_device(); - // device-level overrides - virtual void device_reset() override; - hp9845_io_slot_device *m_slot_dev; required_ioport m_select_code_port; - uint8_t m_my_sc; // card device handling - void irq_w(int state); - void sts_w(int state); - void flg_w(int state); + DECLARE_WRITE_LINE_MEMBER(irq_w); + DECLARE_WRITE_LINE_MEMBER(sts_w); + DECLARE_WRITE_LINE_MEMBER(flg_w); + DECLARE_WRITE_LINE_MEMBER(dmar_w); }; // device type definition DECLARE_DEVICE_TYPE(HP9845_IO_SLOT, hp9845_io_slot_device) -void hp9845_io_slot_devices(device_slot_interface &device); - #endif // MAME_BUS_HP9845_IO_HP9845_IO_H |