From 6d6046757d162d6b59cf268430b9e3c69c87c7fb Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 22 Apr 2019 15:41:09 -0400 Subject: [PATCH] Fixes predecrementing MOVEM to leave the proper address in the relevant register. --- OSBindings/Mac/Clock SignalTests/QLTests.mm | 5 +++++ Processors/68000/Implementation/68000Implementation.hpp | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/OSBindings/Mac/Clock SignalTests/QLTests.mm b/OSBindings/Mac/Clock SignalTests/QLTests.mm index 3f278b645..779677325 100644 --- a/OSBindings/Mac/Clock SignalTests/QLTests.mm +++ b/OSBindings/Mac/Clock SignalTests/QLTests.mm @@ -11,6 +11,9 @@ #include #include +#include +#include + #include "68000.hpp" #include "CSROMFetcher.hpp" @@ -107,6 +110,8 @@ class QL: public CPU::MC68000::BusHandler { std::unique_ptr _machine; } +std::streambuf *coutbuf; + - (void)setUp { const auto roms = CSROMFetcher()("SinclairQL", {"js.rom"}); _machine.reset(new QL(*roms[0])); diff --git a/Processors/68000/Implementation/68000Implementation.hpp b/Processors/68000/Implementation/68000Implementation.hpp index 8455b7999..6cfa2b656 100644 --- a/Processors/68000/Implementation/68000Implementation.hpp +++ b/Processors/68000/Implementation/68000Implementation.hpp @@ -52,7 +52,7 @@ template void Processor: // no instruction was ongoing. Either way, do a standard instruction operation. // TODO: unless an interrupt is pending, or the trap flag is set. - static bool should_log = false; +// static bool should_log = false; // should_log |= program_counter_.full >= 0x4F54 && program_counter_.full <= 0x4F84; // if(should_log) { @@ -654,7 +654,7 @@ template void Processor: offset = 15; start_address -= 2; write_address_sequence_long(dec_action, 2); - movem_final_address_ = start_address; + movem_final_address_ = start_address + 2; } else { write_address_sequence_long(inc_action, 0); }