diff options
Diffstat (limited to 'cpu.c')
| -rw-r--r-- | cpu.c | 3 |
1 files changed, 2 insertions, 1 deletions
| @@ -218,11 +218,12 @@ adc(uint8_t arg) | |||
| 218 | uint16_t sum; // 16-bit sum makes it easier to determine carry flag | 218 | uint16_t sum; // 16-bit sum makes it easier to determine carry flag |
| 219 | 219 | ||
| 220 | sum = regs.a + arg + regs.status.carry; | 220 | sum = regs.a + arg + regs.status.carry; |
| 221 | regs.a = sum & 0xFF; | ||
| 222 | 221 | ||
| 223 | regs.status.carry = sum > 0xFF; | 222 | regs.status.carry = sum > 0xFF; |
| 224 | /* overflow flag formula: https://stackoverflow.com/a/29224684 */ | 223 | /* overflow flag formula: https://stackoverflow.com/a/29224684 */ |
| 225 | regs.status.overflow = (~(regs.a ^ arg) & (regs.a ^ sum) & 0x80) != 0; | 224 | regs.status.overflow = (~(regs.a ^ arg) & (regs.a ^ sum) & 0x80) != 0; |
| 225 | regs.a = sum & 0xFF; | ||
| 226 | |||
| 226 | STATUS_UPDATE_ZERO(regs.a); | 227 | STATUS_UPDATE_ZERO(regs.a); |
| 227 | STATUS_UPDATE_NEGATIVE(regs.a); | 228 | STATUS_UPDATE_NEGATIVE(regs.a); |
| 228 | } | 229 | } |
