test_cpu_simple - Add test for HALT with IME=1
This commit is contained in:
parent
ed202b107e
commit
1cd7d0c2f2
1 changed files with 41 additions and 0 deletions
|
@ -249,3 +249,44 @@ TEST_CASE("DAA")
|
||||||
|
|
||||||
CHECK(cpu.state.A == 0x45);
|
CHECK(cpu.state.A == 0x45);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("HALT exits on interrupt")
|
||||||
|
{
|
||||||
|
u8 test_ram[] = {
|
||||||
|
0x76,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
};
|
||||||
|
|
||||||
|
RAM r(test_ram, 0x3, true);
|
||||||
|
Cpu cpu(&r);
|
||||||
|
|
||||||
|
cpu.state.IE = INT_MASK;
|
||||||
|
cpu.state.IF = 0;
|
||||||
|
cpu.state.IME = IME_ON;
|
||||||
|
|
||||||
|
CHECK(cpu.state.halted == false);
|
||||||
|
|
||||||
|
cpu.step();
|
||||||
|
CHECK(cpu.state.halted == true);
|
||||||
|
CHECK(cpu.state.PC == 0x01);
|
||||||
|
|
||||||
|
cpu.step();
|
||||||
|
CHECK(cpu.state.halted == true);
|
||||||
|
CHECK(cpu.state.PC == 0x01);
|
||||||
|
|
||||||
|
cpu.step();
|
||||||
|
CHECK(cpu.state.halted == true);
|
||||||
|
CHECK(cpu.state.PC == 0x01);
|
||||||
|
|
||||||
|
cpu.signalInterrupt(INT_LCDSTAT);
|
||||||
|
|
||||||
|
CHECK(cpu.state.IF == INT_LCDSTAT);
|
||||||
|
|
||||||
|
cpu.step();
|
||||||
|
|
||||||
|
CHECK(cpu.state.halted == false);
|
||||||
|
CHECK(cpu.state.IF == 0);
|
||||||
|
CHECK(cpu.state.IME == IME_OFF);
|
||||||
|
CHECK(cpu.state.PC == 0x48);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue