Compare commits
2 commits
c3a73e3104
...
738b1da85b
Author | SHA1 | Date | |
---|---|---|---|
738b1da85b | |||
58dbbc6d8f |
2 changed files with 40 additions and 8 deletions
25
programs/decimal_printer.mbl
Normal file
25
programs/decimal_printer.mbl
Normal file
|
@ -0,0 +1,25 @@
|
|||
(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
|
19
src/main.rs
19
src/main.rs
|
@ -1,4 +1,8 @@
|
|||
use std::{env, fs, io::{stdin, stdout, Write}, process::exit};
|
||||
use std::{
|
||||
env, fs,
|
||||
io::{stdin, stdout, Write},
|
||||
process::exit,
|
||||
};
|
||||
|
||||
use owo_colors::OwoColorize;
|
||||
|
||||
|
@ -100,7 +104,6 @@ fn main() {
|
|||
.unwrap_or_default();
|
||||
|
||||
let mut interpreter = Machine::new(&source, input_data);
|
||||
print!("\x1B[2J"); // clear screen
|
||||
interpreter.show();
|
||||
|
||||
loop {
|
||||
|
@ -139,7 +142,12 @@ q | quit | exit
|
|||
["dbg" | "debug"] => {
|
||||
dbg!(&interpreter);
|
||||
}
|
||||
["step", num] => _ = num.parse().map(|n| interpreter.step(n)),
|
||||
["step", num] => {
|
||||
if let Ok(n) = num.parse() {
|
||||
interpreter.step(n);
|
||||
interpreter.show();
|
||||
}
|
||||
}
|
||||
["q" | "exit" | "quit"] => break,
|
||||
["h" | "help" | "?"] => {
|
||||
println!("{}", HELP_TEXT.green());
|
||||
|
@ -170,9 +178,8 @@ impl Machine {
|
|||
}
|
||||
|
||||
fn show(&self) {
|
||||
// dbg!(&self);
|
||||
print!("\x1B[2J"); // clear screen
|
||||
print!("\x1B[u"); // reset cursor
|
||||
print!("\x1B[1;1H"); // reset cursor
|
||||
for y in 0..self.grid.height() {
|
||||
let mut marbles_on_row = Vec::new();
|
||||
for x in 0..self.grid.width() {
|
||||
|
@ -423,7 +430,7 @@ impl Machine {
|
|||
MathOp::Div => val_a.checked_div(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.marbles.push(front_pos);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue