diff options
| author | Samuel Perrouault <samuel.perrouault@gmail.com> | 2025-03-26 14:18:11 +0100 |
|---|---|---|
| committer | Samuel Perrouault <samuel.perrouault@gmail.com> | 2025-03-26 14:18:11 +0100 |
| commit | 1a6f76c6cb14493a6f8c76ec26a5694e43c87fea (patch) | |
| tree | cf3a9edb91754842a5879e77468bc0e174b2ad06 /src/chip8.rs | |
| parent | 208df3ff9d7dea52fa58759b787c68a5117b196d (diff) | |
implement subroutine call and return
Diffstat (limited to 'src/chip8.rs')
| -rw-r--r-- | src/chip8.rs | 8 |
1 files changed, 8 insertions, 0 deletions
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 { |
