public void StackPush(SixteenBitRegister register) { //Logger.AppendLog(Logger.LOG_LEVEL.LOG_LEVEL_ERROR, "PUSH [" + String.Format("{0:X4}", reg_sp) + "]: " + register.GetUpperByte()); Program.emulator.GetMemory().WriteToMemory(--reg_sp, register.GetUpperByte()); //Logger.AppendLog(Logger.LOG_LEVEL.LOG_LEVEL_ERROR, "PUSH [" + String.Format("{0:X4}", reg_sp) + "]: " + register.GetLowerByte()); Program.emulator.GetMemory().WriteToMemory(--reg_sp, register.GetLowerByte()); }
public void StackPop(ref SixteenBitRegister register) { Byte lo = Program.emulator.GetMemory().ReadFromMemory(reg_sp++); Byte hi = Program.emulator.GetMemory().ReadFromMemory(reg_sp++); register.SetLowerByte(lo); register.SetUpperByte(hi); }
public void Reset(bool BiosLoaded = false) { reg_sp = 0x0000; reg_pc = 0x0000; reg_af = new SixteenBitRegister(0x00, 0x00); reg_bc = new SixteenBitRegister(0x00, 0x00); reg_de = new SixteenBitRegister(0x00, 0x00); reg_hl = new SixteenBitRegister(0x00, 0x00); if (!BiosLoaded) { // This values should load during BIOS init, however we skip bios loading, so we need to load them manually reg_sp = 0xFFFE; reg_pc = 0x0100; reg_af = new SixteenBitRegister(0x01, 0xB0); reg_bc = new SixteenBitRegister(0x00, 0x13); reg_de = new SixteenBitRegister(0x00, 0xD8); reg_hl = new SixteenBitRegister(0x01, 0x4D); } }