From 18a7251918f651ddd0e4a10efc40ec77fbeef03f Mon Sep 17 00:00:00 2001 From: hap Date: Sat, 2 Apr 2016 16:54:39 +0200 Subject: [PATCH] sm510: ADX don't carry if adding 10(probably for bcd correction) --- src/devices/cpu/sm510/sm510op.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/devices/cpu/sm510/sm510op.cpp b/src/devices/cpu/sm510/sm510op.cpp index 05ba90522e4..2057bf23ecb 100644 --- a/src/devices/cpu/sm510/sm510op.cpp +++ b/src/devices/cpu/sm510/sm510op.cpp @@ -68,8 +68,8 @@ void sm510_base_device::op_lb() switch (m_bl) { case 0: hi = 0; break; - case 1: hi = 0; break; - case 2: hi = 0; break; + case 1: hi = 3; break; + case 2: hi = 3; break; case 3: hi = 3; break; } m_bl |= (hi << 2 & 0xc); @@ -290,9 +290,9 @@ void sm510_base_device::op_add11() void sm510_base_device::op_adx() { - // ADX x: add immediate value to ACC, skip next on carry + // ADX x: add immediate value to ACC, skip next on carry except if x = 10 m_acc += (m_op & 0xf); - m_skip = ((m_acc & 0x10) != 0); + m_skip = ((m_op & 0xf) != 10 && (m_acc & 0x10) != 0); m_acc &= 0xf; }