DISABLE FDs (REMOVE ME).
[jackhill/mal.git] / wasm / platform_direct.wam
1 (module $platform_direct
2
3 (import "env" "memory" (memory 256))
4 (import "env" "memoryBase" (global $memoryBase i32))
5
6 (import "env" "exit" (func $lib_exit (param i32)))
7 (import "env" "printline" (func $lib_printline (param i32) (result i32)))
8 (import "env" "readline" (func $lib_readline (param i32 i32 i32) (result i32)))
9 (import "env" "read_file" (func $lib_read_file (param i32 i32) (result i32)))
10 (import "env" "get_time_ms" (func $lib_get_time_ms (result i32)))
11
12 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
13
14 (func $fatal (param $code i32 $msg i32)
15 ($print $msg)
16 ($lib_exit $code)
17 )
18
19 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
20
21 (func $print (param $addr i32)
22 (drop ($lib_printline $addr))
23 )
24
25 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
26
27 (func $readline (param $prompt i32 $buf i32) (result i32)
28 ;; TODO: don't hardcode count to 200
29 ($lib_readline $prompt $buf 200)
30 )
31
32 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
33
34 (func $read_file (param $path i32 $buf i32) (result i32)
35 (LET $size ($lib_read_file $path $buf))
36 ;; Add null to string
37 (i32.store8 (i32.add $buf $size) 0)
38 (i32.add $size 1)
39 )
40
41 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
42
43 (func $get_time_ms (result i32)
44 ($lib_get_time_ms)
45 )
46
47 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
48
49 (func $entry (param $argc i32 $argv i32)
50 ($init_memory)
51 ($lib_exit ($main $argc $argv))
52 )
53
54 (export "_main" (func $entry))
55
56 )