commit 5d36aeb8856fa17d491b0c8c18d6593a9ec4997a
parent f16ab6cb6dce3a64ead1d0f0bc99f3d034a005b2
Author: vin <git@vineetk.net>
Date: Sat, 29 Jun 2024 09:51:12 -0400
fix ADC bug where V is calculated with new A instead of old A
Diffstat:
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/cpu.c b/cpu.c
@@ -218,11 +218,12 @@ adc(uint8_t arg)
uint16_t sum; // 16-bit sum makes it easier to determine carry flag
sum = regs.a + arg + regs.status.carry;
- regs.a = sum & 0xFF;
regs.status.carry = sum > 0xFF;
/* overflow flag formula: https://stackoverflow.com/a/29224684 */
regs.status.overflow = (~(regs.a ^ arg) & (regs.a ^ sum) & 0x80) != 0;
+ regs.a = sum & 0xFF;
+
STATUS_UPDATE_ZERO(regs.a);
STATUS_UPDATE_NEGATIVE(regs.a);
}