summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2017-11-14 21:28:07 +0100
committer mooglyguy <therealmogminer@gmail.com>2017-11-14 21:28:21 +0100
commit6387bfd6b070ba5ed44da698d695e50260ff620d (patch)
treeb4c86931eb6defcbc5df9ba2241676e36a859a33
parent56e8f3bd0a001e44dd2935a34b666056b1312241 (diff)
e132xs, fixed ldxx2 local,local case
-rw-r--r--src/devices/cpu/e132xs/e132xsop.hxx18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/devices/cpu/e132xs/e132xsop.hxx b/src/devices/cpu/e132xs/e132xsop.hxx
index 827a0e1a7b1..5a8325ee371 100644
--- a/src/devices/cpu/e132xs/e132xsop.hxx
+++ b/src/devices/cpu/e132xs/e132xsop.hxx
@@ -3131,12 +3131,14 @@ void hyperstone_device::hyperstone_ldxx2_local_local()
{
case 0: // LDBS.N
m_local_regs[src_code] = (int32_t)(int8_t)READ_B(dreg);
- m_local_regs[dst_code] += extra_s;
+ if(src_code != dst_code)
+ m_local_regs[dst_code] += extra_s;
break;
case 1: // LDBU.N
m_local_regs[src_code] = READ_B(dreg);
- m_local_regs[dst_code] += extra_s;
+ if(src_code != dst_code)
+ m_local_regs[dst_code] += extra_s;
break;
case 2:
@@ -3144,7 +3146,8 @@ void hyperstone_device::hyperstone_ldxx2_local_local()
m_local_regs[src_code] = (int32_t)(int16_t)READ_HW(dreg);
else // LDHU.N
m_local_regs[src_code] = READ_HW(dreg);
- m_local_regs[dst_code] += extra_s & ~1;
+ if(src_code != dst_code)
+ m_local_regs[dst_code] += extra_s & ~1;
break;
case 3:
@@ -3152,12 +3155,14 @@ void hyperstone_device::hyperstone_ldxx2_local_local()
{
case 0: // LDW.N
m_local_regs[src_code] = READ_W(dreg);
- m_local_regs[dst_code] += extra_s & ~1;
+ if(src_code != dst_code)
+ m_local_regs[dst_code] += extra_s & ~1;
break;
case 1: // LDD.N
m_local_regs[src_code] = READ_W(dreg);
m_local_regs[srcf_code] = READ_W(dreg + 4);
- m_local_regs[dst_code] += extra_s & ~1;
+ if(src_code != dst_code)
+ m_local_regs[dst_code] += extra_s & ~1;
m_icount -= m_clock_cycles_1; // extra cycle
break;
case 2: // Reserved
@@ -3168,7 +3173,8 @@ void hyperstone_device::hyperstone_ldxx2_local_local()
m_local_regs[src_code] = READ_W(dreg);
else
m_local_regs[src_code] = m_local_regs[(dreg & 0xfc) >> 2];
- m_local_regs[dst_code] += extra_s & ~3;
+ if(src_code != dst_code)
+ m_local_regs[dst_code] += extra_s & ~3;
m_icount -= m_clock_cycles_2; // extra cycles
break;
}