From 63e958e06922e55a82f6499f99a7a5e41e2427bb Mon Sep 17 00:00:00 2001 From: Adrian Conlon <98398945+AdrianConlon@users.noreply.github.com> Date: Thu, 11 Jan 2024 09:17:59 +0000 Subject: [PATCH] Make disassembly available from the checking code. --- M6502/HarteTest_6502/checker_t.cpp | 10 +++++++--- M6502/HarteTest_6502/checker_t.h | 4 +++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/M6502/HarteTest_6502/checker_t.cpp b/M6502/HarteTest_6502/checker_t.cpp index cf6870b..4acbf62 100644 --- a/M6502/HarteTest_6502/checker_t.cpp +++ b/M6502/HarteTest_6502/checker_t.cpp @@ -186,9 +186,13 @@ void checker_t::pushCurrentMessage() { os().str(""); } -void checker_t::disassemble(uint16_t address) { +std::string checker_t::disassemble(uint16_t address) { + return m_disassembler.disassemble(address); +} + +void checker_t::add_disassembly(uint16_t address) { try { - os() << m_disassembler.disassemble(address); + os() << disassemble(address); } catch (const std::domain_error& error) { os() << "Disassembly problem: " << error.what(); @@ -220,7 +224,7 @@ void checker_t::check(test_t test) { if (invalid() && implemented()) { - disassemble(pc); + add_disassembly(pc); const auto final = test.final(); raise("PC", final.pc(), cpu.PC().word); diff --git a/M6502/HarteTest_6502/checker_t.h b/M6502/HarteTest_6502/checker_t.h index ce53ad2..f46b5dd 100644 --- a/M6502/HarteTest_6502/checker_t.h +++ b/M6502/HarteTest_6502/checker_t.h @@ -56,7 +56,7 @@ private: void addActualReadCycle(EightBit::register16_t address, uint8_t value); void addActualWriteCycle(EightBit::register16_t address, uint8_t value); - void disassemble(uint16_t address); + void add_disassembly(uint16_t address); template void dumpCycle(const uint16_t address, const uint8_t value, const T action) { @@ -91,5 +91,7 @@ public: void initialise(); + [[nodiscard]] std::string disassemble(uint16_t address); + void check(test_t test); };