diff --git a/src/main.rs b/src/main.rs index 6316f2d..2fb9f0f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -250,7 +250,7 @@ impl Default for Machine { RSTAT: Flags::FSE, - IP: 0, + IP: 1, RCALL: 0, RSK: 0xffff, RSR: 0, @@ -348,6 +348,7 @@ OP::RCPF => 2, } fn parse_instruction(mut bytes: &[u16]) -> (Instruction, usize) { + println!("{:#02x?}", &bytes[0..8]); let mut consumed = 0; let def = DefinitionWord(bytes[0]); @@ -377,6 +378,7 @@ fn parse_instruction(mut bytes: &[u16]) -> (Instruction, usize) { bytes = &bytes[1..]; consumed += 1; + println!("{:016b}", aw); for i in 0..register_count { registers.insert(0_usize, Register::into_register(aw & 0b1111)); aw >>= 4; @@ -464,6 +466,7 @@ impl Machine { let arg0 = cur_instruction.args[0].as_immediate(); self.write(cur_instruction.args[1], arg0); self.RSTAT.set(Flags::FZERO, arg0 == 0); + eprintln!("copying {} to {:?}", arg0, cur_instruction.args[1]); } OP::CMP => { let a = self.read(cur_instruction.args[0]); @@ -509,10 +512,10 @@ fn main() { let mut codeinner = code.inner(); let mut m = Machine::default(); - m.SIN = sin.inner().to_vec(); - m.SCODE = code.inner().to_vec(); + m.SIN[1..=sin.inner().len()].copy_from_slice(sin.inner()); + m.SCODE[1..=code.inner().len()].copy_from_slice(code.inner()); - dump_instructions(&m.SCODE[1..]); +// dump_instructions(&m.SCODE[1..]); -// while m.step() {} + while m.step() {} }