diff options
author | Robbbert <Robbbert@users.noreply.github.com> | 2019-04-20 00:27:52 +1000 |
---|---|---|
committer | Robbbert <Robbbert@users.noreply.github.com> | 2019-04-20 00:27:52 +1000 |
commit | ad6f47d69323facd088a0d5956d4a84b779de319 (patch) | |
tree | c54ad87f7156edec7f6ddcf919dd81956b9021cc | |
parent | 2c4be3fab2f8630555172a24930d910625222abd (diff) |
(nw) datum: added rs232
-rw-r--r-- | src/mame/drivers/datum.cpp | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/mame/drivers/datum.cpp b/src/mame/drivers/datum.cpp index 6b957acd9a1..fc218695004 100644 --- a/src/mame/drivers/datum.cpp +++ b/src/mame/drivers/datum.cpp @@ -23,6 +23,9 @@ Memory Map: 6000-6003 = PIA1 for keyboard and display 7000-77FF = ROM +Note about the acia6850: The monitor sends it a master reset, then ignores it thereafter. + None of the pins are connected to anything - including the clocks. + It's up to the owner to write a TTY interface, and wire it up. Sample program to paste in: Pick-up-sticks (Nim) All inputs are in HEX. 1. Paste this in @@ -51,6 +54,7 @@ Z1000G #include "cpu/m6800/m6800.h" #include "machine/6821pia.h" #include "machine/6850acia.h" +#include "bus/rs232/rs232.h" #include "datum.lh" @@ -60,6 +64,8 @@ public: datum_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_pia1(*this, "pia1") + , m_pia2(*this, "pia2") + , m_acia(*this, "acia") , m_keyboard(*this, "X%u", 0) , m_maincpu(*this, "maincpu") , m_digits(*this, "digit%u", 0U) @@ -78,6 +84,8 @@ private: virtual void machine_reset() override; virtual void machine_start() override { m_digits.resolve(); } required_device<pia6821_device> m_pia1; + required_device<pia6821_device> m_pia2; + required_device<acia6850_device> m_acia; required_ioport_array<4> m_keyboard; required_device<cpu_device> m_maincpu; output_finder<16> m_digits; @@ -90,8 +98,8 @@ void datum_state::datum_mem(address_map &map) map.global_mask(0x7fff); // A15 not used map(0x0000, 0x007f).ram(); // inside CPU map(0x1000, 0x13ff).mirror(0x0c00).ram(); // main ram 2x 2114 - map(0x4000, 0x4001).mirror(0x0ffe).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); - map(0x5000, 0x5003).mirror(0x0ffc).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x4000, 0x4001).mirror(0x0ffe).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x5000, 0x5003).mirror(0x0ffc).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x6000, 0x6003).mirror(0x0ffc).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x7000, 0x77ff).mirror(0x0800).rom().region("roms", 0); } @@ -199,11 +207,16 @@ void datum_state::datum(machine_config &config) m_pia1->irqa_handler().set_inputline("maincpu", M6802_IRQ_LINE); m_pia1->irqb_handler().set_inputline("maincpu", M6802_IRQ_LINE); - pia6821_device &pia2(PIA6821(config, "pia2", 0)); // expansion - pia2.irqa_handler().set_inputline("maincpu", M6802_IRQ_LINE); - pia2.irqb_handler().set_inputline("maincpu", M6802_IRQ_LINE); + PIA6821(config, m_pia2, 0); // expansion + m_pia2->irqa_handler().set_inputline("maincpu", M6802_IRQ_LINE); + m_pia2->irqb_handler().set_inputline("maincpu", M6802_IRQ_LINE); - ACIA6850(config, "acia", 0); // rs232 + ACIA6850(config, m_acia, 0); // rs232 + m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_acia->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr)); + rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); + rs232.cts_handler().set(m_acia, FUNC(acia6850_device::write_cts)); } |