From c0bfc265d02e8cbac078d728ed6f0bcc3a958315 Mon Sep 17 00:00:00 2001 From: PalindromicBreadLoaf Date: Wed, 23 Jul 2025 19:16:20 -0400 Subject: [PATCH] Implement State Clear Instructions --- src/cpu.cpp | 26 ++++++++++++++++++++++++++ src/cpu.h | 5 +++++ 2 files changed, 31 insertions(+) diff --git a/src/cpu.cpp b/src/cpu.cpp index a4ca4f0..adaded4 100644 --- a/src/cpu.cpp +++ b/src/cpu.cpp @@ -349,6 +349,12 @@ void CPU::ExecuteInstruction() { case 0x24: BIT_DirectPage(); break; // BIT $nn case 0x34: BIT_DirectPageX(); break; // BIT $nn,X + // Clear State Flags Instructions + case 0x18: CLC(); break; // CLC + case 0xD8: CLD(); break; // CLD + case 0x58: CLI(); break; // CLI + case 0xB8: CLV(); break; // CLV + // CMP - Compare Accumulator case 0xC9: CMP_Immediate(); break; // CMP #$nn or #$nnnn case 0xCD: CMP_Absolute(); break; // CMP $nnnn @@ -2794,4 +2800,24 @@ void CPU::BRK() { cycles += 4; } +} + +void CPU::CLC() { + P &= ~FLAG_C; + cycles += 2; +} + +void CPU::CLD() { + P &= ~FLAG_D; + cycles += 2; +} + +void CPU::CLI() { + P &= ~FLAG_I; + cycles += 2; +} + +void CPU::CLV() { + P &= ~FLAG_V; + cycles += 2; } \ No newline at end of file diff --git a/src/cpu.h b/src/cpu.h index e0d47dc..7e7c924 100644 --- a/src/cpu.h +++ b/src/cpu.h @@ -251,6 +251,11 @@ public: void BVC_Relative(); void BVS_Relative(); void BRK(); + + void CLC(); + void CLD(); + void CLI(); + void CLV(); }; #endif //CPU_H