From 1eca4463b3f4506ba2eb067fde43685503773e9c Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Tue, 14 Aug 2018 19:33:48 -0400 Subject: [PATCH] Ensures NMI can no longer usurp BRK on 65C02s. --- Processors/6502/Implementation/6502Implementation.hpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Processors/6502/Implementation/6502Implementation.hpp b/Processors/6502/Implementation/6502Implementation.hpp index 3c6478289..ac1f74af7 100644 --- a/Processors/6502/Implementation/6502Implementation.hpp +++ b/Processors/6502/Implementation/6502Implementation.hpp @@ -140,9 +140,13 @@ if(number_of_cycles <= Cycles(0)) break; case CycleReadFromPC: throwaway_read(pc_.full); break; case OperationBRKPickVector: - // NMI can usurp BRK-vector operations - nextAddress.full = (interrupt_requests_ & InterruptRequestFlags::NMI) ? 0xfffa : 0xfffe; - interrupt_requests_ &= ~InterruptRequestFlags::NMI; // TODO: this probably doesn't happen now? + if(is_65c02(personality)) { + nextAddress.full = 0xfffe; + } else { + // NMI can usurp BRK-vector operations on the pre-C 6502s. + nextAddress.full = (interrupt_requests_ & InterruptRequestFlags::NMI) ? 0xfffa : 0xfffe; + interrupt_requests_ &= ~InterruptRequestFlags::NMI; + } continue; case OperationNMIPickVector: nextAddress.full = 0xfffa; continue; case OperationRSTPickVector: nextAddress.full = 0xfffc; continue;