2021-02-21 06:37:44 +00:00
|
|
|
# Experimental Mu shell
|
2021-06-06 19:50:25 +00:00
|
|
|
# Currently based on Lisp.
|
2021-02-21 06:37:44 +00:00
|
|
|
|
2021-03-28 15:34:44 +00:00
|
|
|
fn main screen: (addr screen), keyboard: (addr keyboard), data-disk: (addr disk) {
|
2021-06-04 03:28:46 +00:00
|
|
|
var env-storage: environment
|
|
|
|
var env/esi: (addr environment) <- address env-storage
|
|
|
|
initialize-environment env
|
|
|
|
load-state env, data-disk
|
2021-04-18 06:40:49 +00:00
|
|
|
$main:loop: {
|
2021-06-04 03:28:46 +00:00
|
|
|
render-environment screen, env
|
|
|
|
# no way to quit right now; just reboot
|
2021-02-21 06:45:10 +00:00
|
|
|
{
|
2021-03-27 05:47:44 +00:00
|
|
|
var key/eax: byte <- read-key keyboard
|
2021-02-21 06:45:10 +00:00
|
|
|
compare key, 0
|
|
|
|
loop-if-=
|
2021-06-05 02:58:20 +00:00
|
|
|
var key/eax: grapheme <- copy key
|
2021-06-04 03:28:46 +00:00
|
|
|
edit-environment env, key, data-disk
|
2021-02-21 06:45:10 +00:00
|
|
|
}
|
2021-02-21 06:37:44 +00:00
|
|
|
loop
|
|
|
|
}
|
|
|
|
}
|