gcc forth.c -o forth ./forth -c eforth.forth cat bottles.forth | ./forth -i eforth.img $ ./forth -i eforth.img OK. WORDS SAVEVM FPUTS FGET FPUT CLOSE OPEN FILE WORDS .S PICK DEPTH SP@ BYE QUIT OK EVAL eval $COMPILE $INTERPRET NUMBER? >NUMBER /STRING DIGIT? QUERY EXPECT ACCEPT KTAP TAP CR s" $" $"| .( ." $," ."| do$ DU. DU.R ? . U. D. .R U.R D.R S.R #> SIGN #S # HOLD <# DIGIT >CHAR CHARS CHAR+ CHAR- OCTAL BINARY HEX DECIMAL PAD SPACES SPACE 2VARIABLE 2CONSTANT 2LITERAL VARIABLE CONSTANT DOES> DOES CREATE doVAR RECURSE ; : $,n OVERT :NONAME ( [CHAR] POSTPONE ['] ! ' find SAME? DATA> TYPE> CODE> LINK> TOKEN WORD PACK$ -TRAILING FILL CMOVE COUNT KEY ?KEY ?RX TYPE EMIT TX! CHAR PARSE parse ALIGNED D2/ DU2/ D2* MU/MOD 2/ 2* / /MOD M * UM / MOD /MOD M/MOD UM/MOD WITHIN UMAX UMIN MAX MIN M- M+ DMAX DMIN DU< D< D= D0= D0> D0< <> 0= 0<> 0> > < = U> U< DABS ABS S>D ?DUP 2@ 2! D- DNEGATE D+ 2- 2+ 1- 1+ - NEGATE XNOR XOR NOR OR AND NOT 2TUCK 2NIP -2ROT 2ROT 2OVER 2SWAP 2DUP 2DROP 2R@ 2R> 2>R TUCK NIP -ROT ROT \ TIB #TIB R@ @EXECUTE EXECUTE WHILE ELSE AFT REPEAT AHEAD UNTIL AGAIN BEGIN NEXT FOR THEN IF ] [ LITERAL STATE? COMPILE +! C, , ALLOT HERE IMMEDIATE =WORDLIST =IMMED BS BL FALSE TRUE RPP SPP STATE LAST NP CP CURRENT CONTEXT HANDLER HLD 'NUMBER 'EVAL CSP TIBB #TIBB >IN SPAN tmp BASE 'PROMPT 'ECHO 'TAP 'EXPECT 'EMIT '?KEY RP0 SP0 DPL FORTH BOOT CELL CELL- CELL+ CELLS + C! C@ F_CLOSE F_OPEN GETC PUTC 0BRANCH BRANCH next R> >R 0< NAND UM+ DUP SWAP OVER DROP ! @ EXIT LIT HALT NOP ; : OK.