diff --git a/src/cpu.rs b/src/cpu.rs index c7edc21..38b0a0e 100644 --- a/src/cpu.rs +++ b/src/cpu.rs @@ -269,6 +269,16 @@ impl CPU { self.branch_if_positive(addr); } + (Instruction::BRK, OpInput::UseImplied) => { + for b in self.registers.program_counter.wrapping_sub(1).to_be_bytes() { + self.push_on_stack(b); + } + self.push_on_stack(self.registers.status.bits()); + let pcl = self.memory.get_byte(0xfffe); + let pch = self.memory.get_byte(0xffff); + self.jump(((pch as u16) << 8) | pcl as u16); + } + (Instruction::BVC, OpInput::UseRelative(rel)) => { let addr = self.registers.program_counter.wrapping_add(rel); self.branch_if_overflow_clear(addr);