diff options
Diffstat (limited to 'src/devices/bus/acorn/bus.cpp')
-rw-r--r-- | src/devices/bus/acorn/bus.cpp | 33 |
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 */ } |