private SimulationModel ExecuteTest(Register16Table reg, bool write) { var ob = OpcodeByte.New(x: 1, z: 3, q: (byte)(write ? 0: 1), p: (byte)reg); var cpuZ80 = new CpuZ80(); var buffer = write ? new byte[] { 0xED, ob.Value, AddressLo, AddressHi, 0, 0, 0 }: new byte[] { 0xED, ob.Value, AddressLo, AddressHi, 0, ExpectedLo, ExpectedHi }; var model = cpuZ80.Initialize(buffer); cpuZ80.FillRegisters(); if (write) { if (reg == Register16Table.SP) { cpuZ80.Registers.SP = Expected; } else { cpuZ80.Registers[reg] = Expected; } } model.ClockGen.SquareWave(20); Console.WriteLine(model.LogicAnalyzer.ToWaveJson()); return(model); }
private void AddIY16(Register16Table reg16) { if (reg16 == Register16Table.HL) { Registers.IY = Die.Alu.Add16(Registers.IY, Registers.IY); } else { Registers.IY = Die.Alu.Add16(Registers.IY, Registers[reg16]); } }
private void AddIX16(Register16Table reg16) { if (reg16 == Register16Table.HL) { Registers.IX = Cpu.Alu.Add16(Registers.IX, Registers.IX); } else { Registers.IX = Cpu.Alu.Add16(Registers.IX, Registers[reg16]); } }
public ushort this[Register16Table register] { get { switch (register) { case Register16Table.BC: return(BC); case Register16Table.DE: return(DE); case Register16Table.HL: return(HL); case Register16Table.SP: return(SP); } throw new ArgumentException(); } set { switch (register) { case Register16Table.BC: BC = value; break; case Register16Table.DE: DE = value; break; case Register16Table.HL: HL = value; break; case Register16Table.SP: SP = value; break; } } }
private static CpuZ80 ExecuteTest(Register16Table reg16, bool carry) { var ob = OpcodeByte.New(x: 1, z: 2, q: 0, p: (byte)reg16); var cpuZ80 = new CpuZ80(); byte[] buffer = new byte[] { 0xED, ob.Value }; var model = cpuZ80.Initialize(buffer); cpuZ80.Registers.Flags.C = carry; cpuZ80.FillRegisters(hl: Value); cpuZ80.Registers[reg16] = ValueToSub; model.ClockGen.SquareWave(15); Console.WriteLine(model.LogicAnalyzer.ToWaveJson()); return(cpuZ80); }
private void AddCarry16(Register16Table reg16) { Registers.HL = Die.Alu.Add16(Registers.HL, Registers[reg16], addCarry: true); }
private void Add16(Register16Table reg16) { Registers.HL = Die.Alu.Add16(Registers.HL, Registers[reg16]); }