(import "env" "sys_fetch" (func $sys_fetch (param i32 i32) (result i32)))
(import "env" "sys_listen" (func $sys_listen (param i32) (result i32)))
(import "env" "sys_write" (func $sys_write (param i32 i32 i32) (result i32)))
- (import "env" "sys_echo" (func $sys_echo (param i32)))
+ (import "env" "sys_echo" (func $sys_echo (param i32 i32)))
(import "env" "sys_echochar" (func $sys_echochar (param i32)))
(import "env" "sys_reflect" (func $sys_reflect (param i32)))
(import "env" "vocab_get" (func $vocab_get (param i32 i32) (result i32)))
(import "env" "vocab_set" (func $vocab_set (param i32 i32 i32)))
- (import "env" "does_get" (func $does_get (param i32) (result i32)))
- (import "env" "does_set" (func $does_set (param i32 i32)))
+ (import "env" "does_get" (func $does_get (param i32 i32) (result i32)))
+ (import "env" "does_set" (func $does_set (param i32 i32 i32)))
(import "env" "is_whitespace" (func $is_whitespace (param i32) (result i32)))
(import "env" "sys_parsenum" (func $sys_parsenum (param i32 i32 i32) (result i32)))
(import "env" "sys_stack" (func $sys_stack))
i32.const 14340
i32.load
set_local $here
+ (; Load "start" into esi, then restore "start" to "quit" ;)
i32.const 14344
i32.load
set_local $esi
+ i32.const 14344
+ i32.const 16384
+ i32.store
+ (; "start" will be a normal quit, unless cirumvented in this run ;)
get_global $inbuf_data
set_local $inbuf_head
i32.const 14352
block $words block $here block $dictset block $dup2 block $rot block $drop2
block $comma block $subtract block $keychan block $sethere block $eqbool
block $echostring block $strstart block $strput block $strend block $fetchinc
- block $setinc block $finddoes block $definedoes
+ block $setinc block $finddoes block $definedoes block $stacktrace
get_local $eax
br_table $op0 $ret (;2;)$lit $rinit (;4;)$word $key (;6;)$dup $plus
(;8;)$jmp $emit (;10;)$fetch $set (;12;)$execute $noop (;14;)$jz $jnz
(;28;)$here $dictset (;30;)$dup2 $rot (;32;)$drop2 $comma
(;34;)$subtract $keychan (;36;)$sethere $eqbool (;38;)$echostring $strstart
(;40;)$strput $strend (;42;)$fetchinc $setinc (;44;)$finddoes $definedoes
- (;46;)$default
+ (;46;)$stacktrace $default
+ end ;; stacktrace
+ call $sys_stack
+ get_local $esi
+ call $sys_reflect
+ br $next
end ;; definedoes
+ call $pop
+ call $rpush
call $pop
set_local $eax
call $pop
get_local $eax
+ call $rpop
call $does_set
br $next
end ;; finddoes
call $pop
+ set_local $eax
+ call $pop
+ get_local $eax
call $does_get
call $push
br $next
br $next
end ;; emit (.)
call $pop
+ i32.const 14348
+ i32.load
call $sys_echo
br $next
end ;; noop2