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, 16 insertions, 17 deletions
diff --git a/src/devices/bus/electron/cart/slot.h b/src/devices/bus/electron/cart/slot.h index 9e4b66182f1..d31bc16258c 100644 --- a/src/devices/bus/electron/cart/slot.h +++ b/src/devices/bus/electron/cart/slot.h @@ -105,16 +105,6 @@ #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 @@ -130,12 +120,21 @@ 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 - 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)); } + auto irq_handler() { return m_irq_handler.bind(); } + auto nmi_handler() { return m_nmi_handler.bind(); } // device-level overrides virtual void device_start() override; @@ -159,8 +158,8 @@ public: virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override; // reading and writing - 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); + 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); DECLARE_WRITE_LINE_MEMBER(irq_w) { m_irq_handler(state); } DECLARE_WRITE_LINE_MEMBER(nmi_w) { m_nmi_handler(state); } @@ -183,8 +182,8 @@ public: virtual ~device_electron_cart_interface(); // reading and writing - 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) { } + 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) { } void rom_alloc(uint32_t size, const char *tag); void ram_alloc(uint32_t size); |