示例#1
0
        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++;
            }
        }