From 02b0c608ac82322c6ef65ee96650f877bb7abd94 Mon Sep 17 00:00:00 2001 From: kitty Date: Sun, 15 Feb 2026 03:31:46 +1100 Subject: working if + then, i think? --- jefs.fs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'jefs.fs') diff --git a/jefs.fs b/jefs.fs index 309f118..eaf93c1 100644 --- a/jefs.fs +++ b/jefs.fs @@ -3,14 +3,16 @@ : begin here @ ; immediate : again branch here @ 4 + - d, ; immediate \ add 4 to get to beginning of the next instruction -\ : if 0branch here @ 0 d, ; immediate ( I: -- a ) -\ : then dup here @ 4 + swap - swap d! ; immediate +: if 0branch here @ 0 d, ; immediate ( I: -- a ) +: then dup here @ swap - 4 - swap d! ; immediate : / /mod swap drop ; : mod /mod drop ; : syswrite ( u c-addr fd -- n ) 1 syscall3 ; : say ( c-addr u -- ) swap 1 syswrite drop ; -\ : saying 0 if TESTSTR say then ; -\ saying bye -TESTSTR say bye +: saying 0 if bye then ; \ err: failure will result in infinite loop? +\ in specific it jumps back to the beginning of the word it seems. why? +\ the correct jump val should be 0x1a +saying TESTSTR say bye +\ TESTSTR say bye -- cgit v1.2.3