# HG changeset patch # User Michael Pavone # Date 1459138122 25200 # Node ID d8ae30286d177931048dd0de2f5fb08601608615 # Parent d4112095b93fd58f35662d4adb7919572dc44eeb Fix flag calculation and condition code tests diff -r d4112095b93f -r d8ae30286d17 src/cpu.c --- a/src/cpu.c Sun Mar 27 21:07:41 2016 -0700 +++ b/src/cpu.c Sun Mar 27 21:08:42 2016 -0700 @@ -145,10 +145,10 @@ if (!(result & 0xFFFF)) { context->regs[REG_SR] |= FLAG_Z; } - if (result &= 0x8000) { + if (result & 0x8000) { context->regs[REG_SR] |= FLAG_N; } - if (result &= 0x10000) { + if (result & 0x10000) { context->regs[REG_SR] |= FLAG_C; } } @@ -191,11 +191,11 @@ doit = context->regs[REG_SR] & FLAG_C; break; case COND_NCARRY: - doit = context->regs[REG_SR] & FLAG_C; + doit = !(context->regs[REG_SR] & FLAG_C); break; case COND_GREATER: //not zero and not carry - doit = !(context->regs[REG_SR] & FLAG_Z) || !(context->regs[REG_SR] & FLAG_C); + doit = !(context->regs[REG_SR] & FLAG_Z) && !(context->regs[REG_SR] & FLAG_C); break; case COND_LEQ: //zero or carry