diff options
Diffstat (limited to 'src/devices/bus/spectrum/exp.h')
-rw-r--r-- | src/devices/bus/spectrum/exp.h | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/devices/bus/spectrum/exp.h b/src/devices/bus/spectrum/exp.h index 91d1922c577..677d23d6f9e 100644 --- a/src/devices/bus/spectrum/exp.h +++ b/src/devices/bus/spectrum/exp.h @@ -76,6 +76,7 @@ public: // callbacks auto irq_handler() { return m_irq_handler.bind(); } auto nmi_handler() { return m_nmi_handler.bind(); } + auto fb_r_handler() { return m_fb_r_handler.bind(); } void pre_opcode_fetch(offs_t offset); void post_opcode_fetch(offs_t offset); @@ -86,10 +87,11 @@ public: void mreq_w(offs_t offset, uint8_t data); uint8_t iorq_r(offs_t offset); void iorq_w(offs_t offset, uint8_t data); - DECLARE_READ_LINE_MEMBER( romcs ); + bool romcs(); - DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_irq_handler(state); } - DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_nmi_handler(state); } + void irq_w(int state) { m_irq_handler(state); } + void nmi_w(int state) { m_nmi_handler(state); } + uint8_t fb_r() { return m_fb_r_handler(); } protected: // device-level overrides @@ -100,6 +102,7 @@ protected: private: devcb_write_line m_irq_handler; devcb_write_line m_nmi_handler; + devcb_read8 m_fb_r_handler; }; @@ -109,15 +112,15 @@ class device_spectrum_expansion_interface : public device_interface { public: // reading and writing - virtual void pre_opcode_fetch(offs_t offset) { }; - virtual void post_opcode_fetch(offs_t offset) { }; - virtual void pre_data_fetch(offs_t offset) { }; - virtual void post_data_fetch(offs_t offset) { }; + virtual void pre_opcode_fetch(offs_t offset) { } + virtual void post_opcode_fetch(offs_t offset) { } + virtual void pre_data_fetch(offs_t offset) { } + virtual void post_data_fetch(offs_t offset) { } virtual uint8_t mreq_r(offs_t offset) { return 0xff; } virtual void mreq_w(offs_t offset, uint8_t data) { } - virtual uint8_t iorq_r(offs_t offset) { return 0xff; } + virtual uint8_t iorq_r(offs_t offset) { return offset & 1 ? m_slot->fb_r() : 0xff; } virtual void iorq_w(offs_t offset, uint8_t data) { } - virtual DECLARE_READ_LINE_MEMBER(romcs) { return 0; } + virtual bool romcs() { return 0; } protected: // construction/destruction |