summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/tanbus
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2019-11-01 00:47:41 +1100
committer Vas Crabb <vas@vastheman.com>2019-11-01 00:47:41 +1100
commit6f4c1f6e5b2525ac8b700b3a0754f5e99c4223e1 (patch)
tree4b0e0ac5cf1c3a7fd518a7d8f4d12f39291b2629 /src/devices/bus/tanbus
parent0be348c7fbc8c0478f724ba098dabeb9eb3aab8c (diff)
Spring cleaning:
* Changed emu_fatalerror to use util::string_format semantics * Fixed some incorrectly marked up stuff in build scripts * Make internal layout compression type a scoped enum (only zlib is supported still, but at least the values aren't magic numbers now) * Fixed memory leaks in Xbox USB * There can only be one "perfect quantum" device - enforce that only the root machine can set it, as allowing subdevices to will cause weird issues with slot cards overiding it * Allow multiple devices to set maximum quantum and use the most restrictive one (it's maximum quantum, it would be minimum interleave) * Got rid of device_slot_card_interface as it wasn't providing value * Added a helper template to reduce certain kinds of boilerplate in slots/buses * Cleaned up some particularly bad slot code (plenty more of that to do), and made some slots more idiomatic
Diffstat (limited to 'src/devices/bus/tanbus')
-rw-r--r--src/devices/bus/tanbus/tanbus.cpp17
-rw-r--r--src/devices/bus/tanbus/tanbus.h11
2 files changed, 8 insertions, 20 deletions
diff --git a/src/devices/bus/tanbus/tanbus.cpp b/src/devices/bus/tanbus/tanbus.cpp
index c7d36a1a578..b84d625c80f 100644
--- a/src/devices/bus/tanbus/tanbus.cpp
+++ b/src/devices/bus/tanbus/tanbus.cpp
@@ -28,29 +28,18 @@ DEFINE_DEVICE_TYPE(TANBUS_SLOT, tanbus_slot_device, "tanbus_slot", "Microtan Bus
//-------------------------------------------------
tanbus_slot_device::tanbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, TANBUS_SLOT, tag, owner, clock)
- , device_slot_interface(mconfig, *this)
+ , device_single_card_slot_interface<device_tanbus_interface>(mconfig, *this)
, m_tanbus(*this, DEVICE_SELF_OWNER)
{
}
//-------------------------------------------------
-// device_validity_check - device-specific checks
-//-------------------------------------------------
-
-void tanbus_slot_device::device_validity_check(validity_checker &valid) const
-{
- device_t *const card(get_card_device());
- if (card && !dynamic_cast<device_tanbus_interface *>(card))
- osd_printf_error("tanbus_slot_device: card device %s (%s) does not implement device_tanbus_interface\n", card->tag(), card->name());
-}
-
-//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void tanbus_slot_device::device_start()
{
- device_tanbus_interface *dev = dynamic_cast<device_tanbus_interface *>(get_card_device());
+ device_tanbus_interface *const dev = get_card_device();
if (dev) m_tanbus->add_card(dev, m_bus_num);
}
@@ -200,7 +189,7 @@ void tanbus_device::write(offs_t offset, uint8_t data)
//-------------------------------------------------
device_tanbus_interface::device_tanbus_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device)
+ : device_interface(device, "tanbus")
, m_tanbus(nullptr)
, m_page(0)
, m_next(nullptr)
diff --git a/src/devices/bus/tanbus/tanbus.h b/src/devices/bus/tanbus/tanbus.h
index 315f2d1b1d8..f5823a6df34 100644
--- a/src/devices/bus/tanbus/tanbus.h
+++ b/src/devices/bus/tanbus/tanbus.h
@@ -25,7 +25,7 @@ class device_tanbus_interface;
// TYPE DEFINITIONS
//**************************************************************************
-class tanbus_slot_device : public device_t, public device_slot_interface
+class tanbus_slot_device : public device_t, public device_single_card_slot_interface<device_tanbus_interface>
{
public:
// construction/destruction
@@ -37,16 +37,15 @@ public:
opts(*this);
set_default_option(dflt);
set_fixed(false);
- set_tanbus_slot(tag, num);
+ set_tanbus_slot(num);
}
tanbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration
- void set_tanbus_slot(const char *tag, int num) { m_bus_num = num; }
+ void set_tanbus_slot(int num) { m_bus_num = num; }
protected:
// device-level overrides
- virtual void device_validity_check(validity_checker &valid) const override;
virtual void device_start() override;
private:
@@ -116,7 +115,7 @@ DECLARE_DEVICE_TYPE(TANBUS, tanbus_device)
// ======================> device_tanbus_interface
-class device_tanbus_interface : public device_slot_card_interface
+class device_tanbus_interface : public device_interface
{
friend class tanbus_device;
template <class ElementType> friend class simple_list;
@@ -127,7 +126,7 @@ public:
// bus access
virtual uint8_t read(offs_t offset, int inhrom, int inhram, int be) { return 0xff; }
virtual void write(offs_t offset, uint8_t data, int inhrom, int inhram, int be) { }
- virtual void set_inhibit_lines(offs_t offset, int &inhram, int &inhrom) { };
+ virtual void set_inhibit_lines(offs_t offset, int &inhram, int &inhrom) { }
protected:
device_tanbus_interface(const machine_config &mconfig, device_t &device);