summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/acorn/bus.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/acorn/bus.cpp')
-rw-r--r--src/devices/bus/acorn/bus.cpp33
1 files changed, 8 insertions, 25 deletions
diff --git a/src/devices/bus/acorn/bus.cpp b/src/devices/bus/acorn/bus.cpp
index 2ecb509c30f..8f3a5fcde07 100644
--- a/src/devices/bus/acorn/bus.cpp
+++ b/src/devices/bus/acorn/bus.cpp
@@ -28,36 +28,20 @@ DEFINE_DEVICE_TYPE(ACORN_BUS_SLOT, acorn_bus_slot_device, "acorn_bus_slot", "Aco
//-------------------------------------------------
acorn_bus_slot_device::acorn_bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, ACORN_BUS_SLOT, tag, owner, clock)
- , device_slot_interface(mconfig, *this)
+ , device_single_card_slot_interface<device_acorn_bus_interface>(mconfig, *this)
, m_bus(*this, finder_base::DUMMY_TAG)
{
}
//-------------------------------------------------
-// device_validity_check - device-specific checks
-//-------------------------------------------------
-
-void acorn_bus_slot_device::device_validity_check(validity_checker &valid) const
-{
- device_t *const card(get_card_device());
- if (card && !dynamic_cast<device_acorn_bus_interface *>(card))
- osd_printf_error("acorn_bus_slot_device: card device %s (%s) does not implement device_acorn_bus_interface\n", card->tag(), card->name());
-}
-
-//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void acorn_bus_slot_device::device_start()
{
- device_t *const card(get_card_device());
- if (card)
- {
- device_acorn_bus_interface *const intf(dynamic_cast<device_acorn_bus_interface *>(card));
- if (!intf)
- throw emu_fatalerror("acorn_bus_slot_device: card device %s (%s) does not implement device_acorn_bus_interface\n", card->tag(), card->name());
+ device_acorn_bus_interface *const intf(get_card_device());
+ if (intf)
intf->set_acorn_bus(*m_bus);
- }
// tell acorn bus that there is one slot with the specified tag
m_bus->add_slot(*this);
@@ -99,9 +83,6 @@ void acorn_bus_device::add_slot(acorn_bus_slot_device &slot)
void acorn_bus_device::device_start()
{
- // resolve callbacks
- m_out_irq_cb.resolve_safe();
- m_out_nmi_cb.resolve_safe();
}
//-------------------------------------------------
@@ -113,8 +94,8 @@ void acorn_bus_device::device_reset()
}
// interrupt request from acorn_bus card
-WRITE_LINE_MEMBER(acorn_bus_device::irq_w) { m_out_irq_cb(state); }
-WRITE_LINE_MEMBER(acorn_bus_device::nmi_w) { m_out_nmi_cb(state); }
+void acorn_bus_device::irq_w(int state) { m_out_irq_cb(state); }
+void acorn_bus_device::nmi_w(int state) { m_out_nmi_cb(state); }
@@ -132,7 +113,7 @@ WRITE_LINE_MEMBER(acorn_bus_device::nmi_w) { m_out_nmi_cb(state); }
//-------------------------------------------------
device_acorn_bus_interface::device_acorn_bus_interface(const machine_config &mconfig, device_t &device)
- : device_slot_card_interface(mconfig, device)
+ : device_interface(device, "acornbus")
, m_bus(nullptr)
{
}
@@ -175,6 +156,7 @@ void device_acorn_bus_interface::interface_pre_start()
#include "cms/4080term.h"
#include "cms/fdc.h"
#include "cms/hires.h"
+#include "cms/ieee.h"
void acorn_bus_devices(device_slot_interface &device)
{
@@ -203,4 +185,5 @@ void cms_bus_devices(device_slot_interface &device)
device.option_add("4080term", CMS_4080TERM); /* CMS 40/80 Video Terminal Card */
device.option_add("fdc", CMS_FDC); /* CMS Floppy Disc Controller */
device.option_add("hires", CMS_HIRES); /* CMS High Resolution Colour Graphics Card */
+ device.option_add("ieee", CMS_IEEE); /* CMS IEEE Interface */
}