summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2020-01-13 10:27:36 -0500
committer AJR <ajrhacker@users.noreply.github.com>2020-01-13 10:27:36 -0500
commit793974df40a583b5645625adb43cefd3722c29b1 (patch)
treeb15f0fc4b962a04a93edd7adf2cfd6a8a2e5e8f8
parentf6125af6dbf43ce9251b4b2ebf521a5effda6ca6 (diff)
pace: Fix carry flag calculation (nw)
-rw-r--r--src/devices/cpu/pace/pace.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/devices/cpu/pace/pace.cpp b/src/devices/cpu/pace/pace.cpp
index 73d6edfb6c9..b267f5211a4 100644
--- a/src/devices/cpu/pace/pace.cpp
+++ b/src/devices/cpu/pace/pace.cpp
@@ -367,11 +367,11 @@ void pace_device::sign_extend(u16 &r)
void pace_device::add(u16 &dr, u16 sr, bool c)
{
- bool carry_out = sign_bit((u32(dr) + u32(sr) + (c && BIT(m_fr, 7) ? 1 : 0)) >> (BIT(m_fr, 10) ? 1 : 9));
+ u32 carry_test = (BIT(m_fr, 10) ? u32(dr & 0x00ff) + u32(sr & 0x00ff) : u32(dr) + u32(sr)) + (c && BIT(m_fr, 7) ? 1 : 0);
s32 overflow_test = BIT(m_fr, 10) ? s32(s8(dr & 0x00ff)) + s32(s8(sr & 0x00ff)) : s32(s16(dr)) + s32(s16(sr));
dr += sr + (c && BIT(m_fr, 7) ? 1 : 0);
- if (carry_out)
+ if (BIT(m_fr, 10) ? BIT(carry_test, 8) : BIT(carry_test, 16))
set_control_flag(7);
else
reset_control_flag(7);