1456 lines
52 KiB
Plaintext
1456 lines
52 KiB
Plaintext
|
This glossary contains all of the word definitions in Release 1 of
|
|||
|
fig-FORTH. The definitions are presented in the order of their ascii sort.
|
|||
|
Dated: 1979-MAY.
|
|||
|
Copyright: See DISTRIBUTION in figdoc.txt
|
|||
|
OCER-ed by Albert van der Horst DFW The Netherlands 2000-MAR
|
|||
|
|
|||
|
The first line of each entry shows a symbolic description of the action of
|
|||
|
the proceedure on the parameter stack. The symbols indicate the order in
|
|||
|
which input parameters have been placed on the stack. Three dashes "---"
|
|||
|
indicate the execution point; any parameters left on the stack are listed.
|
|||
|
In this notation, the top of the stack is to the right.
|
|||
|
|
|||
|
|
|||
|
The symbols include:
|
|||
|
|
|||
|
addr memory address
|
|||
|
b 8 bit byte (i.e. hi 8 bits zero)
|
|||
|
c 7 bit ascii character (hi 9 bits zero)
|
|||
|
d 32 bit signed double integer} most significant portion with sign
|
|||
|
on top of stack.
|
|||
|
f boolean flag. 0=false, non-zero=true
|
|||
|
ff boolean false flag=0
|
|||
|
n 16 bit signed integer number
|
|||
|
u 16 bit unsigned integer
|
|||
|
tf boolean true flag=non-zero
|
|||
|
|
|||
|
The capital letters on the right show definition characteristics:
|
|||
|
|
|||
|
C May only be used within a colon definition. A digit indicates number
|
|||
|
of memory addresses used, if other than one.
|
|||
|
E Intended for execution only.
|
|||
|
L0 Level Zero definition of FORTH-78
|
|||
|
L1 Level One definition of FORTH-78
|
|||
|
P Has precedence bit set. Will execute even when compiling.
|
|||
|
U A user variable.
|
|||
|
|
|||
|
|
|||
|
Unless otherwise noted, all references to numbers are for 16 bit signed
|
|||
|
integers. On 8 bit data bus computers, the high byte of a number is on top
|
|||
|
of the stack, with the sign in the leftmost bit. For 32 bit signed double
|
|||
|
numbers, the most significant part (with the sign) is on top.
|
|||
|
|
|||
|
All arithmetic is implicitly 16 bit signed integer math, with error and
|
|||
|
under-flow indication unspecified.
|
|||
|
|
|||
|
! n addr --- L0
|
|||
|
Store 16 bits of n at address. Pronounced "store".
|
|||
|
|
|||
|
|
|||
|
!CSP
|
|||
|
Save the stack position in CSP. Used as part of the compiler
|
|||
|
security.
|
|||
|
|
|||
|
|
|||
|
# d1 --- d2 L0
|
|||
|
Generate from a double number d1, the next ascii character which is
|
|||
|
placed in an output string. Result d2 is the quotient after division
|
|||
|
by BASE, and is maintained for further processing. Used between <#
|
|||
|
and #>.
|
|||
|
See #S.
|
|||
|
|
|||
|
|
|||
|
#> d --- addr count L0
|
|||
|
Terminates numeric output conversion by dropping d, leaving the text
|
|||
|
address and character count suitable for TYPE.
|
|||
|
|
|||
|
|
|||
|
#S d1 --- d2 L0
|
|||
|
Generates ascii text in the text output buffer, by the use of #,
|
|||
|
until a zero double number n2 results.
|
|||
|
Used between <# and #>.
|
|||
|
|
|||
|
|
|||
|
' --- addr P,L0
|
|||
|
Used in the form: .
|
|||
|
' nnnn
|
|||
|
Leaves the parameter field address of dictionary word nnnn.
|
|||
|
As a compiler directive, executes in a colon-definition to compile
|
|||
|
the address as a literal. If the word is not found after a search of
|
|||
|
CONTEXT and CURRENT, an appropriate error message is given.
|
|||
|
Pronounced "tick".
|
|||
|
|
|||
|
|
|||
|
( P,L0
|
|||
|
Used in the form:
|
|||
|
( cccc)
|
|||
|
Ignore a comment that will be delimited by a right
|
|||
|
parenthesis on the same line. May occur during execution or in a
|
|||
|
colon-definition. A blank after the leading parenthesis is required.
|
|||
|
|
|||
|
|
|||
|
(.") C+
|
|||
|
The run-time proceedure, compiled by ." which transmits the
|
|||
|
following in-line text to the selected output device. See .'"
|
|||
|
|
|||
|
|
|||
|
(;CODE) C
|
|||
|
The run-time proceedure, compiled by ;CODE, that rewrites the code
|
|||
|
field of the most recently defined word to point to the following
|
|||
|
machine code sequence. See ;CODE.
|
|||
|
|
|||
|
|
|||
|
(+LOOP) n --- C2
|
|||
|
The run-time proceedure compiled by +LOOP, which increments the loop
|
|||
|
index by n and tests for loop completion. See +LOOP.
|
|||
|
|
|||
|
|
|||
|
(ABORT)
|
|||
|
Executes after an error when WARNING is -1. This word normally
|
|||
|
executes ABORT, but may be altered (with care) to a user's
|
|||
|
alternative proceedure.
|
|||
|
|
|||
|
|
|||
|
(DO) C
|
|||
|
The run-time proceedure compiled by DO which moves the loop control
|
|||
|
parameters to the return stack. See DO.
|
|||
|
|
|||
|
|
|||
|
(FIND) addr1 addr2 --- pfa b tf (ok)
|
|||
|
addr1 addr2 .--- ff (bad)
|
|||
|
Searches the dictionary starting at the name field address addr2,
|
|||
|
matching to the text at addr1. Returns parameter field address,
|
|||
|
length byte of name field and boolean true for a good match. If no
|
|||
|
match is found, only a boolean false is left.
|
|||
|
|
|||
|
|
|||
|
(LINE) n1 n2 --- addr count
|
|||
|
Convert the line number n1 and the screen n2 to the disc buffer
|
|||
|
address containing the data. A count of 64 indicates the full line
|
|||
|
text length.
|
|||
|
|
|||
|
|
|||
|
(LOOP) C2
|
|||
|
The run-time proceedure compiled by LOOP which increments the loop
|
|||
|
index and tests for loop completion.
|
|||
|
See LOOP.
|
|||
|
|
|||
|
|
|||
|
(NUMBER) d1 addr1 --- d2 addr2
|
|||
|
Convert the ascii text beginning at addr1+l with regard to BASE. The
|
|||
|
new value is accumulated into double number d1, being left as d2.
|
|||
|
Addr2 is the address of the first unconvertable digit. Used by
|
|||
|
NUMBER.
|
|||
|
|
|||
|
|
|||
|
* n1 n2 --- prod L0
|
|||
|
Leave the signed product of two signed numbers.
|
|||
|
|
|||
|
|
|||
|
*/ n1 n2 n3 --- n4 L0
|
|||
|
Leave the ratio n4 = n1*n2/n3 where all are signed numbers.
|
|||
|
Retention of an intermediate 31 bit product permits greater accuracy
|
|||
|
than would. be available with the sequence:
|
|||
|
n1 n2 * n3 /
|
|||
|
|
|||
|
|
|||
|
|
|||
|
*/MOD n1 n2 n3 --- n4 n5 L0
|
|||
|
Leave the quotient n5 and remainder n4 of the operation n1*n2/n3 A
|
|||
|
31 bit intermediate product is used as for */.
|
|||
|
|
|||
|
|
|||
|
+ n1 n2 --- sum L0
|
|||
|
Leave the sum of n1+n2.
|
|||
|
|
|||
|
|
|||
|
+! n addr --- L0
|
|||
|
Add n to the value at the address.
|
|||
|
Pronounced "plus-store".
|
|||
|
|
|||
|
|
|||
|
+- n1 n2 --- n3
|
|||
|
Apply the sign of n2 to n1, which is left as n3.
|
|||
|
|
|||
|
|
|||
|
+BUF add1 --- addr2 f
|
|||
|
Advance the disc buffer address addr1 to the address of the next
|
|||
|
buffer addr2. Boolean f is false when addr2 is the buffer presently
|
|||
|
pointed to by variable PREV.
|
|||
|
|
|||
|
|
|||
|
+LOOP n1 --- (run) addr n2 --- (compile) P,C2,L0
|
|||
|
Used in a colon-definition in the form:
|
|||
|
DO ... n1 +LOOP
|
|||
|
At run-time, +LOOP selectively controls branching
|
|||
|
back to the corresponding DO based on n1, the loop index and the
|
|||
|
loop limit. The signed increment n1 is added to the index and the
|
|||
|
total compared to the limit.
|
|||
|
The branch back to DO occurs until the new index is equal to or
|
|||
|
greater than the limit (n1>0), or until the new index is equal to or
|
|||
|
less than the limit (n1<0). Upon exiting the loop, the parameters
|
|||
|
are discarded and execution continues ahead.
|
|||
|
|
|||
|
|
|||
|
At compile time, +LOOP compiles the run-time word (+LOOP) and the
|
|||
|
branch offset computed from HERE to the address left on the stack by
|
|||
|
DO. n2 is used for compile tine error checking.
|
|||
|
|
|||
|
|
|||
|
+ORIGIN n --- addr
|
|||
|
Leave the memory address relative by n to the origin parameter area.
|
|||
|
n is the minimum address unit, either byte or word. This definition
|
|||
|
is used to access or modify the boot-up parameters at the origin
|
|||
|
area.
|
|||
|
|
|||
|
|
|||
|
, n --- , L0
|
|||
|
Store n into the next available dictionary memory cell, advancing
|
|||
|
the dictionary pointer. (comma)
|
|||
|
|
|||
|
|
|||
|
- n1 n2 --- diff L0
|
|||
|
Leave the difference of n1-n2.
|
|||
|
|
|||
|
|
|||
|
--> P,L0
|
|||
|
Continue interpretation with the next disc screen. (pronounced
|
|||
|
next-screen).
|
|||
|
|
|||
|
|
|||
|
-DUP n1 -- n1 (if zero) n1 -- n1 n1 (non-zero) L0
|
|||
|
Reproduce n1 only if it is non-zero.
|
|||
|
This is usually used to copy a value just before IF, to eliminate
|
|||
|
the need for an ELSE part to drop it.
|
|||
|
|
|||
|
|
|||
|
-FIND --- pfa b tf (found) --- ff (not found)
|
|||
|
Accepts the next text word (delimited by blanks) in the input stream
|
|||
|
to HERE, and searches the CONTEXT and then CURRENT vocabularies
|
|||
|
for a matching entry. If found, the dictionary entry's parameter
|
|||
|
field address, its length byte, and a boolean true is left.
|
|||
|
Otherwise, only a boolean false is left.
|
|||
|
|
|||
|
|
|||
|
-TRAILING addr n1 --- addr n2
|
|||
|
Adjusts the character count n1 of a text string beginning address to
|
|||
|
suppress the output of trailing blanks. i.e. the characters at
|
|||
|
addr+n1 to addr+n2 are blanks.
|
|||
|
|
|||
|
|
|||
|
. n --- L0
|
|||
|
Print a number from a signed l6 bit two's complement value,
|
|||
|
converted according to the numeric BASE.
|
|||
|
A trailing blanks follows.
|
|||
|
Pronounced "dot".
|
|||
|
|
|||
|
|
|||
|
." P,L0
|
|||
|
Used in the form:
|
|||
|
.', cccc"
|
|||
|
Compiles an in-line string cccc (delimited by the trailing ") with
|
|||
|
an execution proceedure to transmit the text to the selected output
|
|||
|
device.
|
|||
|
If executed outside a definition, ." will immediately print the text
|
|||
|
until the final ',. The maximum number of characters may be an
|
|||
|
installation dependent value. See (.").
|
|||
|
|
|||
|
|
|||
|
-LINE line scr --
|
|||
|
Print on the terminal device, a line of text from the disc by its
|
|||
|
line and screen number. Trailing blanks are suppressed.
|
|||
|
|
|||
|
|
|||
|
.R n1 n2 ---
|
|||
|
Print the number n1 right aligned in a field whose width is n2. No
|
|||
|
following blank is printed.
|
|||
|
|
|||
|
|
|||
|
/ n1 n2 --- quot L0
|
|||
|
Leave the signed quotient of n1/n2.
|
|||
|
|
|||
|
|
|||
|
/MOD n1 n2 --- rem quot L0
|
|||
|
Leave the remainder and signed quotient of n1/n2. The remainder has
|
|||
|
the sign of the dividend.
|
|||
|
|
|||
|
|
|||
|
0 1 2 3 --- n
|
|||
|
These small numbers are used so often that is is attractive to
|
|||
|
define them by name in the dictionary as constants.
|
|||
|
|
|||
|
|
|||
|
0< n --- f L0
|
|||
|
Leave a true flag if the number is less than zero (negative),
|
|||
|
otherwise leave a false flag.
|
|||
|
|
|||
|
|
|||
|
0= n --- f L0
|
|||
|
Leave a true flag is the number is equal to zero, otherwise leave a
|
|||
|
false flag.
|
|||
|
|
|||
|
|
|||
|
0BRANCH f --- C2
|
|||
|
The run-time proceedure to conditionally branch. If f is false
|
|||
|
(zero), the following in-line parameter is added to the interpretive
|
|||
|
pointer to branch ahead or back. Compiled by IF, UNTIL, and WHILE.
|
|||
|
|
|||
|
|
|||
|
1+ n1 --- n2 L1
|
|||
|
Increment n1 by l.
|
|||
|
|
|||
|
|
|||
|
2+ n1 --- n2
|
|||
|
Leave n1 incremented by 2.
|
|||
|
|
|||
|
|
|||
|
: P,E,L0
|
|||
|
Used in the form called a colon-definition:
|
|||
|
: cccc ... ;
|
|||
|
Creates a dictionary entry defining cccc as equivalent to the
|
|||
|
following sequence of Forth word definitions '...' until the next
|
|||
|
';' or ';CODE'.
|
|||
|
The compiling process is done by the text interpreter as long as
|
|||
|
STATE is non-zero. Other details are that the CONTEXT vocabulary is
|
|||
|
set to the CURRENT vocabulary and that words with the precedence bit
|
|||
|
set (P) are executed rather than being compiled.
|
|||
|
|
|||
|
|
|||
|
; P,C,L0
|
|||
|
Terminate a colon-definition and stop further compilation. Compiles
|
|||
|
the run-time ;S.
|
|||
|
|
|||
|
|
|||
|
;CODE P,C,L0
|
|||
|
Used in the form:
|
|||
|
: cccc .... ;CODE
|
|||
|
assembly mnemonics Stop compilation and terminate a new defining
|
|||
|
word cccc by compiling (;CODE). Set the CONTEXT vocabulary to
|
|||
|
ASSEMBLER, assembling to machine code the following mnemonics.
|
|||
|
|
|||
|
When cccc later executes in the form:
|
|||
|
cccc nnnn
|
|||
|
the word nnnn will be created with its execution proceedure given by
|
|||
|
the machine code following cccc.
|
|||
|
That is, when nnnn is executed, it does so by jumping to the code
|
|||
|
after nnnn. An existing defining word must exist in cc prior to
|
|||
|
;CODE
|
|||
|
|
|||
|
|
|||
|
;S P,L0
|
|||
|
Stop interpretation of a screen.
|
|||
|
;S is also the run-time word compiled at the end of a
|
|||
|
colon-definition which returns execution to the calling proceedure.
|
|||
|
|
|||
|
|
|||
|
< n1 n2 --- f L0
|
|||
|
Leave a true flag if n1 is less than n2; otherwise leave a false
|
|||
|
flag.
|
|||
|
|
|||
|
|
|||
|
<# L0
|
|||
|
Setup for pictured numeric output formatting using the words:
|
|||
|
<# # #S SIGN #>
|
|||
|
The conversion is done on a double number producing
|
|||
|
text at PAD.
|
|||
|
|
|||
|
|
|||
|
<BUILDS C,L0
|
|||
|
Used within a colon-definition:
|
|||
|
: cccc <BUILDS ...
|
|||
|
DOES> ... ;
|
|||
|
Each time cccc is executed, <BUILDS defines a new word with a
|
|||
|
high-level execution proceedure. Executing cccc in the form:
|
|||
|
cccc nnnn
|
|||
|
uses <BUILDS to create a dictionary entry for nnnn with a call to
|
|||
|
the DOES> part for nnnn. When nnnn is later executed, it has the
|
|||
|
address of its parameter area on the stack and executes the words
|
|||
|
after DOES> in cccc. <BUILDS and DOES> allow runtime proceedures to
|
|||
|
written in high-level rather than in assembler code (as required by
|
|||
|
;CODE).
|
|||
|
|
|||
|
|
|||
|
= n1 n2 --- f L0
|
|||
|
Leave a true flag if n1=n2; otherwise leave a false flag.
|
|||
|
|
|||
|
|
|||
|
> n1 n2 --- f L0
|
|||
|
Leave a true flag if n1 is greater than n2; otherwise a false flag.
|
|||
|
|
|||
|
|
|||
|
>R n --- C,L0
|
|||
|
Remove a number from the computation stack and place as the most
|
|||
|
accessable on the return stack. Use should be balanced with R> in
|
|||
|
the same definition.
|
|||
|
|
|||
|
|
|||
|
? addr -- L0
|
|||
|
Print the value contained at the address in free format according to
|
|||
|
the current base.
|
|||
|
|
|||
|
|
|||
|
?COMP
|
|||
|
Issue error message if not compiling.
|
|||
|
|
|||
|
|
|||
|
?CSP
|
|||
|
Issue error message if stack position differs from value saved in
|
|||
|
CSP.
|
|||
|
|
|||
|
|
|||
|
ERROR f n --
|
|||
|
Issue an error message number n, if the boolean flag is true.
|
|||
|
|
|||
|
|
|||
|
?EXEC
|
|||
|
Issue an error message if not executing.
|
|||
|
|
|||
|
|
|||
|
?LOADING
|
|||
|
Issue an error message if not loading
|
|||
|
|
|||
|
|
|||
|
?PAIRS n1 n2 --
|
|||
|
Issue an error message if n1 does not equal n2. The message
|
|||
|
indicates that compiled conditionals do not match.
|
|||
|
|
|||
|
|
|||
|
?STACK
|
|||
|
Issue an error message is the stack is out of bounds. This
|
|||
|
definition may be installation dependent.
|
|||
|
|
|||
|
|
|||
|
?TERMINAL --- f
|
|||
|
Perform a test of the terminal keyboard for actuation of the break
|
|||
|
key. A true flag indicates actuation.
|
|||
|
This definition is installation dependent.
|
|||
|
|
|||
|
|
|||
|
@ addr --- n L0
|
|||
|
Leave the 16 bit contents of address.
|
|||
|
|
|||
|
|
|||
|
ABORT L0
|
|||
|
Clear the stacks and enter the execution state. Return control to
|
|||
|
the operators terminal, printing a message appropriate to the
|
|||
|
installation.
|
|||
|
|
|||
|
|
|||
|
ABS n --- u L0
|
|||
|
Leave the absolute value of n as u.
|
|||
|
|
|||
|
|
|||
|
AGAIN addr n --- (compiling) P,C2,L0
|
|||
|
Used in a colon-definition in the form:
|
|||
|
BEGIN ... AGAIN
|
|||
|
At run-time, AGAIN forces execution to return to corresponding
|
|||
|
BEGIN.
|
|||
|
There is no effect on the stack. Execution cannot leave this loop
|
|||
|
(unless R> DROP is executed one level below).
|
|||
|
|
|||
|
At compile time, AGAIN compiles BRANCH with an offset from HERE to
|
|||
|
addr. n is used for compile-time error checking.
|
|||
|
|
|||
|
|
|||
|
ALLOT n --- L0
|
|||
|
Add the signed number to the dictionary pointer DP. May be used to
|
|||
|
reserve dictionary space or re-origin memory. n is with regard to
|
|||
|
computer address type (byte or word).
|
|||
|
|
|||
|
|
|||
|
AND n1 n2 --- n2 L0
|
|||
|
Leave the bitwise logical and of n1 and n2 as n3.
|
|||
|
|
|||
|
|
|||
|
B/BUF --- n
|
|||
|
This constant leaves the number of bytes per disc buffer, the byte
|
|||
|
count read from disc by BLOCK.
|
|||
|
|
|||
|
|
|||
|
B/SCR --- n
|
|||
|
This constant leaves the number of blocks per editing screen. By
|
|||
|
convention, an editing screen is 1O24 bytes organized as 16 lines of
|
|||
|
64 characters each.
|
|||
|
|
|||
|
|
|||
|
BACK addr --
|
|||
|
Calculate the backward branch offset from HERE to addr and compile
|
|||
|
into the next available dictionary memory address.
|
|||
|
|
|||
|
|
|||
|
BASE --- addr U,L0
|
|||
|
A user variable containing the current number base used for input
|
|||
|
and output conversion.
|
|||
|
|
|||
|
|
|||
|
BEGIN --- addr n (compiling) P,L0
|
|||
|
Occurs in a colon-definition in form:
|
|||
|
BEGIN ... UNTIL
|
|||
|
BEGIN ... AGAIN
|
|||
|
BEGIN ... WHILE ... REPEAT
|
|||
|
At run-time, BEGIN marks the start of a sequence that may be
|
|||
|
repetitively executed. It serves as a return point from the
|
|||
|
corresponding UNTIL, AGAIN or REPEAT. When executing UNTIL, a return
|
|||
|
to BEGIN will occur if the top of the stack is false;
|
|||
|
for AGAIN and REPEAT a return to BEGIN always occurs.
|
|||
|
|
|||
|
At compile time BEGIN leaves its return address and n for compiler
|
|||
|
error checking.
|
|||
|
|
|||
|
|
|||
|
BL --- c
|
|||
|
A constant that leaves the ascii value for "blank".
|
|||
|
|
|||
|
|
|||
|
BLANKS addr count --
|
|||
|
Fill an area of memory beginning at addr with blanks.
|
|||
|
|
|||
|
|
|||
|
BLK --- addr U,L0
|
|||
|
A user variable containing the block number being interpreted. If
|
|||
|
zero, input is being taken from the terminal input buffer.
|
|||
|
|
|||
|
|
|||
|
BLOCK n --- addr L0
|
|||
|
Leave the memory address of the block buffer containing block n. If
|
|||
|
the block is not already in memory, it is transferred from disc to
|
|||
|
which ever buffer Was least recently written. If the block occupying
|
|||
|
that buffer has been marked as updated, it is rewritten to disc
|
|||
|
before block n is read into the buffer. See also BUFFER, R/W UPDATE
|
|||
|
FLUSH
|
|||
|
|
|||
|
|
|||
|
BLOCK-READ
|
|||
|
BLOCK-WRITE
|
|||
|
These are the preferred names for the installation dependent code to
|
|||
|
read and write one block to the disc.
|
|||
|
|
|||
|
|
|||
|
BRANCH C2,L0
|
|||
|
The run-time proceedure to unconditionally branch. An in-line offset
|
|||
|
is added to the interpretive pointer IP to branch ahead or back.
|
|||
|
BRANCH is compiled by ELSE, AGAIN, REPEAT.
|
|||
|
|
|||
|
|
|||
|
BUFFER n --- addr
|
|||
|
Obtain the next memory buffer, assigning it to block n. If the
|
|||
|
contents of the buffer is marked as updated, it is written to the
|
|||
|
disc The block is not read from the disc.
|
|||
|
The address left is the first cell within the buffer for data
|
|||
|
storage.
|
|||
|
|
|||
|
|
|||
|
C! b addr ---
|
|||
|
Store 8 bits at address. On word addressing computers, further
|
|||
|
specification is necessary regarding byte addressing.
|
|||
|
|
|||
|
|
|||
|
C, b ---
|
|||
|
Store 8 bits of b into the next available dictionary byte, advancing
|
|||
|
the dictionary pointer. This is only available on byte addressing
|
|||
|
computers, and should be used with caution on byte addressing mini-
|
|||
|
computers.
|
|||
|
|
|||
|
|
|||
|
C@ addr --- b
|
|||
|
Leave the 8 bit contents of memory address. On word addressing
|
|||
|
computers, further specification is needed regarding byte
|
|||
|
addressing.
|
|||
|
|
|||
|
|
|||
|
CFA pfa --- cfa
|
|||
|
Convert the parameter field address of a definition to its code
|
|||
|
field address.
|
|||
|
|
|||
|
|
|||
|
CMOVE from to count --
|
|||
|
Move the specified quantity of bytes beginning at address from to
|
|||
|
address to. The contents of address from is moved first proceeding
|
|||
|
toward high memory. Further specification is necessary on word
|
|||
|
addressing computers.
|
|||
|
|
|||
|
|
|||
|
COLD
|
|||
|
The cold start proceedure to adjust the dictionary pointer to
|
|||
|
the minimum standard and restart via ABORT.
|
|||
|
May be called from the terminal to remove application programs and
|
|||
|
restart.
|
|||
|
|
|||
|
|
|||
|
COMPILE C2
|
|||
|
When the word containing COMPILE executes, the execution address of
|
|||
|
the word following COMPILE is copied (compiled) into the dictionary.
|
|||
|
This allows specific compilation situations to be handled in
|
|||
|
addition to simply compiling an execution address (which the
|
|||
|
interpreter already does).
|
|||
|
|
|||
|
|
|||
|
CONSTANT n --- L0
|
|||
|
A defining word used in the form:
|
|||
|
n CONSTANT cccc
|
|||
|
to create word cccc, with its parameter field containing n. When
|
|||
|
cccc is later executed, it will push the value of n to the stack.
|
|||
|
|
|||
|
|
|||
|
CONTEXT --- addr U,L0
|
|||
|
A user variable containing a pointer to the vocabulary within which
|
|||
|
dictionary searches will first begin.
|
|||
|
|
|||
|
|
|||
|
COUNT addr1 --- addr2 n L0
|
|||
|
Leave the byte address addr2 and byte count n of a message text
|
|||
|
beginning at address addr1. It is presumed that the first byte at
|
|||
|
addr1 contains the text byte count and the actual text starts with
|
|||
|
the second byte.
|
|||
|
Typically COUNT is followed by TYPE.
|
|||
|
|
|||
|
|
|||
|
CR L0
|
|||
|
Transmit a carriage return and line feed to the selected output
|
|||
|
device.
|
|||
|
|
|||
|
|
|||
|
CREATE
|
|||
|
A defining word used in the form:
|
|||
|
CREATE cccc
|
|||
|
by such words as CODE and CONSTANT to create a dictionary header for
|
|||
|
a Forth definition. The code field contains the address of the words
|
|||
|
parameter field. The new word is created in the CURRENT vocabulary.
|
|||
|
|
|||
|
|
|||
|
CSP ---- addr U
|
|||
|
A user variable temporarily storing the stack pointer position, for
|
|||
|
compilation error checking.
|
|||
|
|
|||
|
|
|||
|
D+ d1 d2 --- dsum
|
|||
|
Leave the double number sum of two double numbers.
|
|||
|
|
|||
|
|
|||
|
D+- d1 n --- d2
|
|||
|
Apply the sign of n to the double number d1, leaving it as d2.
|
|||
|
|
|||
|
|
|||
|
D. d --- L1
|
|||
|
Print a signed double number from a 32 bit two's complement value.
|
|||
|
The high-order l6 bits are most accessable on the stack. Conversion
|
|||
|
is performed according to the current BASE. A blank follows.
|
|||
|
Pronounced D-dot.
|
|||
|
|
|||
|
|
|||
|
D.R d n ---
|
|||
|
Print a signed double number d right aligned in a field n characters
|
|||
|
wide.
|
|||
|
|
|||
|
|
|||
|
DABS d --- ud
|
|||
|
Leave the absolute value ud of a double number.
|
|||
|
|
|||
|
|
|||
|
DECIMAL L0
|
|||
|
Set the numeric conversion BASE for decimal input-output.
|
|||
|
|
|||
|
|
|||
|
DEFINITIONS L1
|
|||
|
Used in the form:
|
|||
|
cccc DEFINITIONS
|
|||
|
Set the CURRENT vocabulary to the CONTEXT vocabulary. In the
|
|||
|
example, executing vocabulary name cccc made it the CONTEXT
|
|||
|
vocabulary and executing DEFINITIONS made both specify vocabulary
|
|||
|
cccc.
|
|||
|
|
|||
|
|
|||
|
DIGIT c n1 --- n2 tf (ok) c n1 --- ff (bad)
|
|||
|
Converts the ascii character c (using base n1) to its binary
|
|||
|
equivalent n2, accompanied by a true flag. If the conversion is
|
|||
|
invalid, leaves only a false flag.
|
|||
|
|
|||
|
|
|||
|
DLIST
|
|||
|
List the names of the dictionary entries in the CONTEXT vocabulary.
|
|||
|
|
|||
|
|
|||
|
DLITERAL d --- d (executing) d --- (compiling) P
|
|||
|
If compiling, compile a stack double number into a literal. Later
|
|||
|
execution of the definition containing the literal will push it to
|
|||
|
the stack. If executing, the number will remain on the stack.
|
|||
|
|
|||
|
|
|||
|
DMINUS d1 --- d2
|
|||
|
Convert d1 to its double number two's complement.
|
|||
|
|
|||
|
|
|||
|
DO n1 n2 --- (execute)
|
|||
|
addr n --- (compile) P,C2,L0
|
|||
|
Occurs in a colon-definition in form:
|
|||
|
DO ... LOOP
|
|||
|
|
|||
|
|
|||
|
DO ... +LOOP
|
|||
|
At run time, DO begins a sequence with repetitive execution
|
|||
|
controlled by a loop limit n1 and an index with initial value n2. DO
|
|||
|
removes these from the stack. Upon reaching LOOP the index is
|
|||
|
incremented by one.
|
|||
|
Until the new index equals or exceeds the limit, execution loops
|
|||
|
back to just after DO; otherwise the loop parameters are discarded
|
|||
|
and execution continues ahead. Both n1 and n2 are determined at
|
|||
|
run-time and may be the result of other operations.
|
|||
|
Within a loop 'I' will copy the current value of the index to the
|
|||
|
stack. See I, LOOP, +LOOP, LEAVE.
|
|||
|
|
|||
|
When compiling within the colon definition, DO compiles (DO), leaves
|
|||
|
the following address addr and n for later error checking.
|
|||
|
|
|||
|
|
|||
|
DOES> L0
|
|||
|
A word which defines the run-time action within a high-level
|
|||
|
defining word. DOES> alters the code field and first parameter of
|
|||
|
the new word to execute the sequence of compiled word addresses
|
|||
|
following DOES>. Used in combination with <BUILDS. When the DOES>
|
|||
|
part executes it begins with the address of the first parameter of
|
|||
|
the new word on the stack. This allows interpretation using this
|
|||
|
area or its contents. Typical uses include the Forth assembler,
|
|||
|
multidimensional arrays, and compiler generation.
|
|||
|
|
|||
|
|
|||
|
DP ---- addr U,L
|
|||
|
A user variable, the dictionary pointer, which contains the address
|
|||
|
of the next free memory above the dictionary. The value may be read
|
|||
|
by HERE and altered by ALLOT.
|
|||
|
|
|||
|
|
|||
|
DPL ---- addr U,L0
|
|||
|
A user variable containing the number of digits to the right of the
|
|||
|
decimal on double integer input. It may also be used hold output
|
|||
|
column location of a decimal point, in user generated formating. The
|
|||
|
default value on mingle number input is -1.
|
|||
|
|
|||
|
|
|||
|
DR0
|
|||
|
DR1
|
|||
|
Installation dependent commands to select disc drives, by presetting
|
|||
|
OFFSET. The contents of OFFSET is added to the block number in BLOCK
|
|||
|
to allow for this selection. Offset is suppressed for error text so
|
|||
|
that is may always originate from drive 0.
|
|||
|
|
|||
|
|
|||
|
DROP n --- L0
|
|||
|
Drop the number from the stack.
|
|||
|
|
|||
|
|
|||
|
DUMP addr n --- L0
|
|||
|
Print the contents of n memory locations beginning at addr. Both
|
|||
|
addresses and contents are shown in the current numeric base.
|
|||
|
|
|||
|
|
|||
|
DUP n --- n n L0
|
|||
|
Duplicate the value on the stack.
|
|||
|
|
|||
|
.
|
|||
|
ELSE addr1 n1 --- addr2 n2
|
|||
|
(compiling) P,C2,L0
|
|||
|
Occurs within a colon-definition in the form:
|
|||
|
IF ... ELSE ... ENDIF
|
|||
|
At run-time, ELSE executes after the true part following IF. ELSE
|
|||
|
forces execution to skip over the following false part and resumes
|
|||
|
execution after the ENDIF. It has no stack effect.
|
|||
|
|
|||
|
At compile-time ELSE emplaces BRANCH reserving a branch offset,
|
|||
|
leaves the address addr2 and n2 for error testing. ELSE also
|
|||
|
resolves the pending forward branch from IF by calculating the
|
|||
|
offset from addr1 to HERE and storing at addr1.
|
|||
|
|
|||
|
|
|||
|
EMIT c --- L0
|
|||
|
Transmit ascii character c to the selected output device. OUT is
|
|||
|
incremented for each character output.
|
|||
|
|
|||
|
|
|||
|
EMPTY-BUFFERS L0
|
|||
|
Mark all block-buffers as empty, not necessarily affecting the
|
|||
|
contents.
|
|||
|
Updated blocks are not written to the disc. This is also an
|
|||
|
initialization proceedure before first use of the disc.
|
|||
|
|
|||
|
|
|||
|
ENCLOSE addr1 c -- addr1 n1 n2 n3
|
|||
|
The text scanning primitive used by WORD. From the text address
|
|||
|
addr1 and an ascii delimiting character c, is determined the byte
|
|||
|
offset to the first non-delimiter character n1, the offset to the
|
|||
|
first delimiter after the text n2, and the offset to the first
|
|||
|
character not included.
|
|||
|
This proceedure will not process past an ascii 'null', treating it
|
|||
|
as an unconditional delimiter.
|
|||
|
|
|||
|
|
|||
|
END P,C2,L0
|
|||
|
This is an 'alias' or duplicate definition for UNTIL.
|
|||
|
|
|||
|
|
|||
|
ENDIF addr n --- (compile) P,CO,L0
|
|||
|
Occurs in a colon-definition in form:
|
|||
|
IF ... ENDIF
|
|||
|
IF ... ELSE ... ENDIF
|
|||
|
At run-time, ENDIF serves only as the destination of a forward
|
|||
|
branch from IF or ELSE. It marks the conclusion of the conditional
|
|||
|
structure. THEN is another name for ENDIF. Both names are supported
|
|||
|
in fig-FORTH. See also IF and ELSE.
|
|||
|
|
|||
|
At compile-time, ENDIF computes the forward branch offset from addr
|
|||
|
to HERE and stores it at addr. n is used for error tests.
|
|||
|
|
|||
|
|
|||
|
ERASE addr n --
|
|||
|
Clear a region of memory to zero from addr over n addresses.
|
|||
|
|
|||
|
|
|||
|
ERROR line --- in blk
|
|||
|
Execute error notification and restart of system. WARNING is first
|
|||
|
examined. If 1, the text of line n, relative to screen 4 of drive O
|
|||
|
is printed. This line number may be positive or negative, and beyond
|
|||
|
just screen 4. If WARNING=O, n is just printed as a message number
|
|||
|
(non disc installation). If WARNING is -l, the definition (ABORT) is
|
|||
|
executed, which executes the system ABORT. The user may cautiously
|
|||
|
modify this execution by altering (ABORT).
|
|||
|
fig-FORTH saves the contents of IN and BLK to assist in determining
|
|||
|
the location of the error. Final action is execution of QUIT.
|
|||
|
|
|||
|
|
|||
|
EXECUTE addr -
|
|||
|
Execute the definition whose code field address is on the stack. The
|
|||
|
code field address is also called the compilation address.
|
|||
|
|
|||
|
|
|||
|
EXPECT addr count --- L0
|
|||
|
Transfer characters from the terminal to address, until a "return"
|
|||
|
or the count of characters have been received. One or more nulls are
|
|||
|
added at the end of the text.
|
|||
|
|
|||
|
|
|||
|
FENCE --- addr U
|
|||
|
A user variable containing an address below which FORGETting is
|
|||
|
trapped. To forget below this point the user must alter the contents
|
|||
|
of FENCE.
|
|||
|
|
|||
|
|
|||
|
FILL addr quan b --
|
|||
|
Fill memory at the address with the specified quantity of bytes b.
|
|||
|
|
|||
|
|
|||
|
FIRST --- n
|
|||
|
A constant that leaves the address of the first (lowest) block
|
|||
|
buffer.
|
|||
|
|
|||
|
|
|||
|
FLD --- addr U
|
|||
|
A user variable for control of number output field width. Presently
|
|||
|
unused in fig-FORTH.
|
|||
|
|
|||
|
|
|||
|
FORGET E,L0
|
|||
|
Executed in the form:
|
|||
|
FORGET cccc
|
|||
|
Deletes definition named cccc from the dictionary with all entries
|
|||
|
physically following it. In fig-FORTH, an error message will occur
|
|||
|
if the CURRENT and CONTEXT vocabularies are not currently the same.
|
|||
|
|
|||
|
|
|||
|
FORTH P,L1
|
|||
|
The name of the primary vocabulary.
|
|||
|
Execution makes FORTH the CONTEXT vocabulary. Until additional user
|
|||
|
vocabularies are defined, new user definitions become a part of
|
|||
|
FORTH. FORTH is immediate, so it will execute during the creation of
|
|||
|
a colon-definition, to select this vocabulary at compile time.
|
|||
|
|
|||
|
|
|||
|
HERE --- addr L0
|
|||
|
Leave the address of the next available dictionary location.
|
|||
|
|
|||
|
|
|||
|
HEX L0
|
|||
|
Set the numeric conversion base to sixteen (hexadecimal).
|
|||
|
|
|||
|
|
|||
|
HLD --- addr L0
|
|||
|
A user variable that holds the address of the latest character of
|
|||
|
text during numeric output conversion.
|
|||
|
|
|||
|
|
|||
|
HOLD c --- L0
|
|||
|
Used between <# and #> to insert an ascii character into a pictured
|
|||
|
numeric output string.
|
|||
|
e.g. 2E HOLD will place a decimal point.
|
|||
|
|
|||
|
|
|||
|
I --- n C,L0
|
|||
|
Used within a DO-LOOP to copy the loop index to the stack. Other use
|
|||
|
is implementation dependent.
|
|||
|
See R.
|
|||
|
|
|||
|
|
|||
|
ID. addr --
|
|||
|
Print a definition's name from its name field address.
|
|||
|
|
|||
|
|
|||
|
IF f --- (run-time) -- addr n
|
|||
|
(compile) P,C2,L0
|
|||
|
Occurs is a colon-definition in form:
|
|||
|
IF (tp) ... ENDIF .
|
|||
|
IF (tp) ... ELSE (fp) ... ENDIF
|
|||
|
At run-time, IF selects execution based on a boolean flag. If f is
|
|||
|
true (non-zero), execution continues ahead thru the true part. If f
|
|||
|
is false (zero), execution skips till just after ELSE to execute
|
|||
|
the false part. After either part, execution resumes after ENDIF.
|
|||
|
ELSE and its false part are optional.; if missing, false execution
|
|||
|
skips to just after ENDIF..
|
|||
|
|
|||
|
At compile-time IF compiles 0BRANCH and reserves space for an offset
|
|||
|
at addr. addr and n are used later for resolution of the offset and
|
|||
|
error testing.
|
|||
|
|
|||
|
|
|||
|
IMMEDIATE
|
|||
|
Mark the most recently made definition so that when encountered at
|
|||
|
compile time, it will be executed rather than being compiled. i.e.
|
|||
|
the precedence bit in its header is set.
|
|||
|
This method allows definitions to handle unusual compiling
|
|||
|
situations, rather. than build them into the fundamental compiler.
|
|||
|
The user may force compilation of an immediate definition by
|
|||
|
preceeding it with [COMPILE],
|
|||
|
|
|||
|
|
|||
|
IN --- addr L0
|
|||
|
A user variable containing the byte offset within the current input
|
|||
|
text buffer (terminal or disc) from which the next text will be
|
|||
|
accepted. WORD uses and moves the value of IN.
|
|||
|
|
|||
|
|
|||
|
INDEX from to --
|
|||
|
Print the first line of each screen over the range from, to. This is
|
|||
|
used to view the comment lines of an area of text on disc screens.
|
|||
|
|
|||
|
|
|||
|
INTERPRET
|
|||
|
The outer text interpreter which sequentially executes or compiles
|
|||
|
text from the input stream (terminal or disc) depending on STATE. If
|
|||
|
the word name cannot be found after a search of CONTEXT and then
|
|||
|
CURRENT it is converted to a number according to the current base.
|
|||
|
That also failing, an error message echoing the name with a " ?"
|
|||
|
will be given.
|
|||
|
Text input will be taken according to the convention for WORD. If a
|
|||
|
decimal point is found as part of a number, a double number value
|
|||
|
will be left. The decimal point has no other purpose than to force
|
|||
|
this action.
|
|||
|
See NUMBER.
|
|||
|
|
|||
|
|
|||
|
KEY --- c L0
|
|||
|
Leave the ascii value of the next terminal key struck.
|
|||
|
|
|||
|
|
|||
|
LATEST --- addr
|
|||
|
Leave the name field address of the topmost word in the CURRENT
|
|||
|
vocabulary.
|
|||
|
|
|||
|
|
|||
|
LEAVE C,L0
|
|||
|
Force termination of a DO-LOOP at the next opportunity by setting
|
|||
|
the loop limit equal to the current value of the index. The index
|
|||
|
itself remains unchanged, and execution proceeds normally until LOOP
|
|||
|
or +LOOP is encountered.
|
|||
|
|
|||
|
|
|||
|
LFA pfa --- lfa
|
|||
|
Convert the parameter field address of a dictionary definition to
|
|||
|
its link field address.
|
|||
|
|
|||
|
|
|||
|
LIMIT ---- n
|
|||
|
A constant leaving the address just above the highest memory
|
|||
|
available for a disc buffer. Usually this is the highest system
|
|||
|
memory.
|
|||
|
|
|||
|
|
|||
|
LIST n --- L0
|
|||
|
Display the ascii text of screen n on the selected output device.
|
|||
|
SCR contains the screen number during and after this process.
|
|||
|
|
|||
|
|
|||
|
LIT --- n C2,L0
|
|||
|
Within a colon-definition, LIT is automatically compiled before each
|
|||
|
16 bit literal number encountered in input text. Later execution of
|
|||
|
LIT causes the contents of the next dictionary address to be pushed
|
|||
|
to the stack.
|
|||
|
|
|||
|
|
|||
|
LITERAL n --- (compiling) P,C2,L0
|
|||
|
If compiling, then compile the stack value n as a 16 bit literal.
|
|||
|
This definition is immediate so that it will execute during a colon
|
|||
|
definition. The intended use is:
|
|||
|
: xxx [ calculate ] LITERAL ;
|
|||
|
Compilation is suspended for the compile time calculation of m
|
|||
|
value.
|
|||
|
Compilation is resumed and LITERAL compiles this value.
|
|||
|
|
|||
|
|
|||
|
LOAD n --- L0
|
|||
|
Begin interpretation of screen n.
|
|||
|
Loading will terminate at the end of the screen or at ;S. See ;S and
|
|||
|
-->.
|
|||
|
|
|||
|
|
|||
|
LOOP addr n --- (compiling) P,C2,L0
|
|||
|
Occurs in a colon-definition in form:
|
|||
|
DO ... LOOP
|
|||
|
At run-time, LOOP selectively controls branching back to the
|
|||
|
corresponding DO based on the loop index and limit. The loop index
|
|||
|
is incremented by one and compared to the limit. The branch back to
|
|||
|
DO occurs until the index equals or exceeds the limit;
|
|||
|
at that time, the parameters are discarded and execution continues
|
|||
|
ahead.
|
|||
|
|
|||
|
At compile-time. LOOP compiles (LOOP) and uses addr to calculate an
|
|||
|
offset to DO. n is used for error testing.
|
|||
|
|
|||
|
|
|||
|
M* n1 n2 --- d
|
|||
|
A mixed magnitude math operation which leaves the double number
|
|||
|
signed product of two signed number.
|
|||
|
|
|||
|
|
|||
|
M/ d n1 --- n2 n3
|
|||
|
A mixed magnitude math operator which leaves the signed remainder n2
|
|||
|
and signed quotient n3 from a double number dividend and divisor n1.
|
|||
|
The remainder takes its sign from the dividend.
|
|||
|
|
|||
|
|
|||
|
M/MOD ud1 u2 --- u3 ud4
|
|||
|
An unsigned mixed magnitude math operation which leaves a double
|
|||
|
quotient ud4 and remainder u3, from a double dividend ud1 and single
|
|||
|
divisor u2.
|
|||
|
|
|||
|
|
|||
|
MAX n1 n2 --- max L0
|
|||
|
Leave the greater of two numbers.
|
|||
|
|
|||
|
|
|||
|
MESSAGE n --
|
|||
|
Print on the selected output device the text of line n relative to
|
|||
|
screen 4 of drive O. n may be positive or negative. MESSAGE may be
|
|||
|
used to print incidental text such as report headers. If WARNING is
|
|||
|
zero, the message will simply be printed as a number (disc
|
|||
|
unavailable).
|
|||
|
|
|||
|
|
|||
|
MIN n1 n2 --- min L0
|
|||
|
Leave the smaller of two numbers.
|
|||
|
|
|||
|
|
|||
|
MINUS n1 --- n2 L0
|
|||
|
Leave the two's complement of a number.
|
|||
|
|
|||
|
|
|||
|
MOD n1 n2 --- mod L0
|
|||
|
Leave the remainder of n1/n2, with the same sign as n1.
|
|||
|
|
|||
|
|
|||
|
MON
|
|||
|
Exit to the system monitor, leaving a re-entry to Forth, if
|
|||
|
possible.
|
|||
|
|
|||
|
|
|||
|
MOVE addr1 addr2 n --
|
|||
|
Move the contents of n memory cells (l6 bit contents) beginning at
|
|||
|
addr1 into n ills beginning at addr2.
|
|||
|
The contents of addr1 is moved first.
|
|||
|
This definition is appropriate on on word addressing computers.
|
|||
|
|
|||
|
|
|||
|
NEXT
|
|||
|
This is the inner interpreter that uses the interpretive pointer IP
|
|||
|
to execute compiled Forth definitions. It is not directly executed
|
|||
|
but is ff the return point for all code proceedures. It acts by
|
|||
|
fetching the address pointed by IP, storing this value in register
|
|||
|
W. It then jumps to the address pointed to by the address pointed to
|
|||
|
by W. W points to the code field of a definition which contains
|
|||
|
the address of the code which executes for that definition.
|
|||
|
This usage of indirect threaded code is a major contributor to the
|
|||
|
power, portability, and extensibility of Forth. Locations of IP and
|
|||
|
W are computer specific.
|
|||
|
|
|||
|
|
|||
|
NFA pfa --- nfa
|
|||
|
Convert the parameter. field address of a definition to its name
|
|||
|
field.
|
|||
|
|
|||
|
|
|||
|
NUMBER addr --- d
|
|||
|
Convert a character string left at addr with a preceeding count, to
|
|||
|
a signed .double number, using the current numeric base. If a
|
|||
|
decimal point is encountered in the text, its position will be
|
|||
|
given in DPL, but no other effect occurs. If numeric conversion is
|
|||
|
not possible, an error message will be given.
|
|||
|
|
|||
|
|
|||
|
OFFSET --- addr U
|
|||
|
A user variable which may contain a block offset to disc drives. The
|
|||
|
contents of OFFSET is added to the stack number by BLOCK. Messages
|
|||
|
by MESSAGE are independent of OFFSET.
|
|||
|
See BLOCK, DR0, DR1, MESSAGE.
|
|||
|
|
|||
|
|
|||
|
OR n1 n2 -- or L0
|
|||
|
Leave the bit-wise logical or of two l6 bit values.
|
|||
|
|
|||
|
|
|||
|
OUT --- addr U
|
|||
|
A user variable that contains a value incremented by EMIT. The user
|
|||
|
may alter and examine OUT to control display formating.
|
|||
|
|
|||
|
|
|||
|
OVER nl n2 --- nl n2 n1 L0
|
|||
|
Copy the second stack value, placing it as the new top.
|
|||
|
|
|||
|
|
|||
|
PAD --- addr L0
|
|||
|
Leave the address of the text output buffer, which is a fixed offset
|
|||
|
above v HERE.
|
|||
|
|
|||
|
|
|||
|
PFA nfa --- pfa
|
|||
|
Convert the name field address of a compiled definition to its
|
|||
|
parameter field address.
|
|||
|
|
|||
|
|
|||
|
POP
|
|||
|
The code sequence to remove a stack value and return to NEXT. POP is
|
|||
|
not directly executable, but is s Forth re-entry point after machine
|
|||
|
code.
|
|||
|
|
|||
|
|
|||
|
PREV ---- addr
|
|||
|
A variable containing the address of the disc buffer most recently
|
|||
|
referenced. The UPDATE command marks this buffer to be later written
|
|||
|
to disc.
|
|||
|
|
|||
|
|
|||
|
PUSH
|
|||
|
This code sequence pushes m3chine registers to the computation stack
|
|||
|
and returns to NEXT. It is not directly executable, but is a Forth
|
|||
|
re-entry point after machine code.
|
|||
|
|
|||
|
|
|||
|
PUT
|
|||
|
This code sequence stores machine register contents over the topmost
|
|||
|
computation stack value and returns to NEXT. It is not directly
|
|||
|
executable, but is a Forth re-entry point after machine code.
|
|||
|
|
|||
|
|
|||
|
QUERY
|
|||
|
Input 80 characters of text (or until a "return") from the operators
|
|||
|
terminal. Text is positioned at the address contained in TIB with IN
|
|||
|
set to zero.
|
|||
|
|
|||
|
|
|||
|
QUIT
|
|||
|
Clear the return stack, stop compilation, and return control to the
|
|||
|
operators terminal. No message is given.
|
|||
|
|
|||
|
|
|||
|
R --- n
|
|||
|
Copy the top of the return stack to the computation stack.
|
|||
|
|
|||
|
|
|||
|
R# --- addr U
|
|||
|
A user variable which may contain the location of an editing cursor,
|
|||
|
or other file related function.
|
|||
|
|
|||
|
|
|||
|
R/W addr blk f --
|
|||
|
The fig-FORTH standard disc read-write linkage. addr specifies the
|
|||
|
source or destination block buffer, blk is the sequential number of
|
|||
|
the referenced block; and f is a flag for f=O write and f=l read.
|
|||
|
R/W determines the location on mass storage, performs the read-write
|
|||
|
and performs any error checking.
|
|||
|
|
|||
|
|
|||
|
R> --- n L0
|
|||
|
Remove the top value from the return stack and leave it on the
|
|||
|
computation stack. See >R and R.
|
|||
|
|
|||
|
|
|||
|
R0 --- addr U
|
|||
|
A user variable containing the initial location of the return stack.
|
|||
|
Pronounced R-zero. See RP!
|
|||
|
|
|||
|
|
|||
|
REPEAT addr n --- (compiling) P,C2
|
|||
|
Used within a colon-definition in the form:
|
|||
|
BEGIN ... WHILE ... REPEAT
|
|||
|
At run-time, REPEAT forces an unconditional branch back to just
|
|||
|
after the corresponding BEGIN.
|
|||
|
|
|||
|
At compile-time, REPEAT compiles BRANCH and the offset from HERE to
|
|||
|
addr. n is used for error testing.
|
|||
|
|
|||
|
|
|||
|
ROT nl n2 n3 --- n2 n3 nl L0
|
|||
|
Rotate the top three values on the stack, bringing the third to the
|
|||
|
top.
|
|||
|
|
|||
|
|
|||
|
RP!
|
|||
|
A computer dependent proceedure to initialize the return stack
|
|||
|
pointer from user variable R0.
|
|||
|
|
|||
|
|
|||
|
S->D n --- d
|
|||
|
Sign extend a single number to form a double number.
|
|||
|
|
|||
|
|
|||
|
SO --- addr U
|
|||
|
A user variable that contains the initial value for the stack
|
|||
|
pointer.
|
|||
|
Pronounced S-zero. See SP!
|
|||
|
|
|||
|
|
|||
|
SCR --- addr U
|
|||
|
A user variable containing the screen number most recently reference
|
|||
|
by LIST.
|
|||
|
|
|||
|
|
|||
|
SIGN n d --- d L0
|
|||
|
Stores an ascii "-" sign just before a converted numeric output
|
|||
|
string in the text output buffer when n is negative. n is discarded
|
|||
|
but double number d is maintained. Must be used between <# and #>.
|
|||
|
|
|||
|
|
|||
|
SMUDGE
|
|||
|
Used during word definition to toggle the "smudge bit" in a
|
|||
|
definitions' name field. This prevents an uncompleted definition
|
|||
|
from being found during dictionary searches, until compiling. is
|
|||
|
completed without error.
|
|||
|
|
|||
|
|
|||
|
SP!
|
|||
|
A computer dependent proceedure to initialize the stack pointer from
|
|||
|
SO.
|
|||
|
|
|||
|
|
|||
|
SP@ --- addr
|
|||
|
A computer dependent proceedure to return the address of the stack
|
|||
|
position to the top of the stack, as it was before SP@ was executed.
|
|||
|
(e.g. 1 2 SP@ @ . . . would
|
|||
|
type 2 2 1)
|
|||
|
|
|||
|
|
|||
|
SPACE L0
|
|||
|
Transmit an ascii blank to the output device.
|
|||
|
|
|||
|
|
|||
|
SPACES n --- L0
|
|||
|
Transmit n ascii blanks to the output device.
|
|||
|
|
|||
|
|
|||
|
STATE --- addr L0,U
|
|||
|
A user variable containing the compilation state. A non-zero value
|
|||
|
indicates compilation. The value itself may be implementation
|
|||
|
dependent.
|
|||
|
|
|||
|
|
|||
|
SWAP nl n2 --- n2 n1 L0
|
|||
|
Exchange the top two values On the stack.
|
|||
|
|
|||
|
|
|||
|
TASK
|
|||
|
A no-operation word which can mark the boundary between
|
|||
|
applications.
|
|||
|
By forgetting TASK and re-compiling, an application can be discarded
|
|||
|
in its entirety.
|
|||
|
|
|||
|
|
|||
|
THEN P,CO,L O
|
|||
|
An alias for ENDIF.
|
|||
|
|
|||
|
|
|||
|
TIB --- addr U
|
|||
|
A user variable containing the address of the terminal input buffer.
|
|||
|
|
|||
|
|
|||
|
TOGGLE addr b --
|
|||
|
Complement the contents of addr by the bit pattern b.
|
|||
|
|
|||
|
|
|||
|
TRAVERSE addr1 n --- addr2
|
|||
|
Move across the name field of a fig-FORTH variable length name
|
|||
|
field.
|
|||
|
addr1 is the address of either the length byte or the last letter.
|
|||
|
If n=1, the motion is toward hi memory; if n=-l, the motion is
|
|||
|
toward low memory. The addr2 resulting is address of the other end
|
|||
|
of the name.
|
|||
|
|
|||
|
|
|||
|
TRIAD scr --
|
|||
|
Display on the selected output device the three screens which
|
|||
|
include that numbered scr, beginning with a screen evenly divisible
|
|||
|
by three. Output is suitable for source text records, and includes a
|
|||
|
reference line at the bottom taken from line 15 of screen4.
|
|||
|
|
|||
|
|
|||
|
TYPE addr count --- L0
|
|||
|
Transmit count characters from addr to the selected output device.
|
|||
|
|
|||
|
|
|||
|
U* u1 u2 --- ud
|
|||
|
Leave the unsigned double number product of two unsigned numbers.
|
|||
|
|
|||
|
|
|||
|
U/ ud u1 --- u2 u3
|
|||
|
Leave the unsigned remainder u2 and unsigned quotient u3 from the
|
|||
|
unsigned double dividend ud and unsigned divisor u1.
|
|||
|
|
|||
|
|
|||
|
UNTIL f --- (run-time)
|
|||
|
addr n --- (compile) P,C2,L0
|
|||
|
Occurs within a colon-definition in the form:
|
|||
|
BEGIN ... UNTIL
|
|||
|
At run-time, UNTIL controls the conditional branch back to the
|
|||
|
corresponding BEGIN. If f is false, execution returns to just after.
|
|||
|
BEGIN;
|
|||
|
if true, execution continues ahead.
|
|||
|
|
|||
|
At compile-time, UNTIL compiles (0BRANCH) and an offset from HERE to
|
|||
|
addr. n is used for error tests.
|
|||
|
|
|||
|
|
|||
|
UPDATE L0
|
|||
|
Marks the most recently referenced block (pointed to by PREV) as
|
|||
|
altered. The block will subsequently be transferred automatically to
|
|||
|
disc should its buffer be required for storage of a different block.
|
|||
|
|
|||
|
|
|||
|
USE --- addr
|
|||
|
A variable containing the address of the block buffer to use next,
|
|||
|
as the least recently written.
|
|||
|
|
|||
|
|
|||
|
USER n --- L0
|
|||
|
A defining word used in the form:
|
|||
|
n USER cccc
|
|||
|
which creates a user variable cccc.
|
|||
|
The parameter field of cccc contains n as a fixed offset relative to
|
|||
|
the user pointer register UP for this user variable. When cccc is
|
|||
|
later executed, it places the sum of its offset and the user area
|
|||
|
base address on the stack as the storage address of that
|
|||
|
particular variable.
|
|||
|
|
|||
|
|
|||
|
VARIABLE E,LU
|
|||
|
A defining word used in the form:
|
|||
|
n VARIABLE cccc
|
|||
|
When VARIABLE is executed, it creates the definition cccc with its
|
|||
|
parameter field initialized to n. When cccc is later executed, the
|
|||
|
address of its parameter field (containing n) is left on the stack,
|
|||
|
so that a fetch or store may access this location.
|
|||
|
|
|||
|
|
|||
|
VOC-LINK --- addr U
|
|||
|
A user variable containing the address of a field in the definition
|
|||
|
of the most recently created vocabulary. All vocabulary names are
|
|||
|
linked by these fields to allow control for FORGETting thru multiple
|
|||
|
vocabularies.
|
|||
|
|
|||
|
|
|||
|
VOCABULARY E,L
|
|||
|
A defining word used in the form:
|
|||
|
VOCABULARY cccc
|
|||
|
to create a vocabulary definition cccc. Subsequent use of cccc will
|
|||
|
make it the CONTEXT vocabulary which is searched first by INTERPRET.
|
|||
|
The sequence "cccc DEFINITIONS" will also make cccc the CURRENT
|
|||
|
vocabulary into which new definitions are placed.
|
|||
|
|
|||
|
In fig-FORTH, cccc will be so chained as to include all definitions
|
|||
|
of the vocabulary in which cccc is itself defined. All vocabularys
|
|||
|
ultimately chain to Forth. By convention, vocabulary names are to be
|
|||
|
declared IMMEDIATE. See VOC-LINK.
|
|||
|
|
|||
|
|
|||
|
VLIST
|
|||
|
List the names of the definitions in the context vocabulary. "Break"
|
|||
|
will terminate the listing.
|
|||
|
|
|||
|
|
|||
|
WARNING --- addr U
|
|||
|
A user variable containing a value controlling messages. If = 1 disc
|
|||
|
is present, and screen 4 of drive 0 is the base location for
|
|||
|
messages. If = 0, no disc is present and messages will be presented
|
|||
|
by number. If = -1, execute (ABORT) for a user specified proceedure.
|
|||
|
See MESSAGE, ERROR.
|
|||
|
|
|||
|
|
|||
|
WHILE f --- (run-time)
|
|||
|
ad1 nl --- ad1 n1 ad2 n2 p,C2
|
|||
|
Occurs in a colon-definition in the form:
|
|||
|
BEGIN ... WHILE (tp) ... REPEAT
|
|||
|
At run-time, WHILE selects conditional execution based on boolean
|
|||
|
flag f. If f is true (non-zero), WHILE continues execution of the
|
|||
|
true part thru to REPEAT, which then branches back to BEGIN. If f is
|
|||
|
false (zero), execution skips to just after REPEAT, exiting the
|
|||
|
structure.
|
|||
|
|
|||
|
At compile time, WHILE emplaces (0BRANCH) and leaves ad2 of the
|
|||
|
reserved offset. The stack values will be resolved by REPEAT.
|
|||
|
|
|||
|
|
|||
|
WIDTH --- addr U
|
|||
|
In fig-FORTH, a user variable containing the maximum number of
|
|||
|
letters saved in the compilation of a definitions' name. It must be
|
|||
|
1 thru 31, with a default value of 31. The name character count and
|
|||
|
its natural characters are saved, up to the value in WIDTH. The
|
|||
|
value may be changed at any time within the above limits.
|
|||
|
|
|||
|
|
|||
|
WORD c --- L0
|
|||
|
Read the next text characters from the input stream being
|
|||
|
interpreted, until a delimiter c is found, storing the packed
|
|||
|
character string beginning at the dictionary buffer HERE. WORD
|
|||
|
leaves the character count in the first byte, the characters, and
|
|||
|
ends with two or more blanks. Leading occurrences of c are ignored.
|
|||
|
If BLK is zero text is taken from the terminal input buffer,
|
|||
|
otherwise from the disc block stored in BLK.
|
|||
|
See BLK, IN.
|
|||
|
|
|||
|
|
|||
|
X
|
|||
|
This is pseudonym for the "null" or dictionary entry for a name of
|
|||
|
one character of ascii null. It is the execution proceedure to
|
|||
|
terminate interpretation of a line of text from the terminal or
|
|||
|
within a disc buffer, as both buffers always have a null at the
|
|||
|
end.
|
|||
|
|
|||
|
|
|||
|
XOR nl n2 --- xor L1
|
|||
|
Leave the bitwise logical exclusive or of two values.
|
|||
|
|
|||
|
|
|||
|
[ P,L1
|
|||
|
Used in a colon-definition in form:
|
|||
|
: xxx [ words ] more ;
|
|||
|
Suspend compilation. The words after [ are executed, not compiled.
|
|||
|
This allows calculation or compilation exceptions before resuming
|
|||
|
compilation with ] . See LITERAL, ].
|
|||
|
|
|||
|
|
|||
|
[COMPILE] p,C
|
|||
|
Used in a colon-definition in form:
|
|||
|
: xxx [COMPILE] FORTH ;
|
|||
|
[COMPILE] will force the compilation of an immediate definitions,
|
|||
|
that would otherwise execute during compilation. The above example
|
|||
|
will select the FORTH vocabulary then xxx executes, rather than at
|
|||
|
compile time.
|
|||
|
|
|||
|
|
|||
|
] L1
|
|||
|
Resume compilation, to the completion of a colon-definition.
|
|||
|
See [.
|