summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/tms1000/tms0270.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/tms1000/tms0270.cpp')
-rw-r--r--src/devices/cpu/tms1000/tms0270.cpp22
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
}