summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/rc2014/rc2014.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/rc2014/rc2014.cpp')
-rw-r--r--src/devices/bus/rc2014/rc2014.cpp159
1 files changed, 123 insertions, 36 deletions
diff --git a/src/devices/bus/rc2014/rc2014.cpp b/src/devices/bus/rc2014/rc2014.cpp
index e23af856311..baee04e8e37 100644
--- a/src/devices/bus/rc2014/rc2014.cpp
+++ b/src/devices/bus/rc2014/rc2014.cpp
@@ -20,14 +20,6 @@
rc2014_bus_device::rc2014_bus_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_installer{}
- , m_clk(*this)
- , m_int(*this)
- , m_tx(*this)
- , m_rx(*this)
- , m_user1(*this)
- , m_user2(*this)
- , m_user3(*this)
- , m_user4(*this)
, m_daisy_chain{}
{
}
@@ -54,6 +46,12 @@ void rc2014_bus_device::device_reset()
installer(AS_IO)->unmap_readwrite(0, (1 << installer(AS_IO)->space_config().addr_width()) - 1);
}
+void rc2014_bus_device::add_card(device_rc2014_card_interface &card)
+{
+ card.m_bus = this;
+ m_device_list.emplace_back(card);
+}
+
void rc2014_bus_device::set_bus_clock(u32 clock)
{
set_clock(clock);
@@ -87,6 +85,54 @@ const z80_daisy_config* rc2014_bus_device::get_daisy_chain()
return (const z80_daisy_config*)m_daisy_chain;
}
+void rc2014_bus_device::clk_w(int state)
+{
+ for (device_rc2014_card_interface &entry : m_device_list)
+ entry.card_clk_w(state);
+}
+
+void rc2014_bus_device::int_w(int state)
+{
+ for (device_rc2014_card_interface &entry : m_device_list)
+ entry.card_int_w(state);
+}
+
+void rc2014_bus_device::tx_w(int state)
+{
+ for (device_rc2014_card_interface &entry : m_device_list)
+ entry.card_tx_w(state);
+}
+
+void rc2014_bus_device::rx_w(int state)
+{
+ for (device_rc2014_card_interface &entry : m_device_list)
+ entry.card_rx_w(state);
+}
+
+void rc2014_bus_device::user1_w(int state)
+{
+ for (device_rc2014_card_interface &entry : m_device_list)
+ entry.card_user1_w(state);
+}
+
+void rc2014_bus_device::user2_w(int state)
+{
+ for (device_rc2014_card_interface &entry : m_device_list)
+ entry.card_user2_w(state);
+}
+
+void rc2014_bus_device::user3_w(int state)
+{
+ for (device_rc2014_card_interface &entry : m_device_list)
+ entry.card_user3_w(state);
+}
+
+void rc2014_bus_device::user4_w(int state)
+{
+ for (device_rc2014_card_interface &entry : m_device_list)
+ entry.card_user4_w(state);
+}
+
//-------------------------------------------------
// device_rc2014_card_interface
//-------------------------------------------------
@@ -97,11 +143,6 @@ device_rc2014_card_interface::device_rc2014_card_interface(const machine_config
{
}
-void device_rc2014_card_interface::set_bus_device(rc2014_bus_device *bus_device)
-{
- m_bus = bus_device;
-}
-
//-------------------------------------------------
// rc2014_slot_device
//-------------------------------------------------
@@ -127,7 +168,7 @@ void rc2014_slot_device::device_resolve_objects()
device_rc2014_card_interface *const card(dynamic_cast<device_rc2014_card_interface *>(get_card_device()));
if (card)
- card->set_bus_device(m_bus);
+ m_bus->add_card(*card);
}
//**************************************************************************
@@ -145,18 +186,15 @@ rc2014_ext_bus_device::rc2014_ext_bus_device(const machine_config &mconfig, cons
rc2014_ext_bus_device::rc2014_ext_bus_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: rc2014_bus_device(mconfig, type, tag, owner, clock)
- , m_clk2(*this)
- , m_page(*this)
- , m_nmi(*this)
- , m_tx2(*this)
- , m_rx2(*this)
- , m_user5(*this)
- , m_user6(*this)
- , m_user7(*this)
- , m_user8(*this)
{
}
+void rc2014_ext_bus_device::add_card(device_rc2014_ext_card_interface &card)
+{
+ card.m_bus = this;
+ m_device_list.emplace_back(card);
+}
+
//-------------------------------------------------
// device_rc2014_ext_card_interface
//-------------------------------------------------
@@ -166,12 +204,6 @@ device_rc2014_ext_card_interface::device_rc2014_ext_card_interface(const machine
, m_bus(nullptr)
{
}
-
-void device_rc2014_ext_card_interface::set_bus_device(rc2014_ext_bus_device *bus_device)
-{
- m_bus = bus_device;
-}
-
//-------------------------------------------------
// rc2014_ext_slot_device
//-------------------------------------------------
@@ -190,13 +222,67 @@ void rc2014_ext_slot_device::device_start()
{
}
+void rc2014_ext_bus_device::clk2_w(int state)
+{
+ for (device_rc2014_ext_card_interface &entry : m_device_list)
+ entry.card_clk2_w(state);
+}
+
+void rc2014_ext_bus_device::page_w(int state)
+{
+ for (device_rc2014_ext_card_interface &entry : m_device_list)
+ entry.card_page_w(state);
+}
+
+void rc2014_ext_bus_device::nmi_w(int state)
+{
+ for (device_rc2014_ext_card_interface &entry : m_device_list)
+ entry.card_nmi_w(state);
+}
+
+void rc2014_ext_bus_device::tx2_w(int state)
+{
+ for (device_rc2014_ext_card_interface &entry : m_device_list)
+ entry.card_tx2_w(state);
+}
+
+void rc2014_ext_bus_device::rx2_w(int state)
+{
+ for (device_rc2014_ext_card_interface &entry : m_device_list)
+ entry.card_rx2_w(state);
+}
+
+void rc2014_ext_bus_device::user5_w(int state)
+{
+ for (device_rc2014_ext_card_interface &entry : m_device_list)
+ entry.card_user5_w(state);
+}
+
+void rc2014_ext_bus_device::user6_w(int state)
+{
+ for (device_rc2014_ext_card_interface &entry : m_device_list)
+ entry.card_user6_w(state);
+}
+
+void rc2014_ext_bus_device::user7_w(int state)
+{
+ for (device_rc2014_ext_card_interface &entry : m_device_list)
+ entry.card_user7_w(state);
+}
+
+void rc2014_ext_bus_device::user8_w(int state)
+{
+ for (device_rc2014_ext_card_interface &entry : m_device_list)
+ entry.card_user8_w(state);
+}
+
void rc2014_ext_slot_device::device_resolve_objects()
{
rc2014_slot_device::device_resolve_objects();
device_rc2014_ext_card_interface *const card(dynamic_cast<device_rc2014_ext_card_interface *>(get_card_device()));
if (card)
- card->set_bus_device(dynamic_cast<rc2014_ext_bus_device *>(m_bus.target()));
+ ((rc2014_ext_bus_device*)m_bus.lookup())->add_card(*card);
}
//**************************************************************************
@@ -223,6 +309,12 @@ void rc2014_rc80_bus_device::device_start()
rc2014_ext_bus_device::device_start();
}
+void rc2014_rc80_bus_device::add_card(device_rc2014_rc80_card_interface &card)
+{
+ card.m_bus = this;
+ m_device_list.emplace_back(card);
+}
+
//-------------------------------------------------
// device_rc2014_rc80_card_interface
//-------------------------------------------------
@@ -233,11 +325,6 @@ device_rc2014_rc80_card_interface::device_rc2014_rc80_card_interface(const machi
{
}
-void device_rc2014_rc80_card_interface::set_bus_device(rc2014_rc80_bus_device *bus_device)
-{
- m_bus = bus_device;
-}
-
//-------------------------------------------------
// rc2014_rc80_slot_device
//-------------------------------------------------
@@ -257,7 +344,7 @@ void rc2014_rc80_slot_device::device_resolve_objects()
device_rc2014_rc80_card_interface *const card(dynamic_cast<device_rc2014_rc80_card_interface *>(get_card_device()));
if (card)
- card->set_bus_device(dynamic_cast<rc2014_rc80_bus_device *>(m_bus.target()));
+ ((rc2014_rc80_bus_device*)m_bus.lookup())->add_card(*card);
}
//**************************************************************************