about summary refs log blame commit diff stats
path: root/apps/tile/main.mu
blob: 9a83ed5a959094d3e5ecf1d485c49b078fb4d045 (plain) (tree)
































                                                                             
 
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 {
}