DISABLE FDs (REMOVE ME).
[jackhill/mal.git] / wasm / step0_repl.wam
CommitLineData
b16fe73e 1(module $step0_repl
b16fe73e 2
33309c6a 3 ;; READ
b16fe73e 4 (func $READ (param $str i32) (result i32)
33309c6a
JM
5 $str
6 )
b16fe73e
JM
7
8 (func $EVAL (param $ast i32) (param $env i32) (result i32)
33309c6a
JM
9 $ast
10 )
b16fe73e 11
33309c6a 12 ;; PRINT
b16fe73e 13 (func $PRINT (param $ast i32) (result i32)
33309c6a
JM
14 $ast
15 )
b16fe73e 16
33309c6a
JM
17 ;; REPL
18 (func $rep (param $line i32) (result i32)
19 ($PRINT ($EVAL ($READ $line) 0))
20 )
b16fe73e 21
ed13313d 22 (func $main (param $argc i32 $argv i32) (result i32)
b16fe73e 23 ;; Constant location/value definitions
349faa83 24 (LET $line (STATIC_ARRAY 201))
50eea9ad
JM
25
26 ;; DEBUG
0a19c2f1 27 ;;($printf_1 "memoryBase: 0x%x\n" (global.get $memoryBase))
b16fe73e 28
3ea09886 29 ;; Start REPL
b16fe73e
JM
30 (block $repl_done
31 (loop $repl_loop
50eea9ad
JM
32 (br_if $repl_done (i32.eqz ($readline "user> " $line)))
33 (br_if $repl_loop (i32.eq (i32.load8_u $line) 0))
33309c6a 34 ($printf_1 "%s\n" ($rep $line))
50eea9ad
JM
35 (br $repl_loop)
36 )
37 )
b16fe73e 38
33309c6a
JM
39 ($print "\n")
40 0
b16fe73e
JM
41 )
42
ed13313d
JM
43 ;; init_memory is provided by mem.wam in later steps but we just
44 ;; printf in step0 so provide init_memory that just calls that
45 (func $init_memory
46 ($init_printf_mem)
47 )
b16fe73e
JM
48)
49