



          9.   USAGE




                                     9.   USAGE



          9.1  Words Names and Word Definitions

          A Standard Program may reference only the definitions of the
          Required Word Set and Standard Extensions and definitions which
          are subsequently defined in terms of these words.  Furthermore, A
          Standard Program must use the standard words as required by any
          conventions of this Standard.  Equivalent execution must result
          from Standard Programs.

          The implementation of a Standard System may use words and
          techniques outside the scope of the Standard, provided that no
          program running on that system is required to use words outside
          the Standard for normal operation.

          If a Standard System or Standard Program redefines Standard
          definitions within the FORTH vocabulary, these definitions must
          comply with the Standard.


          9.2  Addressable Memory

          The FORTH system may share the dictionary space with the user's
          application.  The native addressing protocol of the host computer
          is beyond the scope of this Standard.

          Therefore, in a Standard Program, the user may only operate on
          data which was stored by the application.  No exceptions!

          A Standard Program may address:

          1.   parameter fields of words created with CREATE , VARIABLE ,
               and user defined words which execute CREATE ;

          2.   dictionary space ALLOTted;

          3.   data in a valid mass storage block buffer.   
               See:  "9.7 Multiprogramming Impact";

          4.   data area of user variables;

          5.   text input buffer and PAD up to the amount specified as the
               minimum for each area.

          A Standard Program may NOT address:

          1.   directly into the data or return stacks;

          2.   into a definition's name field, link field, or code field;



                                         18





          9.   USAGE


          3.   into a definition's parameter field if not stored by the
               application.


          9.3  Return Stack

          A Standard Program may cautiously use the return stack with the
          following restrictions:

          The return stack may not be accessed inside a do-loop for values
          placed on the return stack before the loop was entered.  Further,
          neither I nor J may be used to obtain the index of a loop if
          values are placed and remain on the return stack within the loop.
          When the do-loop is executed all values placed on the return
          stack within that loop must be removed before LOOP , +LOOP , or
          LEAVE is executed.  Similarly, all values placed on the return
          stack within a colon definition must be removed before the colon
          definition is terminated at ; or before EXIT is executed.


          9.4  Compilation

          The system uses the return stack and the dictionary in a system
          dependent manner during the compilation of colon definitions.
          Some words use the data stack in a system dependent manner during
          compilation.  See:  "sys (11.7)"


          9.5  Terminal Input and Output


          9.5.1     KEY

          A Standard System must receive all valid ASCII characters.  Each
          KEY receives one ASCII character, with more-significant bits
          environmentally dependent and might be zero.  KEY must receive as
          many bits as are obtainable.  A Standard Program without
          environmental dependencies may only use the least significant 7-
          bit ASCII character received by KEY .  For example:  KEY 127 AND


          9.5.2     EXPECT

          Control characters may be processed to allow system dependent
          editing of the characters prior to receipt.  Therefore, a
          Standard Program may not anticipated that control characters can
          be received.










                                         19





          9.   USAGE


          9.5.3     EMIT

          Because of the potential non-transportable action by terminal
          devices of control characters, the use of ASCII control
          characters is an environmental dependency.  Each EMIT deals with
          only one ASCII character.  The ASCII character occupies the
          least-significant 7 bits; the more-significant bits may be
          environmentally dependent.  Using the more-significant bits when
          other than zero is an environmentally dependent usage.  EMIT must
          display as many bits as can be sent.


          9.5.4     TYPE

          Because of the potential non-transportable action by terminal
          devices of control characters, the use of ASCII control
          characters is an environmental dependency.


          9.6  Transporting Programs Between Standard Systems

          Further usage requirements are expected to be added for
          transporting programs between Standard Systems.


          9.7  Multiprogramming Impact

          In a multiprogrammed system, Device Layer words and those words
          which implicitly reference the Device Layer words may relinquish
          control of the processor to other tasks.  Although there is
          insufficient experience to specify a standard for
          multiprogramming, historical usage dictates that a programmer be
          aware of the potential impact with regard to resources shared
          between tasks.  The only shared resources specified within the
          Standard are block buffers.  Therefore the address of a block
          buffer returned by BLOCK or BUFFER becomes invalid during and
          after the execution of any word marked by the attribute M in the
          glossary or any words executing them.  A block buffer is valid
          only if its address is valid.  See:  "11.4 Attributes"


          9.8  Numbers

          Interpreted or compiled numbers are in the range
          {-32,768..65,535}.  See:  "number conversion"


          9.9  Control Structures

          Control structures are compiled inside colon definitions.
          Control structures can be nested but cannot overlap.  For
          additional limitations see DO .





                                         20


