From 6f4c1f6e5b2525ac8b700b3a0754f5e99c4223e1 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Fri, 1 Nov 2019 00:47:41 +1100 Subject: 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 --- src/devices/bus/tanbus/tanbus.cpp | 17 +++-------------- src/devices/bus/tanbus/tanbus.h | 11 +++++------ 2 files changed, 8 insertions(+), 20 deletions(-) (limited to 'src/devices/bus/tanbus') 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(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(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(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 { 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 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); -- cgit v1.2.3-70-g09d2