Mercurial > repos > simple16
changeset 13:d8ae30286d17
Fix flag calculation and condition code tests
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 27 Mar 2016 21:08:42 -0700 |
parents | d4112095b93f |
children | 769120da2c1f |
files | src/cpu.c |
diffstat | 1 files changed, 4 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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