diff options
Diffstat (limited to 'src/devices/bus/electron/cart/slot.h')
-rw-r--r-- | src/devices/bus/electron/cart/slot.h | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/src/devices/bus/electron/cart/slot.h b/src/devices/bus/electron/cart/slot.h index d31bc16258c..9e4b66182f1 100644 --- a/src/devices/bus/electron/cart/slot.h +++ b/src/devices/bus/electron/cart/slot.h @@ -105,6 +105,16 @@ #define ELECTRON_CART_ROM_REGION_TAG ":cart:rom" +#define MCFG_ELECTRON_CARTSLOT_ADD(_tag, _slot_intf, _def_slot) \ + MCFG_DEVICE_ADD(_tag, ELECTRON_CARTSLOT, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) + +#define MCFG_ELECTRON_CARTSLOT_IRQ_HANDLER(_devcb) \ + downcast<electron_cartslot_device &>(*device).set_irq_handler(DEVCB_##_devcb); + +#define MCFG_ELECTRON_CARTSLOT_NMI_HANDLER(_devcb) \ + downcast<electron_cartslot_device &>(*device).set_nmi_handler(DEVCB_##_devcb); + //************************************************************************** // TYPE DEFINITIONS @@ -120,21 +130,12 @@ class electron_cartslot_device : public device_t, { public: // construction/destruction - template <typename T> - electron_cartslot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock, T &&slot_options, const char *default_option) - : electron_cartslot_device(mconfig, tag, owner, clock) - { - option_reset(); - slot_options(*this); - set_default_option(default_option); - set_fixed(false); - } - electron_cartslot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + virtual ~electron_cartslot_device(); // callbacks - auto irq_handler() { return m_irq_handler.bind(); } - auto nmi_handler() { return m_nmi_handler.bind(); } + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); } // device-level overrides virtual void device_start() override; @@ -158,8 +159,8 @@ public: virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override; // reading and writing - virtual uint8_t read(offs_t offset, int infc, int infd, int romqa, int oe, int oe2); - virtual void write(offs_t offset, uint8_t data, int infc, int infd, int romqa, int oe, int oe2); + virtual uint8_t read(address_space &space, offs_t offset, int infc, int infd, int romqa); + virtual void write(address_space &space, offs_t offset, uint8_t data, int infc, int infd, int romqa); DECLARE_WRITE_LINE_MEMBER(irq_w) { m_irq_handler(state); } DECLARE_WRITE_LINE_MEMBER(nmi_w) { m_nmi_handler(state); } @@ -182,8 +183,8 @@ public: virtual ~device_electron_cart_interface(); // reading and writing - virtual uint8_t read(offs_t offset, int infc, int infd, int romqa, int oe, int oe2) { return 0xff; } - virtual void write(offs_t offset, uint8_t data, int infc, int infd, int romqa, int oe, int oe2) { } + virtual uint8_t read(address_space &space, offs_t offset, int infc, int infd, int romqa) { return 0xff; } + virtual void write(address_space &space, offs_t offset, uint8_t data, int infc, int infd, int romqa) { } void rom_alloc(uint32_t size, const char *tag); void ram_alloc(uint32_t size); |