From 1ba0a117e7a168a860e1b47c3ce11d9b651bb00f Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Wed, 7 Oct 2020 20:23:53 -0400 Subject: [PATCH] Corrects PLB, PLD, PLP. --- OSBindings/Mac/Clock SignalTests/KlausDormannTests.swift | 1 + Processors/65816/Implementation/65816Implementation.hpp | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/OSBindings/Mac/Clock SignalTests/KlausDormannTests.swift b/OSBindings/Mac/Clock SignalTests/KlausDormannTests.swift index 6fb98d533..1b0ee5be2 100644 --- a/OSBindings/Mac/Clock SignalTests/KlausDormannTests.swift +++ b/OSBindings/Mac/Clock SignalTests/KlausDormannTests.swift @@ -45,6 +45,7 @@ class KlausDormannTests: XCTestCase { case 0x3399: return nil // success! case 0x052a: return "TAX, DEX or LDA did not correctly set flags, or BEQ did not branch correctly" + case 0x05db: return "PLP did not affect N flag correctly" case 0x33a7: return "Decimal ADC result has wrong value" case 0x3502: return "Binary SBC result has wrong value" case 0x33b9: return "Decimal SBC result has wrong value" diff --git a/Processors/65816/Implementation/65816Implementation.hpp b/Processors/65816/Implementation/65816Implementation.hpp index c107b6462..ab94aa5a7 100644 --- a/Processors/65816/Implementation/65816Implementation.hpp +++ b/Processors/65816/Implementation/65816Implementation.hpp @@ -329,17 +329,17 @@ template void Processor::run_for(const Cycles break; case PLB: - data_bank_ = (instruction_buffer_.value & 0xff) << 16; + data_bank_ = (data_buffer_.value & 0xff) << 16; flags_.set_nz(instruction_buffer_.value); break; case PLD: - direct_ = instruction_buffer_.value; + direct_ = data_buffer_.value; flags_.set_nz(instruction_buffer_.value); break; case PLP: - flags_.set(instruction_buffer_.value); + flags_.set(data_buffer_.value); if(!emulation_flag_) { assert(false); // TODO: M and X.