Compare commits

..

No commits in common. "738b1da85bf981ba985a8ed76a2aafd1fed97402" and "c3a73e3104447757942a53a440e68a3a0872f8ce" have entirely different histories.

2 changed files with 8 additions and 40 deletions

View file

@ -1,25 +0,0 @@
(decimal printer)
o
1
2
3
4
5
6
o
(check if 0)
v B-=-#01 <
v * D-(div/10)
v B * <
o
v> * 1 ^
F -R0* B(next digit, %10)
*| # <-A vo(+48 = ascii)
| #84 <
| *-|
F +B * B
#< \F----
*-|
P-
B

View file

@ -1,8 +1,4 @@
use std::{ use std::{env, fs, io::{stdin, stdout, Write}, process::exit};
env, fs,
io::{stdin, stdout, Write},
process::exit,
};
use owo_colors::OwoColorize; use owo_colors::OwoColorize;
@ -104,6 +100,7 @@ fn main() {
.unwrap_or_default(); .unwrap_or_default();
let mut interpreter = Machine::new(&source, input_data); let mut interpreter = Machine::new(&source, input_data);
print!("\x1B[2J"); // clear screen
interpreter.show(); interpreter.show();
loop { loop {
@ -142,12 +139,7 @@ q | quit | exit
["dbg" | "debug"] => { ["dbg" | "debug"] => {
dbg!(&interpreter); dbg!(&interpreter);
} }
["step", num] => { ["step", num] => _ = num.parse().map(|n| interpreter.step(n)),
if let Ok(n) = num.parse() {
interpreter.step(n);
interpreter.show();
}
}
["q" | "exit" | "quit"] => break, ["q" | "exit" | "quit"] => break,
["h" | "help" | "?"] => { ["h" | "help" | "?"] => {
println!("{}", HELP_TEXT.green()); println!("{}", HELP_TEXT.green());
@ -178,8 +170,9 @@ impl Machine {
} }
fn show(&self) { fn show(&self) {
// dbg!(&self);
print!("\x1B[2J"); // clear screen print!("\x1B[2J"); // clear screen
print!("\x1B[1;1H"); // reset cursor print!("\x1B[u"); // reset cursor
for y in 0..self.grid.height() { for y in 0..self.grid.height() {
let mut marbles_on_row = Vec::new(); let mut marbles_on_row = Vec::new();
for x in 0..self.grid.width() { for x in 0..self.grid.width() {
@ -430,7 +423,7 @@ impl Machine {
MathOp::Div => val_a.checked_div(val_b).unwrap_or_default(), MathOp::Div => val_a.checked_div(val_b).unwrap_or_default(),
MathOp::Rem => val_a.checked_rem(val_b).unwrap_or_default(), MathOp::Rem => val_a.checked_rem(val_b).unwrap_or_default(),
}; };
// println!("{op:?} a:{val_a} b:{val_b}"); println!("{op:?} a:{val_a} b:{val_b}");
*self.grid.get_mut(front_pos) = Tile::Marble { value: result, dir }; *self.grid.get_mut(front_pos) = Tile::Marble { value: result, dir };
self.marbles.push(front_pos); self.marbles.push(front_pos);
} }