There are two Forth implementation available.
FORTH-10 is a Forth language interpreter included in the Panda TOPS-20 distribution. The anonymous programmer describes the implementation as “NOT totally standard”. MIDAS assembly language source is available in file
FORTH is another interpreter originally written on the MIT AI lab DEC-20 called OZ, by John Wilson.
Start the interpreter on TWENEX with the command
FORTH-10. If you have not created an auto-load file, FORTH-10 will respond with the default greeting and prompt.
@FORTH-10 FORTH-10 Type QUIT to exit. Ok
Exit FORTH-10 with the command
Ok prompt, enter data and executable words separated by whitespace. The interpreter pushes each data item onto the top of the stack. Executable words are executed by the interpreter, removing required arguments from the top of the stack and replacing them with output results.
7 3 Ok ( Push 7 then 3 on stack. ) + Ok ( Remove two items from stack (3 and 7), push the sum on stack, so 10 is only item. ) . 10 Ok ( Word . pops top stack item and prints it. Stack is now empty. )
/ interpret stack items as integer values. For floating-point values, use
3.14159 Ok f. 3.14159 Ok ( f. pops stack and displays as floating-point. )
Add new words to the dictionary with the defining words
: name word1 word2 …
; create word name that executes word1 word2 ….
: TIMES5 5 * ; Ok ( Define word TIMES5: Push 5 on stack (previous top value pushed lower), pop 5 and ) ( previous top value, multiply and push product on stack. ) 7 TIMES5 Ok ( Execute the word. ) . 35 Ok ( Pop and display result. )
List words currently defined in the dictionary with
In general, Forth programs keep intermediate results on the stack instead of using variables like other languages. Words are provided to manipulate values on the stack so that they can be used in multiple procedures in the correct order.
|DROP||Pop stack without printing (discards top value).|
|DUP||Copy top value and push it to stack.|
|SWAP||Exchange the top two stack values.|
|ROT||Rotate top three values on stack: [1 2 3] → [2 3 1]|
|OVER||Copy second item on stack and push it to top: [1 2] → [1 2 1]|
Forth source files can be prepared with any editor. Load and interpret source files in FORTH-10 with the command
: HELLO CR ." "HELLO, WORLD!" CR ; Ok HELLO HELLO, WORLD! Ok
Insert comments in Forth source code with the word
(. The comment continues until the next
The following Forth words are hard-coded in the FORTH-10 dictionary.
DUP SWAP ROLL PICK DROP OVER ROT -DUP ?DUP LEVEL DEPTH FLOAT + - * / ^ F+ F- F* F/ FIX MOD /MOD 0= 0=_ 0< 0<= 0> 0>= EXCHANGE JSYS = =_ < <= > >= FLUSH TRACE @ ! +! -! FILL ' '# ] QUIT <# # HOLD #N SIGN #S #> HOME CR CLEAR SPACE SPACES EMIT TYPE [TYPE] KEY ?TERMINAL EXPECT [EXPECT] C@ C! C> C< . .R F. ." :" (") ["] VLIST ( ABS MINUS +- 1+ 1- MAX MIN SINE COSINE ROOT LN <-,, SW,,AP ,,-> AND OR NOT XOR EXECUTE FORGET : ; <BUILDS DOES> , ALLOT LOAD [LOAD] UNLOAD DECIMAL OCTAL BINARY IF ELSE THEN DO LOOP +LOOP I J IJ..N RUNT REPEAT UNTIL CMOVE [CMOVE] HERE LEAVE ERROR [NUMBER] WHILE BEGIN END
At start-up, FORTH-10 searches the user's log-in directory for a file named
AUTO-LOAD.4TH. If such a file exists, it is loaded automatically. If the file does not exist, FORTH-10 displays a standard greeting message.
Start the John Wilson's interpreter on TWENEX with the command
FORTH. It will respond with this greeting and prompt.
@FORTH FORTH/Oz v1 (JohnW) ok
Exit FORTH with the command
Starting FORTH is the standard introductory text for the Forth language.
* Leo Brody, Starting FORTH. Forth, Inc. https://www.forth.com/starting-forth/. [Accessed January 8, 2022.]