set_low_a function

This commit is contained in:
2022-11-20 12:18:25 -05:00
parent 4ddc3b3aa7
commit 50ce162ea6
2 changed files with 14 additions and 2 deletions
+2 -2
View File
@@ -38,7 +38,7 @@ impl CPU {
true => alu::adc8bcd(target as u8, value, carry_flag),
false => alu::adc8bin(target as u8, value, carry_flag),
};
self.registers.a = (self.registers.a & 0xFF00) | (result as u16);
self.registers.set_low_a(result as u8);
self.registers.set_carry_flag(is_carry);
self.registers.set_negative_flag(is_negative);
self.registers.set_zero_flag(is_zero);
@@ -71,7 +71,7 @@ impl CPU {
true => alu::sbc8bcd(target as u8, value, carry_flag),
false => alu::sbc8bin(target as u8, value, carry_flag),
};
self.registers.a = (self.registers.a & 0xFF00) | (result as u16);
self.registers.set_low_a(result as u8);
self.registers.set_carry_flag(is_carry);
self.registers.set_negative_flag(is_negative);
self.registers.set_zero_flag(is_zero);
+12
View File
@@ -27,6 +27,10 @@ impl Registers {
}
}
pub fn set_low_a(&mut self, val: u8) {
self.a = (self.a & 0xFF00) | (val as u16);
}
pub fn get_carry_flag(&self) -> bool {
(self.p & 0b0000_0001) == 1
}
@@ -117,6 +121,14 @@ impl Registers {
mod registers_tests {
use super::*;
#[test]
fn test_set_low_a() {
let mut registers = Registers::new();
registers.a = 0xA1A1;
registers.set_low_a(0xFF);
assert_eq!(registers.a, 0xA1FF);
}
#[test]
fn test_get_pc_address() {
let mut registers = Registers::new();