From 635ff624e75fc5e3a7ac7600284e0cedc59be7c5 Mon Sep 17 00:00:00 2001 From: Peter Evans Date: Mon, 30 Apr 2018 21:37:20 -0500 Subject: [PATCH] Refactor the DEC/X/Y tests a bit for clarity --- src/mos6502/arith.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/mos6502/arith.c b/src/mos6502/arith.c index ee40e3c..62df3b5 100644 --- a/src/mos6502/arith.c +++ b/src/mos6502/arith.c @@ -154,14 +154,15 @@ DEFINE_INST(cpy) */ DEFINE_INST(dec) { + oper--; + MOS_CHECK_NZ(oper); + if (cpu->addr_mode == ACC) { - MOS_CHECK_NZ(cpu->A - 1); - cpu->A--; + cpu->A = oper; return; } - MOS_CHECK_NZ(oper - 1); - mos6502_set(cpu, cpu->eff_addr, oper - 1); + mos6502_set(cpu, cpu->eff_addr, oper); } /* @@ -169,8 +170,9 @@ DEFINE_INST(dec) */ DEFINE_INST(dex) { - MOS_CHECK_NZ(cpu->X - 1); - cpu->X--; + oper--; + MOS_CHECK_NZ(oper); + cpu->X = oper; } /* @@ -178,8 +180,9 @@ DEFINE_INST(dex) */ DEFINE_INST(dey) { - MOS_CHECK_NZ(cpu->Y - 1); - cpu->Y--; + oper--; + MOS_CHECK_NZ(oper); + cpu->Y = oper; } /*