DISABLE FDs (REMOVE ME).
[jackhill/mal.git] / wasm / platform_direct.wam
CommitLineData
030f725c 1(module $platform_direct
50eea9ad 2
ed13313d
JM
3 (import "env" "memory" (memory 256))
4 (import "env" "memoryBase" (global $memoryBase i32))
5
76adfab9 6 (import "env" "exit" (func $lib_exit (param i32)))
ed13313d 7 (import "env" "printline" (func $lib_printline (param i32) (result i32)))
76adfab9 8 (import "env" "readline" (func $lib_readline (param i32 i32 i32) (result i32)))
76adfab9 9 (import "env" "read_file" (func $lib_read_file (param i32 i32) (result i32)))
266391c5 10 (import "env" "get_time_ms" (func $lib_get_time_ms (result i32)))
50eea9ad
JM
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)
ed13313d
JM
22 (drop ($lib_printline $addr))
23 )
50eea9ad
JM
24
25 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
26
27 (func $readline (param $prompt i32 $buf i32) (result i32)
50eea9ad 28 ;; TODO: don't hardcode count to 200
030f725c 29 ($lib_readline $prompt $buf 200)
50eea9ad
JM
30 )
31
32 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
33
34 (func $read_file (param $path i32 $buf i32) (result i32)
349faa83 35 (LET $size ($lib_read_file $path $buf))
50eea9ad 36 ;; Add null to string
0c62f14e 37 (i32.store8 (i32.add $buf $size) 0)
50eea9ad
JM
38 (i32.add $size 1)
39 )
40
41 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
42
50eea9ad 43 (func $get_time_ms (result i32)
266391c5 44 ($lib_get_time_ms)
50eea9ad
JM
45 )
46
ed13313d
JM
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
50eea9ad 56)