diff --git a/M6502/HarteTest_6502/TestRunner.cpp b/M6502/HarteTest_6502/TestRunner.cpp index 9ee733f..8b9cda6 100644 --- a/M6502/HarteTest_6502/TestRunner.cpp +++ b/M6502/HarteTest_6502/TestRunner.cpp @@ -4,7 +4,7 @@ std::set TestRunner::m_undocumented_opcodes; bool TestRunner::m_undocumented_opcodes_initialised = false; -TestRunner::TestRunner(const test_t& test) +TestRunner::TestRunner(const test_t test) : m_test(test) {} EightBit::MemoryMapping TestRunner::mapping(uint16_t address) noexcept { @@ -122,7 +122,7 @@ bool TestRunner::check(std::string what, uint16_t address, uint8_t expected, uin void TestRunner::initialiseState() { - const auto& starting = test().initial_state(); + const auto starting = test().initial_state(); CPU().PC().word = starting.pc(); CPU().S() = starting.s(); @@ -130,8 +130,7 @@ void TestRunner::initialiseState() { CPU().X() = starting.x(); CPU().Y() = starting.y(); CPU().P() = starting.p(); - const auto& ram = starting.ram(); - for (auto entry : ram) { + for (auto entry : starting.ram()) { const byte_t byte(entry); RAM().poke(byte.address(), byte.value()); } @@ -139,7 +138,7 @@ void TestRunner::initialiseState() { bool TestRunner::checkState() { - const auto& finished = test().final_state(); + const auto finished = test().final_state(); const auto& expected_cycles = test().cycles(); const auto& actual_cycles = m_actualCycles; @@ -162,9 +161,8 @@ bool TestRunner::checkState() { const auto y_good = check("Y", finished.y(), CPU().Y()); const auto p_good = check("P", finished.p(), CPU().P()); - const auto& ram = finished.ram(); bool ram_problem = false; - for (auto entry : ram) { + for (const auto entry : finished.ram()) { const byte_t byte(entry); const auto ram_good = check("RAM", byte.address(), byte.value(), RAM().peek(byte.address())); if (!ram_good && !ram_problem) @@ -193,7 +191,7 @@ void TestRunner::check() { initialise(); raisePOWER(); initialiseState(); - const auto pc = CPU().PC(); + const auto pc = CPU().PC().word; const auto start_opcode = peek(pc); m_cycles = CPU().step(); lowerPOWER(); @@ -213,7 +211,7 @@ void TestRunner::check() { if (invalid() && implemented()) { - disassemble(pc.word); + disassemble(pc); raise("PC", test().final_state().pc(), CPU().PC().word); raise("S", test().final_state().s(), CPU().S()); diff --git a/M6502/HarteTest_6502/TestRunner.h b/M6502/HarteTest_6502/TestRunner.h index 5809932..9cb6dc7 100644 --- a/M6502/HarteTest_6502/TestRunner.h +++ b/M6502/HarteTest_6502/TestRunner.h @@ -24,7 +24,7 @@ private: EightBit::Symbols m_symbols; EightBit::Disassembly m_disassembler = { *this, m_cpu, m_symbols }; - const test_t& m_test; + const test_t m_test; std::ostringstream m_os; std::vector m_messages; @@ -75,7 +75,7 @@ protected: virtual EightBit::MemoryMapping mapping(uint16_t address) noexcept final; public: - TestRunner(const test_t& test); + TestRunner(test_t test); virtual void raisePOWER() final; virtual void lowerPOWER() final; @@ -84,7 +84,7 @@ public: [[nodiscard]] constexpr auto& RAM() noexcept { return m_ram; } [[nodiscard]] constexpr auto& CPU() noexcept { return m_cpu; } - [[nodiscard]] constexpr const auto& test() const noexcept { return m_test; } + [[nodiscard]] auto test() const noexcept { return m_test; } [[nodiscard]] constexpr const auto& messages() const noexcept { return m_messages; } [[nodiscard]] constexpr auto cycles() const noexcept { return m_cycles; } diff --git a/M6502/HarteTest_6502/ram_t.cpp b/M6502/HarteTest_6502/ram_t.cpp index e223e87..4bb22fa 100644 --- a/M6502/HarteTest_6502/ram_t.cpp +++ b/M6502/HarteTest_6502/ram_t.cpp @@ -1,5 +1,5 @@ #include "stdafx.h" #include "ram_t.h" -ram_t::ram_t(simdjson::dom::array input) +ram_t::ram_t(simdjson::dom::array input) noexcept : m_raw(input) {} diff --git a/M6502/HarteTest_6502/ram_t.h b/M6502/HarteTest_6502/ram_t.h index ec37480..43b0008 100644 --- a/M6502/HarteTest_6502/ram_t.h +++ b/M6502/HarteTest_6502/ram_t.h @@ -9,7 +9,7 @@ private: simdjson::dom::array m_raw;; public: - ram_t(simdjson::dom::array input); + ram_t(simdjson::dom::array input) noexcept; [[nodiscard]] auto begin() const noexcept { return m_raw.begin(); } [[nodiscard]] auto end() const noexcept { return m_raw.end(); } diff --git a/M6502/HarteTest_6502/state_t.cpp b/M6502/HarteTest_6502/state_t.cpp index 65ffe28..289193f 100644 --- a/M6502/HarteTest_6502/state_t.cpp +++ b/M6502/HarteTest_6502/state_t.cpp @@ -1,5 +1,5 @@ #include "stdafx.h" #include "state_t.h" -state_t::state_t(const simdjson::dom::element input) +state_t::state_t(const simdjson::dom::element input) noexcept : m_raw(input) {} diff --git a/M6502/HarteTest_6502/state_t.h b/M6502/HarteTest_6502/state_t.h index 3dc38bf..db85272 100644 --- a/M6502/HarteTest_6502/state_t.h +++ b/M6502/HarteTest_6502/state_t.h @@ -17,7 +17,7 @@ private: [[nodiscard]] auto array_at(std::string key) const noexcept { return at(key).get_array(); } public: - state_t(simdjson::dom::element input); + state_t(simdjson::dom::element input) noexcept; [[nodiscard]] auto pc() const noexcept { return address_at("pc"); } [[nodiscard]] auto s() const noexcept { return byte_at("s"); } diff --git a/M6502/HarteTest_6502/test_t.cpp b/M6502/HarteTest_6502/test_t.cpp index a1952ec..1a824bb 100644 --- a/M6502/HarteTest_6502/test_t.cpp +++ b/M6502/HarteTest_6502/test_t.cpp @@ -1,5 +1,5 @@ #include "stdafx.h" #include "test_t.h" -test_t::test_t(const simdjson::dom::element input) +test_t::test_t(const simdjson::dom::element input) noexcept : m_raw(input) {} diff --git a/M6502/HarteTest_6502/test_t.h b/M6502/HarteTest_6502/test_t.h index 1b9efef..e8349a4 100644 --- a/M6502/HarteTest_6502/test_t.h +++ b/M6502/HarteTest_6502/test_t.h @@ -15,7 +15,7 @@ private: [[nodiscard]] auto array_at(std::string key) const noexcept { return at(key).get_array(); } public: - test_t(simdjson::dom::element input); + test_t(simdjson::dom::element input) noexcept; [[nodiscard]] auto name() const noexcept { return at("name"); } [[nodiscard]] auto initial_state() const noexcept { return state_t(at("initial")); }