diff options
Diffstat (limited to 'src/emu/cpu/melps4/melps4op.inc')
-rw-r--r-- | src/emu/cpu/melps4/melps4op.inc | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/emu/cpu/melps4/melps4op.inc b/src/emu/cpu/melps4/melps4op.inc index 6640156b16b..1ac63b0f2a2 100644 --- a/src/emu/cpu/melps4/melps4op.inc +++ b/src/emu/cpu/melps4/melps4op.inc @@ -64,6 +64,13 @@ void melps4_cpu_device::op_teab() m_e = m_b << 4 | m_a; } +void melps4_cpu_device::op_tabe() +{ + // TABE(undocumented): transfer E to A and B + m_b = m_e >> 4; + m_a = m_e & 0xf; +} + void melps4_cpu_device::op_tepa() { // TEPA: decode A by PLA and transfer to E @@ -247,6 +254,22 @@ void melps4_cpu_device::op_cma() m_a ^= 0xf; } +void melps4_cpu_device::op_rl() +{ + // RL(undocumented): rotate A left through carry + UINT8 c = m_a >> 3 & 1; + m_a = (m_a << 1 | m_cy) & 0xf; + m_cy = c; +} + +void melps4_cpu_device::op_rr() +{ + // RR(undocumented): rotate A right through carry + UINT8 c = m_a & 1; + m_a = m_a >> 1 | m_cy << 3; + m_cy = c; +} + // Bit operations @@ -395,7 +418,7 @@ void melps4_cpu_device::op_trab() void melps4_cpu_device::op_t2ab() { // T2AB: transfer A and B to timer 2 and timer 2 reload - op_illegal(); + //op_illegal(); } void melps4_cpu_device::op_tab1() |