summaryrefslogtreecommitdiff
path: root/jefs.fs
diff options
context:
space:
mode:
authorkitty <nepeta@canaglie.net>2026-02-27 00:12:50 +1100
committerkitty <nepeta@canaglie.net>2026-02-27 00:12:50 +1100
commitb2c1fec326315d6f38c8b7c2c392539bf6df58c2 (patch)
treef6d5052895bbb48ab2fcb7fbc8f3528b6475e385 /jefs.fs
parent0cb56caeb9ce0d61275a6d19e7553df5ed86a9cf (diff)
fix new handler
just reset the stack at the error
Diffstat (limited to 'jefs.fs')
-rw-r--r--jefs.fs16
1 files changed, 11 insertions, 5 deletions
diff --git a/jefs.fs b/jefs.fs
index 771c53c..21c1b3e 100644
--- a/jefs.fs
+++ b/jefs.fs
@@ -2,6 +2,7 @@
\ things TODO:
\ better error handling
\ :noname
+\ asciiz strings (for syscalls)
\ DO LOOP
\ s\"
\ <builds does>
@@ -192,12 +193,12 @@ variable hld
\ FUCK is BYE but it takes an error code. its called that because you call it when shit is fucked.
: fuck ( code -- ) 60 syscall1 ;
\ TODO broken as shit
-: (handler) error @ dup case
+: (handler) >s0 error @ dup case
1 of ." stack underflow" endof
2 of ." word not found" endof
." unknown error"
endcase cr fuck ;
-\ : _ ' (handler) handler ! ; _ \ so broken that it breaks Seer
+: _ ' (handler) handler ! ; _ \ i should do immediate ' at some point
: >ffa ( lfa -- ffa ) 8 + ;
: >nfa ( lfa -- nfa ) 9 + ;
@@ -207,10 +208,15 @@ variable hld
: (evaluate) ( c-addr u -- ) 0 >in ! ( u ) #tib ! ( c-addr ) tib ! interpret ;
: evaluate ( c-addr u -- ) tib @ >r #tib @ >r >in @ >r (evaluate) r> >in ! r> #tib ! r> tib ! ;
-: teststr3 s" 1 2 3 2drop drop" ;
-teststr3 evaluate
-
\ FILE I/O {{{
+\ for syswrite see the top of the file
+0 constant stdin
+1 constant stdout
+2 constant stderr
\ }}}
+: teststr3 s" 1 2 3 2drop drop" ;
+teststr3 evaluate
+
+drop
.free bye