summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/a2bus/a2bus.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/a2bus/a2bus.cpp')
-rw-r--r--src/devices/bus/a2bus/a2bus.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/devices/bus/a2bus/a2bus.cpp b/src/devices/bus/a2bus/a2bus.cpp
index d70b0414b9f..6835e4ca5c3 100644
--- a/src/devices/bus/a2bus/a2bus.cpp
+++ b/src/devices/bus/a2bus/a2bus.cpp
@@ -307,22 +307,30 @@ device_a2bus_card_interface::~device_a2bus_card_interface()
void device_a2bus_card_interface::static_set_a2bus_tag(device_t &device, const char *tag, const char *slottag)
{
device_a2bus_card_interface &a2bus_card = dynamic_cast<device_a2bus_card_interface &>(device);
+ assert(a2bus_card);
a2bus_card.m_a2bus_tag = tag;
a2bus_card.m_a2bus_slottag = slottag;
}
-void device_a2bus_card_interface::set_a2bus_device()
+void device_a2bus_card_interface::interface_pre_start()
{
- // extract the slot number from the last digit of the slot tag
- int tlen = strlen(m_a2bus_slottag);
+ if (!m_a2bus)
+ {
+ // extract the slot number from the last digit of the slot tag
+ size_t const tlen = strlen(m_a2bus_slottag);
- m_slot = (m_a2bus_slottag[tlen-1] - '0');
+ m_slot = (m_a2bus_slottag[tlen-1] - '0');
+ if (m_slot < 0 || m_slot > 7)
+ fatalerror("Slot %x out of range for Apple II Bus\n", m_slot);
- if (m_slot < 0 || m_slot > 7)
- {
- fatalerror("Slot %x out of range for Apple II Bus\n", m_slot);
- }
+ device_t *const bus = device().machine().device(m_a2bus_tag);
+ if (!bus)
+ fatalerror("Can't find Apple II Bus device %s\n", m_a2bus_tag);
- m_a2bus = dynamic_cast<a2bus_device *>(device().machine().device(m_a2bus_tag));
- m_a2bus->add_a2bus_card(m_slot, this);
+ m_a2bus = dynamic_cast<a2bus_device *>(bus);
+ if (!m_a2bus)
+ fatalerror("Device %s (%s) is not an instance of a2bus_device\n", bus->tag(), bus->name());
+
+ m_a2bus->add_a2bus_card(m_slot, this);
+ }
}