diff options
author | 2019-03-25 23:13:40 +0100 | |
---|---|---|
committer | 2019-03-25 23:13:40 +0100 | |
commit | b380514764cf857469bae61c11143a19f79a74c5 (patch) | |
tree | 63c8012e262618f08a332da31dd714281aa2c5ed /src/devices/machine/tms9902.cpp | |
parent | c24473ddff715ecec2e258a6eb38960cf8c8e98e (diff) |
Revert "conflict resolution (nw)"
This reverts commit c24473ddff715ecec2e258a6eb38960cf8c8e98e, reversing
changes made to 009cba4fb8102102168ef32870892438327f3705.
Diffstat (limited to 'src/devices/machine/tms9902.cpp')
-rw-r--r-- | src/devices/machine/tms9902.cpp | 127 |
1 files changed, 33 insertions, 94 deletions
diff --git a/src/devices/machine/tms9902.cpp b/src/devices/machine/tms9902.cpp index 813372f6f22..93e48cf03a2 100644 --- a/src/devices/machine/tms9902.cpp +++ b/src/devices/machine/tms9902.cpp @@ -478,109 +478,48 @@ void tms9902_device::initiate_transmit() bit 13-15: not emulated, normally used for diagnostics bit 16: RBINT (RBRL&RIENB) */ -uint8_t tms9902_device::cruread(offs_t offset) +READ8_MEMBER( tms9902_device::cruread ) { uint8_t answer = 0; - switch (offset & 31) - { - case 31: - answer = m_INT; - break; - - case 30: - answer = (m_LDCTRL || m_LDIR || m_LRDR || m_LXDR || m_BRKON); - break; - - case 29: - answer = m_DSCH; - break; - - case 28: - answer = m_CTSin; - break; - - case 27: - answer = m_DSRin; - break; - - case 26: - answer = m_RTSout; - break; - - case 25: - answer = m_TIMELP; - break; - - case 24: - answer = m_TIMERR; - break; - - case 23: - answer = m_XSRE; - break; - - case 22: - answer = m_XBRE; - break; + offset &= 0x0003; - case 21: - answer = m_RBRL; - break; - - case 20: - answer = (m_DSCH && m_DSCENB); - break; - - case 19: - answer = (m_TIMELP && m_TIMENB); - break; - - case 17: - answer = (m_XBRE && m_XBIENB); - break; - - case 16: - answer = (m_RBRL && m_RIENB); - break; - - case 15: - answer = m_RIN; - break; - - case 14: - answer = m_RSBD; - break; - - case 13: - answer = m_RFBD; - break; - - case 12: - answer = m_RFER; - break; - - case 11: - answer = m_ROVER; + switch (offset) + { + case 3: // Bits 31-24 + if (m_INT) answer |= 0x80; + if (m_LDCTRL || m_LDIR || m_LRDR || m_LXDR || m_BRKON) answer |= 0x40; + if (m_DSCH) answer |= 0x20; + if (m_CTSin) answer |= 0x10; + if (m_DSRin) answer |= 0x08; + if (m_RTSout) answer |= 0x04; + if (m_TIMELP) answer |= 0x02; + if (m_TIMERR) answer |= 0x01; break; - case 10: - answer = m_RPER; + case 2: // Bits 23-16 + if (m_XSRE) answer |= 0x80; + if (m_XBRE) answer |= 0x40; + if (m_RBRL) answer |= 0x20; + if (m_DSCH && m_DSCENB) answer |= 0x10; + if (m_TIMELP && m_TIMENB) answer |= 0x08; + if (m_XBRE && m_XBIENB) answer |= 0x02; + if (m_RBRL && m_RIENB) answer |= 0x01; break; - case 9: - answer = (m_RPER || m_RFER || m_ROVER); + case 1: // Bits 15-8 + if (m_RIN) answer |= 0x80; + if (m_RSBD) answer |= 0x40; + if (m_RFBD) answer |= 0x20; + if (m_RFER) answer |= 0x10; + if (m_ROVER) answer |= 0x08; + if (m_RPER) answer |= 0x04; + if (m_RPER || m_RFER || m_ROVER) answer |= 0x02; break; - case 7: - case 6: - case 5: - case 4: - case 3: - case 2: - case 1: - case 0: - answer = BIT(m_RBR, offset & 31); + case 0: // Bits 7-0 + LOGCRU("Reading received byte = %02x\n", m_RBR); + answer = m_RBR; break; } if (VERBOSE & LOG_DETAIL) LOGCRU("Reading flag bits %d - %d = %02x\n", ((offset+1)*8-1), offset*8, answer); @@ -658,7 +597,7 @@ void tms9902_device::reset_uart() /* TMS9902 CRU write */ -void tms9902_device::cruwrite(offs_t offset, uint8_t data) +WRITE8_MEMBER( tms9902_device::cruwrite ) { data &= 1; /* clear extra bits */ |