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); };