summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/boot/ficl/softwords/softcore.fr32
1 files changed, 32 insertions, 0 deletions
diff --git a/sys/boot/ficl/softwords/softcore.fr b/sys/boot/ficl/softwords/softcore.fr
index 2b11142..b57416b 100644
--- a/sys/boot/ficl/softwords/softcore.fr
+++ b/sys/boot/ficl/softwords/softcore.fr
@@ -78,6 +78,38 @@ decimal 32 constant bl
loop drop
;
+\ ** Some TOOLS EXT words, straight from the standard
+: [else] ( -- )
+ 1 begin \ level
+ begin
+ bl word count dup while \ level adr len
+ 2dup s" [IF]" compare 0= >r
+ 2dup s" [if]" compare 0= r> or
+ if \ level adr len
+ 2drop 1+ \ level'
+ else \ level adr len
+ 2dup s" [ELSE]" compare 0= >r
+ 2dup s" [else]" compare 0= r> or
+ if \ level adr len
+ 2drop 1- dup if 1+ then \ level'
+ else \ level adr len
+ 2dup
+ s" [THEN]" compare 0= >r \ level adr len
+ s" [then]" compare 0= r> or
+ if \ level
+ 1- \ level'
+ then
+ then
+ then ?dup 0= if exit then \ level'
+ repeat 2drop \ level
+ refill 0= until \ level
+ drop
+; immediate
+
+: [if] ( flag -- )
+0= if postpone [else] then ; immediate
+
+: [then] ( -- ) ; immediate
\ ** SEARCH+EXT words and ficl helpers
\
: wordlist ( -- )
OpenPOWER on IntegriCloud