Pocket-Guide-to-Forth - Dokumen - Pub
Pocket-Guide-to-Forth - Dokumen - Pub
FORTH
Linda Baker/ Mitch Derck
Addison-Wesley Programming Pocket
Guides
ISBN 0-201-10103-3
ABCDEFGHIJ—AL--89876543
Contents
1. What Is FORTH? 1
4. What is fig-FORTH? 2
The Dictionary 3
The Stack 4
The Interpreters 4
Virtual Memory 4
General Description 6
Low Level Statement 6
“Refer To” List 6
FORTH-79 7
11
WHAT IS FORTH?
1
possible to improperly write FORTH source that is “write-
only” code!)
7. FORTH produces compact code that executes much faster
than other high level languages.
8. FORTH is extremely transportable (i.e., an application
containing no CPU specific definitions can be run on
different CPUs simply by recompiling).
9. FORTH’s compiler can be extended to allow any new
control or data structures conceivable.
10. The programmer has complete control over and may use at
any time all “operating system” functions (including the
ability to create new operating systems—actually, FORTH
can be its own operating system).
WHAT IS fig-FORTH?
3
The Stack: FORTH is based on the use of two LIFO stacks: a
“parameter stack” and a “return stack.” The parameter stack is
used as the primary means of passing data between
definitions. By convention a FORTH definition removes all of
its input parameters from the stack and replaces them with a
result (if any). Data is operated on in a post-fix manner, (using
Reverse Polish Notation) just as on a stack-oriented calculator.
The return stack is used exactly as a stack is used to nest
subroutine return addresses. A FORTH definition is composed
of other definitions that are composed of other definitions, and
so on, until a “primitive” definition, composed of assembly
language code, is reached. As FORTH “chains down” through
these nested levels of definitions, it saves the previous
definition’s return address on the return stack. “Chaining back
up” is merely a matter of retrieving these return addresses
from the return stack.
4
programmer to easily build whatever data structures are
necessary for the application.
5
stack activity enclosed in parentheses. The general format for
parameter stack entries is:
2. Word Pronunciation
3. General Description
6
6. FORTH-79
7
(value \ address —)
(pronounced “store”) stores the 16-bit value located in the
second parameter stack entry into the memory location
specified by the top parameter stack entry.
C! is used to store 8-bit (i.e., byte or character) values.
@ has the opposite effect of
is a low level code primitive.
Refer to C! and
FORTH-79: Is equivalent.
!CSP(—)
!CSP (pronounced “store-C-S-P”) saves the current parameter
stack address in the user variable CSP . !CSP is used with
?CSP to determine whether the parameter stack has become
unbalanced during compilation.
Refer to ?CSP
FORTH-79: No equivalent.
8
Refer to <# ,#> ,#S ,HOLD ,SIGN ,HLD ,BASE ,and
PAD.
FORTH-79: Is equivalent.
<# # #>
9
wordname
where wordname is the name of the desired word.
Two characteristics are exhibited, since LITERAL is used
within the definition:
(comment)
11
(;CODE)(—)
(;CODE) (pronounced “paren-semicolon-code”) is normally
used during Sequence 2 compilation. Its purpose is to compile
the beginning address of the assembly language code, that
must immediately follow (;CODE) into the Code Field of the
definition being compiled.
(;CODE) is actually the run time procedure for CODE
CODE is usually executed at Sequence 1 when defining a
“parent” word. The “parent” defining word is then executed at
Sequence 2 time to create “child” definitions.
Refer to CODE
FORTH-79: No equivalent.
12
Refer to DO LOOP + LOOP (LOOP) and (+ LOOP)
FORTH-79: No equivalent.
(FIND)
13
Refer to LINE
FORTH-79: No equivalent.
(LOOP) (—)
(LOOP) (pronounced “paren-loop”) is the execution time
(Sequence 3) procedure for LOOP . During compile time
(Sequence 2), LOOP compiles the CFA of (LOOP) into the
definition being created.
The purpose of (LOOP) is to serve as the run time end of a
DO.. LOOP structure by performing the following functions:
1. Increments the loop Index by 1.
2. Performs a signed comparison on the newly calculated loop
Index and loop Limit.
3. Executes a branch back to the “DO” portion of the structure
until the Index is either equal to or greater than the Limit.
When this last condition occurs, the Index and Limit are
dropped from the return stack and execution continues with
the word after the DO. . LOOP
14
The address of the first unconvertible character encountered
is returned on the top of the parameter stack.
Refer to NUMBER.
FORTH-79: Is equivalent to CONVERT.
15
*/MOD carries the result of the multiplication as a 32-bit
signed double precision intermediate result for greater
accuracy.
Refer to */
FORTH-79: Is equivalent.
+! (value \ address —)
Second Top of
Entry Stack Result
+V2 +V1 +V2
+V2 -VI -V2
-V2 +V1 —V2
—V2 -VI +V2
16
Refer to ABS and D + —
FORTH-79: No equivalent.
17
+ ORIGIN
(value —)
(pronounced “comma”) compiles (i.e., stores) the 16-bit value
on the top of the parameter stack into the next available
dictionary location and advances the dictionary pointer.
is the primary compiler word. This is the principal means
of compiling a word into the dictionary (e.g., INTERPRET uses
,to compile definitions into the dictionary).
Refer to INTERPRET.
FORTH-79: Is equivalent.
18
-->(—)
— —> (pronounced “next-block”) is used at the end of a text
screen in place of ;S to force interpretation to continue on to
the next sequential screen.
Note: It is not “legal” to continue a colon definition onto the
next screen (i.e., a ; must terminate a definition before a — —>
is issued).
— —> is an IMMEDIATE word.
Refer to LOAD and INTERPRET.
FORTH-79: Not explicitly defined but listed in “Referenced
Word Set.”
-DUP
-FIND
19
—TRAILING ( beginning addr \ count —
beginning addr \ count)
—TRAILING (pronounced “dash-trailing”) supresses trailing
blanks when outputting a character string with TYPE . Using
these parameters, —TRAILING examines the character string
and reduces the character count so that trailing blanks are not
output by a subsequent TYPE . —TRAILING scans backward
from the last character toward the first character. The first non-
blank character encountered stops the scan.
Refer to COUNT and TYPE.
FORTH-79: Is equivalent.
• (value to be output —)
• (pronounced “dot”) performs a binary-to-ascii conversion
(pictured numeric output) on the 16-bit signed value on the
top of the stack and prints the result (followed by one space)
on the output device. The sign is printed only if the value is
negative. The current value in BASE is used as the conversion
radix.
Use U. to display 16-bit values.
Refer to D. and D.R
FORTH-79: Is equivalent.
•,, ( — )
(pronounced “dot-quote”) is a special FORTH word that
exhibits both execution and compile time traits. The purpose
of .“ is to output a text string. When this string is output
depends upon the state of the system when the word is
executed. When execution begins, a test is made to determine
if the system is in execution or compile state.
is used in the form:
text string”
20
If the system is in execution state (i.e., .“ is not inside a
definition), the text string is output immediately. If the system
is in compile state, .“ behaves as a standard compiler word
and therefore exhibits both compilation time and execution
time behavior.
At compile time: The execution time procedure address (that
of (.“) ), the length of the string, and the string itself are
compiled into the Parameter Field of the definition.
At execution time: The procedure (.“) outputs the text string.
is defined as IMMEDIATE.
Refer to (.“)
FORTH-79: Is equivalent.
21
/ ( dividend \ divisor — quotient)
/ (pronounced “divide”) divides a 16-bit signed single
precision value by another 16-bit signed single precision value
and replaces them with their 16-bit signed quotient. The
second stack value is divided by the top stack value.
The basis of / is /MOD . /MOD leaves a quotient and
remainder. / drops this reminder. This is very similar (but
opposite) to MOD , which drops the quotient.
Refer to /MOD
FORTH-79: Is equivalent.
O(—O)
o is a single precision CONSTANT value. To save compiling
time, this value has been made into a CONSTANT.
FORTH-79: No equivalent.
0= (value—truth flag)
0= (pronounced “zero-equal”) examines the value at the top
of the parameter stack and replaces it with a true flag (1) if the
value is equal to 0 or with a false flag (0) if the value is not
equal to 0.
0= is a low level code primitive.
FORTH-79: Is equivalent.
1(—1)
1+ (value—value+1)
23
2(—2)
2+ (value—value+2)
2+ (pronounced “two-plus”) adds 2 to the 16-bit value on the
top of the parameter stack.
Note: The algebraic rules of signed addition apply here.
FORTH-79: Is equivalent.
3(—3)
3 is a single precision CONSTANT value. To save compiling
time, this value has been made into a CONSTANT.
FORTH-79: No equivalent.
24
Note that : is an IMMEDIATE word.
Refer to STATE and VOCABULARY.
FORTH-79: Is equivalent.
;CODE
25
CODE is a Sequence 1 defining word that creates Sequence
2 defining words. CODE is used in conjunction with another
defining word (one that creates the header of the defining
word being created) to create defining words (“parents”) that
in turn create other words (“children”).
When creating a defining word (at Sequence 1), CODE acts
as a dividing line between the high level words that create the
“child” (at Sequence 2) and the assembly language code words
that are the “child’s” run time procedure (at the “child’s”
Sequence 3).
The function of CODE is very similiar to that of DOES>
except that CODE defines the beginning of a code procedure,
while DOES> defines the beginning of a high level procedure.
CODE also SMUDGEs the header created by whatever
defining word was used to begin the definition.
Note that the Version 1.1 fig-FORTH Model does not set
CONTEXT to the ASSEMBLER vocabulary. To rectify this
problem, the word ASSEMBLER should immediately follow
CODE.
;CODE only executes at Sequence 1. (;CODE) executes at
Sequence 2.
The end effect of CODE is that the dictionary definition
structure of the “child” is determined by the words preceding
;CODE ; but when the “child” executes at Sequence 3, the
code following CODE is executed.
This allows whole new families of dictionary structures and
the code to process these structures to exist. An example of a
structure could be a graphics control table while the code
following ;CODE could display the table.
Note that CODE is an IMMEDIATE word.
Refer to (;CODE) ,DOES> ,and <BUILDS
FORTH-79: No equivalent.
;S (—)
26
;S is also used to stop interpretation of a screen.
;S is a low level code primitive.
FORTH-79: Is equivalent to EXIT
27
<# SIGN
start one multiple sign end
digit digits
<BUILDS
28
C’) . !
c: 0
0 . i5 . 0
C LLLLL
a) . a) . )
E cV
Cl) z
0
: ‘b —
QiQ)
a)
E U) a) !?
)
20a) DD A D
Li1 D0 :><
<
.Cnz
EcV ci E
0
L
><
q)q)
.
a)
0 0
Q- i
C
0
a)
o Cl)
(I)
C.) A
C (I) a)c’
-J
0 w-9
Qci
O a)a)
Cl) Q
a)
29
definitions. This is the address of the first word following
DOES>.
Refer to DOES> , VOCABULARY ,FORTH and CODE.
FORTH-79: Is equivalent to CREATE. Refer to FORTH-79
Standard.
30
memory location and prints the result on the output device.
The current value in BASE is the conversion radix.
Refer to D.R
FORTH-79: Is equivalent.
?COMP (—)
?CSP (—)
?CSP (pronounced “question-C-S-P”) issues Error Message 14H
(“DEFINITION NOT FINISHED”) and executes a QUIT if the
current parameter stack pointer position does not equal that
stored in the user variable CSP
This is most often used in compiler security, since an
unbalanced stack often reflects a compilation error. Normally,
a !CSP is used to save the stack pointer position when
beginning compilation (e.g., in : ) and ?CSP is used to check it
when finishing compiling (e.g., in ; ).
When an error message is issued, the exact nature of the
action taken depends upon the contents of the user variable
WARNING.
Refer to WARNING , MESSAGE , ?ERROR, STATE,
(ABORT) , and QUIT.
FORTH-79: No equivalent.
31
?ERROR (truth flag \ Error Message
Number —)
?ERROR (pronounced “question-error”) issues the specified
error message and executes a QUIT if the truth flag is true
(non-zero).
When an error message is issued, the exact nature of the
action taken depends upon the contents of the user variable
WARNING.
Refer to ?ERROR ,MESSAGE , WARNING ,QUIT ,ABORT,
and (ABORT)
FORTH-79: No equivalent.
?EXEC (—)
?LOADING (—)
32
Refer to ?ERROR , STATE , MESSAGE ,WARNING,
(ABORT) ,and QUIT.
FORTH-79: No equivalent.
?STACK (—)
?STACK (pronounced “question-stack”) is an installation
dependent word tht checks for stack underfiow and stack
overflow and executes ?ERROR if either condition has
occurred.
Stack underfiow generally occurs when the stack pointer has
“backed up” behind the initial starting location (“EMPTY
STACK”). Stack overflow generally occurs when the stack has
“grown” into the PAD area just below the end of the
dictionary (“STACK OVERFLOW”).
When an error message is issued, the exact nature of the
action taken depends upon the contents of the user variable
WARNING.
Refer to ?ERROR , WARNING ,MESSAGE ,QUIT ,ABORT,
and (ABORT)
FORTH-79: No equivalent.
33
?TERMINAL (— flag)
?TERMINAL (pronounced “question-terminal”) is an
installation dependent word that normally determines whether
there is a character ready to be input from a terminal.
This word is sometimes used to determine first if the break
key has been pressed, then if any other key has been pressed.
A true flag (1) indicates that a character is ready. KEY can
then be used to read that character. A false flag (0) indicates
that no key has been pressed.
?TERMINAL is a low level code primitive.
FORTH-79: No equivalent.
ABORT(—)
ABORT can be considered the warm start routine for the
FORTH system. ABORT resets the parameter stack, displays a
start-up message, sets CONTEXT and CURRENT to FORTH
sets BASE to DECIMAL , and issues a QUIT (which stops any
compilation and starts interpretation from the input terminal).
ABORT is commonly called by (ABORT) when WARNING
is — I and an error condition has been detected.
Refer to (ABORT) ,COLD ,and QUIT.
FORTH-79: Is equivaient.
34
ABS (signed value — absolute value)
ABS (pronounced “absolute”) converts a signed single
precision value on the top of the parameter stack into its
absolute unsigned value.
FORTH-79: Is equivalent.
AGAIN(—)
35
AND is a low level code primitive.
FORTH-79: Is equivalent.
36
BASE (— data address)
BASE is a 16-bit single precision user variable that contains
the current number base (or radix) used for input and output
numeric conversion.
HEX and DECIMAL are examples of words that set BASE
Executing HEX stores 16 (decimal) into BASE . Executing
DECIMAL stores 10 (decimal) into BASE
Refer to HEX , DECIMAL, (NUMBER) , . ,and USER.
FORTH-79: Is equivalent.
BEGIN (—)
BL (— 20H)
37
“space”) onto the top of the parameter stack. Referencing a
blank via the name BL makes FORTH more readable.
Refer to WORD.
FORTH-79: No equivalent.
38
back to storage before that location is overwritten with new
data.
Refer to BUFFER , B/BUF , UPDATE FLUSH , OFFSET,
DRO , DR1 , and R/W.
FORTH-79: Is equivalent.
BRANCH (—)
C! (byte \ address —)
39
C, (single byte value —)
C, (pronounced “C-comma”) stores the low order single byte,
or character, from the top of the parameter stack into the next
available dictionary location and advances OP
Refer to OP
FORTH-79: Not explicitly defined but listed in “Referenced
Word Set.”
C@ (address — byte)
40
CMOVE ( source \ destination \ length —)
CMOVE (pronounced “C-move”) is a character (byte) oriented
word that moves a character string byte-by-byte from the
source address to the destination proceeding toward high
memory. Note that bytes are moved from the beginning of the
string first; therefore the destination string cannot overlap the
source string. (Some versions of FORTH use the word
<CMOVE (backward CMOVE) to move strings that overlap in
this manner.)
Note, however, that if the destination address is 1 byte
higher than the source address, CMOVE will ripple the first
byte throughout the specified length of memory.
CMOVE is a low level code primitive.
FORTH-79: Is equivalent.
COLD (—)
COLD is the “cold start” routine for the FORTH system. The
purpose of COLD is to initialize user variables to their start-up
values and then call ABORT
COLD may be executed from the terminal. Its effect is to
remove all definitions except the basic FORTH vocabulary and
reset the system.
COLD performs seven basic tasks:
41
COMPILE
42
“specified” CFA and causes the location following the
specified CFA to be executed when COMPILE finishes.
This concept of specifying the name of the definition to be
compiled at Sequence 1 but not actually compiling it into a
definition until Sequence 2 is called “deferred compilation.”
Refer to INTERPRET and IF
FORTH-79: Is equivalent.
CONSTANT
n CONSTANT cccc
43
CONTEXT is set to point to a specific vocabulary by
executing that vocabulary name. For example, FORTH causes
CONTEXT to be aimed at the FORTH vocabulary. At system
start-up, CONTEXT is initialized to FORTH by ABORT , which
is called by COLD . Note that this means that any time after
an ABORT occurs, CONTEXT will be aimed at the FORTH
vocabulary.
Refer to VOCABULARY , ABORT , and USER.
FORTH-79: Is equivalent.
BEFORE AFTER
CR (—)
CR (pronounced “carriage-return”) is an installation dependent
word that usually transmits a carriage return and a line feed to
the selected output device.
CR is a low level code primitive.
FORTH-79: Is equivalent.
44
CREATE (—)
CREATE is a defining word used to “create” the header
portion of a FORTH definition. It is used in the form:
CREATE definition name
45
D + (double \ double — 32-bit sum)
o + (pronounced “0-plus”) adds the top two 32-bit signed
values on the parameter stack and replaces them with their
32-bit signed sum.
Note that generation of a carry goes unnoticed.
0+ is a low level code primitive.
FORTH-79: Is equivalent.
Second Top of
Entry Stack Result
+02 +Vi +02
+02 -Vi -02
-02 +Vi -D2
-02 -Vi +02
FORTH-79: No equivalent.
D.(double—)
46
D.R ( double \ field width —)
DR (pronounced “D-dot-R”) performs a binary-to-ascii
conversion (pictured numeric output) on a signed 32-bit
double precision value and prints the result in a right justified
field whose minimum width is specified by the value on the
top of the stack. D.R does not truncate values larger than the
field width, display the sign unless negative, or print a trailing
blank.
Use 0. if a minimum width field is not needed.
The current value in BASE is the conversion radix.
Refer to <# , , SIGN , #S , and #>.
FORTH-79: Is equivalent.
DECIMAL (—)
DECIMAL sets the user variable BASE to 10 (decimal). This
causes all numeric inpilt and output conversions to be
performed in decimal (base 10).
Note that this is not an IMMEDIATE word.
Refer to (NUMBER) and BASE.
FORTH-79: Is equivalent.
DEFINITIONS (—)
DEFINITIONS specifies the vocabulary into which new
“definitions” are to be added.
DEFINITIONS copies the contents of the user variable
CONTEXT into CURRENT. CONTEXT points to the
47
vocabulary that is to be searched first when performing
dictionary searches and is set to point to a specific vocabulary
by stating (i.e., executing) the vocabulary name. The user
variable CURRENT points to the vocabulary that will
“currently” have new definitions appended to it.
Refer to VOCABULARY CURRENT ,CONTEXT , and
CREATE.
FORTH-79: Is equivalent.
DIGIT
DLITERAL
48
Although DLITERAL has no effect when executed outside of
a colon definition, it does not signal an error.
The compile time action (Sequence 2) of DLITERAL is to
compile a dynamically calculated 32-bit value into a
definition. The end result of this compile action is the same as
using LIT twice.
The execution time action of DLITERAL is that of LIT . That
is, upon execution of each LIT , the compiled 16-bit value is
placed onto the top of the parameter stack.
Note that DLITERAL is an IMMEDIATE word.
Refer to LITERAL LIT , [ , ] ,and INTERPRET.
FORTH-79: No equivalent.
DO ( Limit \ Index —)
DO marks the beginning of a fixed repetition loop structure.
This is identical in purpose to the FORTRAN DO and the
BASIC FOR statements. DO creates a DO. . LOOP in
conjunction with LOOP or + LOOP in the form:
49
DOES>
50
0
o
Q)Q)
. a)
0)
b
-Q•5•5•5 c A
a)
u:u:irj Cl)
: • o•
G) • Ecv w 5 G) W 2o
•_
-
L
q)q)
V E
0 X ‘!2
)
0 W
C
0
0 0)
0
U
C
0
a)
51
a)
E
C G)
G) 0
.C C
C
0
-J
•!5.? 2.
LLÜLL
o
•0
G)
Q
G)
Cl)
G) W o o
G)oI Ecx
C)
a)
G) V
•0
o w
V o
o
a)
“4L
o
G) G)
x
G) (I)
V
G)
G) G)
I
I
I
I C
C
U) 0
G)
VV Cl) 0 2 :.cD
i;’;
.c
0
z .? c G)
LU LLü -J
()
a) G) 0 -‘o •-
a
Ec V E
j0 0
‘2
cx
ix
c0 u)
=
C
Cfla)
0 iw LIJ •C
I Oo P
I
c
I
I 2? 1E
52
Note that many “children” can be created via a single
“parent” defining word and all of the “children” reference the
same execution time (Sequence 3) procedure located within
the “parent” definition.
Refer to <BUILDS , CODE ,and NEXT.
FORTH-79: Is equivalent. Note that the fig-FORTH Model
version of DOES> uses the first word of the Parameter Field as
a pointer to the execution time (Sequence 3) procedure.
FORTH-79 DOES> does not utilize the first Parameter Field
location.
DP (— data address)
53
Refer to NUMBER , (NUMBER) INTERPRET , and USER.
FORTH-79: Not explicitly defined but listed in “Referenced
Word Set.” Note that DPL as described in the Referenced
Word Set is used for numeric output, not input.
DRO(—)
DR1(—)
ELSE (—)
54
(Beware. This differs in form from the PASCAL
IF. . .THEN. . ELSE structure.) The use of ELSE in this type of
structure is optional. If ELSE is omitted, a false Boolean input
causes control simply to branch to the word immediately
following the THEN . When used, ELSE must be located
within an IF. . ELSE. . .THEN structure.
An IF. . ELSE. . .THEN structure must be used within a
colon definition.
Note that ELSE is an IMMEDIATE word.
Refer to IF ,THEN , ENDIF ,and BRANCH.
FORTH-79: Is equivalent.
EMPTY-BUFFERS (—)
55
Given a beginning text address and a delimiter character,
ENCLOSE scans the text and leaves its results on the stack.
These results are in the form of byte offsets from the beginning
of the text address. The parameters returned by ENCLOSE are
(1) an offset to the beginning of a delimited string (i.e., the
first non-blank character), (2) the offset to the end of that same
string, (3) the offset to the next byte to examine, and (4) the
original beginning address.
There are three specific conditions that may arise when
parsing any given character string. A description of each
condition and a description of the stack upon exit from that
condition follows:
Condition I
Scan encountered a null character before encountering any
non-delimiter characters.
56
Condition of stack at exit:
Top of stack: Offset of first unexamined character.
Second entry: Offset to first delimiter after non-delimiter
character(s).
Third entry: Offset to first non-delimiter character.
Fourth entry: Beginning address of character string to
examine.
ENCLOSE is a low level code primitive.
Refer to WORD.
FORTH-79: No equivalent.
ENDIF (—)
57
The contents of IN and BLK are saved to aid in determining
where and why the error occurred.
Refer to MESSAGE ,WARNING ,IN ,and BLK.
FORTH-79: No equivalent.
58
too much of the dictionary. FENCE is initialized at start-up
time by COLD with data from the origin parameter area, but its
contents may be changed at any time to reflect a new
dictionary structure.
Refer to FORGET and USER.
FORTH-79: No equivalent.
FIRST (— address)
59
FLUSH (—)
FLUSH writes to disk all the buffers in the buffer array that
have been flagged as “updated.” FLUSH is FORTH’s virtual
memory equivalent to “traditional” languages “write-to-disk”
command.
A buffer is flagged as being “updated” when the most
significant bit (i.e., the update bit) in the header portion of a
buffer is set. This update bit is set via the word UPDATE If
there are no “updated” buffers, FLUSH has no effect.
Executing EMPTY-BUFFERS prior to executing FLUSH means
that no data will be written to disk.
See BUFFER, + BUF , UPDATE , and BLOCK.
FORTH-79: Is equivalent to SAVE-BUFFERS.
FORGET (—)
FORGET deletes definitions from the dictionary. The specified
definition and all definitions following, up until the end of the
dictionary, are “forgotten.”
In the fig-FORTH version of FORGET ,the programmer must
ensure that the CONTEXT and CURRENT vocabularies are the
same, or the Error Message 18H (“DECLARE VOCABULARY”)
will be issued and the FORGET will QUIT or ABORT.
The user variable FENCE is used in conjunction with
FORGET to set a boundary past which FORGET cannot forget.
Warning: Using FORGET in a system comprised of multiple
vocabularies will probably (but not necessarily always) cause
the system to crash.
Refer to FENCE and VOCABULARY.
FORTH-79: Is equivalent.
FORTH(—)
FORTH is the name of the “vocabulary” definition for the
FORTH vocabulary. The FORTH vocabulary contains all of the
standard FORTH definitions. Executing FORTH sets CONTEXT
to point to the FORTH vocabulary. This causes dictionary
searches to begin with the FORTH vocabulary. Since
60
CONTEXT now points to FORTH , executing DEFINITIONS
will then cause new definitions to be appended to the FORTH
vocabulary.
Refer to VOCABULARY , CONTEXT , CURRENT,
DEFINITIONS <BUILDS , DOES> , and VOC-LINK.
FORTH-79: Is equivalent.
HERE (— address)
HEX(—)
61
by # to place each converted ascii digit into memory. Numeric
punctuation (characters such as commas, decimal points, signs,
dollar signs, etc.) can also be placed in output strings via
HOLD.
The address of the next available location is kept in the user
variable HLD . HOLD decrements HLD before each character
store. HOLD is used within a <#. . . #> expression. <# is
used to initialize HLD to the beginning of PAD . Therefore
characters are stored into memory from high to low memory
starting from one byte before the beginning of PAD and
working toward the end of the dictionary.
Refer to # , <# , #> , SIGN , PAD , and HLD.
FORTH-79: Is equivalent.
I (— Index value)
I copies the current DO. . LOOP Index onto the top of the
parameter stack. This is analogous to the loop variable in a
BASIC FOR. . .NEXT loop. The word I (and not R) should
always be used to obtain the current loop Index. The action of
I is undefined outside of a DO. . LOOP structure.
I is a low level code primitive.
FORTH-79: Is equivalent.
62
IF (truth flag —)
IF must be used within an IF. . THEN or IF. . .ELSE. . THEN
structure. ( ENDIF may be used in place of THEN if desired,
but THEN is the preferred usage.) The format of these
structures is:
IMMEDIATE (—)
IMMEDIATE sets the precedence bit of the most recently
created definition. A definition whose precedence bit is set
will be executed “immediately” by INTERPRET even when the
system is in compile state. IMMEDIATE almost always follows
the definition to which it refers.
BEGIN is an example of a compiler word (a conditional
compiler in this case) that is flagged as IMMEDIATE by being
followed by the word IMMEDIATE
Refer to INTERPRET, [COMPILE] ,LATEST ,and STATE.
FORTH-79: Is equivalent.
IN (— data address)
IN (pronounced “in”) is a 16-bit single precision user variable
containing the byte offset from the beginning of the current
input text buffer (whether using the Terminal Input Buffer or a
disk buffer).
IN is set to 0 by QUERY (for TIB input) and by LOAD and
63
— —> (for mass storage input). WORD then references and
increments IN as words in the buffer are moved to HERE
Refer to WORD ,QUERY , LOAD, - -> , HERE , and
USER.
FORTH-79: Is equivalent to >IN (pronounced “to-in”).
INDEX prints the first line of each screen within the specified
range of screens inclusively. The index listing will be
terminated if any terminal key is pressed.
Refer to LINE and ?TERMINAL.
FORTH-79: Not explicitly defined but listed in “Referenced
Word Set.”
INTERPRET (—)
64
IP generally serves as a pointer to the next “word” (actually
a CFA within the Parameter Field of a definition) to execute.
NEXT jumps indirectly “through” this pointer to execute the
Code Field procedure.
IP is not a true FORTH word. It is not a variable. It is a
logical entity and may be physically kept in registers or
memory or whatever, depending upon the exact system
implementation.
Refer to NEXT, : , ;S ,DOES> ,and EXECUTE.
LATEST (— address)
LEAVE (—)
65
next execution of LOOP or + LOOP . The Index value remains
valid and unchanged.
LEAVE is a low level code primitive.
Refer to DO LOOP, + LOOP (LOOP), (+ LOOP) ,and I.
FORTH-79: Is equivalent.
LIMIT (— address)
LIMIT is a single precision CONSTANT value. This constant
places the memory address of the next memory location past
the end of the last or highest (hence “limit”) block buffer in
the buffer array onto the top of the parameter stack.
Conversely, FIRST is the constant that reflects the lowest
(hence “first”) buffer array address.
Refer to + BUF BLOCK BUFFER ,and FIRST.
FORTH-79: No equivalent.
LITERAL
67
Note: “0 LOAD” will cause a return stack overflow and a
system crash!
Refer to - -> WORD ,and INTERPRET.
FORTH-79: Is equivalent.
LOOP (—)
LOOP ends a DO.. LOOP structure in conjunction with the
word DO.
LOOP increments the ioop Index by one and compares this
new Index value with the Limit value. Note: This action is
actually performed by (LOOP) at run time. If the Index value
is less than the Limit value, a branch back to the “loop body”
of the DO. . LOOP structure is executed. If the Index is equal
to or greater than the Limit, then both of these values are
dropped from the return stack, and interpretation continues
with the definition following the DO. . LOOP.
Note that LOOP is an IMMEDIATE word.
If an increment value different from I is needed, + LOOP
should be used.
Refer to (LOOP DO, + LOOP , and (DO).
FORTH-79: The name is the same, but it differs in action.
Refer to FORTH-79 Standard.
68
signed quotient. The remainder takes its sign from the
dividend.
Note that M/ uses a double precision dividend while /MOD
uses a single precision dividend.
Refer to UI
FORTH-79: No equivalent.
69
Message Number 0 will not output anything as Line 0 of
Screen 4 is a comment. An Error Message Number 0 input to
ERROR causes a “?“ (pronounced “HUH?”) to be printed.
Note that, while the FORTH system uses MESSAGE for error
messages, its use is not restricted to that purpose. Applications
may use the word to output any manner of desired messages
stored anywhere on the disk.
Refer to WARNING , ERROR, LINE , OFFSET , and
BLOCK.
FORTH-79: No equivalent.
70
MON(—)
MON (pronounced “mon”) exits to the system monitor of the
system FORTH is running on (or under). The word may have
other names, but the function is always the same.
MON may be a high or low level definition, depending upon
the specific installation.
FORTH-79: No equivalent.
NEXT
NULL (—)
NULL (pronounced “null” and sometimes called “X” ) causes
an exit from the endless loop in the INTERPRET procedure.
71
“NULL” is a pseudonym for an ascii null character (00). The
actual Name Field of NULL consists of one ascii null
character.
As INTERPRET sequentially moves through a buffer,
compiling and interpreting as it goes, it eventually reaches the
end of this buffer. By convention, all buffers must end with a
null character. When INTERPRET encounters this null
character, it searches the dictionary for a Name Field match. A
match occurs when the null definition is encountered. Since
NULL is a valid definition and is also IMMEDIATE , it is
executed.
NULL causes an exit from INTERPRET by dropping the top
address of the return stack. Then, when NULL returns, it does
not exit to the level it was at (i.e., back to INTERPRET), but
instead exits to one level of nesting higher (i.e., back to the
definition that contained INTERPRET —more specifically to
the definition immediately following INTERPRET ).
Note that NULL is an IMMEDIATE word.
Refer to INTERPRET QUIT ,and LOAD.
FORTH-79: No equivalent.
72
Refer to (NUMBER) , DPL , BASE , and WORD.
FORTH-79: Is equivalent to CONVERT.
73
OVER ( value2 \ valuel — value2 \ valuel
\ value2)
OVER copies the second parameter stack entry onto the top of
the parameter stack.
OVER is a low level code primitive.
FORTH-79: Is equivalent.
PAD (— address)
PAD places the address of the text output buffer onto the top
of the parameter stack. PAD does not occupy a fixed location
in memory; instead it is always a fixed offset away from the
current end of the dictionary.
The PAD buffer is not a fixed length. It occupies memory
between the end of the dictionary and the beginning of the
user area. How much buffer is available at any time is a factor
of both the installation memory map and the current
dictionary size.
PAD is referenced in two ways:
74
PFA ( Name Field Address — Parameter Field
Address)
PFA (pronounced “P-F-A”) converts a given Name Field
Address ( NFA ) of a dictionary definition into its Parameter
Field Address ( PFA ).
Refer to NFA ,CFA ,and LFA.
FORTH-79: No equivalent. A FORTH-79 program may not
address into a definition’s Parameter Field.
QUERY(—)
QUERY inputs up to 80 (decimal) characters of terminal text.
This text input is prematurely halted by encountering a
carriage return.
Text is placed into the Terminal Input Buffer, as specified
by the contents of the user variable TIB . After text is input,
the character pointer IN is set to 0. The carriage return is not
stored in memory. A null (0) and a blank (20H) are appended
to the end of the character string.
Refer to EXPECT , WORD , and TIB
FORTH-79: Is equivalent.
QUIT (—)
QUIT initially starts up FORTH, “quits” execution of a
routine, and is the most basic and primary loop of the FORTH
75
system. QUIT stops compilation, resets the return stack
pointer, and starts interpretation from the input terminal data
stream.
R copies the top of the return stack to the top of the parameter
stack. In this sense, it performs the same function as I
(although, owing to installation differences, I should still be
used with DO. . LOOP s to perform this function).
Note that R does not “drop” the top of the return stack and
therefore cannot be used to compensate for the use of >R
R is a low level code primitive.
Refer to I
FORTH-79: Is equivalent to R
R# (— data address)
76
The word has two major functions:
RO (— data address)
REPEAT (—)
77
BEGIN
“Set Exit Conditional”
WHILE
“True Portion of Loop Body”
REPEAT
RP! (—)
RP! (pronounced “R-P-store”) is an installation dependent
word that initializes the return stack pointer to the address
contained in the user variable RO
RP! is a low level code primitive.
Refer to RO
FORTH-79: No equivalent.
78
S — >D (single precision number — double
precision number)
S — >D (pronounced “S-to-D”) extends a signed single
precision number to form a signed double precision number.
Warning: S — >D must be used to convert single precision
values to double precision values in order to correctly
propagate the sign bits.
S — >D is a low level code primitive.
FORTH-79: No equivalent.
SO (— data address)
79
SIGN places an ascii minus sign in the next available
character string location if the sign of the third parameter stack
entry (i.e., a “sign flag”) is negative. The magnitude of the sign
flag entry is ignored. The top two entries contain a double
precision value.
Refer to # , <# , ,#S , HOLD ,HLD , PAD ,and
DABS.
FORTH-79: Is equivalent.
SMUDGE (—)
SP! (—)
80
SPACE (—)
SPACES (count —)
SPACES outputs a specified number of ascii blanks (20H) to
the output device.
FORTH-79: Is equivalent.
TASK (—)
TASK is a no-op (no operation) definition that is used as a
“boundary marker” between applications or program segments.
Refer to FORGET.
FORTH-79: No equivalent.
81
THEN (—)
THEN marks the end of an IF.. THEN or IF. . ELSE. . THEN
structure. (ENDIF may be used in place of THEN , but THEN
is the preferred word.) THEN must be used in the form:
or
TRIAD ( Screen # —)
83
TYPE ( beginning address \ # of
characters —)
TYPE outputs a character string to the output device. No
output takes place if the supplied length is 0.
Refer to COUNT.
FORTH-79: Is equivalent.
U.(value—)
84
UI ( unsigned double precision dividend \
unsigned divisor — unsigned remainder \
unsigned quotient)
U/ (pronounced “U-slash”) performs unsigned division upon a
double precision dividend using a single precision divisor. U/
is the primitive division word used by all of the other division
words such as M/ , MOD , and M/MOD . Note that U/ performs
unsigned division.
U/is a low level code primitive.
FORTH-79: Is equivalent to U/MOD.
85
UPDATE (—)
USER
n USER cccc
86
where n is the variable’s offset from the beginning of the user
area and cccc is the name of the variable.
USER variables play a very important role in multitasking
FORTH systems; however, in non-multitasking systems, they
could simply be replaced by variables.
User variables are usually initialized at system start up time
by COLD with initialization data stored in the Origin
Parameter Area. (Refer to COLD .)
The execution time (Sequence 3) action, when the named
variable is referenced, is to place the absolute address (offset
+ beginning address) of the 16-bit variable location onto the
top of the parameter stack.
FORTH-79: Not explicitly defined but listed in “Referenced
Word Set.”
VARIABLE
n VARIABLE cccc
87
where n is the variable’s initial value and cccc is its assigned
name.
VLIST (—)
VOCABULARY
88
The definition time action of VOCABULARY is to create a
vocabulary definition that serves as the head or first entry of a
new vocabulary.
The execution time action of VOCABULARY is to store the
address of that vocabulary’s “Vocabulary Link Pointer” into
the user variable CONTEXT . The effect of this is to cause the
named vocabulary to be searched first whenever a dictionary
search is performed.
Refer to CONTEXT CURRENT , DEFINITIONS, LATEST,
FORTH, and VOC-LINK.
FORTH-79: Is equivalent. Note, however, that the structure
of vocabularies differs from the fig-FORTH Model. Refer to the
FORTH-79 Standard.
I MESSAGE
L.. _.1
Figure 4
How WARNING Is Used
90
When ERROR executes and WARNING contains a nonnegative
value (i.e., zero or positive value), MESSAGE executes
and then QUIT stops execution.
When MESSAGE executes and WARNING contains a zero,
only the message number is output. (This allows the system to
operate without a disk.)
When a MESSAGE executes and WARNING is non-zero, text
messages are output using Line 0 of Screen 4 of Drive 0 as a
base location.
Refer to MESSAGE ,ERROR , and USER.
FORTH-79: No equivalent.
BEGIN
“Set Exit Conditional”
WHILE
“True Portion/Loop Body”
REPEAT
WORD parses one word from the input stream. For example,
WORD reads text characters from the input stream until the
specified delimiter character is encountered.
Text characters are transferred from the input stream to
memory starting at the next available dictionary location
(HERE).
WORD leaves the character count of the text string in the
first byte of the string. The string is terminated with one or
more blanks.
Leading delimiter characters are ignored and not transferred
to memory. Trailing delimiters are not transferred to memory.
Ascii “nulls” (OOH) are treated as unconditional delimiters.
Refer to ENCLOSE for specific conditions and their results.
The source of the input stream is determined by the value of
the user variable BLK . If BLK is zero, text is input from the
terminal buffer. If BLK is non-zero, the value specifies the disk
block to be used as input.
Refer to ENCLOSE , BLK , and IN.
FORTH-79: Is equivalent. Note that FORTH-79 requires that
WORD return the beginning address of the parsed string.
X (— data address)
92
XOR (valuel \ value2 — logical result)
XOR (pronounced “Exclusive-OR” or “X-OR” or “X-O-R”)
performs a bit-wise logical Exclusive-OR function on the two
values on the top of the stack and replaces them with their
logical result.
XOR is a low level code primitive.
Refer to TOGGLE
FORTH-79: Is equivalent.
93
(pronounced “right-bracket”) places the system into the
compilation state. This word is normally used to resume
compilation after [ was used to halt compilation. The effect of
is to place a non-zero value into the user variable STATE
Note that STATE is set to C0H and not just 01. This is done
to save processing time in INTERPRET . Setting STATE to a
non-zero value puts the system into compilation mode, but,
even in compilation mode, IMMEDIATE words must be
executed and not compiled (e.g., compiler words). The purpose
of using C0H, then, is to cause compilation of all but
IMMEDIATE words.
FORTH-79: Is equivalent.
94
FORTH SYSTEM MESSAGES (relative to
Drive 0 Screen 4 Line 0)
? (pronounced “HUH?”) (0, OH): The word in question cannot
be found in the dictionary.
EMPTY STACK (1, 1H): More values have been removed from
the parameter stack than were added. The stack pointer
has backed up beyond the initial stack pointer location.
DICTIONARY FULL (2, 2H): The dictionary has grown into the
Terminal Input Buffer ( TIB ).
ISN’T UNIQUE (4, 4H): The name of this definition already
exists elsewhere in the dictionary.
DISK RANGE? (6, 6H): A disk access to a physically nonexistant
block number was requested. (Make sure you are
not in base hex when you think that you are in base
decimal.)
FULL STACK (7, 7H): Too many values have been added to
the parameter stack. The stack pointer has gone beyond its
upper limit.
DISK ERROR! (8, 8H): An I/O error occurred while attempting
to read or write to virtual I/O. (Make sure a diskette is in
the drive and the door is shut.)
COMPILATION ONLY (17, 11H): This word must only be used
within a colon definition.
EXECUTION ONLY (18, 12H): This word must not be used
while the system is in compile mode.
CONDITIONALS NOT PAIRED (19, 13H): There is some sort of
problem with the pairing of conditionals within the
definition being compiled.
DEFINITION NOT FINISHED (20, 14H): The position of the
parameter stack pointer differs from what it was when this
definition began compiling. Something is wrong with the
definition.
PROTECTED DICTIONARY (21, 5H): The address of the
definition being “forgotten” is less than the value stored in
FENCE . Change the value in FENCE
USE ONLY WHEN LOADING (22, 16H): This definition should
only be used when loadidg.
95
OFF CURRENT EDITING SCREEN (23, 17H): Occurs when
using fig-FORTH editor.
DECLARE VOCABULARY (24, 18H): CONTEXT and CURRENT
are not aiming at the same vocabularies when attempting
to FORGET.
96
1 4— USE
UP • [ USER AREA
RO
RETURN I
STACK
RP _____
a- ——
4 -‘TERMINAL J IN
BUFFER4____ TIB
________
so
STACK
TEXT BUFFER 1
4 PAD
“WORD” BUFFER
DP [ DICTIONARY
LBOOT-UP LITERA1 4 0 + ORIGIN
STANDARD fig-FORTH MEMORY MAP
97
Functional Cross Reference
Stack Manipulation ? 30
—DUP 19 (a 34
0 22 BLANKS 38
1 23 C! 39
2 24 CCa 40
3 24 CMOVE 41
>R 30 ERASE 57
?STACK 33 FILL 59
BL 37
DROP 54 Control 5tructure
DUP 54 (+LOOP) 11
OVER 74 (DO) 12
R 76 (LOOP) 14
RO 77 +LOOP 17
R> 77 OBRANCH 23
ROT 78 AGAIN 35
RP! 78 BEGIN 37
RP@ 78 BRANCH 39
50 79 DO 49
SP! 80 ELSE 54
SP@ 80 END 57
SWAP 81 ENDIF 57
I 62
IF 63
Number Bases
LEAVE 65
BASE 37
LOOP 68
DECIMAL 47
REPEAT 77
HEX 61
THEN 82
Comparison UNTIL 85
0< 22
WHILE 91
0= 23
< 27
Terminal Input/Output
=
30
> 30
(.“) 10
(LINE) 13
20
Memory 20
8 LINE 21
+! 16 .R 21
98
?TERMINAL 34 Vocabularies
C/L 40 CONTEXT 43
COUNT 44 CURRENT 45
CR 44 DEFINITIONS 47
0. 46 FORTH 60
D.R 47 HERE 61
EMIT 55 LATEST 65
EXPECT 58 VOC-LINK 88
IN 63 VOCABULARY 88
KEY 65
MESSAGE 69 Compiler Security
QUERY 75 !CSP 8
SPACE 81 ?COMP 31
SPACES 81 ?CSP 31
TIB 82 ?ERROR 32
TRIAD 83 ?EXEC 32
TYPE 84 ?LOADING 32
U. 84 ?PAIRS 33
VLIST 88 ?STACK 33
WORD 92 CSP 45
ERROR 57
Input/Output Formatting SMUDGE 80
# 8 WARNING 89
#> 9
#S 9 Dictionary
(NUMBER) 14 9
—TRAILING 20 (FIND) 13
<# 27 +ORIGIN 18
COUNT 44 - FIND 19
CR 44 ALLOT 35
DIGIT 48 CFA 40
DPL 53 CONTEXT 43
ENCLOSE 55 CURRENT 45
FLD sg DEFINITIONS 47
HLD 61 DP 53
HOLD 61 FENCE 58
NUMBER 72 FORGET 60
OUT 73 FORTH 60
PAD 74 ID. 62
R# 76 LATEST 65
SIGN 79 LFA 66
99
NFA 71 TOGGLE 82
PFA 75 XOR 93
SMUDGE 80
TRAVERSE 83 Virtual Input/Output
VLIST 88 +BUF 17
VOC-LINK 88 - -> 18
WIDTH 91 BIBUF 36
BISCR 36
Arithmetic BLK 38
* 15 BLOCK 38
*1 15 BUFFER 39
*/MOD 15 DRO 54
+ 16 DRI 54
+! 16 EMPTY-BUFFERS 55
+ — 16 FIRST 59
18 FLUSH 60
/ 22 INDEX 64
/MOD 22 LIMIT 66
1+ 23 LIST 66
2+ 24 LOAD 67
ABS 35 OFFSET 73
D+ 46 PREV 75
D+— 46 R/W 76
DABS 47 SCR 79
M* 68 UPDATE 86
M/ 68 USE 86
M/MOD 69
MAX 69 Compiler Defining Words
MIN 70 ( 10
MOD 70 (;CODE) 12
S—>D 79 , 18
U* 84 OBRANCH 23
U/ 85 : 24
25
Logical CODE 25
AND 35 5 26
DMINUS 49 <BUILDS 28
MAX 69 BACK 36
MIN 70 BRANCH 39
MINUS 70 C, 40
OR 73 COMPILE 42
100
CONSTANT 43 MON 71
CREATE 45 PAD 74
DLITERAL 48 QUIT 75
DOES> 50 TASK 81
IMMEDIATE 63 TIB 82
LIT 66 USER 86
LITERAL 67
SMUDGE 80 Inner Interpreter
STATE 81 IP 64
VARIABLE 87 NEXT 71
VOCABULARY 88 W 89
93
[COMPILE] 93 Outer Interpreter
94 INTERPRET 64
NULL 71
System Words QUERY 75
(ABORT) 12 QUIT 75
ABORT 34 STATE 81
COLD 41 X 92
EXECUTE 58 [ 93
IP 64 1 94
101
Ascii Order Index
8 0< 22
!CSP 8 0= 23
# 8 OBRANCH 23
#> 9 1 23
#s 9 1+ 23
9 2 24
10 2+ 24
(.“) 10 3 24
(+LOOP) 11 24
(;CODE) 12 25
(ABORT) 12 CODE 25
(DO) 12 ;S 26
(FIND) 13 < 27
(LINE) 13 <# 27
(LOOP) 14 <BUILDS 28
(NUMBER) 14 =
30
*
15 > 30
/ 15 >R 30
*/MOD 15 ? 30
+ 16 ?COMP 31
+! 16 ?CSP 31
+—16 ?ERROR 32
+BUF 17 ?EXEC 32
+LOOP 17 ?LOADING 32
+ ORIGIN 18 ?PAIRS 33
18 ?STACK 33
18 ?TERMINAL 34
--> 19 (a 34
-DUP 19 ABORT 34
—FIND 19 ABS 35
- TRAILING 20 AGAIN 35
20 ALLOT 35
20 AND 35
LINE 21 B/BUF 36
.R 21 B/SCR 36
/ 22 BACK 36
/MOD 22 BASE 37
0 22 BEGIN 37
102
BL 37 EMPTY-BUFFERS 55
BLANKS 38 ENCLOSE 55
BLK 38 END 57
BLOCK 38 ENDIF 57
BRANCH 39 ERASE 57
BUFFER 39 ERROR 57
C! 39 EXECUTE 58
C, 40 EXPECT 58
C/L 40 FENCE 58
C(E1 40 FILL 59
CFA 40 FIRST 59
CMOVE 41 FLD 59
COLD 41 FLUSH 60
COMPILE 42 FORGET 60
CONSTANT 43 FORTH 60
CONTEXT 43 HERE 61
COUNT 44 HEX 61
CR 44 HLD 61
CREATE 45 HOLD 61
CSP 45 1 62
CURRENT 45 ID. 62
D+ 46 IF 63
D + - 46 IMMEDIATE 63
D. 46 IN 63
D.R 47 INDEX 64
DABS 47 INTERPRET 64
DECIMAL 47 IP 64
DEFINITIONS 47 KEY 65
DIGIT 48 LATEST 65
DLITERAL 48 LEAVE 65
DMINUS 49 LFA 66
DO 49 LIMIT 66
DOES> 50 LIST 66
DP 53 LIT 66
DPL 53 LITERAL 67
DRO 54 LOAD 67
DRI 54 LOOP 68
DROP 54 M* 68
DUP 54 MI 68
ELSE 54 M/MOD 69
EMIT 55 MAX 69
103
MESSAGE 69 SPi 80
MIN 70 SPACE 81
MINUS 70 SPACES 81
MOD 70 STATE 81
MON 71 SWAP 81
NEXT 71 TASK 81
NFA 71 THEN 82
NULL 71 TIB 82
NUMBER 72 TOGGLE 82
OFFSET 73 TRAVERSE 83
OR 73 TRIAD 83
OUT 73 TYPE 84
OVER 74 U* 84
PAD 74 U. 84
PFA 75 U/ 85
PREV 75 UNTIL 85
QUERY 75 UPDATE 86
QUIT 75 USE 86
R 76 USER 86
R# 76 VARIABLE 87
R/W 76 VLIST 88
RO 77 VOC-LINK 88
R> 77 VOCABULARY 88
REPEAT 77 W 89
ROT 78 WARNING 89
RP! 78 WHILE 91
RP 78 WIDTH 91
S->D 79 WORD 92
50 79 X 92
SCR 79 XOR 93
SIGN 79 1 93
SMUDGE 80 [COMPILE] 93
SP! 80 1 94
104
Notes
Notes
Notes
Notes
Notes
Notes
>> $7.25 FPT
USA
ISBN 0—201-10103—3