From 56a57ae9e1873fd98e10d73631fe1880a023c375 Mon Sep 17 00:00:00 2001 From: Ian C Date: Sun, 22 Mar 2026 13:23:12 +0000 Subject: Fixed IM3 --- src/.gitignore | 2 ++ src/z80.c | 5 ++++- src/z80_decode.c | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 src/.gitignore 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); -- cgit v1.2.3