add experimental framebuffer extension using minifb
This commit is contained in:
@@ -10,6 +10,7 @@ edition = "2018"
|
||||
crsn = { path = "../crsn" }
|
||||
crsn_arith = { path = "../crsn_arith" }
|
||||
crsn_stacks = { path = "../crsn_stacks" }
|
||||
crsn_screen = { path = "../crsn_screen" }
|
||||
|
||||
simple_logger = "1.9.0"
|
||||
log = "0.4.11"
|
||||
|
||||
+29
-17
@@ -11,9 +11,14 @@ use crsn::runtime::run_thread::{RunThread, ThreadToken};
|
||||
use crsn::runtime::run_thread;
|
||||
use crsn_arith::ArithOps;
|
||||
use crsn_stacks::StackOps;
|
||||
use crsn_screen::ScreenOps;
|
||||
use std::time::Duration;
|
||||
use log::LevelFilter;
|
||||
|
||||
fn main() {
|
||||
SimpleLogger::new().init().unwrap();
|
||||
SimpleLogger::new()
|
||||
.with_level(LevelFilter::Warn)
|
||||
.init().unwrap();
|
||||
|
||||
// ;(dec r0 (z? (ret)))
|
||||
/*let program = "
|
||||
@@ -72,21 +77,27 @@ fn main() {
|
||||
let program = "
|
||||
(
|
||||
(main
|
||||
(stack r7)
|
||||
(push @r7 10)
|
||||
(push @r7 20)
|
||||
(call emptystack r7)
|
||||
(push @r7 30)
|
||||
(pop r0 @r7)
|
||||
(pop r0 @r7)
|
||||
(drop @r7)
|
||||
(pop r0 @r7) ; this fails
|
||||
(halt)
|
||||
)
|
||||
(emptystack
|
||||
(:again)
|
||||
(pop _ @arg0 (nz? (j :again)))
|
||||
(ret)
|
||||
(sc-init 640 480)
|
||||
|
||||
(ld r0 39) ; x
|
||||
(ld r1 0) ; y
|
||||
|
||||
(ld r2 1) ; dx
|
||||
(ld r3 1) ; dy
|
||||
|
||||
(ld r5 0xffffff)
|
||||
|
||||
(:loop)
|
||||
(add r5 0x123456)
|
||||
(and r5 0xffffff)
|
||||
(sc-px r0 r1 r5)
|
||||
(add r0 r2)
|
||||
(add r1 r3)
|
||||
(cmp r0 639 (eq? (ld r2 -1)))
|
||||
(cmp r0 0 (eq? (ld r2 1)))
|
||||
(cmp r1 479 (eq? (ld r3 -1)))
|
||||
(cmp r1 0 (eq? (ld r3 1)))
|
||||
(j :loop)
|
||||
)
|
||||
)
|
||||
";
|
||||
@@ -94,13 +105,14 @@ fn main() {
|
||||
let parsers = Arc::new(vec![
|
||||
ArithOps::new(),
|
||||
StackOps::new(),
|
||||
ScreenOps::new(),
|
||||
]);
|
||||
|
||||
let parsed = crsn::asm::assemble(program, parsers).unwrap();
|
||||
|
||||
let uniq = run_thread::new_uniq();
|
||||
|
||||
let thread1 = RunThread::new(ThreadToken(0), Some(uniq.clone()), parsed.clone(), Addr(0), &[]);
|
||||
let mut thread1 = RunThread::new(ThreadToken(0), Some(uniq.clone()), parsed.clone(), Addr(0), &[]);
|
||||
//thread1.set_speed(Duration::from_millis(250));
|
||||
|
||||
let _thread2 = RunThread::new(ThreadToken(1), Some(uniq), parsed.clone(), Addr(0), &[]);
|
||||
|
||||
Reference in New Issue
Block a user