summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/pps41/mm78op.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/pps41/mm78op.cpp')
-rw-r--r--src/devices/cpu/pps41/mm78op.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/devices/cpu/pps41/mm78op.cpp b/src/devices/cpu/pps41/mm78op.cpp
index 6b5ef774481..82ec94aa449 100644
--- a/src/devices/cpu/pps41/mm78op.cpp
+++ b/src/devices/cpu/pps41/mm78op.cpp
@@ -116,19 +116,23 @@ void mm78_device::op_tab()
void mm78_device::op_ix()
{
// IX: input to X from channel X(aka B)
- op_todo();
+ m_x = (m_read_r() & m_r_output) >> 4;
}
void mm78_device::op_ox()
{
// OX: output from X to channel X(aka B)
- op_todo();
+ m_r_output = (m_r_output & 0xf) | m_x << 4;
+ m_write_r(m_r_output);
}
void mm78_device::op_ioa()
{
// IOA: exchange A with channel A
- op_todo();
+ u8 a = m_read_r() & m_r_output & 0xf;
+ m_r_output = (m_r_output & ~0xf) | m_a;
+ m_write_r(m_r_output);
+ m_a = a;
}
void mm78_device::op_i1sk()