protected override void OnLastCycleLastM() { base.OnLastCycleLastM(); var value = _inputPart.Data.Value; Registers.Flags.S = Alu.IsNegative(value); Registers.Flags.Z = Alu.IsZero(value); Registers.Flags.H = false; Registers.Flags.PV = Alu.IsParityEven(value); Registers.Flags.N = false; if (IsIndirect) { Registers.A = value; } else { var reg = ExecutionEngine.Opcode.Definition.Register8FromY; if (reg != Register8Table.HL) { Registers[reg] = value; } } }
private void SetFlags(byte value) { Registers.Flags.S = Alu.IsNegative(value); Registers.Flags.Z = Alu.IsZero(value); Registers.Flags.H = false; Registers.Flags.PV = Registers.Interrupt.IFF2; Registers.Flags.N = false; }
protected virtual void MoveNext() { if (IsDecrement) { Registers.HL--; } else { Registers.HL++; } Registers.B--; Registers.Flags.Z = Alu.IsZero(Registers.B); Registers.Flags.N = true; }
protected override void MoveNext() { if (IsDecrement) { Registers.DE--; Registers.HL--; } else { Registers.DE++; Registers.HL++; } Registers.BC--; Registers.Flags.Z = Alu.IsZero(Registers.B) && Alu.IsZero(Registers.C); Registers.Flags.H = true; Registers.Flags.N = true; }