(module $platform_os (import "env" "exit" (func $lib_exit (param i32))) (import "env" "stdout" (global $lib_stdout i32)) (import "env" "fputs" (func $lib_fputs (param i32 i32) (result i32))) (import "env" "readline" (func $lib_readline (param i32 i32 i32) (result i32))) (import "env" "add_history" (func $lib_add_history (param i32))) (import "env" "read_file" (func $lib_read_file (param i32 i32) (result i32))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (func $fatal (param $code i32 $msg i32) ($print $msg) ($lib_exit $code) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (func $print (param $addr i32) (drop ($lib_fputs $addr (get_global $lib_stdout)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (func $readline (param $prompt i32 $buf i32) (result i32) ;; TODO: don't hardcode count to 200 (LET $res ($lib_readline $prompt $buf 200)) (if $res ($lib_add_history $buf)) $res ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (func $read_file (param $path i32 $buf i32) (result i32) (LET $size ($lib_read_file $path $buf)) ;; Add null to string (i32.store8 (i32.add $buf $size) 0) (i32.add $size 1) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (func $get_time_ms (result i32) 0 ) )