
                                               
                                                      --
                                                       ---

                                                                          Forth

                                                                    
                        
                                                      : 24  1994
                                    American National Standards Institute, Inc.

                                                                              1


____________________________________________________________________________
Copyright ( c ) 1994   X3J14.   .

 -     () X3J14,   
  ANS Forth   ANSI  .  
      ,    
     : 
    (1)   ,     ; 
    (2)      ; / 
    (3)   .

 ,        
  ,  ,   ,  
   ,     
 ,    ANS.

:       T   
        , 
 .       ANS Forth , 
 ANSI.   ,    X3.215-
1994   ANS Forth.

   , ,   American National 
Standards Institute Sales Department,  (212) 642-4900   (212) 302-1286, 
 Global Engineering Documents,  (800) 854-7179   (303) 843-9880,  
  X3.215-1994. 
    .

                                                                              2


__________


         ......................................................... 6
        3  ........................................................... 7
        X3J14  ........................................................ 9
        1.  .........................................................11
        1.1  ........................................................... 11
        1.2  ..................................................... 11
        1.2.1  .................................................... 11
        1.2.2  ................................................... 11
        1.3   .......................................... 12
        1.3.1   .................................................. 12
        1.3.2  ................................................... 12
        1.4   ............................................ 13
        1.4.1   ............................................. 13
        1.4.2  ............................................ 13
        2. , ,   ...................................... 14
        2.1   ........................................... 14
        2.2  ........................................................ 17
        2.2.1   ............................................. 17
        2.2.2   ............................................. 17
        2.2.3    ....................................... 18
        2.2.4   ............................................ 18
        2.3  ......................................................... 19
        3.   .............................................. 20
        3.1   .................................................... 20
        3.1.1    ....................................... 20
        3.1.2   .............................................. 21
        3.1.3  - ............................................. 23
        3.1.4  - .............................................. 24
        3.1.5   ............................................... 24
        3.2   ............................................... 25
        3.2.1  ........................................................ 25
        3.2.2  ................................................... 26
        3.2.3  ........................................................ 27
        3.2.4   ........................................... 28
        3.2.5     ...................... 28
        3.2.6     ......................................... 28
        3.3  Forth .................................................. 29
        3.3.1   ................................................ 29
        3.3.2   ................................................. 30
        3.3.3   ............................................... 30
        3.4   Forth ..................................... 32
        3.4.1   ........................................ 33
        3.4.2    ....................................... 34
        3.4.3  .................................................... 34
        3.4.4      ................ 35
        3.4.5  ................................................... 35
        4.   ..................................... 36
        4.1   ......................................... 36
        4.1.1    ............................... 36

                                                                              3


        4.1.2   ........................................ 37
        4.1.3    ................................ 38
        4.2   ....................................... 38
        4.2.1   ........................................ 38
        4.2.2    .............................. 38
        5.    ....................................... 40
        5.1 ANS Forth  .............................................. 40
        5.1.1   ......................................... 40
        5.1.2   ....................................... 40
        5.2 ANS Forth  ............................................ 40
        5.2.1   ....................................... 40
        5.2.2   ..................................... 40
        6.  ......................................................... 41
        6.1   ................................................. 41
        6.2    ....................................... 64
        7.     ............................... 73
        8.      ......................... 79
        9.     ............................ 84
        10.     ............................ 89
        11.       ..................... 93
        12.       ................. 102
        13.  Locals   .............................. 119
        14.      ................ 124
        15.     .............................. 127
        16.      ...................... 134
        17.     ........................... 139
        A.  ( ) ........................ 142
        A.1  ...................................................... 142
        .2    ............................................. 144
        .3   ............................................ 145
        .4   ................................... 159
        A.5    ..................................... 159
        A.6  ....................................................... 161
        A.7     ............................. 182
        A.8      ....................... 183
        A.9     .......................... 184
        A.10     .......................... 188
        A.11       ................... 191
        A.12       ................ 194
        A.13  Locals   ............................. 198
        A.14      ............... 202
        A.15     ............................. 202
        A.16      ..................... 205
        A.17     .......................... 208
        B.  ( ) ....................... 209
        C.  ( ) ........................ 212
        C.1  Forth .............................................. 212
        C.2  Forth .............................................. 213
        C.3   Forth ................................... 213
        C.4   ........................................ 214
        C.5   Forth ...................................... 214

                                                                              4


        C.6   ..................................... 222
        C.7     ................. 223
        C.8  .................................................... 223
        D.   ANS Forth ( ) ..... 224
        D.1 FIG Forth ( 1978) ............................... 224
        D.2 Forth 79 ...................................................... 224
        D.3 Forth 83 ...................................................... 224
        D.4   ........................................... 225
        D.5 ANS Forth  .............................................. 226
        D.6   Forth 83 ........................................... 226
        D.6.1   ................................................ 226
        D.6.2   ......................................... 227
        D.6.3   ......................................... 227
        D.6.4        .................. 228
        D.6.5   ......................................... 229
        D.'.'   Division/modulus ..................... 230
        D.6.7 Immediate- ............................................. 231
        D.6.8    ...................................... 233
        D.6.9   UM/MOD ............................................. 233
        D.6.10  /   ...................................... 234
        D.6.11   ......................... 235
        D.6.12 ,      ............... 235
        E.    ANS Forth (. ) .. 237
        E.1  ...................................................... 237
        E.2   ........................................ 237
        E.2.1 Data/memory  ...................................... 237
        E.2.2  ................................................. 237
        E.2.3   ............................................ 238
        E.2.4   ....................................... 239
        E.3   ........................................... 240
        E.3.1        ........... 240
        E.3.2  ALU ............................................. 240
        E.4  Forth  ...................................... 241
        E.4.1  ................................................. 241
        E.4.2  ........................................................ 242
        E.5   ROM  .......................... 242
        E.6  ........................................................ 243
        F.    ( ) ............. 244

                                                                              5


____________


(   -      X3.215-1994)
Forth -        .  
    - , Forth 
 ,       
 . Forth      
   ,     
.         
        .

Forth   .  ,    
      . Forth - 
 ,    ,    
   .  ,    
      .

     ,   
Forth,       1970-  
   ,   "Forth Standards 
Team".     Forth-77.    
, "Forth Standards Team"     Forth-78. 
  "Forth Standards Team"   1979,  Forth-79   
  1980.     "Forth Standards Team"  Forth-83 
,     1983.

  Technical Committee     Forth  
  X3J14 Forth Technical Committee  3  1987,  
   11-12  1987, 10-12  1988, 25-28  1988, 
10-13  1988,  26-29  1988, 25-28  1989, 3-6 , 1989, 26-
29  1989, 25-28  1989, 24-27  1990, 22-26  1990, 21-25 
 1990, 6-10  1990,  29    2  1991, 3-4  1991, 
16-19  1991,  30   3  1991, 17-21  1992, 13-17  
1992, 26-30  1993, 28-30  1993,  21  1994.

  ,     ,   
  .       X3 , Computer and 
Business Equipment Manufacturers Association, 1250 Eye Street, NW, Suite 200, 
Washington, DC 20005.

                                                                              6

_________
X3 

          ANSI   
Accredited Standards Committee on Information Processing Systems,X3.  
     ,     
   .     , X3  
  :

James D. Converse, Chair
Donald C. Loughry, Vice-Chair
Joanne Flanagan, Secretary

       Producer Group                                 Name of Representative 
       AMP Incorporated ............................. Edward Kelly
                                                      Charles Brill (Alt.)
       AT&T/NCR Corporation ......................... Thomas W. Kern
                                                      Thomas F. Frost (Alt.)
       Apple Computer, Inc .......................... Karen Higginbottom
       Compaq Computers ............................. James Barnes
       Digital Equipment Corporation ................ Delbert Shoemaker
                                                      Kevin Lewis
       Hitachi America Ltd .......................... John Neumann
                                                      Kei Yamashita (Alt.)
       Hewlett Packard .............................. Donald C. Loughry
       Bull HN Information Systems Inc .............. William George
       IBM Corporation .............................. Joel Urman
                                                      Mary Anne Lawler (Alt.)
       Unisys Corporation ........................... John Hill
                                                      Stephen P. Oksala (Alt.)
       Sony Corporation of America .................. Michael Deese
       Storage Technology Corporation ............... Joseph S. Zajaczkowski
                                                      Samuel D. Cheatham (Alt.)
       Sun Microsystems, Inc ........................ Scott Jameson
                                                      Gary S. Robinson (Alt.)
     * Xerox Corporation ............................ Dwight McBain
                                                      Roy Pierce (Alt.)
       3M Company ................................... Edie T. Morioka
                                                      Paul D. Jahnke (Alt.

       Consumers Group
       Boeing Company ............................... Catherine Howells
                                                      Andrea Vanosdoll (Alt.)
       Eastman Kodak Company ........................ James Converse
                                                      Michael Nier (Alt.)
       General Services Administration .............. Douglas Arai
                                                      Larry L. Jackson (Alt.)
       Guide International Inc ...................... Frank Kirshenbaum
                                                      Harold Kuneke (Alt.)
    ** Hughes Aircraft Company ...................... Harold Zebrack
       National Communications Systems .............. Dennis Bodson

                                                                              7


       Northern Telecom Inc ......................... Mel Woinsky
                                                      Subhash Patel (Alt.)
    ** Recognition Tech Users Association ........... Herbert P. Schantz
                                                      G. Edwin Hale (Alt.)
       Share Inc .................................... Gary Ainsworth
                                                      David Thewis (Alt.)
       U. S. Department of Defense .................. William Rinehuls
                                                      C. J. Pasquariello (Alt.)
       U. S. Department of Energy ................... Alton Cox
                                                      Lawrence A. Wasson (Alt.)
       Wintergreen Information Services ............. John Wheeler


       General Interest Group
       American Nuclear Society ..................... Geraldine C. Main
                                                      Sally Hartzell (Alt.)

       Assn. of the Institute for Certification
       of Computer Professionals .................... Kenneth Zemrowski
       Nat'l Institute of Standards and Technology .. Robert E. Rountree
                                                      Micharl Hogan (Alt.)
       Neville & Associates ......................... Carlton Neville

--------------------------------
*       **  

                                                                              8


____________
X3J14 

      American National Standard, 
Technical Committee X3J14    Forth   :

        Elizabeth Rather, Chair
        Mitch Bradley, acting Vice-Chair
        Don Colburn, Secretary
        John Rible, Technical Editor
        Len Zettel, Vocabulary Representative
        Greg Bailey, Technical Subcommittee Chair

        Organization Represented                       Name of Representative
        ATHENA Programming, Inc ...................... Greg Bailey

                                                       Howe Fong (Alt.)
        Bradley Forthware ............................ Mitch Bradley
        Creative Solutions, Inc ...................... Don Colburn
        Ford Motor Company ........................... Leonard F. Zettel, Jr.
        FORTH, Inc ................................... Elizabeth Rather
                                                       Dennis Ruffer (Alt.)
        Institute for Applied Forth Research ......... Lawrence Forsley
                                                       Horace Simmons (Alt.)
        Johns Hopkins University, Applied Physics Lab. John Hayes
        Mephistopheles Systems ....................... Dave Harralson
        NASA/Goddard Space Flight Center ............. James Rash
        Nomadic Software ............................. John K. Stevenson
        Unisyn, Inc .................................. Gary Betts
                                                       Stephen Egbert (Alt.)
        Up and Running ............................... Martin Tracy
        Vesta Technology ............................. Jack Woehr

        Individual Members
        Loring Craymer
        John Rible
        J. E. (Jet) Thomas

        X3 Liasons
        Clyde R. Camp
        Kathleen McMillan

            
Technical Committee, ,  . Technical Committee   
  :

        Organizations
        British Columbia Inst. of Tech.       MCI Telecommunications Corp.
        Computer Cowboys                      Micromotion
        Computer Sciences Corp.               MicroProcessor Engineering Ltd.
        Computer Strategies, Inc.             National Institute of Standards &
                                              Technology

                                                                              9

        Digalog Corp.                         NCR Medical Systems Group
        Embedded Sys. Programming Mag.        Performance Packages, Inc.
        Forth Interest Group (FIG)            Purdue University
        H.B. Pascal & Co., Inc.               Robert Berkey Services

        Harris Semiconductor                  Shaw Laboratories
        IBM Corporation                       Social Security Administration
        IEEE                                  Software Engineering
        Kelly Enterprises                     Texas Instruments
        Laboratory Microsystems, Inc.         The Dickens Company
        Maxtor Corp.

        Individuals
        David J. Angel    Ray Duncan        Charles Moore     Dean Sanderson
        Wil Baden         Douglas Fishman   Mike Nemeth       George Shaw
        Robert Berkey     Tom Hand          Harry Pascal      Gerald Shifrin
        Ron Braithwaite   Gregory Ilg       Stephen Pelc      Robert Smith
        Jack Brown        Charles Keane     Dean Perrine      Tyler Sperry
        Chris Colburn     Guy M. Kelly      David C. Petty    Tom Zimmer
        Ted Dickens       Andrew Kobziar    Bill Ragsdale
        John Dorband      Martin Lascelles  James Ryland

                                                                             10




AMERICAN NATIONAL STANDARD
ANSI X3.215-1994


                                               
                                                      --
                                                       ---

                                                                          Forth
                                                                          Forth
                                                                          Forth

1.   ________
     

1.1   ____
      

     ,    Forth 
       ,  
  ,  ,    
 Forth,        Forth.

1.2   __________
      

     Forth   Forth  
 ,   .

1.2.1   _________
        

  :
- ,    ,    Forth;
-        .

1.2.2  __________
       

   :
- ,        
  ;
- ,         
   ;
-      /     
   ;
-    Forth ,     
   ;
-       ,   
         
  Forth ;

                                                                             11


-    /, ,  ;
-     .

1.3   _____________________
       

1.3.1   ___________
         

   Forth         
    ,     
.      ,  , 
    .   -  
    .

""  ,     1  6,   
    .   ,   
  7  17,  ,    
    .

1.3.1.1   _________________
           

    ,  1     
,   2    ,   . 
     .

 3  4     , , 
    ,      5   
.

1.3.1.2   _______________
           

 6         
     .

1.3.2   __________
        

     .

 A         
  ,    .     
,     ,       
  .

 B -   Forth.

 C    Forth.

 D   ANS Forth    Forth, 
   Forth 83.

 E         
ANS Forth.

                                                                             12


 F         ,    
 ANS Forth .

1.4   ___________________
       

1.4.1   ________________
         

      ,      
   .        
  .

1.4.2   __________________
         

      ,    
   .     -  
 ,        
  ,         
 .

      :

        6.2.0060  #TIB       15.6.2.1580  FORGET        6.2.2240  SPAN
        6.2.0970  CONVERT    6.2.2040     QUERY         6.2.2290  TIB
        6.2.1390  EXPECT

                                                                             13


2.   __________________________
     , ,  

 ":"          
 ,       .

  , ""      ; 
, " "  ; " "  " 
 "; ""   ;  "",  
  ,  ""  " ".

  ,    :
-   Serif    ,  ,
         ;
-   sans-serif    ;
-  Serif       -
  Forth.

2.1   ____________________
       

,          
.       , 
    .  ,     
,  . ,     , 
     , ANSI X3.172-1990.

 :     :
    1) ,      Forth  
             ; 
    2)    ,   ; 
    3)     ; 
    4)  ,       .

 :     ,     
  , ,  ,    -.

 :  ,      
    Forth   .

        
    ,     
,     .
   ,     
,       .

:       Forth .

 :   ,     .

:     : 
    1)  ,   ;  
    2)   .

                                                                             14


- :     ,    
   .

 :   ,     
 - .    
 .    ,  ""  
" ".

 :    ,     
.

:       .

 :   Forth ,     
    .

  :   ,    , 
         
  . ,     
.

 :  ,      
  ,  ,       
 .   ,  "host"    
,   "target"    -.

 :  ,    ,    
.

 :      ,  , CREATE.

 :    ,    .

  :       
,  , ,  HERE.

 :  ,        
.    ,     "".    
    .

 :     ,     
.

 :  Forth ,      
.

:  Forth  ,   .

:   ,      
 .

:          .

  :       
 Forth    .  , , 
    ,  16 ,    
.

 :   Forth ,   .

                                                                             15


 :  ,     
.

:      ,   
.

  :  Forth ,     
   .

 :      , 
      ,    
    .

  :      , 
    ,      
  .

 :   ,     
 ,      .

 :  , , ,   ,  
     .

  :   ,   
  ,  ,   .  
 ,       
          
 .

 :   Forth ,     
    .

 :  ,  ,  
     .  
""          
.

:   ,     
   .

 :    ,     
.

:    , ""    ,  
" ".  " "  "  -".

:         ,  
   ,  .

 :    ,    ,  
        
     .

  :    ,    
,  Forth ,    "" 
 .

:    ,    
 ( )      Forth.

                                                                             16


:       .

 :  ,       
,  do-loop,  ,   .

 :   Forth ,     
.

  :    ,   
     ,  .

  :   ,    
    .

:           
.

:     :  
    1)  Forth ;  
    2)    ,  
         Forth .

 :     Forth ,    
     .

 :    Forth,      
 ,     ,     
.

2.2   _______
      

2.2.1   ________________
         

   ,          
-.      {... }.  
        , 
   , , BASE {{2... 36}}.

2.2.2   ________________ 
          

      ,   
 :

        ( stack-id  before -- after )

 stack-id ,   , before   
       after   
 . ,   before  after    
3.1.

Stack-id  - - "C:", stack-id   - "S:",  stack-
id   - "R:".    , stack-id  
,   .

     after,    "after1 
| after2".   - .    ,  
        
.

                                                                             17


2.2.3   ______________________
          

,    ,   ,  
      2.1,   
     before   "-"   
  , :

        (S: before "  " - after). 

    ___________________________________________
     2.1 -   

       
    ------------------------------------------------------------------------
    <char>       ,        
    <chars>           char
    <space>       -  
    <spaces>          space
    <quote>       -  
    <paren>       -   
    <eol>        ,   
    ccc            ,
                  
    name          ,  ccc<space> 
                ccc<eol>
    ------------------------------------------------------------------------

2.2.4   _________________
         

        ASCII 
.     ANS Forth    
  :      .

2.2.4.1   ________________________
            

  -   ,  :
-  ,      
      ,    ;
- -   ,  ,  
  ;
-      ,    
   ;
-      2.2.    
     "EXT".

    ______________________________________
     2.2 -   

                                                                             18


                           
    -------------------------------------------
                    CORE
                    BLOCK
               DOUBLE
                 EXCEPTION
                  FACILITY
              FILE
          FLOATING
    Locals                 LOCALS
        MEMORY
                     TOOLS
              SEARCH
             STRING
    -------------------------------------------

2.2.4.2   ______________________________
            

         
,   .    
  .  3.4.3 .

2.3   ______
      

        :

    ANSI X3.172-1990, Dictionary for information systems (2.1 
    );

    ANSI X3.4-1974, American Standard Code for Information Interchange (ASCII)
    (3.1.2.1  );

    ISO 646-1983, ISO 7-bit coded characterset for information interchange,
    International Reference Version (IRV) (3.1.2.1  );

    ANSI/IEEE 754-1985, Floating-point standard (12.2.1 
    ).

                                                                             19


3.   __________________
      

    ,   6.1  .  
    ,     
  .       
    ,     
  ,      .  
      ,  , 
      .

          
  .

        .  
  ,     , 
   .  ,       
 -  .

,  ,      ,  
       .

3.1   ___________
       

        .  - 
         . 
       .

      .   
,       .

 3.1   ,     . 
       ,    
   ,   .

3.1.1   ______________________
          

    -    .   i -  
 j,      i -   j.   
  ,   "i = > j"  , 
  "i   j".   ;  i = > j  j = 
> k ,  i = > k:

        +n => u => x;
        +n => n => x;
        char => +n;
        a-addr => c-addr => addr => u;
        flag => x;

                                                                             20


        xt => x;
        +d => d => xd;
        +d => ud => xd.

  Forth,     i    
   i.

3.1.2   _______________
         

  ,   ,     , 
     ,        
 .

,       
{32..126},    ,    3.2.

3.1.2.1   ___________________
           

      (, A, #, &, 
6).     ,    3.2,  
  ANS X3.4-1974 (ASCII)  ISO 646-1983, International 
Reference Version (IRV).     hex  {20.. 7E} 
-   . ,    hex 24 
( )    .

         
.    .

3.1.2.2   ___________________
           

  ,   -   
      .    {0.. 
31},      -   - 
 .

,    ,    
    .

    _________________________
     3.1 -  

                                        
    -------------------------------------------------------------------------
    flag                                         1 
    true                                   1 
    false                                    1 
    char                                       1 
    n                                   1 
    +n                           1 
    u                                1 

                                                                             21


    n|u (1)                                     1 
    x                                     1 
    xt                        1 
    addr                                        1 
    a-addr                           1 
    c-addr             -    1 
    d                     -    2 
    +d                  .  -  2 
    ud                   -  2 
    d|ud (2)            -              2 
    xd                                 2 
    colon-sys                    
    do-sys             do-loop               
    case-sys           CASE                  
    of-sys             OF                    
    orig                -     
    dest                -   
    loop-sys           loop-control          
    nest-sys                         
    i*x, j*x, k*x (3)                  0   
    -------------------------------------------------------------------------

(1)            .
(2)   -     -    
      .
(3)        . 
     , . 6.1.1370 EXECUTE, 6.1.2050 QUIT.

    _____________________________________________
     3.2 -   

Hex IRV ASCI Hex IRV ASCI Hex IRV ASCI Hex IRV ASCI Hex IRV ASCI Hex IRV ASCI
--- --- ---- --- --- ---- --- --- ---- --- --- ---- --- --- ---- --- --- ----
20           30   0   0   40   @   @   50   P   P   60   `   `   70   p   p
21   !   !   31   1   1   41   A   A   51   Q   Q   61   a   a   71   q   q
22   "   "   32   2   2   42   B   B   52   R   R   62   b   b   72   r   r
23   #   #   33   3   3   43   C   C   53   S   S   63   c   c   73   s   s
24   -   $   34   4   4   44   D   D   54   T   T   64   d   d   74   t   t
25   %   %   35   5   5   45   E   E   55   U   U   65   e   e   75   u   u
26   &   &   36   6   6   46   F   F   56   V   V   66   f   f   76   v   v
27   '   '   37   7   7   47   G   G   57   W   W   67   g   g   77   w   w
28   (   (   38   8   8   48   H   H   58   X   X   68   h   h   78   x   x
29   )   )   39   9   9   49   I   I   59   Y   Y   69   i   i   79   y   y
2A   *   *   3A   :   :   4A   J   J   5A   Z   Z   6A   j   j   7A   z   z
2B   +   +   3B   ;   ;   4B   K   K   5B   [   [   6B   k   k   7B   {   {
2C   ,   ,   3C   <   <   4C   L   L   5C   \   \   6C   l   l   7C   |   |
2D   -   -   3D   =   =   4D   M   M   5D   ]   ]   6D   m   m   7D   }   }
2E   .   .   3E   >   >   4E   N   N   5E   ^   ^   6E   n   n   7E   ~   ~
2F   /   /   3F   ?   ?   4F   O   O   5F   _   _   6F   o   o
-----------------------------------------------------------------------------

                                                                             22


-      
    . . E.2  .

  ,   ,     ,  
,   , 16-.       
 .   ,   , , 
 , ,    -    .

3.1.3.1   _____
          

       : true  false. , 
     ,    
.

True ,       -  
  . A false ,    
   -    .

3.1.3.2   ___________
           

         {-
32767.. +32767}.

        
{0.. 32767}.

         {0.. 
65535}.

3.1.3.3   ______
          

         
 ,          
,  ,    .   
   .      
    . . 3.3.3  .

 - ,       
- -   .   
  -     -
 .

   - -  -
 .        
   .

3.1.3.4   ___________________
            

       (c-addr)  .

          
 ,    -  
    .       
,   , 255.

                                                                             23


3.1.3.5   _________________________
           

         ,  
 .

3.1.4   _______________
         -

-        . 
    -  ,    ,  
  .    ,      
      .

3.1.4.1   ______________________
            -

 ,        -  
      .

-    -    
 {-2147483647..+2147483647}.

-     -  
  {0..2147483647}.

-      -  
 {0..4294967295}.     -   
   -      -  
     . . 3.2.1.1   .

3.1.4.2   _________________
           

     (c-addr u)      
  .

3.1.5   ______________
         

         
  .

3.1.5.1   _________________________
            

           
- (. 3.2.3.2).       
 ,          
,      -.

-- ,     
        colon-sys 
  .

-- ,     do-loop 
  DO ... LOOP       
 do-sys   .

                                                                             24


-- ,     CASE 
... ENDCASE         
case-sys   .

-- ,     OF ... 
ENDOF         of-sys 
  .

-- ,      
   -   orig  dest 
   .

3.1.5.2   _________________________
            

           
.    ,      
     ,     
  .

-- ,     
         nest-sys 
   .

--  loop-control    
 do-loops   loop-sys    . 
Loop-control      do-loop  ,  
    ,   I, J, LEAVE   UNLOOP.

3.2   ________________
       

3.2.1   _____
        

3.2.1.1   ______________________________
            

         
  (  ),    (  
),    .      
-    .

        -   
.

3.2.1.2   ___________________
           

          
 .

         
 :

  BASE -      .  
           BASE. 
      "0".    
         
 "9".         
     "A".

                                                                             25


    ,       
 ,    "Z".    
  -  .

3.2.1.3   __________________________________
               

      ,   
 ,   ,      
    .   ,  
      .   , 
   "".

        , 
     (. 3.3.3.6   
).

3.2.2   __________
        

3.2.2.1   _____________________
           

   q   r,   a   b.  
  q, r,  .   b * q + r = a    
  a  b.

     ,   -  , q -   
     .

     ,   -  ,  a  b  
 , q -        . 
    ,   q   
 ( )     ( ) 
-  .

  -  ,      
  ,       . 
  -  ,      
     -   "  "  
"".      3.3  3.4.

 ,          , 
    ,    ,  
      ,   
     .

    _________________________________________
     3.3 -   

               
    ----------------------------------------
     10         7          3          1
    -10         7          4         -2
     10        -7         -4         -2
    -10        -7         -3          1
    ----------------------------------------

                                                                             26


    __________________________________________
     3.4 -   

               
    ----------------------------------------
     10         7          3          1
    -10         7         -3         -1
     10        -7          3         -1
    -10        -7         -3          1
    ----------------------------------------

3.2.2.2   _____________________________
            

        
 .  ,     
 -  .

3.2.3   _____
        

3.2.3.1   ___________
           

         .

3.2.3.2   ____________________
           - 

 - -      " ", " ", 
      -  
,         
 .

  - -    .

 -, ,   ,    
.   ,   ,   ,   
  .   - -  
.    -     
  , ,       
      -,    
     -.

3.2.3.3   ______________
           

          .  
          
 ,    do-loops,    
    .

          
 ,   :

-          ( R@,
  R>, 2R@  2R>)  ,      >R  2>R;
-      do-loop  ,  
    ,    ;

                                                                             27


-  ,       do-loop  
   ,    I, J, LOOP, +LOOP, UNLOOP,  LEAVE;
-  ,         
    ,      ,  
   EXIT.

3.2.4   __________________
         

. 1.2.2 .

3.2.4.1   _________________________________
             

      -  
.

      -  .

3.2.4.2   __________________________________
            

     -  .

3.2.5   _______________________________________
           

          
   .      
        ,  
     .

3.2.6   ___________________
          

   ENVIRONMENT?   .  
     ENVIRONMENT?     
 ENVIRONMENT?.
 3.5        
        ENVIRONMENT?.

    _________________________________________
     3.5 -    

                               
    ---------------------------------------------------------------------------
    /COUNTED-STRING    n     yes      , 
                                  
    /HOLD              n     yes      
                                  ,  
    /PAD               n     yes    ,  PAD, 
                                  
    ADDRESS-UNIT-BITS  n     yes     ,  
    CORE               flag  no   true     
                                   
                                  ( ,     
                                  5.1.1)
    CORE-EXT           flag  no   true     
    FLOORED            flag  yes  true     
    MAX-CHAR           u     yes       
                                     

                                                                             28


    MAX-D              d     yes     
                                  
    MAX-N              n     yes     
    MAX-U              u     yes      
    MAX-UD             ud    yes      
                                  
    RETURN-STACK-CELLS n     yes     , 
                                  
    STACK-CELLS        n     yes     ,  
    ---------------------------------------------------------------------------

    (  ENVIRONMENT?)  false ( , 
)    ,  ,     
   true.    true ( , ) 
   ,          
 true.  ,      
,  true      ,    
      true     .

3.3   _____________
       Forth

 Forth     .      
    ,       
   :  ,  ,   . 
        .

           . 
  ,       
 .

3.3.1   _____________
         

       -   .

   -   .      
 ,         
 .

3.3.1.2   _________________
           

    {1.. 31} .    
    ,    .

,         
   -   -    
.

     ,   
.

3.3.2   ____________
         

       -   .

                                                                             29


3.3.3   ______________
         

  -    ,   
  ,        
 .   :  , , 
  ,  ,    ,   
    .       
  ,    . 

3.3.3.1   ___________________
           

 ,   ANS Forth    
( - a-addr)  - ( c-addr). ALIGNED, 
CHAR+,         
 . CHAR+      -
 ,    ,    
.  CHAR+  -    
- .       
     ,     
     -.    
   -  ALIGNED.    
 @, !, , (), +!, 2@, or 2!   ,   
,   C@, C!,  C,   ,   
-.

 6.1.1000 CREATE  6.1.2410 VARIABLE ,   
    .

 ,   ,    ALIGN, 
     .

3.3.3.2   ___________________
           

 ,        
ALLOT, , () , C, (c-) ,  ALIGN,     
,     ,    
   .    HERE  
     ,   
.     ,  
  .       
   .     
       
,     , 
 ALLOT,     .

CREATE      ,   
   CREATE .   , 
  .

          
  ,      
   ,       
   .     
   .

3.3.3.3   __________
          

                                                                             30


,         
       , ()  
ALLOT. , :

        VARIABLE X  1 CELLS ALLOT

 X   ALLOT    .

 - ,  STATE,   
  .

3.3.3.4   __________________________
            

  ,  ,    S" 
 C",   --.

           
S"  C",    --    --
  .      
    --.

3.3.3.5   ______________
           

, ,       .   
    .      
     ,   
-     ,  QUIT     
    ,    EVALUATE. 
   SOURCE         
 .

       80 .

    SOURCE,   PARSE,   
         
   -    ,   
  .

     ,   >IN  
 ,   . ,   >IN 
      , ,  
,        
.        
     (. 7.3.3     
11.3.4  ).

     ,    
   SOURCE;        
   >IN.      . 
        
.

3.3.3.6   ________________________
            

  ,  PAD, WORD,  #> (   
 )   .       
  , :

-     ;

                                                                             31


-     :  :NONAME;
-   ,   ALLOT, , (), C, (c-), 
  ALIGN.

  ,  WORD  #> ,   
     .  , , 
 WORD  #> ,    . , 
       ,   
 .  ,      
 (<#, #, #S,  HOLD)      . , 
  ,        
 .  . (), .R, .S, ?, D., D.R, U.,  U.R  
   .

  ,    PAD,  ,   , 
84 .    PAD ,    
    :  ,    
   -   ,     
     3.3.3.2      
 PAD.  ,  ,  
 PAD,      .

 ,  WORD  ,   , 33 
.

       ,   
, (2*n) + 2 ,  n -    . ,  
         
-    .

3.4   __________________________
        Forth

      ,    
6.1.2050 QUIT, Forth        
   .

     "", , 
          . 
   Forth    "OK"  
     .

  (. 6.1.1360 EVALUATE  6.1.2050 QUIT)  
      ,   
 :

  )       (. 3.4.1);
  )     (. 3.4.2).   ,
       :
     1)  ,     (.
        3.4.3.2),    );
     2)  ,     (.
        3.4.3.3),    ).
  )   ,    , 
         (. 3.4.1.3).  :

                                                                             32


     1)  ,     ,    );
     2)  ,  ,    
           (. 6.1.1780 LITERAL),    );
  )  ,    (. 3.4.4).

3.4.1   _____________________
         

   ,         
      .

   ,      >IN    
,       ,    
. ,         
,   ,   >IN. 
      >IN     
.

 -        
,           
,    >IN ,     
  ,       
   . ,      
   ,    >IN     , 
    .

     >IN,     
  .  ,    >IN   
 ,  >IN      ,  
     .

3.4.1.1   ___________
          

  -  (hex 20 (BL))     
  .  ,    , 
   ""    - 
 .

          
      .

3.4.1.2   _________
          

Forth  , - .   A B C  
 ,   A   ,  B   C. 
,       -, 
  -.  - -  
 -,       . 
       -  
 A.

 Forth ; ,      
   -.

         .

                                                                             33


3.4.1.3   ______________________________________________________
              

   ,     
   ;  ,  
  "" ( "-")  .   BASE 
-      .

3.4.2   ______________________
          

   ,      
    ,    
,    .   
(        
) -  .       
     -        
,    ,    
  .

   -        
        
 -  .

       ,    
,       .

3.4.3   _________
        

  Forth      
    .    
      ,   
      .     
    .

  Forth    ,    
.  " "  " -" 
   ,       
  ,   .

3.4.3.1   ____________________
           

    Forth    
":"   .       
,  .

   ,   ,   
  ,  ,     
  EXECUTE.     
     ,      - 
  .

          
   " :".

3.4.3.2   _______________________
           

      ":"  ,  
  Forth -    .

                                                                             34


         
       ,   
      ,   
    .

          
      3.  .

3.4.3.3   ____________________
           

      ":"  ,  
  Forth        
   .

3.4.4   _____________________________________________
            

   ,      
   :

- ,  ;
-  ;
-   ;
-       ;
-     ;
-     .

             
 .

3.4.5   __________
        

       .

    ,     
  , :NONAME,   ,  
   .      
,    [ ( )  ,   ] ( 
).     ,   
    , :NONAME,   , 
    .

                                                                             35


4.   ___________________________
      

          
 ,  ,   -    
   ,   - .

4.1   ______________________
       

4.1.1   ______________________________
          

        
 ,    ,  ,   
  .    ,  
,   .

-     (3.1.3.3 );
-  6.1.1320 EMIT   ;
-   6.1.0695 ACCEPT  6.2.1390 EXPECT;
-   (3.1.2  , 6.1.1320 EMIT, 6.1.1750 KEY);
-  -  (3.1.3.3 );
- ,      (3.4.2 
   );
- ,      
   (3.4.1.1  );
-   - (3.2.3.2  -);
-   ,    (3.2.1.2  );
-      6.1.0695 ACCEPT  6.2.1390 EXPECT;
-    (  6.1.0680 ABORT");
-     (3.2.4.1   
  );
-     ,   (3.1.3.4  
  , 6.1.2450 WORD);
-     (3.4.1  );
-    ,   (3.3.1.2 
  );
-     6.1.1345 ENVIRONMENT?,  ;
-   3.2.4.1   ;
-   3.2.4.2   ;
-    (3.3  Forth);
-       (3.1.3.3 );
-     (3.2.1.1   );
-   n, +n, u, d, +d,  ud (3.1.3  -, 3.1.4  -
  );
-    -- (3.3.3  );
-    6.1.2450 WORD (3.3.3.6    );
-       (3.1.3  -);
-       (3.1.2  );
-      (3.3.3.5  );
-       (3.3.3.6  
  );
-   ,    6.2.2000 PAD (3.3.3.6 
   );
-  -  (3.4.2  
  );
-   (3.4   Forth, 6.1.2050 QUIT);
-    (3.2.2.1  , 6.1.0100 */,
 6.1.0110 */MOD, 6.1.0230 /, 6.1.0240 /MOD, 6.1.1890 MOD);

                                                                             36


-  6.1.2250 STATE,  true;
- ,     (3.2.2.2 
   );
-        6.1.1250 DOES> (6.1.0450 :).

4.1.2   _____________________
         

    ,    
    ,    
. . 3.4.4     .

      -  
:

-       ,    
     (3.4   Forth);
-       (3.3.1.2 
  );
-  ,    3.3.3  ;
-  ,     , ,
      n (3.1  );
-     (,   6.1.0070 ',
  6.1.1550 FIND,  ..)     ;
-    (6.1.0100 */, 6.1.0110 */MOD, 6.1.0230 /, 6.1.0240 /MOD,
  6.1.1561 FM/MOD, 6.1.1890 MOD, 6.1.2214 SM/REM, 6.1.2370 UM/MOD,
  8.6.1.1820 M*/);
-         (
  );
-     loop-control;
-    ;
-      ;
-        (3.3.3.4 
   , 3.3.3.5  );
-     ;
-   ;
-    ,   (  *)
      ,     
  - (6.1.0090 *, 6.1.0100 */, 6.1.0110 */MOD, 6.1.0570 >NUMBER,
  6.1.1561 FM/MOD, 6.1.2214 SM/REM, 6.1.2370 UM/MOD, 6.2.0970 CONVERT,
  8.6.1.1820 M*/);
-         (   
  );
-    ,     
     ;

        
 :

- >IN      (3.4.1  );
- 6.1.2120 RECURSE   6.1.1250 DOES>;
-   ,      
  6.2.2148 RESTORE-INPUT;
-  ,    (3.3.3.2 
  );
- -      (3.3.3.1
   );
-   ,     (6.1.0150 ,,
  6.1.0860 C,);
-   u+2    (6.2.2030 PICK, 6.2.2150 ROLL);
-  loop-control   (6.1.0140 +LOOP, 6.1.1680 I, 6.1.1730 J,
  6.1.1760 LEAVE, 6.1.1800 LOOP, 6.1.2380 UNLOOP);

                                                                             37


-       (6.1.1710 IMMEDIATE);
- ,   6.2.2405 VALUE,    6.2.2295 TO;
- ,   (6.1.0070 ', 6.1.2033 POSTPONE, 6.1.2510 ['],
 6.2.2530 [COMPILE]);
-     (6.1.1240 DO, 6.2.0620 ?DO, 6.2.2440 WITHIN);
- 6.1.2033 POSTPONE,  6.2.2530 [COMPILE]   6.2.2295 TO;
-  ,      6.1.2450 WORD;
- u        (6.1.1805 LSHIFT, 6.1.2162 RSHIFT);
- ,     6.1.1000 CREATE (6.1.0550 >BODY,
 6.1.1250 DOES>);
- ,     6.1.0490 <#  6.1.0040 #>
  (6.1.0030 #, 6.1.0050 #S, 6.1.1670 HOLD, 6.1.2210 SIGN).

4.1.3   _____________________________
          

    :

-   ,  6.2.2000 PAD (3.3.3.6 
   );
-    ;
-    ,   ;
-    ,  ;
-   ,  ;
-    ,   .

4.2   ________________________
       

4.2.1   _____________________
         

     ,   
,       :

-        
      (3.3.3.6   );
-        
   (6.1.0695 ACCEPT, 6.2.1390 EXPECT);
-      (3.2.2.1 
  );
-         (3.2.1.1
    );
-       (3.  );
-         (3.1.2.2
   , 6.1.1750 KEY);
-   ,    
  (6.1.1320 EMIT, 6.1.2310 TYPE);
-      (3.1.3.1 );
-         
       (3.3.1.2  );
-      hex 24 (3.1.2.1 
  ).

4.2.2   _______________________________
          

   :

                                                                             38


-     ;
-       .

                                                                             39


5.   _________________________
       

5.1   _________________
      ANS Forth  

5.1.1   ____________________
         

,       3.  
  4.1      -  . 
  ,       - 
  .    (), 
          
  ,   3.      - 
   .

5.1.2   ______________________
         

  ()    "ANS Forth  
()".         
   ,     
.

 "   "       
   (),    
 .

 "      "   
     ,    
   .

 "    "     
   ,     
  .

5.2   ___________________
      ANS Forth 

5.2.1   ______________________
         

,       3.  
  4.2      -  
.

5.2.2   ________________________
         

     "ANS Forth ".  
      ,  , 
           
   .

 "   "     
 ,     .

 "      "   
    ,  ,   
    .

 "    "     
  ,  ,    
   .

                                                                             40


6.   _______
     

6.1   ______________
       

6.1.0010   !                              "store "                         CORE
            ( x a-addr -- )
             x  a-addr .    

        .: 3.3.3.1  .

6.1.0030   #                            "number-sign"                      CORE
            ( ud1 -- ud2 )
             ud1   BASE,   ud2   n. (n -  
             ud1.)  n      
                   . 
                #   <# #> 
              .
        .: 6.1.0040 #>, 6.1.0050 #S, 6.1.0490 <#.

 6.1.0040   #>                       "number-sign-greater"                 CORE
            ( xd -- c-addr u )
             xd.       
              . C-addr  u   
             .       
            .

        .: 6.1.0030 #, 6.1.0050 #S, 6.1.0490 <#.

6.1.0050   #S                         "number-sign-s"                      CORE
            ( ud1 -- ud2 )
               ud1    #.  
               . ud2 .  
             ,  #S   <# #>  
             .

        .: 6.1.0030 #, 6.1.0040 #>, 6.1.0490 <#.

6.1.0070   '                              "tick"                           CORE
            ( "<spaces>name" -- xt )
               .  name  
            .  name,   xt,    
            name.   ,  name  .

             , ' xyz EXECUTE,  xyz.

        .: 3.4   Forth, 3.4.1  , 
            A.6.1.2033 POSTPONE, A.6.1.2510 ['], D.6.7 Immediate-.

6.1.0080   (                               "paren"                         CORE
        :   ,  .

                                                                             41


        : ( "ccc<paren>" -- )
             ccc,  ) (  ). ( -  
             .

               ccc        
             .

        .: 3.4.1  , 11.6.1.0080 (.

6.1.0090   *                                 "star"                        CORE
            ( n1|u1 n2|u2 -- n3|u3 )
             n1|u1  n2|u2,  n3|u3.

6.1.0100   */                             "star-slash"                     CORE
            ( n1 n2 n3 -- n4 )
             n1  n2,    - d. 
             d  n3,   - n4.  
             ,  n3     n4  
                .  d  n3   , 
             ,      
            ,     >R M* R> FM/MOD SWAP DROP  
             >R M* R> SM/REM SWAP DROP.

        .: 3.2.2.1  .

6.1.0110   */MOD                         "star-slash-mod"                  CORE
            ( n1 n2 n3 -- n4 n5 )
             n1  n2,    - d. 
             d  n3,   - n4   - 
            n5.   ,  n3    
             n5     -  . 
             d  n3   ,  , 
                 ,    
             >R M* R> FM/MOD   >R M* R> SM/REM.

        .: 3.2.2.1  .

6.1.0120   +                                 "plus"                        CORE
            ( n1|u1 n2|u2 -- n3|u3 )
             n2|u2  n1|u1,   n3|u3.

        .: 3.3.3.1  .

6.1.0130   +!                              "plus-store"                    CORE
            ( n|u a-addr -- )
             n|u   -  a-addr.

        .: 3.3.3.1  .

6.1.0140   +LOOP                            "plus-loop"                    CORE
        :       .

                                                                             42


        : ( C: do-sys -- )
              -,     
            .       
            LEAVE  ,  do-sys   
                   +LOOP.

        -: ( n -- ) ( R: loop-sys1 -- | loop-sys2 )
              ,    
             .  n   .    
                      
            ,     . ,   
                    
            .

        .: 6.1.1240 DO, 6.1.1680 I, 6.1.1760 LEAVE.

6.1.0150   ,                                  "comma"                      CORE
            ( x -- )
                ,   x  . 
                   ",",   
                 ",". 
                    
               ",".

        .: 3.3.3  , 3.3.3.1  .

6.1.0160   -                                  "minus"                      CORE
            ( n1|u1 n2|u2 -- n3|u3 )
             n2|u2  n1|u1,    n3|u3.

        .: 3.3.3.1  .

6.1.0180   .                                   "dot"                       CORE
            ( n -- )
             n    .

        .: 3.2.1.2  , 3.2.1.3    
             .

6.1.0190   ."                               "dot-quote"                    CORE
        :       .

        : ( "ccc<quote>" -- )
             ccc,  " ( ).   
            -     .

        -: ( -- )
             ccc.

        .: 3.4.1  , 6.2.0200 .(.

6.1.0230   /                                "slash"                        CORE

                                                                             43


            ( n1 n2 -- n3 )
             n1  n2,   - n3.  
             ,  n2 .  n1  n2   
            ,  ,     
             ,      >R S>D R> FM/MOD SWAP DROP  
             >R S>D R> SM/REM SWAP DROP.
 
        .: 3.2.2.1  .

6.1.0240   /MOD                            "slash-mod"                     CORE
            ( n1 n2 -- n3 n4 )
             n1  n2,   - n3   -
             n4.   ,  n2 . 
             n1  n2   ,  , 
                 ,    
              >R S>D R> FM/MOD   >R S>D R> SM/REM.

        .: 3.2.2.1  .

6.1.0250   0<                              "zero-less"                     CORE
            ( n -- flag )
            flag - true,     n -  .

6.1.0270   0=                             "zero-equals"                    CORE
            ( x -- flag )
            flag - true,     x -  .

6.1.0290   1+                               "one-plus"                     CORE
            ( n1|u1 -- n2|u2 )
             (1)  n1|u1   n2|u2.

6.1.0300   1-                               "one-minus"                    CORE
            ( n1|u1 -- n2|u2 )
              (1)  n1|u1,   n2|u2.

6.1.0310   2!                               "two-store"                    CORE
            ( x1 x2 a-addr -- )
             - x1 x2  a-addr,  x2  a-addr  x1   
             .    SWAP 
            OVER ! CELL+ !.

        .: 3.3.3.1  .

6.1.0320   2*                                "two-star"                    CORE
            ( x1 -- x2 )
            x2 -   x1       
            ,     .

6.1.0330   2/                                "two-slash"                   CORE
            ( x1 -- x2 )
            x2 -   x1       
            ,    .

                                                                             44


6.1.0350   2@                                "two-fetch"                   CORE
            ( a-addr -- x1 x2 )
             - x1 x2   a-addr. x2   a-
            addr  x1    .   
             DUP CELL+ @ SWAP @.

        .: 3.3.3.1  , 6.1.0310 2!.

6.1.0370   2DROP                             "two-drop"                    CORE
            ( x1 x2 -- )
             - x1 x2  .

6.1.0380   2DUP                              "two-dupe"                    CORE
            ( x1 x2 -- x1 x2 x1 x2 )
             - x1 x2.

6.1.0400   2OVER                             "two-over"                    CORE
            ( x1 x2 x3 x4 -- x1 x2 x3 x4 x1 x2 )
             - x1 x2   .

6.1.0430   2SWAP                             "two-swap"                    CORE
            ( x1 x2 x3 x4 -- x3 x4 x1 x2 )
                -.

6.1.0450   :                                  "colon"                      CORE
            ( C: "<spaces>name" -- colon-sys )
               .  name,  
            .    name,  " 
             ".       
            ,  colon-sys.   , 
                .

              name     
              .      
              ,     (   DOES> 
              ).

        : ( i*x -- i*x )  ( R:  -- nest-sys )
             --  nest-sys   
            .   i*x,    name.

        name : ( i*x -- j*x )
             name .   i*x,  j*x  
                name, .

        .: 3.4   Forth, 3.4.1  , 
            3.4.5 , 6.1.1250 DOES>, 6.1.2500 [, 6.1.2540 ], 
            15.6.2.0470 ;CODE.

6.1.0460   ;                                 "semicolon"                   CORE
        :       .

                                                                             45


        : ( C: colon-sys -- )
              -    . 
              ,      
            ,    ,  colon-sys. 
                 ,  
                 .

        -: ( -- )  ( R:  nest-sys -- )
               ,  nest-sys.

        .: 3.4   Forth, 3.4.5 .

6.1.0480   <                                 "less-than"                   CORE
            ( n1 n2 -- flag )
            flag - true,     n1 -   n2.

        .: 6.1.2340 U<.

6.1.0490   <#                             "less-number-sign"               CORE
            ( -- )
                 
            .

        .: 6.1.0030 #, 6.1.0040 #>, 6.1.0050 #S.

6.1.0530   =                                  "equals"                     CORE
            ( x1 x2 -- flag )
            flag - true,     x1 -   x2.

6.1.0540   >                               "greater-than"                  CORE
            ( n1 n2 -- flag )
            flag - true,     n1 -   n2.

        .: 6.2.2350 U>.

6.1.0550   >BODY                             "to-body"                     CORE
            ( xt -- a-addr )
            a-addr -     xt.  
             ,  xt      
            CREATE.

        .: 3.3.3  .

6.1.0560   >IN                                "to-in"                      CORE
            ( -- a-addr )
            a-addr -  ,       
                 .

6.1.0570   >NUMBER                          "to-number"                    CORE
            ( ud1 c-addr1 u1 -- ud2 c-addr2 u2 )
            ud2 -        
             c-addr1 u1  ,    BASE,   
              ud1   ud1    BASE.

                                                                             46


                   
             ,  "+"  "-",    
               . c-addr2 -   
                    , 
                . u2 -   
               .   
              ud2    .

        .: 3.2.1.2  .

6.1.0580   >R                                 "to-r"                       CORE
        :       .

        : ( x -- )  ( R:  -- x )
             x   .

        .: 3.2.3.3  , 6.1.2060 R>, 6.1.2070 R@, 6.2.0340 2>R, 
            6.2.0410 2R>, 6.2.0415 2R@.

6.1.0630   ?DUP                           "question-dupe"                  CORE
            ( x -- 0 | x x )
             x,   .

6.1.0650   @                                  "fetch"                      CORE
            ( a-addr -- x )
            x - ,   a-addr.

        .: 3.3.3.1  .

6.1.0670   ABORT                                                           CORE
            ( i*x -- ) ( R: j*x -- )
                  QUIT,   
              ,   .

        .: 9.6.2.0670 ABORT.

6.1.0680   ABORT"                          "abort-quote"                   CORE
        :       .

        : ( "ccc<quote>" -- )
             ccc,  " ( ).   
            -     .

        -: ( i*x x1 --  | i*x ) ( R: j*x --  | j*x )
             x1  .     x1 -  , 
             ccc     
             ,    ABORT.

        .: 3.4.1  , 9.6.2.0680 ABORT".

6.1.0690   ABS                                 "abs"                       CORE
            ( n -- u )
            u -   n.

                                                                             47


6.1.0695   ACCEPT                                                          CORE
            ( c-addr +n1 -- +n2 )
                +n1 .   
            ,  +n1     32767.  
              . ,    
                    
               .  ,  
              ,      
             -  .

             ,      
             .   ,     
             ,      
            .

            +n2 -  ,   c-addr.

6.1.0705   ALIGN                                                           CORE
            ( -- )
                 ,   
            ,   .

        .: 3.3.3  , 3.3.3.1  .

6.1.0706   ALIGNED                                                         CORE
            ( addr -- a-addr )
            a-addr -        addr.

        .: 3.3.3.1  .

6.1.0710   ALLOT                                                           CORE
            ( n -- )
             n  ,  n    
            .  n  ,  | n |   
             .  n ,     
            .

                ,  n -    
              ALLOT,   ,   
              ALLOT.

                  ,  n -  
                ALLOT,    
             ,     ALLOT.

        .: 3.3.3  .

6.1.0720   AND                                                             CORE
            ( x1 x2 -- x3 )
            x3   "" x1  x2.

                                                                             48


6.1.0750   BASE                                                            CORE
            ( -- a-addr )
            a-addr -  ,     
                {{2...36}}.

6.1.0760   BEGIN                                                           CORE
        :       .

        : ( C: -- dest )
                  , dest,  
             -.   -, 
                .

        -: ( -- )
             .

        .: 3.2.3.2  -, 6.1.2140 REPEAT, 6.1.2390 UNTIL, 
            6.1.2430 WHILE.

6.1.0770   BL                                 "b-l"                        CORE
            ( -- char )
            char -    .

6.1.0850   C!                                "c-store"                     CORE
            ( char c-addr -- )
             char  c-addr.       
            ,    ,   
            .

        .: 3.3.3.1  .

6.1.0860   C,                                "c-comma"                     CORE
            ( char -- )
                     
             char  .     -   
               C,,       
               C,.   , 
                -      
             C,.

        .: 3.3.3  , 3.3.3.1  .

6.1.0870   C@                                "c-fetch"                     CORE
            ( c-addr -- char )
             ,   c-addr.     
              ,     - .

        .: 3.3.3.1  .

6.1.0880   CELL+                            "cell-plus"                    CORE
            ( a-addr1 -- a-addr2 )

                                                                             49


                   a-addr1,  
            a-addr2.

        .: 3.3.3.1  .

6.1.0890   CELLS                                                           CORE
            ( n1 -- n2 )
            n2 -     n1 .

6.1.0895   CHAR                               "char"                       CORE
            ( "<spaces>name" -- char )
               .  name,  
            .       .

        .: 3.4.1  , 6.1.2520 [CHAR].

6.1.0897   CHAR+                            "char-plus"                    CORE
            ( c-addr1 -- c-addr2 )
                   c-addr1, 
             c-addr2.

        .: 3.3.3.1  .

6.1.0898   CHARS                             "chars"                       CORE
            ( n1 -- n2 )
            n2 -     n1 .

6.1.0950   CONSTANT                                                        CORE
            ( x "<spaces>name" -- )
               .  name,  
            .    name   , 
             .

            name   "constant".

        name : ( -- x )
             x  .

        .: 3.4.1  .

6.1.0980   COUNT                                                           CORE
            ( c-addr1 -- c-addr2 u )
                    
              c-addr1.   c-addr2 -     c-
            addr1. u -    c-addr1,     
               c-addr2.

6.1.0990   CR                                   "c-r"                      CORE
            ( -- )
                   .

6.1.1000   CREATE                                                          CORE
            ( "<spaces>name" -- )

                                                                             50


               .  name,  
            .    name   , 
             .      , 
                  .  
                  name. CREATE  
                  name.

        name : ( -- a-addr )
            a-addr -    name.   name  
               DOES>.

        .: 3.3.3  , 6.1.1250 DOES>.

6.1.1170   DECIMAL                                                         CORE
            ( -- )
                   
             ( ).

6.1.1200   DEPTH                                                           CORE
            ( -- +n )
            +n -    -,    
              ,  +n    .

6.1.1240   DO                                                              CORE
        :       .

        : ( C: -- do-sys )
             do-sys    .   
            -     .   
            ,  do-sys     LOOP.

        -: ( n1|u1 n2|u2 -- ) ( R: -- loop-sys )
                  n2|u2,  
             n1|u1.   ,   n1|u1 
             n2|u2-   . -      
                  .

        .: 3.2.3.2   , 6.1.0140 +LOOP, 6.1.1800 LOOP.

6.1.1250   DOES>                              "does"                       CORE
        :       .

        : ( C: colon-sys1 -- colon-sys2 )
              -    . 
                    
               DOES> -  .  
            colon-sys1   colon-sys2.   
            ,     .

        -: ( -- ) ( R: nest-sys1 -- )
                 , 
              name,     . 
                ,  nest-
            sys1.     name   
             CREATE,      
             CREATE.

                                                                             51


        : ( i*x -- i*x a-addr )  ( R:  -- nest-sys2 )
             --  nest-sys2   
            .     name  .  
             i*x   name.

        name : ( i*x -- j*x )
              ,     
               name DOES>.   
            i*x  j*x  ,   name, 
            .

        .: 6.1.1000 CREATE.

6.1.1260   DROP                                                            CORE
            ( x -- )
             x  .

6.1.1290   DUP                                   "dupe"                    CORE
            ( x -- x x )
             x.

6.1.1310   ELSE                                                            CORE
        :       .

        : ( C: orig1 -- orig2 )
                   orig2  
              .   - 
                .    , 
             orig2   (, THEN).    
            orig1       
            -.

        -: ( -- )
                   orig2.

        .: 6.1.1700 IF, 6.1.2270 THEN.

6.1.1320   EMIT                                                            CORE
            ( x -- )
             x -       
             -  x.  EMIT     x - 
             .

              ,  -   
              hex 20  7E ,  
              ,  3.1.2.1 
             .      
             -   , , 
                  
            ,    .  EMIT,   
               .

        .: 6.1.2310 TYPE.

                                                                             52


6.1.1345   ENVIRONMENT?              "environment-query"                   CORE
            ( c-addr u -- false | i*x true )
            c-addr -   ,  u -  . u   
                    
            ,       31.   
                 3.2.6     
              ,     
               .   
               ,   - false; 
            ,  - true,   i*x  ,   
               .

6.1.1360   EVALUATE                                                        CORE
            ( i*x c-addr u -- j*x )
                .   
            -  (-1)  SOURCE-ID,   .  , 
             c-addr  u     , 
             >IN  ,  .    
            ,     . 
                 .

6.1.1370   EXECUTE                                                         CORE
            ( i*x xt -- j*x )
             xt  ,     . 
                 .

        .: 6.1.0070 ', 6.1.2510 ['].

6.1.1380   EXIT                                                            CORE
        :       .

        : ( -- ) ( R: nest-sys -- )
                ,  nest-
            sys.   EXIT   do-loop,   
               ,  UNLOOP.

        .: 3.2.3.3  , 6.1.2380 UNLOOP.

6.1.1540   FILL                                                            CORE
            ( c-addr u char -- )
             u   ,  char    u 
               ,   c-addr.

6.1.1550   FIND                                                            CORE
            ( c-addr -- c-addr 0  |  xt 1  |  xt -1 )
             ,       c-addr.  
              ,  c-addr  .   
            ,     xt.  
              ,    (1), 
              -  (-1).      
            FIND,          
            .

                                                                             53


        .: 3.4.2   , A.6.1.0070 ', A.6.1.2510 ['], 
            A.6.1.2033 POSTPONE, D.6.7 Immediate-.

6.1.1561   FM/MOD                         "f-m-slash-mod"                  CORE
            ( d1 n1 -- n2 n3 )
             d1  n1,    n3   n2. 
                 .  
             ,  n1       
               -  .

        .: 3.2.2.1  , 6.1.2214 SM/REM, 6.1.2370 UM/MOD.

6.1.1650   HERE                                                            CORE
            ( -- addr )
            addr -   .

        .: 3.3.3.2  .

6.1.1670   HOLD                                                            CORE
            ( char -- )
             char      . 
                HOLD   <# #> 
              .

6.1.1680   I                                                               CORE
        :       .

        : ( -- n|u )  ( R:  loop-sys -- loop-sys )
            n|u -   ( )  . 
              ,    
             .

6.1.1700   IF                                                              CORE
        :       .

        : ( C: -- orig )
                   orig  
              .   -, 
                .   ,  
            orig  ,  THEN  ELSE.

        -: ( x -- )
               x ,      
              orig.

        .: 3.2.3.2  -, 6.1.1310 ELSE, 6.1.2270 THEN.

6.1.1710   IMMEDIATE                                                       CORE
            ( -- )
                  . 
              ,    
               .

                                                                             54


        .: D.6.7 Immediate-.

6.1.1720   INVERT                                                          CORE
            ( x1 -- x2 )
               x1,     x2.

        .: 6.1.1910 NEGATE, 6.1.0270 0=.

6.1.1730   J                                                               CORE
        :       .

        :( -- n|u )( R: loop-sys1 loop-sys2 -- loop-sys1 loop-sys2 )
            n|u -  -  .  
             ,     -
             , loop-sys1, .

6.1.1750   KEY                                                             CORE
            ( -- char )
               char,     
            .  ,     
             ,     ,  
              .

                 . ,  
            KEY,  .

              ,  KEY    
              3.1.2.1  . ,  
                 ,  
              .

        .: 10.6.2.1307 EKEY, 10.6.1.1755 KEY?.

6.1.1760   LEAVE                                                           CORE
        :       .

        : ( -- )  ( R: loop-sys -- )
                .  
             ,   .   
                  DO 
            ... LOOP  DO ... +LOOP.

        .: 3.2.3.3  , 6.1.0140 +LOOP, 6.1.1800 LOOP.

6.1.1780   LITERAL                                                         CORE
        :       .

        : ( x -- )
              -,     
            .

                                                                             55


        -: ( -- x )
             x  .

6.1.1800   LOOP                                                            CORE
        :       .

        : ( C: do-sys -- )
              -,     
            .       
            LEAVE     do-sys    LOOP 
                     
            LOOP.

        -: ( -- )  ( R:  loop-sys1 --  | loop-sys2 )
              ,     
            .     .     
               ,   ,   
               .    
              .

        .: 6.1.1240 DO, 6.1.1680 I, 6.1.1760 LEAVE.

6.1.1805   LSHIFT                            "l-shift"                     CORE
            ( x1 u -- x2 )
                x1  u    
             x2.      ,  
            .   ,  u   
                .

6.1.1810   M*                                  "m-star"                    CORE
            ( n1 n2 -- d )
            d -   n1  n2.

6.1.1870   MAX                                                             CORE
            ( n1 n2 -- n3 )
            n3   n1  n2.

6.1.1880   MIN                                                             CORE
            ( n1 n2 -- n3 )
            n3   n1  n2.

6.1.1890   MOD                                                             CORE
            ( n1 n2 -- n3 )
             n1  n2,   n3 -.  
             ,  n2 .  n1  n2   
            ,       
                  >R S>D R> FM/MOD DROP   
            >R S>D R> SM/REM DROP.

        .: 3.2.2.1  .

                                                                             56


6.1.1900   MOVE                                                            CORE
            ( addr1 addr2 u -- )
             u   ,   u  
               addr1  u   
              addr2.   MOVE, u  
               addr2  ,  u  
               addr1   .

        .: 17.6.1.0910 CMOVE, 17.6.1.0920 CMOVE>.

6.1.1910   NEGATE                                                          CORE
            ( n1 -- n2 )
             n1,     n2.

        .: 6.1.1720 INVERT, 6.1.0270 0=.

6.1.1980   OR                                                              CORE
            ( x1 x2 -- x3 )
            x3 -    x1  x2.

6.1.1990   OVER                                                            CORE
            ( x1 x2 -- x1 x2 x1 )
              x1   .

6.1.2033   POSTPONE                                                        CORE
        :       .

        : ( "<spaces>name" -- )
               .  name,  
            .  name.    name  
             .   ,  name 
             .

        .: 3.4.1  .

6.1.2050   QUIT                                                            CORE
            ( -- )  ( R:  i*x -- )
              ,    SOURCE-ID,   
            ,      
            ,    .   
            .  :

            -        , 
              >IN,  .
            -     ,  
                   ,  
               .

        .: 3.4   Forth.

6.1.2060   R>                                "r-from"                      CORE
        :       .

                                                                             57


        : ( -- x )  ( R:  x -- )
             x      .

        .: 3.2.3.3  , 6.1.0580 >R, 6.1.2070 R@, 6.2.0340 2>R, 
            6.2.0410 2R>, 6.2.0415 2R@.

6.1.2070   R@                                "r-fetch"                     CORE
        :       .

        : ( -- x )  ( R:  x -- x )
             x      .

        .: 3.2.3.3  , 6.1.0580 >R, 6.1.2060 R>, 6.2.0340 2>R, 
            6.2.0410 2R>, 6.2.0415 2R@.

6.1.2120   RECURSE                                                         CORE
        :       .

        : ( -- )
                   
            .   ,  RECURSE 
                DOES>.

        .: 6.1.1250 DOES>, 6.1.2120 RECURSE.

6.1.2140   REPEAT                                                          CORE
        :       .

        : ( C: orig dest -- )
              -,     
            ,    dest.    
            orig       -
            .

        -: ( -- )
                ,  dest.

        .: 6.1.0760 BEGIN, 6.1.2430 WHILE.

6.1.2160   ROT                                 "rote"                      CORE
            ( x1 x2 x3 -- x2 x3 x1 )
                .

6.1.2162   RSHIFT                             "r-shift"                    CORE
            ( x1 u -- x2 )
                x1  u  , 
             x2.      ,  
            .   ,  u   
                .

6.1.2165   S"                                 "s-quote"                    CORE
        :       .

                                                                             58


        : ( "ccc<quote>" -- )
             ccc,  " ( ).   
            -     .

        -: ( -- c-addr u )
             c-addr  u  ,    
            ccc.      .

        .: 3.4.1  , 6.2.0855 C", 11.6.1.2165 S".

6.1.2170   S>D                                 "s-to-d"                    CORE
            ( n -- d )
              n   d -     
             .

6.1.2210   SIGN                                                            CORE
            ( n -- )
             n - ,   ""    
              .   , 
             SIGN   <# #>   
            .

6.1.2214   SM/REM                           "s-m-slash-rem"                CORE
            ( d1 n1 -- n2 n3 )
             d1  n1,    n3   n2. 
                 .  
             ,  n1       
                 -.

        .: 3.2.2.1  , 6.1.1561 FM/MOD, 6.1.2370 UM/MOD.

6.1.2216   SOURCE                                                          CORE
            ( -- c-addr u )
            c-addr - ,  u -     .

6.1.2220   SPACE                                                           CORE
            ( -- )
              .

6.1.2230   SPACES                                                          CORE
            ( n -- )
             n  ,  n .

6.1.2250   STATE                                                           CORE
            ( -- a-addr )
            a-addr -  ,    . STATE 
            - true    ,  false.  true  
            STATE ,  -   .  
                  STATE: : 
            (), ; (  ), ABORT, QUIT, :NONAME, [ ( 
            ),  ] ( ). 

                                                                             59


         :
                  STATE.

        .: 3.4   Forth, 6.1.0450 :, 6.1.0460 ;, 6.1.0670 
            ABORT, 6.1.2050 QUIT, 6.1.2500 [, 6.1.2540 ], 6.2.0455 :NONAME, 
            15.6.2.2250 STATE.

6.1.2260   SWAP                                                            CORE
            ( x1 x2 -- x2 x1 )
                .

6.1.2270   THEN                                                            CORE
        :       .

        : ( C: orig -- )
              -,     
            .    orig,    
              -.

        -: ( -- )
             .

        .: 6.1.1310 ELSE, 6.1.1700 IF.

6.1.2310   TYPE                                                            CORE
            ( c-addr u -- )
             u  ,   ,  c-
            addr  u.

              ,  -   
              hex 20  7E ,  
              ,   3.1.2.1 
             .      
             -   , , 
                  
            ,    .

        .: 6.1.1320 EMIT.

6.1.2320   U.                                 "u-dot"                      CORE
            ( u -- )
             u    .

6.1.2340   U<                               "u-less-than"                  CORE
            ( u1 u2 -- flag )
            flag - true,     u1 -   u2.

        .: 6.1.0480 <.

6.1.2360   UM*                               "u-m-star"                    CORE
            ( u1 u2 -- ud )
             u1  u2,   ud   -.
                 .

                                                                             60


6.1.2370   UM/MOD                          "u-m-slash-mod"                 CORE
            ( ud u1 -- u2 u3 )
             ud  u1,   u3   u2.    
              .     u1 
                     -
              .

        .: 3.2.2.1  , 6.1.1561 FM/MOD, 6.1.2214 SM/REM.

6.1.2380   UNLOOP                                                          CORE
        :       .

        : ( -- ) ( R: loop-sys -- )
                   
            . UNLOOP      
            ,     EXIT .  
                  .

        .: 3.2.3.3  .

6.1.2390   UNTIL                                                           CORE
        :       .

        : ( C: dest -- )
              -,     
            ,    dest.

        -: ( x -- )
               x ,      
             dest.

        .: 6.1.0760 BEGIN.

6.1.2410   VARIABLE                                                        CORE
            ( "<spaces>name" -- )
               .  name,  
            .    name   , 
             .       
             .

            name   "variable".

        name : ( -- a-addr )
            a-addr -   .    
                .

        .: 3.4.1  .

                                                                             61


6.1.2430   WHILE                                                           CORE
        :       .

        : ( C: dest -- orig dest )
                   orig  
              ,   dest.   
            -,     .  
                orig  dest (, REPEAT).

        -: ( x -- )
               x ,      
              orig.

6.1.2450   WORD                                                            CORE
            ( char "<chars>ccc<char>" -- c-addr )
              .   ccc  
            char.   ,    
                    
            .

            c-addr -   ,     
              .        
                ,   
              .        
            .       .

        : ,        
                ,   
            CONVERT.       .

        .: 3.3.3.6   , 3.4.1  .

6.1.2490   XOR                               "x-or"                        CORE
            ( x1 x2 -- x3 )
            x3  - x1  x2.

6.1.2500   [                               "left-bracket"                  CORE
        :       .

        :   ,  .

        : ( -- )
              . [ -   .

        .: 3.4   Forth, 3.4.5 , 6.1.2540 ].

6.1.2510   [']                         "bracket-tick"                      CORE
        :       .

        : ( "<spaces>name" -- )
               .  name,  
            .  name.   -, 
                .
              ,  name  .

                                                                             62


        -: ( -- xt )
               name xt  .  
            ,    "['] X " ,  
              ,    "' X "   .

        .: 3.4.1  , A.6.1.0070 ', A.6.1.2033 POSTPONE, 
            D.6.7 Immediate-.

6.1.2520   [CHAR]                      "bracket-char"                      CORE
        :       .

        : ( "<spaces>name" -- )
               .  name,  
            .   -,    
             .

        -: ( -- char )
               char,    name.

        .: 3.4.1  , 6.1.0895 CHAR.

6.1.2540   ]                          "right-bracket"                      CORE
            ( -- )
              .

        .: 3.4   Forth, 3.4.5 , 6.1.2500 [.

                                                                             63


6.2   ________________________
        


6.2.0060   #TIB                       "number-t-i-b"                   CORE EXT
            ( -- a-addr )
            a-addr -  ,       
            .

        :         
            .

6.2.0200   .(                         "dot-paren"                      CORE EXT
        :   ,  .

        : ( "ccc<paren>" -- )
               ccc,  ) (  ). 
            .(    .

        .: 3.4.1  , 6.1.0190 .".

6.2.0210   .R                           "dot-r"                        CORE EXT
            ( n1 n2 -- )
             n1      n2 .  
                 n1   n2,  
                    .

6.2.0260   0<>                        "zero-not-equals"                CORE EXT
            ( x -- flag )
            flag - true,     x -   .

6.2.0280   0>                          "zero-greater"                  CORE EXT
            ( n -- flag )
            flag - true,     n -  .

6.2.0340   2>R                           "two-to-r"                    CORE EXT
        :       .

        : ( x1 x2 -- ) ( R:  -- x1 x2 )
             - x1 x2   .  
             SWAP >R >R.

        .: 3.2.3.3  , 6.1.0580 >R, 6.1.2060 R>, 6.1.2070 R@, 
            6.2.0410 2R>, 6.2.0415 2R@.

6.2.0410   2R>                        "two-r-from"                     CORE EXT
        :       .

        : ( -- x1 x2 )  ( R:  x1 x2 -- )
             - x1 x2   .  
              R> R> SWAP.

                                                                             64


        .: 3.2.3.3  , 6.1.0580 >R, 6.1.2060 R>, 6.1.2070 R@, 
            6.2.0340 2>R, 6.2.0415 2R@.

6.2.0415   2R@                        "two-r-fetch"                    CORE EXT
        :       .

        : ( -- x1 x2 )  ( R:  x1 x2 -- x1 x2 )
             - x1 x2   .  
              R> R> 2DUP >R >R SWAP.

        .: 3.2.3.3  , 6.1.0580 >R, 6.1.2060 R>, 6.1.2070 R@, 
            6.2.0340 2>R, 6.2.0410 2R>.

6.2.0455   :NONAME                    "colon-no-name"                  CORE EXT
            ( C:  -- colon-sys )  ( S:  -- xt )
               xt,     
              ,  colon-sys.  
                  .

              xt      
             .      , 
             xt EXECUTE.

                    
            , colon-sys        
            .

        : ( i*x -- i*x )  ( R:  -- nest-sys )
             --  nest-sys   
            .   i*x    xt.

        xt : ( i*x -- j*x )
               xt.   i*x  i*x 
                  xt, .

        . 3.2.3.2  -.

6.2.0500   <>                               "not-equals"               CORE EXT
            ( x1 x2 -- flag )
            flag - true,     x1    x2.

6.2.0620   ?DO                              "question-do"              CORE EXT
        :       .

        : ( C: -- do-sys )
             do-sys    .   
            -     .   
            ,     do-sys  LOOP.

        -: ( n1|u1 n2|u2 -- ) ( R: --  | loop-sys )

                                                                             65


             n1|u1  n2|u2,      
              do-sys.    
                n2|u2,   n1|u1,   
               ?DO.  -     
                   
             .   ,   
            n1|u1  n2|u2-   .

        .: 3.2.3.2  -, 6.1.0140 +LOOP, 6.1.1240 DO, 
            6.1.1680 I, 6.1.1760 LEAVE, 6.1.1800 LOOP, 6.1.2380 UNLOOP.

6.2.0700   AGAIN                                                       CORE EXT
        :       .

        : ( C: dest -- )
              -,     
            ,    dest.

        -: ( -- )
                  dest.  
                  ,   
              AGAIN   .

        .: 6.1.0760 BEGIN.

6.2.0855   C"                               "c-quote"                  CORE EXT
        :       .

        : ( "ccc<quote>" -- )
             ccc,  " ( ),   
             -     .

        -: ( -- c-addr )
             c-addr   ,    ccc. 
                 .

        .: 3.4.1  , 6.1.2165 S", 11.6.1.2165 S".

6.2.0873   CASE                                                        CORE EXT
        :       .

        : ( C: -- case-sys )
              CASE ... OF ... ENDOF ... ENDCASE .
              -,     
            .

        -: ( -- )
             .

        .: 6.2.1342 ENDCASE, 6.2.1343 ENDOF, 6.2.1950 OF.

6.2.0945   COMPILE,                     "compile-comma"                CORE EXT
        :       .

                                                                             66


        : ( xt -- )
                 xt  
               .

6.2.0970   CONVERT                                                     CORE EXT
            ( ud1 c-addr1 -- ud2 c-addr2 )
            ud2 -       
                 c-addr1  ,  
              BASE,      ud1   ud1 
               BASE.       
             . c-addr2 -     
             .   ,  
            ud2 .

        :         
            .     6.1.0570 >NUMBER.

        .: 3.2.1.2  .

6.2.1342   ENDCASE                        "end-case"                   CORE EXT
        :       .

        : ( C: case-sys -- )
              CASE ... OF ... ENDOF ... ENDCASE . 
             case-sys    .  
             -     .

        -: ( x -- )
             case  x,   .

        .: 6.2.0873 CASE, 6.2.1343 ENDOF, 6.2.1950 OF.

6.2.1343   ENDOF                           "end-of"                    CORE EXT
        :       .

        : ( C: case-sys1 of-sys -- case-sys2 )
              OF ... ENDOF  CASE .   
                  of-sys.  
             -,     . 
             case-sys1  case-sys2    ,  
             ENDCASE.

        -: ( -- )
                   
            case-sys2.

        .: 6.2.0873 CASE, 6.2.1342 ENDCASE, 6.2.1950 OF.

6.2.1350   ERASE                                                       CORE EXT
            ( addr u -- )
             u  ,       u 
               ,   addr.

                                                                             67


6.2.1390   EXPECT                                                      CORE EXT
            ( c-addr +n -- )
                 +n .   
                . ,    
                    
              .  ,   
             ,   ,    
             -  .

             ,      
                  +n .   
            ,      ,   
               .

               c-addr     SPAN.

        :         
            .     6.1.0695 ACCEPT.

6.2.1485   FALSE                                                       CORE EXT
            ( -- false )
              false.

        .: 3.1.3.1 

6.2.1660   HEX                                                         CORE EXT
            ( -- )
              BASE  16.

6.2.1850   MARKER                                                      CORE EXT
            ( "<spaces>name" -- )
               .  name,  
            .    name   , 
             .

        name : ( -- )
                   
              ,      
             name.   name    
            .      , 
                    
                 . 
                    
            .

        .: 3.4.1  , 15.6.2.1580 FORGET.

6.2.1930   NIP                                                         CORE EXT
            ( x1 x2 -- x2 )
                 .

6.2.1950   OF                                                          CORE EXT
        :       .

                                                                             68


        : ( C: -- of-sys )
             of-sys    .   
            -     .   
            ,    of-sys   ENDOF.

        -: ( x1 x2 --   | x1 )
                 -  ,     
                   
            of-sys, ,   ENDOF. ,   
                 .

        .: 6.2.0873 CASE, 6.2.1342 ENDCASE, 6.2.1343 ENDOF.

6.2.2000   PAD                                                         CORE EXT
            ( -- c-addr )
            c-addr -   ,     
                 .

        .: 3.3.3.6   .

6.2.2008   PARSE                                                       CORE EXT
            ( char "ccc<char>" -- c-addr u )
             ccc,   char.

            c-addr -  (   )  u -   
            .     ,   
              .

        .: 3.4.1  .

6.2.2030   PICK                                                        CORE EXT
            ( xu ... x1 x0 u -- xu ... x1 x0 xu )
             u.  xu   .   
            ,    PICK    u+2 .

6.2.2040   QUERY                                                       CORE EXT
            ( -- )
                  . 
                 ,    
            .  ,    TIB,  
            .  >IN  .

        :         
            .

6.2.2125   REFILL                                                      CORE EXT
            ( -- flag )

                                                                             69


                  ,  
            true flag  . 
               -   ,  
                 .  ,  
              ,  >IN  ,   
            true.       
             .       
             ,  false.

               -   EVALUATE,  false   
               .

        .: 7.6.2.2125 REFILL, 11.6.2.2125 REFILL.

6.2.2148   RESTORE-INPUT                                               CORE EXT
            ( xn ... x1 n -- flag )
                   
              x1 ... xn. flag - true,    
                 .

                 , 
              -      
            .

        .: A.6.2.2182 SAVE-INPUT.

6.2.2150   ROLL                                                        CORE EXT
            ( xu xu-1 ... x0 u -- xu-1 ... x0 xu )
             u.  u+1    .  
             ,    ROLL    
             u+2 . 

6.2.2182   SAVE-INPUT                                                  CORE EXT
            ( -- xn ... x1 n )
            x1 ... xn      
                 RESTORE-INPUT.

6.2.2218   SOURCE-ID                        "source-i-d"               CORE EXT
            ( -- 0 | -1 )
                :

            SOURCE-ID    
            --------------------------------------------
            -1          ( EVALUATE)
             0           
            --------------------------------------------

        .: 11.6.1.2218 SOURCE-ID.

6.2.2240   SPAN                                                        CORE EXT
            ( -- a-addr )
            a-addr -  ,     
              EXPECT.

                                                                             70


        :         
            .

6.2.2290   TIB                           "t-i-b"                       CORE EXT
            ( -- c-addr )
            c-addr -    .

        :         
            .

6.2.2295   TO                                                          CORE EXT
        : ( x "<spaces>name" -- )
              ,   name,  . 
             x  name.   ,  name 
                VALUE.

        : ( "<spaces>name" -- )
              ,   name,  . 
              -,     
            .   ,  name   
              VALUE.

        -: ( x -- )
             x  name.

        :   ,  POSTPONE  
            [COMPILE],   TO.

        .: 6.2.2405 VALUE, 13.6.1.2295 TO.

6.2.2298   TRUE                                                        CORE EXT
            ( -- true )
              true,  -    
            .

        .: 3.1.3.1 .

6.2.2300   TUCK                                                        CORE EXT
            ( x1 x2 -- x2 x1 x2 )
                   .

6.2.2330   U.R                            "u-dot-r"                    CORE EXT
            ( u n -- )
             u  ,    n .  
                 u   n,   
                   .

6.2.2350   U>                         "u-greater-than"                 CORE EXT
            ( u1 u2 -- flag )
            flag - true,     u1   u2.

        .: 6.1.0540 >.

                                                                             71


6.2.2395   UNUSED                                                      CORE EXT
            ( -- u )
            u -       HERE, 
              .

6.2.2405   VALUE                                                       CORE EXT
            ( x "<spaces>name" -- )
               .  name,  
            .    name   , 
             ,     x.

            name   "value".

        name : ( -- x )
             x  .  x -   ,   name, 
                    x TO name,   
             x,   name.

        .: 3.4.1  .

6.2.2440   WITHIN                                                      CORE EXT
            ( n1|u1 n2|u2 n3|u3 -- flag )
                n1|u1    
            n2|u2    n3|u3,  true,  (n2|u2 < n3|u3 
             (n2|u2 <= n1|u1  n1|u1 < n3|u3))  (n2|u2 > n3|u3  (n2|u2 <= 
            n1|u1  n1|u1 < n3|u3)) - true,    false. 
              ,  n1|u1, n2|u2,  n3|u3  
              .

6.2.2530   [COMPILE]                     "bracket-compile"             CORE EXT
        :       .

        : ( "<spaces>name" -- )
               .  name,  
            .  name.  name    
                ,     
            ;     name. 
              ,  name  .

        .: 3.4.1  .

6.2.2535   \                               "backslash"                 CORE EXT
        :   ,  .

        : ( "ccc<eol>"-- )
                 . \   
            .

        .: 7.6.2.2535 \.

                                                                             72


7.   _________________________________
        

7.1   ________
      

7.2   ______________________
       

: 1024     ,   
.

 :     ,     
  .    -     
   BLOCK, BUFFER, LOAD, LIST,  THRU.
  
7.3   _________________________________
        

7.3.1   ___________________
          

  7.1   3.5.

.: 3.2.6   .

    _________________________________________
     7.1 -    

                               
    ---------------------------------------------------------------
    BLOCK              flag  no      
    BLOCK-EXT          flag  no      
                                  
    ---------------------------------------------------------------

7.3.2   ______________
         

        .

.: 3.3.3  .

7.3.3   _______________________
          
 
  ,  BLOCK  BUFFER .  BLOCK 
 BUFFER        
,      :

-  ;
-      ,  TYPE 
  EMIT;
-    ,  CR  AT-XY;
-        
   ,  ACCEPT  KEY;
-    ,  MS  EKEY;
-   ,  FLUSH, SAVE-BUFFERS,  EMPTY-BUFFERS;
-         , 
   -,  REFILL   ,  
  ior;
-   -,      
      (  
   THROW).

                                                                             73


   - ,      , 
 SOURCE.

     .

7.3.4   _____________________
         

         
.    - , BLK    
     - 1024- ,   .

    16   64 .

      ,  LOAD  THRU. 
    ,  LOAD,  EVALUATE   
.

       ,  
>IN.      ,  SAVE-INPUT 
 RESTORE-INPUT.

.: 3.4.1  .

7.3.5   _____________________________________________
            

.: 3.4.4     .

-          
   .

7.4   __________________________________________
        

7.4.1   ______________________
         

7.4.1.1   ______________________________
            

- ,      7.6.2.1770 LIST (
  );
-  ,   7.6.2.2535 \ ( ).

7.4.1.2   _______________________
           

-      ;
-  -   ;
-    (7.6.1.0800 BLOCK, 7.6.1.0820 BUFFER, 7.6.1.1790
  LOAD);
-     7.6.1.0790 BLK;
-      7.6.1.2400 UPDATE.

7.4.1.3   _____________________________
            

-       
   ;
-  ,      .

7.4.2   ________________________
          

-  ,  .

                                                                             74


7.5   _________________________
        

7.5.1   _________________
        ANS Forth  

 "   "      
  ,      .

 "      "   
     ,    
   .

 "    "     
   ,     
      .

7.5.2   ___________________
        ANS Forth  

 "   "      
 ,  ,     
 .

 "      "   
    ,  ,   
     .

 "    "     
  ,  ,    
        .

7.6   _______
      

7.6.1   _____________
         

7.6.1.0790   BLK                            "b-l-k"                       BLOCK
            ( -- a-addr )
            a-addr -  ,      
              .  BLK  ,  
             -       SOURCE-ID,  
            SOURCE-ID  .    
                 BLK.

        .: 7.3.3   .

7.6.1.0800   BLOCK                                                        BLOCK
            ( u -- a-addr )
            a-addr -         
            u  .   , 
             u    .

              u -    , a-addr -    
            .

                                                                             75


              u -         , 
              u       
            . a-addr -    .

              u -          
            ,   .       
              UPDATE,     ,  
              u      . a-addr 
            -    .

              ,    a-addr -  
                 u.

7.6.1.0820   BUFFER                                                       BLOCK
            ( u -- a-addr )
            a-addr -        
            u.    .   
            ,  u -    .

              u -    , a-addr -    
            .

              u -        , a-addr - 
               .

              u -          
            ,   .       
              UPDATE,     . 
            a-addr -    .

              ,    a-addr -  
                 u.

        .: 7.6.1.0800 BLOCK.

7.6.1.1360   EVALUATE                                                     BLOCK
              6.1.1360 EVALUATE ,  :

               BLK.

7.6.1.1559   FLUSH                                                        BLOCK
            ( -- )
              SAVE-BUFFERS,     
            .

7.6.1.1790   LOAD                                                         BLOCK
            ( i*x u -- j*x )
                .  u  
            BLK (    u  ,  
                   ), 
             >IN,  .    , 
                .  
              -     LOAD.

                                                                             76


              ,  u   -  
              .

        .: 3.4   Forth.

7.6.1.2180   SAVE-BUFFERS                                                 BLOCK
            ( -- )
                   
             .      
            .

7.6.1.2400   UPDATE                                                       BLOCK
            ( -- )
                 .  
             ,      .

            UPDATE    -.

        .: 7.6.1.0800 BLOCK, 7.6.1.0820 BUFFER, 7.6.1.1559 FLUSH, 7.6.1.2180 
            SAVE-BUFFERS.

7.6.2   _______________________
           

7.6.2.1330   EMPTY-BUFFERS                                            BLOCK EXT
            ( -- )
               .     
                 .

        .: 7.6.1.0800 BLOCK.

7.6.2.1770   LIST                                                     BLOCK EXT
            ( u -- )
              u    .  u  
            SCR.

        .: 7.6.1.0800 BLOCK.

7.6.2.2125   REFILL                                                   BLOCK EXT
            ( -- flag )
               6.2.2125 REFILL  :

               - ,     
                ,     BLK 
              >IN  .  true,    BLK 
            -   ,  false.

        .: 6.2.2125 REFILL, 11.6.2.2125 REFILL.

7.6.2.2190   SCR                               "s-c-r"                BLOCK EXT
            ( -- a-addr )
            a-addr -  ,     
               LIST.

                                                                             77


7.6.2.2280   THRU                                                     BLOCK EXT
            ( i*x u1 u2 -- j*x )
            LOAD        
             u1  u2.    -    
             LOAD.

7.6.2.2535   \                              "backslash"               BLOCK EXT
        :   ,  .

        : ( "ccc<eol>"-- )
             BLK  , ,     
            ;  ,      
               . \ -   
            .

                                                                             78


8.   _______________________________________
         

8.1   ________
      

16-  Forth     .   Forth-
       ,    Forth 
     32    ,   
    .  ,   
  ,       .

8.2   ________________________________
         

.

8.3   _________________________________
        

8.3.1   ____________________
           

  8.1   3.5.

.: 3.2.6    .

    _________________________________________
     8.1 -    

                               
    --------------------------------------------------------------------
    DOUBLE             flag  no       
    DOUBLE-EXT         flag  no       
                                  
    --------------------------------------------------------------------

8.3.2   ______________________________________________________
            

    ,   
        name,  
      -.

,  DECIMAL 1234   - 1234  ,   
DECIMAL 1234.   - 1234 0  .

.: 3.4.1.3     .

8.4   __________________________________________
        

8.4.1   ______________________
         

8.4.1.1   

-   .

8.4.1.2  

- d   n  8.6.1.1140 D>S.

8.4.1.3   

-   .

                                                                             79


8.4.2   ________________________
          

-   .

8.5   _________________________
        

8.5.1   _________________
        ANS Forth  

 "    "     
   ,      
 .

 "       "   
     ,    
    .

 "     "   
     ,    
         .

8.5.2   ___________________
        ANS Forth  

 "    "      
 ,  ,      
 .

 "       "   
    ,  ,   
      .

 "     "     
  ,  ,    
          .

8.6   _______
      

8.6.1   ___________________
          

8.6.1.0360   2CONSTANT                     "two-constant"                DOUBLE
            ( x1 x2 "<spaces>name" -- )
               .  name,  
            .    name   , 
             .

            name   "two-constant".

        name : ( -- x1 x2 )
             - x1 x2  .

        .: 3.4.1  .

                                                                             80


8.6.1.0390   2LITERAL                      "two-literal"                 DOUBLE
        :       .

        : ( x1 x2 -- )
              -     
            .

        -: ( -- x1 x2 )
             - x1 x2  .

8.6.1.0440   2VARIABLE                    "two-variable"                 DOUBLE
            ( "<spaces>name" -- )
               .  name,  
            .    name   , 
             .      
            .

            name   "two-variable".

        name : ( -- a-addr )
            a-addr -   ( )   
                ,  
            2VARIABLE,    name.    
             .

        .: 3.4.1  , 6.1.2410 VARIABLE.

8.6.1.1040   D+                             "d-plus"                     DOUBLE
            ( d1|ud1 d2|ud2 -- d3|ud3 )
             d2|ud2  d1|ud1,   d3|ud3.

8.6.1.1050   D-                             "d-minus"                    DOUBLE
            ( d1|ud1 d2|ud2 -- d3|ud3 )
             d2|ud2  d1|ud1,   d3|ud3.

8.6.1.1060   D.                              "d-dot"                     DOUBLE
            ( d -- )
             d    .

8.6.1.1070   D.R                            "d-dot-r"                    DOUBLE
            ( d n -- )
             d      n .  
                 d   n,   
                   .

8.6.1.1075   D0<                         "d-zero-less"                   DOUBLE
            ( d -- flag )
            flag - true,     d -  .

8.6.1.1080   D0=                        "d-zero-equals"                  DOUBLE
            ( xd -- flag )
            flag - true,     xd -  .

8.6.1.1090   D2*                         "d-two-star"                    DOUBLE
            ( xd1 -- xd2 )

                                                                             81


            xd2 -   xd1       
            ,     .

8.6.1.1100   D2/                         "d-two-slash"                   DOUBLE
            ( xd1 -- xd2 )
            xd2 -   xd1       
            ,    .

8.6.1.1110   D<                          "d-less-than"                   DOUBLE
            ( d1 d2 -- flag )
            flag - true,     d1 -   d2.

8.6.1.1120   D=                           "d-equals"                     DOUBLE
            ( xd1 xd2 -- flag )
            flag - true,     xd1 -   xd2.

8.6.1.1140   D>S                           "d-to-s"                      DOUBLE
            ( d -- n )
            n -  d.   ,  d 
                 -.

8.6.1.1160   DABS                          "d-abs"                       DOUBLE
            ( d -- ud )
            ud -   d.

8.6.1.1210   DMAX                          "d-max"                       DOUBLE
            ( d1 d2 -- d3 )
            d3   d1  d2.

8.6.1.1220   DMIN                          "d-min"                       DOUBLE
            ( d1 d2 -- d3 )
            d3   d1  d2.

8.6.1.1230   DNEGATE                      "d-negate"                     DOUBLE
            ( d1 -- d2 )
            d2 -  d1.

8.6.1.1820   M*/                        "m-star-slash"                   DOUBLE
            ( d1 n1 +n2 -- d2 )
             d1  n1,    - 
            t.  t  +n2   d2 -.  
             ,  +n2   ,  
                     
            .

8.6.1.1830   M+                           "m-plus"                       DOUBLE
            ( d1|ud1 n -- d2|ud2 )
             n  d1|ud1,   d2|ud2.

8.6.2   _____________________________
           

                                                                             82


8.6.2.0420   2ROT                        "two-rote"                  DOUBLE EXT
            ( x1 x2 x3 x4 x5 x6 -- x3 x4 x5 x6 x1 x2 )
               -  ,  - x1 x2 
              .

8.6.2.1270   DU<                         "d-u-less"                  DOUBLE EXT
            ( ud1 ud2 -- flag )
            flag - true,     ud1 -   ud2.

                                                                             83


9.   ____________________________________
        

9.1   ________
      

9.2   ________________________________
         

.

9.3   _________________________________
        

9.3.1   ______________
         THROW

 THROW {-255...-1}       
.  {-4095...-256}      
.

         , 
    ior,     
  THROW,   .    , 
    ""  - 
 ,      THROW.

        THROW   
{-4095...-1}.

9.3.2   ____________________
         

  - --    
       
CATCH  THROW.         .

9.3.3   _______________
         

,  CATCH  THROW    .  , 
  ,      .

9.3.4   ____________________
           

  9.1   3.5.

.: 3.2.6    .

    _________________________________________
     9.1 -    

                               
    ------------------------------------------------------------------
    EXCEPTION          flag  no      
    EXCEPTION-EXT      flag  no      
                                  
    ------------------------------------------------------------------

9.3.5   _____________________________________________
            

                                                                             84


                   
 -1  ABORT                           -2  ABORT"
 -3                 -4   
 -5        -6    
 -7  do-loops      
                                     -8   
 -9              -10    
-11            -12    
-13              -14     
                                          
-15   FORGET                -16    
                                            name
-17      
                                    -18    
-19   name    
                                    -20       
-21    (, AT-XY  -
     )
                                    -22    
-23    
                                    -24    
-25     
                                    -26    
-27                 -28   
-29           -30   
-31  >BODY    CREATE 
                                    -32    name (,
                                         TO xxx) 
-33         -34    
-35               -36    
-37   -   -38   
-39            -40   BASE   
                                           
-41                   -42       
-43       
                                    -44      
-45      
                                    -46      
-47       
                                    -48   POSTPONE
-49        -50    
-51      
                                    -52     
-53      -54     
-55      
                                    -56  QUIT
-57       
                                    -58   [IF], [ELSE],  [THEN]


9.3.6   ____________________
         

                                                                             85


    CATCH  THROW     
.   -  ,   
,  ,  locals    
 ( ,  LOAD, EVALUATE,  INCLUDE-FILE).

 THROW    CATCH,      
,   ,  , locals    
,          
  CATCH.

9.4   __________________________________________
        

9.4.1   ______________________
         

9.4.1.1   ______________________________
            

- ,    9.6.1.0875 CATCH  9.6.1.2275 THROW
  (9.3.1  THROW, 9.3.5     ).

9.4.1.2   _______________________
           

-   .

9.4.1.3   _____________________________
            

-   .

9.4.2   ________________________
         

-   .

9.5   _________________________
        

9.5.1   _________________
        ANS Forth  

 "   "     
   ,      
.

 "      "   
     ,    
   .

 "    "     
   ,      
     .

9.5.2   ___________________
        ANS Forth  

 "   "      
 ,  ,      
.

                                                                             86


 "      "   
    ,  ,   
     .

 "    "     
  ,  ,    
        .

9.6   _______
      

9.6.1   ________________
         

9.6.1.0875   CATCH                                                    EXCEPTION
            ( i*x xt -- j*x 0 | i*x n )
                 ,   
               xt (  EXECUTE)  
            ,          
            CATCH,  THROW     xt.

              xt   ( ,  
               CATCH    THROW) 
                     
            ,         xt 
            EXECUTE. ,     THROW.

9.6.1.2275   THROW                                                    EXCEPTION
            ( k*x n -- k*x | i*x n )
                n ,    
                ,     
                .   
                   
            CATCH     ,   
             ,        , 
                (i -    ,   i 
                 CATCH),  n  
              ,        
            CATCH,     .

               -        
              ,  :

             n - - (-1),   6.1.0670 ABORT ( 
            ABORT    ),   .

             n - -,   6.1.0680 ABORT" ( 
            ABORT"    ),   ccc   
            ABORT"   THROW.

            ,    -- , 
                   THROW n. 
                 6.1.0670 ABORT 
            ( ABORT    ).

                                                                             87


9.6.2   __________________________
          

9.6.2.0670   ABORT                                                EXCEPTION EXT
              6.1.0670 ABORT,  :
            ( i*x -- ) ( R: j*x -- )
               -1 THROW.

        .: 6.1.0670 ABORT.

9.6.2.0680   ABORT"                   "abort-quote"               EXCEPTION EXT
              6.1.0680 ABORT"  :
        :       .

        : ( "ccc<quote>" -- )
             ccc,  " ( ).   
            -     .

        -: ( i*x x1 --  | i*x ) ( R: j*x --  | j*x )
             x1  .    x1 -  ,  
             -2 THROW,  ccc,     
               .

        .: 3.4.1  , 6.1.0680 ABORT".

                                                                             88


10.   ___________________________________
         

10.1   ________
       

10.2   ________________________________
          

.

10.3   _________________________________
         

10.3.1   _______________
          

,        10.6.2.1305 EKEY 
   .

.: 3.1.2  .

    __________________________________________
     10.1 -    

                               
    -----------------------------------------------------------------
    FACILITY           flag  no      
    FACILITY-EXT       flag  no      
                                  
    -----------------------------------------------------------------

10.4   __________________________________________
         

10.4.1   ______________________
          

10.4.1.1   ______________________________
             

-    (10.6.2.1305 EKEY);

-    ;

-     10.6.2.1905 MS.

10.4.1.2   _______________________
            

- 10.6.1.0742 AT-XY        
   .

10.4.1.3   _____________________________
             

-   .

                                                                             89


10.4.2   ________________________
           

10.4.2.1   ________________________
             

-        10.6.2.1305 EKEY.

10.4.2.2   _______________________________
             

-   .

10.5   _________________________
         

10.5.1   _________________
         ANS Forth 

 "   "      
  ,      .

 "      "   
     ,    
   .

 "    "     
   ,     
      .

10.5.2   ___________________
         ANS Forth  

 "   "      
 ,  ,     
 .

 "      "   
    ,  ,   
     .

 "    "     
  ,  ,    
        .

10.6   _______
       

10.6.1   _______________
          

10.6.1.0742   AT-XY                       "at-x-y"                     FACILITY
            ( u1 u2 -- )
             --  ,   
                 u1,  u2 
              ,     - 
                .   
            ,        
                 .

                                                                             90


10.6.1.1755   KEY?                      "key-question"                 FACILITY
            ( -- flag )
              ,  true. ,  false. 
                    
             ,      
            .       KEY.

              KEY?   true,   
            KEY?   KEY  EKEY   true,   
             .

10.6.1.2005   PAGE                                                     FACILITY
            ( -- )
                 .   
               .  , PAGE    
                  .  , 
            PAGE   .

10.6.2   _________________________
           

10.6.2.1305   EKEY                            "e-key"              FACILITY EXT
            ( -- u )
                u.    
             .

        .: 10.6.1.1755 KEY?, 6.1.1750 KEY.

10.6.2.1306   EKEY>CHAR                    "e-key-to-char"         FACILITY EXT
            ( u -- u false | char true )
               u      
             ,     true.  
             u  false.

10.6.2.1307   EKEY?                        "e-key-question"        FACILITY EXT
            ( -- flag )
               ,  true.   
            false.       EKEY.

              EKEY?   true,   
            EKEY?   KEY, KEY?  EKEY   true, 
                 .

10.6.2.1325   EMIT?                        "emit-question"         FACILITY EXT
            ( -- flag )
            flag - true,       
               EMIT   EMIT?    
             .     , 
            flag - true (? false).

10.6.2.1905   MS                                                   FACILITY EXT
            ( u -- )
            ,   , u .

                                                                             91


        :        
                   
                 ,    
              .

10.6.2.2292   TIME&DATE                    "time-and-date"         FACILITY EXT
            ( -- +n1 +n2 +n3 +n4 +n5 +n6 )
                . +n1 -  {0...59}, +n2  
            {0...59}, +n3 -  {0...23}, +n4 -  {1...31} +n5 -  
            {1...12},  +n6 -  (, 1991).

                                                                             92


11.   __________________________________________
           

11.1   ________
       

         ""  
 :

-     ;
-      ;
-       ;
-      - (fileid);
-    (, , )  
   ;
-        ;
-       ,  
      .

11.2   ______________________
        

   :     ,  " - 
"  "  ".

 :     .

 : ,   ,   
 .

11.3   _________________________________
         

11.3.1   ___________
          

  11.1   3.1.

    __________________________
     11.1 -  

                                        
    ----------------------------------------------------------------
    ior                 -        1 
    fam                            1 
    fileid                        1 
    ----------------------------------------------------------------

11.3.1.1   ____________________
            

  -  --  -, 
        . 
    ,    
  .

11.3.1.2   _______________________
            -

 - -   -,    
-.   ,   -  
;      -  .  
      .

                                                                             93


 -      ,   
  -    THROW;  
   ior.

11.3.1.3   ______________________
              

    -   -  .

11.3.1.4   ___________
            

 ,   .     --
  .    -  .

11.3.2   ______________
           

      ,      
.

    ,   . :

-           
   .   ,  
        ;
- ,    UPDATE,     ,  
        .

11.3.3   ___________________
           

  11.2   3.5.

.: 3.2.6   .

    __________________________________________
     11.2 -    

                               
    ---------------------------------------------------------------------------
    FILE               flag  no      
    FILE-EXT           flag  no       
    ---------------------------------------------------------------------------

11.3.4   ________________
          

           
.    -  , BLK   
, SOURCE-ID   fileid   ,    
     .

  INCLUDED, INCLUDE-FILE, LOAD  EVALUATE,    
          .

,         
,    .

.: 3.3.3.5  , 9.    .

                                                                             94


11.3.5   ________________________
           

       ,   
11.6.1.2165 S".

.: 3.3.3.6   .

11.3.6   _____________________
          

     ,   
,         .

  ,   , 128 . ,  
    128 ,    .

        , 
  >IN.      , 
  SAVE-INPUT  RESTORE-INPUT.

.: 3.4.1  .

11.4   __________________________________________
         

11.4.1   ______________________
          

11.4.1.1   ______________________________
             

-    ,   11.6.1.0765 BIN,
  11.6.1.1010 CREATE-FILE, 11.6.1.1970 OPEN-FILE, 11.6.1.2054 R/O,
  11.6.1.2056 R/W, and 11.6.1.2425 W/O;
-  ;
-     (11.6.1.2090 READ-LINE);
-    (11.3.1.4  );
- ,  11.6.2.1524 FILE-STATUS;
-      (11.6.1.1717 INCLUDE-FILE,
  11.6.1.1718 INCLUDED);
- ior    (11.3.1.2  -);
-      (11.3.4  );
-     (11.3.6  );
-       (11.3.2   );
-     (11.6.1.2165 S");
-   ,   11.6.1.2165 S".

11.4.1.2   _______________________
            

-       (11.6.1.2142 REPOSITION-FILE);
-         (11.6.1.2080 READ-FILE,
  11.6.1.2090 READ-LINE);
- fileid  (11.6.1.1717 INCLUDE-FILE);
-  -    fileid (11.6.1.1717 INCLUDE-FILE,
  11.6.1.1718 INCLUDED);

                                                                             95


-       (11.6.1.1718 INCLUDED);
-      (11.3.2   );
-  11.6.1.2218 SOURCE-ID,  7.6.1.0790 BLK -  .

11.4.1.3   _____________________________
             

-   .

11.4.2   ________________________
          

11.4.2.1   ________________________
             

-    128  (11.3.6  );
-         (11.3.4
   ).

11.4.2.2   _______________________________
             

-   .

11.5   _________________________
         

11.5.1   _________________
         ANS Forth  

 "     "     
   ,      
  .

 "        "  
      ,   
      .

 "      "   
     ,    
           .

11.5.2   ___________________
         ANS Forth  

 "     "     
  ,  ,    
    .

 "        "   
    ,  ,   
       .

 "      "    
   ,  ,   
             
.

11.6   _______
       

11.6.1   _____________________
            

                                                                             96


11.6.1.0080   (                             "paren"                        FILE
            ( "ccc<paren>" -- )
              6.1.0080 ( :

                 ,    
              ,     ,  
                  ,  >IN,  
              ,     
                   .

11.6.1.0765   BIN                                                          FILE
            ( fam1 -- fam2 )
                   fam1, 
              "binary",    - 
                ,    fam2.

        .: 11.6.1.2054 R/O, 11.6.1.2056 R/W, 11.6.1.2425 W/O.

11.6.1.0900   CLOSE-FILE                                                   FILE
            ( fileid -- ior )
             ,  fileid. ior -  
               -.

11.6.1.1010   CREATE-FILE                                                  FILE
            ( c-addr u fam -- fileid ior )
                ,  c-addr  
            u,         fam.   
            fam   .       
              ,     .

                  , ior , fileid  
            ,      .

            , ior -   -    
            fileid .

11.6.1.1190   DELETE-FILE                                                  FILE
            ( c-addr u -- ior )
             ,   ,  c-addr 
            u. ior -     -.

11.6.1.1520   FILE-POSITION                                                FILE
            ( fileid -- ud ior )
            ud -      fileid. ior 
               -  . ud 
               ior  .

11.6.1.1522   FILE-SIZE                                                    FILE
            ( fileid -- ud ior )

                                                                             97


            ud -    ,  fileid. ior 
               -  . 
                ,  FILE-POSITION. 
            ud  ,  ior .

11.6.1.1717   INCLUDE-FILE                                                 FILE
            ( i*x fileid -- j*x )
             fileid  .     
            ,    SOURCE-ID.  fileid  
            SOURCE-ID.    fileid  . 
               BLK.      
             .

               :    ,   
               ,  >IN,  .

                 ,   
               . 

               ,     
                  .

              ,  fileid ,   
             -  fileid,    -
                fileid.   
             ,  (  )   
               -  .

        .: 11.3.4  .

11.6.1.1718   INCLUDED                                                     FILE
            ( i*x c-addr u -- j*x )
             c-addr u  .     
            ,    SOURCE-ID.   
             c-addr u,   fileid  SOURCE-ID, 
                .    BLK.  
                 .

               :    ,   
               ,  >IN,  .

                 ,   
               .

               ,     
                  .

              ,      
             ,   -    
            ,    -    
            .    ,  
            (  )     - 
             .

        .: 11.6.1.1717 INCLUDE-FILE.

                                                                             98


11.6.1.1970   OPEN-FILE                                                    FILE
            ( c-addr u fam -- fileid ior )
                  c-addr u,  
               ,  fam.   fam 
             .

               , ior , fam -  ,  
               .

            , ior -   -    
            fam .

11.6.1.2054   R/O                               "r-o"                      FILE
            ( -- fam )
            fam -         
             "  ".

        .: 11.6.1.1010 CREATE-FILE, 11.6.1.1970 OPEN-FILE.

11.6.1.2056   R/W                               "r-w"                      FILE
            ( -- fam )
            fam -         
             " - ".

        .: 11.6.1.1010 CREATE-FILE, 11.6.1.1970 OPEN-FILE.

11.6.1.2080   READ-FILE                                                    FILE
            ( c-addr u1 fileid -- u2 ior )
             u1    c-addr    
            ,  fileid.

             u1    , ior ,  u2  
            u1.

               ,   u1 , ior  
             u2 -    .

                ,  FILE-
            POSITION  ,  FILE-SIZE   
             fileid - ior ,  u2 .

              , ior -   - 
             ,  u2 -      c-
            addr  .

              ,    
             ,  FILE-POSITION   , 
             FILE-SIZE  ,  fileid,  
                    .

                                                                             99


              , FILE-POSITION    
                .

11.6.1.2090   READ-LINE                                                    FILE
            ( c-addr u1 fileid -- u2 flag ior )
                ,  fileid    
             c-addr.   u1 .    
                    
              ,      u2.  , 
             c-addr  ,   ,  u1+2 
            .

              , flag - true,  ior .   
                   u1,  
              u2- ,     
            (0 <= u2 <= u1).  u1 = u2,     
               .

                ,  FILE-
            POSITION  ,  FILE-SIZE  , 
             fileid, flag - false, ior ,  u2 
            .  ior ,     
            ,  ior -     -
            .

              ,    
             ,  FILE-POSITION   , 
             FILE-SIZE  ,  fileid,  
                    .

              , FILE-POSITION    
                .

11.6.1.2142   REPOSITION-FILE                                              FILE
            ( ud fileid -- ior )
              ,  fileid  ud. 
            ior -   -  . 
                   
             .

              , FILE-POSITION   ud.

11.6.1.2147   RESIZE-FILE                                                  FILE
            ( ud fileid -- ior )
              ,  fileid  ud. ior - 
              -  .

                   ,  
                     .

              , FILE-SIZE   ud  FILE-
            POSITION   .

                                                                            100


        .: 11.6.1.2080 READ-FILE, 11.6.1.2090 READ-LINE.

11.6.1.2165   S"                             "s-quote"                     FILE
              6.1.2165 S" :

        : ( "ccc<quote>" -- c-addr u )
             ccc,  " ( ).  
              c-addr u   . 
                --,  
                 80 .   S" 
               .   ,   
               .

        : ( "ccc<quote>" -- )
             ccc,  " ( ).   
            -     .

        -: ( -- c-addr u )
             c-addr  u,   ,   
             ccc.

        .: 3.4.1  , 6.2.0855 C", 6.1.2165 S", 11.3.5 
              .

11.6.1.2218   SOURCE-ID                      "source-i-d"                  FILE
            ( -- 0 | -1 | fileid )
             6.2.2218 SOURCE-ID,      
             :

            SOURCE-ID    
            --------------------------------------------
            fileid       "fileid"
            -1          ( EVALUATE)
             0            
            --------------------------------------------

              ,  SOURCE-ID , 
             BLK   .

11.6.1.2425   W/O                              "w-o"                       FILE
            ( -- fam )
            fam -         
             " ".

        .: 11.6.1.1010 CREATE-FILE, 11.6.1.1970 OPEN-FILE.

11.6.1.2480   WRITE-FILE                                                   FILE
            ( c-addr u fileid -- ior )
             u   c-addr  ,  fileid 
                . ior -    
             -. 

                                                                            101


              , FILE-POSITION    
                  ,  FILE-SIZE 
                   FILE-
            POSITION.

        .: 11.6.1.2080 READ-FILE, 11.6.1.2090 READ-LINE.

11.6.1.2485   WRITE-LINE                                                   FILE
            ( c-addr u fileid -- ior )
             u   c-addr,  --
                 ,  fileid 
                . ior -    
             -.

              , FILE-POSITION    
                  ,  FILE-SIZE 
                   FILE-
            POSITION.

        .: 11.6.1.2080 READ-FILE, 11.6.1.2090 READ-LINE.

11.6.2   _______________________________
             

11.6.2.1524   FILE-STATUS                                              FILE EXT
            (c-addr u -- x ior )
              ,    
            c-addr u.    , ior ;  ior -  
             -  . x  
                .

11.6.2.1560   FLUSH-FILE                                               FILE EXT
            ( fileid -- ior )
                   
             ,   ,   
            fileid,          
              .   , ior . , 
             -   -  .

11.6.2.2125   REFILL                                                   FILE EXT
            ( -- flag )
               6.2.2125 REFILL :

               -  ,    
                .  ,   
              ,  >IN,   true.  
             false.

        .: 6.2.2125 REFILL, 7.6.2.2125 REFILL.

11.6.2.2130   RENAME-FILE                                              FILE EXT
            ( c-addr1 u1 c-addr2 u2 -- ior )

                                                                            102


             ,    c-addr1 u1  
                c-addr2 u2. ior -   -
              .

                                                                            103


12.   _____________________________________________
           

12.1   ________
       

12.2   ________________________________
          

12.2.1   ____________________
          

--- :   ,    
      .

---- :   ,   
    64  IEEE       .

---- :   ,   
    32  IEEE       
.

    IEEE:        
,    ANSI/IEEE 754-1985.

12.2.2   _______
         

12.2.2.1   ________________
            

       
    :

-        ,  
    (    , , <>),
   :=     ;
-      ( , , E)
        (, <>);
-  * ,      
     (, <digit>*);
-    [  ]  (, [<>]);
-          
   ({ + | - }).

12.2.2.2   ________________
             

         -    
  :

            ( F:  before -- after )

12.3   _________________________________
         

12.3.1   ___________
          

  12.1   3.1.

                                                                            104


    __________________________
     12.1 -  

                                        
    -------------------------------------------------------------------------
    r                            
    f-addr             --            1 
                            
    sf-addr            ---  1 
                          
    df-addr            ---    1 
                               
    -------------------------------------------------------------------------

12.3.1.1   ______
           

 ---  -   
   .      
  ---    --
- .

 ----  -  
    .   64- 
IEEE        ----
    ---- 
.

 ----  -  
    .   32- 
IEEE        ---
-    ----
 .

12.3.1.2   ________________________
              

          
     ,   .

        -  
.

12.3.2   ___________________________
          c  

"  "       
      .    
     ,    
,     .

"   "    
           
 .

12.3.3   _______________________
            

 ,   ,     
   .

     -  .     
           . 
  ,         
,   "FLOATING-STACK"  ENVIRONMENT?.

                                                                            105


      ,    6 .

,       ,    
6 ,    .

12.3.4   ___________________
           

  12.2   3.5.

.: 3.2.6   .

    __________________________________________
     12.2 -    

                               
    ---------------------------------------------------------------------------
    FLOATING           flag  no        
    FLOATING-EXT       flag  no        
                                  
    FLOATING-STACK     n     yes   n = ,    
                                     ; 
                                   n    
                                     
    MAX-FLOAT          r     yes      
                                     
    ---------------------------------------------------------------------------

12.3.5   ___________________
          

      CREATE     
      ,     
(   :   , ---, 
 ---)         
. 

.: 3.3.3.1  , 12.3.1.1 .

12.3.6   __________
         

       ,   
  FVARIABLE.         
    , ()  ALLOT.

.: 3.3.3.3 .

12.3.7   ______________________________________________________
             

        ,    
DECIMAL,         
       :

          := <><>
            <> := [<>]<>[.<0>]
            <> := E[<>]<0>
            <> := { + | - }
            <> := <><0>

                                                                            106


            <0> := <>*
            <> := { 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }

 -          
:

        1E   1.E   1.E0   +1.23E-1   -1.23E+1

.: 3.4.1.3     , 
12.6.1.0558  >FLOAT.

12.4   __________________________________________
         

12.4.1   ______________________
          

12.4.1.1   ______________________________
             

-        (12.3.1  ,
  12.6.1.2143 REPRESENT);
-  12.6.1.2143 REPRESENT,       
  ;
-        (12.3.1.2   
  );
-      (12.3.3    );
-      (12.3.3    ).

12.4.1.2   _______________________
            

- DF@  DF!   ,  -     
  ---;
- F@  F!   ,  -     
  ;
-       (,  12.6.1.1430 F/);
- SF@  SF!   ,  -    
  ---;
- BASE -   (12.6.1.2143 REPRESENT, 12.6.2.1427 F., 12.6.2.1513 FE.,
  12.6.2.1613 FS.);
-     (12.6.2.1489 FATAN2);
-     12.6.2.1625 FTAN;
- d            
  12.6.1.1130 D>F;
-    (12.6.1.1430 F/);
-      (12.6.2.1203 DF!, 
  12.6.2.1204 DF@, 12.6.2.2202 SF!, 12.6.2.2203 SF@);
-        (12.6.2.1477 FACOSH);
-         - (12.6.2.1554 FLNP1);
-          (12.6.2.1553 FLN,
  12.6.2.1557 FLOG);
-        (12.6.2.1487 FASINH,
  12.6.2.1618 FSQRT);
-         (12.6.2.1476 FACOS,
  12.6.2.1486 FASIN, 12.6.2.1491 FATANH);
-            d 
  12.6.1.1470 F>D;
-        (12.6.2.1427 F.,
  12.6.2.1513 FE., 12.6.2.1613 FS.).

12.4.1.3   _____________________________
             

-   .

                                                                            107


12.4.2   ________________________
          

12.4.2.1   ________________________
             

-        6  
  (12.3.3    ).

12.4.2.2   _______________________________
              

-   .

12.5.1    _________________ 
          ANS Forth 

 "     "     
   ,       
 .

 "        "  
      ,   
      .

 "      "   
     ,    
           .

12.5.2   ___________________
         ANS Forth 

 "     "     
  ,  ,    
    .

 "        "  
     ,  ,  
        .

 "      "   
    ,  ,   
            
 .

12.6   _______
       

12.6.1   ________________________
            

12.6.1.0558   >FLOAT                     "to-float"                    FLOATING
            ( c-addr u -- true | false ) ( F: -- r |  )
         ( c-addr u -- r true | false )
                 c-addr  u  
                .   
                    , 
               r  true.     
                ,   false.

                                                                            108


                    
             .

               := <>[<>]
                <> := [<>]{<>[.<0>] | .<> }
                <> := <><0>
                <> := {<e-> | <->}
                <e-> := <e->[<->]
                <-> := { + | - }
                <e->:= { D | d | E | e }

12.6.1.1130   D>F                         "d-to-f"                     FLOATING
            ( d -- ) ( F: -- r ) or ( d -- r )
            r -      d.  
               d       
               .

12.6.1.1400   F!                          "f-store"                    FLOATING
            ( f-addr -- ) ( F: r -- ) or ( r f-addr -- )
             r  f-addr.

12.6.1.1410   F*                          "f-star"                     FLOATING
            ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 )
             r1  r2,  r3.

12.6.1.1420   F+                          "f-plus"                     FLOATING
            ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 )
             r1  r2,   r3.

12.6.1.1425   F-                          "f-minus"                    FLOATING
            ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 )
             r2  r1,  r3.

12.6.1.1430   F/                          "f-slash"                    FLOATING
            ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 )
             r1  r2,   r3.   
              r2 ,      
               .

12.6.1.1440   F0<                     "f-zero-less-than"               FLOATING
            ( -- flag ) ( F: r -- ) or ( r -- flag )
            flag - true,     r -   .

12.6.1.1450   F0=                       "f-zero-equals"                FLOATING
            ( -- flag ) ( F: r -- ) or ( r -- flag )
            flag - true,     r -  .

12.6.1.1460   F<                         "f-less-than"                 FLOATING
            ( -- flag ) ( F: r1 r2 -- ) or ( r1 r2 -- flag )
            flag - true,     r1 -   r2.

                                                                            109


12.6.1.1470   F>D                          "f-to-d"                    FLOATING
            ( -- d ) ( F: r -- ) or ( r -- d )
            d -     -     
            r.   r .   , 
               r         
              -.

12.6.1.1472   F@                      "f-fetch"                        FLOATING
            ( f-addr -- ) ( F: -- r )  or  ( f-addr -- r )
            r - ,   f-addr.

12.6.1.1479   FALIGN                  "f-align"                        FLOATING
            ( -- )
                -     , 
                 .

12.6.1.1483   FALIGNED               "f-aligned"                       FLOATING
            ( addr -- f-addr )
            f-addr -  ---    
             addr.

12.6.1.1492   FCONSTANT              "f-constant"                      FLOATING
            ( "<spaces>name" -- ) ( F: r -- ) or ( r "<spaces>name" -- )
               .  name,  
            .    name    
             .

            name   "f-constant".

        name : ( -- ) ( F: -- r ) or ( -- r )
             r     .

        .: 3.4.1  .

12.6.1.1497   FDEPTH                  "f-depth"                        FLOATING
            ( -- +n )
            +n -  ,       
              .        
             , +n       
             ,    .

12.6.1.1500   FDROP                    "f-drop"                        FLOATING
            ( F: r -- ) or ( r -- )
             r     .

12.6.1.1510   FDUP                     "f-dupe"                        FLOATING
            ( F: r -- r r ) or ( r -- r r )
             r.

12.6.1.1552   FLITERAL                "f-literal"                      FLOATING
        :       .

                                                                            110


        : ( F: r -- ) or ( r -- )
              -,     
            .

        -: ( F: -- r ) or ( -- r )
             r     .

12.6.1.1555   FLOAT+                  "float-plus"                     FLOATING
            ( f-addr1 -- f-addr2 )
                      
            f-addr1,  f-addr2.

12.6.1.1556   FLOATS                                                   FLOATING
            ( n1 -- n2 )
            n2 -     n1    .

12.6.1.1558   FLOOR                                                    FLOATING
            ( F: r1 -- r2 ) or ( r1 -- r2 )
             r1   ,   " 
              ",  r2.

12.6.1.1562   FMAX                      "f-max"                        FLOATING
            ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 )
            r3   r1  r2.

12.6.1.1565   FMIN                      "f-min"                        FLOATING
            ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 )
            r3   r1  r2.

12.6.1.1567   FNEGATE                  "f-negate"                      FLOATING
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -  r1.

12.6.1.1600   FOVER                     "f-over"                       FLOATING
            ( F: r1 r2 -- r1 r2 r1 ) or ( r1 r2 -- r1 r2 r1 )
              r1      .

12.6.1.1610   FROT                      "f-rote"                       FLOATING
            ( F: r1 r2 r3 -- r2 r3 r1 ) or ( r1 r2 r3 -- r2 r3 r1 )
                   .

12.6.1.1612   FROUND                    "f-round"                      FLOATING
            ( F: r1 -- r2 ) or ( r1 -- r2 )
             r1   ,   "  
            ",  r2.

        .: 12.3.2  c  .

12.6.1.1620   FSWAP                     "f-swap"                       FLOATING
            ( F: r1 r2 -- r2 r1 ) or ( r1 r2 -- r2 r1 )
                   .

                                                                            111


12.6.1.1630   FVARIABLE                "f-variable"                    FLOATING
            ( "<spaces>name" -- )
               .  name,  
            .    name    
             .  1 FLOATS    
              --- .

            name   "f-variable".

        name : ( --f-addr )
            f-addr -   ,  FVARIABLE  
              name.     
              .

        .: 3.4.1  .

12.6.1.2143   REPRESENT                                                FLOATING
            ( c-addr u -- n flag1 flag2 )  (F: r -- )
         ( r c-addr u -- n flag1 flag2 )
             c-addr,  -   
                 r.  n    
             ,   flag1  " "  
            flag2.      u    
                   
                 ,     
                .    u   
               "  "; n 
            ,   ,   
              .  flag2 - true  r   
                  .  
            flag1 - true  r - .

              ,   BASE -  
             .

             flag2 - false, n  flag1 -  ,  
             c-addr.   ,   c-addr  
               .

        .: 3.2.1.2  , 6.1.0750 BASE, 12.3.2  c 
             .

12.6.2   __________________________________
             

12.6.2.1203   DF!                       "d-f-store"                FLOATING EXT
            ( df-addr -- ) ( F: r -- ) or ( r df-addr -- )
                 r  df-addr  64- IEEE 
               .     
            r   ,  IEEE    ,  
              ,   "  ". 
              ,   r  
            ,    IEEE    .

                                                                            112


        .: 12.3.1.1 , 12.3.2  c  .

12.6.2.1204   DF@                       "d-f-fetch"                FLOATING EXT
            ( df-addr -- ) ( F: -- r ) or ( df-addr -- r )
             64- IEEE    ,   df-
            addr       r   . 
             IEEE       ,  
             ,      
            ,   "  ". 
                 IEEE 
                 ,   
              .

        .: 12.3.1.1 , 12.3.2  c  .

12.6.2.1205   DFALIGN                    "d-f-align"               FLOATING EXT
            ( -- )
                -    ---
            ,      
            .

        .: 12.3.1.1 .

12.6.2.1207   DFALIGNED                  "d-f-aligned"             FLOATING EXT
            ( addr -- df-addr )
            df-addr -  ----  
               addr.

        .: 12.3.1.1 .

12.6.2.1208   DFLOAT+                    "d-float-plus"            FLOATING EXT
            ( df-addr1 -- df-addr2 )
                 64- IEEE    
              df-addr1,  df-addr2.

        .: 12.3.1.1 .

12.6.2.1209   DFLOATS                      "d-floats"              FLOATING EXT
            ( n1 -- n2 )
            n2 -     n1 64- IEEE    
            .

12.6.2.1415   F**                         "f-star-star"            FLOATING EXT
            ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 )
             r1   r2,   r3.

12.6.2.1427   F.                            "f-dot"                FLOATING EXT
            ( -- ) ( F: r -- ) or ( r -- )
                      
            ,     :

            [-] <>.<0>

                                                                            113


              ,   BASE -  
            ()       
                  .

        .: 12. 12.6.1.0558 >FLOAT.

12.6.2.1474   FABS                           "f-abs"               FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -   r1.

12.6.2.1476   FACOS                         "f-a-cos"              FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -    ,   - r1.  
             ,  |r1|  .

12.6.2.1477   FACOSH                       "f-a-cosh"              FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -    ,    - r1. 
              ,  r1 -  .

12.6.2.1484   FALOG                         "f-a-log"              FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
                r1,  r2.

12.6.2.1486   FASIN                         "f-a-sine"             FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -    ,   - r1.  
             ,  |r1|  .

12.6.2.1487   FASINH                        "f-a-cinch"            FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -    ,    - r1. 
              ,  r1 -  .

12.6.2.1488   FATAN                           "f-a-tan"            FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -    ,   - r1.

12.6.2.1489   FATAN2                         "f-a-tan-two"         FLOATING EXT
            ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 )
            r3 -   ,   - r1/r2.   
            ,  r1  r2 .

12.6.2.1491   FATANH                         "f-a-tan-h"           FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -    ,    - r1. 
              ,  r1 -    -1E0 
             1E0.

                                                                            114


12.6.2.1493   FCOS                             "f-cos"             FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -   r1  .

12.6.2.1494   FCOSH                            "f-cosh"            FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -   r1.

12.6.2.1513   FE.                              "f-e-dot"           FLOATING EXT
            ( -- ) ( F: r -- ) or ( r -- )
                      
               ,      
            1.0    1000.0    -  .

              ,   BASE -  
            ()       
                  .

        .: 6.1.0750 BASE, 12.3.2  c  , 12.6.1.2143 
            REPRESENT.

12.6.2.1515   FEXP                     "f-e-x-p"                   FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
             e   r1,  r2.

12.6.2.1516   FEXPM1                 "f-e-x-p-m-one"               FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
             e   r1,   ,  r2.

12.6.2.1553   FLN                       "f-l-n"                    FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -   r1.    
             r1 -    .

12.6.2.1554   FLNP1                  "f-l-n-p-one"                 FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -    r1  .  
               r1 -     .

12.6.2.1557   FLOG                     "f-log"                     FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -   r1.    
             r1    .

12.6.2.1613   FS.                      "f-s-dot"                   FLOATING EXT
            ( -- ) ( F: r -- ) or ( r -- )
            ,   ,       
               :

                                                                            115


            <><>
            :
            <>   := [-]<>.<0>
            <> := E[-]<>

              ,   BASE -  
            ()       
                  .

        .: 6.1.0750 BASE, 12.3.2  c  , 12.6.1.2143 
            REPRESENT.

12.6.2.1614   FSIN                      "f-sine"                   FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -   r1  .

12.6.2.1616   FSINCOS                  "f-sine-cos"                FLOATING EXT
            ( F: r1 -- r2 r3 ) or ( r1 -- r2 r3 )
            r2 -   r1  . r3 -   r1  .

12.6.2.1617   FSINH                     "f-cinch"                  FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -   r1.

12.6.2.1618   FSQRT                   "f-square-root"              FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -   r1.   ,  
            r1 -  .

12.6.2.1625   FTAN                       "f-tan"                   FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -   r1  .    
             cos(r1) .

12.6.2.1626   FTANH                     "f-tan-h"                  FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 -   r1.

12.6.2.1640   F~                       "f-proximate"               FLOATING EXT
            ( -- flag ) ( F: r1 r2 r3 -- ) or ( r1 r2 r3 -- flag )
             r3 , flag - true    (r1 
             r2)   r3.

             r3 , flag - true  -- 
             r1  r2   (   
                  ).

                                                                            116


             r3 - , flag - true    (r1 
             r2)     r3    
              r1  r2.

12.6.2.2035   PRECISION                                            FLOATING EXT
            ( -- u )
              u  ,      
            F., FE.,  FS..

12.6.2.2200   SET-PRECISION                                        FLOATING EXT
            ( u -- )
              u  ,     
             F., FE.,  FS..

12.6.2.2202   SF!                     "s-f-store"                  FLOATING EXT
            ( sf-addr -- ) ( F: r -- ) or ( r sf-addr -- )
                 r  32- IEEE   
               sf-addr.     
            r     IEEE    ,  
                 "  
            ".      r 
             ,      IEEE   
            .

        .: 12.3.1.1 , 12.3.2  c  .

12.6.2.2203   SF@                     "s-f-fetch"                  FLOATING EXT
            ( sf-addr -- ) ( F: -- r ) or ( sf-addr -- r )
             32- IEEE    ,   sf-
            addr       r   . 
             IEEE         
             ,      
                "  ". 
                 IEEE 
                 ,   
               .

        .: 12.3.1.1 , 12.3.2  c  .

12.6.2.2204   SFALIGN                 "s-f-align"                  FLOATING EXT
            ( -- )
                -    --
            -,      
            .

        .: 12.3.1.1 .

12.6.2.2206   SFALIGNED               "s-f-aligned"                FLOATING EXT
            ( addr -- sf-addr )
            sf-addr -  ----  
               addr.

        .: 12.3.1.1 .

                                                                            117


12.6.2.2207   SFLOAT+                 "s-float-plus"               FLOATING EXT
            ( sf-addr1 -- sf-addr2 )
                 32- IEEE   
               sf-addr1,  sf-addr2.

        .: 12.3.1.1 .

12.6.2.2208   SFLOATS                  "s-floats"                  FLOATING EXT
            ( n1 -- n2 )
            n2 -     n1 32- IEEE    
            .

        .: 12.3.1.1 .

                                                                            118


13.   ________________________________
         Locals

13.1   ________
       

.:  A.13 Locals  .

13.2   ________________________________
          

.

13.3   _________________________________
         

13.3.1   ______
         Locals

local -  ,       , 
         ,   
         
.

13.3.2   ___________________
           

  13.1   3.5.

.: 3.2.6   .

    __________________________________________
     13.1 -    

                               
    ---------------------------------------------------------------------------
    #LOCALS            n     yes    local  
                                  
    LOCALS             flag  no   locals   
    LOCALS-EXT         flag  no    locals   
    ---------------------------------------------------------------------------

13.3.3   ________________
          locals

    locals,      
    (LOCAL)     
.

     : (), :NONAME,  DOES>, 
      local . 
  ,    .   
,   " local" .   
 , ,   ,    
.

13.3.3.1   ____________________
            

     local-  
     :

                                                                            119


a)         ,  
     (LOCAL) ,        local.  
             
    ; (  ), ;CODE,  DOES>.      
             ,  
            .  , 
       Search-Order ,  local  
               
    ,      Search-Order    locals' 
        . Local   
       .
b)       (LOCAL),   
       ,   
       :
    1)    ,    local.  
           ,     
              local.
    2)   ,      . 
             local,      
           local  ,   
            ,   .
               
    ,   .       . 
     locals       
        .
c)  ,        
    , : ; (  ), ;CODE, DOES>  EXIT, 
         locals,    
    ,    . ABORT    
      local,  CATCH / THROW ( )   
        ,   .
d)    locals        
    DOES>    ,   DOES>  
      .

,    Locals     
   locals  .

13.3.3.2   ______________________
            

       (LOCAL),  
    local   :

a)           
        (LOCAL),   
     local        
     " local" ;
b)          (LOCAL) 
    ,        locals,   
          ;
c)  Locals         , 
           ;
d)   ,  locals   ,    
       .    , locals   
    ,         ;
e)  ,    ,  ' (tick), ['], 
     FIND,     local ;
f)  ,      locals   
    ,    ;

                                                                            120


g)  Locals         
    ,  do-loops;
h)   local     POSTPONE  [COMPILE].

.: 3.4   Forth.

13.4   __________________________________________
         

13.4.1   ______________________
          

13.4.1.1   ______________________________
             

-   locals   (13.3.3  locals,
  13.6.2.1795 LOCALS|).

13.4.1.2   _______________________
            

-   local,    
  (13.6.1.0086 (LOCAL));
- ,     VALUE  LOCAL (13.6.1.2295 TO).

13.4.1.3   _____________________________
             

-   .

13.4.2   ________________________
           

13.4.2.1   ________________________
             

-     locals    
  (13.3.3  locals).

13.4.2.2   _______________________________
             

-   .

13.5   _________________________
         

13.5.1   _________________
         ANS Forth  

 " Locals  "      
  ,    Locals  .

 "    Locals  "   
     ,    
 Locals  .

 "  Locals  "     
   ,    Locals  
   Locals  .

13.5.2   ___________________
         ANS Forth  

                                                                            121


 " Locals  "      
 ,  ,    Locals  
.

 "    Locals  "    
   ,  ,   
   Locals  .

 "  Locals  "     
  ,  ,    
 Locals     Locals  .

13.6   _______
       

13.6.1   ____________
         Locals 

13.6.1.0086   (LOCAL)              "paren-local-paren"                    LOCAL
        :       .

        : ( c-addr u -- )
                , (LOCAL)   
            ,      .  u , 
               local,     
               c-addr u.  u , 
             - " local"  c-addr    .

              (LOCAL)     - 
               local ,   
             -        
                .
            
        local : ( -- x )
              local, x  .  local  
               13.3.3  locals,      
             TO   local.   
              local    .

        :         
             ,        
               - 
            ,   . ,  locals    
              ,   
                ,   
               13.3.3  locals.

        :         
            ,    locals .   
                  
            .         
             ,      
               locals.   ,   
            (LOCAL)      -
                  13.3.3  locals.

                                                                            122


        :   Locals     6.2.2295 
            TO       .

        .: 3.4   Forth.

13.6.1.2295   TO                                                          LOCAL
              6.2.2295 TO  :

        : ( x "<spaces>name" -- )
              ,   name,  . 
             x  name.   ,  name 
                 VALUE.

        : ( "<spaces>name" -- )
              ,   name,  . 
              -,     
            .   ,  name   
               VALUE  (LOCAL).

        -: ( x -- )
             x  name.

        :   ,  POSTPONE  
            [COMPILE],   TO.

        .: 3.4.1  , 6.2.2295 TO, 6.2.2405 VALUE, 
            13.6.1.0086 (LOCAL).

13.6.2   ______________________
          Locals 

13.6.2.1795   LOCALS|                 "locals-bar"                    LOCAL EXT
        :       .

        : ( "<spaces>name1" "<spaces>name2" 
                                                  ... "<spaces>namen" "|" -- )
                local,   
             ,  name,   13.6.1.0086 (LOCAL). 
             locals,   ,  |.  
             -     .

        -: ( xn ... x2 x1 -- )
                local    
            13.6.1.0086 (LOCAL),        
               ,    .  
            name1  x1,  name2 - x2,  ..  
            ,  local    .  local 
              ,  13.6.1.2295 TO.

                                                                            123


14.   ______________________________________________
          

14.1   ________
       

14.2   ________________________________
          

.

14.3   _________________________________
         

14.3.1   __________________________________
            -

  -  -,    -
.   ,   -  ; 
     -  .

  14.1   3.1.

    __________________________
     14.1 -  

                                        
    ----------------------------------------------------------------
    ior                 -        1 
    ----------------------------------------------------------------

14.3.2   ___________________
           

  14.2   3.5.

.: 3.2.6   .

    __________________________________________
     14.2 -    

                               
    --------------------------------------------------------------------------
    MEMORY-ALLOC       flag  no       
    MEMORY-ALLOC-EXT   flag  no      
                                   
    --------------------------------------------------------------------------

14.3.3   ______________________
          

       ,   
  ALLOCATE  RESIZE       FREE.

.: 3.3.3  .

14.4   __________________________________________
         

14.4.1   ______________________
          

                                                                            124


14.4.1.1   ______________________________
             

-    ior (14.3.1    -,
  14.6.1.0707 ALLOCATE, 14.6.1.1605 FREE, 14.6.1.2145 RESIZE).

14.4.1.2   _______________________
            

-   .

14.4.1.3   _____________________________
             

-   .

14.4.2   ________________________
          

-   .

14.5   _________________________
         

14.5.1   _________________
         ANS Forth 

 "    "     
   ,      
 .

 "       " 
       ,  
      .

 "     "   
     ,    
         .

14.5.2   ___________________
         ANS Forth 

 "    "     
  ,  ,    
   .

 "       "  
     ,  ,  
       .

 "     "   
    ,  ,   
          
 .

14.6   _______
       

14.6.1   __________________________
           

14.6.1.0707   ALLOCATE                                                   MEMORY
            ( u -- a-addr ior )

                                                                            125


             u     . 
                  .  
                .

              , a-addr -    
               ior .

              , a-addr      
            ior -   -  .

        .: 6.1.1650 HERE, 14.6.1.1605 FREE, 14.6.1.2145 RESIZE.

14.6.1.1605   FREE                                                       MEMORY
            ( a-addr -- ior )
                ,  a-addr  
               . a-addr    
             ,       
            ALLOCATE  RESIZE.       
            .

              , ior .   , ior - 
              -  .

        .: 6.1.1650 HERE, 14.6.1.0707 ALLOCATE, 14.6.1.2145 RESIZE.

14.6.1.2145   RESIZE                                                     MEMORY
            ( a-addr1 u -- a-addr2 ior )
                ,   
             a-addr1,   ALLOCATE  RESIZE, 
             u  . u        
              .       
            .

              , a-addr2 -    u 
                 ior . a-addr2 
             ,   ,    a-addr1.   -  
            ,     a-addr1   a-
            addr2,        .  
             ,        
            u   .  a-addr2 -     a-
            addr1,   a-addr1    
             FREE.

              , a-addr2  a-addr1,   a-
            addr1  ,  ior -   - 
             .

        .: 6.1.1650 HERE, 14.6.1.0707 ALLOCATE, 14.6.1.1605 FREE.

14.6.2   ____________________________________
            

.

                                                                            126


15.   ________________________________
         

15.1   ________
       

     ,     
  .

15.2   ________________________________
          

.

15.3   _________________________________
         

15.3.1   ___________________
           

  15.1   3.5.

.: 3.2.6   .

    __________________________________________
     15.1 -    

                               
    ---------------------------------------------------------------------------
    TOOLS              flag  no      
    TOOLS-EXT          flag  no       
    ---------------------------------------------------------------------------

15.3.2   _____________
          Forth

,   CODE  ;CODE,     
           
.

,   EDITOR  ASSEMBLER     
     .

.: 3.3  Forth.

15.4   __________________________________________
         

15.4.1   ______________________
          

15.4.1.1   ______________________________
             

-      15.6.2.0470 ;CODE 
  15.6.2.0930 CODE;
-     15.6.2.0470 ;CODE  15.6.2.0930 CODE;
-     15.6.2.1300 EDITOR  15.6.2.0740 ASSEMBLER
  (15.3.3  Forth);
-       15.6.1.2194 SEE.

15.4.1.2   _______________________
            

                                                                            127


-     (15.6.2.1580 FORGET);
-         u+1
  (15.6.2.1015 CSPICK, 15.6.2.1020 CSROLL);
-      (15.6.2.1580 FORGET);
-     6.1.1000 CREATE (15.6.2.0470 ;CODE);
- 6.1.2033 POSTPONE   15.6.2.2532 [IF];
-       15.6.2.2531 [ELSE]
   15.6.2.2533 [THEN] (15.6.2.2532 [IF]);
-    (15.6.2.1580 FORGET).

15.4.1.3   _____________________________
             

-   .

15.4.2   ________________________
          

15.4.2.1   ________________________
             

-   15.6.2.0470 ;CODE  15.6.2.0930 CODE.

15.4.2.2   _______________________________
             

-   .

15.5   _________________________
         

15.5.1   _________________
         ANS Forth 

 "   "      
  ,      .

 "      "   
     ,    
   .

 "    "     
   ,      
     .

15.5.2   ___________________
         ANS Forth 

 "   "      
 ,  ,      
.

 "      "    
   ,  ,   
     .

 "    "     
  ,  ,    
        .

                                                                            128


15.6   _______
       

15.6.1   ____________
          

15.6.1.0220   .S                           "dot-s"                        TOOLS
            ( -- )
                   .  
             --.

            .S         
            . ,      
            ,  #>.

        .: 3.3.3.6   .

15.6.1.0600   ?                           "question"                      TOOLS
            ( a-addr -- )
             ,   a-addr.

            ?   ,      
            . ,      
            ,  #>.

        .: 3.3.3.6   .

15.6.1.1280   DUMP                                                        TOOLS
            ( addr u -- )
              u  ,   
            addr.     .

            DUMP   ,     
             . ,    
              ,  #>.

        .: 3.3.3.6   .

15.6.1.2194   SEE                                                         TOOLS
            ( "<spaces>name" -- )
                 
            .   (  ,  
            ,  ..)     -  
            .

            SEE   ,     
             . ,    
              ,  #>.

        .: 3.3.3.6   .

15.6.1.2465   WORDS                                                       TOOLS
            ( -- )
                    . 
              --.

                                                                            129


            WORDS   ,     
             . ,    
              ,  #>.

        .: 3.3.3.6   .

15.6.2   ______________________
           

15.6.2.0470   ;CODE                      "semicolon-code"             TOOLS EXT
        :       .

        : ( C: colon-sys -- )
              -    . 
              ,      
            ,    ,  colon-sys.

                    
               ,    . 
             ,    , 
               .  , 
                 ,   
               .

        -: ( -- ) ( R: nest-sys -- )
                   
              name,  .    
             ,  nest-sys.  
                    
               CREATE    , 
              CREATE.

        name : ( i*x -- j*x )
               ,   
              ;CODE.

        .: 6.1.1250 DOES>.

15.6.2.0702   AHEAD                                                   TOOLS EXT
        :       .

        : ( C: -- orig )
                   orig  
              .   -, 
                .   ,  
            orig   (,   THEN).

        -: ( -- )
                ,   
            orig.

15.6.2.0740   ASSEMBLER                                               TOOLS EXT
            ( -- )
                      
            ASSEMBLER.

        .: 16.     .

                                                                            130


15.6.2.0830   BYE                                                     TOOLS EXT
            ( -- )
                 ,  
            .

15.6.2.0930   CODE                                                    TOOLS EXT
            ( "<spaces>name" -- )
               .  name,  
            .    name,  "code 
            definition",     .

                    
               ,    . 
             ,    , 
               .  , 
                 ,   
               .

        name : ( i*x -- j*x )
               ,   
              CODE.

        .: 3.4.1  .

15.6.2.1015   CS-PICK                     "c-s-pick"                  TOOLS EXT
        :       .

        :( C: destu ... orig0|dest0 -- destu ... orig0|dest0 destu )
                   ( S: u -- )
             u.  destu     . 
              ,     u+1 
            ,      orig  dest,   
                CS-PICK.

                    
            , u        .

15.6.2.1020   CS-ROLL                     "c-s-roll"                  TOOLS EXT
        :       .

        :  ( C: origu|destu origu-1|destu-1 ... orig0|dest0 --
                                  origu-1|destu-1 ... orig0|dest0 origu|destu )
                     ( S: u -- )
             u.  u+1       
            ,  origu|destu      
            .   ,    
             u+1 ,      orig  dest,  
                 CS-ROLL.

                    
            , u        .

                                                                            131


15.6.2.1300   EDITOR                                                  TOOLS EXT
            ( -- )
                      EDITOR.

        .: 16.     .

15.6.2.1580   FORGET                                                  TOOLS EXT
            ( "<spaces>name" -- )
               .  name,  
            .  name,   name     
             ,     name.  
             ,  name    .

                 , FORGET  
              .     
               .

              ,  FORGET,  , 
               .

        :         
            .

        .: 3.4.1  .

15.6.2.2250   STATE                                                   TOOLS EXT
            ( -- a-addr )
              6.1.2250 STATE,   ;CODE,  
              STATE.      
             STATE.

        .: 3.4   Forth,  6.1.0450 :, 6.1.0460 ;, 6.1.0670 
            ABORT, 6.1.2050 QUIT, 6.1.2250 STATE, 6.1.2500 [, 6.1.2540 ], 
            6.2.0455 :NONAME, 15.6.2.0470 ;CODE.

15.6.2.2531   [ELSE]                       "bracket-else"             TOOLS EXT
        :   ,  .

        : ( "<spaces>name ... " -- )
              ,     
                ,    [IF] 
            ... [THEN]  [IF] ... [ELSE] ... [THEN],   [THEN]   
              .     
            ,      REFILL. [ELSE] -  
             .

        .: 3.4.1  .

15.6.2.2532   [IF]                         "bracket-if"               TOOLS EXT

                                                                            132


        :   ,  .

        : ( flag | flag "<spaces>name ... " -- )
             flag - true,   . ,   
            ,         
            ,    [IF] ... [THEN]  [IF] ... [ELSE] 
            ... [THEN],   [ELSE]   [THEN]   
              .     
            ,      REFILL. [IF] -  
             .

              ,  [IF] -  
             POSTPONE,         
                  [ELSE]  [THEN].

15.6.2.2533   [THEN]                       "bracket-then"             TOOLS EXT
        :   ,  .

        : ( -- )
              . [THEN] -   .

                                                                            133


16.   ________________________________________
          

16.1   ________
       

16.2   ________________________________
          

  :  ,      
.

 :   ,  ,    
 .

16.3   _________________________________
         

16.3.1   ___________
          

   - -- - , 
   .

  16.1   3.1.

    __________________________
     16.1 -  

                                        
    ----------------------------------------------------------------
    wid                       1 
    ----------------------------------------------------------------

.: 3.1  , 3.4.2   , 3.4   
Forth.

16.3.2   ___________________
           

  16.2   3.5.

.: 3.2.6   .

    __________________________________________
     16.2 -    

                               
    ---------------------------------------------------------------------------
    SEARCH-ORDER       flag  no       
    SEARCH-ORDER-EXT   flag  no       
                                  
    WORDLISTS          n     yes      
                                    
    ---------------------------------------------------------------------------

16.3.3   ______________________
           

      ,    
        .   
    ,   SEARCH-WORDLIST,    
   ,      FIND.

                                                                            134


         
  .

       ,   ,  
    .

  ,      
         
     ;CODE, DOES>,  
IMMEDIATE.

,          , 
   .

.: 3.4.2   

16.3.4   ___________________
          

    ,   3.3.3.2  
,       ,  WORDLIST 
   .

16.4   __________________________________________
         

16.4.1   ______________________
          

16.4.1.1   ______________________________
             

-        (16.3.3  
  , 16.6.1.2197 SET-ORDER);
-    (16.6.1.2197 SET-ORDER, 16.6.2.1965 ONLY).

16.4.1.2   _______________________
            

-     (16.3.3   );
-    (16.6.2.2037 PREVIOUS);
-        (16.6.2.0715 ALSO).

16.4.1.3   _____________________________
             

-   .

16.4.2   ________________________
           

16.4.2.1   ________________________
             

-          (16.3.3  
  ).

16.4.2.2   _______________________________
             

-   .

                                                                            135


16.5   _________________________
         

16.5.1   _________________
         ANS Forth 

 "    "     
   ,      
 .

 "       "  
      ,   
     .

 "     "   
     ,    
         .

16.5.2   ___________________
         ANS Forth 

 "    "     
  ,  ,    
   .

 "       "   
    ,  ,   
      .

 "     "     
  ,  ,    
          .

16.6   _______
       

16.6.1   ____________________
           

16.6.1.1180   DEFINITIONS                                                SEARCH
            ( -- )
                 ,      
             . ,      
                .     
                  .

        .: 16.3.3   .

16.6.1.1550   FIND                                                       SEARCH
              6.1.1550 FIND,  :
            ( c-addr -- c-addr 0  |  xt 1  |  xt -1 )
                    c-addr.  
                      
            ,  c-addr  .   , 
             xt.

                                                                            136


               ,    
            (1);    - (-1).   , 
              FIND   ,    
               .

        .: 3.4.2   , 6.1.0070 ', 6.1.1550 FIND, 6.1.2033 
            POSTPONE, 6.1.2510 ['], D.6.7 Immediate-.

16.6.1.1595   FORTH-WORDLIST                                             SEARCH
            ( -- wid )
             wid,   ,    
             ,  .    - 
                 -    
            .

16.6.1.1643   GET-CURRENT                                                SEARCH
            ( -- wid )
             wid,    .

16.6.1.1647   GET-ORDER                                                  SEARCH
            ( -- widn ... wid1 n )
                n      
              widn ... wid1    . wid1 
              ,   ,  widn 
             ,   .    
            .

16.6.1.2192   SEARCH-WORDLIST                                            SEARCH
            ( c-addr u wid -- 0 | xt 1 | xt -1 )
             ,   c-addr u    
             wid.    ,  
            .   ,    
             xt   (1)    , 
             - (-1) .

16.6.1.2195   SET-CURRENT                                                SEARCH
            ( wid -- )
                  , 
             wid.

16.6.1.2197   SET-ORDER                                                  SEARCH
            ( widn ... wid1 n -- )
                 ,  
            widn ... wid1. ,   wid1   
            ,    widn  .  n 
            ,   .  n -  ,  
                   
            .       FORTH-
            WORDLIST  SET-ORDER.     n   
             .

16.6.1.2460   WORDLIST                                                   SEARCH
            ( -- wid )
                ,    
              wid.         
                    
               .    ,  
             , 8        
               .

                                                                            137


16.6.2   ______________________________
            

16.6.2.0715   ALSO                                                   SEARCH EXT
            ( -- )
              ,   widn, ... wid2, wid1 ( 
            wid1  )  widn, ... wid2, wid1, wid1. 
              ,      
               .

16.6.2.1590   FORTH                                                  SEARCH EXT
            ( -- )
              ,   widn, ... wid2, wid1 ( 
            wid1  )  widn, ... wid2, widFORTH-WORDLIST.

16.6.2.1965   ONLY                                                   SEARCH EXT
            ( -- )
                  
              .     
              FORTH-WORDLIST  SET-ORDER.

16.6.2.1985   ORDER                                                  SEARCH EXT
            ( -- )
                     
             ,     .  
              ,      . 
              -   .

            ORDER        
             . ,     
             ,  #>.

        .: 3.3.3.6   .

16.6.2.2037   PREVIOUS                                               SEARCH EXT
            ( -- )
              ,   widn, ... wid2, wid1 ( 
            wid1  )  widn, ... wid2.  
             ,      ,   
             PREVIOUS.

                                                                            138


17.   ___________________________________
         

17.1   ________
       

17.2   ________________________________
          

.

17.3   _________________________________
         

  17.1   3.5.

.: 3.2.6   .

    __________________________________________
     17.1 -    

                               
    -----------------------------------------------------------------
    STRING             flag  no      
    STRING-EXT         flag  no      
                                  
    -----------------------------------------------------------------

17.4   __________________________________________
         

.

17.5   _________________________
         

17.5.1   ___________________
         ANS Forth  

 "   "      
  ,      .

 "      "   
     ,    
   .

 "    "     
   ,     
      .

17.5.2   ___________________
         ANS Forth  

 "   "      
 ,  ,     
 .

 "      "   
    ,  ,   
     .

 "    "     
  ,  ,    
        .

                                                                            139


17.6   _______
       

17.6.1   _______________
          

17.6.1.0170   -TRAILING              "dash-trailing"                     STRING
            ( c-addr u1 -- c-addr u2 )
             u1   , u2  u1      
             ,  c-addr u1.  u1    
               , u2 .

17.6.1.0245   /STRING                "slash-string"                      STRING
            ( c-addr1 u1 n -- c-addr2 u2 )
               c-addr1, n .  
             ,  c-addr2 u2,   c-addr1 
             n ,   u1  n .

17.6.1.0780   BLANK                                                      STRING
            ( c-addr u -- )
             u   ,      u 
              ,   c-addr.

17.6.1.0910   CMOVE                    "c-move"                          STRING
            ( c-addr1 c-addr2 u -- )
             u   ,  u    
                c-addr1  ,   c-
            addr2,       .

         : 17.6.1.0920 CMOVE>.

17.6.1.0920   CMOVE>                  "c-move-up"                        STRING
            ( c-addr1 c-addr2 u -- )
             u   ,  u    
                c-addr1  ,   c-
            addr2,       .

         : 17.6.1.0910 CMOVE.

17.6.1.0935   COMPARE                                                    STRING
            ( c-addr1 u1 c-addr2 u2 -- n )
             ,  c-addr1 u1  ,  
            c-addr2 u2.  ,    , 
            ,         
            .     - n .    
                 , n  - (-1) 
             u1 -   u2,   (1).    -  
                 , n  - (-1) 
                   c-addr1 
            u1         
            ,  c-addr2 u2,   (1).

                                                                            140


17.6.1.2191   SEARCH                                                     STRING
            ( c-addr1 u1 c-addr2 u2 -- c-addr3 u3 flag )
             ,  c-addr1 u1  ,  c-addr2 
            u2.  flag - true,     c-addr3   u3 
             .  flag - false    
              c-addr3  c-addr1,  u3  u1.

17.6.1.2212   SLITERAL                                                   STRING
        :       .

        : ( c-addr1 u -- )
              -,     
            .

        -: ( -- c-addr2 u )
             c-addr2 u  ,    
             c-addr1 u   .    
              .

17.6.2   _________________________
           



                                                                            141



A.   _______________________________________
      ( )

A.1   ________
      

A.1.1   ____
        

A.1.2   __________
        

   ,       
Forth.     :

-      ;
-       ;
-    ,   
   ,    ;
-     ,  
   .

      -   , 
     .  , ANS Forth  
   -  .   
          
 ,    ,   
.

   ,  X3J14   
   (   ):


        
 .

 
       ,   
     ,      
        .


 ,  .


,           
.


  Forth     .   
   ,    . Forth 
   ,     .


,        
,     .

                                                                            142


A.1.3   _____________________
         

A.1.3.1   ___________
           

 , X3J14        
     "" Forth,    
      Forth .  
   ,   "" Forth.     
,   "" Forth.   -  .   
        ,   
,     .      
 .

,   ,       
      ,  
       .  
     Forth   
,       -.

  ,  ,     
  ,        
.     ,      
Locals,    COMPILE,     . 
,   ,         
    .

       .

, ANS Forth   -     
  ,        
 .       ,   
      ANS Forth .

,     ,  . 
      (,  
 ),     ,     
   ,     .   
,      ,   
 - ,     ,  .. -   
  ,       
 .

, ANS Forth    ,    
 ,  ,      
       . ,  
     ,    
     .  ,    
  .

    .    ,   
  ,     , 
    .      
     ,     
    .

  - ,       
  ,        
 .        
 ,  ,  "    
[]  ",       
 .

                                                                            143


         
. , ,      
        ,   
   .     
  ,      ,    
    .

          
 ,      .

      ,   
        
, , ,   .     , 
        
,        
 ,    .

A.2   _________________
        

A.2.1   ____________________
         

 
         
.         
    .

 
          
 ,       Forth   
     -.

 
   ,      " ".

 Forth     ,  -  .  
    .  ,    CREATE 
 ,   CREATE,   .   , 
  CREATE,   .

 
  ,   ,      
 ,   ,      
  Forth.        Forth  
 .         
.

""        Forth .   
 - ""  .        
        
    .

A.2.2   _______
        

                                                                            144


A.2.2.2   ________________
           

 -sys, orig,  dest       
   . ,   ,   
         ,  
         . 
,  ,   orig  dest,    
  ,      ,   
     ,    
      .      
 ,       (  
)   ,  ,     
.

A.3   __________________
       

 Forth    ,      
    C.     Forth,  
,        
    ,       
 Forth .  ,    
,        
.

X3J14      ,  
     ,     
     Forth   , 
  .

     ,     ,   Forth 
,       ,  
    ,     
    .

.3.1  

        . 
    ,       
  .  ,     -  
,  .

  ,     , 
   .     
  : ,     
    ASCII   "A"  TRUE 
?    " ";  ,   
        .  - 
.

  ,      
    -    . 
      ,   
,    .

Forth      .     
,   ,     - 
.  Forth,    (   )  
,    .

        
  Forth.

                                                                            145


.3.1.2   _______________
           

Forth         ,  
       . 
          
 .            
     Forth,   
  ,        
,      .

a)   

1)       (C@, C!, FILL,  ..)  
       0  255.

2)        ,   
           
      "char"  .

3)    -   (  ), 
  (  ),   . ,   
       .

4)   "char"         
   -         , C! 
  n    (8 <= n <= /).   
      , "TRUE xx C! xx C@" 
       ,    
 IF  .

5)    (KEY, ACCEPT,  ..)   (EMIT, TYPE,  ..), 
      -  ISO646/IRV (ASCII)  
   32  126 (  ~). EBCDIC -  ( 
  "EBCDIC"   ASCII).   , 
 -   .      
  ASCII    0  31,   ,  
""     (TAB, RETURN, LINEFEED, FORMFEED). 
  -    ,    , -   
     . ,   
 TAB  4  ,    8  ,   
    .    
     ,   
     ,      
.

  128  255 ,   ,    
      ,   
  ,     .   
 - 8-bit ISO Latin-1  .    ,  
 , ,       . 
  Forth     (  
     ),   
Forth           ,  
        Forth.

                                                                            146


6)           
 32 ... 126  KEY,        
   EMIT.        
     ,     
        .

7)          
.        
.  ,  ,     
       BLOCK ,  
  ,  ,    ,  
.    ,     
   (, BL WORD)    
   .   ,      
        ,   
      . 
,   "  "    
 ,    "CHAR ) WORD"    
  .

b)   

         C!      
   C@.      --
          
  C!        ,  
     ;   C@   
      ,     - 
 --   (    
       ).  
   ,        
          
.

c)   

   C@  C!,    ,      
  :

        >R  ?DUP  DROP  DUP  OVER  PICK  R>  R@  ROLL  ROT  SWAP

d)  

      :

        +  -  *  /  /MOD  MOD

         , 
  ,   ,      
   ,      
  :

        AND  OR  >  <  U>  U<  =  <>  0=  0<>  MAX  MIN

        LSHIFT  RSHIFT

                                                                            147


.3.1.3   ________________
           -

  -,      - 
   Forth.      
      -.
	
a)   

 -       !;    
  @.      ,   
      ;  
      ,  !  @  
         ,  
 .

b)   

    ,    -  , 
     :

        !  @  >R  ?DUP  DROP  DUP  OVER  PICK  R>  R@  ROLL  ROT  SWAP

c)  

         -
:

        =  <>  0=  0<>

.3.1.3.1   _____
            

FALSE  -   -    ,  TRUE 
 -   -    .   
 Forth,   ,      
 true,      .  , 
     ,     
 ,  TRUE  FALSE,      
       Forth 0<> , 
         
.

   ,  ,     -
,           
,    :

        AND  OR  XOR  INVERT

.3.1.3.2   ___________
             

  -       
   .        
   -.       
  -,  ,     
       -:

        *  */  */MOD  /MOD  MOD  +  +!  -  /  1+  1-  ABS  MAX  MIN
        NEGATE  0<  0>  <  >

                                                                            148


      ,       
    ,     
.

  -       
   .        
   -.  ,     
       -:

        UM*  UM/MOD  +  +!  -  1+  1-  *  U<  U>

.3.1.3.3   ______
            

       -    
      ,     .  
,        ( -  
   ).        
          
     .

      :

        CHAR+  CHARS  CELL+  CELLS

,       :

        FLOAT+  FLOATS  SFLOAT+  SFLOATS  DFLOAT+  DFLOATS

        
  Forth   ,    .

.3.1.3.4   ___________________
              

  ANS Forth      
"c-addr u"    .   
  "   "  .  
 Forth WORD  FIND    "   
"   .   C",    
   ,      
.

          . 
  -  ,        
 ,   "c-addr u" .

.3.1.3.5   _________________________
             

      .  
,          - . 
     , , 


        ' 1+

        ' CHAR+

      .

                                                                            149


3.1.4   _______________
         -

a)   

    -,   :

        2@  2!

b)   

,       -  
,     :

        2>R  2DROP  2DUP  2OVER  2R>  2SWAP  2ROT

c) 

      -:

        D=  D0=

.3.1.4.1   ______________________
              -

   -     ,  
     :

        D+  D-  D<  D0<  DABS  DMAX  DMIN  DNEGATE  M*/  M+

   -      ,  
     :

        D+  D-  UM/MOD  DU<

.3.1.4.2   _________________
             

.: 3.1.3.4   .

.3.2   _________________
         

.3.2.1   _____
          

, Forth        ( 
 ),   -        
 -   -       
  . ,     
     . ,  
    :     .  

                                                                            150


,        
 +  -      .   
      Forth.    
,       ,   
      , :

    ------------------------------------------------------------------
                   
    ------------------------------------------------------------------
                  -n-1 to n           0 to 2n+1
                        -n to n             0 to n
                   -n to n             0 to n
    ------------------------------------------------------------------

 n -      .    , 
     0  n    
  . ,         
          
          
 +  -.

 ,       ,   
 NEGATE:

         :       : NEGATE  INVERT 1+ ;
         :             : NEGATE  INVERT ;
          :       : NEGATE  HIGH-BIT XOR ;

 HIGH-BIT -       . ,    
      .

 3.2.1.1     6.1.0270 0=,  
 ,        
      (   ) 
.       .

       ,  
        .  
     u  +n,  
 ,     16 .

.3.2.1.2   ___________________
             

,       "a"  "z"  
   "A"  "Z",        " [ "  "~" 
       36  71, .

.3.2.2   __________
          

.3.2.2.1   _____________________
             

Forth-79       (/, /MOD, MOD, 
*/MOD,  */)       ( ). 
Forth 83         
 ( ).

                                                                            151


   Forth       
Forth-79   Forth-83 .    , ANS Forth 
       . 
 , ANS Forth      
 (FM/MOD),    (SM/REM),    
  (M*).

   ,     Forth; 
Forth-79  Forth-83     ANS Forth  
.  ,       
.       
,       FM/MOD  
   SM/REM,     
 .       
 Forth-79  Forth-83   ANS Forth,    
  .

.3.2.2.2   _____________________________
              

  ,     . , 
 1 2 -  ,       
   -1.

.3.2.3   _____
          

    Forth,    ,   
 -   .     Forth 
      
 .       
  ,       
 ,        . 
      -   , 
        . 
  ,        
,      ,   
(   ) .

      ,  , ,  
  ,      
 Forth -         
       VARIABLE  
CONSTANT.

.3.2.3.2   ______________________
              

         
 ,    .1.

        ---------------------------------------------------------------
            |                 _____ |               _____ |
           < >-----  IF      |     \|     BEGIN    |     \|     BEGIN
            |      |         |  +-------+          |  +-------+
        +-------+  |         |  |       |          |  |       |
        |       |  |         |  +-------+          |  +-------+
        +-------+  |         |      |              |      |
            | _____|          -----< >    UNTIL     ------      AGAIN
            |/       THEN           |
            |                       |
        ---------------------------------------------------------------

         .1 -    .

                                                                            152


          
   .    ,  
       .  , 
        , 
  --     .

 -    .  - ,  
  ,    .    
     ,  ,    
  ,      
.

     (AHEAD, CS-ROLL  CS-PICK),    
  ,     
  .   -    
          
   .  1   .

,         
   ,     
      .   
  ,     , , 
 ,  ,  .    
    -  .

     .1 -     
    ---------------------------------------------------------------------------
      ,
    :  :  :  :
    ---------------------------------------------------------------------------
    IF      orig                       
    THEN               orig         IF  AHEAD
    BEGIN   dest                     
    AGAIN              dest           
    UNTIL              dest           
    AHEAD   orig                       
    CS-PICK                             
    CS-ROLL                            
                                   
    ---------------------------------------------------------------------------

         
 ,    .2;  ,  
     -  (  / ).

        : WHILE  ( dest -- orig dest / flag -- )
          \    
          POSTPONE IF      \   
          1 CS-ROLL        \  dest  
        ; IMMEDIATE

                                                                            153


        : REPEAT  ( orig dest -- / -- )
          \   WHILE     BEGIN
          POSTPONE AGAIN   \ .    dest
          POSTPONE THEN    \     orig
        ; IMMEDIATE

        : ELSE  ( orig1 -- orig2 / -- )
          \  IF    
          POSTPONE AHEAD   \    orig2
          1 CS-ROLL        \  orig1  
          POSTPONE THEN    \     orig1
        ; IMMEDIATE

        -----------------------------------------------
               |                 _____ |
              < >-----  IF      |     \|        BEGIN
               |      |         |  +-------+
           +-------+  |         |  |       |
           |       |  |         |  +-------+
           +-------+  |         |      |
               | _____|         |     < >-----  WHILE
         _____/ /       ELSE    |      |      |
        |      |                |  +-------+  |
        |  +-------+            |  |       |  |
        |  |       |            |  +-------+  |
        |  +-------+            |      |      |
        |_____ |                |_____/  _____|
              \|        THEN            /       REPEAT
               |                       |
        ----------------------------------------------
         .2 -     .

  Forth       
 .

     ,      
 .3,   WHILE  BEGIN ... UNTIL  BEGIN ... WHILE ... 
REPEAT . ,   , WHILE   THEN 
  . THEN    WHILE     
,  WHILE  .     
 WHILE ,   . ,   
    THEN ,    
    .

         
(REPEAT  UNTIL)  THEN,    WHILE. , 
         
,       Forth ELSE. 
  -     .

                                                                            154


        --------------------------------------------------
         _____ |                      _____ |
        |     \|         BEGIN       |     \|        BEGIN
        |  +-------+                 |  +-------+
        |  |       |                 |  |       |
        |  +-------+                 |  +-------+
        |      |                     |      |
        |     < >------  WHILE       |     < >-----  WHILE
        |      |       |             |      |      |
        |  +-------+   |             |  +-------+  |
        |  |       |   |             |  |       |  |
        |  +-------+   |             |  +-------+  |
        |      |       |             |      |      |
        |     < >----  | WHILE        -----< >     | UNTIL
        |      |     | |                    |      |
        |  +-------+ | |                +-------+  |
        |  |       | | |                |       |  |
        |  +-------+ | |                +-------+  |
        |      | ____| |                    | _____/
         \____/ /      | REPEAT       _____/ /       ELSE
               |       |             |      |
           +-------+   |             |  +-------+
           |       |   |             |  |       |
           +-------+   |             |  +-------+
               | ______/              \____ |
               |/        THEN              \|        THEN
               |                            |
        ---------------------------------------------------
         .3 -     .

,  REPEAT     WHILE  ELSE  THEN, 
     BEGIN...UNTIL .     
 ELSE  THEN   WHILE,   REPEAT   THEN.  
 ,       , 
REPEAT       .

         ,   
 .   -       
   .

  ANS Forth CASE   -   
 . ,      
       .

        0 CONSTANT CASE IMMEDIATE  ( .  OF )

        : OF  ( #of -- orig #of+1 / x -- )
          1+    (  OF )
          >R    (     ,  )
                (      . )
          POSTPONE OVER  POSTPONE = ( .    case )
          POSTPONE IF    (  orig     )
          POSTPONE DROP  (  case   = )
          R>             (       )
        ; IMMEDIATE

                                                                            155


        : ENDOF ( orig1 #of -- orig2 #of )
          >R    (     ,  )
                (      . )
          POSTPONE ELSE
          R>    (       )
        ; IMMEDIATE

        : ENDCASE  ( orig1..orign #of -- )
          POSTPONE DROP  (  case  )
          0 ?DO
            POSTPONE THEN
          LOOP
        ; IMMEDIATE

.3.2.3.3   ______________
             

  , 3.2.3.3   -  ,  
       .

.3.2.6   ___________________
            

          
  1 CHARS.         
 1 ALIGNED.

      : ,      
    ,   .      MAX-
N.         
Forth;  ,      
.

   -  ,      
- . ,        
 ,   .   ,    
        .  
  ENVIRONMENT?   ,     
 ,   .

  ,   "unknown" ,   
"known"    .

.3.3   _____________
         Forth

         
 .     (    
     ),     
 (    )  .

.3.3.1   _____________
           

                                                                            156


.3.3.1.2   _________________
             

        . 
   -  ,     
,  ,      ,  
   .  ,  ,   
 Forth       ,    
-  ;       
   .     ,  
   ,   ""  
  ,    .

          
   -  ,     
     .  ,   
  ,      
   ;  ,   
       . 
       ,  
     .

      ,  
 . ,      
  ,  "" .

.3.3.2   ____________
           

.3.3.3 ______________
         

 #TIB, >IN, BASE, BLK, SCR, SOURCE, SOURCE-ID, STATE,  TIB  
,   Forth   ,    
 .       
   Forth,   ,     
 -   .

     ( )  ,     
.

    :
-      ;
-    ,    .

     ,    Forth 
  ROM     -   
  .     ,  
 ,   .

.3.3.3.1   ___________________
             

     ,    
   . ,  Motorola 68000, 16-  32- 
       .    
 RISC,  16-         
   32-    ,   .

                                                                            157


 ANS Forth       
   .     Forth (@, !, +!,  ..)  
      -,    
 . ,  68000 Forth  16- , @  
   68000        
 16- .       ,  
,         
 .   ANS Forth    
   ,    ,    
  .  68000 Forth  16- , @   
68000 16-  .   ,     
@      .  ANS Forth 
  ,       
  .

.3.3.3.2   ___________________
             

   Forth    !  
   ,  - .  
    ,    
       .  
         
   .

 3.3.3.2  ,      
   . :

        CREATE TABLE   1 C, 2 C, ALIGN 1000 , 2000 ,

 ,    TABLE.     ,

        TABLE C@                             1
        TABLE CHAR+ C@                       2
        TABLE 2 CHARS + ALIGNED @            1000
        TABLE 2 CHARS + ALIGNED CELL+ @      2000.

  ,

        CREATE DATA   1000 ALLOT

    1000  .    
     , :

        500 CONSTANT NCELLS
        CREATE CELL-DATA  NCELLS CELLS ALLOT

      :

        : LOOK   NCELLS 0 DO  CELL-DATA I CELLS + ? LOOP ;

.3.3.3.6   ________________________
              

    Forth,   -  HERE    , 
  .

                                                                            158


(2*n)+2 -   ,      
       ""  
 .

 :     n -  16,  
      - 34 .   
    n,       
  .

.3.4   __________________________
          Forth

.3.4.3   _________
          

" "  ,      
,  ,  EXIT    . 
" -"   ,   
 ,       
    .

 - Forth     ,  
     ,    ,    
. ,       CELLS  
       ,   
     ,   CONSTANT  VARIABLE 
      .   
-    .

.3.4.3.2   _______________________
             

  ,       
  .    - >R, .", DO,  IF.     
        , 
    . ,    
     .

.3.4.5   __________
          

       , 
  locals.    ,   
 .   -        
   .

.4   ___________________________
       

.4.1   ______________________
         

.4.2   ________________________
         

.5   _________________________
        

.5.1   _________________
        ANS Forth  

                                                                            159


 5.1  ,    ,  
  "ANS Forth ". ,   - 
   ""   .   , 
     .   -   
     - .    
   . ,    
        ,   
   ,   .     
,            
,     .

- Forth      ANS Forth ,  
         . 
    ANS Forth -,   
    ,      
          ROM-
.       ,  
    .  ,      Forth 
-   ANS Forth      
,   -   ANS Forth .

.5.2   ___________________
        ANS Forth 

.5.2.2   ________________________
           

       , 
 ,       
. ,       
     (  ).  
     ,    
   -1,       
   .

        ,  , 
   ,     ,  
 .         
(,  )      
 ,      .

  ,      , 
     ,     
.    109       
     103.

      ,     
    ,   ,   , 
 ,   ,    "ANS Forth 
"    .

                                                                            160


A.6   _______
      

          
 :    ,       
 ,         .

       ,     
       .

,   Forth    Forth.     Forth 
        Forth. 
, WORD  FIND      
  Forth,  CREATE    -   
  .       , 
      .   
 Forth,        -  , 
      ,    
,     -    
   ,     
Forth.

A.6.1   ______________
         

A.6.1.0070   '
 :
        ... ' name .

  Forth    .  . ANS Forth 
  Forth 83.

.: 3.4.3..2  , A.6.1.1550 FIND.

A.6.1.0080   (
 :
        ...  ( ccc) ...

A.6.1.0140   +LOOP
 :
        : X ... limit first DO ... step +LOOP ;

A.6.1.0150   ,
 , ()     -  
.

.: 6.2.0945 COMPILE,.

A.6.1.0190   ."
 :
        : X ... ." ccc"  ... ;

      ."  .  
  ,  ."    
.    ,  ."    
   .     , 
 ."     .   
      ."  . 
        POSTPONE ."  
 ,       .

                                                                            161


A.6.1.0320   2*
 2*        ( 
 )     .    -  
    .      
    .       , 
        2*.

A.6.1.0330   2/
            
 2*.         (  
)    ,    .

A.6.1.0350   2@
 2@    .

A.6.1.0450   :
 :
        : name ... ;

 Forth 83,        .  
     .  ,    
     ;  ,    
 ,  Forth-83    .

,      .  
   ,       
  .

A.6.1.0460   ;
 :
        : name ... ;

   ;  ;CODE      
  .        :NONAME 
            
  .  :NONAME ,  Forth   
    ,   ;  ;CODE 
,        ,  
   .

A.6.1.0550   >BODY
a-addr - ,  HERE  ,      
  CREATE   xt.

A.6.1.0680   ABORT"
 :
        : X ... test ABORT" ccc" ... ;

A.6.1.0695   ACCEPT
  ,     , 
  ""     +n1 . ,  
  +n1 , , ,     
  . ,     
   .

                                                                            162


          
    Forth,      
 .     ,   
     ACCEPT  EXPECT.   
 ,       , 
   .

 ,    (+n1)  
ACCEPT        
         . 
    ,     
  ,        
.     -     , 
      .

ACCEPT  EXPECT   . ACCEPT    
,    EXPECT,  .

,         
         .

,     ,    
,         
     .   
   Forth ,     
    .  ,  
         .    
        
   "Return"  "Enter".

   , EXPECT      
   ,       . 
   " ,    
    " ,   
 " "     
   (   ,  
  , EXPECT).  , EXPECT  SPAN   
         
.  EXPECT    ,    
 " ".

ACCEPT    " " EXPECT. ,  
         
  ACCEPT,       , 
, ,  -  . ,  
         
 .

A.6.1.0705   ALIGN
         CPU 
.       -  
      CPU.    ALIGN  
ALIGNED  ,      , 
   C,.        
  ,    -  .

A.6.1.0706   ALIGNED
.: A.6.1.0705 ALIGN.

                                                                            163


A.6.1.0760   BEGIN
 :
        : X ... BEGIN ... test UNTIL ;

        : X ... BEGIN ... test WHILE ... REPEAT ;

A.6.1.0770   BL
     Forth   ,  
         
"".          CHAR, 
.

A.6.1.0880   CELL+
 ALIGN  ALIGNED,  CELL  CELL+  ,    
      .   
           
.
:
        2VARIABLE DATA
        0 100 DATA 2!
        DATA @ . 100
        DATA CELL+ @ .  0

A.6.1.0890   CELLS
.: A.6.1.0880 CELL+.
: 
        CREATE NUMBERS  100 CELLS ALLOT
(     NUMBERS  100  .)

A.6.1.0895   CHAR
 :
        ... CHAR A CONSTANT "A" ...

A.6.1.0950   CONSTANT
 :
        ... DECIMAL 10 CONSTANT TEN ...

A.6.1.1000   CREATE
   ,  CREATE,    
    CREATE.
        ALLOT.

 :
        ... CREATE SOMETHING ...

                                                                            164


A.6.1.1240   DO
 :
        : X ... limit first DO ... LOOP ;

        : X ... limit first DO ... step +LOOP ;

A.6.1.1250   DOES>
 :
        : X ... DOES> ... ;

 DOES>,      - 
        
DOES>          . DOES> 
        
  local    .  
 ,       DOES>  
   .

A.6.1.1310   ELSE
 :
        : X ... test IF ... ELSE ... THEN ;

A.6.1.1345   ENVIRONMENT?
  ,      ,  
 ENVIRONMENT?       
,      
.         
    (11.6.1.2165 S"    
 ),          
 (,  15.6.2.2532 [IF]).

 6.1.1345 ENVIRONMENT?, 11.6.1.2165 S", 15.6.2.2532 [IF], 15.6.2.2531 
[ELSE], and 15.6.2.2533 [THEN]       
,     .

A.6.1.1360   EVALUATE
  ,       EVAL.  
 ,        
  .    EVALUATE    .  
    INTERPRET,       
   .     ,  
  -   ,       .

A.6.1.1380   EXIT
 :
        : X ... test IF ... EXIT THEN ... ;

                                                                            165


A.6.1.1550   FIND
    ,   ,    
     Forth .   
     :

1)
  .      Forth,   
  .

2)
   "" ( ).  
,    DUP,    ,  
 JSR .

3)
   .     
 (    SWAP ROT +     
, ),  (     RISC - 
        
),   .

  (  Forth 83)    
  ,    2  3.

 3     2 ,    
       
  . POSTPONE  -  
          
Forth,     STATE -.

  3 , cmForth  ,     
   Forth.  , ,     
 3 .  ,       
. , ,      
      ,     
   :     . 
,   FIND,    STATE,  '  ['] 
        .

A.6.1.1561   FM/MOD
   "" , Forth 83   
     ,     , 
   ,      
CPU,     (  ).    
 ,        
,    (. SM/REM). FM/MOD -  
.

        
  ,       ,  
      .  ,  
        FM/MOD  SM/REM, 
   .      
  . FM/MOD  , ,  
:

                                                                            166


        : /_MOD ( n1 n2 -- n3 n4)  >R S>D R> FM/MOD ;
        : /_  ( n1 n2 -- n3)  /_MOD SWAP DROP ;
        : _MOD ( n1 n2 -- n3)   /_MOD DROP ;
        : */_MOD ( n1 n2 n3 -- n4 n5)  >R M* R> FM/MOD ;
        : */_  ( n1 n2 n3 -- n4 )   */_MOD SWAP DROP ;

A.6.1.1700   IF
 :
        : X ... test IF ... THEN ... ;

        : X ... test IF ... ELSE ... THEN ... ;

A.6.1.1710   IMMEDIATE
 :
        : X  ...  ;  IMMEDIATE

A.6.1.1720   INVERT
 NOT     Forth   ,  
   .     
      :

        : ONE  ( flag -- )
           IF ." true" ELSE ." false" THEN ;

        : TWO ( flag -- )
           NOT IF ." false" ELSE ." true" THEN ;

     Forth-83 ,   NOT 
       (  ), 
   -1 XOR.     ,  , 
            , 
    true    "1" (    
)  "-1" (  ).    TRUE  NOT  
    ,   Forth 
    . ,   
   .

  NOT       .  
  NOT -        
  (  ) -    0=  
INVERT, .

A.6.1.1730   J
J     , DO...LOOP, DO...+LOOP, ?DO...LOOP, 
or ?DO...+LOOP, ,  :

        : X ... DO ... DO ... J ... LOOP ... +LOOP ... ;

                                                                            167


A.6.1.1760   LEAVE
,  LEAVE   .    LEAVE  
    . 
 :
        : X ... DO ... IF ... LEAVE THEN ... LOOP ... ;

A.6.1.1780   LITERAL
 :
        : X  ... [ x ] LITERAL ...  ;

A.6.1.1800   LOOP
 :
        : X ... limit first DO ... LOOP ... ;

        : X ... limit first ?DO ... LOOP ... ;

A.6.1.1810   M*
  -     ,    
.    ,   Forth   1970-.

A.6.1.1900   MOVE
CMOVE  CMOVE> -     Forth 83.   
  ,   ,   
  .    ,  
     ,    
 .  , CMOVE  CMOVE>  ; ANS Forth 
   ,      . 
 , MOVE        ,  
CMOVE  CMOVE>      .

A.6.1.2033   POSTPONE
 :
        : ENDIF  POSTPONE THEN ;  IMMEDIATE
        : X  ... IF ... ENDIF ... ;

POSTPONE     COMPILE  [COMPILE]. 
COMPILE  [COMPILE]      :   
     . COMPILE    
       [COMPILE]   
 .     ,  
    . ,  Forth  
         , 
 .    .

   COMPILE -      
    ,  :

        :  COMPILE  R>  DUP  @  ,  CELL+  >R  ;

                                                                            168


       Forth   .  
  Forth  inline     
,     ;   
  "" COMPILE. "" ( ,  ) 
COMPILE,     ,     .

  , COMPILE     ,  [COMPILE]   
  POSTPONE.       Hayes, J.R., 
"Postpone",  1989 Rochester Forth Conference.

A.6.1.2120   RECURSE
 :
        : X ... RECURSE ... ;

 -   Forth;       . 
  -   .

        : FACTORIAL ( +n1 -- +n2)
           DUP 2 < IF  DROP 1 EXIT  THEN
           DUP 1-  RECURSE  *
        ;

n2 = n1(n1-1)(n1-2)...(2)(1),  n1     
     (  ,   
 ).    ,   
      ,    
 . .   A.6.1.2140 REPEAT.

A.6.1.2140   REPEAT
 :
        : FACTORIAL ( +n1 -- +n2)
           DUP 2 < IF  DROP 1 EXIT  THEN
           DUP
           BEGIN  DUP 2 > WHILE
             1-  SWAP OVER *  SWAP
           REPEAT  DROP
        ;

A.6.1.2165   S"
 :
        : X  ... S" ccc" ... ;

        " ().   
        ":  
,     ,     
     .     
  ,   , S"    
 C" ,          
  .
 
                                                                            169


A.6.1.2214   SM/REM
.     FM/MOD. SM/REM -   
,       
 :

        : /-REM  ( n1 n2 -- n3 n4 )  >R  S>D  R> SM/REM ;
        : /-  (  n1 n2 -- n3 )  /-REM SWAP DROP ;
        : -REM  ( n1 n2 -- n3 )  /-REM DROP ;
        : */-REM  (  n1 n2 n3 -- n4 n5 )  >R  M*  R> SM/REM ;
        : */-  ( n1 n2 n3 -- n4 )  */-REM SWAP DROP ;

A.6.1.2216   SOURCE
SOURCE       ,  
       .   
          
  .       
    ,  TIB  #TIB 
.

SOURCE      F83, POLYFORTH, LMI's Forths  .  
     

        BLK @  IF BLK @ BLOCK 1024  ELSE TIB #TIB @ THEN

A.6.1.2250   STATE
 EVALUATE, LOAD, INCLUDE-FILE,  INCLUDED    ,  
 STATE, ,     ,    
  ,    STATE. EVALUATE, LOAD, INCLUDE-FILE,  
INCLUDED      STATE.

STATE      . , 
 :

        : FOO  S" ]" EVALUATE ;       FOO

    .      LOAD  
  ],     .

,  ]         
 :    ,   .    
          
   . :

        : NOP  : POSTPONE ; IMMEDIATE ;

        NOP ALIGN    NOP ALIGNED

 -ANS Forth    ]    
    STATE.      
   NOP.

                                                                            170


 ,          
 ]  [      STATE.   , 
  ]     STATE    
/   STATE.

A.6.1.2270   THEN
 :
        : X ... test IF ... THEN ... ;

        : X ... test IF ... ELSE ... THEN ... ;

A.6.1.2380   UNLOOP
 :
        : X  ...
         limit first
         DO
           ... test IF ... UNLOOP EXIT THEN ...
         LOOP ...
        ;

UNLOOP   EXIT   , DO ... LOOP  
 do-loop . UNLOOP     UNDO. UNLOOP  
 :    -     .

A.6.1.2390   UNTIL
 :
        : X ... BEGIN ... test UNTIL ... ;

A.6.1.2410   VARIABLE
 :
        ... VARIABLE XYZ ...

A.6.1.2430   WHILE
 :
        : X ... BEGIN ... test WHILE ... REPEAT ... ;

A.6.1.2450   WORD
 :
        char WORD ccc<char>

                                                                            171


A.6.1.2500   [
 :
        : X ... [ 4321 ] LITERAL ... ;

A.6.1.2510   [']
 :
        : X  ... ['] name ... ;

.: A.6.1.1550 FIND.

A.6.1.2520   [CHAR]
 :
        : X  ...  [CHAR] ccc  ...  ;

A.6.1.2540   ]
 :
        : X ... [ 1234 ] LITERAL ... ;

A.6.2   

       :
- ,     ,   
      (, 0<>);
- ,     ,    
      (, FALSE);
- ,         
        (, PARSE);
- ,      ,   
    (, CONVERT).

-      ,    
    ,    
     .

A.6.2.0060   #TIB
 #TIB   SOURCE.

A.6.2.0200   .(
 :
        .( ccc)

A.6.2.0210   .R
 .R, "R"   RIGHT.

A.6.2.0340   2>R
, 2>R    DO.     
 .

                                                                            172
 

  2>R  ,         
 . ,  -      
            
.

A.6.2.0410   2R>
,  2R> -   R> R>.  ,    
2R> (. A.6.2.0340).

A.6.2.0455   :NONAME
:NONAME        
     . ,  : () 
      .  ,  
Forth    ,   :, :

        : NAME  ...  ;

:NONAME       Forth   
.

:NONAME         
.   -     Forth  
   .    
  :NONAME   Forth    
     .

  :NONAME       Forth. 
  Forth       
    .       
    .

 :NONAME       
,        
.   :

        :NONAME .. code for command 0 .. ;  0 CMD !
        :NONAME .. code for command 1 .. ;  1 CMD !
           ...
        :NONAME .. code for command 99 .. ; 99 CMD !

        ... 5 CMD @ EXECUTE ...

 ,  :
        CREATE CMD-TABLE  \      
          100 CELLS ALLOT

        : CMD ( n -- a-addr ) \     
          CELLS CMD-TABLE + ;

  ,     ,   
 .        . 
:    ,     ; .

                                                                            173


        : DOCOLON ( -- )
        \   CREATE ,   
        \  
          DOES> ( i*x a-addr -- j*x )
           1 OVER +!         \  
           CELL+ @ EXECUTE   \  :NONAME 
        ;

        : OLD: : ;           \  

        OLD: : ( "name" -- a-addr xt colon-sys )
        \  -   
           CREATE  HERE 0 ,  \    
           0 ,               \    
           DOCOLON           \     
                             \ CREATE 
           :NONAME           \     
        ;

        (   DOES>: DOES>    CREATE
             :NONAME ,   DOES>  
           :NONAME.)

        OLD: ; ( a-addr xt colon-sys -- )
        \  -   
           POSTPONE ;        \     
           SWAP CELL+ !      \   
        ;  IMMEDIATE

 :  ;         :

        ... : xxx  ... ;  ...  xxx  ...

 ,    "ticked",    ( 
 ):

        ... ' xxx >BODY ? ...

A.6.2.0620   ?DO
 :
        : FACTORIAL ( +n1 -- +n2 )  1 SWAP 1+ ?DO  I *  LOOP ;

            
 Forth-83  DO,   16-    
65,535 ,    .       
32- ,      .  
      DO,     
,       .

                                                                            174


A.6.2.0700   AGAIN
 :
        : X ... BEGIN ... AGAIN ... ;

      ,   .

A.6.2.0855   C"
 :
        : X  ...  C" ccc"  ...  ;

      /,    
. C"    ,   
  "   ".     
    ANS Forth .   
 C"     ,    
"    ".

 C"         
   "c-addr u"  
     S".     
          
   "c-addr u" ,   
   C".

.: 3.1.3.4   .

A.6.2.0873   CASE
 :
        : X ...
           CASE
             test1 OF ... ENDOF
             testn OF ... ENDOF
             ... ( default )
           ENDCASE ...
        ;

A.6.2.0945   COMPILE,
COMPILE, -  EXECUTE  .     
    POSTPONE   COMPILE,. 
  POSTPONE ,        
,   COMPILE,       . 
     EVALUATE   ,  
     .     :

- EVALUATE   COMPILE, ,      .
-     , EVALUATE.

    ,     , 
().   -  ;     
  ,  ,   
.  COMPILE,  .

                                                                            175


     COMPILE, ,     
          
 .        
"",    :  
" ",       
EXECUTE, ,  " ",    .  
        
.    COMPILE,       
      .

A.6.2.0970   CONVERT
CONVERT     :

        : CONVERT   CHAR+ 65535 >NUMBER DROP ;

A.6.2.1342   ENDCASE
 :
        : X ...
           CASE
             test1 OF ... ENDOF
             testn OF ... ENDOF
             ... ( default )
           ENDCASE ...
        ;

A.6.2.1343   ENDOF
 :
        : X ...
           CASE
             test1 OF ... ENDOF
             testn OF ... ENDOF
             ... ( default )
           ENDCASE ...
        ;

A.6.2.1390   EXPECT
    (+n)  EXPECT,  
        
       .  
  -  ,       
,        .   
  -     ,  
     .

                                                                            176


A.6.2.1850   MARKER
     ,     
   , FORGET    
       Forth. MARKER   
,      " " 
,    ,       
 .

A.6.2.1950   OF
 :
        : X ...
           CASE
             test1 OF ... ENDOF
             testn OF ... ENDOF
             ... ( default )
           ENDCASE ...
        ;

A.6.2.2000   PAD
PAD            Forth 
.     ,    
   PAD,     
. PAD      ,  
  ,       .

A.6.2.2008   PARSE
 :
        char PARSE ccc<char>

  Forth     WORD. PARSE  
  WORD:

a) WORD    .    
  ,    
 ,        ( , .( , 
 ." .   ()  .( :

        : .(   [CHAR] )  WORD COUNT TYPE ;  IMMEDIATE

  ,     :

        .( HELLO)   5 .

  ,  ,     :

        .( )   5 .

 .(     )   , 
 ,    ,      
 )    -) ,       
.    5 .       , 
  .

                                                                            177


 PARSE,       .( :

        : .(   [CHAR] )  PARSE TYPE ;  IMMEDIATE

    " ".

b) WORD       .    
 :

1)   WORD        
 ,      ,    
    .       PARSE, 
           -
.

2) WORD   ,        
 ,      -   .  
      . (WORD, ,  
      .)

3)     ,  WORD  255  
(        !).    
  PARSE.

4)       WORD.  
  ; ,  WORD    
 . PARSE     
     ,      
 ,    WORD.

 WORD       
    .    
     ,  PARSE  
  "c-addr u",      ( 
 -  " "),     
.     :

        PARSE-WORD  ( "<spaces>name" -- c-addr u )

       . c-addr -  
     u -   .    
,     .

  PARSE  PARSE-WORD ,   WORD   
 .

A.6.2.2030   PICK
0 PICK  DUP,  1 PICK  OVER.

A.6.2.2040   QUERY
 QUERY     ACCEPT  EVALUATE.

                                                                            178


A.6.2.2125   REFILL
  -   QUERY.  QUERY    
    . REFILL ,    
     .      
,   QUERY, REFILL      false , 
,   ,    ,      
.

A.6.2.2150   ROLL
2 ROLL  ROT, 1 ROLL  SWAP,  0 ROLL -  .

A.6.2.2182   SAVE-INPUT
SAVE-INPUT  RESTORE-INPUT       
     ,     BLOCK 
. SAVE-INPUT  RESTORE-INPUT " " ,  
   ,      
  .       
,          
        .

SAVE-INPUT  RESTORE-INPUT       
 ; ,       
:

        : XX
           SAVE-INPUT  CREATE
           S" RESTORE-INPUT" EVALUATE
           ABORT" couldn't restore input"
        ;

 ,      RESTORE-INPUT   
-   EVALUATE,  -      , 
    ,    SAVE-INPUT .

  :

        : XX
           SAVE-INPUT  CREATE
           S" .( Hello)" EVALUATE
           RESTORE-INPUT ABORT" couldn't restore input"
        ;

   EVALUATE,      
  ,   SAVE-INPUT  RESTORE-INPUT  
       .

  , EVALUATE       
INCLUDE-FILE,       .

   ,  ,    
 .        
    RESTORE-INPUT,      
  .

                                                                            179


   RESTORE-INPUT      
 ,       ,  
    .       
.

 SAVE-INPUT  RESTORE-INPUT . ,   
  :

        : XX
           SAVE-INPUT
              S" f1" INCLUDED
              \ The file "f1" includes:
              \   ... SAVE-INPUT ... RESTORE-INPUT ...
              \ End of file "f1"
           RESTORE-INPUT  ABORT" couldn't restore input"
        ;

 , RESTORE-INPUT     " ", :

        : RESTORE-INPUT  ( x1 ... xn n -- flag )
           0 ?DO DROP LOOP TRUE
        ;

        .   
     SAVE-INPUT  RESTORE-INPUT 
,    .   , 
   ,    "" 
      .

 ,         
SAVE-INPUT    /:

    -----------------------------------------------
              
    -----------------------------------------------
                       >IN @  BLK @  2
    EVALUATE               >IN @  1
                 >IN @  1
              >IN @  lo-pos  hi-pos  3
    -----------------------------------------------

  ;        
    ,  SAVE-INPUT.

A.6.2.2290   TIB
 TIB   SOURCE.

                                                                            180


A.6.2.2295   TO
,   TO     .  
    ,    
 . ANS Forth  ,  TO  ,   
 TO  ,       .

 :
        x TO name

A.6.2.2298   TRUE
TRUE   0 0=.

A.6.2.2405   VALUE
 :

        0 VALUE DATA

        : EXCHANGE ( n1 -- n2 ) DATA SWAP TO DATA ;

EXCHANGE  n1  DATA     n2.

A.6.2.2440   WITHIN
  WITHIN      
( )   .  -     
 (o)        (u)  
 :

u------------------------------------------------------------------o

    :   n2|u2..n3|u3   
/,  .     
 :

u-------------------[.....................)------------------------o

[  n2|u2, )  n3|u3,    [ -     
(WITHIN) . n3|u3   n2|u2,     
,   n1|u1   (WITHIN) n2|u2  n3|u3:

        n2|u2 < n1|u1  n1|u1 < n3|u3.

 ,       
/:

u...............)-----------------------------[....................o

n3|u3 -   n2|u2,    ,   n1|u1  
 (WITHIN) n2|u2  n3|u3:

        n2|u2 < n1|u1  n1|u1 < n3|u3.

                                                                            181


WITHIN        .   
  :

        : WITHIN  ( test low high -- flag )
           >R  OVER < 0= ( test flag1 )  SWAP R> < ( flag1 flag2 ) AND
        ;

    (  )  16- , 
   :

        33000  32000 34000  WITHIN

   false   ,  ,  
   33000 -     {{32000 .. 34000}}.

   ,    ,   < 
  ,  32000   33000,     
     , 33000   
 32536,     32000  .

 <  U<          
,         ;  
 :

        1  -5  5  WITHIN

   .

     (  ),   
  ( ),    
  :

        :  WITHIN  ( test low high -- flag )   OVER - >R - R>  U<  ;

A.6.2.2530   [COMPILE]
 :
        : name2 ... [COMPILE] name1 ... ;  IMMEDIATE

A.6.2.2535   \
 :
        5 CONSTANT THAT  \ -   THAT

.7    

  Forth  ,   OS.  1024  
     ,     
Forth    .      
  ,    
//   .     
     -  ,  
 ,        .

                                                                            182


   Forth     
,   ,    , 
  .     
      OS;  ,  
,     Forth     
  .           
     .

 ,   ,     
 ,       
 , ANS Forth ,       
,      .   
 ,       OS.

.7.2  


  Forth  ,    . 
       16   64 
.      "".

.7.6 

A.7.6.2.2190   SCR
SCR   .

.8     

 Forth  8-  16-      
   -.   Forth     
 ,    Forth      32-  
 ,        . 
   ,        
  .

 ,    ,      
   :

1. ,     2xxx,    -,   
   .     ,   
,    ,    .

2.     Dxxx        
.

3.     Mxxx        
  . ,      ,  
  .

  A.3.1      Forth.

.8.6 

                                                                            183


A.8.6.1.0360   2CONSTANT
 :
        x1 x2 2CONSTANT name

A.8.6.1.0390   2LITERAL
 :
        : X ... [ x1 x2 ] 2LITERAL ... ;

A.8.6.1.0440   2VARIABLE
 :
        2VARIABLE name

A.8.6.1.1070   D.R
 D.R, "R"   RIGHT.

A.8.6.1.1090   D2*
.: A.6.1.0320 2*   .

A.8.6.1.1100   D2/
.: A.6.1.0330 2/   .

A.8.6.1.1140   D>S
  ,     ,  
            
 DROP.  ,  DROP      
(  ),      
    .

A.8.6.1.1820   M*/
M*/    Chuck Moore     
  Forth.        
,   -. ,    
  .        
 CPUs.  ,      -  
.

A.8.6.1.1830   M+
M+ -     .

.9    

CATCH  THROW       
,          
   .      
" "   ,   C setjmp()  longjmp(), 
 LISP CATCH   THROW.   Forth, THROW     
" EXIT"  CATCH,  ,   THROW 
 .

                                                                            184


  " EXIT" Forth     
      .     
,     (,  CATCH  THROW),   
    ""     
.

THROW         
ABORT  ABORT",   ,    CATCH, 
    ABORT.

   CATCH  THROW   ,  
.        .   
,     DEPTH , 
    .

SP@  ( -- addr )  ,    .

SP!  ( addr -- )     addr,   
       ,    
      addr  SP@.

RP@  ( -- addr )  ,    .

RP!  ( addr -- )      addr,   
         ,  
        addr  RP@.

        VARIABLE HANDLER   0 HANDLER !  \    

        : CATCH  ( xt -- exception# | 0 ) \  addr  
           SP@ >R         ( xt ) \     
           HANDLER @ >R   ( xt ) \   
           RP@ HANDLER !  ( xt ) \   
           EXECUTE        ( )    \     THROW
           R> HANDLER !   ( )    \   
           R> DROP        ( )    \    ptr
           0              ( 0 )  \  
        ;

        : THROW  ( ??? exception# -- ??? exception# )
           ?DUP IF          ( exc# ) \ 0 THROW -  
             HANDLER @ RP!  ( exc# ) \  .  
             R> HANDLER !   ( exc# ) \  . 
             R> SWAP >R     ( saved-sp ) \ exc#   
             SP! DROP R>    ( exc# ) \  
             \     CATCH,   
             \ 
             \   ,  
             \  CATCH  
           THEN
        ;

  ,  HANDLER     - 
 ( ,  ).

                                                                            185


      ,   CATCH    
 ( ,  ABORT).     ,  
    IF  THROW:

        HANDLER @ 0= IF (   ) QUIT THEN

    ,   CATCH   QUIT ,  
    "    ". 
:

        : QUIT
            (     )
            (       
               )
           POSTPONE [
           BEGIN
             REFILL
           WHILE
             ['] INTERPRET  CATCH
             CASE
                0 OF STATE @ 0= IF ." OK" THEN CR  ENDOF
               -1 OF (  ) ENDOF
               -2 OF (    ABORT" ) ENDOF
               (   ) DUP ." Exception # "  .
             ENDCASE
           REPEAT BYE
        ;

       INTERPRET, 
    ,   3.4 
  Forth. ,    QUIT  
     , -  THROW 
     .    QUIT, 
 :

        : ABORT  -1 THROW ;

           , 
  CATCH  THROW       
  .  " "    
   . ,      
   FP@  FP!     CATCH:

        : CATCH  ( xt -- exception# | 0 )
           FP@ >R  CATCH  R> OVER IF FP! ELSE DROP THEN ;

    ,     THROW.  ,  
  ,   CATCH    
,    CATCH.

CATCH  THROW      ""  
 ,        
   INCLUDE-FILE.  INCLUDE-FILE   ( 
CATCH) ,    ,   CATCH 
  ,        
(reTHROWn) ,  ,     ,  
  .

                                                                            186


,   ,     INCLUDE-FILE   
 ,   .     INCLUDE-FILE 
     ,   
 THROW.

.9.3   

      -   
    ,   ABORT.  
 ,    . ,   
      ,  THROW 
        THROW 
 .

.9.3.6   

      . , LOAD  
""  CATCH  THROW ( CATCH , ),  CATCH  
THROW  ""  LOAD (    
      THROW, ).   
         
LOAD   .

.9.6 

A.9.6.1.2275   THROW

 THROW     ,  ,    
  CATCH .       ,  
       CATCH .    i*x 
      xt. ,   
       ,        
(    ),   DROP ,  
    .

 :
        : could-fail ( -- char )
           KEY DUP [CHAR] Q =  IF  1 THROW THEN ;

        : do-it ( a b -- c)   2DROP could-fail ;

        : try-it ( --)
           1 2 ['] do-it  CATCH  IF
             ( x1 x2 ) 2DROP ."  " CR
           ELSE ."   " EMIT CR
           THEN
        ;

        : retry-it ( -- )
           BEGIN  1 2 ['] do-it CATCH  WHILE
             ( x1 x2) 2DROP  ." ,  " CR
           REPEAT ( char )
           ."   " EMIT CR
        ;

                                                                            187


.10    

.10.6 

A.10.6.1.0742   AT-XY
        
CRT,         .   
,   ,   .

A.10.6.1.1755   KEY?
          . 
   -     .    
       ,   
    ,     
  .

 KEY  KEY? ,       
  ,      ,   , 
  . ,     
,   EKEY  EKEY?.    
KEY? / KEY  EKEY? / EKEY    ,   
  KEY?  KEY ,       
    .

A.10.6.2.1305   EKEY
EKEY          
 ""  ,    
   ,     
   ,      
   .

EKEY        
     ,  
 .   ,      
,        ,  
    .

 ,         " 
",  ,  EKEY,     
    .   ,  
" "    , x,y   , 
 ,    .       
 EKEY    " "    
   .

    Forth,   MS-DOS  PC 
 . ,     
 - "" PC 8-  .      
 0  127  ASCII .   128  255  
     ,  ,   
 ,     .     
,      "-", 
          
.

                                                                            188


   ,   -,   
    . ,    "1"  
       ,     
 .

     MS-DOS   , 
      ,   
,   "-",     
 (,  ).

EKEY        ,   
 .    ,    
  EKEY   :

   MAX-CHAR   255.

   DOS-KEY ( -- char )   
  MS-DOS "  STDIN" ( 21h,  07h)  
 DOS-KEY? ( -- flag)     MS-DOS " 
 STDIN" ( 21h,  0Bh).

        : EKEY?  ( -- flag )  DOS-KEY?  0<>  ;

        : EKEY  ( -- u )  DOS-KEY  ?DUP 0= IF  DOS-KEY 256 +  THEN ;

        : EKEY>CHAR  ( u -- u false | char true )
           DUP 255 > IF          ( u )
             DUP 259 = IF         \ 259  Ctrl-@ (ASCII NUL)
               DROP 0 TRUE EXIT   \   -  
             THEN FALSE EXIT      \   
           THEN  TRUE             \   ASCII.
        ;

        VARIABLE PENDING-CHAR   -1 PENDING-CHAR !

        : KEY?  ( -- flag )
           PENDING-CHAR @ 0< IF
              BEGIN  EKEY? WHILE
                EKEY EKEY>CHAR IF
                  PENDING-CHAR !  TRUE EXIT
                THEN DROP
              REPEAT  FALSE EXIT
           THEN  TRUE
        ;

        : KEY  ( -- char )
           PENDING-CHAR @ 0< IF
              BEGIN  EKEY  EKEY>CHAR 0= WHILE
                DROP
              REPEAT  EXIT
           THEN  PENDING-CHAR @  -1 PENDING-CHAR !
        ;

                                                                            189


 -  ,    
 ,      (  EKEY),  
     ""  (  KEY).

,  EKEY  -  0  255    256  511. EKEY 
  259,    Ctrl-Shift-@  , 
   - 0 (ASCII NUL).  ASCII   ASCII 
NUL  Ctrl-Shift-@,         ASCII NUL 
(    MS-DOS,     ,  
   -).

     "  STDIN" ( 
7)    " STDIN" ( 8) -    
 DOS " Ctrl-C" - ,     
(Ctrl-C     ,   ).   
,    " STDIN" ( 8)   
 EKEY, Ctrl-C    ,  Ctrl-Shift-@  
  ,        
 0,3   Ctrl-C  ,   3 -  
-,   .   "   " -   
 8     EKEY,   7   -. 
:

        : EKEY  ( -- u )
           DOS-KEY-FUNCTION-8  ?DUP  0=  IF
             DOS-KEY-FUNCTION-7  DUP 3  =  IF
               DROP 0  ELSE  256 +
             THEN
           THEN
        ;

,   Forth   Ctrl-C  ,  
     ,   7 DOS 
   (      
       Ctrl-C  
  Forth    ).

 Forth        KEY,  
 EKEY,  :

        : KEY   ( -- char )  DOS-KEY  ;

        : KEY?  ( -- flag )  DOS-KEY? 0<>  ;

   :

a)  ,   KEY,    
 ,      (, 
 ,           
"A") , ,   ,  ,  
   (,   4)   
   .

b)  ,      ,  
  KEY ,      . ,   
,       . ,   -  
   ,       "escape" 
.  

                                                                            190


  EKEY,        
      ;       
          
     .  EKEY ,   
,    .

   EKEY  MS-DOS   ,    BIOS 
"Read Keyboard Status" ( 16h,  01h)    
"Check Keyboard" ( 16h,  11h).    
  ,         
,        (,  
 "1").  - ,    BIOS    
 .     ""    
" ",    DOS  STDIN.

A.10.6.2.1306   EKEY>CHAR
EKEY>CHAR        
,       .

,        
    ,        
 .

A.10.6.2.1325   EMIT?
  -     ,   
,    ,     
  .

A.10.6.2.1905   MS
   ,    .     
   ,   .  
     -   "  
"  .  ,    
"  " (  )     
  .

A.10.6.2.2292   TIME&DATE
   /  .    
   .

.11      

  Forth      ,    
   Forth    . Forth-83 
     OS.   ,   
   .

,      ,   .  
  Forth        
 ,      .   
            .  
   .

     .  ,  , 
       .    
,           
.          
  .

                                                                            191


       
     : OPEN, CLOSE, READ,  ..   
   ,        
  ,        
  .      -FILE  
  .       
  ANS ,   ,      
          
.

        .

.11.3   

.11.3.2   

     ;   , 
        .  
        ,   
        . 
       ,   .

.11.6 

A.11.6.1.0765   BIN
   ,       
,         
  ,     .

  READ-FILE  WRITE-FILE -    
,   ,   ,  8 .  
  ,   BIN,     
          .  
      "wide"   
    .

A.11.6.1.1010   CREATE-FILE
 :
        : X .. S" TEST.FTH" R/W CREATE-FILE  ABORT" CREATE-FILE FAILED"
        ... ;

A.11.6.1.1717   INCLUDE-FILE
 -        
     :

1)    (  FILE-POSITION)  
 .     , 
        .

                                                                            192


2)         
 ,      .    
 "  ",    ""  pipe 
    --.

A.11.6.1.1718   INCLUDED
 :
        ... S" filename" INCLUDED ...

A.11.6.1.1970   OPEN-FILE
 :
        : X .. S" TEST.FTH" R/W OPEN-FILE  ABORT" OPEN-FILE FAILED" ... ;

A.11.6.1.2080   READ-FILE
       :

        BEGIN                  (  )
        ... READ-FILE THROW    (  )
        ?DUP WHILE             (  )
        ...                    (  )
        REPEAT                 (  )

   THROW    ()  
,        ior 
 READ-FILE.       ""  
.

A.11.6.1.2090   READ-LINE
       ,  
    ,   
 ,     .   
,      .    
      . 
    ,   
    ,      
     .

         
   .

  -     
 :

        BEGIN                  (  )
        . . . READ-LINE  THROW (  not-eof-flag )
        WHILE                  (  )
        . . .                  (  )
        REPEAT DROP            (  )

                                                                            193


   THROW    ()  
 I/O,        
"ior"  READ-LINE.

READ-LINE      ,    ( 
)  -  ,       
     .

A.11.6.1.2165   S"
 :
        ... S" ccc" ...

   S"     
     .     
      ,  
     S"   
. ,     ,  S" 
     . ,   
  EVALUATE, LOAD, INCLUDE-FILE  INCLUDED    
  ,    S", 
       
  .

     ,   
  "" ,  .

,     S"   PARSE 
 WORD COUNT  S",     
.

.12      

    ,      
       ANS Forth.   ,  
ANS Forth       ,   
 Forth     ,     
 Forth      ,   
    .    
 ,   Forth Vendors Group Floating-Point 
Standard,    1984,       ANS 
Forth.        Forth Vendors Group Floating-
Point Standard.     ,  
     ,      
            
     .     
 :

-      ; , REALS  FLOATS, 
  REAL+  FLOAT+.
-  ; , FPICK.
-        ;
  , FSINCOS, F~, DF@, DF!,  SF@  SF!.

          
   :

                                                                            194


   :          
  ;         
  .   ,      
      FLOATING-STACK  ENVIRONMENT?.   
   ,     
,      ,    
             
     .

   :     DECIMAL.   
  -     .     
,    ANS Forth    
  "E" (. 12.3.7     
).         
     ,  ,    
    ,       
        .

   :         
      -    ANS 
Forth,         DF@, SF@, DF!, 
 SF!              
 IEEE   .  IEEE     
         
     .

.12.3   

.12.3.5  

        ,  
CREATE      ,   
     .     
      ,   
       . 
:

        : FCONSTANT ( F:  r -- )
           CREATE FALIGN  HERE  1 FLOATS ALLOT  F!
           DOES> ( F:  -- r )  FALIGNED F@ ;

.12.3.7     

      ,   
    Forth   ,  
   ,   ,     
 ,   -.  ,    
,  ,        
 ;       
           
     .

.12.6 

                                                                            195


A.12.6.1.0558   >FLOAT
>FLOAT           
ASCII .      ,   
,         
  ,   >FLOAT     . 
>FLOAT   ,       ANS Forth 
        .

    FORTRAN.      
  ,       
   .

    >FLOAT       ,  
  ,     ANS Forth   
 .

A.12.6.1.1427   F.
, 1E3 F.  1000..

A.12.6.1.1492   FCONSTANT
 :
        r FCONSTANT name

A.12.6.1.1552   FLITERAL
 :
        : X ... [ ... ( r ) ] FLITERAL ... ;

A.12.6.1.1630   FVARIABLE
 :
        FVARIABLE name

A.12.6.1.2143   REPRESENT
         . 
    ,     IEEE-754, 
      .  
    ,  ,  .   
  ,  REPRESENT      
  ,  "+infinity"  "nan",  
.

A.12.6.2.1489   FATAN2
FSINCOS  FATAN2 -   ,   
  2-  .       
 ,         
      ,     
  .

FSINCOS        , 
       X.   
 ,   y  x,  2-    
       . 
 ,  FSINCOS F/ -  FTAN,   
      ,    FSINCOS  
FATAN2    .  

                                                                            196


                                                                                                                                        
         ,   
  -  .     - 
          .

    FATAN2   ,     
  .  ,    FSINCOS FATAN2 - 
         FSINCOS. 
 ,     FSINCOS     
, FATAN2    .   
,     FATAN2   .

A.12.6.2.1516   FEXPM1
    ,    -   ,  
      . 
 ,   cosh(x),      
  FEXPM1;        
 x,    FEXP.

     ; ,     15 % 
 ;   ?      (6  
) :

        1.  FLN  FEXP:
        FLN  1.15 = 0.139762,
          365 = 3.82910E-4,
         ,  FEXP = 1.00038, 
          (1),     = 0.038%.

 ,      .

        2.  FLNP1  FEXPM1:
        FLNP1  0.15 = 0.139762, ( -       
           ,           )
        
          365 = 3.82910E-4,
         ,    (1) ,
            FEXPM1 = 3.82983E-4,
            = 0.0382983%.

 -   6 .

         
   . ,    
  :

        : FSINH  ( r1 -- r2 )
           FEXPM1  FDUP  FDUP 1.0E0 F+  F/  F+  2.0E0 F/ ;

A.12.6.2.1554   FLNP1
    ,      ,  
      . , 
FLN    :

                                                                            197


        : FLN   1.0E0 F-  FLNP1 ;

.: A.12.6.2.1516 FEXPM1.

A.12.6.2.1616   FSINCOS

.: A.12.6.2.1489 FATAN2.

A.12.6.2.1640   F~
    "   "    
-- ""   ,    ,  
" ".

.13  Locals  

     locals.   , 
 ANS Forth      locals,  :

- ,      ;
-    Forth      ,   ; 
-         ,     
        .

  ,     ,  
      locals -     
  ,   locals     
    .   ,  
,      locals,    
           
, ,   , " " ANS Forth,   
   .

          
   locals       
 ,      ,   
   . ,      
     ,    
 locals,   ,   ,  
  locals, :

-      ;
-   ;
-     local  
   ;
-       Forth; 
-  ,      .

  ,    ,    
locals,     ,       
  ,  ANS Forth ,     
 ,      ,   .

 ,  (LOCAL),   ,   
       
 ,   ,  locals  .  
  ,       
 .

                                                                            198


- ,        
  Creative Solutions, Inc.:

        : LOCALS|  ( "name...name |" -- )
           BEGIN
              BL WORD   COUNT OVER C@
              [CHAR] | - OVER 1 - OR  WHILE
              (LOCAL)
           REPEAT 2DROP   0 0 (LOCAL)
        ;  IMMEDIATE

        : EXAMPLE  ( n -- n**2 n**3 )
           LOCALS| N |   N  DUP N *  DUP N * ;

-  : ( LOCAL name )   
  :

        : LOCAL  ( "name" -- )  BL WORD COUNT (LOCAL) ;  IMMEDIATE

        : END-LOCALS  ( -- )  0 0 (LOCAL) ;  IMMEDIATE

        : EXAMPLE  ( n -- n n**2 n**3 )
           LOCAL N  END-LOCALS   N  DUP N *  DUP N * ;

    ,  , ,  
         
.     locals   -  
          
. ,   local  Johns Hopkins 
  ,         
.

    13,     
 locals.    :

        a) : {  ( "name ... }" - )
           BEGIN  BL WORD COUNT
              OVER C@ [CHAR] } -  OVER 1 -  OR WHILE
              (LOCAL)
           REPEAT 2DROP 0 0 (LOCAL)
        ;  IMMEDIATE

        b) : JOE  ( a b c -- n )
           >R 2* R> 2DUP + 0
           { ANS 2B+C C 2B A }
           2 0 DO  1 ANS + I + TO ANS  ANS . CR  LOOP
           ANS . 2B+C . C . 2B . A . CR  ANS
        ;

        c) 100 300 10 JOE .

                                                                            199


 {  a)    local,    
locals  .       ,  
 locals       
 ,  locals        . 
 JOE  b)    . ,  
        ,   
locals.    ,  -  , 
   .

,    locals,  B,   
(2B+C),     ()  ANS.  ,  
locals  , JOE   . ,   locals 
      do-loops.   
 c)    :

        1 (ANS    ),
        3 (ANS  ),
        3 (ANS), 610 (2B+C), 10 (C), 600 (2B), 100 (A), and
        3 (ANS    JOE).

 locals   ,  JOE  .   
 locals ,   locals JOE    JOE 
      ; (  ).

     ,   .  
,   LOCAL  END-LOCALS     {  
 .

        d) : ZERO   0 POSTPONE LITERAL POSTPONE LOCAL ; IMMEDIATE

        e) : MOE  ( a b )
             ZERO TEMP  LOCAL B  1+ LOCAL A+  ZERO ANSWER ;

        f) : BOB  ( a b c d )  { D C }  { B A } ;

 -       13.3.3.2a.  e) 
  TEMP    local,    .  
-     ,   ZERO,  
  (LOCAL)  . , 1+  
 A+ .   ZERO   ANSWER 
,         
(LOCAL). , MOE   ( END-LOCALS). BOB  f) 
      locals.

        g) : ANN  ( a b  -- b )  DUP >R  DUP IF { B A } THEN  R> ;

        h) : JANE  ( a b -- n )  { B A }  A B + >R  A B -  R> / ;

ANN  g)   . IF ... THEN    locals  
13.3.3.2b,   B,       locals, 
 13.3.3.2c. JANE  h)  13.3.3.2d,   locals  
  A  B        .

        i) : CHRIS  ( a b)
           { B A }  ['] A EXECUTE  5 ['] B >BODY !  [ ' A ] LITERAL LEE ;

                                                                            200


CHRIS  i)    13.3.3.2e.  EXECUTE local 
 A    .   B  >BODY 
      ;  ,  
locals   ,        
 ,  .

 ,       local 
     LEE,  ,    
,  LEE  EXECUTE      A  
  CHRIS ,      LEE.

13.3   

 13.3.3.2d         
  . 13.3.3.2c  .

13.3.3.2b       local,   
         
 . ,    -   ,  
   ,   locals   , 
    ,   .

   locals  ( )  , 
       
locals.

     local,   
13.3.3.2d     ,      
 , -       
locals.

        (, 
 >R R>)       local,   
 .   locals   ,  
Local        
 ,        
  .

  locals  , DO..LOOP    13.3.3.2g, 
    .  ,  
(LOCALS),   ,    
    ,     
   Forth.

.13.6 

A.13.6.1.2295   TO
 :
        x TO name

.: A.6.2.2295 TO.

                                                                            201


A.13.6.2.1795   LOCALS|
         A.13, .  
   ;   ,   
 .

.14     

         
      ALLOT.    
     -   
  (      ALLOT).   
         ,  
   ,    .

.15    

       ,    
  Forth.

    ,    , 
   Forth   .   
  Forth       
    ,   ,  
     -    
 Forth.

     DUMP,  ..,   
   ,      
     Forth  CPU.   -  , 
   ,     .

    Forth   ,     
""  "" -      ,  
   .       
   ,      .

.15.6 

A.15.6.1.0220   .S
.S -  ,      Forth.  -  
   Forth.

A.15.6.1.2194   SEE
SEE     ,    
     .

A.15.6.1.2465   WORDS
WORDS -  ,      Forth.  -  
   Forth.

                                                                            202


A.15.6.2.0470   ;CODE
 :
        : namex ... <create> ... ;CODE ...

 namex -  ,  <create> -  CREATE    
 ,   CREATE.

A.15.6.2.0930   CODE
  Forth   ,    
ASSEMBLER   ,      
    ,   
 Forth.  ,   ,  , 
   END-CODE.

A.15.6.2.1015   CS-PICK
   ,   dest     , 
       . :

        \      
        \    "C"  "continue".

        : ?REPEAT  ( dest -- dest ) \ 
                   ( flag -- )      \ 
           0 CS-PICK   POSTPONE UNTIL
        ; IMMEDIATE

        : XX  ( -- ) \   ?REPEAT
           BEGIN
             ...
           flag ?REPEAT  (   BEGIN  flag - false )
             ...
           flag ?REPEAT  (   BEGIN  flag - false )
             ...
           flag UNTIL    (   BEGIN  flag - false )
           ...
        ;

A.15.6.2.1020   CS-ROLL
   ,   ,   origs  dests  
         
. , WHILE   ,   IF  CS-ROLL, 
 :

        : WHILE  ( dest -- orig dest )
           POSTPONE IF  1 CS-ROLL
        ; IMMEDIATE

                                                                            203


A.15.6.2.1580   FORGET
 :
        ... FORGET name ...

FORGET ,        
     -   .   
          ,   
    Forth;      
 . ,  Forth   ROM,  FORGET 
,  RAM ,   ?   
   MARKER.

A.15.6.2.2531   [ELSE]
 :
        ... flag [IF] ... [ELSE] ... [THEN] ...

A.15.6.2.2532   [IF]
 :
        ... flag [IF] ... [ELSE] ... [THEN] ...

A.15.6.2.2533   [THEN]
 :
        ... flag [IF] ... [ELSE] ... [THEN] ...

 ,       
,    ,    . 
  -        
    -   ,   
       .

     " " - 
,       ,  
  . :

        \  16-Bit?  TRUE,    16BIT\
        \  . ,    .

        VARIABLE 16-BIT?

        : 16BIT\  ( -- )  16-BIT? @  IF  POSTPONE \  THEN
        ;  IMMEDIATE

      ,     
   .

       , 
       . , 
  ANS Forth       
  . ,  ,      
(, EVALUATE, BLOCK,   ).

                                                                            204


        : [ELSE]  ( -- )
           1 BEGIN                               \ level
             BEGIN  BL WORD COUNT  DUP  WHILE    \ level adr len
               2DUP  S" [IF]"  COMPARE 0= IF     \ level adr len
                 2DROP 1+                        \ level'
               ELSE                              \ level adr len
                 2DUP  S" [ELSE]"  COMPARE 0= IF \ level adr len
                    2DROP 1- DUP IF 1+ THEN      \ level'
                 ELSE                            \ level adr len
                   S" [THEN]"  COMPARE 0= IF     \ level
                     1-                          \ level'
                   THEN
                 THEN
               THEN ?DUP 0=  IF EXIT THEN        \ level'
             REPEAT  2DROP                       \ level
           REFILL 0= UNTIL                       \ level
           DROP
        ;  IMMEDIATE

        : [IF]  ( flag -- )
           0= IF POSTPONE [ELSE] THEN
        ;  IMMEDIATE

        : [THEN]  ( -- )  ;  IMMEDIATE

.16     

       . FIG-
Forth, Forth-79, polyFORTH,  Forth-83      -  
 .    ,  
 ,  . ALSO/ONLY ,   Forth-83 
 ,    .  
 ,     ,     
.

       ""  
,       .    
   ,    " " 
        ,   
. ALSO/ONLY    "",   
 Forth         
 .

     wid    - 
      ,     
,   ,   Forth-83 
  ,        , 
 - .  -    .

        
"  "       .  
   "   " SET-ORDER 
   -1.  ,    
ALSO/ONLY,        ONLY.

                                                                            205


        . 
F83 ( Forth 83)   PREVIOUS,     
""      CONTEXT @ PREVIOUS. 
    "",  ALSO CONTEXT !.  
,       ,   
    .

ANS Forth   CONTEXT,        
      ,   .

,  : ()     .  
,          
,      : ().

        : :  GET-ORDER SWAP DROP  GET-CURRENT  SWAP SET-ORDER  : ;

.16.2  

 
,    ""    
   .

.16.3.3   

   ,    :

        : FOO  ... [ ... SET-CURRENT ] ... RECURSE ...
        ;  IMMEDIATE

RECURSE , ; (  ),  IMMEDIATE       
,     .

.1'.' 

A.16.6.1.2192   SEARCH-WORDLIST

   SEARCH-WORDLIST  c-addr u,   
 c-addr   FIND.    c-addr u  
    ,     
   ,    .     
     SEARCH-WORDLIST     
 ,  ,    
.

 SEARCH-WORDLIST     ,    ,  
 FIND.  -     ,   Forth  
 .

A.16.6.2.0715   ALSO
 -  ALSO/ONLY       .

                                                                            206


        WORDLIST CONSTANT ROOT   ROOT SET-CURRENT

        : DO-VOCABULARY  ( -- ) \  
          DOES>  @ >R           (  ) ( R: widnew )
           GET-ORDER  SWAP DROP ( wid1 ... widn-1 n )
           R> SWAP SET-ORDER
        ;

        : DISCARD  ( x1 .. xu u - ) \  
           0 ?DO DROP LOOP          \ DROP u+1  
        ;

        CREATE FORTH  FORTH-WORDLIST , DO-VOCABULARY

        : VOCABULARY  ( name -- )  WORDLIST CREATE ,  DO-VOCABULARY ;
        : ALSO  ( -- )  GET-ORDER  OVER SWAP 1+ SET-ORDER ;
        : PREVIOUS  ( --  )  GET-ORDER  SWAP DROP 1- SET-ORDER ;
        : DEFINITIONS  ( -- )  GET-ORDER  OVER SET-CURRENT DISCARD ;
        : ONLY ( -- )  ROOT ROOT  2 SET-ORDER ;

        \ Forth-83 ;   ONLY
        : SEAL  ( -- )  GET-ORDER 1- SET-ORDER DROP ;

        \ F83 and F-PC ;   CONTEXT
        : SEAL  ( -- )  GET-ORDER OVER 1 SET-ORDER DISCARD ;

  ONLY   "ROOT"    
  F83,  ,       
  ROOT  FORTH.    FORTH  ONLY,  
:

        <  ... WORDLIST CONSTANT ROOT ...  >

        CREATE FORTH GET-ORDER OVER , DISCARD DO-VOCABULARY

        : ONLY  ( -- )  -1 SET-ORDER ;

 -   GET-ORDER  SET-ORDER,   
 FIND.  WORDLIST, SEARCH-WORDLIST, GET-CURRENT  SET-
CURRENT        .

        16 CONSTANT #VOCS
        VARIABLE #ORDER
        CREATE CONTEXT  #VOCS CELLS ALLOT

        : GET-ORDER  ( -- wid1 .. widn n )
           #ORDER @ 0 ?DO
             #ORDER @  I - 1- CELLS CONTEXT + @
           LOOP
           #ORDER @
        ;

                                                                            207


        : SET-ORDER  ( wid1 .. widn n -- )
           DUP -1 = IF
             DROP  <       n>
           THEN
           DUP #ORDER !
           0 ?DO  I CELLS CONTEXT + ! LOOP
        ;

        : FIND  ( c-addr -- c-addr 0 | w 1 | w -1 )
           0                     ( c-addr 0 )
           #ORDER @ 0 ?DO
             OVER COUNT          ( c-addr 0 c-addr' u )
             I CELLS CONTEXT + @ ( c-addr 0 c-addr' u wid)
             SEARCH-WORDLIST     ( c-addr 0; 0 | w 1 | w -1 )
             ?DUP IF             ( c-addr 0; w 1 | w -1 )
               2SWAP 2DROP LEAVE ( w 1 | w -1 )
             THEN                ( c-addr 0 )
           LOOP                  ( c-addr 0 | w 1 | w -1 )
        ;

 ,       -   
    , SET-ORDER      
-     .

.17    

.17.6 

A.17.6.1.0245   /STRING
/STRING        "" 
  .   n    ,  
     n      . 
/STRING -   WORD   .

A.17.6.1.0910   CMOVE
 c-addr2     , ( ,  c-addr2 - 
   c-addr1  c-addr2 -    c-addr1 u CHARS +), 
  .

 :
     100: "ABCD".
 


        100 DUP  CHAR+  3 CMOVE    100 - "AAAA".

  CMOVE  CMOVE>   MOVE.

                                                                            208


A.17.6.1.0920   CMOVE>
 c-addr1     , ( ,  c-addr1 
    c-addr2  c-addr2 -    c-addr1 u CHARS 
+),   .

 :
     100: "ABCD".
 


        100 DUP CHAR+ SWAP 3 CMOVE>,    100 - "DDDD".

A.17.6.1.0935   COMPARE
  Forth    ,  
,    ,    ,  
  .     .

A.17.6.1.2191   SEARCH
  Forth    ,  
,    ,    ,  
  .     .

A.17.6.1.2212   SLITERAL
   6.1.2165 S"    
 :

        : S" ( "ccc<quote>" -- )
           [CHAR] " PARSE   POSTPONE SLITERAL
        ; IMMEDIATE

B.  ( )

 
----------------------
Forth-77 , Forth Users Group, FST-780314.
Forth-78 , Forth International Standards Team.
Forth-79 , Forth Standards Team.
Forth-83   , Forth Standards Team.

,    ,   Forth Standards Team, 
 ,      .  
  ,        
    ANSI, IEEE     . 
  Forth Standards Team    X3J14  
.


-----
Brodie, L.  Starting FORTH (2nd ed).  Englewood Cliffs, NJ:  Prentice Hall, 
1987.

Brodie, L.  Thinking FORTH.  Englewood Cliffs, NJ:  Prentice Hall, 1984.

                                                                            209


Feierbach, G. and Thomas, P.  Forth Tools & Applications.  Reston, VA:  Reston 
Computer Books, 1985.

Haydon, Dr. Glen B.  All About FORTH, Third Edition.  La Honda, CA: 1990.

Kelly, Mahlon G. and Spies, N.  FORTH:  A Text and Reference.  Englewood 
Cliffs, NJ: Prentice Hall, 1986.

Knecht, K.  Introduction to Forth.  Indiana:  Howard Sams & Co., 1982.

Koopman, P. Stack Computers, The New Wave. Chichester, West Sussex, England: 
Ellis Horwood Ltd. 1989

Martin, Thea, editor.  A Bibliography of Forth References, Third Edition.  
Rochester, New York: Institute of Applied Forth Research, 1987.

McCabe, C. K.  Forth Fundamentals (2 volumes).  Oregon:  Dilithium Press, 1983.

Pountain, R.  Object Oriented Forth.  London, England:  Academic Press, 1987.

Ouverson,  Marlin, editor.  Dr. Dobbs Toolbook of Forth.  Redwood City, CA:  
M&T Press, Vol. 1, 1986; Vol. 2, 1987.

Terry, J. D.  Library of Forth Routines and Utilities.  New  York:  Shadow Lawn 
Press, 1986

Tracy, M. and Anderson, A.  Mastering FORTH (revised ed).  New York:  Brady 
Books, 1989.

Winfield, A.  The Complete Forth.  New York:  Wiley Books, 1983.  Journals, 
magazines and newsletters

Forsley, Lawrence P., Conference Chairman.  Rochester Forth Conference 
Proceedings. Rochester, New York:  Institute of Applied Forth Research,
1981 to present.

Forsley, Lawrence P., Editor-in-Chief.  The Journal of Forth Application and 
Research.Rochester, New York:  Institute of Applied Forth Research,
1983 to present.

Frenger, Paul, editor.  SIGForth Newsletter.  New York, NY:  Association for 
Computing Machinery, 1989 to present.

Ouverson, Marlin, editor.  Forth Dimensions.  San Jose, CA:  The Forth Interest 
Group, 1978 to present.

Reiling, Robert, editor.  FORML Conference Proceedings.  San Jose, CA:  The 
Forth Interest Group, 1980 to present.

Ting, Dr. C. H., editor.   More on Forth Engines.  San Mateo, CA:  Offete 
Enterprises, 1986 to present.

 
----------------

                                                                            210


Hayes, J.R. "Postpone" Proceedings of the 1989 Rochester Forth Conference.  
Rochester, New York:  Institute for Applied Forth Research, 1989.

Kelly, Guy M. "Forth." McGraw-Hill Personal Computer Programming Encyclopedia  
Languages and Operation Systems.  New York:  McGraw-Hill, 1985.

Kogge, P. M.  "An Architectural Trail to Threaded Code Systems."  IEEE Computer 
(March, 1982).

Moore, C. H.  "The Evolution of FORTH - An Unusual Language."  Byte (August 
1980).

Rather, E. D.  "Forth Programming Language."  Encyclopedia of Physical Science 
& Technology (Vol. 5).  New York:  Academic Press, 1987.

Rather, E. D.  "FORTH."  Computer Programming Management.  Auerbach Publishers, 
Inc., 1985.

Rather, E. D.; Colburn, D. R.; Moore, C. H.  "The Evolution of FORTH."  ACM 
SIGPLAN Notices.  (Vol. 28, No. 3, March 1993).

                                                                            211


C.  ( )

     ,      
Forth  ,   ,   , 
,    .       
     .    
 -    B       
Forth.

C.1  Forth

Forth    .   
  -       
, ,  ,    
,     .  
 Forth  ,     
    .

 Forth    ,       .  
, Forth         : 
  ,   ,      
  (, ,  ..)     
,  ,      (),  
     .

  Forth   ,   
,     , , 
, ,    .  , 
       . , 
          , 
   ,       
  MS DOS  UNIX.

Forth       .  ,    
      .  
 Forth,  ,     
 ,        .  
 Forth    ,    
 .        
Forth,        ,  
      .

   Forth -  .  
  Forth     "" -   
  .        
 ,       ,    
   .    
" ". ,      
   ,    Forth  
   .

        
    .

 Forth         . 
  ,      .  
   ,    .  
  ,     
  ,   ,       
,   ,    .  

                                                                            212


      ,   
    .   - 
        ,   
           
Forth.  ,        
       .

   Forth   Forth.   
Forth  " ",     
    Forth.

C.2  Forth

Forth   Charles H. Moore.    Moore  
1960-,  ,   Forth    1970. 
     1971  National Radio Astronomy 
Observatory   11-    .    
     ,       
 ,     ,   
     . 
         
,       -  
    .

   ,       
  .    ,   1976 Forth  
    International Astronomical Union.

 1973, Moore    Forth, Inc    
 . Forth, Inc    Forth 
    ,       
    .  1977, Forth, Inc  
    8-   
"microFORTH",        
   ,   .

   microFORTH,       
   Forth,   1978  Forth 
Interest Group (FIG).    ,   
          
 .   Forth  ,    
 Forth Interest Group         .

 1980,    Forth      Forth 
   FIG.  ,    
,     Forth    
.

C.3   Forth

  Forth     ,  
,    .  ,   
 ,  -      
  Forth.

                                                                            213


  1980-, Rockwell  6502-   Forth  
 ROM, Rockwell 65F11.       
  .   1980 Zilog  
z8800 (Super8)   ENTER (nest), EXIT (unnest)  NEXT  
.

 1981, Moore        
Forth .    Forth, Inc      
NOVIX,    , Moore    1984,  
      1985.   Forth  
  Harris Semiconductor Corp., Johns Hopkins University,  
.

C.4  

     Forth      1977. 
   ,     
 . 1978       Forth 
Interest Group.  1979  1980  ,     
,      Forth 79.

 Forth 79   ,   Forth    
   ,   1983      Forth 
83.

    Forth 83,    
   1986,    American National 
Standard. X3J14    ANS Forth      
1987.   -  .

C.5   Forth

Forth -   ,   ( "") -  
  , ,   ,  
     .   
         
    ,   .

Forth ""      .  - 
      - Forth    
    .

          .  
,  ""     ( ) 
     .     Forth 
,      ,  .  
  ,         
 :  ( ), CR (   
 ),    DEL (      ). 
     ,   . 
,   ,    :   
( ,  Forth), ,   . ,  - 
 :

        HERE      DOES>      !      8493

                                                                            214


  - - .  ,      
Forth ,  , ,  Forth  ,   
 .  "8493"      ,  Forth 
             
.  Forth        
   ,      
.

,  Forth    " 
":

-       .
-    , ,  
  .       
   .
-     ,   ()
      .

Forth    : ,   , 
, ,   .       
   ,    ,  
    .

C.5.1  Forth

 Forth   ,     , 
 .   -     
,     .    
    ( , ,  , 
 ..).  ,      .  
      
 ,        .

    " ",    
 -  : ().  : ,     
,    .      
 -     ,   
    ,    . 
  ; (  ). ,  - :

        : RECEIVE  ( -- addr n )  PAD DUP 32 ACCEPT ;

   - RECEIVE.  (  ) ,   
           . 
 RECEIVE ,       
.  PAD         
 . DUP    ,      
  .  32    .  ACCEPT   
( PAD)   (32)  ,      
32 ,      ,    
 .         
   ,   RECEIVE,   
,    .

                                                                            215


C.5.2  

        
   Forth. Forth    ,  
 LIFO.      Forth   
    .   16-   8-
  16- ,  32-   32- .  -
    ,      .  
         .   
 ,       .

    ,     
.       
,   ,   .   
  ,   .  
 ,      
.     ,    
       ,    
    .

   (   "")   ,  
   .  ACCEPT     
         .      
 BLANK    ,      
(20H)  ,    .  ,

        PAD 25 BLANK

  ,       PAD, 25 . 
   ,    . 
,

        100 SAMPLES

  ,    100    .

         . 
, +      ,     . 
       ,     
         
 .

C.5.3 

Forth -   ,     
   ,   .   
 ,  Forth   ,    
      .

 -  ,       
       .   , 
    ,  .

 -  " ".     Forth  
 ,     -     .  
    ,     
   ,       
 Forth      ,   
  .

                                                                            216


      , 
    : (),   
 .    -   
   ,     
   .  ,   RECEIVE 
( ) ,  PAD,  DUP,  32,   
ACCEPT   .     . 
     ,  ,  
 ,  ,  RECEIVE  ,  
   ,    (  )  
     .      
,     .

     . ,  .  
     ,  
  ,        
  .    ,   Forth 
       BASIC  
LISP,         
.

,     Forth  
,        .  , 
 ,   ,    
   (  Forth - )   
  CALL  JSR  .

    Forth   : ()  
  .  Forth   
 .

C.5.4 

  Forth    CPU,    
.    CODE,    
,         
.  CODE     -, 
  ,    -  
   .   CODE   
   CPU,     ,   CODE, 
    .

 -   Forth.    -   
     ,   
-.        
  CODE ,      
Forth      .

 Forth   (  )    
    ( - , ,   ).  
,       CODE   
 .         
.

C.5.5  

   Forth -      
      " "  
   .     ,  
 -   Forth,       .   

                                                                            217


   1024- .       
,     ,  .   
   ,       
   .     ,   
 ,       . 
     ;       
,     .

-         
  Forth.  ,     
        ,    
Forth         
.

         LOAD. 
   ,     
  16   64   ,   , 
 .   Forth  -   . C.1 .

        Forth.  ,  
Forth      
   ,   .   
 ,    ,  " ". 
       .   
   .

     .     
  ,       . 
     ,  
,       , 
      .  
 Forth       ,   
 Forth.

 Forth,     OS    
 ,      OS  . 
    .  ,    
   ,     , 
  -     ,    
         OS 
.

C.5.6  

    ,    Forth  
 .        
        Forth.  
    ,    
    (      
),        .

  Forth      
,      ,   15.   
 ,          
VARIABLE          
    Forth   .

                                                                            218


  ,   ,  
        
  ,     
.

C.5.7   

    Forth -  ,    
       
 ,      - 
.

, Forth   VARIABLE  2VARIABLE   ,  
    ,   CONSTANT  2CONSTANT   
   -. ,  ,   
  ,        
   .       2ARRAY.  "2" 
  ,          ( 
   2VARIABLE  2CONSTANT).  "2", ,  
          
,    ,     
 .

    ,    "",    
  2ARRAY,    ,       
.   ,   ,  2ARRAY   
  ,         
. ,          
.

    ,       
2ARRAY:

        100 2ARRAY RAW   50 2ARRAY REFINED

  ,    100  ,   - RAW.  
,  - 50  ,   REFINED.    
    2ARRAY    (  
Forth    ,     ),   
  .       
Forth.

   RAW  REFINED,        
 ,       .   
     .  -  ,    
-     DATA     
  RAW:

        : ACQUIRE   100 0 DO DATA  I RAW 2!  LOOP ;

   - ACQUIRE.    DO,  LOOP,  
    ,   0  99.   
, DATA  .  I     
,     RAW.   , 
 RAW,  ,      DATA,  
 2! ( "two-store"),       
.

                                                                            219


,    ,   2ARRAY,     , 
  ,       :

        : 2ARRAY  ( n -- )
           CREATE  2* CELLS ALLOT
           DOES>  ( i a -- a')  SWAP  2* CELLS + ;

    DOES>,   "  
",      2ARRAY,      
   RAW.  ,      
 ,    .  CREATE   
  .  2* CELLS      
        ( ). 
ALLOT        , 
      .

    "-",   
    2ARRAY,  RAW  REFINED.  DOES>, 
       .  
  ,         ,  
  .       (RAW  
),       ,    
(  ALLOT)       
   .     : SWAP  
   ,     . 2* CELLS 
          
,      .  +   
    ,    ,  
  .

  ,   ,      
 . ,        
  , ,     
 .         
,   -     ,  
    ,       
      .      
    -,     
.    ,     
.

C.5.8  

 C.1     Forth.    
,     ,    
  ,     ,   
Forth       .   
   STD-bus   8088    , 
    .

       8  ,  
 40H.     CONSTANT   1,    
    ;   ,   
   .  LIGHTS     
.  LIGHT         . 
   -  ,     
 .

                                                                            220


 ,  255 LIGHT   ,   0 LIGHT   
.

        Block 180
        0. (   )
        1. HEX 40 CONSTANT LIGHTS   DECIMAL
        2. : LIGHT ( n -- )  LIGHTS OUTPUT ;
        3.
        4. VARIABLE DELAY
        5. : SLOW  500 DELAY ! ;
        6. : FAST  100 DELAY ! ;
        7. : COUNTS 256 0 DO I LIGHT  DELAY @ MS  LOOP ;
        8.
        9. : LAMP ( n -  )  CREATE ,  DOES> ( a -- n )   @ ;
        10. 1 LAMP POWER       2 LAMP HV     4 LAMP TORCH
        11. 8 LAMP SAMPLING   16 LAMP IDLING
        12.
        13. VARIABLE LAMPS
        14. : TOGGLE ( n -- ) LAMPS @ XOR DUP LAMPS ! LIGHT ;
        15.

 C.1 -   Forth,  ,    
.

 4 - 7,    ,      
  ,   .  DELAY   
   -   DELAY    
.   DELAY   SLOW  FAST, 
  Forth ! ( "store")     
,     .  COUNTS    0 
 255 ( Forth      ),  
         ,  
DELAY.  @ ( "fetch")    ,   
   DELAY.     MS,   
  .   COUNTS ,   
   0  255   .   ,  
 :

        SLOW COUNTS   or   FAST COUNTS

 .

 9     .   
     .  LAMP  
 ,     ,   
 ,      .  10,  11 
   LAMP    . 
      POWER ,    . 
,    ,    , 
    Forth  CONSTANT.   
   , ,  ,     
.

                                                                            221


,   13  14,   ,     
. LAMPS  ,     . 
 TOGGLE   (        LAMP)  
    ,    LAMPS.

  ,    TOGGLE -   ,  
  .   , :

        POWER TOGGLE   or   SAMPLING TOGGLE

 ,  ,      
.

           
 ,      .     
 (  )  ,    
    .

 ,         
.  ,     ,    
,    ,  :

        HEX FF 40 OUTPUT

 ,    .   - ,  - 
   ,      
 ""   .      
 ,    ,     
   .

C.6    

  Forth    1970.  
  Forth   ""   
,   ,     .   
    ,     
    .     
 ,      . 
       ,  
    .

  Forth  ,   ,   
     ,   , 
 ,     . ,  
    50   Z80.   
   PC,       
.   ,     
 ,  ,    
,    ,  .    
     68000    100  
     ,    
.

      , 
     , ,   ,  
 .     ,  , 
    Forth.     
   ,       
 .        
  ,      
.

                                                                            222


C.7    

,           
 ,        
    .

,      : , 
, ,  .  Forth    
 . Forth     , 
    . Forth  
  " "   Forth  
     ,  "", 
       (,  
 ,     ).

       
,   .   ,  
 ,      .    
  ,     ,    
         .

 Forth   ,    
,      ,     
    .

C.8 

Forth        
.    ,    ,   
     ,   
      .

                                                                            223


D.   ANS Forth ( )

 ANS Forth,      Forth.  
     ,    
  ANS Forth   , Forth 83.

D.1 FIG Forth ( 1978)

FIG Forth  ""   Forth,  Forth 
Interest Group (FIG).  FIG Forth,       
-  ,      Forth. 
 FIG     ,      
  .     FIG Forth 
       , ,   FIG Forth,  
  ,    " ", 
       
Forth.

FIG Forth        , 
   Forth.     
,   FIG Forth   " Forth".

 FIG Forth       
Forth    .      Forth 
     "" FIG Forth.

D.2 Forth 79

Forth-79  -     1978  1980, Forth Standards Team, 
   Forth   (  
  Forth 77  Forth 78    ).

Forth 79   ,   16-  ,  
  (  ),  ,   
.       "  ", 
  ASCII  .

Forth-79         
 ,         
.

D.3 Forth 83

Forth-83 ,  Forth Standards Team,    1983. Forth 83 
 ,     Forth 79.

Forth 83      Forth 79.  Forth 83  
     Forth 79. , 
   ,    PICK  
ROLL,  ,  ',   ',  "true" 
,  NOT,  ""  ,  
VOCABULARY   . Forth 83    
Forth 79,      ,     
    (    ,   
    ).

                                                                            224


   Forth    Forth-83 ,   
 " "  Forth-83.

 ,     Forth 79  Forth 83,  
   ,    Forth 
   ,     Forth 83. , 
   Forth   Apple Macintosh 
  Forth 79.

D.4  

      Forth-83 ,   
    . ,  ,   
        100 . 8-
   16- ,   32-   
.

        -  
 ,      80-.

       ""  
    .

        
  " Forth", ,   
  Forth.

  ROM-     
.

      ,   
    ,    
Forth   ""   Forth.  
:

- 32-  Forth  .
-   Forth     
  ,    .
-   Forth    , 
  ,   , ,   " ".
-   Forth    ,
    Forth ""   .
-    Forth      ""
   ,    OS   ,
  ,   Forth "".
-   Forth    
   ,     , 
  ,   ,     
   ,      ,
    ,    , 
  Forth 83.

      ( "C")  
   Forth   Forth  ,   
  "  "   
  Forth.

                               
                                                                            225


D.5 ANS Forth  

ANS Forth       Forth  
  Forth 79  Forth 83,        
 ,   .

,         
    Forth-83,      
  ,  ,    
  /    .

  ,  ANS Forth     
  ,      ,   
    ANS Forth.  ,  ANS Forth 
    ,      
Forth,      ,     
  .

    Forth 83   .   
  ,  "ANS Forth      
x",  "x" - ,     , 
 Forth-83 .  ,    
,  ,      Forth 
   Forth-83  ,  , Forth-83 
  ""   "".

    -  ,      ANS Forth  
   Forth,      
.   , ANS Forth -   " 
"   "    
".

     American National Standard  Forth, 
 ,   3.4 X3/SD-9, "  
",     .

     ANS Forth  Forth 83.  
 , Forth 83  Forth 79  FIG Forth    
.     , , ANS Forth    
   Forth,    .

D.6.1  

Forth 83 ,     16 .   , 
,  . ANS Forth ,    -    16 
;      .

 :    ,    

:   32-   . 16-  Forth  32- 
 -  .

                                                                            226


:   ,   16-  ,  
  16- ; ANS Forth     ,   
 .      ( . " ").

/:   ,      
  , ,  ,   
   ,      
    .  -     
    :

        1  CONSTANT LO-BIT

        TRUE 1 RSHIFT  INVERT  CONSTANT HI-BIT

        : LO-BITS  ( n -- mask )  0 SWAP  0 ?DO  1 LSHIFT  LO-BIT OR  LOOP ;
        : HI-BITS  ( n -- mask )  0 SWAP  0 ?DO  1 RSHIFT  HI-BIT OR  LOOP ;

,     "  '553' ",   
 16- ,   ,    
    .  ,   
  .
:      CRC,   
         .

D.6.2  

Forth 83        
(  ). ANS Forth     (  
)    .

 :       , LOOP, +LOOP

:        (  ) 
   .      Forth   
      (  ),  
     .  
      ,   
        
 .

:   ANS Forth     "  
      (  )".  
 ,        
     (  ). ,  -  
 ,      
    (  ).   
   Forth-83        
(  )   ,  ,  Forth-83 
         ,     
  .

/:    ,   
  ANS Forth       
  (  )   ,  
      , 
            
 ,         
 ,       
     .

D.6.3   

                                                                            227


Forth 83 ,       8-   
. ANS Forth ,   ,   
  -  , ,  ,  
  . Forth 83       
 . ANS Forth        
  .

 :   ,    " " 

:    ,     Forth,  
16-     8- .

:           
 ,      ,    
 .   Forth    ,  Forth 83 
,         
      .      
  Forth-83    ,  ,   
          
  .

/:       CHARS  CHAR+ 
    ,      
   . ,    ,  
 ,       
    (, MOVE , ALLOT).

D.6.4       

  Forth-83   16-    
 ,         
  ,    .   ANS Forth 
   16-     ,     
   .

 :   @ ! +! 2+ 2* 2- +LOOP

:   .   " "  " "

:     ,      
,       ,    
.    ,      
 Forth 83  .  ,     
 16-    32-  ,      
  .

/:       CELLS  CELL+ 
     . ,   
 ,   ,   "2"  
,        . 
     :

                                                                            228


                
        -----------   ---------
        2+  or  2 +   CELL+
        2*  or  2 *   CELLS
        2-  or  2 -   1 CELLS -
        2/  or  2 /   1 CELLS /
        2             1 CELLS

 "2"          
+LOOP,    - .    2/,   
   ,      
 .

D.6.5  

Forth 83           
. ANS Forth ,      
       "@"  "!".

 :   ! +! 2! 2@ @ ? ,

:       ,   
  .   ,    
      ,     
 .          
   ,    .

:    ANS Forth ,   ,   
    "@"  "!"    
.   ,    .    
       
      .

   Forth,       
    ,   . 
   Forth,        
,        .

/:          
   ,   .

     ,     
 "@"  "!" ,     . ,  
16-        ,   "@" 
 "!"   :

        : @  ( addr -- x )  DUP C@ SWAP CHAR+ C@ 8 LSHIFT OR  ;

        : !  ( x addr -- )  OVER 8 RSHIFT OVER CHAR+ C! C!  ;

 ,    "+!", "2@", "2!", ",",  "?"  , 
      ,   
   .

    ,     
  ,    .

                                                                            229


    ,       
    . ANS Forth  ALIGN  ALIGNED  
     . ,   
 ,      , 
    (   ),   
" " (.  " " 
).

 , ,       , 
        .

,    ,    
 ,   ,   " "  
       .  ""  
       .

D.'.'   Division/modulus

Forth 79 ,     0     . 
Forth 83 ,        
   . ANS Forth      
     ,    
 ,      
 .

 :   / MOD /MOD */MOD */

:        Forth 79  Forth 83  
  ,    Forth     
Forth 83.     ,    
       .   
   ,       
     ,       
  ,       
      .   
    ,    , 
   ,  ,   
  ,       
   .     , 
     CPU,    
 ,    ,    
   .

:      ,   
    ,     
 .     , 
     ;   ,  
        .

/:    ,    
      ,  , 
  ,         
  ANS Forth SM/REM ( ,     
)  FM/MOD ( ,  ,    
).       . 
,    Forth 83   :

                                                                            230


        : /MOD  ( n1 n2 -- n3 n4 )  >R S>D R> FM/MOD  ;
        : MOD   ( n1 n2 -- n3 )  /MOD DROP  ;
        : /     ( n1 n2 -- n3 )  /MOD SWAP DROP   ;
        : */MOD ( n1 n2 n3 -- n4 n5 )  >R M* R> FM/MOD  ;
        : */    ( n1 n2 n3 -- n4 n5 )  */MOD SWAP DROP  ;

D.6.7 Immediate-

Forth 83 ,   " "  " 
",         
. ANS Forth      , 
,        ,   
  ,       .

   ,    , Forth 83, 
  COMPILE       
,  [COMPILE]      . ANS 
Forth    POSTPONE ,     
       ,  
  .

 :   COMPILE [COMPILE] ['] '

:          , 
   ,    Forth.   
 " ",      (  
  LEAVE),         
 . ,       
,      ,   
          
   . ANS Forth,    
  ,       
 ,   .

      ,   
 COMPILE  [COMPILE],  . , ANS Forth 
 ""   POSTPONE,    
   COMPILE  [COMPILE]    
,   ""   .

    '  [']     ,  
      ,   ANS Forth  
    '  [']   
.

 (  )   COMPILE  
 .      
  ,         
   .   ANS Forth,     
     ,  ,     
  COMPILE.     ,   
   , ANS Forth    COMPILE.  
      COMPILE  
 ,    .

                                                                            231


:   [COMPILE]   ANS Forth,     
     ,     
  ( [COMPILE]     
 ,     ).     
 [COMPILE]   ,      
   ,   [COMPILE]  
. [COMPILE] -    ()   ,  
     ,   ,  
   ,   .

   ,   [COMPILE]  COMPILE  POSTPONE. 
 [COMPILE]  COMPILE,  - ""   POSTPONE 
,   ,      :

a)  [COMPILE]     .   
   ' (tick) (     Forth 79, 
   Forth 83)  LEAVE (     Forth 83  
  Forth 79),         , 
   Forth 79  Forth 83 .

b)   COMPILE [COMPILE] <  >   
" postpone"   .

/:    ANS Forth    
 [COMPILE]  COMPILE  ,    .  
 ,    .

  ,  COMPILE  [COMPILE]   
  POSTPONE,     .  
[COMPILE]     ,     , 
   ,    [COMPILE]   
  ,  [COMPILE]      
   ,   ,  ,   
 .

  COMPILE [COMPILE] <  >   
 ,  " " (XX   )   
 POSTPONE   . :

        : ABC  COMPILE [COMPILE] IF  ;

:

        : XX  POSTPONE IF  ;
        : ABC  POSTPONE XX  ;

     ,  " 
 "        COMPILE. 
:

        : XYZ  COMPILE  [ ' ABC , ]  ;

     ,   COMPILE    
.        ;   
     ,   ,   
   ANS Forth .

  POSTPONE [COMPILE]   [COMPILE] [COMPILE].

                                                                            232


D.6.8   

Forth 83 ,   7-   ASCII   KEY. 
ANS Forth      ASCII,    hex 
20  hex 7E .

 :   KEY

:      ""     
    ,  ,   
 .  Forth       
.

:    ,     
    KEY     
    .

/:     ,   
        . 
    ,  ,   
        
  .

  ,         
 .    , ,    
    ,  control-S  control-Q 
(    ,    
,      ), ASCII NUL ( 
   ),       
  (       
,  ).

D.6.9   UM/MOD

 Forth-83    (  ),   
   (   ),  
 . ,    (  
) ,        
  ,  UM/MOD     
  .

 :   UM/MOD

:     UM/MOD -       
  (  ),   .

ANS Forth   LSHIFT  RSHIFT    
.  -   ,    ,  
 UM/MOD   .

:   ,   ANS Forth    
  (  ) ( ),   
    UM/MOD.  Forth-83  
,          
(  ),    UM/MOD    ANS Forth 
     (  ).     
    (  ),    
      Forth-83      
  (  ).

                                                                            233


/:   ,  ,  UM/MOD    
 ,        
  (  ).

,          
  (  )     
   UM/MOD  ,   
 .

D.6.10  /  

ANS Forth    VOCABULARY, CONTEXT,  CURRENT,  
  Forth 83.  , ANS Forth    
        ,  
,        .

Forth-83 "ALSO/ONLY"       
     ANS Forth    .

 :   VOCABULARY CONTEXT CURRENT

:    -      . 
      , ,   
, 5      ,  
VOCABULARY. Forth 83     "   
-",       
      -. 
Forth 83        
 -, ALSO/ONLY . ALSO/ONLY    
 ,        
Forth.

,     ,   
.          
 ALSO/ONLY     ,    
"  ",        
 ALSO/ONLY,        
ALSO/ONLY       ,     
.

Forth 83 ALSO/ONLY        
   .   ,   
    ,   ,   
   .    ,  
    ALSO/ONLY,    ,    
    ANS Forth ,  ALSO/ONLY  
.  ,    ,  ALSO/ONLY 
        ,    
    ,    ,  
 ,       ALSO/ONLY.

/:     Forth 83      
VOCABULARY,  Forth-83      
     .      
    ,     , 
      .  Forth 83  
  ALSO/ONLY        
 ,          
 .

                                                                            234


D.6.11  

Forth 83    " "  "M"  
   . ANS Forth   "M"   , 
       
.

 :    

:    " "    
     .    
Forth   ,  
 , ,    
 ,   -  .    
, "M"     ,   
       
.

 , "M"   Forth 83    
       .  
,     ,    CPU  
  ,      -,  
,     CPU   PAUSE.  
,       , 
      ;   
 ,        
,           
.  , "M"    ,  ,  
 CPU,  ,       .

         ,  
 . "M"    .

:   , .
    ,    , 
  ,   ,  ,    
     , Forth 83    
,      ,  
  .  -    ANS Forth.

    Forth 83     
  BLOCK ,         
 .      ANS Forth.

  -  ,    
  BLOCK.   ,     
,   " ".

/:    .

D.6.12  ,     

                                                                            235


ANS Forth          
 "  ",   ,    
      .

 :   

:    Forth    ,    
  .  ,      
,   .  ,   
      ,   
,     ANS Forth    
,      .

:         ANS Forth 
,        
 "",    "  " . 
  ,        
,    .

   C,       
      ,  
  "",     
   .      - 
   .

/:     ,   
    ,   ,   
,   .

                                                                            236


E.    ANS Forth ( )

E.1 

  ,     Forth,  
   , 16- ,     
  (  ). Forth-83  ,   
     Forth-83  , 
  Forth-83      .

      ,    
   ,   32- ,  
     (  ).     
  Forth -     ""   "" 
   "" , ,   
Forth     .

  ANS Forth    ,    , 
    Forth.  ,  
   Forth    (, 
  - ?) ,  Forth  ()  
 .       
 Forth,       
. - ,     
,      Forth,  
    .

         
ANS Forth .        
.    -      
,   ,    
  .        
 .      
 Forth,    ,     
   .

E.2  

E.2.1  /

   -      .  
,       .  ANS 
Forth      ,     
 .         
   ,        
 .    ANS Forth ,    
     ,    
 .      , 
  ,      / 
 .

E.2.2 

 ,  ANS Forth -  , ,  . 
   ANS Forth      
;  -     ,  
  .  ,  -   , 
  addr  addr+1.    
 8-  .  " "   
Intel 8086  Motorola 68000 .  

                                                                            237


     .  ,  
    ,    4- 
.        8-. , 
  Forth-in-hardware  -  .

 -     Forth.     
 -   .  Forth    -  
 . Forth 83 ,   - 16- .  ANS Forth  
 -      .  
, ANS Forth   16-    
16- ,    32-    32- . 
 18- , 36- ,  ..,   ANS Forth 
  18  36-  .    , DUP 
     :     . ! ()  
  :      ,   
        .

      ,    
    (,   ,  ).  
    Forth  8-   
,    . ,  18-   9-  
, 9-     .   ,  ,  
    -      ,  
 ,   ,      .  
         .  
 -   16-  ,  16-    
.

E.2.3  

ANS Forth    ,   
.       -   
   .    ,    
  ?  Forth 83  : 2 + .   ,  
    8- ()   - 16- .  
      32- ,     
   4 + .    1+    ,  16 +   
    16- . ANS Forth   
   CELL+ ,       
.  , CELL+     
(   ).   -    
   .      , 
 Forth 83  :

        : ARRAY   CREATE  2* ALLOT  DOES> SWAP 2* + ;

 2*       
  16- .    ,      
   . ANS Forth    
  CELLS.   n, CELLS   
 ,    n .  
  :

        : ARRAY   CREATE  CELLS ALLOT
          DOES> SWAP CELLS + ;

                                                                            238


       .  Forth 83 ( 
   ANS Forth ),     
  . ,     
   ,  1+      
 -    ( , 1 *).   ,   
   .   (1)    
  (, -  -  ),  (2) 
     (, 16-    
 ). CHAR+  CHARS ,  CELL+  CELLS  
   .

ANS Forth     Forth,    
     .   - ALLOT. 
  ALLOT    (CELLS, 
CHARS,  ..),        
  (.   ). :

        CREATE ABUFFER 5 CHARS ALLOT ( 5  )

       :

        source destination 8 CELLS MOVE ( 8 )

E.2.4  

    .      , 
      .    
   ANS Forth   ; ,  
 (  3.3.3.1  ),  ANS Forth  
,       .

    ,   ,  
       .  , ()  C, 
   ,      
. ,     . , 
    :

        CREATE ATABLE   1 C,  X ,  2 C,  Y ,

 ,   16-    , CREATE 
       , 1 C,    
  ,  , ()    ,  
X   .    :

        CREATE ATABLE   1 C,  ALIGN X ,  2 C,  ALIGN Y ,

ALIGN          
     .      
  , , -,   -.

  ,        . 
, ,       X ,  . 
ATABLE CHAR+      .      
  X ,        C,  , .  
   X :

                                                                            239


        ATABLE CHAR+ ALIGNED

ALIGNED          
      .

E.3  

     .   
      ,  
   .

E.3.1       

          
 .         
  ,         .  
   -        
. ,    16- 8086 Forth "  " 
   34 (hex):

        VARIABLE FOO   HEX 1234 FOO !   FOO C@

     16- 68000 Forth "  "   
 12 (hex).        
 .

  -     -   -. 
 -        2! , ,  
   ,     .    
    ,     .

E.3.2  ALU

        
  .     
(  (  ),   (  ), 
  ,  ..),    (BCD,  ..).  
         -
   (ALU).    
,   (  ),   -
      .

,        (  
),            
    . ,   
   ,    -   
    AND.     -   
  ,  1 AND.         
  (  ),    ( 
 - 2 MOD).

                                                                            240


    - ( )      
,         
    (  ).

  -   -, ANS Forth  
 S>D.    -  -,  
Forth    DROP.       
   .     D>S. 
  -     -   
 ,    .

E.4  Forth 

   Forth,      
. ANS Forth       
  ,       
 ANS Forth .    Forth  
     ,      Forth. 
       .

E.4.1 

,  Forth     Forth,    
, , ,   ,  , 
  .    , , 
,   .          
,          
 Forth. , ANS Forth   ,   
 . ,  ANS Forth    
 , ,    .   
 (     )  , 
 .

 ,  CREATE    ,  
 CREATE,   .      
(VARIABLE, CONSTANT, :,  ..)       CREATE. 
,        
 VARIABLE, CONSTANT, :,  ..,      .  
         
    . DOES>     
   .    CREATE    , DOES>  
     CREATE     CREATE.

 ANS Forth, FIND, [']  ' (tick)     
" ".    ,    
   .      
EXECUTE   ,      
 ' (tick)        COMPILE, . 
         . 
,  ,       ' 
(tick),    CREATE , >BODY   
     .

 ,         
 -   !  ,       
 Forth.      ,  
  -    ( )    - 
 .  ANS Forth     ,    
 .

                                                                            241


E.4.2 

   Forth,        
    .  , ,  . 
  ,      Forth,  
     ,        
        . Forth    
    .

        
   .  ,     
    R@, R>,  2R>,     
    >R  2>R.      
,          
     .  3.2.3.3   
   .

E.5   ROM 

     ,   
   ,      "RAM-only".

,   ROM     ,  
 ,   :       
 "RAM",        "ROM". 
 ,     ,  
 " RAM",     .  
      RAM  .

    RAM  ROM      ROM 
.  ROM  -   ,   
      RAM-only .

,    RAM-only   RAM  ROM :

        , (comma)  ALIGN  ALIGNED  ALLOT  C,  CREATE  HERE  UNUSED

(VARIABLE      RAM.)

  , ()  C,     ROM  RAM  .

   ,       RAM  
ROM. :

        ROM  CREATE ONES  32 ALLOT  ONES 32 1 FILL  RAM

      ROM.    RAM   
    ROM    .

          
 .      HERE   , 
(), C, , ALIGN,  ALLOT,  RAM  ROM,    
 .         
  .

                                                                            242


E.6 

ANS Forth,           
 .  ,   , 
,      .   , 
      , ANS Forth 
     . ,  
      . ,  
 ,      
   . ,    
       ,  . , 
     , ,     
.  ,    ,   
    .

                                                                            243


F.    ( )

  , , ,    
      
 .           
,    .

  .6.1.0010   !  ..................."store"........................CORE......41
  .6.1.0030   #  ..................."number-sign"..................CORE......41
  .6.1.0040   #>  .................."number-sign-greater"..........CORE......41
  .6.1.0050   #S  .................."number-sign-s"................CORE......41
  .6.2.0060   #TIB  ................"number-t-i-b".............CORE EXT......64
  .6.1.0070   '  ..................."tick".........................CORE......41
  .6.1.0080   (  ..................."paren"........................CORE......41
11.6.1.0080   (  ..................."paren"........................FILE......97
13.6.1.0086   (LOCAL)  ............."paren-local-paren"...........LOCAL.....122
  .6.1.0090   *  ..................."star".........................CORE......42
  .6.1.0100   */ ..................."star-slash"...................CORE......42
  .6.1.0110   */MOD  ..............."star-slash-mod"...............CORE......42
  .6.1.0120   +  ..................."plus".........................CORE......42
  .6.1.0130   +!  .................."plus-store"...................CORE......42
  .6.1.0140   +LOOP  ..............."plus-loop"....................CORE......42
  .6.1.0150   ,  ..................."comma"........................CORE......43
  .6.1.0160   -  ..................."minus"........................CORE......43
17.6.1.0170   -TRAILING  ..........."dash-trailing"..............STRING.....140
  .6.1.0180   .  ..................."dot"..........................CORE......43
  .6.1.0190   ."  .................."dot-quote"....................CORE......43
  .6.2.0200   .(  .................."dot-paren"................CORE EXT......64
  .6.2.0210   .R  .................."dot-r"....................CORE EXT......64
15.6.1.0220   .S  .................."dot-s".......................TOOLS.....129
  .6.1.0230   /  ..................."slash"........................CORE......44
  .6.1.0240   /MOD  ................"slash-mod"....................CORE......44
17.6.1.0245   /STRING  ............."slash-string"...............STRING.....140
  .6.1.0250   0<  .................."zero-less"....................CORE......44
  .6.2.0260   0<>  ................."zero-not-equals"..........CORE EXT......64
  .6.1.0270   0=  .................."zero-equals"..................CORE......44
  .6.2.0280   0>  .................."zero-greater".............CORE EXT......64
  .6.1.0290   1+  .................."one-plus".....................CORE......44
  .6.1.0300   1-  .................."one-minus"....................CORE......44
  .6.1.0310   2!  .................."two-store"....................CORE......44
  .6.1.0320   2*  .................."two-star".....................CORE......44
  .6.1.0330   2/  .................."two-slash"....................CORE......44
  .6.2.0340   2>R  ................."two-to-r".................CORE EXT......64
  .6.1.0350   2@  .................."two-fetch"....................CORE......45
 8.6.1.0360   2CONSTANT  ..........."two-constant"...............DOUBLE......80
  .6.1.0370   2DROP  ..............."two-drop".....................CORE......45
  .6.1.0380   2DUP  ................"two-dupe".....................CORE......45
 8.6.1.0390   2LITERAL  ............"two-literal"................DOUBLE......80
  .6.1.0400   2OVER  ..............."two-over".....................CORE......45
  .6.2.0410   2R>  ................."two-r-from"...............CORE EXT......64
  .6.2.0415   2R@  ................."two-r-fetch"..............CORE EXT......65
 8.6.2.0420   2ROT  ................"two-rote"...............DOUBLE EXT......82

                                                                            244


  .6.1.0430   2SWAP  ..............."two-swap".....................CORE......45
 8.6.1.0440   2VARIABLE  ..........."two-variable"...............DOUBLE......81
  .6.1.0450   :  ..................."colon"........................CORE......45
  .6.2.0455   :NONAME  ............."colon-no-name"............CORE EXT......65
  .6.1.0460   ;  ..................."semicolon"....................CORE......45
15.6.2.0470   ;CODE  ..............."semicolon-code"..........TOOLS EXT.....130
  .6.1.0480   <  ..................."less-than"....................CORE......46
  .6.1.0490   <#  .................."less-number-sign".............CORE......46
  .6.2.0500   <>  .................."not-equals"...............CORE EXT......65
  .6.1.0530   =  ..................."equals".......................CORE......46
  .6.1.0540   >  ..................."greater-than".................CORE......46
  .6.1.0550   >BODY  ..............."to-body"......................CORE......46
12.6.1.0558   >FLOAT  .............."to-float".................FLOATING.....108
  .6.1.0560   >IN  ................."to-in"........................CORE......46
  .6.1.0570   >NUMBER  ............."to-number"....................CORE......46
  .6.1.0580   >R  .................."to-r".........................CORE......47
15.6.1.0600   ?  ..................."question"....................TOOLS.....129
  .6.2.0620   ?DO  ................."question-do"..............CORE EXT......65
  .6.1.0630   ?DUP  ................"question-dupe"................CORE......47
  .6.1.0650   @  ..................."fetch"........................CORE......47
  .6.1.0670   ABORT  ..............................................CORE......47
 9.6.2.0670   ABORT  .....................................EXCEPTION EXT......88
  .6.1.0680   ABORT"  .............."abort-quote"..................CORE......47
 9.6.2.0680   ABORT"  .............."abort-quote".........EXCEPTION EXT......88
  .6.1.0690   ABS  ................."abs"..........................CORE......47
  .6.1.0695   ACCEPT  .............................................CORE......48
  .6.2.0700   AGAIN  ..........................................CORE EXT......66
15.6.2.0702   AHEAD  .........................................TOOLS EXT.....130
  .6.1.0705   ALIGN  ..............................................CORE......48
  .6.1.0706   ALIGNED  ............................................CORE......48
14.6.1.0707   ALLOCATE  .........................................MEMORY.....125
  .6.1.0710   ALLOT  ..............................................CORE......48
16.6.2.0715   ALSO  .........................................SEARCH EXT.....138
  .6.1.0720   AND  ................................................CORE......48
15.6.2.0740   ASSEMBLER  .....................................TOOLS EXT.....130
10.6.1.0742   AT-XY  ..............."at-x-y"...................FACILITY......90
  .6.1.0750   BASE  ...............................................CORE......49
  .6.1.0760   BEGIN  ..............................................CORE......49
11.6.1.0765   BIN  ................................................FILE......97
  .6.1.0770   BL  .................."b-l"..........................CORE......49
17.6.1.0780   BLANK  ............................................STRING.....140
 7.6.1.0790   BLK  ................."b-l-k".......................BLOCK......75
 7.6.1.0800   BLOCK  .............................................BLOCK......75
 7.6.1.0820   BUFFER  ............................................BLOCK......76
15.6.2.0830   BYE  ...........................................TOOLS EXT.....130
  .6.1.0850   C!  .................."c-store"......................CORE......49
  .6.2.0855   C"  .................."c-quote"..................CORE EXT......66
  .6.1.0860   C,  .................."c-comma"......................CORE......49
  .6.1.0870   C@  .................."c-fetch"......................CORE......49
  .6.2.0873   CASE  ...........................................CORE EXT......66
 9.6.1.0875   CATCH  .........................................EXCEPTION......87

                                                                            245


  .6.1.0880   CELL+  ..............."cell-plus"....................CORE......49
  .6.1.0890   CELLS  ..............................................CORE......50
  .6.1.0895   CHAR  ................"char".........................CORE......50
  .6.1.0897   CHAR+ ................"char-plus"....................CORE......50
  .6.1.0898   CHARS  ..............."chars"........................CORE......50
11.6.1.0900   CLOSE-FILE  .........................................FILE......97
17.6.1.0910   CMOVE  ..............."c-move".....................STRING.....140
17.6.1.0920   CMOVE>  .............."c-move-up"..................STRING.....140
15.6.2.0930   CODE  ..........................................TOOLS EXT.....130
17.6.1.0935   COMPARE  ..........................................STRING.....140
  .6.2.0945   COMPILE,  ............"compile-comma"............CORE EXT......66
  .6.1.0950   CONSTANT  ...........................................CORE......50
  .6.2.0970   CONVERT  ........................................CORE EXT......67
  .6.1.0980   COUNT  ..............................................CORE......50
  .6.1.0990   CR  .................."c-r"..........................CORE......50
  .6.1.1000   CREATE  .............................................CORE......50
11.6.1.1010   CREATE-FILE  ........................................FILE......97
15.6.2.1015   CS-PICK  ............."c-s-pick"................TOOLS EXT.....131
15.6.2.1020   CS-ROLL  ............."c-s-roll"................TOOLS EXT.....131
 8.6.1.1040   D+  .................."d-plus".....................DOUBLE......81
 8.6.1.1050   D-  .................."d-minus"....................DOUBLE......81
 8.6.1.1060   D.  .................."d-dot"......................DOUBLE......81
 8.6.1.1070   D.R  ................."d-dot-r"....................DOUBLE......81
 8.6.1.1075   D0<  ................."d-zero-less"................DOUBLE......81
 8.6.1.1080   D0=  ................."d-zero-equals"..............DOUBLE......81
 8.6.1.1090   D2*  ................."d-two-star".................DOUBLE......81
 8.6.1.1100   D2/  ................."d-two-slash"................DOUBLE......82
 8.6.1.1110   D<  .................."d-less-than"................DOUBLE......82
 8.6.1.1120   D=  .................."d-equals"...................DOUBLE......82
12.6.1.1130   D>F  ................."d-to-f"...................FLOATING.....109
 8.6.1.1140   D>S  ................."d-to-s".....................DOUBLE......82
 8.6.1.1160   DABS  ................"d-abs"......................DOUBLE......82
  .6.1.1170   DECIMAL  ............................................CORE......51
16.6.1.1180   DEFINITIONS  ......................................SEARCH.....136
11.6.1.1190   DELETE-FILE  ........................................FILE......97
  .6.1.1200   DEPTH  ..............................................CORE......51
12.6.2.1203   DF!  ................."d-f-store"............FLOATING EXT.....112
12.6.2.1204   DF@  ................."d-f-fetch"............FLOATING EXT.....113
12.6.2.1205   DFALIGN  ............."d-f-align"............FLOATING EXT.....113
12.6.2.1207   DFALIGNED  ..........."d-f-aligned"..........FLOATING EXT.....113
12.6.2.1208   DFLOAT+  ............."d-float-plus".........FLOATING EXT.....113
12.6.2.1209   DFLOATS  ............."d-floats".............FLOATING EXT.....113
 8.6.1.1210   DMAX  ................"d-max"......................DOUBLE......82
 8.6.1.1220   DMIN  ................"d-min"......................DOUBLE......82
 8.6.1.1230   DNEGATE  ............."d-negate"...................DOUBLE......82
  .6.1.1240   DO  .................................................CORE......51
  .6.1.1250   DOES>  ..............."does".........................CORE......51
  .6.1.1260   DROP  ...............................................CORE......52
 8.6.2.1270   DU<  ................."d-u-less"...............DOUBLE EXT......83
15.6.1.1280   DUMP  ..............................................TOOLS.....129
  .6.1.1290   DUP  ................."dupe".........................CORE......52

                                                                            246


15.6.2.1300   EDITOR  ........................................TOOLS EXT.....132
10.6.2.1305   EKEY  ................"e-key"................FACILITY EXT......91
10.6.2.1306   EKEY>CHAR  ..........."e-key-to-char"........FACILITY EXT......91
10.6.2.1307   EKEY?  ..............."e-key-question".......FACILITY EXT......91
  .6.1.1310   ELSE  ...............................................CORE......52
  .6.1.1320   EMIT  ...............................................CORE......52
10.6.2.1325   EMIT?  ..............."emit-question"........FACILITY EXT......91
 7.6.2.1330   EMPTY-BUFFERS  .................................BLOCK EXT......77
  .6.2.1342   ENDCASE  ............."end-case".................CORE EXT......67
  .6.2.1343   ENDOF  ..............."end-of"...................CORE EXT......67
  .6.1.1345   ENVIRONMENT?  ........"environment-query"............CORE......53
  .6.2.1350   ERASE  ..........................................CORE EXT......67
  .6.1.1360   EVALUATE  ...........................................CORE......53
 7.6.1.1360   EVALUATE  ..........................................BLOCK......76
  .6.1.1370   EXECUTE  ............................................CORE......53
  .6.1.1380   EXIT  ...............................................CORE......53
  .6.2.1390   EXPECT  .........................................CORE EXT......68
12.6.1.1400   F!  .................."f-store"..................FLOATING.....109
12.6.1.1410   F*  .................."f-star"...................FLOATING.....109
12.6.2.1415   F**  ................."f-star-star"..........FLOATING EXT.....113
12.6.1.1420   F+  .................."f-plus"...................FLOATING.....109
12.6.1.1425   F-  .................."f-minus"..................FLOATING.....109
12.6.2.1427   F.  .................."f-dot"................FLOATING EXT.....113
12.6.1.1430   F/  .................."f-slash"..................FLOATING.....109
12.6.1.1440   F0<  ................."f-zero-less-than".........FLOATING.....109
12.6.1.1450   F0=  ................."f-zero-equals"............FLOATING.....109
12.6.1.1460   F<  .................."f-less-than"..............FLOATING.....109
12.6.1.1470   F>D  ................."f-to-d"...................FLOATING.....110
12.6.1.1472   F@  .................."f-fetch"..................FLOATING.....110
12.6.2.1474   FABS  ................"f-abs"................FLOATING EXT.....114
12.6.2.1476   FACOS  ..............."f-a-cos"..............FLOATING EXT.....114
12.6.2.1477   FACOSH  .............."f-a-cosh".............FLOATING EXT.....114
12.6.1.1479   FALIGN  .............."f-align"..................FLOATING.....110
12.6.1.1483   FALIGNED  ............"f-aligned"................FLOATING.....110
12.6.2.1484   FALOG  ..............."f-a-log"..............FLOATING EXT.....114
  .6.2.1485   FALSE  ..........................................CORE EXT......68
12.6.2.1486   FASIN  ..............."f-a-sine".............FLOATING EXT.....114
12.6.2.1487   FASINH  .............."f-a-cinch"............FLOATING EXT.....114
12.6.2.1488   FATAN  ..............."f-a-tan"..............FLOATING EXT.....114
12.6.2.1489   FATAN2  .............."f-a-tan-two"..........FLOATING EXT.....114
12.6.2.1491   FATANH  .............."f-a-tan-h"............FLOATING EXT.....114
12.6.1.1492   FCONSTANT  ..........."f-constant"...............FLOATING.....110
12.6.2.1493   FCOS  ................"f-cos"................FLOATING EXT.....115
12.6.2.1494   FCOSH  ..............."f-cosh"...............FLOATING EXT.....115
12.6.1.1497   FDEPTH  .............."f-depth"..................FLOATING.....110
12.6.1.1500   FDROP  ..............."f-drop"...................FLOATING.....110
12.6.1.1510   FDUP  ................"f-dupe"...................FLOATING.....110
12.6.2.1513   FE.  ................."f-e-dot"..............FLOATING EXT.....115
12.6.2.1515   FEXP  ................"f-e-x-p"..............FLOATING EXT.....115
12.6.2.1516   FEXPM1  .............."f-e-x-p-m-one"........FLOATING EXT.....115
11.6.1.1520   FILE-POSITION .......................................FILE......97

                                                                            247


11.6.1.1522   FILE-SIZE  ..........................................FILE......97
11.6.2.1524   FILE-STATUS  ....................................FILE EXT.....102
  .6.1.1540   FILL  ...............................................CORE......53
  .6.1.1550   FIND  ...............................................CORE......53
16.6.1.1550   FIND  .............................................SEARCH.....136
12.6.1.1552   FLITERAL  ............"f-literal"................FLOATING.....111
12.6.2.1553   FLN  ................."f-l-n"................FLOATING EXT.....115
12.6.2.1554   FLNP1  ..............."f-l-n-p-one"..........FLOATING EXT.....115
12.6.1.1555   FLOAT+  .............."float-plus"...............FLOATING.....111
12.6.1.1556   FLOATS  .........................................FLOATING.....111
12.6.2.1557   FLOG  ................"f-log"................FLOATING EXT.....115
12.6.1.1558   FLOOR  ..........................................FLOATING.....111
 7.6.1.1559   FLUSH  .............................................BLOCK......76
11.6.2.1560   FLUSH-FILE  .....................................FILE EXT.....102
  .6.1.1561   FM/MOD  .............."f-m-slash-mod"................CORE......54
12.6.1.1562   FMAX  ................"f-max"....................FLOATING.....111
12.6.1.1565   FMIN  ................"f-min"....................FLOATING.....111
12.6.1.1567   FNEGATE  ............."f-negate".................FLOATING.....111
15.6.2.1580   FORGET  ........................................TOOLS EXT.....132
16.6.2.1590   FORTH  ........................................SEARCH EXT.....138
16.6.1.1595   FORTH-WORDLIST  ...................................SEARCH.....137
12.6.1.1600   FOVER  ..............."f-over"...................FLOATING.....111
14.6.1.1605   FREE  .............................................MEMORY.....126
12.6.1.1610   FROT  ................"f-rote"...................FLOATING.....111
12.6.1.1612   FROUND  .............."f-round"..................FLOATING.....111
12.6.2.1613   FS.  ................."f-s-dot"..............FLOATING EXT.....115
12.6.2.1614   FSIN  ................"f-sine"...............FLOATING EXT.....116
12.6.2.1616   FSINCOS  ............."f-sine-cos"...........FLOATING EXT.....116
12.6.2.1617   FSINH  ..............."f-cinch"..............FLOATING EXT.....116
12.6.2.1618   FSQRT  ..............."f-square-root"........FLOATING EXT.....116
12.6.1.1620   FSWAP  ..............."f-swap"...................FLOATING.....111
12.6.2.1625   FTAN  ................"f-tan"................FLOATING EXT.....116
12.6.2.1626   FTANH  ..............."f-tan-h"..............FLOATING EXT.....116
12.6.1.1630   FVARIABLE  ..........."f-variable"...............FLOATING.....112
12.6.2.1640   F~  .................."f-proximate"..........FLOATING EXT.....116
16.6.1.1643   GET-CURRENT  ......................................SEARCH.....137
16.6.1.1647   GET-ORDER  ........................................SEARCH.....137
  .6.1.1650   HERE  ...............................................CORE......54
  .6.2.1660   HEX  ............................................CORE EXT......68
  .6.1.1670   HOLD  ...............................................CORE......54
  .6.1.1680   I  ..................................................CORE......54
  .6.1.1700   IF  .................................................CORE......54
  .6.1.1710   IMMEDIATE  ..........................................CORE......54
11.6.1.1717   INCLUDE-FILE  .......................................FILE......98
11.6.1.1718   INCLUDED  ...........................................FILE......98
  .6.1.1720   INVERT  .............................................CORE......55
  .6.1.1730   J  ..................................................CORE......55
  .6.1.1750   KEY  ................................................CORE......55
10.6.1.1755   KEY?  ................"key-question".............FACILITY......90
   6.1.1760   LEAVE  ..............................................CORE......56
 7.6.2.1770   LIST  ..........................................BLOCK EXT......77

                                                                            248


  .6.1.1780   LITERAL  ............................................CORE......76
 7.6.1.1790   LOAD  ..............................................BLOCK......76
13.6.2.1795   LOCALS|  ............."locals-bar"..............LOCAL EXT.....123
  .6.1.1800   LOOP  ...............................................CORE......56
  .6.1.1805   LSHIFT  .............."l-shift"......................CORE......56
  .6.1.1810   M*  .................."m-star".......................CORE......56
 8.6.1.1820   M*/  ................."m-star-slash"...............DOUBLE......82
 8.6.1.1830   M+  .................."m-plus".....................DOUBLE......82
  .6.2.1850   MARKER  .........................................CORE EXT......68
  .6.1.1870   MAX  ................................................CORE......56
  .6.1.1880   MIN  ................................................CORE......56
  .6.1.1890   MOD  ................................................CORE......56
  .6.1.1900   MOVE  ...............................................CORE......56
10.6.2.1905   MS  .........................................FACILITY EXT......91
  .6.1.1910   NEGATE  .............................................CORE......57
  .6.2.1930   NIP  ............................................CORE EXT......68
  .6.2.1950   OF  .............................................CORE EXT......68
16.6.2.1965   ONLY  .........................................SEARCH EXT.....138
11.6.1.1970   OPEN-FILE  ..........................................FILE......99
  .6.1.1980   OR  .................................................CORE......57
16.6.2.1985   ORDER  ........................................SEARCH EXT.....138
  .6.1.1990   OVER  ...............................................CORE......57
  .6.2.2000   PAD  ............................................CORE EXT......69
10.6.1.2005   PAGE  ...........................................FACILITY......91
  .6.2.2008   PARSE  ..........................................CORE EXT......69
  .6.2.2030   PICK  ...........................................CORE EXT......69
  .6.1.2033   POSTPONE  ...........................................CORE......57
12.6.2.2035   PRECISION  ..................................FLOATING EXT.....117
16.6.2.2037   PREVIOUS  .....................................SEARCH EXT.....138
  .6.2.2040   QUERY  ..........................................CORE EXT......69
  .6.1.2050   QUIT  ...............................................CORE......57
11.6.1.2054   R/O  ................."r-o"..........................FILE......99
11.6.1.2056   R/W  ................."r-w"..........................FILE......99
  .6.1.2060   R>  .................."r-from".......................CORE......57
  .6.1.2070   R@  .................."r-fetch"......................CORE......58
11.6.1.2080   READ-FILE  ..........................................FILE......99
11.6.1.2090   READ-LINE  ..........................................FILE.....100
  .6.1.2120   RECURSE  ............................................CORE......58
  .6.2.2125   REFILL  .........................................CORE EXT......69
 7.6.2.2125   REFILL  ........................................BLOCK EXT......77
11.6.2.2125   REFILL  .........................................FILE EXT.....102
11.6.2.2130   RENAME-FILE  ....................................FILE EXT.....102
  .6.1.2140   REPEAT  .............................................CORE......58
11.6.1.2142   REPOSITION-FILE  ....................................FILE.....100
12.6.1.2143   REPRESENT  ......................................FLOATING.....112
14.6.1.2145   RESIZE  ...........................................MEMORY.....126
11.6.1.2147   RESIZE-FILE  ........................................FILE.....100
  .6.2.2148   RESTORE-INPUT  ..................................CORE EXT......70
  .6.2.2150   ROLL  ...........................................CORE EXT......70
  .6.1.2160   ROT  ................."rote".........................CORE......58
  .6.1.2162   RSHIFT  .............."r-shift"......................CORE......58

                                                                            249


  .6.1.2165   S"  .................."s-quote"......................CORE......58
11.6.1.2165   S"  .................."s-quote"......................FILE.....101
  .6.1.2170   S>D  ................."s-to-d".......................CORE......59
 7.6.1.2180   SAVE-BUFFERS  ......................................BLOCK......77
  .6.2.2182   SAVE-INPUT  .....................................CORE EXT......70
 7.6.2.2190   SCR  ................."s-c-r"...................BLOCK EXT......77
17.6.1.2191   SEARCH  ...........................................STRING.....141
16.6.1.2192   SEARCH-WORDLIST  ..................................SEARCH.....137
15.6.1.2194   SEE  ...............................................TOOLS.....129
16.6.1.2195   SET-CURRENT  ......................................SEARCH.....137
16.6.1.2197   SET-ORDER  ........................................SEARCH.....137
12.6.2.2200   SET-PRECISION  ..............................FLOATING EXT.....117
12.6.2.2202   SF!  ................."s-f-store"............FLOATING EXT.....117
12.6.2.2203   SF@  ................."s-f-fetch"............FLOATING EXT.....117
12.6.2.2204   SFALIGN  ............."s-f-align"............FLOATING EXT.....117
12.6.2.2206   SFALIGNED  ..........."s-f-aligned"..........FLOATING EXT.....117
12.6.2.2207   SFLOAT+  ............."s-float-plus".........FLOATING EXT.....118
12.6.2.2208   SFLOATS  ............."s-floats".............FLOATING EXT.....118
  .6.1.2210   SIGN  ...............................................CORE......59
17.6.1.2212   SLITERAL  .........................................STRING.....141
  .6.1.2214   SM/REM  .............."s-m-slash-rem"................CORE......59
  .6.1.2216   SOURCE  .............................................CORE......59
  .6.2.2218   SOURCE-ID  ..........."source-i-d"...............CORE EXT......70
11.6.1.2218   SOURCE-ID  ..........."source-i-d"...................FILE.....101
  .6.1.2220   SPACE  ..............................................CORE......59
  .6.1.2230   SPACES  .............................................CORE......59
  .6.2.2240   SPAN  ...........................................CORE EXT......70
  .6.1.2250   STATE  ..............................................CORE......59
15.6.2.2250   STATE  .........................................TOOLS EXT.....132
  .6.1.2260   SWAP  ...............................................CORE......60
  .6.1.2270   THEN  ...............................................CORE......60
 9.6.1.2275   THROW  .........................................EXCEPTION......87
 7.6.2.2280   THRU  ..........................................BLOCK EXT......78
  .6.2.2290   TIB  ................."t-i-b"....................CORE EXT......71
10.6.2.2292   TIME&DATE  ..........."time-and-date"........FACILITY EXT......92
  .6.2.2295   TO  .............................................CORE EXT......71
13.6.1.2295   TO  ................................................LOCAL.....123
  .6.2.2298   TRUE  ...........................................CORE EXT......71
  .6.2.2300   TUCK  ...........................................CORE EXT......71
  .6.1.2310   TYPE  ...............................................CORE......60
  .6.1.2320   U.  .................."u-dot"........................CORE......60
  .6.2.2330   U.R  ................."u-dot-r"..................CORE EXT......71
  .6.1.2340   U<  .................."u-less-than"..................CORE......60
  .6.2.2350   U>  .................."u-greater-than"...........CORE EXT......71
  .6.1.2360   UM*  ................."u-m-star".....................CORE......60
  .6.1.2370   UM/MOD  .............."u-m-slash-mod"................CORE......61
  .6.1.2380   UNLOOP  .............................................CORE......61
  .6.1.2390   UNTIL  ..............................................CORE......61
  .6.2.2395   UNUSED  .........................................CORE EXT......71
 7.6.1.2400   UPDATE  ............................................BLOCK......77
  .6.2.2405   VALUE  ..........................................CORE EXT......72

                                                                            250


  .6.1.2410   VARIABLE  ...........................................CORE......61
11.6.1.2425   W/O  ................."w-o"..........................FILE.....101
  .6.1.2430   WHILE  ..............................................CORE......62
  .6.2.2440   WITHIN  .........................................CORE EXT......72
  .6.1.2450   WORD  ...............................................CORE......62
16.6.1.2460   WORDLIST  .........................................SEARCH.....137
15.6.1.2465   WORDS  .............................................TOOLS.....129
11.6.1.2480   WRITE-FILE  .........................................FILE.....101
11.6.1.2485   WRITE-LINE  .........................................FILE.....102
  .6.1.2490   XOR  ................."x-or".........................CORE......62
  .6.1.2500   [  ..................."left-bracket".................CORE......62
  .6.1.2510   [']  ................."bracket-tick".................CORE......62
  .6.1.2520   [CHAR]  .............."bracket-char".................CORE......63
  .6.2.2530   [COMPILE]  ..........."bracket-compile"..........CORE EXT......72
15.6.2.2531   [ELSE]  .............."bracket-else"............TOOLS EXT.....132
15.6.2.2532   [IF]  ................"bracket-if"..............TOOLS EXT.....132
15.6.2.2533   [THEN]  .............."bracket-then"............TOOLS EXT.....133
  .6.2.2535   \  ..................."backslash"................CORE EXT......72
 7.6.2.2535   \  ..................."backslash"...............BLOCK EXT......78
  .6.1.2540   ]  ..................."right-bracket"................CORE......63

                                                                            251

