diff --git a/.gitignore b/.gitignore index be4ac7c..63c0e00 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ pkg/ dist/ mode_modules/ target/ +Session.vim diff --git a/ic10emu/src/interpreter.rs b/ic10emu/src/interpreter.rs index 4f70f1d..89ee37b 100644 --- a/ic10emu/src/interpreter.rs +++ b/ic10emu/src/interpreter.rs @@ -373,7 +373,7 @@ impl IC { } pub fn poke(&mut self, address: f64, val: f64) -> Result { - let sp = address as i32; + let sp = address.round() as i32; if !(0..512).contains(&sp) { Err(ICError::StackIndexOutOfRange(address)) } else { @@ -384,7 +384,7 @@ impl IC { } pub fn peek(&self) -> Result { - let sp = (self.registers[16]) as i32; + let sp = (self.registers[16] - 1.0).round() as i32; if sp < 0 { Err(ICError::StackUnderflow) } else if sp >= 512 {