summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/svi3x8/slot/slot.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/svi3x8/slot/slot.h')
-rw-r--r--src/devices/bus/svi3x8/slot/slot.h25
1 files changed, 10 insertions, 15 deletions
diff --git a/src/devices/bus/svi3x8/slot/slot.h b/src/devices/bus/svi3x8/slot/slot.h
index 756f17658fd..bba55731a88 100644
--- a/src/devices/bus/svi3x8/slot/slot.h
+++ b/src/devices/bus/svi3x8/slot/slot.h
@@ -40,12 +40,6 @@
#pragma once
-//**************************************************************************
-// CONSTANTS / MACROS
-//**************************************************************************
-
-#define SVIBUS_TAG "slot_bux"
-
//**************************************************************************
// TYPE DEFINITIONS
@@ -67,7 +61,7 @@ public:
auto romdis_handler() { return m_romdis_handler.bind(); }
auto ramdis_handler() { return m_ramdis_handler.bind(); }
- void add_card(device_svi_slot_interface *card);
+ void add_card(device_svi_slot_interface &card);
// from slot
DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int_handler(state); };
@@ -88,7 +82,6 @@ public:
private:
// device-level overrides
virtual void device_start() override;
- virtual void device_reset() override;
simple_list<device_svi_slot_interface> m_dev;
@@ -102,29 +95,31 @@ DECLARE_DEVICE_TYPE(SVI_SLOT_BUS, svi_slot_bus_device)
// ======================> svi_slot_device
-class svi_slot_device : public device_t, public device_slot_interface
+class svi_slot_device : public device_t, public device_single_card_slot_interface<device_svi_slot_interface>
{
public:
// construction/destruction
- template <typename T>
- svi_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt)
+ template <typename T, typename U>
+ svi_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&bus, U &&opts, char const *dflt)
: svi_slot_device(mconfig, tag, owner, 0)
{
option_reset();
opts(*this);
set_default_option(dflt);
set_fixed(false);
+ set_bus(std::forward<T>(bus));
}
svi_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ template <typename T> void set_bus(T &&tag) { m_bus.set_tag(std::forward<T>(tag)); }
+
protected:
// device-level overrides
virtual void device_start() override;
- virtual void device_reset() override;
// configuration
- const char *m_bus_tag;
+ required_device<svi_slot_bus_device> m_bus;
};
// device type definition
@@ -132,14 +127,14 @@ DECLARE_DEVICE_TYPE(SVI_SLOT, svi_slot_device)
// ======================> svi_slot_device
-class device_svi_slot_interface : public device_slot_card_interface
+class device_svi_slot_interface : public device_interface
{
template <class ElementType> friend class simple_list;
public:
// construction/destruction
virtual ~device_svi_slot_interface();
- void set_bus_device(svi_slot_bus_device *bus);
+ void set_bus_device(svi_slot_bus_device &bus);
device_svi_slot_interface *next() const { return m_next; }