From 1a6f76c6cb14493a6f8c76ec26a5694e43c87fea Mon Sep 17 00:00:00 2001 From: Samuel Perrouault Date: Wed, 26 Mar 2025 14:18:11 +0100 Subject: implement subroutine call and return --- src/chip8.rs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/chip8.rs') diff --git a/src/chip8.rs b/src/chip8.rs index 83139f4..988dc6e 100644 --- a/src/chip8.rs +++ b/src/chip8.rs @@ -64,6 +64,8 @@ impl Chip8 { } 0x000E => { eprintln!("RET"); + self.sp -= 1; + self.pc = self.stack[self.sp as usize]; } _ => unknown_opcode(opcode), }, @@ -71,6 +73,12 @@ impl Chip8 { eprintln!("JP {}", nnn); self.pc = nnn; } + 0x2000 => { + eprintln!("CALL {}", nnn); + self.stack[self.sp as usize] = self.pc; + self.sp += 1; + self.pc = nnn; + } 0x3000 => { eprintln!("SE V{}, {}", x, nn); if self.v[x] == nn { -- cgit v1.2.3