diff options
Diffstat (limited to 'src/devices/bus/pet/exp.h')
-rw-r--r-- | src/devices/bus/pet/exp.h | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/src/devices/bus/pet/exp.h b/src/devices/bus/pet/exp.h index 39309b65f4c..d44dcea6d19 100644 --- a/src/devices/bus/pet/exp.h +++ b/src/devices/bus/pet/exp.h @@ -23,6 +23,21 @@ #define PET_EXPANSION_SLOT_TAG "exp" + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_PET_EXPANSION_SLOT_ADD(_tag, _clock, _slot_intf, _def_slot) \ + MCFG_DEVICE_ADD(_tag, PET_EXPANSION_SLOT, _clock) \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) + + +#define MCFG_PET_EXPANSION_SLOT_DMA_CALLBACKS(_read, _write) \ + downcast<pet_expansion_slot_device *>(device)->set_callbacks(DEVCB_##_read, DEVCB_##_write); + + + //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -48,13 +63,18 @@ public: pet_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~pet_expansion_slot_device(); + template <class Read, class Write> void set_callbacks(Read &&rd, Write &&wr) { + m_read_dma.set_callback(std::forward<Read>(rd)); + m_write_dma.set_callback(std::forward<Write>(wr)); + } + auto dma_read_callback() { return m_read_dma.bind(); } auto dma_write_callback() { return m_write_dma.bind(); } // computer interface - int norom_r(offs_t offset, int sel); - uint8_t read(offs_t offset, uint8_t data, int &sel); - void write(offs_t offset, uint8_t data, int &sel); + int norom_r(address_space &space, offs_t offset, int sel); + uint8_t read(address_space &space, offs_t offset, uint8_t data, int &sel); + void write(address_space &space, offs_t offset, uint8_t data, int &sel); DECLARE_READ_LINE_MEMBER( diag_r ); DECLARE_WRITE_LINE_MEMBER( irq_w ); @@ -111,9 +131,9 @@ protected: device_pet_expansion_card_interface(const machine_config &mconfig, device_t &device); // runtime - virtual int pet_norom_r(offs_t offset, int sel) { return 1; } - virtual uint8_t pet_bd_r(offs_t offset, uint8_t data, int &sel) { return data; }; - virtual void pet_bd_w(offs_t offset, uint8_t data, int &sel) { }; + virtual int pet_norom_r(address_space &space, offs_t offset, int sel) { return 1; } + virtual uint8_t pet_bd_r(address_space &space, offs_t offset, uint8_t data, int &sel) { return data; }; + virtual void pet_bd_w(address_space &space, offs_t offset, uint8_t data, int &sel) { }; virtual int pet_diag_r() { return 1; } virtual void pet_irq_w(int state) { } |