summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/sgikbd
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/sgikbd
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/sgikbd')
-rw-r--r--src/devices/bus/sgikbd/sgikbd.cpp20
-rw-r--r--src/devices/bus/sgikbd/sgikbd.h5
2 files changed, 5 insertions, 20 deletions
diff --git a/src/devices/bus/sgikbd/sgikbd.cpp b/src/devices/bus/sgikbd/sgikbd.cpp
index 4ad2d1f925a..478a65243b5 100644
--- a/src/devices/bus/sgikbd/sgikbd.cpp
+++ b/src/devices/bus/sgikbd/sgikbd.cpp
@@ -21,7 +21,7 @@ sgi_keyboard_port_device::sgi_keyboard_port_device(machine_config const &mconfig
sgi_keyboard_port_device::sgi_keyboard_port_device(machine_config const &mconfig, device_type type, char const *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, type, tag, owner, clock)
- , device_slot_interface(mconfig, *this)
+ , device_single_card_slot_interface<device_sgi_keyboard_port_interface>(mconfig, *this)
, m_rxd(0)
, m_rxd_handler(*this)
, m_dev(nullptr)
@@ -34,16 +34,7 @@ sgi_keyboard_port_device::~sgi_keyboard_port_device()
void sgi_keyboard_port_device::device_config_complete()
{
- m_dev = dynamic_cast<device_sgi_keyboard_port_interface *>(get_card_device());
-}
-
-void sgi_keyboard_port_device::device_validity_check(validity_checker &valid) const
-{
- device_t *const card(get_card_device());
- if (card && !dynamic_cast<device_sgi_keyboard_port_interface *>(card))
- {
- logerror("Card device %s (%s) does not implement device_sgi_keyboard_port_interface\n", card->tag(), card->name());
- }
+ m_dev = get_card_device();
}
void sgi_keyboard_port_device::device_resolve_objects()
@@ -53,11 +44,6 @@ void sgi_keyboard_port_device::device_resolve_objects()
void sgi_keyboard_port_device::device_start()
{
- if (get_card_device() && !m_dev)
- {
- throw emu_fatalerror("Card device %s (%s) does not implement device_sgi_keyboard_port_interface\n", get_card_device()->tag(), get_card_device()->name());
- }
-
save_item(NAME(m_rxd));
m_rxd = 1;
@@ -71,7 +57,7 @@ WRITE_LINE_MEMBER(sgi_keyboard_port_device::write_txd)
}
device_sgi_keyboard_port_interface::device_sgi_keyboard_port_interface(machine_config const &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device)
+ : device_interface(device, "sgikbd")
, m_port(dynamic_cast<sgi_keyboard_port_device *>(device.owner()))
{
}
diff --git a/src/devices/bus/sgikbd/sgikbd.h b/src/devices/bus/sgikbd/sgikbd.h
index 1aa87bd43ad..bf64fd34b6a 100644
--- a/src/devices/bus/sgikbd/sgikbd.h
+++ b/src/devices/bus/sgikbd/sgikbd.h
@@ -9,7 +9,7 @@
class device_sgi_keyboard_port_interface;
-class sgi_keyboard_port_device : public device_t, public device_slot_interface
+class sgi_keyboard_port_device : public device_t, public device_single_card_slot_interface<device_sgi_keyboard_port_interface>
{
friend class device_sgi_keyboard_port_interface;
@@ -37,7 +37,6 @@ protected:
sgi_keyboard_port_device(machine_config const &mconfig, device_type type, char const *tag, device_t *owner, uint32_t clock);
virtual void device_config_complete() override;
- virtual void device_validity_check(validity_checker &valid) const override;
virtual void device_resolve_objects() override;
virtual void device_start() override;
@@ -50,7 +49,7 @@ private:
};
-class device_sgi_keyboard_port_interface : public device_slot_card_interface
+class device_sgi_keyboard_port_interface : public device_interface
{
friend class sgi_keyboard_port_device;