mirror of
https://github.com/holub/mame
synced 2025-05-17 11:15:06 +03:00
i8085.c: Fixed inte callback not being called when the IE flag was cleared after the CPU received an interrupt. This fixes interrupts in n8080.c helifire and spacelnc. [Qwi Jibo]
This commit is contained in:
parent
251c18f538
commit
638032fbeb
@ -404,7 +404,7 @@ static void check_for_interrupts(i8085_state *cpustate)
|
||||
|
||||
/* push the PC and jump to $0024 */
|
||||
M_PUSH(PC);
|
||||
cpustate->IM &= ~IM_IE;
|
||||
set_inte(cpustate, 0);
|
||||
cpustate->PC.w.l = ADDR_TRAP;
|
||||
cpustate->icount -= 11;
|
||||
}
|
||||
@ -422,7 +422,7 @@ static void check_for_interrupts(i8085_state *cpustate)
|
||||
|
||||
/* push the PC and jump to $003C */
|
||||
M_PUSH(PC);
|
||||
cpustate->IM &= ~IM_IE;
|
||||
set_inte(cpustate, 0);
|
||||
cpustate->PC.w.l = ADDR_RST75;
|
||||
cpustate->icount -= 11;
|
||||
}
|
||||
@ -437,7 +437,7 @@ static void check_for_interrupts(i8085_state *cpustate)
|
||||
|
||||
/* push the PC and jump to $0034 */
|
||||
M_PUSH(PC);
|
||||
cpustate->IM &= ~IM_IE;
|
||||
set_inte(cpustate, 0);
|
||||
cpustate->PC.w.l = ADDR_RST65;
|
||||
cpustate->icount -= 11;
|
||||
}
|
||||
@ -452,7 +452,7 @@ static void check_for_interrupts(i8085_state *cpustate)
|
||||
|
||||
/* push the PC and jump to $002C */
|
||||
M_PUSH(PC);
|
||||
cpustate->IM &= ~IM_IE;
|
||||
set_inte(cpustate, 0);
|
||||
cpustate->PC.w.l = ADDR_RST55;
|
||||
cpustate->icount -= 11;
|
||||
}
|
||||
@ -468,7 +468,7 @@ static void check_for_interrupts(i8085_state *cpustate)
|
||||
vector = (*cpustate->irq_callback)(cpustate->device, I8085_INTR_LINE);
|
||||
|
||||
/* use the resulting vector as an opcode to execute */
|
||||
cpustate->IM &= ~IM_IE;
|
||||
set_inte(cpustate, 0);
|
||||
switch (vector & 0xff0000)
|
||||
{
|
||||
case 0xcd0000: /* CALL nnnn */
|
||||
|
@ -917,8 +917,8 @@ GAME( 1979, spacefevo2, spacefev, spacefev, spacefev, 0, ROT270, "Nintendo", "Sp
|
||||
GAME( 1979, highsplt, 0, spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 1)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1979, highsplta, highsplt, spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (set 2)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1979, highspltb, highsplt, spacefev, highsplt, 0, ROT270, "Nintendo", "Space Fever High Splitter (alt Sound)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1979, spacelnc, 0, spacefev, spacelnc, 0, ROT270, "Nintendo", "Space Launcher", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1979, spacelnc, 0, spacefev, spacelnc, 0, ROT270, "Nintendo", "Space Launcher", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1979, sheriff, 0, sheriff, sheriff, 0, ROT270, "Nintendo", "Sheriff", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, bandido, sheriff, sheriff, bandido, 0, ROT270, "Nintendo (Exidy license)", "Bandido", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, helifire, 0, helifire, helifire, 0, ROT270, "Nintendo", "HeliFire (set 1)", GAME_NOT_WORKING | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, helifirea, helifire, helifire, helifire, 0, ROT270, "Nintendo", "HeliFire (set 2)", GAME_NOT_WORKING | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, helifire, 0, helifire, helifire, 0, ROT270, "Nintendo", "HeliFire (set 1)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
|
||||
GAME( 1980, helifirea, helifire, helifire, helifire, 0, ROT270, "Nintendo", "HeliFire (set 2)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
|
||||
|
Loading…
Reference in New Issue
Block a user