From 1a65f50ba0fe4b7ad361f6e5c33fe82b1aee3459 Mon Sep 17 00:00:00 2001 From: transistor Date: Sun, 18 Sep 2022 16:28:14 -0700 Subject: [PATCH] Added hack to return instructions to correctly adjust PC --- src/cpus/m68k/execute.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/cpus/m68k/execute.rs b/src/cpus/m68k/execute.rs index d2a0582..c0ff82f 100644 --- a/src/cpus/m68k/execute.rs +++ b/src/cpus/m68k/execute.rs @@ -801,18 +801,27 @@ impl M68k { } self.set_sr(sr); - self.set_pc(addr)?; + if let Err(err) = self.set_pc(addr) { + self.state.pc -= 2; + return Err(err); + } }, Instruction::RTR => { let ccr = self.pop_word()?; let addr = self.pop_long()?; self.set_sr((self.state.sr & 0xFF00) | (ccr & 0x00FF)); - self.set_pc(addr)?; + if let Err(err) = self.set_pc(addr) { + self.state.pc -= 2; + return Err(err); + } }, Instruction::RTS => { self.debugger.stack_tracer.pop_return(); let addr = self.pop_long()?; - self.set_pc(addr)?; + if let Err(err) = self.set_pc(addr) { + self.state.pc -= 2; + return Err(err); + } }, //Instruction::RTD(i16) => { //},