private void adjustResult(ref int result, bool carryOrBorrow, sbyte modifier) { int mod = 0x00; // low 4 bits if ((result & 0x0F) > 0x09 || carryOrBorrow) { mod |= 0x06; } // high 4 bits if (result > 0x99) { mod |= 0x60; _cpu.SR.Carry = true; } else { _cpu.SR.Carry = false; } result += mod * modifier; // recalculate flags on CMOS if (_cpu.Type == CPUType.CMOS) { _flags.SetNegativeAndZero(result); _cpu.SleepCycles++; } }