FORTH - DIARY.ZIP - DIARY5.TXT

 
Output of file : DIARY5.TXT contained in archive : DIARY.ZIP

SEPT. 7, 1989
SUBJECT: FORTH-83 STANDARD

DIARY OF A FORTH STUDENT - PART 5
--------------------------------------------------

As a student of forth you will find that it is
unavoidable to encounter the subject of "THE STANDARD" , that
is unless you are going to write programs for only your use
or by someone who is using the SAME forth as yourself and
you use words which they already have in their dictionary
(you already gave them your extention) or you supply them with
the necessary extention source code. PERSONALLY, I think it is
IMPOSSIBLE for a forth programmer who has any contact with any
one else in the forth community to avoid addressing the issue
of the STANDARD. At the moment, "THE STANDARD" refers to (IN
MOST CASES) the FORTH-83 STANDARD as defined in the FORTH-83
STANDARD document created and distributed by the FORTH STAN-
DARDS TEAM. If you ever plan to distribute anything you write
or use anything written by anyone else, at some point you will
have to come to grips with the contents of the document of
which I speak. As a matter of fact (or my opinion), UNTIL you
come to grips with the contents of this all important document
you will find yourself on the sidelines watching other forth
programmers discussing issues and concepts that are either
foriegn to you or unclear to you due to your unfamiliarity
with this document. As a newcomer to forth, doesn't seem much
more practical (dare I say WISER) to not beat around the bush
and just go straight to the subject in question , to wit, THE
STANDARD and actually obtain the infamous document for your
in depth perusal and (hopefully) study ? Why put yourself
through all the anquish of running into problem after problem
due to your unfamiliarity with the FORTH-83 STANDARD ? Toward
that end , and in the hopes of leading you in the right direction
I put it to you that there is NOTHING you could possibly do at
this point (the beginning) of your career in forth that could
be more important or beneficial than to LEARN the FORTH-83
STANDARD. Let me clarify that. I did not say READ, I said LEARN
the damn thing! (yes, I swore, I apologize, but under the cir-
cumstances I felt it appropriate...). Now, to help ease the
pain, I offer you a suggestion as to how to expedite the matter
of LEARNING the FORTH-83 STANDARD. First of all , make a backup
copy of the .PRN file , you may need it someday and it will
save you the time of downloading it again. Next, after you have
unarced it, try using the DOS program FIND.COM or any other
"find" program to locate something in the standards document.
The following is an example:



FIND "IF" FORTH-83.PRN


---------- FORTH-83.PRN
C.1 SEARCH ORDER SPECIFICATION AND CONTROL ....... 61
compilation. See, for example, IF LITERAL ." etc.
UNTIL IF ... THEN IF ... ELSE ... THEN See: "9.9 Control
CREATE DO DOES> ELSE IF IMMEDIATE LEAVE LITERAL LOOP
flag IF ... ELSE ... THEN
ELSE executes after the true part following IF . ELSE
balanced with its corresponding IF . sys2 is balanced with
its corresponding THEN . See: IF THEN
IF flag -- C,I,79
flag IF ... ELSE ... THEN
flag IF ... THEN
If flag is true, the words following IF are executed and the
If flag is false, the words from IF through ELSE , or from
IF through THEN (when no ELSE is used), are skipped. sys is
flag IF ... ELSE ... THEN
flag IF ... THEN
IF when no ELSE is present. sys is balanced with its
corresponding IF or ELSE . See: IF ELSE
: IF COMPILE ?BRANCH >MARK ; IMMEDIATE
ASHIFT 16b1 n -- 16b2 "a-shift"
IFEND Interpret only"if-end"
IFTRUE .
IFTRUE flag -- Interpret only "if-true"
IFTRUE ... OTHERWISE ... IFEND
IF ... ELSE ... THEN
An interpreter-level conditional word. See: IFTRUE
SHIFT 16b1 n -- 16b2
SEARCH ORDER SPECIFICATION AND CONTROL

FIND "FLUSH" FORTH-83.PRN


---------- FORTH-83.PRN
BLOCK BUFFER CR EMIT EXPECT FLUSH KEY SAVE-BUFFERS
FLUSH -- M,83
FLUSH or SAVE-BUFFERS .

FIND "2ROT" FORTH-83.PRN


---------- FORTH-83.PRN
2! [email protected] 2DROP 2DUP 2OVER 2ROT 2SWAP D+ D- D0= D2/
2ROT 32b1 32b2 32b3 -- 32b2 32b3 32b1 79 "two-rote"

FIND "CONTROLLED REFERENCE WORDS" FORTH-83.PRN


---------- FORTH-83.PRN
16. CONTROLLED REFERENCE WORDS ............................. 48
B. UNCONTROLLED REFERENCE WORDS ...................... 54
16. CONTROLLED REFERENCE WORDS
16. CONTROLLED REFERENCE WORDS
16. CONTROLLED REFERENCE WORDS
16. CONTROLLED REFERENCE WORDS
B. UNCONTROLLED REFERENCE WORDS
APPENDIX B. UNCONTROLLED REFERENCE WORDS
B. UNCONTROLLED REFERENCE WORDS
B. UNCONTROLLED REFERENCE WORDS
B. UNCONTROLLED REFERENCE WORDS
B. UNCONTROLLED REFERENCE WORDS
B. UNCONTROLLED REFERENCE WORDS
B. UNCONTROLLED REFERENCE WORDS

FIND "CONTEXT" FORTH-83.PRN


---------- FORTH-83.PRN
CONTEXT CURRENT
CONTEXT -- addr U,79
1. Two search orders exist. CONTEXT is the group of
2. Empty CONTEXT to a minimum number of system words. These
3. Add individual vocabularies into CONTEXT. The most recently
CONTEXT search order.
2. Display the vocabulary names comprising CURRENT and CONTEXT
others. Another drawback is that the number of CONTEXT
1 ( note the systems -FIND searches 1 to 5 vocabs in CONTEXT )
4 CONTEXT DUP 2+ 6 CMOVE> ;
7 DOES> CONTEXT 8 ERASE DUP CONTEXT ! CONTEXT 8 + !
2 10 SPACES CONTEXT 10 OVER + SWAP




Next, try using the parameters /N and /C with the find
command:

FIND "DOES>" FORTH-83.PRN


---------- FORTH-83.PRN
CREATE DO DOES> ELSE IF IMMEDIATE LEAVE LITERAL LOOP
DOES> -- addr C,I,83 "does"
: ... ... DOES> ... ;
sequence of words between DOES> and ; are executed.
corresponding END-CODE . See: CODE DOES>
Used in conjunction with DOES> in defining words, in the
: ... ... ;
and DOES> established a parameter field for . When
____
DOES> will be executed, with the parameter field address of
7 DOES> CONTEXT 8 ERASE DUP CONTEXT ! CONTEXT 8 + !

FIND /N "DOES>" FORTH-83.PRN


---------- FORTH-83.PRN
[2027] CREATE DO DOES> ELSE IF IMMEDIATE LEAVE LITERAL LOOP
[2548] DOES> -- addr C,I,83 "does"
[2552] : ... ... DOES> ... ;
[2563] sequence of words between DOES> and ; are executed.
[3457] corresponding END-CODE . See: CODE DOES>
[4131] Used in conjunction with DOES> in defining words, in the
[4133] : ... ... ;
[4139] and DOES> established a parameter field for . When
____
[4141] DOES> will be executed, with the parameter field address of
[4769] 7 DOES> CONTEXT 8 ERASE DUP CONTEXT ! CONTEXT 8 + !

FIND /N "EMIT" FORTH-83.PRN


---------- FORTH-83.PRN
[1526] 9.5.3 EMIT
[1530] characters is an environmental dependency. Each EMIT deals with
[1534] other than zero is an environmentally dependent usage. EMIT must
[2012] BLOCK BUFFER CR EMIT EXPECT FLUSH KEY SAVE-BUFFERS
[2591] EMIT 16b -- M,83
[2593] SEE: "9.5.3 EMIT"




*********************************************************
* The file you need to download is F83-PRN.ARC *
* This is the (dreaded/famous/) FORTH-83 STANDARD *
*********************************************************


If you want to be able to save parts of this document
for editing later you can download either SAVELPT1.ARC or
LPT1SAV.ARC . The first file explains how to print a file to an
external printer buffer and then capture it back into your serial
port with a terminal program loaded and capture mode turned on.
You can then print the file to the buffer and capture only the
parts you want. If you have a text editor capable of loading a
70k byte file then of course you don't need to do it the hard
way. If you have neither a text editor capable of loading that
large a file or an external buffer you can use the second file
LPT1SAV.ARC which explains how to save LPT1: output using a
software method with a program called DMP. The object one way
or another , is to load the standards document or a section of
it with an editor and then mark a block of it and save the marked
block for patching into your messages to others. Such as , "on
page 46 it says.. : [patch block in here]" . Even if you don't
quote the document to others it is helpful to extract parts of
it for your own reference.

Have fun, and "MAY THE FORTH-83 BE WITH YOU.."

OR

"THE FORTH-83 STANDARD,..DON'T LEAVE HOME WITHOUT IT !"

Bob Schemmel

Please direct all questions, comments etc. (tomatoes)
to GENIE EMAIL address R.SCHEMMEL1.