gonna slep
This commit is contained in:
parent
e00b4f0b10
commit
eee9bd4ec2
12
src/main.rs
12
src/main.rs
|
@ -395,6 +395,8 @@ fn parse_instruction(mut bytes: &[u16]) -> (Instruction, usize) {
|
||||||
consumed += 1;
|
consumed += 1;
|
||||||
|
|
||||||
//println!("{:016b}", aw);
|
//println!("{:016b}", aw);
|
||||||
|
|
||||||
|
// this shiftright shouldn't be needed... but it is.
|
||||||
aw >>= 4;
|
aw >>= 4;
|
||||||
for i in 0..register_count {
|
for i in 0..register_count {
|
||||||
registers.insert(0_usize, Register::into_register(aw & 0b1111));
|
registers.insert(0_usize, Register::into_register(aw & 0b1111));
|
||||||
|
@ -513,13 +515,13 @@ impl Machine {
|
||||||
let arg0 = ci.args[0].as_immediate();
|
let arg0 = ci.args[0].as_immediate();
|
||||||
self.write(ci.args[1], arg0);
|
self.write(ci.args[1], arg0);
|
||||||
self.RSTAT.set(Flags::FZERO, arg0 == 0);
|
self.RSTAT.set(Flags::FZERO, arg0 == 0);
|
||||||
//eprintln!("copying {} to {:?}", arg0, ci.args[1]);
|
log::info!("copying {} to {:?}", arg0, ci.args[1]);
|
||||||
}
|
}
|
||||||
OP::CMP => {
|
OP::CMP => {
|
||||||
let a = self.read(ci.args[0]);
|
let a = self.read(ci.args[0]);
|
||||||
let b = self.read(ci.args[1]);
|
let b = self.read(ci.args[1]);
|
||||||
|
|
||||||
log::debug!("CMP({}, {})", a, b);
|
log::info!("CMP({}, {})", a, b);
|
||||||
|
|
||||||
self.RSTAT.set(Flags::FZERO, a == 0 || b == 0);
|
self.RSTAT.set(Flags::FZERO, a == 0 || b == 0);
|
||||||
self.RSTAT.set(Flags::FEQUL, a == b);
|
self.RSTAT.set(Flags::FEQUL, a == b);
|
||||||
|
@ -547,7 +549,7 @@ impl Machine {
|
||||||
let mut val = self.read(ci.args[0]);
|
let mut val = self.read(ci.args[0]);
|
||||||
val = val.wrapping_add(1);
|
val = val.wrapping_add(1);
|
||||||
self.write(ci.args[0], val);
|
self.write(ci.args[0], val);
|
||||||
log::debug!("INC({:?}) to {}", ci.args[0], val);
|
log::info!("INC({:?}) to {}", ci.args[0], val);
|
||||||
self.RSTAT.set(Flags::FZERO, val == 0);
|
self.RSTAT.set(Flags::FZERO, val == 0);
|
||||||
}
|
}
|
||||||
OP::READ => {
|
OP::READ => {
|
||||||
|
@ -647,7 +649,7 @@ impl Machine {
|
||||||
self.write(ci.args[0], val);
|
self.write(ci.args[0], val);
|
||||||
self.RSTAT.set(Flags::FZERO, val == 0);
|
self.RSTAT.set(Flags::FZERO, val == 0);
|
||||||
}
|
}
|
||||||
_ => { eprintln!("unsupported opcode {:?}, continuing", oc); return false; }
|
_ => { eprintln!("unsupported opcode {:?}", oc); return false; }
|
||||||
}
|
}
|
||||||
|
|
||||||
if should_inc_ip {
|
if should_inc_ip {
|
||||||
|
@ -683,7 +685,7 @@ fn main() {
|
||||||
let mut m = Machine::default();
|
let mut m = Machine::default();
|
||||||
m.SIN[1..=sin.inner().len()].copy_from_slice(sin.inner());
|
m.SIN[1..=sin.inner().len()].copy_from_slice(sin.inner());
|
||||||
m.SCODE[1..=code.inner().len()].copy_from_slice(code.inner());
|
m.SCODE[1..=code.inner().len()].copy_from_slice(code.inner());
|
||||||
m.input = b"\x09\x0f\xcc\xcc\xcc\xcc\x0c\x0c\x00\x00\x00\x0a".to_vec();
|
m.input = b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a".to_vec();
|
||||||
|
|
||||||
// dump_instructions(&m.SCODE[1..=code.inner().len()]);
|
// dump_instructions(&m.SCODE[1..=code.inner().len()]);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue