summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkitty <nepeta@canaglie.net>2026-02-26 21:03:27 +1100
committerkitty <nepeta@canaglie.net>2026-02-26 21:03:27 +1100
commitca3e5abb30e74b2b7a3265c382dea5346c730de1 (patch)
tree7948996d9190517d82842126fba7dc853a64468f
parentdeb1ce7a9e44008608322bb1abd46bf3ca800440 (diff)
EVALUATE use return stack
-rw-r--r--jefs.fs5
-rw-r--r--jefs.s16
2 files changed, 1 insertions, 20 deletions
diff --git a/jefs.fs b/jefs.fs
index e832d94..0778fcc 100644
--- a/jefs.fs
+++ b/jefs.fs
@@ -1,6 +1,5 @@
\ i think something is going on with the stack. i dunno
\ things TODO:
-\ EVALUATE
\ DO LOOP
\ <builds does>
\ argc/argv
@@ -188,13 +187,11 @@ variable hld
: words latest @ begin ?dup 0<> while dup (words) @ repeat cr ;
: (evaluate) ( c-addr u -- ) 0 >in ! ( u ) #tib ! ( c-addr ) tib ! interpret ;
-: evaluate ( c-addr u -- ) >r >r tib @ #tib @ >in @ r> r> (evaluate) >in ! #tib ! tib ! ;
+: evaluate ( c-addr u -- ) tib @ >r #tib @ >r >in @ >r (evaluate) r> >in ! r> #tib ! r> tib ! ;
\ maybe the old TIB should be on retstack
\ so stack undeflows don't fuck with INTERPRET
: teststr3 s" 1 2 3 .s 2drop drop" ;
-\
teststr3 evaluate
.free
-words
bye
diff --git a/jefs.s b/jefs.s
index e08ed0f..7684069 100644
--- a/jefs.s
+++ b/jefs.s
@@ -1129,22 +1129,6 @@ defword ".s", dots, 0
.space: resq 1
.dmsg: db "DONEDONEYIPPEEEE"
-defword "TESTSTR", teststr, 0
- mov r11, .msg
- pspush r11
- mov r11, 11
- pspush r11
- ret
-.msg: db "test string"
-
-defword "TESTSTR2", teststr2, 0
- mov r11, .msg
- pspush r11
- mov r11, 12
- pspush r11
- ret
-.msg: db "other string"
-
defword "HEREDUMP", heredump, 0
mov rdx, [here]
mov r11, [h0]