summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/electron/cart/slot.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/electron/cart/slot.h')
-rw-r--r--src/devices/bus/electron/cart/slot.h33
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);