From 04fd979e56fcfd5a2ff2840e04c4910ae76f4317 Mon Sep 17 00:00:00 2001 From: "Adrian.Conlon" Date: Thu, 6 Jul 2017 12:02:41 +0100 Subject: [PATCH] 6502: Better wrapping for the executing/executed events to avoid "fetchByte" issue. Signed-off-by: Adrian.Conlon --- M6502/src/mos6502.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/M6502/src/mos6502.cpp b/M6502/src/mos6502.cpp index 3614172..84105d8 100644 --- a/M6502/src/mos6502.cpp +++ b/M6502/src/mos6502.cpp @@ -25,7 +25,10 @@ void EightBit::MOS6502::initialise() { } int EightBit::MOS6502::step() { - return Execute(FetchByte()); + ExecutingInstruction.fire(*this); + auto returned = Execute(FetchByte()); + ExecutedInstruction.fire(*this); + return returned; } void EightBit::MOS6502::Reset() { @@ -56,12 +59,10 @@ void EightBit::MOS6502::Interrupt(uint16_t vector) { int EightBit::MOS6502::Execute(uint8_t cell) { cycles = 0; - ExecutingInstruction.fire(*this); const auto& instruction = instructions[cell]; const auto& method = instruction.vector; method(); cycles += instruction.count; - ExecutedInstruction.fire(*this); return cycles; }