From 244172960fff86e147a8e20cf19773026cbed96f Mon Sep 17 00:00:00 2001 From: krolxon Date: Sun, 4 Jan 2026 19:06:42 +0530 Subject: add jmp, jz --- src/cpu.rs | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'src/cpu.rs') diff --git a/src/cpu.rs b/src/cpu.rs index ceef8a3..96ede96 100644 --- a/src/cpu.rs +++ b/src/cpu.rs @@ -18,7 +18,7 @@ pub struct CPU{ } impl CPU { - pub fn inc_cp(&mut self) { + pub fn inc_pc(&mut self) { self.pc += 1; } @@ -27,8 +27,8 @@ impl CPU { } pub fn mov(&mut self, mem: &mut Memory) { - let reg = mem.read(self.pc); self.inc_cp(); - let val = mem.read(self.pc); self.inc_cp(); + let reg = mem.read(self.pc); self.inc_pc(); + let val = mem.read(self.pc); self.inc_pc(); match reg { 0 => self.a = val, @@ -132,4 +132,25 @@ impl CPU { self.carry = borrow; } + pub fn jmp(&mut self, mem: &mut Memory) { + let low = mem.read(self.pc) as u16; self.inc_pc(); + let high = mem.read(self.pc) as u16; self.inc_pc(); + + let addrs = (high << 8) | low; + + self.pc = addrs; + } + + pub fn jz(&mut self, mem: &mut Memory) { + let low = mem.read(self.pc) as u16; self.inc_pc(); + let high = mem.read(self.pc) as u16; self.inc_pc(); + + let addrs = (high << 8) | low; + + if self.zero { + self.pc = addrs; + } + + } + } -- cgit v1.2.3