collapseos/apps/forth/dictionary.txt

48 lines
2.0 KiB
Plaintext
Raw Normal View History

2020-03-08 04:13:15 +11:00
Stack notation: "<stack before> -- <stack after>". 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.
2020-03-08 14:18:14 +11:00
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 ***
2020-03-08 10:53:20 +11:00
: 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
2020-03-08 11:42:07 +11:00
+ 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
2020-03-08 14:18:14 +11:00
DOES> -- See description at top of file
DUP a -- a a
2020-03-08 04:13:15 +11:00
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
2020-03-08 04:13:15 +11:00
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
2020-03-08 14:18:14 +11:00
CONSTANT x n -- Creates cell x that when called pushes its value