diff options
Diffstat (limited to 'src/devices/bus/nubus/nubus.cpp')
-rw-r--r-- | src/devices/bus/nubus/nubus.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/devices/bus/nubus/nubus.cpp b/src/devices/bus/nubus/nubus.cpp index 5bb45cb95d5..edbf53fab05 100644 --- a/src/devices/bus/nubus/nubus.cpp +++ b/src/devices/bus/nubus/nubus.cpp @@ -32,21 +32,31 @@ nubus_slot_device::nubus_slot_device(const machine_config &mconfig, const char * nubus_slot_device::nubus_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock), - device_slot_interface(mconfig, *this), - m_nubus_tag(nullptr), + device_single_card_slot_interface(mconfig, *this), + m_nubus(*this, finder_base::DUMMY_TAG), m_nubus_slottag(nullptr) { } //------------------------------------------------- +// device_resolve_objects - resolve objects that +// may be needed for other devices to set +// initial conditions at start time +//------------------------------------------------- + +void nubus_slot_device::device_resolve_objects() +{ + device_nubus_card_interface *dev = get_card_device(); + + if (dev) dev->set_nubus_tag(m_nubus.target(), m_nubus_slottag); +} + +//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- void nubus_slot_device::device_start() { - device_nubus_card_interface *dev = dynamic_cast<device_nubus_card_interface *>(get_card_device()); - - if (dev) dev->set_nubus_tag(m_nubus_tag, m_nubus_slottag); } //************************************************************************** @@ -215,7 +225,7 @@ WRITE_LINE_MEMBER( nubus_device::irqe_w ) { m_out_irqe_cb(state); } device_nubus_card_interface::device_nubus_card_interface(const machine_config &mconfig, device_t &device) : device_interface(device, "nubus"), m_nubus(nullptr), - m_nubus_tag(nullptr), m_nubus_slottag(nullptr), m_slot(0), m_next(nullptr) + m_nubus_slottag(nullptr), m_slot(0), m_next(nullptr) { } @@ -260,16 +270,9 @@ void device_nubus_card_interface::interface_pre_start() fatalerror("Slot %x out of range for Apple NuBus\n", m_slot); } - device_t *const bus = device().machine().device(m_nubus_tag); - if (!bus) - { - fatalerror("Can't find NuBus device %s\n", m_nubus_tag); - } - - m_nubus = dynamic_cast<nubus_device *>(bus); if (!m_nubus) { - fatalerror("Device %s (%s) is not an instance of nubus_device\n", bus->tag(), bus->name()); + fatalerror("Can't find NuBus device\n"); } nubus().add_nubus_card(this); |