From c992cd41d1baa5f0075b34d1271d3667071b165e Mon Sep 17 00:00:00 2001 From: tropicbliss <48951297+tropicbliss@users.noreply.github.com> Date: Wed, 10 Aug 2022 23:21:22 +0800 Subject: [PATCH 1/2] Update main.rs --- ch5/ch5-cpu4/src/main.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ch5/ch5-cpu4/src/main.rs b/ch5/ch5-cpu4/src/main.rs index 6fc0db65..5fc46a44 100644 --- a/ch5/ch5-cpu4/src/main.rs +++ b/ch5/ch5-cpu4/src/main.rs @@ -59,14 +59,14 @@ impl CPU { } fn se(&mut self, vx: u8, kk: u8) { - if vx == kk { + if self.registers[vx as usize] == kk { self.position_in_memory += 2; } } /// () SNE **S**tore if **n**ot **e**qual fn sne(&mut self, vx: u8, kk: u8) { - if vx != kk { + if self.registers[vx as usize] != kk { self.position_in_memory += 2; } } @@ -154,4 +154,4 @@ fn main() { assert_eq!(cpu.registers[0], 45); println!("5 + (10 * 2) + (10 * 2) = {}", cpu.registers[0]); -} \ No newline at end of file +} From 0d904069e4fa11efe090a08d6617769822ef541a Mon Sep 17 00:00:00 2001 From: tropicbliss <48951297+tropicbliss@users.noreply.github.com> Date: Wed, 10 Aug 2022 23:26:24 +0800 Subject: [PATCH 2/2] Set carry flag for and_xy --- ch5/ch5-cpu4/src/main.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ch5/ch5-cpu4/src/main.rs b/ch5/ch5-cpu4/src/main.rs index 5fc46a44..006f1f2f 100644 --- a/ch5/ch5-cpu4/src/main.rs +++ b/ch5/ch5-cpu4/src/main.rs @@ -102,9 +102,10 @@ impl CPU { // (7xkk) fn add_xy(&mut self, x: u8, y: u8) { - self.registers[x as usize] += self.registers[y as usize]; - - // TODO: SET CARRY FLAG!!!! + /// Set carry flag + let (wrapped, is_overflow) = self.registers[x as usize].overflowing_add(self.registers[y as usize]); + self.registers[0xF] = if is_overflow {1} else {0}; + self.registers[x as usize] = wrapped; } fn and_xy(&mut self, x: u8, y: u8) {