mirror of
https://github.com/holub/mame
synced 2025-05-15 18:32:02 +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 */
|
||||
@ -1258,7 +1258,7 @@ CPU_GET_INFO( i8080 )
|
||||
case CPUINFO_INT_INPUT_LINES: info->i = 1; break;
|
||||
|
||||
/* --- the following bits of info are returned as pointers to functions --- */
|
||||
case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(i8080); break;
|
||||
case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(i8080); break;
|
||||
|
||||
/* --- the following bits of info are returned as NULL-terminated strings --- */
|
||||
case DEVINFO_STR_NAME: strcpy(info->s, "8080"); break;
|
||||
@ -1282,7 +1282,7 @@ CPU_GET_INFO( i8080a )
|
||||
case CPUINFO_INT_INPUT_LINES: info->i = 1; break;
|
||||
|
||||
/* --- the following bits of info are returned as pointers to functions --- */
|
||||
case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(i8080); break;
|
||||
case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(i8080); break;
|
||||
|
||||
/* --- the following bits of info are returned as NULL-terminated strings --- */
|
||||
case DEVINFO_STR_NAME: strcpy(info->s, "8080A"); break;
|
||||
|
@ -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