Category : Forth Source Code
Archive   : DIARY.ZIP
Filename : F83FILE.005

 
Output of file : F83FILE.005 contained in archive : DIARY.ZIP




36





12. REQUIRED WORD SET


FLUSH -- M,83
Performs the function of SAVE-BUFFERS then unassigns all
block buffers. (This may be useful for mounting or changing
mass storage media).

FORGET -- M,83
Used in the form:
FORGET
____
If is found in the compilation vocabulary, delete
____
from the dictionary and all words added to the
____
dictionary after regardless of their vocabulary.
____
Failure to find is an error condition. An error
____
condition also exists if the compilation vocabulary is
deleted. See: "10.2 General Error Conditions"

FORTH -- 83
The name of the primary vocabulary. Execution replaces the
first vocabulary in the search order with FORTH . FORTH is
initially the compilation vocabulary and the first
vocabulary in the search order. New definitions become part
of the FORTH vocabulary until a different compilation
vocabulary is established. See: VOCABULARY

FORTH-83 -- 83
Assures that a FORTH-83 Standard System is available,
otherwise an error condition exists.

HERE -- addr 79
The address of the next available dictionary location.

HOLD char -- 79
char is inserted into a pictured numeric output string.
Typically used between <# and #>.

I -- w C,79
w is a copy of the loop index. May only be used in the
form:
DO ... I ... LOOP
or
DO ... I ... +LOOP

















37





12. REQUIRED WORD SET


IF flag -- C,I,79
-- sys (compiling)
Used in the form:
flag IF ... ELSE ... THEN
or
flag IF ... THEN
If flag is true, the words following IF are executed and the
words following ELSE until just after THEN are skipped. The
ELSE part is optional.

If flag is false, the words from IF through ELSE , or from
IF through THEN (when no ELSE is used), are skipped. sys is
balanced with its corresponding ELSE or THEN . See: "9.9
Control Structures"

IMMEDIATE -- 79
Marks the most recently created dictionary entry as a word
which will be executed when encountered during compilation
rather than compiled.

J -- w C,79
w is a copy of the index of the next outer loop. May only
be used within a nested DO-LOOP or DO-+LOOP in the form, for
example:
DO ... DO ... J ... LOOP ... +LOOP

KEY -- 16b M,83
The least-significant 7 bits of 16b is the next ASCII
character received. All valid ASCII characters can be
received. Control characters are not processed by the
system for any editing purpose. Characters received by KEY
will not be displayed. See: "9.5.1 KEY"

LEAVE -- C,I,83
-- (compiling)
Transfers execution to just beyond the next LOOP or +LOOP .
The loop is terminated and loop control parameters are
discarded. May only be used in the form:
DO ... LEAVE ... LOOP
or
DO ... LEAVE ... +LOOP
LEAVE may appear within other control structures which are
nested within the do-loop structure. More than one LEAVE
may appear within a do-loop. See: "9.3 Return Stack"

LITERAL -- 16b C,I,79
16b -- (compiling)
Typically used in the form:
[ 16b ] LITERAL
Compiles a system dependent operation so that when later
executed, 16b will be left on the stack.






38





12. REQUIRED WORD SET


LOAD u -- M,79
The contents of >IN and BLK , which locate the current input
stream, are saved. The input stream is then redirected to
the beginning of screen u by setting >IN to zero and BLK to
u. The screen is then interpreted. If interpretation from
screen u is not terminated explicitly it will be terminated
when the input stream is exhausted and then the contents of
>IN and BLK will be restored. An error condition exists if
u is zero. See: >IN BLK BLOCK

LOOP -- C,I,83
sys -- (compiling)
Increments the DO-LOOP index by one. If the new index was
incremented across the boundary between limit-1 and limit
the loop is terminated and loop control parameters are
discarded. When the loop is not terminated, execution
continues to just after the corresponding DO . sys is
balanced with its corresponding DO . See: DO

MAX n1 n2 -- n3 79 "max"
n3 is the greater of n1 and n2 according to the operation of
> .


MIN n1 n2 -- n3 79 "min"
n3 is the lesser of n1 and n2 according to the operation of
< .

MOD n1 n2 -- n3 83
n3 is the remainder after dividing n1 by the divisor n2. n3
has the same sign as n2 or is zero. An error condition
results if the divisor is zero or if the quotient falls
outside of the range {-32,768..32,767}. See: "division,
floored"

NEGATE n1 -- n2 79
n2 is the two's complement of n1, i.e, the difference of
zero less n1.

NOT 16b1 -- 16b2 83
16b2 is the one's complement of 16b1.

OR 16b1 16b2 -- 16b3 79
16b3 is the bit-by-bit inclusive-or of 16b1 with 16b2.

OVER 16b1 16b2 -- 16b1 16b2 16b3 79
16b3 is a copy of 16b1.

PAD -- addr 83
The lower address of a scratch area used to hold data for
intermediate processing. The address or contents of PAD may
change and the data lost if the address of the next
available dictionary location is changed. The minimum
capacity of PAD is 84 characters.




39





12. REQUIRED WORD SET


PICK +n -- 16b 83
16b is a copy of the +nth stack value, not counting +n
itself. {0..the number of elements on stack-1}
0 PICK is equivalent to DUP
1 PICK is equivalent to OVER

QUIT -- 79
Clears the return stack, sets interpret state, accepts new
input from the current input device, and begins text
interpretation. No message is displayed.

R> -- 16b C,79 "r-from"
16b is removed from the return stack and transferred to the
data stack. See: "9.3 Return Stack"

R@ -- 16b C,79 "r-fetch"
16b is a copy of the top of the return stack.

REPEAT -- C,I,79
sys -- (compiling)
Used in the form:
BEGIN ... flag WHILE ... REPEAT
At execution time, REPEAT continues execution to just after
the corresponding BEGIN . sys is balanced with its
corresponding WHILE . See: BEGIN

ROLL +n -- 83
The +nth stack value, not counting +n itself is first
removed and then transferred to the top of the stack, moving
the remaining values into the vacated position. {0..the
number of elements on the stack-1}
2 ROLL is equivalent to ROT
0 ROLL is a null operation

ROT 16b1 16b2 16b3 -- 16b2 16b3 16b1 79 "rote"
The top three stack entries are rotated, bringing the
deepest to the top.

SAVE-BUFFERS -- M,79 "save-buffers"
The contents of all block buffers marked as UPDATEed are
written to their corresponding mass storage blocks. All
buffers are marked as no longer being modified, but may
remain assigned.

SIGN n -- 83
If n is negative, an ASCII "-" (minus sign) is appended to
the pictured numeric output string. Typically used between
<# and #> .

SPACE -- M,79
Displays an ASCII space.






40





12. REQUIRED WORD SET


SPACES +n -- M,79
Displays +n ASCII spaces. Nothing is displayed if +n is
zero.

SPAN -- addr U,83
The address of a variable containing the count of characters
actually received and stored by the last execution of
EXPECT . See: EXPECT

STATE -- addr U,79
The address of a variable containing the compilation state.
A non-zero content indicates compilation is occurring, but
the value itself is system dependent. A Standard Program
may not modify this variable.

SWAP 16b1 16b2 -- 16b2 16b1 79
The top two stack entries are exchanged.

THEN -- C,I,79
sys -- (compiling)
Used in the form:
flag IF ... ELSE ... THEN
or
flag IF ... THEN
THEN is the point where execution continues after ELSE , or
IF when no ELSE is present. sys is balanced with its
corresponding IF or ELSE . See: IF ELSE

TIB -- addr 83 "t-i-b"
The address of the text input buffer. This buffer is used
to hold characters when the input stream is coming from the
current input device. The minimum capacity of TIB is 80
characters.

TYPE addr +n -- M,79
+n characters are displayed from memory beginning with the
character at addr and continuing through consecutive
addresses. Nothing is displayed if +n is zero. See:
"9.5.4 TYPE"

U. u -- M,79 "u-dot"
u is displayed as an unsigned number in a free-field format.

U< u1 u2 -- flag 83 "u-less-than"
flag is true if u1 is less than u2.

UM* u1 u2 -- ud 83 "u-m-times"
ud is the unsigned product of u1 times u2. All values and
arithmetic are unsigned.








41






12. REQUIRED WORD SET


UM/MOD ud u1 -- u2 u3 83 "u-m-divide-mod"
u2 is the remainder and u3 is the floor of the quotient
after dividing ud by the divisor u1. All values and
arithmetic are unsigned. An error condition results if the
divisor is zero or if the quotient lies outside the range
{0..65,535}. See: "floor, arithmetic"

UNTIL flag -- C,I,79
sys -- (compiling)
Used in the form:
BEGIN ... flag UNTIL
Marks the end of a BEGIN-UNTIL loop which will terminate
based on flag. If flag is true, the loop is terminated. If
flag is false, execution continues to just after the
corresponding BEGIN . sys is balanced with its
corresponding BEGIN . See: BEGIN

UPDATE -- 79
The currently valid block buffer is marked as modified.
Blocks marked as modified will subsequently be automatically
transferred to mass storage should its memory buffer be
needed for storage of a different block or upon execution of
FLUSH or SAVE-BUFFERS .

VARIABLE -- M,79
A defining word executed in the form:
VARIABLE
____
A dictionary entry for is created and two bytes are
____
ALLOTted in its parameter field. This parameter field is to
be used for contents of the variable. The application is
responsible for initializing the contents of the variable
which it creates. When is later executed, the
____
address of its parameter field is placed on the stack.

VOCABULARY -- M,83
A defining word executed in the form:
VOCABULARY
____
A dictionary entry for is created which specifies a
____
new ordered list of word definitions. Subsequent execution
of replaces the first vocabulary in the search order
____
with . When becomes the compilation vocabulary
____ ____
new definitions will be appended to 's list. See:
____
DEFINITIONS "search order"














42





12. REQUIRED WORD SET


WHILE flag -- C,I,79
sys1 -- sys2 (compiling)
Used in the form:
BEGIN ... flag WHILE ... REPEAT
Selects conditional execution based on flag. When flag is
true, execution continues to just after the WHILE through to
the REPEAT which then continues execution back to just after
the BEGIN . When flag is false, execution continues to just
after the REPEAT , exiting the control structure. sys1 is
balanced with its corresponding BEGIN . sys2 is balanced
with its corresponding REPEAT . See: BEGIN

WORD char -- addr M,83
Generates a counted string by non-destructively accepting
characters from the input stream until the delimiting
character char is encountered or the input stream is
exhausted. Leading delimiters are ignored. The entire
character string is stored in memory beginning at addr as a
sequence of bytes. The string is followed by a blank which
is not included in the count. The first byte of the string
is the number of characters {0..255}. If the string is
longer than 255 characters, the count is unspecified. If
the input stream is already exhausted as WORD is called,
then a zero length character string will result.

If the delimiter is not found the value of >IN is the size
of the input stream. If the delimiter is found >IN is
adjusted to indicate the offset to the character following
the delimiter. #TIB is unmodified.

The counted string returned by WORD may reside in the "free"
dictionary area at HERE or above. Note that the text
interpreter may also use this area. See: "input stream"

XOR 16b1 16b2 -- 16b3 79 "x-or"
16b3 is the bit-by-bit exclusive-or of 16b1 with 16b2.

[ -- I,79 "left-bracket"
-- (compiling)
Sets interpret state. The text from the input stream is
subsequently interpreted. For typical usage see LITERAL .
See: ]

['] -- addr C,I,M,83 "bracket-
-- (compiling) tick"
Used in the form:
[']
____
Compiles the compilation address addr of as a
____
literal. When the colon definition is later executed addr
is left on the stack. An error condition exists if
____
is not found in the currently active search order. See:
LITERAL





43







  3 Responses to “Category : Forth Source Code
Archive   : DIARY.ZIP
Filename : F83FILE.005

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/