summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Michaël Banaan Ananas <happppp@users.noreply.github.com>2011-01-21 18:17:22 +0000
committer Michaël Banaan Ananas <happppp@users.noreply.github.com>2011-01-21 18:17:22 +0000
commit638032fbeb4ee36d43b86bef7e4b52d2f33bcc1e (patch)
tree3edccc670bf223fcb1de130d0a737354dd243b7a
parent251c18f53801c30acff3fc350b695547e64adbff (diff)
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]
-rw-r--r--src/emu/cpu/i8085/i8085.c14
-rw-r--r--src/mame/drivers/n8080.c6
2 files changed, 10 insertions, 10 deletions
diff --git a/src/emu/cpu/i8085/i8085.c b/src/emu/cpu/i8085/i8085.c
index c02c31cbbad..27c4c1dc999 100644
--- a/src/emu/cpu/i8085/i8085.c
+++ b/src/emu/cpu/i8085/i8085.c
@@ -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;
diff --git a/src/mame/drivers/n8080.c b/src/mame/drivers/n8080.c
index 0eeca20d89d..a17b4aed50a 100644
--- a/src/mame/drivers/n8080.c
+++ b/src/mame/drivers/n8080.c
@@ -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 )