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:



<C:\FORTH-83>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

<C:\FORTH-83>FIND "FLUSH" FORTH-83.PRN


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

<C:\FORTH-83>FIND "2ROT" FORTH-83.PRN


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

<C:\FORTH-83>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

<C:\FORTH-83>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

<C:\FORTH-83>


	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"
                       : <namex> ... <create> ... 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
                       : <namex> ... <BUILDS ... DOES> ... ;              
               and DOES> established a parameter field for <name>.  When
                                                            ____        
               DOES> will be executed, with the parameter field address of
           7        DOES>  CONTEXT 8 ERASE DUP CONTEXT !    CONTEXT 8 + !

<C:\FORTH-83>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]                       : <namex> ... <create> ... 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]                       : <namex> ... <BUILDS ... DOES> ... ;              
[4139]               and DOES> established a parameter field for <name>.  When
                                                            ____        
[4141]               DOES> will be executed, with the parameter field address of
[4769]           7        DOES>  CONTEXT 8 ERASE DUP CONTEXT !    CONTEXT 8 + !

<C:\FORTH-83>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"

<C:\FORTH-83>


	*********************************************************
        *     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.
