forth: add word "UNTIL"
This commit is contained in:
parent
1df9c4fc1b
commit
587d1d0d69
@ -3,11 +3,12 @@
|
||||
: +! SWAP OVER @ + SWAP ! ;
|
||||
: ALLOT HERE +! ;
|
||||
: C, H C! 1 ALLOT ;
|
||||
: BEGIN H ; IMMEDIATE
|
||||
: COMPILE ' ['] LITN EXECUTE ['] , , ; IMMEDIATE
|
||||
: BEGIN H ; IMMEDIATE
|
||||
: AGAIN COMPILE (bbr) H -^ C, ; IMMEDIATE
|
||||
: UNTIL COMPILE SKIP? COMPILE (bbr) H -^ C, ; IMMEDIATE
|
||||
: NOT 1 SWAP SKIP? EXIT 0 * ;
|
||||
: ( BEGIN LITS ) WORD SCMP NOT SKIP? AGAIN ; IMMEDIATE
|
||||
: ( BEGIN LITS ) WORD SCMP NOT UNTIL ; IMMEDIATE
|
||||
( Hello, hello, krkrkrkr... do you hear me?
|
||||
Ah, voice at last! Some lines above need comments
|
||||
BTW: Forth lines limited to 64 cols because of default
|
||||
@ -17,7 +18,7 @@
|
||||
(bbr)) and then call LITN on it. However, LITN is an
|
||||
immediate and has to be indirectly executed. Then, write
|
||||
a reference to "," so that this word is written to HERE.
|
||||
|
||||
|
||||
NOT: a bit convulted because we don't have IF yet )
|
||||
|
||||
: IF ( -- a | a: br cell addr )
|
||||
|
@ -91,6 +91,7 @@ SKIP? f -- If f is true, skip the execution of the next atom.
|
||||
Use this right before ";" and you're gonna have a
|
||||
bad time.
|
||||
THEN I:a -- *I* Set branching cell at a.
|
||||
UNTIL f -- *I* Jump backwards to BEGIN if f is *false*.
|
||||
|
||||
*** Parameter Stack ***
|
||||
DROP a --
|
||||
|
Loading…
Reference in New Issue
Block a user