mu/apps/tile/main.mu

35 lines
981 B
Forth
Raw Normal View History

2020-09-16 16:26:38 +00:00
fn main args-on-stack: (addr array addr array byte) -> exit-status/ebx: int {
var args/eax: (addr array addr array byte) <- copy args-on-stack
var len/ecx: int <- length args
$main-body: {
# if no args, run in interactive mode
compare len, 1
{
break-if->
exit-status <- interactive args-on-stack
break $main-body
}
# else if single arg is 'test', run tests
compare len, 2
{
break-if-!=
var tmp/ecx: (addr addr array byte) <- index args, 1
var tmp2/eax: boolean <- string-equal? *tmp, "test"
compare tmp2, 0
{
break-if-=
run-tests
exit-status <- copy 0 # TODO: get at Num-test-failures somehow
break $main-body
}
}
# otherwise error message
print-string-to-real-screen "usage: tile\n"
print-string-to-real-screen " or tile test\n"
exit-status <- copy 1
}
}
fn interactive args: (addr array addr array byte) -> exit-status/ebx: int {
}