implement BNE

This commit is contained in:
Sam M W 2023-04-15 16:17:51 +01:00
parent 18164c7abf
commit 8e797b70fa
1 changed files with 11 additions and 0 deletions

View File

@ -228,6 +228,11 @@ impl<M: Bus> CPU<M> {
self.branch_if_equal(addr);
}
(Instruction::BNE, OpInput::UseRelative(rel)) => {
let addr = self.registers.program_counter.wrapping_add(rel);
self.branch_if_not_equal(addr);
}
(Instruction::BIT, OpInput::UseAddress(addr)) => {
let a: u8 = self.registers.accumulator as u8;
let m: u8 = self.memory.get_byte(addr);
@ -850,6 +855,12 @@ impl<M: Bus> CPU<M> {
}
}
fn branch_if_not_equal(&mut self, addr: u16) {
if !self.registers.status.contains(Status::PS_ZERO) {
self.registers.program_counter = addr;
}
}
fn branch_if_minus(&mut self, addr: u16) {
if self.registers.status.contains(Status::PS_NEGATIVE) {
self.registers.program_counter = addr;