From ccd001edb78f39e7ae3f2f29ea67cc4fae9cd1b4 Mon Sep 17 00:00:00 2001 From: kitty Date: Thu, 26 Feb 2026 15:45:15 +1100 Subject: maybe this program is extremely broken. possible --- jefs.fs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'jefs.fs') diff --git a/jefs.fs b/jefs.fs index 3119591..b406e63 100644 --- a/jefs.fs +++ b/jefs.fs @@ -1,3 +1,12 @@ +\ i think something is going on with the stack. i dunno +\ things TODO: +\ EVALUATE +\ DO LOOP +\ +\ argc/argv +\ file io +\ interactive input + : cell+ 8 + ; : syswrite ( u c-addr fd -- n ) 1 syscall3 ; : say ( c-addr u -- ) swap 2 syswrite drop ; @@ -33,7 +42,7 @@ hex : ret, c3 c, ; decimal : >resolve dup here @ swap - 4 - swap d! ; : begin mark ; immediate ( I: -- a ) : else branch >mark swap >resolve ; immediate @@ -68,7 +77,6 @@ variable modrm : rex.b rex @ 41 or rex ! ; : rex, rex @ ?dup if c, then ; - \ REGISTERS {{{ : rax modrm @ 0 or modrm ! ; : rcx modrm @ 1 or modrm ! ; : rdx modrm @ 2 or modrm ! ; : rbx modrm @ 3 or modrm ! ; @@ -168,10 +176,16 @@ variable hld : bytes-free bytes-allocated bytes-used - ; : .free bytes-free u. ." of " bytes-allocated u. ." bytes free (used " bytes-used (.) say ." )" cr ; -: >nfa ( lfa -- nfa ) 9 + ; : >ffa ( lfa -- ffa ) 8 + ; +: >nfa ( lfa -- nfa ) 9 + ; : (words) ( lfa -- ) >nfa dup w@ swap 2 + swap say 2 spaces ; : words latest @ begin ?dup 0<> while dup (words) @ repeat cr ; +\ TODO fix/rewrite interpreter to respect #tib +\ : (evaluate) ( c-addr u -- ) .s 0 >in ! ( u ) #tib ! ( c-addr ) tib ! interpret ; +: (evaluate) ( c-addr u -- ) .s 2drop ; +: evaluate ( c-addr u -- ) >r >r tib @ #tib @ >in @ r> r> (evaluate) >in ! #tib ! tib ! ; + +TESTSTR evaluate .free bye -- cgit v1.2.3