Stack notation: " -- ". Rightmost is top of stack (TOS). For example, in "a b -- c d", b is TOS before, d is TOS after. "R:" means that the Return Stack is modified. DOES>: Used inside a colon definition that itself uses CREATE, DOES> transforms that newly created word into a "does cell", that is, a regular cell ( when called, puts the cell's addr on PS), but right after that, it executes words that appear after the DOES>. "does cells" always allocate 4 bytes (2 for the cell, 2 for the DOES> link) and there is no need for ALLOT in colon definition. At compile time, colon definition stops processing words when reaching the DOES>. Example: ": CONSTANT CREATE HERE @ ! DOES> @ ;" *** Native Words *** : x ... ; -- Define a new word . n -- Print n in its decimal form @ a -- n Set n to value at address a ! n a -- Store n in address a + a b -- c a + b -> c - a b -- c a - b -> c * a b -- c a * b -> c / a b -- c a / b -> c CREATE x -- Create cell named x DOES> -- See description at top of file DUP a -- a a EMIT c -- Spit char c to stdout EXECUTE a -- Execute word at addr a EXIT R:I -- Exit a colon definition HERE -- a Push HERE's address QUIT R:drop -- Return to interpreter promp immediately KEY -- c Get char c from stdin INTERPRET -- Get a line from stdin, compile it in tmp memory, then execute the compiled contents. OVER a b -- a b a SWAP a b -- b a *** Core-but-Forth Words *** ? a -- Print value of addr a +! n a -- Increase value of addr a by n ALLOT n -- Move HERE by n bytes CONSTANT x n -- Creates cell x that when called pushes its value