mirror of
https://github.com/holub/mame
synced 2025-06-07 05:13:46 +03:00
(nw) datum: added rs232
This commit is contained in:
parent
2c4be3fab2
commit
ad6f47d693
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user