1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5 $FORTH_WORD COMP-BACK NOTURNKEY
8 ;; calculate the backward branch offset from HERE to addr
9 ;; and compile into the next available dictionary memory address
11 $FORTH_END_WORD COMP-BACK
13 $FORTH_WORD COMP-FWD NOTURNKEY
16 ;; calculate the forward branch offset from addr to HERE and put
19 $FORTH_END_WORD COMP-FWD
22 $FORTH_WORD BEGIN IMM NOTURNKEY
27 $FORTH_WORD ENDIF IMM NOTURNKEY
29 ?COMP 2 ?PAIRS COMP-FWD ;S
32 $FORTH_WORD THEN IMM NOTURNKEY
37 $FORTH_WORD DO IMM NOTURNKEY
44 $FORTH_WORD LOOP IMM NOTURNKEY
46 ?COMP 3 ?PAIRS COMPILE (LOOP)
50 $FORTH_WORD +LOOP IMM NOTURNKEY
52 ?COMP 3 ?PAIRS COMPILE (+LOOP)
56 $FORTH_WORD UNTIL IMM NOTURNKEY
58 ?COMP 1 ?PAIRS COMPILE 0BRANCH
62 ;;;;$FORTH_WORD END IMM
65 ;;;;$FORTH_END_WORD END
67 $FORTH_WORD AGAIN IMM NOTURNKEY
69 ?COMP 1 ?PAIRS COMPILE BRANCH
73 $FORTH_WORD REPEAT IMM NOTURNKEY
75 ?COMP >R >R AGAIN R> R> 2- ENDIF ;S
76 $FORTH_END_WORD REPEAT
78 $FORTH_WORD IF IMM NOTURNKEY
85 $FORTH_WORD IFNOT IMM NOTURNKEY
92 $FORTH_WORD ELSE IMM NOTURNKEY
94 ?COMP 2 ?PAIRS COMPILE BRANCH
95 HERE 0 , SWAP 2 ENDIF 2 ;S
98 $FORTH_WORD WHILE IMM NOTURNKEY
101 $FORTH_END_WORD WHILE
104 $FORTH_WORD CASE IMM NOTURNKEY
106 ?COMP CSP @ !CSP 4 ;S
109 $FORTH_WORD (X-OF) NOTURNKEY
111 ;; ( ... doswap word-to-compare )
119 R> , ;; this compiles comparator
121 HERE 0 , COMPILE DROP
123 $FORTH_END_WORD (X-OF)
125 $FORTH_WORD OF IMM NOTURNKEY
130 $FORTH_WORD &OF IMM NOTURNKEY
135 $FORTH_WORD ENDOF IMM NOTURNKEY
138 LIT 5 ?PAIRS COMPILE BRANCH
139 HERE 0 , SWAP 2 ENDIF 4 ;S
140 $FORTH_END_WORD ENDOF
142 $FORTH_WORD OTHERWISE IMM NOTURNKEY
146 LIT 6 ;; flag for ENDCASE
148 $FORTH_END_WORD OTHERWISE
150 $FORTH_WORD ENDCASE IMM NOTURNKEY
153 DUP LIT 6 = TBRANCH endcase6
167 $FORTH_END_WORD ENDCASE
170 $FORTH_WORD RECURSE IMM NOTURNKEY
175 $FORTH_END_WORD RECURSE
179 $FORTH_WORD [: IMM NOTURNKEY
183 HERE 0 , ;; branch over
184 ;; put forth word CFA
190 $FORTH_WORD ;] IMM NOTURNKEY