summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/spectrum/exp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/spectrum/exp.h')
-rw-r--r--src/devices/bus/spectrum/exp.h21
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