summaryrefslogtreecommitdiff
path: root/sanctuary.s
diff options
context:
space:
mode:
authorkitty <nepeta@canaglie.net>2026-04-08 02:20:56 +1000
committerkitty <nepeta@canaglie.net>2026-04-08 02:20:56 +1000
commit9f7f9d1e12db5c6299dd3db297dde1d36c6a5d06 (patch)
tree96be4c9c5d8983339586e08cd28287ed701654a3 /sanctuary.s
parent9e153f687f52892dc5656243ac66bc70f53fa664 (diff)
i need to redo this from scratch
the input buffering. not the whole forth
Diffstat (limited to 'sanctuary.s')
-rw-r--r--sanctuary.s26
1 files changed, 18 insertions, 8 deletions
diff --git a/sanctuary.s b/sanctuary.s
index aa52ce3..74b9528 100644
--- a/sanctuary.s
+++ b/sanctuary.s
@@ -9,7 +9,7 @@
cmp r15, wstk_b
jge %%ok
- call abort
+ call q_overflow
%%ok:
%endmacro
@@ -19,7 +19,7 @@
cmp r15, wstk
jle %%ok
- call abort
+ call q_underflow
%%ok:
%endmacro
@@ -350,7 +350,7 @@ defcode "interpret", interpret, 0
jmp .loop
.componly:
- call abort
+ call q_notfound
jmp .loop
.intrpnum:
@@ -386,7 +386,7 @@ defcode "interpret", interpret, 0
.notfound:
; error handling should go here
- call abort
+ call q_notfound
jmp .loop
.eof:
@@ -1125,6 +1125,16 @@ defcode "abort", abort, 0
mov r11, qword [handler]
call r11
ret
+
+; todo doc? maybe?
+defdefer "!underflow", q_underflow, 0
+ call abort
+
+defdefer "!overflow", q_overflow, 0
+ call abort
+
+defdefer "!notfound", q_notfound, 0
+ call abort
; }}}
; these words are called from `create`d words,
@@ -1205,11 +1215,11 @@ defvar "base", base, 0, 10
defvar "dp", dp, 0, 0
defvar "dp0", dp0, 0, 0
defvar "dp$", dp$, 0, 0
-defvar "tib", tib, 0, initfile
-defvar "#tib", n_tib, 0, initlen
-defvar ">in", to_in, 0, 0
+defdefervar "tib", tib, 0, initfile
+defdefervar "#tib", n_tib, 0, initlen
+defdefervar ">in", to_in, 0, 0
defvar "handler", handler, 0, do_0handler
-defdefervar "latest", latest, 0, lfa_latest
+defvar "latest", latest, 0, lfa_latest
initfile: incbin "sanctuary.fs"
initlen equ $ - initfile