diff options
Diffstat (limited to 'src/devices/bus/rc2014/serial.cpp')
-rw-r--r-- | src/devices/bus/rc2014/serial.cpp | 66 |
1 files changed, 30 insertions, 36 deletions
diff --git a/src/devices/bus/rc2014/serial.cpp b/src/devices/bus/rc2014/serial.cpp index faf8a831714..c78eaad5559 100644 --- a/src/devices/bus/rc2014/serial.cpp +++ b/src/devices/bus/rc2014/serial.cpp @@ -8,9 +8,11 @@ #include "emu.h" #include "serial.h" + +#include "bus/rs232/rs232.h" #include "machine/6850acia.h" #include "machine/z80sio.h" -#include "bus/rs232/rs232.h" + namespace { @@ -26,14 +28,17 @@ public: serial_io_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - virtual void device_resolve_objects() override; - virtual void device_add_mconfig(machine_config &config) override; + // device_t implementation + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; + virtual void device_add_mconfig(machine_config &config) override ATTR_COLD; void irq_w(int state) { m_bus->int_w(state); } void tx_w(int state) { m_bus->tx_w(state); } + + virtual void card_clk_w(int state) override { m_acia->write_txc(state); m_acia->write_rxc(state); } + virtual void card_rx_w(int state) override { m_acia->write_rxd(state); } + private: required_device<acia6850_device> m_acia; }; @@ -55,13 +60,6 @@ void serial_io_device::device_reset() m_bus->installer(AS_IO)->install_readwrite_handler(0x80, 0x81, 0, 0xff3e, 0, read8sm_delegate(*m_acia, FUNC(acia6850_device::read)), write8sm_delegate(*m_acia, FUNC(acia6850_device::write))); } -void serial_io_device::device_resolve_objects() -{ - m_bus->clk_callback().append(m_acia, FUNC(acia6850_device::write_txc)); - m_bus->clk_callback().append(m_acia, FUNC(acia6850_device::write_rxc)); - - m_bus->rx_callback().append(m_acia, FUNC(acia6850_device::write_rxd)); -} // JP1 is used to enable power from USB-to-Serial cable @@ -103,10 +101,10 @@ protected: dual_serial_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - virtual void device_add_mconfig(machine_config &config) override; - virtual ioport_constructor device_input_ports() const override; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; + virtual void device_add_mconfig(machine_config &config) override ATTR_COLD; + virtual ioport_constructor device_input_ports() const override ATTR_COLD; virtual void irq_w(int state) = 0; virtual void tx_w(int state) = 0; @@ -184,13 +182,18 @@ public: protected: // device-level overrides - virtual void device_reset() override; - virtual void device_resolve_objects() override; + virtual void device_reset() override ATTR_COLD; + virtual void device_resolve_objects() override ATTR_COLD; // base-class overrides void irq_w(int state) override { m_bus->int_w(state); } void tx_w(int state) override { m_bus->tx_w(state); } void tx2_w(int state) override { m_bus->tx2_w(state); } + + virtual void card_clk_w(int state) override { m_sio->txca_w(state); m_sio->rxca_w(state); clk1_w(state); } + virtual void card_clk2_w(int state) override { clk2_w(state); } + virtual void card_rx_w(int state) override { m_sio->rxa_w(state); } + virtual void card_rx2_w(int state) override { m_sio->rxb_w(state); } }; dual_serial_device::dual_serial_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) @@ -211,14 +214,6 @@ void dual_serial_device::device_reset() void dual_serial_device::device_resolve_objects() { - m_bus->clk_callback().append(m_sio, FUNC(z80sio_device::txca_w)); - m_bus->clk_callback().append(m_sio, FUNC(z80sio_device::rxca_w)); - m_bus->clk_callback().append(*this, FUNC(dual_serial_device::clk1_w)); - m_bus->clk2_callback().append(*this, FUNC(dual_serial_device::clk2_w)); - - m_bus->rx_callback().append(m_sio, FUNC(z80sio_device::rxa_w)); - m_bus->rx2_callback().append(m_sio, FUNC(z80sio_device::rxb_w)); - m_bus->add_to_daisy_chain(m_sio->tag()); } @@ -234,13 +229,16 @@ public: protected: // device-level overrides - virtual void device_reset() override; - virtual void device_resolve_objects() override; + virtual void device_reset() override ATTR_COLD; + virtual void device_resolve_objects() override ATTR_COLD; // base-class overrides void irq_w(int state) override { m_bus->int_w(state); } void tx_w(int state) override { m_bus->tx_w(state); } void tx2_w(int state) override { } + + virtual void card_clk_w(int state) override { m_sio->txca_w(state); m_sio->rxca_w(state); clk1_w(state); } + virtual void card_rx_w(int state) override { m_sio->rxa_w(state); } }; dual_serial_device_40pin::dual_serial_device_40pin(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) @@ -261,16 +259,12 @@ void dual_serial_device_40pin::device_reset() void dual_serial_device_40pin::device_resolve_objects() { - m_bus->clk_callback().append(m_sio, FUNC(z80sio_device::txca_w)); - m_bus->clk_callback().append(m_sio, FUNC(z80sio_device::rxca_w)); - m_bus->clk_callback().append(*this, FUNC(dual_serial_device_40pin::clk1_w)); - - m_bus->rx_callback().append(m_sio, FUNC(z80sio_device::rxa_w)); - m_bus->add_to_daisy_chain(m_sio->tag()); } -} +} // anonymous namespace + + //************************************************************************** // DEVICE DEFINITIONS //************************************************************************** |