summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/melps4/melps4op.inc
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/cpu/melps4/melps4op.inc')
-rw-r--r--src/emu/cpu/melps4/melps4op.inc25
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()