diff options
Diffstat (limited to 'src/devices/cpu/tms1000/tms0270.cpp')
-rw-r--r-- | src/devices/cpu/tms1000/tms0270.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/devices/cpu/tms1000/tms0270.cpp b/src/devices/cpu/tms1000/tms0270.cpp index 1b65a548f64..31df0a398bd 100644 --- a/src/devices/cpu/tms1000/tms0270.cpp +++ b/src/devices/cpu/tms1000/tms0270.cpp @@ -81,24 +81,26 @@ void tms0270_cpu_device::device_reset() void tms0270_cpu_device::dynamic_output() { // R11: TMS5100 CTL port direction (0=read from TMS5100, 1=write to TMS5100) - m_ctl_dir = m_r >> 11 & 1; + m_ctl_dir = BIT(m_r, 11); // R12: chip select (off=display via OPLA, on=TMS5100 via ACC/CKB) - m_chipsel = m_r >> 12 & 1; + m_chipsel = BIT(m_r, 12); if (m_chipsel) { // ACC via SEG G,B,C,D: TMS5100 CTL pins - if (m_ctl_dir && m_a != m_ctl_out) + u8 ctl_out = (m_ctl_dir) ? m_a : m_read_ctl() & 0xf; + if (m_ctl_out != ctl_out) { - m_ctl_out = m_a; - m_write_ctl(0, m_ctl_out, 0xff); + m_ctl_out = ctl_out; + m_write_ctl(m_ctl_out); } // R10 via SEG E: TMS5100 PDC pin - if (m_pdc != (m_r >> 10 & 1)) + int pdc = BIT(m_r, 10); + if (m_pdc != pdc) { - m_pdc = m_r >> 10 & 1; + m_pdc = pdc; m_write_pdc(m_pdc); } } @@ -115,7 +117,7 @@ void tms0270_cpu_device::dynamic_output() // standard R-output if (m_r != m_r_prev) { - m_write_r(0, m_r & m_r_mask, 0xffff); + m_write_r(m_r & m_r_mask); m_r_prev = m_r; } } @@ -124,10 +126,10 @@ u8 tms0270_cpu_device::read_k_input() { // external: TMS5100 CTL port via SEG G,B,C,D if (m_chipsel) - return (m_ctl_dir) ? m_ctl_out : m_read_ctl(0, 0xff) & 0xf; + return (m_ctl_dir) ? m_ctl_out : m_read_ctl() & 0xf; // standard K-input otherwise - u8 k = m_read_k(0, 0xff) & 0x1f; + u8 k = m_read_k() & 0x1f; return (k & 0x10) ? 0xf : k; // the TMS0270 KF line asserts all K-inputs } |