From b2c1fec326315d6f38c8b7c2c392539bf6df58c2 Mon Sep 17 00:00:00 2001 From: kitty Date: Fri, 27 Feb 2026 00:12:50 +1100 Subject: fix new handler just reset the stack at the error --- jefs.fs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'jefs.fs') 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\" \ @@ -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 -- cgit v1.2.3