From fd6201c70344d8b2941246c4e6170669aac79847 Mon Sep 17 00:00:00 2001 From: brandman211 Date: Mon, 13 Aug 2012 03:47:08 +0000 Subject: [PATCH] Implemented what to do on an interrupt. This seems to be logical as it tries to execute a GSWD instruction, but it takes the interrupt too early because I haven't figured out when to turn INTRM on / off. --- BizHawk.Emulation/CPUs/CP1610/Execute.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/BizHawk.Emulation/CPUs/CP1610/Execute.cs b/BizHawk.Emulation/CPUs/CP1610/Execute.cs index 1cec8d79fe..445be5d444 100644 --- a/BizHawk.Emulation/CPUs/CP1610/Execute.cs +++ b/BizHawk.Emulation/CPUs/CP1610/Execute.cs @@ -114,6 +114,13 @@ namespace BizHawk.Emulation.CPUs.CP1610 log.WriteLine(Disassemble(RegisterPC, out addrToAdvance)); log.Flush(); } + if (FlagI && Interruptible && !IntRM) + { + IntRM = true; + Interruptible = false; + Indirect_Set(6, 7); + RegisterPC = INTERRUPT; + } byte dest, src, mem; ushort dest_value, src_value, mem_read, addr, addr_read, offset; int decle2, decle3, result = 0, ones, carry, status_word, lower, sign, cond, ext;