diff options
Diffstat (limited to 'src/devices/bus/qbus/qbus.cpp')
-rw-r--r-- | src/devices/bus/qbus/qbus.cpp | 51 |
1 files changed, 25 insertions, 26 deletions
diff --git a/src/devices/bus/qbus/qbus.cpp b/src/devices/bus/qbus/qbus.cpp index 34ce5706620..82379c071f0 100644 --- a/src/devices/bus/qbus/qbus.cpp +++ b/src/devices/bus/qbus/qbus.cpp @@ -14,6 +14,8 @@ #include "dsd4432.h" #include "pc11.h" #include "qtx.h" +#include "dvk_kgd.h" +#include "dvk_mx.h" void qbus_cards(device_slot_interface &device) @@ -21,6 +23,8 @@ void qbus_cards(device_slot_interface &device) device.option_add("pc11", DEC_PC11); /* Paper tape reader and punch */ device.option_add("qts1", TTI_QTS1); device.option_add("dsd4432", DSD4432); + device.option_add("kgd", DVK_KGD); + device.option_add("mx", DVK_MX); } @@ -42,8 +46,7 @@ DEFINE_DEVICE_TYPE(QBUS_SLOT, qbus_slot_device, "qbus_slot", "DEC Qbus slot") device_qbus_card_interface::device_qbus_card_interface(const machine_config &mconfig, device_t &device) : device_interface(device, "qbus"), - m_bus(nullptr), - m_next(nullptr) + m_bus(nullptr) { } @@ -72,13 +75,8 @@ qbus_slot_device::qbus_slot_device(const machine_config &mconfig, const char *ta void qbus_slot_device::device_start() { device_qbus_card_interface *dev = dynamic_cast<device_qbus_card_interface *>(get_card_device()); - if (dev) m_bus->add_card(dev); - - m_write_birq4.resolve_safe(); - m_write_birq5.resolve_safe(); - m_write_birq6.resolve_safe(); - m_write_birq7.resolve_safe(); - m_write_bdmr.resolve_safe(); + if (dev) + m_bus->add_card(*dev); } @@ -100,6 +98,17 @@ qbus_device::qbus_device(const machine_config &mconfig, const char *tag, device_ { } +qbus_device::~qbus_device() +{ +} + +device_memory_interface::space_config_vector qbus_device::memory_space_config() const +{ + return space_config_vector { + std::make_pair(AS_PROGRAM, &m_program_config) + }; +} + //------------------------------------------------- // device_start - device-specific startup @@ -107,12 +116,6 @@ qbus_device::qbus_device(const machine_config &mconfig, const char *tag, device_ void qbus_device::device_start() { - // resolve callbacks - m_out_birq4_cb.resolve_safe(); - m_out_birq5_cb.resolve_safe(); - m_out_birq6_cb.resolve_safe(); - m_out_birq7_cb.resolve_safe(); - m_out_bdmr_cb.resolve_safe(); } @@ -129,10 +132,10 @@ void qbus_device::device_reset() // add_card - add card //------------------------------------------------- -void qbus_device::add_card(device_qbus_card_interface *card) +void qbus_device::add_card(device_qbus_card_interface &card) { - card->m_bus = this; - m_device_list.append(*card); + card.m_bus = this; + m_device_list.emplace_back(card); } void qbus_device::install_device(offs_t start, offs_t end, read16sm_delegate rhandler, write16sm_delegate whandler, uint32_t mask) @@ -148,14 +151,12 @@ void qbus_device::install_device(offs_t start, offs_t end, read16sm_delegate rha int qbus_device::z80daisy_irq_state() { int data = 0; - device_qbus_card_interface *entry = m_device_list.first(); - while (entry) + for (device_qbus_card_interface &entry : m_device_list) { - data = entry->z80daisy_irq_state(); + data = entry.z80daisy_irq_state(); if (data) return data; - entry = entry->next(); } return data; @@ -164,14 +165,12 @@ int qbus_device::z80daisy_irq_state() int qbus_device::z80daisy_irq_ack() { int vec = -1; - device_qbus_card_interface *entry = m_device_list.first(); - while (entry) + for (device_qbus_card_interface &entry : m_device_list) { - vec = entry->z80daisy_irq_ack(); + vec = entry.z80daisy_irq_ack(); if (vec > 0) return vec; - entry = entry->next(); } return vec; |