summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/.gitignore2
-rw-r--r--src/z80.c5
-rw-r--r--src/z80_decode.c4
3 files changed, 8 insertions, 3 deletions
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 0000000..ce59529
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,2 @@
+espec
+*.o
diff --git a/src/z80.c b/src/z80.c
index e4d68e5..deccb8c 100644
--- a/src/z80.c
+++ b/src/z80.c
@@ -49,6 +49,8 @@ static void InitTables()
static void Z80_CheckInterrupt(Z80 *cpu)
{
+ Z80Word vector;
+
/* Check interrupts
*/
if (cpu->raise)
@@ -95,7 +97,8 @@ static void Z80_CheckInterrupt(Z80 *cpu)
case 2:
PUSH(cpu->PC);
- cpu->PC=(Z80Word)cpu->I*256+cpu->devbyte;
+ vector=(Z80Word)cpu->I*256+cpu->devbyte;
+ cpu->PC=PEEKW(vector);
break;
}
}
diff --git a/src/z80_decode.c b/src/z80_decode.c
index 23408da..a508a9b 100644
--- a/src/z80_decode.c
+++ b/src/z80_decode.c
@@ -116,13 +116,13 @@ void Z80_InitialiseInternals(void)
}
}
-static Z80Word FPEEKW(Z80 *cpu, Z80Word addr)
+Z80Word FPEEKW(Z80 *cpu, Z80Word addr)
{
return (PEEK(addr) | (Z80Word)PEEK(addr+1)<<8);
}
-static void FPOKEW(Z80 *cpu, Z80Word addr, Z80Word val)
+void FPOKEW(Z80 *cpu, Z80Word addr, Z80Word val)
{
cpu->mwrite(cpu,addr,val);
cpu->mwrite(cpu,addr+1,val>>8);