From 92e72959c3037908aa8eea1a4541bff9e0a897ba Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Fri, 9 Oct 2020 23:12:20 -0400 Subject: [PATCH] Makes corrections to ix addressing mode and shift/roll flags. --- Processors/65816/Implementation/65816Implementation.hpp | 9 +++++---- Processors/65816/Implementation/65816Storage.cpp | 6 ++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Processors/65816/Implementation/65816Implementation.hpp b/Processors/65816/Implementation/65816Implementation.hpp index 4d567dd9f..d8b11676b 100644 --- a/Processors/65816/Implementation/65816Implementation.hpp +++ b/Processors/65816/Implementation/65816Implementation.hpp @@ -182,6 +182,7 @@ template void Processor::run_for(const Cycles case OperationCopyDataToInstruction: instruction_buffer_ = data_buffer_; + data_buffer_.clear(); continue; case OperationCopyAToData: @@ -672,26 +673,26 @@ template void Processor::run_for(const Cycles case ASL: flags_.carry = data_buffer_.value >> (7 + m_shift_); data_buffer_.value <<= 1; - flags_.set_nz(instruction_buffer_.value, m_shift_); + flags_.set_nz(data_buffer_.value, m_shift_); break; case LSR: flags_.carry = data_buffer_.value & 1; data_buffer_.value >>= 1; - flags_.set_nz(instruction_buffer_.value, m_shift_); + flags_.set_nz(data_buffer_.value, m_shift_); break; case ROL: data_buffer_.value = (data_buffer_.value << 1) | flags_.carry; flags_.carry = data_buffer_.value >> (7 + m_shift_); - flags_.set_nz(instruction_buffer_.value, m_shift_); + flags_.set_nz(data_buffer_.value, m_shift_); break; case ROR: { const uint8_t next_carry = data_buffer_.value & 1; data_buffer_.value = (data_buffer_.value >> 1) | (flags_.carry << (7 + m_shift_)); flags_.carry = next_carry; - flags_.set_nz(instruction_buffer_.value, m_shift_); + flags_.set_nz(data_buffer_.value, m_shift_); } break; // diff --git a/Processors/65816/Implementation/65816Storage.cpp b/Processors/65816/Implementation/65816Storage.cpp index c83963d30..7968e27b0 100644 --- a/Processors/65816/Implementation/65816Storage.cpp +++ b/Processors/65816/Implementation/65816Storage.cpp @@ -405,6 +405,12 @@ struct CPU::WDC65816::ProcessorStorageConstructor { target(CycleFetchPCThrowaway); // IO. + target(CycleFetchIncrementData); // AAL + target(CycleFetchData); // AAH + + target(OperationCopyDataToInstruction); + target(OperationConstructAbsolute); + read_write(type, is8bit, target); }