summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/spectrum/zxbus.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/spectrum/zxbus.cpp')
-rw-r--r--src/devices/bus/spectrum/zxbus.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/devices/bus/spectrum/zxbus.cpp b/src/devices/bus/spectrum/zxbus.cpp
index 24546353cf7..ac5e83436dd 100644
--- a/src/devices/bus/spectrum/zxbus.cpp
+++ b/src/devices/bus/spectrum/zxbus.cpp
@@ -41,6 +41,7 @@ zxbus_device::zxbus_device(const machine_config &mconfig, const char *tag, devic
zxbus_device::zxbus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, type, tag, owner, clock)
, m_iospace(*this, finder_base::DUMMY_TAG, -1)
+ , m_shadow_io_view(nullptr)
{
}
@@ -51,6 +52,11 @@ void zxbus_device::device_start()
void zxbus_device::add_slot(zxbus_slot_device &slot)
{
m_slot_list.push_front(&slot);
+ if (m_shadow_io_view)
+ {
+ device_zxbus_card_interface *dev = slot.get_card_device();
+ (*m_shadow_io_view).install_device(0x0000, 0xffff, *dev, &device_zxbus_card_interface::map_shadow_io);
+ }
}
device_zxbus_card_interface::device_zxbus_card_interface(const machine_config &mconfig, device_t &device)
@@ -59,6 +65,11 @@ device_zxbus_card_interface::device_zxbus_card_interface(const machine_config &m
{
}
+void zxbus_device::install_shadow_io(memory_view::memory_view_entry &io_view)
+{
+ m_shadow_io_view = &io_view;
+}
+
void device_zxbus_card_interface::interface_pre_start()
{
if (!m_zxbus)
@@ -74,5 +85,10 @@ void zxbus_cards(device_slot_interface &device)
{
device.option_add("nemoide", ZXBUS_NEMOIDE);
device.option_add("neogs", ZXBUS_NEOGS);
+}
+
+void zxbus_gmx_cards(device_slot_interface &device)
+{
+ zxbus_cards(device);
device.option_add("smuc", ZXBUS_SMUC);
}