Beispiel #1
0
 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());
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
            }
        }