summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
author MetalliC <0vetal0@gmail.com>2019-11-09 07:52:57 +0200
committer MetalliC <0vetal0@gmail.com>2019-11-09 07:52:57 +0200
commit873a307e8478bbc68fc43fe6fae25c358c6147b5 (patch)
treee61bc6820e50027d1d75121180a85c176f28e03d /src/mame
parent61c32ea23712de3cdc4f9569c18cb43fbdf25a12 (diff)
315-5649: fix prev (nw)
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/machine/315_5649.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/mame/machine/315_5649.cpp b/src/mame/machine/315_5649.cpp
index 54381739954..ef039b08e71 100644
--- a/src/mame/machine/315_5649.cpp
+++ b/src/mame/machine/315_5649.cpp
@@ -121,12 +121,22 @@ READ8_MEMBER( sega_315_5649_device::read )
data = m_port_value[offset];
break;
- // serial channel 1/2 input
+ // RS-422 channel 1/2 input
case 0x0b: data = m_serial_rd_cb[0](0); break;
case 0x0c: data = m_serial_rd_cb[1](0); break;
- // serial status
- case 0x0d: data = 0; break; // not implemented
+ // RS-422 status
+ // 7--- ---- RX2IE
+ // -6-- ---- RX1IE some I-error ?
+ // --5- ---- RX2FE
+ // ---4 ---- RX1FE framing error ?
+ // ---- 3--- RX2BF
+ // ---- -2-- RX1BF 1 = receive buffer full
+ // ---- --1- TX2BF
+ // ---- ---0 TX1BF 1 = transmit buffer full
+ case 0x0d:
+ data = 0x0c; // HACK, recv buffers always full, transmit buffers always empty
+ break;
// analog input, auto-increments
case 0x0f:
@@ -162,11 +172,16 @@ WRITE8_MEMBER( sega_315_5649_device::write )
// port direction register (0 = output, 1 = input)
case 0x08: m_port_config = data; break;
- // serial channel 1/2 output
+ // RS-422 channel 1/2 output
case 0x09: m_serial_wr_cb[0](data); break;
case 0x0a: m_serial_wr_cb[1](data); break;
// mode register
+ // 7--- ---- port G counter mode
+ // -6-- ---- ?
+ // --5- ---- RS-422 satellite mode
+ // ---4 ---- RS-422 loopback
+ // ---- 3210 RS-422 satellite N#
case 0x0e:
m_mode = data;
break;