home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / FPC225_1.ZIP / F-PCGLOS.TXT < prev    next >
Encoding:
Text File  |  1988-12-01  |  170.3 KB  |  4,283 lines

  1.  Word Glossary of the F-PC Forth Vocabulary              by Tom Zimmer
  2.  
  3.  Forward
  4.  
  5.    This glossary contains entries for all of the words in F-PC's FORTH
  6.  vocabulary, broken into two major sections.  The first section contains
  7.  lists of words broken into catagories.  The second section contains the
  8.  same words grouped in a single alphabetized list.  The alphabetized
  9.  list includes a stack picuture, the filename where the words source can
  10.  be found, and descriptive text explaining the function of each word in
  11.  the list.  The catagory section contains only a list of words in a
  12.  catagory, and a stack picture for each word.
  13.  
  14.  Glossary Format
  15.  
  16.    The format of this glossary uses abreviated character sequences to
  17.  describe a series of words, this is done primarily for brevity.  Here
  18.  is a list of the abreviations used in this glossary.
  19.  
  20.  Symbol definitions used in this Glossary
  21.  
  22.         n1          16 bit signed number
  23.         d1          32 bit signed number
  24.         u1          16 bit unsigned number
  25.         ud1         32 bit unsigned number
  26.         f1          boolean flag
  27.         c1           8 bit character
  28.         nfa         Name field address
  29.         cfa         code field address
  30.         lfa         link field address
  31.         seg         16 bit absolute segment number
  32.         offset      16 bit offset into a segment
  33.         <char>      A character from the input stream.
  34.         <name>      A Forth word, comes from the input stream.
  35.         <string>    A sequence of ascii characters, comes from the
  36.                     input stream.
  37.         <filespec>  Standard DOS file specification
  38.         |           seperator for stack parameters and input stream
  39.                     parameters.
  40.  
  41.  
  42.  Glossary entries in the alphabetized section are in the following format:
  43.  
  44.  Example:
  45.  
  46.  WORD            ( c1 | <string> --- a1 )        FILE_WHERE_FOUND
  47.         DESCRIPTIVE_TEXT: The character c1 is passed into WORD on the data
  48.         stack, <string> is passed to WORD from the input stream, and a1 is
  49.         returned by WORD on the data stack.
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  ----------------------  Operators by Catagory  -------------------------
  57.  
  58.    This section contains the list of available word separated into catagory
  59.  or use. This section is most useful when you know what you want to do but
  60.  don't know what the word name is that does the function you want.  the
  61.  words of F-PC have been broken into catagories, here is a list of those
  62.  catagories:
  63.  
  64.  
  65.  Catagory Titles
  66.  
  67.  
  68.         Compiling and Allocation words
  69.         Conditional Test & Compilation words
  70.         Defining and Related Words
  71.         Dictionary Field Manipulation words
  72.         DOS Interface words
  73.         File Manipulation words
  74.         Math words
  75.         Memory words for VARIABLES and ARRAYS in CODE space
  76.         Memory words for VALUES
  77.         Memory Manipulation words for External memory and Ports
  78.         Menu Building words
  79.         Mode Control and Associated words
  80.         Number Conversion & Output words
  81.         Printing Related words
  82.         Stack Manipulation words
  83.         Status Testing and Error Condition Handling words
  84.         String Manipulation and Output words
  85.         System words
  86.         Terminal Input & Output words
  87.         Timing Related words
  88.         Utility words
  89.         VIEW Manipulation words
  90.         Window Control words
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  Here then is the words contained in each catagory along with their stack
  112.  picture.  For detailed information on a particular function examine its
  113.  entry in the alphabetized section.
  114.  
  115.  
  116.  Compiling and Allocation words
  117.  
  118.  
  119.     ALIGN       ( --- )
  120.     ALLOT       ( n1 --- )              ASCII       ( | <char> --- c1 )
  121.     C,          ( c1 --- )              DEFERS      ( <name> --- )
  122.     DLITERAL    ( d# -- )               DP          ( --- a1 )
  123.     LITERAL     ( n1 -- )               NEWINFO     ( --- )
  124.     X,          ( n1 --- )              X,"         ( | <string>" --- )
  125.     X>"BUF      ( --- "BUF )            XC,         ( n1 --- )
  126.     XDP         ( --- a1 )              XDPSEG      ( --- a1 )
  127.     XHERE       ( --- seg n1 )          Y!          ( n1 a1 --- )
  128.     Y,          ( n1 --- )              Y@          ( a1 --- n1 )
  129.     YC!         ( n1 a1 --- )           YC@         ( a1 --- n1 )
  130.     YCOUNT      ( a1 --- a2 n1 )        YCSET       ( byte a1 --- )
  131.     YDP         ( --- a1 )              YHASH  ( yname vocaddr --- thread )
  132.     YHERE       ( --- a1 )              YS:         ( a1 --- yseg a1 )
  133.     YSEG        ( -- a1 )               YSTART      ( --- a1 )
  134.     [           ( -- )                  [']         ( | <name> -- )
  135.     [COMPILE]   ( | <name> -- )         \           ( -- )
  136.     \S          ( n1 --- )              \UNLESS     ( | <name> --- )
  137.     ]           ( -- )                  `           ( command --- )
  138.  
  139.  
  140.  Conditional Test & Compilation words
  141.  
  142.  
  143.     #ELSE       ( --- )                 #ENDIF      ( --- )
  144.     #THEN       ( --- )                 #IF         ( f1 --- )
  145.     +LOOP       ( n1 --- )              0<          ( n1 --- f1 )
  146.     0<=         ( n1 --- f1 )           0<>         ( n1 --- f1 )
  147.     0=          ( n1 --- f1 )           0>          ( n1 --- f1 )
  148.     0>=         ( n1 --- f1 )           <           ( n1 n2 --- f1 )
  149.     <=          ( n1 n2 --- f1 )        <>          ( n1 n2 --- f1 )
  150.     =           ( n1 n2 --- f1 )        >           ( n1 n2 --- f1 )
  151.     >=          ( n1 n2 --- f1 )        >MARK       ( --- a1 )
  152.     >RESOLVE    ( a1 --- )              ?<MARK      ( --- f1 a1 )
  153.     ?<RESOLVE   ( f1 a1 --- )           ?>MARK      ( --- f1 a1 )
  154.     ?>RESOLVE   ( f1 a1 --- )           ?BRANCH     ( f1 --- )
  155.     ?DO         ( limit start --- )     ?EXIT       ( f1 --- )
  156.     ?LEAVE      ( f1 --- )              ?UNTIL      ( f1 --- )
  157.     ?WHILE      ( f1 --- )              AGAIN       ( --- )
  158.     AND         ( n1 n2 --- n3 )        BEGIN       ( --- )
  159.     BETWEEN     ( n1 n2 n3 --- f1 )     BOUNDS      ( a1 n1 --- a2 a3 )
  160.     BRANCH      ( --- )                 CASE        ( -- )
  161.     D0=         ( d1 --- f1 )           D<          ( d1 d2 --- f1 )
  162.     D=          ( d1 d2 --- f1 )        D>          ( d1 d2 --- f1 )
  163.     DMAX        ( d1 d2 --- d3 )        DMIN        ( d1 d2 --- d3 )
  164.     DNEGATE     ( d1 d2 --- d3 )        DO          ( limit start -- )
  165.     DU<         ( d1 d2 --- f1 )        ELSE        ( --- )
  166.     ENDCASE     ( -- )                  ENDOF       ( -- )
  167.     EXIT        ( --- )                 FALSE       ( --- f1 )
  168.     I           ( --- n1 )              IF          ( f1 -- )
  169.     J           ( --- n1 )              LEAVE       ( -- )
  170.     LOOP        ( -- )                  NOT         ( n1 --- n2 )
  171.     NRESOLVE    ( 0 n1 n2 ... n -- )    OF    ( n1 n2 -- n1 )  ( n1 n1 -- )
  172.     OR          ( n1 n2 --- n3 )        RECURSE     ( -- )
  173.     RECURSIVE   ( -- )  immediate       REPEAT      ( -- )
  174.     THEN        ( -- )                  TRUE        ( --- f1 )
  175.     U<          ( n1 n2 --- f1 )        U<=         ( un1 un2 --- f1 )
  176.     U>          ( n1 n2 --- f1 )        U>=         ( n1 n2 --- f1 )
  177.     UNDO        ( --- )                 UNNEST      ( --- )
  178.     UNTIL       ( f1 -- )               WHILE       ( f1 -- )
  179.     WITHIN      ( n1 n2 --- f1 )        XOR         ( n1 n2 --- n3 )
  180.  
  181.  
  182.  Defining and Related Words
  183.  
  184.  
  185.     2CONSTANT   ( d1 | <name> --- )     2VARIABLE   ( | <name> --- )
  186.     :           ( | <name> ... ; --- )  ;           ( --- )
  187.     ;CODE       ( --- )                 ;USES       ( --- )
  188.     ALIAS       ( a1 | <name> --- )     ANEW        ( | <name> --- )
  189.     CODE        ( | <name> --- )        CONSTANT    ( n1 | <name> -- )
  190.     CREATE      ( | <name> -- )         DEFER       ( | <name> -- )
  191.     DEFINED     ( -- here 0 | a1 true ) DEFINITIONS ( -- )
  192.     DOES>       ( -- )                  EXEC:       ( n1 -- )
  193.     EXECUTE     ( a1 --- )              HEADER      ( | <name> -- )
  194.     HIDE        ( -- )                  IMMEDIATE   ( -- )
  195.     IS          ( cfa -- )              LABEL       ( --- a1 )
  196.     PERFORM     ( a1 --- )              REVEAL      ( -- )
  197.     VALUE       ( n1 | <name> --- )     VARIABLE    ( | <name> -- )
  198.     WIDTH       ( --- a1 )
  199.  
  200.  
  201.  Dictionary Field Manipulation words
  202.  
  203.  
  204.     .ID         ( nfa --- )             >BODY       ( cfa --- pfa )
  205.     >LINK       ( cfa --- lfa )         >NAME       ( cfa --- nfa )
  206.     >VIEW       ( cfa --- vfa )         BODY>       ( cfa --- cfa )
  207.     L>NAME      ( lfa -- nfa )          LINK>       ( lfa -- cfa )
  208.     N>LINK      ( nfa -- lfa)           NAME>       ( nfa -- cfa )
  209.     NAME>PAD    ( A1 --- PAD )          TRAVERSE  ( a1 direction -- addr' )
  210.     VIEW>       ( vfa -- cfa )
  211.  
  212.  
  213.  DOS Interface words
  214.  
  215.  
  216.     A:          ( --- )                 B:          ( --- )
  217.     C:          ( --- )                 ALLOC ( n1 --- n2 n3 n4 )
  218.     CD          ( | <filespec> --- )
  219.     CHDIR       ( | <filespec> --- )    COMSPEC$    ( --- a1 )
  220.     COMSPEC@    ( --- )                 COPY        ( <filespec> --- )
  221.     D:          ( --- )                 DEALLOC     ( n1 --- f1 )
  222.     DEL         ( <filespec> --- )      DIR         ( <filespec> --- )
  223.     DOS-LINE    ( --- a1 )              DOS>TIB     ( --- )
  224.     DOSVER      ( --- n1 )              DRIVE?      ( --- n1 )
  225.     ENVSIZE     ( --- n1 )              EVSEG       ( --- n1 )
  226.     FINDFIRST   ( string --- f1 )       FINDNEXT    ( --- f1 )
  227.     ME$         ( --- a1 )              ME@         ( --- )
  228.     PATH$       ( --- a1 )              PATH@       ( --- )
  229.     PATHHNDL    ( --- a1 )              PATHSET     ( handle --- f1 )
  230.     REN         ( <filespec> --- )      RENAME      ( | <filespec> --- )
  231.     SELECT      ( n1 --- )              SET-DTA     ( a1 --- )
  232.     SETBLOCK    ( seg size --- f1 )     SYS         ( | command --- )
  233.  
  234.  
  235.  File Manipulation words
  236.  
  237.  
  238.     !HCB        ( a1 | <name> --- )     $>HANDLE    ( a1 handle --- )
  239.     $HOPEN      ( a1 --- f1 )           $PFILE      ( a1 --- f1 )
  240.     $FLOAD      ( a1 --- f1 )           .CURFILE    ( --- )
  241.     .FILE       ( --- )                 .FILES      ( --- )
  242.     .LOADED     ( --- )                 .SEQHANDLE  ( --- )
  243.     >ATTRIB     ( handle --- attrib-a1 )
  244.     >LINE       ( n1 --- )
  245.     >NAM ( handle --- name-string-a1 )
  246.     >HNDLE      ( handle --- handle-a1 )
  247.     ?DRIVE.EXTRACT ( handle --- drive-n1 )
  248.     ?DRIVE.PREPEND ( drive-n1 handle --- )
  249.     ?FILEOPEN   ( --- )
  250.     ?PREPEND.VPATH ( a1 --- a1 )        B/HCB       ( --- n1 )
  251.     CHARREAD    ( --- c1 )              CLOSE       ( --- )
  252.     CLR-HCB     ( a1 --- )              CURPOINTER ( handle --- d1-current )
  253.     DEFEXT      ( --- a1 )
  254.     ENDFILE    ( handle --- double-end )
  255.     EXHREAD     ( a1 n1 hndl seg1 --- n2 )
  256.     EXHWRITE    ( a1 n1 hndl seg1 --- )
  257.     FCB>HANDLE  ( a1 a2 --- )           FILE        ( | <name> --- )
  258.     FILE>TIB    ( a1 --- )              FILEPOINTER ( --- a1 )
  259.     FILES       ( --- )                 FILLBUFF    ( --- )
  260.     FILLTIB     ( --- )                 FL          ( | <name> --- )
  261.     FLHNDL      ( --- a1 )              FLOAD       ( | <name> --- )
  262.     GET_ALINE   ( --- )                 GFL         ( | <name> --- )
  263.     HANDLE      ( | <name> --- )        HANDLE>EXT  ( a1 --- a2 )
  264.     HCLOSE      ( handle --- f1 )       HCREATE   ( handle --- error-code )
  265.     HDELETE     ( handle --- f1 )
  266.     HNDLS       ( --- a1 )
  267.     HOPEN       ( handle --- error-code )
  268.     HREAD       ( a1 n1 handle --- n2 )
  269.     HRENAME     ( handle1 handle2 --- return-code )
  270.     HWRITE      ( a1 n1 handle --- n2 )
  271.     IBLEN       ( --- n1 )              IBRESET     ( --- )
  272.     INCLUDE     ( | <name> --- )        LINEREAD    ( --- a1 )
  273.     LOAD        ( n1 --- )              LOADED,     ( --- )
  274.     LOADER      ( --- )                 LOADING     ( --- a1 )
  275.     LOADSTAT    ( --- )                 MOVEPOINTER ( d1-offset handle --- )
  276.     NEEDS       ( | <name> --- )        NEWFILE     ( | <name> --- )
  277.     OBLEN       ( --- n1 )              OK          ( --- )
  278.     OPEN        ( | <name> --- )        OUTBUF      ( --- a1 )
  279.     PREPEND.PATH( handle --- f1 )       RWERR       ( --- a1 )
  280.     RWMODE      ( --- a1 )              SAVEPOINTER ( --- )
  281.     SEEK        ( d1 --- )              SEQDOWN     ( --- )
  282.     SEQHANDLE+  ( --- a1 )              SEQHANDLE   ( --- a1 )
  283.     SEQUP       ( --- )
  284.  
  285.  
  286.  Math words
  287.  
  288.  
  289.     *           ( n1 n2 --- n3 )        */      ( n1 n2 n3 --- quotient )
  290.     */MOD       ( n1 n2 n3 --- n4 n5 )
  291.     *D          ( n1 n2 --- d1 )        +       ( n1 n2 --- n3 )
  292.     /           ( n1 n2 --- n3 )        /MOD    ( n1 n2 --- n3 n4 )
  293.     1+          ( n1 --- n2 )           1-      ( n1 --- n2 )
  294.     2*          ( n1 --- n2 )           2+      ( n1 --- n2 )
  295.     2-          ( n1 --- n2 )           2/      ( n1 --- n2 )
  296.     8*          ( n1 --- n2 )           D+          ( d1 d2 --- d3 )
  297.     D-          ( d1 d2 --- d3 )        D2*         ( d1 --- d2 )
  298.     D2/         ( d1 --- d2 )           DABS        ( d1 --- d2 )
  299.     M/MOD       ( d1 n1 --- rem quot )  MAX         ( n1 n2 --- n3 )
  300.     MIN         ( n1 n2 --- n3 )        MOD         ( num den -- modulus )
  301.     MU/MOD      ( d1 n1 --- rem dquot ) NEGATE      ( n1 --- n2 )
  302.     U16/        ( n1 --- n2 )           U2/         ( n1 --- n2 )
  303.     UM*         ( un1 un2 -- ud )       UM/MOD      ( ud un --- urem uquot )
  304.  
  305.  
  306.  Memory words for VARIABLES and ARRAYS in CODE space
  307.  
  308.  
  309.     !           ( n1 a1 --- )           +!        ( n1 a1 --- )
  310.     ,           ( n1 --- )              -         ( n1 n2 --- n3 )
  311.     -1!         ( a1 --- )              0!        ( a1 --- )
  312.     2!          ( d1 a1 --- )           2+!       ( d1 a1 --- )
  313.     2@          ( a1 --- d1 )           @         ( a1 --- n1 )
  314.     @L          ( seg a1 --- n1 )       @REL>ABS  ( cfa --- a1 )
  315.     BLANK       ( a1 n1 --- )           C!        ( c1 a1 --- )
  316.     C+!         ( c1 a1 --- )           C@        ( a1 --- c1 )
  317.     CAPS-COMP   ( a1 a2 n1 --- f1 )     CMOVE       ( a1 a2 n1 --- )
  318.     CMOVE>      ( a1 a2 n1 --- )        COMP        ( a1 a2 n1 --- f1 )
  319.     COMPARE     ( a1 a2 n1 --- f1 )     COUNT       ( a1 --- a2 n1 )
  320.     CRESET      ( n1 a1 --- )           CSET        ( n1 a1 --- )
  321.     CTOGGLE     ( a1 n1 --- )           DECR        ( a1 -- )
  322.     ERASE       ( a1 n1 --- )           EVEN        ( -- )
  323.     FILL        ( a1 n1 c1 --- )        INCR        ( a1 -- )
  324.     LARGEST     ( a1 n1 --- a2 n2 )     LENGTH      ( a1 --- a2 n1 )
  325.     MOVE        ( a1 a2 n1 --- )        OFF         ( a1 --- )
  326.     ON          ( a1 --- )              SCAN        ( a1 n1 c1 --- )
  327.     SCANW       ( a1 w1 w2 --- a2 w3 )
  328.     SEARCH      ( sadr slen badr blen   -- n1 f1 )
  329.     SKIP        ( a1 n1 c1 --- )
  330.     SSEG        ( --- a1 )              UPC         ( char --- char' )
  331.     UPPER       ( a1 length --- )
  332.  
  333.  
  334.  Memory words for VALUES
  335.  
  336.  
  337.     !>          ( n1 | <name> --- )     +!>       ( n1 | <name> --- )
  338.     =:          ( n1 | <name> --- )     IS        ( cfa --- data-address )
  339.     @>          ( | <name> --- n1 )     DECR>       ( | <name> -- )
  340.     INCR>       ( | <name> -- )         OFF>        ( | <name> --- )
  341.     ON>         ( | <name> --- )
  342.  
  343.  
  344.  Memory Manipulation words for External memory and Ports
  345.  
  346.  
  347.     !L          ( n1 seg a1 --- )
  348.     C!L         ( c1 seg a1 --- )
  349.     CMOVEL      ( sseg sptr dseg dptr cnt -- )
  350.     CMOVEL>     ( from-seg from-offset to-seg to-offset length --- )
  351.     LFILL       ( a1 len value --- )
  352.     LFILLW      ( seg offset byte-len WORD --- )
  353.     P!          ( n1 port# --- )
  354.     P@          ( port# -- n1 )
  355.     PARAGRAPH   ( offset --- paragraph-in )
  356.     PC!         ( n1 port# --- )
  357.     PC@         ( port# -- n1 )
  358.     XALIGN      ( --- )
  359.     XEVEN       ( a1 --- a2 )
  360.  
  361.  
  362.  Menu Building words
  363.  
  364.  
  365.     ENDMENU     ( a1 n1 --- )
  366.     MENU        ( --- a1 n1 )
  367.     MENULINE"   ( n1 | <string> <func> --- n1+1 )
  368.     NEWMENU     ( | <name> --- )
  369.     NEWMENUBAR  ( | <name> --- )
  370.  
  371.  
  372.  Mode Control and Associated words
  373.  
  374.  
  375.     AUTOEDITOFF ( --- )                 AUTOEDITON  ( --- )
  376.     AUTOSAVEOFF ( --- )                 AUTOSAVEON  ( --- )
  377.     BACKUPOFF   ( --- )                 BACKUPON    ( --- )
  378.     BLANKOFF    ( --- )                 BLANKON     ( --- )
  379.     HELPOFF     ( --- )                 HELPON      ( --- )
  380.     HIDELINES   ( --- )                 INITCOLOR   ( --- )
  381.     INITMONO    ( --- )                 NOBACKUP    ( --- )
  382.     RESTORESTATE( --- )                 RESTORE_VECTORS ( -- )
  383.     SAVESTATE   ( --- )                 SET_VECTORS ( -- )
  384.     SHOWLINES   ( --- )                 SRCOFF      ( --- )
  385.     SRCON       ( --- )                 STATOFF     ( --- )
  386.     STATON      ( --- )                 WITHPATH    ( --- f1 )
  387.  
  388.  
  389.  Number Conversion & Output words
  390.  
  391.  
  392.     #           ( d1 --- d2 )           #>          ( d1 --- a1 n1 )
  393.     #S          ( d1 --- d2=0 )         (D.)        ( d1 --- a1 n1 )
  394.     (U.)        ( n1 --- a1 n2 )        (UD.)       ( d1 --- a1 n1 )
  395.     .           ( n1 --- )              .R          ( n1 n2 --- )
  396.     <#          ( d1 --- d1 )           ?           ( a1 --- )
  397.     BASE        ( --- a1 )              CONVERT     ( +d1 a1 --- +d2 a2 )
  398.     D.          ( d1 --- )              D.M.Y       ( --- )
  399.     D.R         ( d1 n1 --- )           DECIMAL     ( --- )
  400.     DIGIT       ( char base --- n1 f1 ) DOUBLE?     ( --- f1 )
  401.     DPL         ( --- a1 )              H.          ( u -- )
  402.     HEX         ( --- )                 HLD         ( --- a1 )
  403.     HOLD        ( c1 --- )              M/D/Y       ( --- )
  404.     NUMBER      ( a1 --- d1 )           NUMBER?     ( a1 --- d1 f1 )
  405.     OCTAL       ( --- )                 S>D         ( n1 --- d1 )
  406.     SIGN        ( n1 --- )              U*D         ( n1 n2 --- d1 )
  407.     U.          ( n1 --- )              U.R         ( n1 n2 --- )
  408.     UD.         ( d1 --- )              UD.R        ( d1 n1 --- )
  409.     Y-M-D       ( --- )
  410.  
  411.  
  412.  Printing Related words
  413.  
  414.  
  415.     FILEPRINT   ( | <name> --- )        FPRINT      ( file_specs --- )
  416.     IBM-PROPRINT ( --- )                PCLOSE      ( --- )
  417.     PDOS        ( a1 drive# --- f1 )    PEMIT       ( c1 --- )
  418.     PFILE       ( | <name> --- )        PR-STATUS   ( n1 --- n2 )
  419.     PRINT       ( | <command-line> -- ) PRINTING    ( --- a1 )
  420.     PRNHNDL     ( --- a1 )              TELETYPE    ( --- )
  421.     TOPRINTER   ( --- )
  422.  
  423.  
  424.  Stack Manipulation words
  425.  
  426.  
  427.     -ROT        ( n1 n2 n3 --- n3 n1 n2 )
  428.     .S          ( --- )
  429.     2>R         ( n1 n2 --- )
  430.     2DROP       ( d1 --- )              2DUP        ( d1 --- d1 d1 )
  431.     2OVER       ( d1 d2 --- d1 d2 d1 )  2R>         ( --- n1 n2 )
  432.     2R@         ( --- n1 n2 )           2ROT      ( d1 d2 d3 --- d2 d3 d1 )
  433.     2SWAP       ( d1 d2 --- d2 d1 )
  434.     3DROP       ( n1 n2 n3 --- )
  435.     3DUP        ( n1 n2 n3 --- n1 n2 n3 n1 n2 n3 )
  436.     4DUP        ( d1 d2 --- d1 d2 d1 d2 )
  437.     >R          ( n1 --- )
  438.     ?DNEGATE    ( d1 d2 --- d3 )        ?DUP    ( n1 --- n1 n1<>0 | n1=0)
  439.     ?NEGATE     ( n1 n2 --- n3 )        ABS         ( n1 --- n2 )
  440.     DEPTH       ( -- n1 )
  441.     DROP        ( n1 --- )              DUP         ( n1 --- n1 n1 )
  442.     DUP>R       ( n1 --- n1 )           FLIP        ( n1 --- n2 )
  443.     NIP         ( n1 n2 --- n2 )        OVER        ( n1 n2 --- n1 n2 n1 )
  444.     PICK        ( n1 --- n2 )           R>          ( --- n1 )
  445.     R>DROP      ( --- )                 R@          ( --- n1 )
  446.     RESTORE>    ( --- )
  447.     ROLL        ( n1 --- n2 )
  448.     ROT         ( n1 n2 n3 --- n2 n3 n1 )
  449.     RP!         ( a1 --- )
  450.     RP0         ( --- a1 )              RP@         ( --- a1 )
  451.     SAVE!>      ( n1 --- )              SAVE>       ( --- )
  452.     SP!         ( a1 --- )              SP0         ( --- a1 )
  453.     SP@         ( --- a1 )              SPLIT       ( n1 --- n2 n3 )
  454.     SWAP        ( n1 n2 --- n2 n1 )     TUCK        ( n1 n2 --- n2 n1 n2 )
  455.  
  456.  
  457.  Status Testing and Error Condition Handling words
  458.  
  459.  
  460.     ?COMP       ( --- )                 ?CONDITION  ( f1 --- )
  461.     ?CSP        ( --- )                 ?DOINGMAC   ( --- f1 )
  462.     ?DOSIO      ( --- f1 )              ?ENOUGH     ( n1 --- )
  463.     ?ERROR      ( a1 n1 f1 --- )        ?EXEC       ( --- )
  464.     ?LOADED     ( | <filename> --- )    ?MISSING    ( f1 --- )
  465.     ?STACK      ( --- )                 ABORT       ( --- )
  466.     ABORT"      ( f1 | <message>" --- ) CSP         ( --- a1 )
  467.     STATUS      ( -- )
  468.  
  469.  
  470.  String Manipulation and Output words
  471.  
  472.  
  473.     "           ( | <string>" --- )     ""          ( | <string>" --- )
  474.     ">$         ( a1 n1 --- a2 )        "BUF        ( --- a1 )
  475.     "ENVFIND    ( a1 n1 --- n2 f1 )     "HEADER     ( a1 --- )
  476.     $>EXT       ( a1 n1 a2 --- )        $>HANDLE    ( a1 handle --- )
  477.     $>TIB       ( a1 --- )              ,"          ( | <string> --- )
  478.     -TRAILING   ( a1 n1 --- a2 n2 )     ."          ( | <string>" --- )
  479.     .(          ( | <string>) --- )
  480.     .BOX"       ( | <string>" --- )
  481.     .COMMENT:   ( | ....COMMENT; --- )
  482.     /STRING     ( a1 len n1 --- addr' len' )
  483.     ?CR         ( --- )
  484.     ?LINE       ( n1 --- )
  485.     ?PAGE       ( --- )                 ?UPPERCASE  ( a1 --- a1 )
  486.     COMMENT:    ( --- )                 PAD         ( --- a1 )
  487.     PAGE        ( --- )                 PARSE       ( a1 --- a2 n1 )
  488.     PLACE       ( from count to --- )
  489.  
  490.  
  491.  System words
  492.  
  493.  
  494.     !CSP        ( --- )                 !USED       ( --- )
  495.     #CODESEGS   ( --- n1 )              #HEADSEGS   ( --- n1 )
  496.     #LISTSEGS   ( --- n1 )              #THREADS    ( --- n1 )
  497.     #TIB        ( --- a1 )              #USER       ( --- a1 )
  498.     #VOCS       ( --- a1 )              '           ( | <name> --- cfa )
  499.     'DOCOL      ( --- a1 )              'TIB        ( --- a1 )
  500.     'WORD       ( --- a1 )
  501.     (           ( --- )
  502.     (FIND)      ( here lfa --- cfa flag | here flase )
  503.     (FRGET)     ( code-addr relative-link-addr --- )
  504.     ,CALL       ( --- )
  505.     ,JUMP       ( --- )
  506.     ,VIEW       ( --- )                 .COMPSTAT   ( --- )
  507.     .COMSPEC    ( --- )                 .DATE       ( --- )
  508.     .ELAPSED    ( --- )                 .ENV        ( --- )
  509.     .FREE       ( --- )                 .HELLO      ( --- )
  510.     .ME         ( --- )                 .PATH       ( --- )
  511.     .STATUS     ( --- )                 .TIME       ( --- )
  512.     .USED       ( --- )                 .VOCWORDS   ( --- )
  513.     /*          ( | ... */ --- )        0COMPILER   ( --- )
  514.     >NEST       ( --- a1 )              >NEXT       ( --- a1 )
  515.     >PRE        ( --- )                 ?CS:        ( --- seg )
  516.     ?ES:        ( --- seg )             ?FILLBUFF   ( --- )
  517.     ?VMODE      ( --- )                 A;          ( --- )
  518.     ADEBUG      ( a1 --- )              ASSEMBLER   ( --- )
  519.     ATBL        ( --- a1 )              AUTOSAVE-MINUTES ( --- n1 )
  520.     BDOS        ( n1 func# --- a1 )     BGSTUFF     ( --- )
  521.     BOOT        ( --- )                 BUG         ( --- )
  522.     BYE         ( --- )                 BYTFUNC     ( --- )
  523.     CNHASH      ( cfa -- ya )           CNSRCH ( cfa ya maxya -- nfa failf )
  524.     CNT         ( --- a1 )              COLD        ( -- )
  525.     COMPILE     ( | <name> -- )         CONHNDL     ( --- a1 )
  526.     CONTEXT     ( --- a1 )              CONTROL     ( <char> -- n1 )
  527.     CRASH       ( -- )                  CURRENT     ( --- a1 )
  528.     DBG         ( | <name> --- )        DEFAULT     ( --- )
  529.     DEFAULTSTATE( --- )                 DIV0FUNC    ( -- )
  530.     DIV0STRT    ( -- )
  531.     DIVIDE0     ( status_reg CS IP AX BX CX DX SI BP -- )
  532.     DLN         ( a1 --- )
  533.     DONE?       ( n1 -- f1 )            EDITOR      ( --- )
  534.     EMIT.       ( char -- )             END?        ( --- a1 )
  535.     ENTRY       ( --- a1 )              ES0         ( --- a1 )
  536.     EXEHCB      ( --- a1 )              FIRST       ( --- a1 )
  537.     FORTH       ( --- )                 FUDGE       ( --- a1 )
  538.     GO          ( a1 --- )              HASH  ( str-addr voc-ptr -- thread )
  539.     HDEFAULT    ( -- )
  540.     HDOS1 ( cx dx fun -- ax cf | err-code 1 )
  541.     HERE        ( --- a1 )
  542.     HIDDEN      ( --- )
  543.     INITSTUFF   ( --- )                 INSTALLSTUFF( --- )
  544.     INTERPRET   ( -- )                  LAST        ( --- a1 )
  545.     LIMIT       ( --- a1 )              LINK        ( --- a1 )
  546.     MAKEDUMMY   ( | <name> -- )         MAX.S       ( --- a1 )
  547.     MAXNEST     ( --- n1 )              MEMCHK      ( f1 --- )
  548.     NO-NAME     ( --- )                 NOOP        ( --- )
  549.     OSF         ( --- a1 )              OUTPAUSE    ( --- )
  550.     PAUSE       ( --- )                 PAUSE-FUNC  ( --- )
  551.     PRE>        ( --- )                 PRIOR       ( --- a1 )
  552.     ROOT        ( --- )                 RUN         ( --- )
  553.     SEGSET      ( --- )                 SEQINIT     ( --- )
  554.     SETTIB      ( a1 --- )              SETYSEG     ( --- )
  555.     SOURCE      ( --- a1 n1 )           SOURCE-PARSE-WRD ( C1 --- A1 N1 )
  556.     START       ( --- )                 STATE       ( --- a1 )
  557.     SVINIT      ( --- )                 SVSEG       ( --- seg1 )
  558.     TOS         ( --- a1 )              TOTALWORDS  ( --- a1 )
  559.     TRIM        ( faddr voc-addr -- )   UNBUG       ( -- )
  560.     UNINSTALLSTUFF  ( --- )             UP          ( --- a1 )
  561.     USER        ( --- )                 VMODE-VAR   ( --- a1 )
  562.     VMODE.SET   ( --- )                 VOC-LINK    ( --- a1 )
  563.     VOCABULARY  ( | <name> -- )         W.NAME      ( NFA --- )
  564.     WARM        ( -- )                  WARNING     ( --- a1 )
  565.     WORD        ( C1 --- A1 )           XSEG        ( --- a1 )
  566.  
  567.  
  568.  Terminal Input & Output words
  569.  
  570.  
  571.     #LINE       ( --- a1 )              #OUT        ( --- a1 )
  572.     #PAGE       ( --- a1 )              (EMIT)      ( c1 --- )
  573.     (EXPECT)    ( a1 n1 --- )           (KEY)       ( --- c1 )
  574.     (KEY?)      ( --- f1 )              -LINE       ( --- )
  575.     -TAB        ( --- )                 >ATTRIB1-8  ( --- )
  576.     >BG         ( n1 --- )              >BOLD       ( --- )
  577.     >BOLDBLNK   ( --- )                 >BOLDUL     ( --- )
  578.     >BUGN       ( --- )                 >BUWT       ( --- )
  579.     >COLOR      ( --- )                 >FG         ( n1 --- )
  580.     >IBM        ( --- )                 >IN         ( --- a1 )
  581.     >LCD        ( --- )                 >MONO       ( --- )
  582.     >NONE       ( --- )                 >NORM       ( --- )
  583.     >RDWT       ( --- )                 >REV        ( --- )
  584.     >REVBLNK    ( --- )                 >TYPE       ( a1 n1 --- )
  585.     >UL         ( --- )                 ?DARK       ( --- )
  586.     ?KEYPAUSE   ( --- )                 ?PRINTER.READY ( --- f1 )
  587.     AT          ( col row --- )         ATTRIB      ( --- a1 )
  588.     BACKSPACES  ( n1 --- )              BEEP        ( --- )
  589.     BELL        ( --- c1 )              BIG-CURSOR  ( --- )
  590.     BIOSCHAR    ( --- a1 )              BIOSKEY     ( --- n1 )
  591.     BIOSKEY?    ( --- f1 )              BIOSKEYVAL  ( --- a1 )
  592.     BL          ( --- c1 )              BLACK       ( --- n1 )
  593.     BLACK-ON-WHITE ( --- )              BLUE        ( --- n1 )
  594.     BROWN       ( --- n1 )              BS          ( --- c1 )
  595.     CLS         ( --- )                 COLS        ( --- n1 )
  596.     CONSOLE     ( c1 --- )              CR          ( --- )
  597.     CRLF        ( --- )                 CROWS       ( --- n1 )
  598.     CRTAB       ( --- )                 CURSOR-ON   ( --- )
  599.     CURSOR-OFF  ( --- )                 CYAN        ( --- n1 )
  600.     DARK        ( --- )                 DKGRAY      ( --- n1 )
  601.     DTBUF       ( --- a1 )              EEOL        ( --- )
  602.     EMIT        ( c1 -- )               EXPECT      ( a1 n1 --- )
  603.     EXTYPE      ( seg a1 n1 --- )       FEMIT       ( c1 --- )
  604.     FORM-FEED   ( --- )                 GET-CURSOR  ( --- SHAPE )
  605.     GREEN       ( --- n1 )              IBM--LINE   ( -- )
  606.     IBM-AT      ( col row -- )          IBM-AT?     ( --- col row )
  607.     KEY         ( --- c1 )              KEY?        ( --- f1 )
  608.     LDUMP       ( seg offset len --- )  LMARGIN     ( -- a1 )
  609.     LTBLUE      ( --- n1 )              LTCYAN      ( --- n1 )
  610.     LTGRAY      ( --- n1 )              LTGREEN     ( --- n1 )
  611.     LTMAGENTA   ( --- n1 )              LTRED       ( --- n1 )
  612.     MAGENTA     ( --- n1 )              MED-CURSOR  ( --- )
  613.     NORM-CURSOR ( --- )                 QTYPE       ( A1 N1 --- )
  614.     QUERY       ( --- )                 RED         ( --- n1 )
  615.     RMARGIN     ( -- a1 )               ROWS        ( --- n1 )
  616.     SET-CURSOR  ( N1 --- )              SLOW        ( --- )
  617.     SPACE       ( --- )                 SPACES      ( n1 --- )
  618.     SPAN        ( --- a1 )              SPCS        ( --- a1 )
  619.     TAB         ( -- )                  TABSIZE     ( --- a1 )
  620.     TIB         ( --- a1 )              TILLKEY     ( n1 --- )
  621.     TYPE        ( a1 n1 --- )           TYPESEG     ( --- a1 )
  622.     VIDEO-SEG   ( --- a1 )              VIDEO-TYPE  ( a1 n1 --- )
  623.     WHITE       ( --- n1 )              WHITE-ON-BLACK  ( --- )
  624.     YELLOW      ( --- n1 )
  625.  
  626.  
  627.  Timing Related words
  628.  
  629.  
  630.     10TH-ELAPSED ( --- n1 )             B>SEC       ( d1 --- n1 )
  631.     B>T         ( d1 --- d2 )           FORM-DATE   ( d1 --- a1 )
  632.     FORM-TIME   ( d1 --- a1 )           GETDATE     ( --- Y MD )
  633.     GETTIME     ( --- HM Sh )           HOURS       ( N1 --- )
  634.     MINUTES     ( N1 --- )              MS          ( n1 --- )
  635.     SEC-ELAPSED ( --- N1 )              SECONDS     ( N1 --- )
  636.     SETDATE     ( NM Y --- )            SETTIME     ( HM Sh --- )
  637.     STIME       ( --- a1 )              T>B         ( d1 --- d2 )
  638.     TENTHS      ( N1 --- )              TIME-ELAPSED( --- d1 )
  639.     TIME-RESET  ( --- )                 TIMER       ( | forth_commands --- )
  640.     TTIME       ( --- a1 )
  641.  
  642.  
  643.  Utility words
  644.  
  645.  
  646.     DEBUG       ( | <name> --- )        DEBUGABLE   ( --- )
  647.     DLN         ( a1 --- )              DONE        ( --- )
  648.     DU          ( a1 -- addr+64 )       DUMP        ( a1 len -- )
  649.     ED          ( --- )                 EDIT        ( n1 --- )
  650.     EMPTY       ( --- )                 FALLOF      ( func | fl_specs --- )
  651.     FAST        ( --- )                 FENCE       ( --- a1 )
  652.     FIND        ( a1 -- cfa flag | a1 false )
  653.     FLOOK       ( | <string> <fl_specs> --- )
  654.     FORGET      ( | <name> -- )
  655.     FSAVE       ( | <name> --- )        INDEX       ( file_spec --- )
  656.     INLINE      ( --- )                 INSTALL     ( --- )
  657.     LINEEDITOR  ( x y a1 n1 --- f1 )    LISTING     ( --- )
  658.     MANY        ( -- )                  MARK        ( | <name> -- )
  659.     POSTFIX     ( --- )                 PREFIX      ( --- )
  660.     QUIT        ( -- )                  REF         ( | <name> --- )
  661.     REPAIR      ( | <name> --- )        SAVE-EXE    ( | <name> --- )
  662.     SED         ( | filename --- )      SEE         ( <name> --- )
  663.     THESE       ( --- )                 TIMES       ( N1 -- )
  664.     TOTALLINES  ( --- a1 )              TURNKEY     ( | <name> --- )
  665.     UNDEFER     ( | <name> -- )         UNEDIT      ( --- )
  666.     UNINSTALL   ( --- )                 USED        ( | <command_line> --- )
  667.     USEDIN      ( | <name> --- )        WORDS       ( | <text> <text> -- )
  668.     XDUMP       ( a1 n1 --- )           XREF        ( | <name> --- )
  669.     YDUMP       ( A1 N1 --- )
  670.  
  671.  
  672.  VIEW Manipulation words
  673.  
  674.  
  675.     +LINES      ( n1 --- )              -1LINE      ( --- )
  676.     -LINES      ( n1 --- )              >VIEWFILE   ( cfa --- offset a1 )
  677.     >VIEWLINE   ( n1 --- )              B           ( --- )
  678.     HELLO       ( --- )                 HELP        ( | <name> --- )
  679.     HELPVIEW    ( | <name> --- )        L           ( --- )
  680.     LIST        ( n1 --- )              LL          ( | <name> --- )
  681.     N           ( --- )                 SETVIEW     ( | <path> --- )
  682.     VIEW        ( | <name> --- )        VIEWLINES   ( n1 n2 --- )
  683.     VIEWPATH    ( --- a1 )
  684.  
  685.  
  686.  Window Control words
  687.  
  688.  
  689.     BCR         ( --- )
  690.     BOX         ( left top right bottom --- )
  691.     BOX&FILL    ( left top right bottom --- )
  692.     RECOVERLINE ( n1 --- )
  693.     RECOVERSCR  ( --- )
  694.     RESTSCR     ( --- )
  695.     SAVESCR     ( --- )
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  --------------------  Function Glossary Aplphabetic  -------------------
  718.  
  719. !       ( n1 a1 --- )           KERNEL1
  720.         Store a 16 bit value N1 into the address a1 in the CODE
  721.         segment.
  722.  
  723. !>      ( n1 | <name> -- )      EQUCOLON
  724.         Store the value n1 on the stack into the body field of <name>.
  725.         Typically used to modify a VALUE or VARIABLE. May be used on
  726.         the command line. Used in the form:   10 !> XX   where XX is a
  727.         VALUE or VARIABLE.
  728.  
  729. !CSP    ( -- )                  KERNEL3
  730.         Save the current stack level for later error checking by ?CSP.
  731.  
  732. !HCB    ( a1 | <name> --- )     HANDLES
  733.         Get <name> from the input stream and move it into the handle
  734.         a1.
  735.  
  736. !L      ( n1 seg a1 -- )        KERNEL2
  737.         Store the 16 bit value N1 into the FAR address specified by SEG
  738.         and ADDR.
  739.  
  740. !USED   ( --- )                 UTILS
  741.         Stores away the current values of the various segments in F-PC
  742.         for later comparison with the same values after a compile.
  743.         Used to determine dictionary space usage.
  744.  
  745. "       ( | <string>" -- )      compile time    KERNEL3
  746.         ( --- a1 n1 )           runtime
  747.         Compile <string> terminated by a ", into CODE space. Return the
  748.         address and length of the string at runtime.
  749.  
  750. ""      ( | <string>" -- )      compile time    KERNEL3
  751.         ( --- a1 n1 )           runtime
  752.         Compile <string> terminated by a ", into LIST space. The
  753.         string is moved into a CODE space buffer at runtime, the
  754.         address and length of the buffer are subsequently returned.
  755.         Only a single buffer is used for these strings, so each ""
  756.         string must be used before the next "" string is executed.
  757.  
  758. ">$     ( a1 len -- a2 )        KERNEL3
  759.         Convert address a1 and length len of a string created with "
  760.         into a counted string address a2.  This word relys on the fact
  761.         that " really creates counted strings, but converts them to
  762.         address and length on execution.
  763.  
  764. "BUF    ( --- a1 )              KERNEL3
  765.         The buffer that is used when returning a "" string at runtime.
  766.         See also the "" definition above.
  767.  
  768. "ENVFIND ( a1 n1 --- n2 f1 )    ENVIRON
  769.         Search the environment for the string specified by a1, n1 where
  770.         A1 is the address of the first character to find, and N1 is the
  771.         length of the string being searched for. Return a boolean flag
  772.         TRUE if found, and N2 the offset into the environment where the
  773.         match occured.
  774.  
  775. "HEADER ( a1 --- )              KERNEL3
  776.         Use the string specified by a1 to make a header, and initialize
  777.         the code field. First we check for duplicates. Then we make
  778.         entry in >NAME hash table if appropriate. Next lay down the
  779.         view field. Then we hook in to the correct thread an make the
  780.         link field. We set up LAST so that it points to our name
  781.         field. Then we copy the name to YSEG and delimit the name
  782.         field bits. Then we make the pointer in the YSEG to the CFA.
  783.         Then we add a stopper entry to >NAME hash table in case of a
  784.         large ALLOT or end of dictionary. All of the work is done in
  785.         HEAD space, "HEADER has no effect on CODE space whatsoever.
  786.  
  787. #       ( d1 --- d2 )           KERNEL2
  788.         Convert a single digit of D1 into the number conversion buffer
  789.         below PAD in the current base.  Return D2 the remainder for
  790.         further conversion.
  791.  
  792. #>      ( d1 --- a1 len )       KERNEL2
  793.         Complete the numeric conversion of D1, discarding the double
  794.         ZERO and returning the address and count of the converted
  795.         string located below PAD.
  796.  
  797. #CODESEGS ( --- n1 )            KERNEL2
  798.         A VALUE which returns the number of 16 byte segments assigned
  799.         to be used for CODE (assembly language), CONSTANTS and
  800.         VARIABLES.  Limited to 64k, which is the value 4096 decimal.
  801.  
  802. #ELSE   ( --- )                 COMMENT
  803.         The optional ELSE portion of an interpreted conditional
  804.         structure started with #IF, and completed with #THEN.  See
  805.         also #IF.
  806.  
  807. #ENDIF
  808. #THEN   ( --- )                 COMMENT
  809.         Ends a multi-line Compiler directive. See #IF.
  810.  
  811. #HEADSEGS ( --- n1 )            KERNEL2
  812.         A VALUE which returns the number of 16 byte segments assigned
  813.         to be used for Forth HEADERS.  Limited to 64k, which is the
  814.         value 4096 decimal.
  815.  
  816. #IF     ( f1 --- )              COMMENT
  817.         Starts a multi-line compiler directive. If the boolean passed
  818.         to #IF is true, then the lines following #IF will be executed.
  819.         If the boolean is false, then the lines following #IF up to the
  820.         #ENDIF or #THEN, will be ignored.  An optional #ELSE may be
  821.         inserted after #IF, and before #THEN. Used in the following
  822.         form:   <boolean> #IF           TRUE portion to perform
  823.                           #ELSE         optional else portion
  824.                           #THEN         operation continues here.
  825.  
  826. #LINE   ( --- a1 )              KERNEL2
  827.         A variable that holds the line number of the current line on
  828.         which text is being typed. Incremented by CR.
  829.  
  830. #LISTSEGS ( --- n1 )            KERNEL2
  831.         A VALUE which returns the number of 16 byte segments assigned
  832.         to be used for bodys of Forth colon definitions.  Limited by
  833.         the memory of your computer.
  834.  
  835. #OUT    ( --- a1 )              KERNEL2
  836.         A variable that holds the column number of the most recent type
  837.         or emit to the display. Incremented by EMIT or TYPE.
  838.  
  839. #PAGE   ( --- a1 )              UTILS
  840.         A VARIABLE that contains the number of the current page.  #PAGE
  841.         is incremented by PAGE, but must be reset manually.
  842.  
  843. #S      ( d1 --- d2=0 )         KERNEL2
  844.         Convert the double number D1 into ascii characters stored below
  845.         PAD until D1 is reduced to a double ZERO.
  846.  
  847. #THREADS ( -- n1 )              KERNEL1
  848.         Return the CONSTANT number of vocabulary threads used in the
  849.         dictionary. In F-PC this number can vary in binary multiples
  850.         from 2 to 128, it is normally set to 64.
  851.  
  852. #TIB    ( --- a1 )              KERNEL2
  853.         Used by WORD to hold the number of characters in the terminal
  854.         input buffer when interpreting from the keyboard.
  855.  
  856. #USER   ( --- a1 )              KERNEL4
  857.         A VARIABLE that holds the count of how many user variables are
  858.         allocated.
  859.  
  860. #VOCS   ( --- n1 )              KERNEL2
  861.         The maximum number of vocabularies that can be active at one
  862.         time in the vocabulary search order array.
  863.  
  864. $>EXT   ( a1 n1 a2 --- )        HANDLES
  865.         Move the specified string a1,n1 to the extension field of the
  866.         handle a2.
  867.  
  868. $FLOAD  ( a1 --- f1 )           SEQREAD
  869.         the file specified by counted string a1, return f1 true
  870.         if the file did not exist. Will abort if a compile error
  871.         occurs while compiling the file.
  872.  
  873. $>HANDLE ( a1 a2 --- )          HANDLES
  874.         Move a counted filename string a1 into handle a2  for use by
  875.         the following words.
  876.  
  877. $>TIB   ( a1 --- )              UTILS
  878.         Move the counted string A1 into the Terminal Input Buffer for
  879.         immediate interpretation or access with WORD.  Any contents of
  880.         TIB is overwritten.
  881.  
  882. $HOPEN  ( a1 --- f1 )           SEQREAD
  883.         Open the file specified by the counted string a1. Return
  884.         boolean f1 false if the open was succesful.
  885.  
  886. $PFILE  ( a1 --- f1 )           PRINT
  887.         Select a print file as specified by the counted string a1.
  888.         Return F1 a boolean error flag true if the print file could not
  889.         be created.
  890.  
  891. '       ( | <name> -- cfa )     pronounced "tick"       KERNEL3
  892.         Return the CFA (code field address) of the next word in the
  893.         input stream, <name>.
  894.  
  895. 'DOCOL  ( --- a1 )              UTILS
  896.         A CONSTANT that returns the execution address of NEST, or
  897.         DOCOLON at it is sometimes known.
  898.  
  899. 'TIB    ( --- a1 )              KERNEL2
  900.         A VARIABLE that contains an address that points to the location
  901.         in memory where characters are entered by user.
  902.  
  903. 'WORD   ( --- A1 )              KERNEL2
  904.         Leaves the same address as WORD. In this system, 'WORD is the
  905.         same as HERE.
  906.  
  907. (       ( -- )                  KERNEL3
  908.         The Forth comment character. The input stream of the current
  909.         line is skipped until a ) is encountered.  Terminates at line
  910.         end.
  911.  
  912. (")     ( | <string> -- a1 len )KERNEL3
  913.         Return the address and length of the inline string, and
  914.         continue execution after the string.
  915.  
  916. (+LOOP) ( n1 --- )              KERNEL1
  917.         Increment the loop counter by the value on the stack and decide
  918.         whether or not to loop again.  Due to the wierdness of the
  919.         8080, you have to stand on your head to determine the
  920.         conditions under which you loop or exit.
  921.  
  922. (.")    ( --- )                 KERNEL3
  923.         Type the inline string, and continue execution after the
  924.         string. Compiled by ." , not used from the keyboard.
  925.  
  926. (.)     ( n1 --- a1 n2 )        KERNEL2
  927.         Convert a signed 16 bit number to a string.
  928.  
  929. (?DO)   ( n1 n2 --- )           KERNEL1
  930.         The runtime code compiled by ?DO.  The difference between ?DO
  931.         and DO is that ?DO will not perform any iterations if the
  932.         initial index is equal to the final index.
  933.  
  934. (?ERROR) ( a1 n1 f1 --- )       KERNEL3
  935.         Default for ?ERROR. If boolean f1 is true then type the message
  936.         specified by a1,n1 and QUIT. Else discard the message a1,n1.
  937.  
  938. (?LEAVE) ( f1 --- )             KERNEL1
  939.         Compiled function emplaced by ?LEAVE. Leaves if the flag on the
  940.         stack is true.  Continues if not.
  941.  
  942. (?SERROR) ( a1 n1 f1 --- )      SEQREAD
  943.         If boolean is true, then print message addr1,n1 and show the
  944.         line in the current file where the error occured.
  945.  
  946. (ABORT") ( f1 -- )              KERNEL3
  947.         The Runtime code compiled by ABORT". Uses ERROR, and updates
  948.         return stack.
  949.  
  950. (D.)    ( d1 --- a1 n1 )        KERNEL2
  951.         Convert a signed double number to a string.
  952.  
  953. (DO)    ( n1 n2 --- )           KERNEL1
  954.         The runtime code compiled by DO. Pushes the inline address onto
  955.         the return stack along with values needed by (LOOP).
  956.  
  957. (EMIT)  ( c1 --- )              KERNEL2
  958.         Sends a character to both the console and optionally to the
  959.         printer.
  960.  
  961. (EXPECT) ( a1 n1 --- )          KERNEL2
  962.         Wait for n1 characters to be typed at the keyboard, and place
  963.         those characters in the buffer starting at a1.
  964.  
  965. (FIND)  ( here lfa --- cfa flag | here false ) KERNEL3
  966.         Does a search of the dictionary based on a pointer to a
  967.         vocabulary thread and a string.  If it finds the string in the
  968.         chain, it returns a pointer to the CFA field inside the header.
  969.         This field contains the code field address of the body. If it
  970.         was an immediate word the flag returned is a 1. If it is
  971.         non-immediate the flag returned is a -1. If the name was not
  972.         found, the string address is returned along with a flag of
  973.         zero. Note that links point to links, and are absolute
  974.         addresses.
  975.  
  976. (FRGET) ( code-addr relative-link-addr )        KERNEL3
  977.         Forgets part of the dictionary. Both the code address and the
  978.         header address are specified, and may be independent. (FRGET)
  979.         resets all of the links and releases the space.
  980.  
  981. (IS)    ( cfa -- )              KERNEL4
  982.        The code compiled by IS. Sets the following DEFERred word to the
  983.        address on the parameter stack.
  984.  
  985. (KEY)   ( --- c1 )              KERNEL2
  986.         Pauses until a key is ready, and returns it on the stack.
  987.  
  988. (KEY?)  ( --- f1 )              KERNEL2
  989.         Returns true if the user has already pressed a key, otherwise
  990.         false.
  991.  
  992. (LEAVE) ( --- )                 KERNEL1
  993.         Compiled function emplace by LEAVE. Does an immediate exit of a
  994.         DO ... LOOP structure.  Unlike FIG Forth which waits until the
  995.         next LOOP is executed.
  996.  
  997. (LIT)   ( --- n1 )              KERNEL1
  998.         The runtime code for literals.  Pushes the following two bytes
  999.         onto the parameter stack and moves the IP over them. It is
  1000.         compiled by the word LITERAL.
  1001.  
  1002. (LOOP)  ( --- )                 KERNEL1
  1003.         the runtime procedure for LOOP.  Branches back to the beginning
  1004.         of the loop if there are more iterations to do. Otherwise it
  1005.         exits. The loop counter is incremented.
  1006.  
  1007. (NUMBER) ( a1 --- d1 f1 )       KERNEL2
  1008.         Convert the count delimited string at a1 to a double number.
  1009.         (NUMBER) takes into account a leading minus sign, and stores a
  1010.         pointer to the last period in DPL.  Note the string must end
  1011.         with a blank or an error message is issued.
  1012.  
  1013. (NUMBER?) ( a1 --- d1 f1 )      KERNEL2
  1014.         Given a string containing at least one digit, convert it to a
  1015.         number.
  1016.  
  1017. (OF)    ( n1 n2 -- n1 )  ( or ) ( n1 n1 -- )    KERNEL1
  1018.         The run-time code compiled of OF .  If the top two stack
  1019.         elements are the same, the two items will be dropped from the
  1020.         stack and the code following OF will be executed.  Otherwise,
  1021.         only the top item is dropped from the stack, and a branch is
  1022.         taken from the literal following the in-line (OF) .
  1023.  
  1024. (U.)    ( n1 --- a1 n2 )        KERNEL2
  1025.         Convert an unsigned 16 bit number to a string.
  1026.  
  1027. (UD.)   ( d1 --- a1 n1 )        KERNEL2
  1028.         Convert an unsigned double number to a string.
  1029.  
  1030. *       ( n1 n2 -- n3 )         KERNEL1
  1031.         Returns a product of two numbers.  The numbers may be either
  1032.         signed or unsigned.  The product will be correct as long as it
  1033.         may be properly represented in 16 bits!
  1034.  
  1035. */      ( n1 n2 n3 -- quot )    KERNEL1
  1036.         is a particularly useful operator, as it allows you to do
  1037.         accurate arithmetic on fractional quantities.  Think of it as
  1038.         multiplying n1 by the fraction n2/n3.  The intermediate result
  1039.         is kept to full accuracy.  Notice that this is not the same as
  1040.         * followed by /. See Starting Forth for more examples.
  1041.  
  1042. */MOD   ( n1 n2 n3 -- mod quot )KERNEL1
  1043.         This returns the floored quotient and modulus of a 32 bit
  1044.         numerator and a 16 bit denominator n3 .  The numerator is an
  1045.         intermediate 32 bit product of the 16 bit quantities n1 and n2
  1046.         . Note that the sign of the modulus is the same as the sign of
  1047.         the denominator.
  1048.  
  1049. *D      ( n1 n2 --- d1 )        KERNEL1
  1050.         multiplys two singles and leaves a double.
  1051.  
  1052. +       ( n1 n2 --- n3 )        KERNEL1
  1053.         Add the top two numbers on the stack and return the result.
  1054.  
  1055. +!      ( n1 a1 --- )           KERNEL1
  1056.         Increment the value at a1 by n1.  This is equivalent to the
  1057.         following:   DUP @ ROT + SWAP ! but much faster.
  1058.  
  1059. +!>     ( n1 | <name> -- )      EQUCOLON
  1060.         Increment the body field of <name> by value n1 on the stack.
  1061.         Typically used to modify a VALUE or VARIABLE.
  1062.  
  1063. +LINES  ( n1 --- )              VIEW
  1064.         move forward n1 lines in the current file.
  1065.  
  1066. +LOOP   ( n1 -- )               KERNEL3
  1067.         Terminate a loop structure. Increment loop index by n1 and
  1068.         repeat <loop-body> until loop index crosses the boundary
  1069.         between limit and limit - 1. Used in the following form: DO
  1070.         <loop-body> LOOP.
  1071.  
  1072. +TAB    ( --- )                 DECOM
  1073.         Bump the left margin up by 8 characters.  used by the
  1074.         decompiler to display nested conditional structures.
  1075.  
  1076. ,       ( n1 -- )       pronounced "comma"      KERNEL3
  1077.         Set the contents of the dictionary to the arbitrary 16-bit
  1078.         value on the stack.
  1079.  
  1080. ,"      ( | <string> -- )       KERNEL3
  1081.         Add the following text string till a " to the dictionary in
  1082.         CODE space.
  1083.  
  1084. ,CALL   ( -- )                  KERNEL3
  1085.         Compiles a CALL to address ZERO, the actual branch address is
  1086.         set later by ;USES or ;CODE.
  1087.         See CREATE, VARIABLE, CONSTANT & :
  1088.  
  1089. ,JUMP   ( --- )                 KERNEL3
  1090.         Compiles a JMP to address ZERO, the actual jump address is set
  1091.         later by ;USES or ;CODE.  See CREATE, VARIABLE, CONSTANT & :
  1092.  
  1093. ,VIEW   ( -- )                  KERNEL3
  1094.         Calculate and compile the VIEW field into the header.
  1095.  
  1096. -       ( n1 n2 --- n3 )        KERNEL1
  1097.         Subtracts n2 from n1 leaving the result on the stack.
  1098.  
  1099. -1!     ( a1 -- )               KERNEL1
  1100.         Set the contents of the 16 bit quantity at a1 to -1 (all bits
  1101.         set).
  1102.  
  1103. -1LINE  ( --- )                 VIEW
  1104.         backup 1 line from current loadline
  1105.  
  1106. -LINE   ( --- )                 UTILS
  1107.         A DEFERed word that deletes one line on the display at the
  1108.         cursor line.  Lines below the cursor line are scrolled up one
  1109.         line.
  1110.  
  1111. -LINES  ( n1 --- )              VIEW
  1112.         backup n1 lines in the current file.
  1113.  
  1114. -ROT    ( n1 n2 n3 --- n3 n1 n2 ) KERNEL1
  1115.         The inverse of ROT.  Rotates the top element to third place.
  1116.  
  1117. -TAB    ( --- )                 DECOM
  1118.         Decrement the left margin up by 8 characters.  Used by the
  1119.         decompiler to display nested conditional structures.
  1120.  
  1121. -TRAILING ( a1 n1 --- a2 n2 )   KERNEL2
  1122.         Return the address and length of the given string ignoring
  1123.         trailing blanks.
  1124.  
  1125. .       ( n1 --- )              KERNEL2
  1126.         Display n1 as a signed 16 bit number with a trailing space.
  1127.  
  1128. ."      ( | <string> -- )       KERNEL3
  1129.         Compile the string till a " to be typed out later.  These
  1130.         strings are compiled into LIST space to conserve CODE room.
  1131.  
  1132. .(      ( -- )                  KERNEL3
  1133.         Type the following string on the terminal.
  1134.  
  1135. .BOX"   ( X Y | <string> --- )  BOXTEXT
  1136.         Used while compiling, followed by <string> which is compiled
  1137.         into the current definition. Displays <string> inside a box on
  1138.         the screen whose upper left corner is at X, Y.  Used in a COLON
  1139.         definitions as Follows: : TEXT 10 10 .BOX" This is a test" ;
  1140.  
  1141. .COMMENT: ( --- )               COMMENT
  1142.         Starts a multi-line print statment. All lines following the
  1143.         ".comment:" line will be printed to the display until a
  1144.         "comment;" is encountered.
  1145.  
  1146. .COMPSTAT ( --- )               TIMESTUF
  1147.         Display the compiler status since the most recent 0COMPILER was
  1148.         performed.  Used to keep track of the performance of the
  1149.         compiler on various hardware.  See also 0COMPILER
  1150.  
  1151. .COMSPEC ( --- )                ENVIRON
  1152.         Print the current command specification including the drive and
  1153.         path.
  1154.  
  1155. .CURFILE ( --- )                HELLO
  1156.         Display the full file path and size of the currently open file.
  1157.  
  1158. .DATE   ( --- )                 TIMER
  1159.         Get and display the DOS date.
  1160.  
  1161. .ELAPSED ( --- )                TIMER
  1162.         Display the elapsed time in Houres, minutes, seconds, and
  1163.         hundredths since the last TIME-RESET was performed. Overflows
  1164.         at 18 hours.
  1165.  
  1166. .ENV    ( --- )                 ENVIRON
  1167.         Display the current contents of the environment string.
  1168.  
  1169. .FILE   ( --- )                 HELLO
  1170.         Display the name of the currently open file.
  1171.  
  1172. .FILES  ( --- )                 FILSTAT
  1173.         Print the contents of the file system handle stack.
  1174.  
  1175. .FREE   ( --- )                 UTILS
  1176.         Display the amount of dictionary space available at the
  1177.         current time.
  1178.  
  1179. .HELLO  ( --- )                 HELLO
  1180.         Defered word, that displays the startup message when F-PC
  1181.         begins execution. Performs .<hello> by default.
  1182.  
  1183. .ID     ( nfa -- )              KERNEL4
  1184.         Display the variable length name whose name field address is on
  1185.         the stack. If it is shorter than its count, it is padded with
  1186.         underscores. Only valid Ascii is typed.
  1187.  
  1188. .LOADED ( --- )                 FILSTAT
  1189.         Print a list of all files that have been loaded.
  1190.  
  1191. .ME     ( --- )                 ENVIRON
  1192.         Print the name of the program currently executing. This only
  1193.         works on DOS 3.0 and higher. If it is used on DOS 2.x no name
  1194.         will be printed.  See also ME@.
  1195.  
  1196. .PATH   ( --- )                 ENVIRON
  1197.         Print the current directory search PATH.
  1198.  
  1199. .R      ( n1 n2 --- )           KERNEL2
  1200.         Display n1 as a signed 16 bit number right justified in a field
  1201.         of n2 spaces.
  1202.  
  1203. .S      ( -- )                  KERNEL4
  1204.        Displays the contents of the parameter stack non destructively.
  1205.        Very useful when debugging.
  1206.  
  1207. .SEQHANDLE ( --- )              SEQREAD
  1208.         Display the filename in the current sequential file handle.
  1209.  
  1210. .STATUS ( -- )                  STATUS
  1211.         Test STATV, if it is on, then display the status line at the
  1212.         top of the screen.
  1213.  
  1214. .TIME   ( --- )                 TIMER
  1215.         Get the time from DOS, and display it.
  1216.  
  1217. .USED   ( --- )                 UTILS
  1218.         Display the amount of dictionary space used since the last
  1219.         !USED was executed.
  1220.  
  1221. .VOCWORDS ( A1 --- )            WORDS
  1222.         Display the words matching, from a vocabulary.  See the source
  1223.         for WORDS for usage information.
  1224.  
  1225. /       ( num den -- quot )     KERNEL1
  1226.         Divide two signed single precision numbers and return the
  1227.         floored quotient.  Note that  -5 2 /  returns a value of -3 .
  1228.  
  1229. /*      ( | <text> --- )        COMMENT
  1230.         Start a group of comments until a terminating */ is
  1231.         encountered.
  1232.  
  1233. /MOD    ( num den -- rem quot ) KERNEL1
  1234.         Divide two signed single precision numbers and return the
  1235.         floored quotient and modulus (remainder).  Note that this
  1236.         function is designed to return a modulus which has the same
  1237.         sign as the denominator (usually positive), independent of the
  1238.         sign of the denominator.
  1239.  
  1240. /STRING ( a1 len n1 --- addr' len' ) KERNEL2
  1241.         Index into the string addr, len, by n1. Returns addr+n and
  1242.         len-n.
  1243.  
  1244. 0!      ( a1 -- )               KERNEL1
  1245.         Clear all 16 bits at the specified address.
  1246.  
  1247. 0<      ( n1 --- f1 )           KERNEL1
  1248.         Returns true if top is negative, ie sign bit is on.
  1249.  
  1250. 0<=     ( n1 --- f1 )           UTILS
  1251.         Return a boolean flag true if n1 is less than or equal to zero.
  1252.  
  1253. 0<>     ( n1 --- f1 )           KERNEL1
  1254.         Returns true if the top is non-zero, False otherwise.
  1255.  
  1256. 0=      ( n1 --- f1 )           KERNEL1
  1257.         Returns True if top is zero, False otherwise.
  1258.  
  1259. 0>      ( n1 --- f1 )           KERNEL1
  1260.         Returns true if top is positive.
  1261.  
  1262. 0>=     ( n1 --- f1 )           UTILS
  1263.         Return a boolean flag true if n1 is greater than or equal to
  1264.         zero.
  1265.  
  1266. 0COMPILER ( --- )               TIMESTUF
  1267.         Initialize the compiler performance monitoring tool, in
  1268.         preperation for loading a quantity of source code.  The word
  1269.         .COMPSTAT when later executed will inform you of the number of
  1270.         lines compiled, and the rate at which linew were compiled.  See
  1271.         also .COMPSTAT.
  1272.  
  1273. 1+      ( n1 --- n2 )           KERNEL1
  1274.         Increment the top of the stack by one.
  1275.  
  1276. 1-      ( n1 --- n2 )           KERNEL1
  1277.         Decrement the top of the stack by one.
  1278.  
  1279. 10TH-ELAPSED ( --- N1 )         TIMESTUF
  1280.         Return n1 the tenths of a second that have elapsed since the
  1281.         last TIME-RESET was performed.
  1282.  
  1283. 2!      ( d1 a1 --- )           KERNEL1
  1284.         Store a 32 bit value at addr.
  1285.  
  1286. 2*      ( n1 --- n2 )           KERNEL1
  1287.         Double the number on the Stack.
  1288.  
  1289. 2+      ( n1 --- n2 )           KERNEL1
  1290.         Increment the top of the stack by two.
  1291.  
  1292. 2+!     ( d1 a1 -- )            KERNEL1
  1293.         Add the double number to the contents of the double word at
  1294.         the specified address.
  1295.  
  1296. 2-      ( n1 --- n2 )           KERNEL1
  1297.         Decrement the top of the stack by two.
  1298.  
  1299. 2/      ( n1 --- n2 )           KERNEL1
  1300.         Shift the number on the stack right one bit.  Equivalent to
  1301.         division by 2 for positive numbers.
  1302.  
  1303. 2>R     ( n1 n2 --- )           KERNEL1
  1304.         Pops two values off of the parameter stack and pushes them onto
  1305.         the return stack.  It is dangerous to use this randomly!  This
  1306.         word is equivalent to: "SWAP >R >R" that is the order of the
  1307.         operator on the parameter stack is maintained when they are
  1308.         placed on the return stack.
  1309.  
  1310. 2@      ( a1 --- d1 )           KERNEL1
  1311.         Fetch a 32 bit value from addr.
  1312.  
  1313. 2CONSTANT ( d1 | <name> -- )    compile time  KERNEL3
  1314.           ( --- d1 )            run time
  1315.         Create a double number constant.
  1316.  
  1317. 2DROP   ( n1 n2 --- )           KERNEL1
  1318.         ( d1 --- )
  1319.         Drop the top two elements of the data stack.
  1320.  
  1321. 2DUP    ( n1 n2 --- n1 n2 n1 n2 ) KERNEL1
  1322.         ( d1 --- d1 d1 )
  1323.         Duplicate the top two elements of the data stack.
  1324.  
  1325. 2OVER   ( n1 n2 n3 n4 --- n1 n2 n3 n4 1n 2n )   KERNEL1
  1326.         ( d1 d2 --- d1 d2 d1 )
  1327.         Copy the second pair of numbers over the top pair.  Behaves
  1328.         like 2SWAP for 32 bit integers.
  1329.  
  1330. 2R>     ( --- n1 n2 )           KERNEL1
  1331.         Pops two values off of the return stack and pushes them onto
  1332.         the parameter stack.  It is dangerous to use this randomly!
  1333.         This word is equivalent to: R> R> SWAP that is the order of the
  1334.         operator on the return stack is maintained when they are placed
  1335.         on the parameter stack.
  1336.  
  1337. 2R@     ( --- n1 n2 )           KERNEL1
  1338.         Copies the two top values from the return stack to the
  1339.         parameter stack. Same as "R> R> 2DUP >R >R SWAP" that is the
  1340.         order of the operator on the return stack is maintained when
  1341.         they are placed on the parameter stack.
  1342.  
  1343. 2ROT    ( n1 n2 n3 n4 n5 n6 --- n3 n4 n5 n6 n1 n2 ) KERNEL1
  1344.         ( d1 d2 d3 --- d2 d3 d1 )
  1345.         Rotates top three double numbers.
  1346.  
  1347. 2SWAP   ( n1 n2 n3 n4 --- n3 n4 1n 2n )         KERNEL1
  1348.         ( d1 d2 --- d2 d1 )
  1349.         Swap the top two pairs of numbers on the stack.  You can use this
  1350.         operator to swap two 32 bit integers and preserve their meaning as
  1351.         double numbers.
  1352.  
  1353. 2VARIABLE ( | <name> -- ) compile time    KERNEL3
  1354.           ( --- a1 )      runtime
  1355.         Create a double length variable.
  1356.  
  1357. 3DROP   ( n1 n2 n3 --- )        KERNEL1
  1358.         Drop the top three elements of the data stack.
  1359.  
  1360. 3DUP    ( n1 n2 n3 --- n1 n2 n3 n1 n2 n3 ) KERNEL1
  1361.         Duplicate the top three elements of the data stack.
  1362.  
  1363. 4DUP    ( n1 n2 n3 n4 --- n1 n2 n3 n4 n1 n2 n3 n4 ) KERNEL1
  1364.         ( d1 d2 --- d1 d2 d1 d2 )
  1365.         Duplicate the top four 16 bit elements of the stack.
  1366.  
  1367. 8*      ( n1 --- n2 )           KERNEL1
  1368.         Multiply the top of the stack by 8.
  1369.  
  1370. :       ( -- )                  KERNEL3
  1371.         Defines a colon definition. The definition is hidden until it
  1372.         is completed, or the user desires recursion. The runtime for :
  1373.         adds a nesting level.
  1374.  
  1375. ;       ( -- )                  KERNEL3
  1376.         Terminates a colon definition. Compiles the runtime code to
  1377.         remove a nesting level, and changes STATE so that compilation
  1378.         will terminate.
  1379.  
  1380. ;CODE   ( -- )                  KERNEL3
  1381.         Used for defining the run time portion of a defining  word in
  1382.         low level code.
  1383.  
  1384. ;USES   ( -- )                  KERNEL3
  1385.         Similar to the traditional ;CODE except used when  run time
  1386.         code has been previously defined.
  1387.  
  1388. <       ( n1 n2 --- f1 )        KERNEL1
  1389.         Compare the top two elements on the stack as signed integers
  1390.         and return true if n1 < n2.
  1391.  
  1392. <#      ( d1 --- d1 )           KERNEL2
  1393.         Start numeric conversion. Sets the variable HLD to PAD.
  1394.  
  1395. <=      ( n1 n2 --- f1 )        UTILS
  1396.         Less than or equal.
  1397.  
  1398. <>      ( n1 n2 --- f1 )        KERNEL1
  1399.         Returns true if the two element are not equal, else false.
  1400.  
  1401. <ED>    ( --- )                 TOPEDIT
  1402.         Re-Enter the editor on the current file at the most recent edit
  1403.         line. Reads the file into memory if needed.
  1404.  
  1405. <FLOAD> ( --- )                 SEQREAD
  1406.         Primitive word that loads the file just opened.
  1407.  
  1408. <GETTIME> ( --- hm sh )         TIMER
  1409.         Get the system time in DOS format, HM=hours,minutes and
  1410.         SH=seconds,hundreths.  See also .TIME, .DATE
  1411.  
  1412. <HELP>  ( a1 --- f1 )           VIEW
  1413.         Show the HELP for a word specified by a1
  1414.  
  1415. <HRENAME> ( handle1 handle2 --- return-code ) HANDLES
  1416.         Code primitive for the HRENAME. See also HRENAME.
  1417.  
  1418. <LOAD>  ( --- )                 SEQREAD
  1419.         Load the current file starting at the current file offset.
  1420.  
  1421. <MARK   ( -- a1 )               KERNEL3
  1422.         Set up for a Backwards Branch.
  1423.  
  1424. <RESOLVE ( a1 -- )              KERNEL3
  1425.         Resolve a Backwards Branch.
  1426.  
  1427. <VIEW>  ( a1 --- f1 )           VIEW
  1428.         VIEW the name specified by a1 the cfa
  1429.  
  1430. <VIEWLINES> ( n1 n2 --- )       VIEW
  1431.         A primitive used by VIEW and HELP. See also VIEW and HELP.
  1432.  
  1433. =       ( n1 n2 --- f1 )        KERNEL1
  1434.         Returns true if the two elements on the stack are equal, False
  1435.         otherwise.
  1436.  
  1437. =:      ( n1 | <name> -- )      EQUCOLON
  1438.         Used to assign values into the body of <name>, like VARIABLEs
  1439.         or VALUEs. May be used on the command line. Typical usage is as
  1440.         follows:        34 VALUE MYVAL          \ create a VALUE
  1441.         : CHANGE_MYVAL  ( --- )                 \ define a word to
  1442.                         23 =: MYVAL ;           \ change MYVAL
  1443.  
  1444. >       ( n1 n2 --- f1 )        KERNEL1
  1445.         Compare the top two elements on the stack as signed integers
  1446.         and return true if n1 > n2.
  1447.  
  1448. >=      ( n1 n2 --- f1 )        UTILS
  1449.         Compare n1 and n2, return a true if n1 is greater than or
  1450.         equal to n2.
  1451.  
  1452. >ATTRIB ( handle --- attrib-a1 )HANDLES
  1453.         Step to the attribute field of the handle
  1454.  
  1455. >ATTRIB8
  1456. >ATTRIB7
  1457. >ATTRIB6
  1458. >ATTRIB5
  1459. >ATTRIB4
  1460. >ATTRIB3
  1461. >ATTRIB2
  1462. >ATTRIB1 ( --- )                 UTILS
  1463.         Select a display attribute for the display you are using.
  1464.         These are DEFERed words that are setup at COLD start time to
  1465.         perform the proper function for the display card you are using.
  1466.  
  1467. >BG     ( N1 --- )              COLOR
  1468.         Set the Background color to value n1.
  1469.  
  1470. >BODY   ( cfa -- pfa )          KERNEL3
  1471.         Go from code field address cfa to body address pfa.
  1472.  
  1473. >BOLD   ( --- )                 MONOCROM
  1474.         Set the display attribute to bold.
  1475.  
  1476. >BOLDBLNK ( --- )               MONOCROM
  1477.         Set the display attribute to bold blink.
  1478.  
  1479. >BOLDUL ( --- )                 MONOCROM
  1480.         Set the display attribute to bold underline.
  1481.  
  1482. >BUGN   ( --- )                 COLOR
  1483.         Set the Backgound to BLUE, and Forground to Green.
  1484.  
  1485. >BUWT   ( --- )                 COLOR
  1486.         Set the Background to Green, and Forground to WHITE.
  1487.  
  1488. >COLOR  ( --- )                 COLOR
  1489.         Select hilighting for color monitor.
  1490.  
  1491. >FG     ( N1 --- )              COLOR
  1492.         Set the Forground color to value n1.
  1493.  
  1494. >HNDLE  ( handle --- handle-a1 )HANDLES
  1495.         Step to the handel storage field of the handle array.
  1496.  
  1497. >IBM    ( -- )                  IBMCURSR
  1498.         Select the IBM display as the default display.
  1499.  
  1500. >IN     ( --- a1 )              KERNEL2
  1501.         Number of characters interpreted so far.
  1502.  
  1503. >IS     ( cfa -- data-address ) KERNEL4
  1504.        Maps a code field into a data field. If the word is in the USER
  1505.        class of words, then the data address must be calculated
  1506.        relative to the current user pointer. Otherwise it is just the
  1507.        parameter field.
  1508.  
  1509. >LCD    ( --- )                 COLOR
  1510.         Select the LCD display mode, that is only minimal display
  1511.         attributes are used, REVERSE only.
  1512.  
  1513. >LINE   ( n1 --- )              SEQREAD
  1514.         Step to line n1 in the current file.
  1515.  
  1516. >LINK   ( cfa -- lfa )          KERNEL3
  1517.         Go from code field address cfa to link field address lfa.
  1518.  
  1519. >MARK   ( -- a1 )               KERNEL3
  1520.         Set up for a Forward Branch.
  1521.  
  1522. >MONO   ( --- )                 MONOCROM
  1523.         Set the ATTRIB words to select various monochrome attributes.
  1524.  
  1525. >NAM    ( handle --- name-string-a1 ) HANDLES
  1526.         Step to the null terminated name field of the handle
  1527.  
  1528. >NAME   ( cfa -- nfa )          KERNEL3
  1529.         Go from code field address cfa to name field address nfa.
  1530.  
  1531. >NEST   ( --- a1 )              KERNEL1
  1532.         The address of the NEST routine.
  1533.  
  1534. >NEXT   ( --- a1 )              KERNEL1
  1535.         Label of the NEXT sequence.  This is the location we jump to
  1536.         when we are NOT using in-line NEXT.
  1537.  
  1538. >NONE
  1539. >NORM   ( --- )                 MONOCROM
  1540.         Set display attributes to none, or normal.
  1541.  
  1542. >PRE    ( --- )                 PASM
  1543.         Select the PREFIX assembler mode, and saves the previous prefix
  1544.         flag on the return stack for later restoral by PRE>.
  1545.  
  1546. >R      ( n1 --- )              KERNEL1
  1547.         Pops a value off of the parameter stack and pushes it onto
  1548.         return stack.  It is dangerous to use this randomly!
  1549.  
  1550. >RDWT   ( --- )                 COLOR
  1551.         Set the Background to RED, and Forground to WHITE.
  1552.  
  1553. >RESOLVE ( a1 -- )              KERNEL3
  1554.         Resolve a Forward Branch.
  1555.  
  1556. >REV    ( --- )                 UTILS
  1557.         Set the display attribute to reverse.
  1558.  
  1559. >REVBLNK ( --- )                MONOCROM
  1560.         Set the display attribute to reverse blink.
  1561.  
  1562. >TYPE   ( a1 len -- )           KERNEL3
  1563.         TYPE for multitasking systems.
  1564.  
  1565. >UL     ( --- )                 MONOCROM
  1566.         Set the display attribute to underline.
  1567.  
  1568. >VIEW   ( cfa -- vfa )          KERNEL3
  1569.         Go from code field address cfa to view field address vfa.
  1570.  
  1571. >VIEWFILE ( cfa --- offset a1 ) VIEW
  1572.         Locate the file which was used to compile word CFA, and return
  1573.         its string in PAD as A1 a counted string, and OFFSET the offset
  1574.         into the file where the word definition starts.
  1575.  
  1576. >VIEWLINE ( n1 --- )            VIEW
  1577.         Move to line n1 of currently open file.
  1578.  
  1579. ?       ( a1 --- )              UTILS
  1580.         Display the contents of the 16 bit memory location a1 as a
  1581.         signed value.
  1582.  
  1583. ?<MARK  ( -- f1 a1 )            KERNEL3
  1584.         Set up for a Backwards Branch with Error Checking.
  1585.  
  1586. ?<RESOLVE ( f1 a1 -- )          KERNEL3
  1587.         Resolve a backwards Branch with Error Checking.
  1588.  
  1589. ?>MARK  ( -- f1 a1 )            KERNEL3
  1590.         Set up a forward Branch with Error Checking.
  1591.  
  1592. ?>RESOLVE ( f1 a1 -- )          KERNEL3
  1593.         Resolve a forward Branch with Error Checking.
  1594.  
  1595. ?BRANCH ( f1 --- )              KERNEL1
  1596.         Performs a conditional branch.  If the top of the parameter
  1597.         stack in True, take the branch.  If not, skip over the branch
  1598.         address which is inline.
  1599.  
  1600. ?COMP   ( --- )                 SAVEREST
  1601.         Verify F-PC is in COMPILE state.  Issue an error message if
  1602.         Forth is not in COMPILE state.
  1603.  
  1604. ?CONDITION ( f1 -- )            KERNEL3
  1605.         Simple compile time error checking. Usually adequate.
  1606.  
  1607. ?CR     ( -- )                  KERNEL4
  1608.         Break the line at the cursor, if we have reached the right
  1609.         margin as specified by RMARGIN.
  1610.  
  1611. ?CS:    ( --- seg )             KERNEL2
  1612.         leave Forths Code Segment on the stack.
  1613.  
  1614. ?CSP    ( -- )                  KERNEL3
  1615.         Issue error message if stack has changed since the most recent
  1616.         !CSP.
  1617.  
  1618. ?DARK   ( --- )                 UTILS
  1619.         Conditionally perform a DARK if no key is waiting at the
  1620.         keyboard.
  1621.  
  1622. ?DEF.EXT ( --- )                HANDLES
  1623.         If the specified file name has no "." indicating the extension,
  1624.         then supply one from the default.
  1625.  
  1626. ?DNEGATE ( d1 d2 --- d3 )       KERNEL1
  1627.         Negate the double number if the top is negative.
  1628.  
  1629. ?DO     ( limit start -- )      KERNEL3
  1630.         Same as DO except that the loop will not be executed if start =
  1631.         limit.
  1632.  
  1633. ?DOINGMAC ( --- f1 )            UTILS
  1634.         Return a boolean flag TRUE if a macro is in the process of
  1635.         being executed, else return FALSE.
  1636.  
  1637. ?DOSIO  ( --- f1 )              UTILS
  1638.         Return a boolean flag TRUE if we are currently using DOS for
  1639.         all I/O, rather than direct screen output.
  1640.  
  1641. ?DRIVE.EXTRACT ( handle --- drive-value ) PATHSET
  1642.         Given handle, return drive-value, the drive specified in
  1643.         handle, or return the current drive if no drive was specified
  1644.         in handle.
  1645.  
  1646. ?DRIVE.PREPEND ( drive-value handle --- ) PATHSET
  1647.         Given drive-value and handle, prepend the drive-value into
  1648.         handle, as letter followed by ":".
  1649.  
  1650. ?DUP    ( n1 --- n1 n1<>0 | n1=0 ) KERNEL1
  1651.         Duplicate the top of the stack if it is non-zero.
  1652.  
  1653. ?ENOUGH ( n1 --- )              UTILS
  1654.         Test the number of items on the data stack, if there are more
  1655.         than n1 items then continue.  If there are less than n1 items,
  1656.         abort with an error.
  1657.  
  1658. ?ERROR  ( a1 n1 f1 --- )        KERNEL3
  1659.         Maybe indicate an error. If f1 is true then display the error
  1660.         message a1,n1, else discard a1,n1. Change this to alter ABORT".
  1661.  
  1662. ?ES:    ( --- )                 KERNEL2
  1663.         Return the current value of the ES register on the stack.
  1664.  
  1665. ?EXEC   ( --- )                 COMMENT
  1666.         ABORT if Forth is not currently in EXECUTION STATE with an
  1667.         error message.
  1668.  
  1669. ?EXIT   ( f1 --- )              KERNEL1
  1670.         If boolean f1 is true then perform EXIT above else continue
  1671.         executing the current definition.
  1672.  
  1673. ?FILEOPEN ( --- )               VIEW
  1674.         Verify a file is open, give an error message if no file is
  1675.         open.
  1676.  
  1677. ?FILLBUFF ( --- )               SEQREAD
  1678.         Re-fill the input buffer if it needs it.
  1679.  
  1680. ?KEYPAUSE ( --- )               UTILS
  1681.         Wait for a key to be pressed at the keyboard. If the key is an
  1682.         ESC, abort. If the key is any other key, wait for an additional
  1683.         key.  If the additional key is anything but an ESC, continue
  1684.         execution.  If the second key is an ESC, then abort.
  1685.  
  1686. ?LEAVE  ( f1 -- )               KERNEL3
  1687.         Immediately exit a DO-LOOP if the flag is true; else continue
  1688.         looping.
  1689.  
  1690. ?LINE   ( n1 -- )               KERNEL4
  1691.         Break the line at the cursor if there are less than n1
  1692.         characters till RMARGIN is encountered.
  1693.  
  1694. ?LOADED ( | <name> --- f1 )     NEEDS
  1695.         Have we already loaded the file specified by NAME? Return a
  1696.         boolean F1 true if we have.
  1697.  
  1698. ?MISSING ( f1 -- )              KERNEL3
  1699.         Tell user the word does not exist.
  1700.  
  1701. ?NEGATE ( n1 n2 --- n3 )        KERNEL1
  1702.         Negate the second element if the top is negative.
  1703.  
  1704. ?PAGE   ( --- )                 UTILS
  1705.         Output a page command if we are not already on the top of a new
  1706.         page.
  1707.  
  1708. ?PREPEND.VPATH ( a1 --- a1 )    PATHSET
  1709.         Given a handle a1, prepend to the name in the handle, the
  1710.         current VIEW directory path.
  1711.  
  1712. ?PRINTER.READY ( --- f1 )       KERNEL2
  1713.         A DEFERed word that returns a boolean flag true if the system
  1714.         printer is online and ready for printing.  This word gets
  1715.         defered to TRUE if we are printing to a disk file.
  1716.  
  1717. ?STACK  ( -- )                  KERNEL3
  1718.         Check for parameter stack underflow or overflow and issue
  1719.         appropriate error message if detected.
  1720.  
  1721. ?TOTAL.*
  1722. ?UDEFER.*
  1723. ?DEFER.*
  1724. ?CONSTANT.*
  1725. ?UVARIABLE.*
  1726. ?VARIABLE.*
  1727. ?VALUE.*
  1728. ?:.*
  1729. ?CODE.*
  1730. ?*.*    ( --- )                 WORDS
  1731.         Test words used by WORDS to recognize a group of words to
  1732.         display. These are not used by you the user, they are only
  1733.         available to show you the classes of words you can look at with
  1734.         WORDS.
  1735.  
  1736. ?UNTIL  ( f1 --- )              KERNEL1
  1737.         A special version of ?BRANCH that is used to mark a return
  1738.         point for the decompiler.
  1739.  
  1740. ?UPPERCASE ( a1 --- a1 )        KERNEL2
  1741.         Convert the counted string at a1 to uppercase if CAPS is TRUE.
  1742.  
  1743. ?VMODE  ( --- n1 )              VIDEO
  1744.         Read the current video mode from the BIOS. A value of 7 is
  1745.         normal for monochrome, and a value of 2 is a CGA board.  Also
  1746.         sets the number of columns in the COLS VALUE and the number of
  1747.         rows in the ROWS VALUE.
  1748.  
  1749. ?WHILE  ( f1 --- )              KERNEL1
  1750.         A special version of ?BRANCH that is used to mark a return
  1751.         point for the decompiler.
  1752.  
  1753. @       ( a1 --- n1 )           KERNEL1
  1754.         Fetch a 16 bit value from addr.
  1755.  
  1756. @>      ( | <name> -- n1)       EQUCOLON
  1757.         Fetch the value n1 from the body field of <name> to the stack.
  1758.         Typically used to modify a VALUE or VARIABLE. May be used on
  1759.         the command line.
  1760.  
  1761. @L      ( seg adr - n1 )        KERNEL2
  1762.         load word long from seg and adr.
  1763.  
  1764. @REL>ABS ( CFA --- a1 )         KERNEL4
  1765.         Given CFA the CODE FILED ADDRESS of an F-PC definition, return
  1766.         the address a1 of the code function used to perform the
  1767.         definition. This word is normally NOT used on CODE words, it is
  1768.         instead used on COLON definitions, VARIABLES, CONSTANTS,
  1769.         VALUES, etc. to locate the actual code function used to perform
  1770.         the selected class of words.  This word assumes the first byte
  1771.         of the cfa is a JMP or CALL instrunction and is followed
  1772.         immediately by two bytes of RELATIVE address which @REL>ABS
  1773.         converts to an absolute address.
  1774.  
  1775. A: B: C: D:     ( --- )         KERNEL4
  1776.         Select drive A:, B:, C:, or D: as the default drive.
  1777.  
  1778. A;      ( ---- )                PASM
  1779.         Complete the compiling of the current line of assembly
  1780.         instructions.  This word is normally executed automatically at
  1781.         the end of a line of assembly language. The user need only use
  1782.         this word when creating MACROS.  See PASM for an example of
  1783.         a macro for NEXT.
  1784.  
  1785. ABORT   ( -- )                  KERNEL3
  1786.         Clear the data stack and QUIT; no message is displayed.
  1787.  
  1788. ABORT"  ( f1 | <message>" -- )  KERNEL3
  1789.         If the flag is true, issue <message> and ABORT.
  1790.  
  1791. ABS     ( n1 --- n2 )           KERNEL1
  1792.         Return the absolute value of the 16 bit integer on the stack
  1793.  
  1794. ADEBUG  ( A1 --- )              DEBUG
  1795.         Set the CFA=a1 as the current word to be debugged.
  1796.  
  1797. AGAIN   ( -- )                  KERNEL3
  1798.         Unconditional jump to just after BEGIN in a BEGIN ... AGAIN
  1799.         loop.
  1800.  
  1801. ALIAS   ( a1 | <name> --- )     UTILS
  1802.         Define a new header whose CODE FIELD POINTER points to a1. This
  1803.         word has the effect of creating another name for an existing
  1804.         definition, both names will compile the same OLDER word when
  1805.         compiling.  This word has NO EFFECT on CODE space or LIST
  1806.         space.
  1807.  
  1808. ALIGN   ( -- )                  KERNEL3
  1809.         Used to force even addresses. A noop on the 8086.
  1810.  
  1811. ALLOC   ( n1 --- n2 n3 n4 )     KERNEL2
  1812.         Allocate n1 16 byte units from DOS.  Returns n2 the physical
  1813.         segment number of the start of the space allocated, but only if
  1814.         the allocate succeeds.  returns n3 the largest number of 16
  1815.         byte segments that could have been allocated, and n4=8 if the
  1816.         ALLOC FAILED.  If n4 is not 8, then discard n3 and use n2 to
  1817.         point to the allocated space.  This space must be accessed with
  1818.         the L@, L!, LFILL, CMOVEL> and CMOVEL operators.  the returned
  1819.         value n2 can later be used to DEALLOCate the space back to DOS
  1820.         when you are done using it.
  1821.  
  1822. ALLOT   ( n1 -- )               KERNEL3
  1823.         Allocate more space in the dictionary.
  1824.  
  1825. AND     ( n1 n2 --- n3 )        KERNEL1
  1826.         Returns the bitwise AND of n1 and n2 on the stack.
  1827.  
  1828. ANEW    ( | <name> -- )         KERNEL3
  1829.         Define A NEW definition <name>.  If <name> already exists, then
  1830.         we FORGET it before making the new one.  A nice utility to
  1831.         allow re-loading a file again and again for debugging purposes.
  1832.         I don't know where this first originated, but I learned of it
  1833.         from RAY ISAAC at CALOS, a real neat trick.
  1834.  
  1835. ASCII   ( | <char> -- n1 )      KERNEL3
  1836.         Compile the next character in the input stream as a literal
  1837.         ASCII integer.
  1838.  
  1839. ASSEMBLER ( --- )               KERNEL3
  1840.         The VOCABULARY that contains all of the assembler definitions.
  1841.  
  1842. AT      ( col row --- )         UTILS
  1843.         A special defered word that moves the display cursor to the COL
  1844.         and ROW specified in preperation for displaying text.  The
  1845.         system variables #OUT and #LINE are automatically adjusted by
  1846.         this word without your defered function having to keep track of
  1847.         them.
  1848.  
  1849. ATBL    ( --- a1 )              KERNEL2
  1850.         A table of character values 256 bytes in size. The UPC and
  1851.         UPPERCASE words use this table when performing case conversion.
  1852.         The values in this table can be changed if you want to do some
  1853.         special type of character translation.
  1854.  
  1855. ATTRIB  ( --- a1 )              VIDEO
  1856.         A variable that holds the value of the current display
  1857.         attributes. The value 7 is the default for normal video.
  1858.  
  1859. AUTOEDITOFF ( --- )             EDITERR
  1860.         Disable automatic entry into the editor when a compile error
  1861.         occurs.  The error message is displayed on the screen but the
  1862.         editor is not invoked.
  1863.  
  1864. AUTOEDITON ( --- )              EDITERR
  1865.         Turn on the automatic entry into the editor when a compile
  1866.         error is detected.  The edit cursor is placed in the editor at
  1867.         the error point.
  1868.  
  1869. AUTOSAVEON ( --- )              SEDITOR
  1870.         Enable the automatic save of changes to a file after ten
  1871.         minutes of keyboard in-activity.  The ten minute delay is
  1872.         configurable with the VALUE AUTOSAVE-MINUTES.  The default mode
  1873.         is AUTOSAVEON. See also AUTOSAVEOFF.
  1874.  
  1875. AUTOSAVEOFF ( --- )             SEDITOR
  1876.         Disable the automatic saving of changes after a period of
  1877.         keyboard in-activity.  You can walk away from the keyboard
  1878.         forever and the editor will NEVER automatically save your
  1879.         changes.
  1880.  
  1881. AUTOSAVE-MINUTES ( --- n1 )     SEDITOR
  1882.         A VALUE which returns the number of minutes SED will wait after
  1883.         the last keystroke before automatically saving any changes you
  1884.         may have made to the current edit file.
  1885.  
  1886. B       ( --- )                 VIEW
  1887.         Backup 16 lines in current file and display a section of the
  1888.         file.
  1889.  
  1890. B/HCB   ( --- n1 )   pronounced bytes per handle control block
  1891.                                 HANDLES
  1892.         A CONSTANT that returns the number of byte used to make a
  1893.         handle with the HANDLE word.
  1894.  
  1895. B>SEC   ( D1 - N1 )             TIMER
  1896.         Convert the BINARY time d1 to seconds. Overflows at 18 hours.
  1897.  
  1898. B>T     ( d1 --- d2 )           TIMER
  1899.         Convert the d1 BINARY time value to d2 the DOS time format.
  1900.  
  1901. BACKSPACES ( n1 --- )           KERNEL2
  1902.         Send a set of Backspaces to the terminal.
  1903.  
  1904. BACKUPOFF ( --- )               EDITSTUF
  1905.         Turn off the feature of SED to automatically create backup
  1906.         copies of your files when you start an edit.  You will be
  1907.         editing the original and ONLY copy of your file, and will NOT
  1908.         be able to go back to the previous edited version of a file you
  1909.         change.  This switch is normally used only when working on
  1910.         floppys where there is no room for a backup copy.
  1911.  
  1912. BACKUPON ( --- )                EDITSTUF
  1913.         Enable the feature of SED to automatically create backup copies
  1914.         of your files when you start an edit.  This is the normal mode,
  1915.         and allows you to go back to the previous edited version of a
  1916.         changed file if a serious error occurs.
  1917.  
  1918. BASE    ( --- a1 )              KERNEL2
  1919.         The current numeric base for number input output.
  1920.  
  1921. BCR     ( --- )                 BOXTEXT
  1922.         pronounced box carraige return.
  1923.         After creating a box on the screen with BOX&FILL, the cursor is
  1924.         placed automatically on the first empty line inside the box.
  1925.         This word places the cursor down one line and to the left edge
  1926.         inside the box once for each time it is performed. here is an
  1927.         example:
  1928.               : TESTBOX ( --- ) 20 06
  1929.                         40 10 BOX&FILL
  1930.                         ." This is displayed on the first line."  BCR
  1931.                         ." This is on the second line."           BCR
  1932.                         ." This is on the third line of the box." ;
  1933.  
  1934. BDOS    ( n1 func# --- al )     KERNEL2
  1935.         Load up the registers and do a DOS system call. return the
  1936.         result placed in the A register on the stack.
  1937.  
  1938. BEEP    ( --- )                 KERNEL2
  1939.         Ring the bell on the terminal by emiting the value 7.
  1940.  
  1941. BEGIN   ( -- )                  KERNEL3
  1942.         Used in the form    BEGIN ... AGAIN,
  1943.                         or  BEGIN ... flag UNTIL,
  1944.                         or  BEGIN ... flag WHILE ... REPEAT
  1945.  
  1946. BELL    ( --- c1 )              KERNEL2
  1947.         Return the value 7, an Ascii BELL char.
  1948.  
  1949. BETWEEN ( n1 n2 n3 --- f1 )     KERNEL1
  1950.         Return true if n2 <= n1 <= n3, otherwise false.
  1951.  
  1952. BGSTUFF ( --- )                 KERNEL2
  1953.         A DEFERed word chain, that contains operations that need to be
  1954.         performed periodically while waiting for a key from the
  1955.         keyboard. Words included in the chain must preserve and restore
  1956.         the stacks to the state they found them prior to their
  1957.         execution.  Words in the chain must also return quickly to
  1958.         prevent excessive delays in user response.
  1959.  
  1960. BIG-CURSOR ( --- )              IBMCURSR
  1961.         Set the cursor to a block cursor.
  1962.  
  1963. BIOSCHAR ( --- a1 )             KERNEL2
  1964.         A VARIABLE that holds the keycode and scancode of the most
  1965.         recent BIOSKEY?.
  1966.  
  1967. BIOSKEY ( --- n1 )              KERNEL2
  1968.         Wait for a key to be pressed on the keyboard, and return the
  1969.         key as n1 containing the ascii code in the lower byte and the
  1970.         scan clde in the upper byte.
  1971.  
  1972. BIOSKEY? ( --- f1 )             KERNEL2
  1973.         Returns a true flag if a key has been pressed and is waiting to
  1974.         be picked up. You can in effect look ahead at the key by
  1975.         looking at the variable BIOSCHAR which holds the scanned key
  1976.         that is waiting.
  1977.  
  1978. BIOSKEYVAL ( --- a1 )           KERNEL2
  1979.         A VARIABLE that holds the actual bois key value returned on the
  1980.         most recent BIOSKEY operation.  This value contains both the
  1981.         ascii value and the scancode for the key.
  1982.  
  1983. BL      ( --- c1 )              KERNEL2
  1984.         Return hex 20, decimal 32 the value of an Ascii space.
  1985.  
  1986. BLACK   ( --- n1 )              COLOR
  1987.         A CONSTANT that returns the value for color black used on a
  1988.         color monitor.
  1989.  
  1990. BLACK-ON-WHITE ( --- )          MONOCROM
  1991.         Select BLACK characters on a WHITE background rather than the
  1992.         normal WHITE on BLACK.  This is mostly useful for true white
  1993.         phosphor monitors.
  1994.  
  1995. BLANK   ( a1 n1 --- )           KERNEL2
  1996.         Fill the string with blanks
  1997.  
  1998. BLANKOFF ( --- )                SAVESCR
  1999.         Disable blanking when typing to the display in fast mode on a
  2000.         color monitor. The CGA board needs blanking to reduce the snow
  2001.         effect, but EGA/VGA do not.
  2002.  
  2003. BLANKON ( --- )                 SAVESCR
  2004.         Enable blanking when typing to the display in fast mode on a
  2005.         color monitor. The CGA board needs this to reduce the snow
  2006.         effect, but EGA/VGA do not.
  2007.  
  2008. BLUE    ( --- n1 )              COLOR
  2009.         Return the color value for BLUE.
  2010.  
  2011. BODY>   ( pfa -- cfa )          KERNEL3
  2012.         Go from body address pfa to code field address cfa.
  2013.  
  2014. BOOT    ( --- )                 KERNEL4
  2015.         The very first high level word executed during cold start.
  2016.  
  2017. BOUNDS  ( a1 n1 --- a2 a3 )     KERNEL1
  2018.         Given address a1 and length n1, return a2 and a3 the boundry
  2019.         addresses for DO ... LOOP.
  2020.  
  2021. BOX     ( x y x' y' --- )       BOXTEXT
  2022.         Draws a box like BOX&FILL, but does not fill the box with
  2023.         blanks. See also BOX&FILL.
  2024.  
  2025. BOX&FILL ( x y x' y' --- )      BOXTEXT
  2026.         Draw a box on the screen from x,y the top left, to x',y' the
  2027.         lower right and clear the inside to blanks.  the cursor is then
  2028.         placed in the upper left corner of the box in preperation for a
  2029.         ." . Use BCR to perform a BOX CR down and to the left edge of
  2030.         the box for the next line.
  2031.  
  2032. BRANCH  ( --- )                 KERNEL1
  2033.         Performs an unconditional branch.  Notice that we are using
  2034.         absolute addresses insead of relative ones. (fast)
  2035.  
  2036. BROWN   ( --- n1 )              COLOR
  2037.         Return the color value for BROWN.
  2038.  
  2039. BS      ( --- c1 )              KERNEL2
  2040.         Return the value 8, an Ascii Back Space.
  2041.  
  2042. BUG     ( --- )                 VOCABS
  2043.         vocabulary stack -> ( voc1 voc2 -- bug voc2 | current = ? )
  2044.         The BUG vocabulary, sets CONTEXT to BUG when executed.
  2045.  
  2046. BYE     ( -- )                  KERNEL4
  2047.         Returns control to DOS. Performs the defered word BYEFUNC
  2048.         before actually leaving.
  2049.  
  2050. BYEFUNC ( --- )                 KERNEL4
  2051.         A defered word which normally contains NOOP, provided wo you
  2052.         can specify a function to be performed before leaving back to
  2053.         DOS.
  2054.  
  2055. C!      ( b1 a1 --- )           KERNEL1
  2056.         Store 8 bit value b1 at address a1.
  2057.  
  2058. C!L     ( b1 seg a1 --- )       KERNEL2
  2059.         Store the 8 bit value b1 into the long address specified by seg
  2060.         and a1.
  2061.  
  2062. C+!     ( b1 a1 --- )           KERNEL1
  2063.         Increment the byte value at a1 by n1. This is equivalent the
  2064.         following: "DUP C@ ROT + SWAP C!" but much faster.
  2065.  
  2066. C,      ( char -- )             KERNEL3
  2067.         Compile the 8 bit value char into the CODE area. The next
  2068.         available byte location is used as specified by DP, and DP is
  2069.         then incremented. Same as , except uses an 8-bit value.
  2070.  
  2071. C@      ( a1 --- b1 )           KERNEL1
  2072.         Fetch the 8 bit value b1 from addrress a1.
  2073.  
  2074. C@L     ( seg a1 - b1 )         KERNEL2
  2075.         Push the 8 bit value b1 located at the long address specified
  2076.         by seg and a1.
  2077.  
  2078. CALLS   ( | <name> --- )        REF
  2079.         An ALIAS for REF.
  2080.  
  2081. CAPS    ( --- a1 )              KERNEL2
  2082.         If true, then convert names to upper case
  2083.  
  2084. CAPS-COMP ( a1 a2 n1 --- f1 )   KERNEL2
  2085.         The code on this screen handles the case where case is not
  2086.         significant.  Each character is converted to upper case before
  2087.         the comparison is made.  Thus, lower case a and upper case A
  2088.         are considered identical.
  2089.  
  2090. CASE    ( -- )                  CASE
  2091.         Start a CASE statment, as follows:
  2092.  
  2093. CD      ( | <filespec> --- )    EXEC
  2094.         A pseudonym for CHDIR. See also CHDIR.
  2095.  
  2096. CHARREAD ( --- c1 )             SEQREAD
  2097.         Read a character c1 from the current file.
  2098.  
  2099. CHDIR   ( | <filespec> --- )    EXEC
  2100.         Change the directory to the directory specified by filespec.
  2101.  
  2102. CLOSE   ( --- )                 SEQREAD
  2103.         A pseudonym for SEQDOWN. See also SEQDOWN.
  2104.  
  2105. CLR-HCB ( a1 --- )              HANDLES
  2106.         Clear the handle a1 to empty, it is erased and marked as a
  2107.         closed file.
  2108.  
  2109. CLS     ( --- )                 UTILS
  2110.         An ALIAS for DARK.
  2111.  
  2112. CMOVE   ( a1 a2 n1 --- )        KERNEL1
  2113.         Move a set of bytes from the from address to the to address.
  2114.         The number of bytes to be moved is count.  The bytes are moved
  2115.         from low address to high address, so overlap is possible and in
  2116.         fact sometimes desired.
  2117.  
  2118. CMOVE>  ( a1 a2 n1 --- )        KERNEL1
  2119.         The same as CMOVE above except that bytes are moved in the
  2120.         opposite direction, ie from high addresses to low addresses.
  2121.  
  2122. CMOVEL  ( sseg sptr dseg dptr cnt -- ) KERNEL2
  2123.         Move the character block long from source seg sseg and sptr, to
  2124.         destination seg dseg and dptr for length count.
  2125.  
  2126. CMOVEL> ( from-seg from-offset to-seg to-offset length --- ) KERNEL2
  2127.         Move length of data from from-seg and from-offset to to-seg and
  2128.         to-offset.  If the move crosses a 64k segment boundry the
  2129.         results are UN-PREDICTABLE.
  2130.  
  2131. CNHASH  ( cfa -- ya )           KERNEL3
  2132.         Given CFA, get pointer into >NAME hash table in YSEG.
  2133.  
  2134. CNSRCH  ( cfa ya maxya -- nfa failf ) KERNEL3
  2135.         Search for CFA between YA and MAXYA in YSEG. Return NFA and
  2136.         failure flag.
  2137.  
  2138. CNT     ( --- a1 )              DEBUG
  2139.         How many times thru debug next
  2140.  
  2141. CODE    ( | <name> --- )        PASM
  2142.         Define <name> as a new code definition. Assembly language
  2143.         follows, terminated by END-CODE.
  2144.  
  2145. COLD    ( -- )                  KERNEL4
  2146.        The high level cold start code. For ordinary forth, BOOT should
  2147.        initialize and pass control to QUIT.
  2148.  
  2149. COLS    ( --- n1 )              VIDEO
  2150.         A VALUE initialized at boot time that returns the number of
  2151.         screen columns on the current display, typically in the range
  2152.         40 to 132. Normally 80, but you should use this value along
  2153.         with ROWS to make your applications forgiving of other display
  2154.         modes.
  2155.  
  2156. COMMENT: ( --- )                COMMENT
  2157.         Start a multi-line comment. Patches <comment:> into RUN, it
  2158.         then reads and throws away lines until "comment;" is
  2159.         encountered.
  2160.  
  2161. COMP    ( a1 a2 n1 --- f1 )     KERNEL2
  2162.         This performs a string compare.  If the two strings are equal,
  2163.         then COMPARE returns 0.  If the two strings differ, then
  2164.         COMPARE returns -1 or +1.  -1 is returned if string 1 is less
  2165.         than string 2.  +1 is returned if string 1 is greater than
  2166.         string 2. All comparisons are relative to ASCII order.
  2167.  
  2168. COMPARE ( a1 a2 n1 --- f1 )     KERNEL2
  2169.         Performs a string compare. If CAPS is true, characters from
  2170.         both strings are converted to upper case before comparing.
  2171.  
  2172. COMPILE ( | <name> -- )         KERNEL3
  2173.         Compile the (typically not-immediate) following word <name>
  2174.         when this definition executes. Name is later compiled into the
  2175.         LIST dictionary space.
  2176.  
  2177. COMSPEC$ ( --- a1 )             ENVIRON
  2178.         The handle used to hold the COMSPEC string. I.e. COMMAND.COM
  2179.  
  2180. COMSPEC@ ( --- )                ENVIRON
  2181.         Read the environment string, and extrac the COMSPEC parameter.
  2182.         the COMSPEC is inserted in the COMSPEC$ handle.
  2183.  
  2184. CONHNDL ( --- a1 )              SEQREAD
  2185.         The handle used to send characters to the console when DOS I/O
  2186.         is being used.
  2187.  
  2188. CONSOLE ( c1 --- )              KERNEL2
  2189.         Send character c1 to the console display.
  2190.  
  2191. CONSTANT ( n1 | <name> -- )     KERNEL3
  2192.         A defining word that creates constants. At runtime the value of
  2193.         the constant is placed on the stack.
  2194.  
  2195. CONTEXT ( --- a1 )              KERNEL2
  2196.         The array specifying the search order.
  2197.  
  2198. CONTROL ( <char> -- n1 )        KERNEL3
  2199.         Compile the next character in the input stream as a literal
  2200.         ASCII Control Character.
  2201.  
  2202. CONVERT ( +d1 a1 --- +d2 a2 )   KERNEL2
  2203.         Starting with the unsigned double number ud1 and the string at
  2204.         adr1, convert the string to a number in the current base. Leave
  2205.         result and address of unconvertable digit on stack.
  2206.  
  2207. COPY    ( <filespec> --- )      EXEC
  2208.         Perform a DOS COPY with the filespec following the COPY
  2209.         command.
  2210.  
  2211. COUNT   ( a1 --- a2 n1 )        KERNEL2
  2212.         Given the address on the stack, returns the address plus one
  2213.         and the byte at that address.  Useful for strings.
  2214.  
  2215. CR      ( --- )                 KERNEL2
  2216.         Typically set to CRLF, above. PR-STAT Return printer status, if
  2217.         implemented, else TRUE (PRINT) The value of the DEFERRED word
  2218.         EMIT when you want to send a character to the printer.
  2219.  
  2220. CRASH   ( -- )                  KERNEL3
  2221.         Default routine called by execution vectors.
  2222.  
  2223. CREATE  ( | <name> -- )         KERNEL3
  2224.         Make a header for the next word in the input stream.
  2225.  
  2226. CRESET  ( n1 a1 --- )           KERNEL1
  2227.         Set the contents of a1 so the the bits that are 1 in n1 are
  2228.         zero in addr.  Equivalent to DUP C@ ROT NOT AND SWAP C!
  2229.  
  2230. CRLF    ( --- )                 KERNEL2
  2231.         Sends a carriage return line feed sequence.
  2232.  
  2233. CROWS   ( --- n1 )              VIDEO
  2234.         A VALUE initialized at boot time that returns the number of
  2235.         cursor rows for a character. Used by the system when setting
  2236.         the NORMAL or BIG cursor.
  2237.  
  2238. CRTAB   ( --- )                 DECOM
  2239.         Do a carraige return and a TAB of the current TABSIZE.
  2240.  
  2241. CSET    ( n1 a1 --- )           KERNEL1
  2242.         Set the contents of a1 so that the bits that are 1 in n1 are
  2243.         also 1 in addr.  Equivalent to DUP C@ ROT OR SWAP C!
  2244.  
  2245. CSP     ( --- a1 )              KERNEL2
  2246.         Used for compile time error checking.
  2247.  
  2248. CTOGGLE ( a1 n1 --- )           KERNEL1
  2249.         Flip the bits in a1 by the value n.  Equivalent to DUP C@ ROT
  2250.         XOR SWAP C!
  2251.  
  2252. CURPOINTER ( handle --- double-current ) SEQREAD
  2253.         Return the double-current offset into file handle.
  2254.  
  2255. CURRENT ( --- a1 )              KERNEL2
  2256.         New words are added to the CURRENT vocabulary.
  2257.  
  2258. CURSOR-ON ( --- )               IBMCURSR
  2259.         Turn the cursor back on.
  2260.  
  2261. CURSOR-OFF ( --- )              IBMCURSR
  2262.         Turn off the cursor.
  2263.  
  2264. CYAN    ( --- n1 )              COLOR
  2265.         Return the color value of CYAN.
  2266.  
  2267. D+      ( d1 d2 --- d3 )        KERNEL1
  2268.         Add the two double precision numbers on the stack and return
  2269.         the result as a double precision number.
  2270.  
  2271. D-      ( d1 d2 --- d3 )        KERNEL1
  2272.         Subtract the two double precision numbers.
  2273.  
  2274. D.      ( d1 --- )              KERNEL2
  2275.         Output as a signed double number with a trailing space.
  2276.  
  2277. D.M.Y   ( --- )                 TIMER
  2278.         Select the date format Day.Month.Year for all calendar
  2279.         operations.
  2280.  
  2281. D.R     ( d1 n1 --- )           KERNEL2
  2282.         Output as a signed double number right justified.
  2283.  
  2284. D0=     ( d1 --- f1 )           KERNEL1
  2285.         Compare the top double number to zero.  True if d = 0
  2286.  
  2287. D2*     ( d1 --- d2 )           KERNEL1
  2288.         32 bit left shift.
  2289.  
  2290. D2/     ( d1 --- d2 )           KERNEL1
  2291.         32 bit arithmetic right shift. Equivalent to divide by 2.
  2292.  
  2293. D:      ( --- )                 KERNEL4
  2294.         Select drive A:, B:, C:, or D: as the default drive.
  2295.  
  2296. D<      ( d1 d2 --- f1 )        KERNEL1
  2297.         Compare the top two double numbers.  True if d1 < d2
  2298.  
  2299. D=      ( d1 d2 --- f1 )        KERNEL1
  2300.         Compare the top two double numbers.  True if d1 = d2
  2301.  
  2302. D>      ( d1 d2 --- f1 )        KERNEL1
  2303.         Compare the top two double numbers.  True if d1 > d2
  2304.  
  2305. DABS    ( d1 --- d2 )           KERNEL1
  2306.         Return the absolute value of the 32 bit integer on the stack
  2307.  
  2308. DARK    ( --- )                 UTILS
  2309.         Clear the screen to black or white depending on the display
  2310.         mode. See also BLACK-ON-WHITE, and WHITE-ON-BLACK.
  2311.  
  2312. DBG     ( | <name> --- )        DEBUG
  2313.         Start debugging the word following DBG immediately. See also
  2314.         DEBUG.
  2315.  
  2316. DEALLOC ( n1 --- f1 )           KERNEL2
  2317.         De-allocate the DOS memory area specified by absolute segment
  2318.         n1. Returns f1 false if all went well, else f1 is an error
  2319.         code.  N1 must be the value passed to Forth when the memory
  2320.         array was originally allocated.
  2321.  
  2322. DEBUG   ( | <name> --- )        DEBUG
  2323.         Look up the word following DEBUG, and make it the next word to
  2324.         be debugged.
  2325.  
  2326. DEBUGABLE ( --- )               DBGFIX
  2327.         Convert the kernel from inline NEXT to a central NEXT right now
  2328.         at runtime.  This is done in preperation for running the
  2329.         debugger, and is made possible by using a simple form of
  2330.         pattern recognition.
  2331.  
  2332. DECIMAL ( --- )                 KERNEL2
  2333.         All subsequent numeric IO will be in Decimal.
  2334.  
  2335. DECR    ( a1 -- )               KERNEL1
  2336.         Decrement the word at the specified address by 1.
  2337.  
  2338. DECR>   ( | <name> -- )         EQUCOLON
  2339.         Decrement the body of <name> by one, used to modify the
  2340.         following VALUE or VARIABLE.
  2341.  
  2342. DEFAULT ( --- )                 KERNEL2
  2343.         Opens the default file per the execute line. This does nothing
  2344.         if no file was given.
  2345.  
  2346. DEFAULTSTATE ( --- )            UTILS
  2347.         Set the system state to the default values. The effected
  2348.         variables are BASE, CAPS, TABSIZE, LMARGIN, and RMARGIN.
  2349.  
  2350. DEFER   ( | <name> -- )         KERNEL3
  2351.         Define a vectored execution word. These are initially set to
  2352.         display an error message. They are initialized with IS.
  2353.  
  2354. DEFERS  ( <name> --- )          DEFERS
  2355.         installs the contents of a defered word in the current
  2356.         definition being defined. This is used to build a chain of
  2357.         words to be performed.
  2358.  
  2359. DEFEXT  ( --- a1 )              HANDLES
  2360.         An array holding the default extention "SEQ".
  2361.  
  2362. DEFINED ( -- here 0 | a1 false )KERNEL3
  2363.         Look up the next word in the input stream. Return true if it
  2364.         exists, otherwise false. Maybe ignore case.
  2365.  
  2366. DEFINITIONS ( -- )              KERNEL3
  2367.         Subsequent definitions will be placed into CURRENT.
  2368.  
  2369. DEL     ( <filespec> --- )      EXEC
  2370.         Delete the files specified by filespec.
  2371.  
  2372. DEPTH   ( -- n1 )               KERNEL4
  2373.         Returns the number of items on the parameter stack.
  2374.  
  2375. DIGIT   ( ??? )                 KERNEL2
  2376.         Returns a flag indicating whether or not the character is a
  2377.         valid digit in the given base.  If so, returns converted value
  2378.         and true,  otherwise returns char and false.
  2379.  
  2380. DIR     ( <filespec> --- )      EXEC
  2381.         Pass the filespec following DIR to DOS and print a directory of
  2382.         the matching filespecs.
  2383.  
  2384. DIV0FUNC ( -- )                 KERNEL4
  2385.         FF traps divide by 0 errors, and calls this defered word when
  2386.         such an error is detected.  You can change the contents of this
  2387.         defered words to handle divide by 0 errors in your own program.
  2388.  
  2389. DIV0STRT ( -- )                 KERNEL4
  2390.         The default function to perform when a DIVIDE by 0 trap occurs.
  2391.         This routine aborts. A divide by 0 trap calls DIV0FUNC, which
  2392.         defers to this routine.
  2393.  
  2394. DIVIDE0 ( status_reg CS IP AX BX CX DX SI BP -- ) KERNEL4
  2395.         The actual entry point from the divide by 0 trap, this word
  2396.         just calls the deferd word DIV0FUNC.  Normally the registers on
  2397.         the stack are just discarded, but you can install your own
  2398.         routine into DIV0FUNC to handle the divide by 0 error.
  2399.  
  2400. DKGRAY  ( --- n1 )              COLOR
  2401.         Returns the color for DARK GRAY. Blinks in Background.
  2402.  
  2403. DLITERAL ( d# -- )              KERNEL3
  2404.         Compile the double integer from the stack as a literal.
  2405.  
  2406. DLN     ( a1 --- )              DUMP
  2407.         Dump a line, consisting of 16 bytes of hex data followed by 16
  2408.         bytes of ascii data.
  2409.  
  2410. DMAX    ( d1 d2 --- d3 )        KERNEL1
  2411.         Return the greater of the the top two double numbers.
  2412.  
  2413. DMIN    ( d1 d2 --- d3 )        KERNEL1
  2414.         Return the lesser of the top two double numbers.
  2415.  
  2416. DNEGATE ( d1 d2 --- d3 )        KERNEL1
  2417.         Same as NEGATE except for double precision numbers.
  2418.  
  2419. DO      ( limit start -- )      KERNEL3
  2420.         Initialize a loop structure with index running from start to
  2421.         limit-1. Used in the form   DO ... LOOP   or  DO ... +LOOP
  2422.  
  2423. DOES>   ( -- )                  KERNEL3
  2424.         Specifies the run time of a defining word in high  level Forth.
  2425.  
  2426. DONE    ( --- )                 EDITSTUF
  2427.         A word that re-enables full screen scrolling if you have left
  2428.         the editor with a smaller edit window thereby invoking a
  2429.         sub-screen scroll.  If you don't understand this, try making
  2430.         the edit window several lines smaller with Alt-S-W, then leave
  2431.         the editor and notice that only the area below the editor
  2432.         window scrolls.
  2433.  
  2434. DONE?   ( n1 -- f1 )            KERNEL3
  2435.         True if the input stream is exhaused or state doesn't match.
  2436.  
  2437. DOS-LINE ( --- a1 )             DEFAULT
  2438.         The address of where the DOS command line resides.
  2439.  
  2440. DOS>TIB ( --- )                 DEFAULT
  2441.         Move the DOS command line to the Terminal Input Buffer.
  2442.  
  2443. DOSVER  ( --- n1 )              KERNEL2
  2444.         Get DOS version number from DOS, and return it as N1.
  2445.  
  2446. DOUBLE? ( --- f1 )              KERNEL2
  2447.         Returns non-zero if period was encountered.
  2448.  
  2449. DP      ( --- a1 )              KERNEL2
  2450.         Size of dictionary.  Next available location.
  2451.  
  2452. DPL     ( --- a1 )              KERNEL2
  2453.         The decimal point location for number input.
  2454.  
  2455. DRIVE?  ( --- n1 )              UTILS
  2456.         Displays the current disk drive in the form A:, B:, C: etc.
  2457.  
  2458. DROP    ( n1 --- )              KERNEL1
  2459.         Throw away the top element of the stack.
  2460.  
  2461. DTBUF   ( --- a1 )              TIMER
  2462.         A buffer used by .DATE and .TIME to build their messages in,
  2463.         prior to displaying them.
  2464.  
  2465. DU      ( a1 -- addr+64 )       DUMP
  2466.         Dump another 4 lines (64 bytes).
  2467.  
  2468. DU<     ( d1 d2 --- f1 )        KERNEL1
  2469.         Performs unsigned comparison of two double numbers.
  2470.  
  2471. DUMP    ( A1 N1 --- )           DUMP
  2472.         Dump an area of the Code segment.
  2473.  
  2474. DUMP    ( a1 len -- )           KERNEL4
  2475.         A primitive little dump routine to help you debug after you have
  2476.         changed the system source and nothing works any more.
  2477.  
  2478. DUP     ( n1 --- n1 n1 )        KERNEL1
  2479.         Duplicate the top element of the stack.
  2480.  
  2481. DUP>R   ( n1 --- n1 )           KERNEL1
  2482.         Duplicates the value on the parameter stack and pushes it onto
  2483.         return stack.  It is dangerous to use this randomly!
  2484.  
  2485. ED      ( --- )                 TOPEDIT
  2486.         Enter the editor on the most recent edit line. See also EDITOR
  2487.  
  2488. EDIT    ( n1 --- )              TOPEDIT
  2489.         Enter the editor on the current file at line n1. See also
  2490.         EDITOR
  2491.  
  2492. EDITOR  ( --- )                 EDITSTUF
  2493.         The vocabulary that contains all of the editor words. Normally
  2494.         you use "line# EDIT", "SED filename" or just "ED" to start the
  2495.         editor.
  2496.  
  2497. EEOL    ( --- )                 UTILS
  2498.         Erase the current line to the end of the line.
  2499.  
  2500. ELSE    ( --- )                 KERNEL3
  2501.         Used in the form: ? IF <true> ELSE <false> THEN. If flag ? is
  2502.         false, branches forward to <false>.
  2503.  
  2504. EMIT    ( c1 -- )               KERNEL2
  2505.         A defered word which sends a character to the output device.
  2506.  
  2507. EMIT.   ( char -- )             DUMP
  2508.         Emit an ascii character char. If the char is not printable then
  2509.         print a ".".
  2510.  
  2511. EMPTY   ( --- )                 EDITERR
  2512.         A word defined with MARK, that cleans out the dictionary back
  2513.         to when EMPTY was defined. All segments are reset.  USE CAUTION
  2514.         when changing DEFERed words, as EMPTY does not know about them,
  2515.         and will cause a crash if you empty back to before a needed
  2516.         word used in a DEFERed word.
  2517.  
  2518. END?    ( --- a1 )              KERNEL2
  2519.         True if input stream exhausted, else false.
  2520.  
  2521. ENDCASE ( -- )                  CASE
  2522.         See CASE.
  2523.  
  2524. ENDFILE ( handle --- double-end ) HANDLES
  2525.         Return the double-end pointer for the file open in handle, also
  2526.         sets the pointer to the end of the file. Useful for finding the
  2527.         end of a file, and for appending to the end of a file.
  2528.  
  2529. ENDMENU ( a1 n1 --- )           MENUS
  2530.         Resolves the building of a new menu. See NEWMENU.
  2531.  
  2532. ENDOF   ( -- )                  CASE
  2533.         See CASE.
  2534.  
  2535. ENTRY   ( --- a1 )              KERNEL2
  2536.         Jumped to during multitasking.
  2537.  
  2538. ENVSIZE ( --- n1 )              ENVIRON
  2539.         Calculate n1 the size of the environment in bytes, clipped to
  2540.         about 31k bytes.
  2541.  
  2542. ERASE   ( a1 n1 --- )           KERNEL2
  2543.         Fill the string with zeros
  2544.  
  2545. ES0     ( --- a1 )              KERNEL2
  2546.         ES register initial segment.
  2547.  
  2548. EVEN    ( -- )                  KERNEL3
  2549.         Makes the top of the stack an EVEN number. A noop on the 8086.
  2550.  
  2551. EVSEG   ( --- n1 )              ENVIRON
  2552.         Return n1 the value of the environment segment.
  2553.  
  2554. EXEC:   ( n1 -- )               KERNEL1
  2555.         Execute the n-th word following the word EXEC: in a high level
  2556.         definition.
  2557.  
  2558. EXECUTE ( a1 --- )              KERNEL1
  2559.         Execute the word whose code field is on the stack.  Very useful
  2560.         for passing executable routines to procedures!!!
  2561.  
  2562. EXEHCB  ( --- a1 )              SAVEEXE
  2563.         A handle for use while saving an .EXE file.
  2564.  
  2565. EXHREAD ( a1 n1 handle seg1 --- n2 ) HANDLES
  2566.         Read from the file specified by handle to the extended segment
  2567.         area specified by seg1, a1 for length n1. Returns n2 the length
  2568.         actually read.
  2569.  
  2570. EXHWRITE ( a1 n1 handle seg1 ---) HANDLES
  2571.         Write from memory a1,n1 in segment seg1 to the file specified
  2572.         by handle.
  2573.  
  2574. EXIT    ( --- )                 KERNEL1
  2575.         Pop an entry off the return stack and place it into the
  2576.         Interpretive Pointer.  Terminates a Hi Level definition.
  2577.  
  2578. EXPECT  ( a1 n1 --- )           KERNEL2
  2579.         A DEFERed word.  Get a string from the terminal and place it in
  2580.         the buffer provided.  Performs a certain amount of line
  2581.         editing. Saves the number of characters input in the Variable
  2582.         SPAN. Processes control characters per the array pointed to by
  2583.         CC.
  2584.  
  2585. EXTYPE  ( seg a1 n1 --- )       KERNEL2
  2586.         A defered word used to print a string to the current output
  2587.         device from external memory specified in segment SEG.
  2588.  
  2589. FALLOF  ( func | file_specs --- ) FWORDS
  2590.         A generalized function. By setting the defered word DONFILE, a
  2591.         function can be performed on all files matching the filespec
  2592.         the user has given. See FLOOK, INDEX, and FPRINT for examples
  2593.         of how to use this word.
  2594.  
  2595. FALSE   ( --- f1 )              KERNEL1
  2596.         This word was brought to you by CONSTANTS FOR CLARITY.
  2597.  
  2598. FAST    ( --- )                 QVIDEO
  2599.         Select the fast screen output routines.
  2600.  
  2601. FCB>HANDLE ( a1 a2 --- )        HANDLES
  2602.         Copy the file <name> and extention from the specified FCB a1 to
  2603.         handle a2.
  2604.  
  2605. FEMIT   ( c1 --- )              KERNEL2
  2606.         A FAST EMIT, uses TYPE to display the character c1.  FEMIT
  2607.         weill not respond to control characters such as CR, LF or FF,
  2608.         They will be displayed as their graphic character equivelant.
  2609.  
  2610. FENCE   ( --- a1 )              KERNEL3
  2611.         The limit address for forgetting.  Words defined below FENCE
  2612.         may not be forgotten.
  2613.  
  2614. FILE    ( | <name> --- )        SEQREAD
  2615.         Select ,name> as the current file for listing, loading or
  2616.         editing. Any file already open is closed first.
  2617.  
  2618. FILE>TIB ( a1 --- )             SEQREAD
  2619.         Move the counted dtring a1 into the terminal input buffer. The
  2620.         string is checked for an extension, if none is found, an
  2621.         decimal point is added to the string.
  2622.  
  2623. FILEPOINTER ( --- a1 )          SEQREAD
  2624.         32 bit variable holding the file pointer of the most recent
  2625.         1read.
  2626.  
  2627. FILEPRINT ( | <name> --- )      PRINT
  2628.         All printing is to goto diskfile <name>.  No extention is added
  2629.         to <name>.
  2630.  
  2631. FILES   ( --- )                 KERNEL1
  2632.         The vocabulary that contains the names of all files loaded into
  2633.         F-PC.
  2634.  
  2635. FILL    ( a1 n1 c1 --- )        KERNEL2
  2636.         FILL the string starting at a1 for count n1 bytes with the
  2637.         character c1. Both BLANK and ERASE are special cases of FILL.
  2638.  
  2639. FILLBUFF ( --- )                SEQREAD
  2640.         Does an unconditional refill of the disk read buffer. The
  2641.         current buffer contents is not over written, but new data is
  2642.         read into the end of the buffer to fill it up if there is more
  2643.         data to read.
  2644.  
  2645. FILLTIB ( --- )                 SEQREAD
  2646.         Does an unconditional refill of the terminal input buffer by
  2647.         reading the next line, and setting up TIB to point to that
  2648.         line.
  2649.  
  2650. FIND    ( a1 -- cfa flag | a1 false ) KERNEL3
  2651.         Run through the vocabulary list searching for the name whose
  2652.         address is supplied on the stack. If the name is found, return
  2653.         the code field address of the name and a non-zero flag. The
  2654.         flag is -1 if the word is non-immediate and 1 if it is
  2655.         immediate. If the name is not found, the string address is
  2656.         returned along with a false flag.
  2657.  
  2658. FINDFIRST ( string --- f1 )     HANDLES
  2659.         Begin a search for files specified by filespec string. String
  2660.         is a null terminated un-counted string. F1 returned indicates
  2661.         whether any files matched. The found file is placed in the Data
  2662.         Transfer Area (DTA). USE CAUTION, not to change either the DTA
  2663.         or the buffer filled in by FINDFIRST.
  2664.  
  2665. FINDNEXT ( --- f1 )             HANDLES
  2666.         Continue the file search for a specified string. Returns the
  2667.         boolean f1 true if another match was found. USE CAUTION, not to
  2668.         change either the DTA or the buffer filled in by FINDFIRST, as
  2669.         this function relys on that information.
  2670.  
  2671. FIRST   ( --- a1 )              KERNEL2
  2672.         A system constant that retuns a useless value in F-PC.  It is
  2673.         useless because it is only 10 bytes lower than LIMIT.
  2674.  
  2675. FL      ( | <name> --- )        SEQREAD
  2676.         An ALIAS for FILE.
  2677.  
  2678. FLHNDL  ( --- a1 )              PATHSET
  2679.         A VALUE that returns the address of the handle we are working
  2680.         with.
  2681.  
  2682. FLIP    ( n1 --- n2 )           KERNEL1
  2683.         Exhange the hi and low halves of a word.
  2684.  
  2685. FLOAD   ( | <name> --- )        SEQREAD
  2686.         load the file <name>. this is nestable.
  2687.  
  2688. FLOOK   ( search_string file_specs --- ) FWORDS
  2689.         Search all files in file_spec for search_string. Print each
  2690.         occurance found to the display with a line number.
  2691.  
  2692. FORGET  ( | <name> -- )         KERNEL3
  2693.         Forget all of the code and headers before <name>. FORGET must
  2694.         be used with caution, if you are using DEFERS or UDEFERS,
  2695.         FORGET will not know about these chains, so they must be
  2696.         unlinked before using FORGET or disaster WILL strike.
  2697.  
  2698. FORM-DATE ( d1 --- a1 )         TIMER
  2699.         Build the ascii string of the current DOS DATE d1 in the DTBUF
  2700.         (Date/Time buffer) and return its address.
  2701.  
  2702. FORM-FEED ( --- )               UTILS
  2703.         Print a form feed character.
  2704.  
  2705. FORM-TIME ( d1 --- a1 )         TIMER
  2706.         Build the ascii string of the current DOS TIME d1 in the DTBUF
  2707.         (Date/Time buffer) and return its address.
  2708.  
  2709. FORTH   ( --- )                 KERNEL1
  2710.         The FORTH vocabulary, where most user words can be found.  All
  2711.         of the words in this glossary are in the FORTH vocabulary.
  2712.  
  2713. FPRINT  ( file_specs --- )      FWORDS
  2714.         Print listing files of all files that match the file_specs
  2715.         included on the line following FPRINT.
  2716.  
  2717. FSAVE   ( | <name> --- )        SAVEEXE
  2718.         A pseudonym for SAVE-EXE
  2719.  
  2720. FUDGE   ( --- a1 )              BUFSET
  2721.         A VARIABLE used to determine the speed of MS. Calibrated at
  2722.         boot time to the speed of your computer.
  2723.  
  2724. GET-CURSOR ( --- SHAPE )        IBMCURSR
  2725.         Get the cursor shape mask SHAPE.
  2726.  
  2727. GETDATE ( --- Y MD )            TIMER
  2728.         Get the DOS format double date.
  2729.  
  2730. GETTIME ( --- HM Sh )           TIMER
  2731.         Get the DOS format double time.
  2732.  
  2733. GET_ALINE ( --- )               SEQREAD
  2734.         get a line of text from the current file, and place it in the
  2735.         output buffer.
  2736.  
  2737. GFL     ( | <name> --- )        SEQREAD
  2738.         Looks at the input stream, if a name is waiting, then continue,
  2739.         but if no name is waiting, the pop up a window display and
  2740.         allow the user to pick from a file in the window.
  2741.  
  2742. GO      ( a1 --- )              KERNEL1
  2743.         Execute code at the given address.
  2744.  
  2745. GREEN   ( --- n1 )              COLOR
  2746.         Return the color value for GREEN.
  2747.  
  2748. H.      ( u -- )                KERNEL4
  2749.        Display the unsigned number in hex, with trailing blank. Does
  2750.        not change the number base.
  2751.  
  2752. HANDLE  ( | <name> --- )        HANDLES
  2753.         Creates an array/handle for name, which holds the files
  2754.         attributes, handle number, and null terminated name.
  2755.  
  2756. HANDLE>EXT ( a1 --- a2 )        HANDLES
  2757.         Moves the address from the handle to the decimal point in the
  2758.         filename, if it exists.  Otherwise it steps to the null
  2759.         immediately following the filename.
  2760.  
  2761. HASH    ( str-addr voc-ptr -- thread ) KERNEL3
  2762.         Using the str-addr and the vocabulary address to determine the
  2763.         address thread in the vocabulary that the name should go into.
  2764.  
  2765.  
  2766. HCLOSE  ( handle --- f1 )       HANDLES
  2767.         Close the file specified by handle, return boolean f1 non-zero
  2768.         if an error occured.
  2769.  
  2770. HCREATE ( handle --- error-code ) HANDLES
  2771.         Create the file specified in handle, if the file already
  2772.         exists, then it is ZEROed !! Returns zero if no error occured.
  2773.  
  2774. HDEFAULT ( -- )                 DEFAULT
  2775.         Open a file specified on the comand line at startup.
  2776.  
  2777. HDELETE ( handle --- f1 )       HANDLES
  2778.         Delete the file specified by handle, return boolean f1 non-zero
  2779.         if an error occured.
  2780.  
  2781. HDOS1   ( cx dx fun -- ax cf | error-code 1 ) HANDLES
  2782.         Define a dos call assembly word, which is later used by HOPEN
  2783.         and HCREATE.
  2784.  
  2785. HEADER  ( | <name> -- )         KERNEL3
  2786.         Creates a NAME header in HEAD space, but compiles absolutely
  2787.         nothing in CODE space.  The head created, does point at HERE
  2788.         though.
  2789.  
  2790. HELLO   ( --- )                 HELLO
  2791.         Cold start initialization for F-PC.
  2792.  
  2793. HELP    ( | <name> --- )        VIEW
  2794.         VIEW is followed on the same line by name. Display a help file
  2795.         entry for the <name> specified.
  2796.  
  2797. HELPOFF ( --- )                 VIEW
  2798.         Disable the display of HELP with VIEW.
  2799.  
  2800. HELPON  ( --- )                 VIEW
  2801.         Enable the display of HELP with VIEW.
  2802.  
  2803. HELPVIEW ( | <name> --- )       VIEW
  2804.         Displays the help for <name> in the top 7 lines, and the source
  2805.         for <name> in the next 12 lines.
  2806.  
  2807. HERE    ( --- a1 )              KERNEL2
  2808.         Return the address of the top of the dictionary
  2809.  
  2810. HEX     ( --- )                 KERNEL2
  2811.         All subsequent numeric IO will be in Hexadecimal.
  2812.  
  2813. HIDDEN  ( --- )                 VOCABS
  2814.         vocabulary stack -> ( voc1 voc2 -- hidden voc2 | current = ? )
  2815.         The HIDDEN vocabulary, sets CONTEXT to HIDDEN when executed.
  2816.  
  2817. HIDE    ( -- )                  KERNEL3
  2818.         Removes the Last definition from the Header Dictionary.
  2819.  
  2820. HIDELINES ( --- )               SEQREAD
  2821.         Turn off listing of lines while loading.
  2822.  
  2823. HLD     ( --- a1 )              KERNEL2
  2824.         Points to a converted character during numeric output.
  2825.  
  2826. HNDLS   ( --- a1 )              SEQREAD
  2827.         an array of handles, holds 5 handles in a stack. Used by
  2828.         SEQHANDLE, SEQHANDLE+, and FLOAD.
  2829.  
  2830. HOLD    ( c1 --- )              KERNEL2
  2831.         Save the char for numeric output later.
  2832.  
  2833. HOPEN   ( handle --- error-code ) HANDLES
  2834.         Open the file specified in handle, return error-code zero if
  2835.         the file was opened properly.
  2836.  
  2837. HOURS   ( N1 --- )              TIMESTUF
  2838.         Wait for n1 hours. Performs PAUSE and PAUSE-FUNC constantly
  2839.         while its waiting.
  2840.  
  2841. HREAD   ( a1 n1 handle --- n2 ) HANDLES
  2842.         Read from a file specified by a handle to a1,n1 in the code
  2843.         segment.  Returns n2 the length actually read.
  2844.  
  2845. HRENAME ( handle1 handle2 --- return-code ) HANDLES
  2846.         Change the name of the file specified in handle1 to the name
  2847.         specified in handle2. Can be used to move a file from one
  2848.         directory to another on the same drive. Returns 18 if the
  2849.         rename was good, not zero.
  2850.  
  2851. HWRITE  ( a1 n1 handle --- n2 ) HANDLES
  2852.         Write to a file specified by a handle from a1,n1 in the code
  2853.         segment. Return n2 the length actually written.
  2854.  
  2855. I       ( --- n1 )              KERNEL1
  2856.         returns the current loop index.  It now requires a little more
  2857.         calculation to compute it than in FIG Forth but the tradeoff is
  2858.         a much faster (LOOP).  The loop index is stored on the Return
  2859.         Stack.
  2860.  
  2861. IBLEN   ( --- n1 )              SEQREAD
  2862.         Input buffer length constant.
  2863.  
  2864. IBM--LINE ( -- )                IBMCURSR
  2865.         Delete the current line on the IBM display, causes all lines
  2866.         lower on the screen to scroll up. This is the defered function
  2867.         of -LINE. Use -LINE for portability.
  2868.  
  2869. IBM-AT  ( col row -- )          IBMCURSR
  2870.         Move to the COL and ROW specified on the IBM display screen.
  2871.         This is done using a BIOS level interupt. This word is normally
  2872.         the defered function of AT, you should use AT for portability.
  2873.  
  2874. IBM-AT? ( --- col row )         IBMCURSR
  2875.         Return the ROW and COLUMN of the cursor on the display as it is
  2876.         known by DOS.  Used to initialize Forth's #LINE and #OUT
  2877.         variables.
  2878.  
  2879. IBM-PROPRINT ( --- )            PROPRINT
  2880.         Select the IBM Proprinter as the system printer, with BOLD and
  2881.         UNDERLINE available.
  2882.  
  2883. IBRESET ( --- )                 SEQREAD
  2884.         Input Buffer RESET, initializes the LINEREAD function to start
  2885.         reading from a new file or a file in which a move POINTER has
  2886.         been done.  Flushes the contents of the read buffer.
  2887.  
  2888. IF      ( f1 -- )               KERNEL3
  2889.         Used in the form: f1   IF <true> ELSE <false> THEN  (ELSE is
  2890.         optional). If flag f1 is false, branches forward to <false> or
  2891.         after THEN.
  2892.  
  2893. IMMEDIATE ( -- )                KERNEL3
  2894.         Mark the last Header as an Immediate word.
  2895.  
  2896. INBSEG  ( --- n1 )              SEQREAD
  2897.         The input buffer segment VALUE.
  2898.  
  2899. INCLUDE ( | <name> --- )        SEQREAD
  2900.         An ALIAS for FLOAD.  See also FLOAD.
  2901.  
  2902. INCR    ( a1 -- )               KERNEL1
  2903.         Increment the word at the specified address by 1.
  2904.  
  2905. INCR>   ( | <name> -- )         EQUCOLON
  2906.         Increment the body of <name> by one, used to modify the
  2907.         following VALUE or VARIABLE.
  2908.  
  2909. INDEX   ( file_spec --- )       FWORDS
  2910.         display an index of the first line of each file that matches
  2911.         the file_specs included on the line following INDEX.
  2912.  
  2913. INITCOLOR ( --- )               VIDEO
  2914.         A defered word that gets set later, and is used to do the color
  2915.         display attribute control initialization ( it sets the >ATTRIBx
  2916.         words. ). See the file MONOCROM, and COLOR.
  2917.  
  2918. INITMONO ( --- )                 VIDEO
  2919.         A defered word that gets set later, and is used to do the
  2920.         monochrome display attribute control initialization ( it sets
  2921.         the >ATTRIBx words. ). See the file MONOCROM.
  2922.  
  2923. INITSTUFF ( --- )               KERNEL4
  2924.         A DEFERed word chain, used by many system utilities that need
  2925.         to specify a function to be performed at cold start time.  See
  2926.         also DEFERS for more information on how defered word chains
  2927.         work.
  2928.  
  2929. INLEN   ( --- a1 )              SEQREAD
  2930.         input text length variable
  2931.  
  2932. INLINE  ( --- )                 PASM
  2933.         Starts an assembly language sequence in the middle of a :
  2934.         (colon) definition. Assembly code instructions follow until the
  2935.         sequence is terminated by END-INLINE. The sequence of assembly
  2936.         instructions normally includes NEXT, 1PUSH, or 2PUSH just prior
  2937.         to the word END-INLINE.
  2938.  
  2939. INSTALL ( --- )                 UTILS
  2940.         A DEFERed word that is used to install user defined options in
  2941.         the system when they are initially bringing up the system.
  2942.  
  2943. INSTALLSTUFF ( --- )            UTILS
  2944.         A DEFERed word chain used by the INSTALL words to add
  2945.         additional things to the system that will allow the user to
  2946.         select options at installation time.  Use   FLOOK INSTALLSTUFF
  2947.         *   to see some places where this word is used.
  2948.  
  2949. INTERPRET ( -- )                KERNEL3
  2950.         The Forth Interpret Loop. If the next word is defined, execute
  2951.         it, otherwise convert it to a number and push it onto the
  2952.         stack.
  2953.  
  2954. IS      ( cfa -- )              KERNEL4
  2955.        Depending on STATE, either sets the following DEFERred word
  2956.        immediatly or compiles the setting for later.
  2957.  
  2958. J       ( --- n1 )              KERNEL1
  2959.         returns the loop index of the inner loop in nested DO .. LOOPs.
  2960.  
  2961. KEY     ( --- c1 )              KERNEL2
  2962.         A defered word to get a key from user.
  2963.  
  2964. KEY?    ( --- f1 )              KERNEL2
  2965.         A defered word that returns a true flag if a key waiting.
  2966.  
  2967. L       ( --- )                 VIEW
  2968.         Display 18 lines starting at the most recently displayed line.
  2969.  
  2970. L>NAME  ( lfa -- nfa )          KERNEL3
  2971.         Go from link field address lfa to name field address lfa.
  2972.  
  2973. LABEL   ( --- a1 )              PASM
  2974.         Create a definition that returns the address of whatever code
  2975.         follows, and enable the assembler. Compiled as a VARIABLE.
  2976.  
  2977. LARGEST ( a1 n1 --- a2 n2 )     LARGEST
  2978.         Given a starting address a1 and an array length in bytes,
  2979.         return a2 the address of the largest word element in the array,
  2980.         and n2 the largest element itself.
  2981.  
  2982. LAST    ( --- a1 )              KERNEL2
  2983.         Points to the name of the most recently CREATEd word.
  2984.  
  2985. LDUMP   ( seg offset len --- )  DUMP
  2986.         Dump to the display the absolute segment seg, starting at
  2987.         offset for length len.
  2988.  
  2989. LEAVE   ( -- )                  KERNEL3
  2990.         Immediately exit a DO-LOOP.
  2991.  
  2992. LENGTH  ( a1 --- a2 n1 )        KERNEL2
  2993.         Given the address on the stack, returns the address plus two
  2994.         and the two byte contents of the address.
  2995.  
  2996. LFILL   ( a1 len value --- )    KERNEL2
  2997.         Fill starting at addr, for length len, with value.
  2998.  
  2999. LFILLW  ( seg offset byte-len WORD --- ) IBMCURSR
  3000.         Fill absolute segment seg starting at offset for length
  3001.         byte-len with the value WORD.
  3002.  
  3003. LIMIT   ( --- a1 )              KERNEL2
  3004.         A constant that returns the highest address in the CODE segment
  3005.         used by Forth. Typically $FFFE.
  3006.  
  3007. LINEEDITOR ( x y a1 n1 --- f1 ) LEDIT
  3008.         At location x,y start editing the string specified by a1,n1.
  3009.         the line editor supports the wordstar key sequences, and if the
  3010.         edit terminates with a <enter>, then the original string will
  3011.         be changed to match the edited string. If the edit is
  3012.         terminated with ESC, then the original string will not be
  3013.         changed.  See the file LEDIT for further information on
  3014.         LINEEDITOR.
  3015.  
  3016. LINEREAD ( --- a1 )             SEQREAD
  3017.         A defered word that returns a line from the current file.
  3018.  
  3019. LINK    ( --- a1 )              KERNEL2
  3020.         Points to next task in the circular multi tasking queue.
  3021.  
  3022. LINK>   ( lfa -- cfa )          KERNEL3
  3023.         Go from link field address lfa to code field address cfa.
  3024.  
  3025. LIST    ( n1 --- )              VIEW
  3026.         N1 is the line number to list in the current open file.
  3027.  
  3028. LISTING ( --- )                 TOPEDIT
  3029.         Print a formatted listing of the file currently open.  The
  3030.         printing is done using the editor, so there must be enough
  3031.         memory for the editor to load the file.
  3032.  
  3033. LITERAL ( n1 -- )               KERNEL3
  3034.         Compile the single integer from the stack as a literal.
  3035.  
  3036. LL      ( | <name> --- )        VIEW
  3037.         LL is a pseudonym for VIEW, displays Help and Source for
  3038.         <name>.
  3039.  
  3040. LMARGIN ( -- a1 )               KERNEL4
  3041.         The left margin setting used by ?LINE, ?CR. When a line wrap
  3042.         occurs, then LMARGIN specifies how many spaces are printed on
  3043.         the following line. Default value is 0.
  3044.  
  3045. LOAD    ( n1 --- )              VIEW
  3046.         n1 is the line number of where to start loading.
  3047.  
  3048. LOADED, ( --- )                 SEQREAD
  3049.         Compile the name of the current file as a variable in the FILES
  3050.         vocabulary. Also links the variable into a list of variables
  3051.         that represent the files that have been loaded.
  3052.  
  3053. LOADER  ( --- )                 SEQREAD
  3054.         A defered word that loads the current file.
  3055.  
  3056. LOADING ( --- a1 )              SEQREAD
  3057.         A VARIABLE that holds a flag TRUE if we in the process of
  3058.         loading a file.
  3059.  
  3060. LOADSTAT ( --- )                SEQREAD
  3061.         load status display defered word. Normally deferd to <.STAT>.
  3062.  
  3063. LOOP    ( -- )                  KERNEL3
  3064.         Terminate a loop structure. Increment loop index by one and
  3065.         repeat <loop-body> until loop index crosses the boundary
  3066.         between limit and limit - 1. Used in the form DO <loop-body>
  3067.         LOOP.
  3068.  
  3069. LTBLUE  ( --- n1 )              COLOR
  3070.         Return the color value for LIGHT BLUE. Blinks in Background.
  3071.  
  3072. LTCYAN  ( --- n1 )              COLOR
  3073.         Return the color value for LIGHT CYAN Blinks in Background.
  3074.  
  3075. LTGRAY  ( --- n1 )              COLOR
  3076.         Return the color value for LIGHT GRAY
  3077.  
  3078. LTGREEN ( --- n1 )              COLOR
  3079.         Return the color value for LIGHT GREEN Blinks in Background.
  3080.  
  3081. LTMAGENTA ( --- n1 )            COLOR
  3082.         Return the color value for LIGHT MAGENTA Blinks in Background.
  3083.  
  3084. LTRED   ( --- n1 )              COLOR
  3085.         Return the color value for LIGHT RED Blinks in Background.
  3086.  
  3087. M/D/Y   ( --- )                 TIMER
  3088.         Select the date format Month/Day/Year for all calender
  3089.         functions.
  3090.  
  3091. M/MOD   ( d1 n1 --- rem quot )  KERNEL1
  3092.         Divides a double by a single, leaving a single quotient and a
  3093.         single remainder. Division is floored.
  3094.  
  3095. MAGENTA ( --- n1 )              COLOR
  3096.         A CONSTANT that returns the color value for Magenta on a color
  3097.         monitor.
  3098.  
  3099. MAKEDUMMY ( | <name> -- )       KERNEL3
  3100.         Make a dummy : definitions out of <name>.  Effectively a NOOP,
  3101.         used by ANEW.
  3102.  
  3103. MANY    ( -- )                  UTILS
  3104.         Re-execute the input stream until the user presses a key.
  3105.  
  3106. MARK    ( | <name> -- )         HELLO
  3107.         Create a mark, that is define a word <name> that will clear the
  3108.         dictionary back to itself when it is executed.
  3109.  
  3110. MAX     ( n1 n2 --- n3 )        KERNEL1
  3111.         Return the maximum of n1 and n2
  3112.  
  3113. MAX.S   ( --- a1 )              KERNEL4
  3114.         A VARIABLE that holds the value of how many items to display
  3115.         when a .S is performed, normally set to 4, but can be changed
  3116.         by the user.
  3117.  
  3118. MAXNEST ( --- n1 )              SEQREAD
  3119.         Total size in bytes of the system handle stack.
  3120.  
  3121. ME$     ( --- a1 )              ENVIRON
  3122.         Storage space for the execution string used to execute this
  3123.         forth currently running.
  3124.  
  3125. ME@     ( --- )                 ENVIRON
  3126.         Extract the execution string from the environment, and place it
  3127.         in the string ME$
  3128.  
  3129. MED-CURSOR ( --- )              IBMCURSR
  3130.         set the cursor to a thick cursor, not line, and not block sort
  3131.         of double thick.
  3132.  
  3133. MEMCHK  ( f1 --- )              KERNEL2
  3134.         abort with memory error message if true
  3135.  
  3136. MENU    ( --- )                 MENUS
  3137.         Invode the current menu set, accepts keypad keys to move around
  3138.         the menubar, and then to enter a menu command. If you have not
  3139.         setup a menubar, then the default Forth menubar is used.
  3140.         See also MENUS
  3141.  
  3142. MENULINE" ( | <menu_text> <menu_func> --- ) MENUS
  3143.         Define a new pull down menu line, with text <menu_text> to
  3144.         perform <menu_func>. All menu lines for a particular menu
  3145.         should have the same <menu_text> length.  The first capitalized
  3146.         letter in the <menu_text> will be the recognized menu command
  3147.         letter, and should be unique within the items of a particular
  3148.         menu. See MENUS
  3149.         Example:
  3150.                             "T" is the command key.
  3151.                            /               NOOP is the menu function
  3152.                          /                /
  3153.              MENULINE"  This is a test " noop
  3154.  
  3155. MIN     ( n1 n2 --- n3 )        KERNEL1
  3156.         Return the minimum of n1 and n2
  3157.  
  3158. MINUTES ( N1 --- )              TIMESTUF
  3159.         Wait for n1 minutes. PAUSE and PAUSE-FUNC are performed
  3160.         continuously while waiting.
  3161.  
  3162. MOD     ( num den -- modulus )  KERNEL1
  3163.         Return the modulus of the numerator and denominator, where the
  3164.         quotient is "floored".  This is designed to yield a result
  3165.         having the same sign as the denominator.  Note that if the
  3166.         denominator is positive, the result is positive, regardless of
  3167.         the sign of the numerator.
  3168.  
  3169. MOVE    ( a1 a2 n1 --- )        KERNEL2
  3170.         Move the specified bytes n1 from address a1 ro address a2. No
  3171.         overlapping of data will occur.
  3172.  
  3173. MOVEPOINTER ( double-offset handle --- ) HANDLES
  3174.         Move the file pointer for handle to the position double-offset
  3175.         in the file already open in handle.
  3176.  
  3177. MS      ( n1 --- )              BUFSET
  3178.         Delay for n1 milliseconds. This function is system specific,
  3179.         and while it is calibrated at system boot time, it may not
  3180.         always be very acurate.
  3181.  
  3182. MU/MOD  ( d1 n1 --- rem dquotient) KERNEL1
  3183.         divides a double by a single, leaving a double quotient and a
  3184.         single remainder. Division is floored.
  3185.  
  3186. N       ( --- )                 VIEW
  3187.         Go forward 16 lines and display 18 lines.
  3188.  
  3189. N>LINK  ( nfa -- lfa)           KERNEL3
  3190.         Go from name field address nfa to link field address lfa.
  3191.  
  3192. NAME>   ( nfa -- cfa )          KERNEL3
  3193.         Go from name field address nfa to code field address cfa.
  3194.  
  3195. NAME>PAD ( A1 --- PAD )         VIEW
  3196.         Move the name field to PAD and filter out the hi bit of the
  3197.         last character in name. Also clears all but lower 5 bits of
  3198.         name count.
  3199.  
  3200. NEEDS   ( | <name> --- )        NEEDS
  3201.         Test the file <name> following, if we have not loaded it, then
  3202.         load it else just go on.
  3203.  
  3204. NEGATE  ( n1 --- n2 )           KERNEL1
  3205.         Turn the number into its negative.  A twos complement op.
  3206.  
  3207. NEWFILE ( | <name> --- )        NEWFILE
  3208.         Open or CREATE the <name> specified and start editing it. if no
  3209.         name is specified, then prompt for a name.
  3210.  
  3211. NEWINFO ( --- )                 INFO
  3212.         Starts a sequence of lines that constitute a NEWINFO, NEWINFO
  3213.         is placed at the beginning of a line, and subsequent lines are
  3214.         compiled into a special file called F-PC.MSG until the
  3215.         terminating line ENDINFO is encountered.  When the definition
  3216.         containing NEWINFO and ENDINFO is later executed, the lines
  3217.         between them are read from the disk file, and displayed.  This
  3218.         is a system utility, and is not typically used in a user
  3219.         program.
  3220.  
  3221. NEWMENU ( | <name> --- a1 0 )   compile time    MENUS
  3222.         ( --- a1 )              run time
  3223.         Starts the definition of a new menu <name>, see MENUS for an
  3224.         example of how to make a menu.
  3225.  
  3226. NEWMENUBAR ( | <name> --- )     MENUS
  3227.         Starts the definition of a new menubar, see MENUS for an
  3228.         example of how to make a menubar.
  3229.  
  3230. NIP     ( n1 n2 --- n2 )        KERNEL1
  3231.         Drop the second element from the stack.
  3232.  
  3233. NO-NAME ( --- )                 KERNEL3
  3234.         A dummy name, whose name field address is returned by >NAME
  3235.         when the real name field can not be found.
  3236.  
  3237. NOBACKUP ( --- )                EDITSTUF
  3238.         Disable the creation of backup copies of your edit files.  This
  3239.         is normally only done when you are short of disk space, wo
  3240.         allow the editing of larger files in a limited environment.
  3241.  
  3242. NOOP    ( --- )                 KERNEL1
  3243.         One of the most useful words in Forth.  Does nothing.
  3244.  
  3245. NORM-CURSOR ( --- )             IBMCURSR
  3246.         Set the cursor to the normal underline shape.
  3247.  
  3248. NOT     ( n1 --- n2 )           KERNEL1
  3249.         Does a ones complement of the top.  Equivalent to -1 XOR.
  3250.  
  3251. NRESOLVE ( 0 n1 n2 ... n -- )   CASE
  3252.         Primitive used by ENDCASE to resolve the previous case
  3253.         references.
  3254.  
  3255. NUMBER  ( a1 --- d1 )           KERNEL2
  3256.         Convert a string to a number.  Normally (NUMBER)
  3257.  
  3258. NUMBER? ( a1 --- d1 f1 )        KERNEL2
  3259.         Convert the count delimited string at a1 to a double number.
  3260.         NUMBER? takes into account a leading minus sign, and stores a
  3261.         pointer to the last delimiter in DPL. The string must end with
  3262.         a blank. Leaves a true flag if successful.
  3263.  
  3264. OBLEN   ( --- n1 )              SEQREAD
  3265.         output buffer length constant
  3266.  
  3267. OCTAL   ( --- )                 KERNEL2
  3268.         All subsequent numeric IO will be in Octal.
  3269.  
  3270. OF      ( n1 n2 -- n1 )         CASE
  3271.         ( n1 n1 -- )
  3272.         See CASE.
  3273.  
  3274. OFF     ( a1 --- )              KERNEL1
  3275.         Set the contents of a1 to FALSE
  3276.  
  3277. OFF>    ( | <name> --- )        EQUCOLON
  3278.         Turn off the VALUE or VARIABLE <name> following. Somewhat
  3279.         faster than <name> OFF.
  3280.  
  3281. OK      ( --- )                 SEQREAD
  3282.         Load all of the current file. Peforms a 1 LOAD.
  3283.  
  3284. ON      ( a1 --- )              KERNEL1
  3285.         Set the contents of a1 to TRUE
  3286.  
  3287. ON>     ( | <name> --- )        EQUCOLON
  3288.         Turn on the VALUE or VARIABLE <name> following. Somewhat faster
  3289.         than <name> ON.
  3290.  
  3291. OPEN    ( | <name> --- )        SEQREAD
  3292.         Open <name> as the current file for loading, editor etc. This
  3293.         is a pseudonym for FILE.
  3294.  
  3295. OR      ( n1 n2 --- n3 )        KERNEL1
  3296.         Returns the bitwise OR of n1 and n2 on the stack.
  3297.  
  3298. OSF     ( --- a1 )              KERNEL2
  3299.         Operating Sys call in progress flag.
  3300.  
  3301. OUTBUF  ( --- a1 )              SEQREAD
  3302.         the line output buffer array
  3303.  
  3304. OUTPAUSE ( --- )                KERNEL2
  3305.         A DEFERed word that can be set to PAUSE, but is normally set to
  3306.         NOOP, to prevent multi tasking from interfering with typed
  3307.         output.
  3308.  
  3309. OVER    ( n1 n2 --- n1 n2 n1 )  KERNEL1
  3310.         Copy the second element to the top.
  3311.  
  3312. P!      ( n1 port# --- )        KERNEL1
  3313.         Write the value n1 to the 16 bit port#.
  3314.  
  3315. P@      ( port# -- n1 )         KERNEL1
  3316.         Read the 16 bit port# and return value n1.
  3317.  
  3318. PAD     ( --- a1 )              KERNEL2
  3319.         Floating Temporary Storage area.  DON'T USE THIS, it will be
  3320.         going away in the ANSI standard.
  3321.  
  3322. PAGE    ( --- )                 UTILS
  3323.         Printer dependent. Get to a new page.  Increment the page
  3324.         number and reset the line number and the column number.
  3325.  
  3326. PARAGRAPH ( offset --- paragraph-in ) KERNEL3
  3327.         Convert offset to the next largest paragraph size that will
  3328.         contain all of offset.  Used to do paragraph alignment.
  3329.  
  3330. PARSE   ( a1 --- a2 n1 )        KERNEL2
  3331.         Scan the input stream until char is encountered. Update >IN
  3332.         pointer. Leaves the address and length of the enclosed string.
  3333.  
  3334. PATH$   ( --- a1 )              ENVIRON
  3335.         Storage space for the PATH string.
  3336.  
  3337. PATH@   ( --- )                 ENVIRON
  3338.         Extract the PATH from the environment string.
  3339.  
  3340. PATHHNDL ( --- a1 )             PATHSET
  3341.         A handle that returns a1 the address of the handle that
  3342.         contains the default drive path.
  3343.  
  3344. PATHSET ( handle --- f1 )       HANDLES
  3345.         Set the current drive path into handle. returns boolean f1 true
  3346.         if an error occured while performing this operation.
  3347.  
  3348. PAUSE   ( --- )                 KERNEL1
  3349.         Used by the Multitasker to switch tasks.
  3350.  
  3351. PAUSE-FUNC ( --- )              TIMESTUF
  3352.         A defered word to be set to a function that is to be performed
  3353.         while waiting for timing words Like TENTHS, SECONDS, MINUTES
  3354.         and HOURS to complete.
  3355.  
  3356. PC!     ( n1 port# --- )        KERNEL1
  3357.         Write the byte n1 to the 8 bit port#.
  3358.  
  3359. PC@     ( port# -- n1 )         KERNEL1
  3360.         Read the 8 bit port# and return value n1.
  3361.  
  3362. PCLOSE  ( --- )                 PRINT
  3363.         Close the current print file, and restore printing to the PRN
  3364.         device.
  3365.  
  3366. PDOS    ( a1 drive# --- f1 )    KERNEL1
  3367.         Read the current DOS path of drive# into the array at a1. The
  3368.         string returned will be NULL terminated. F1 returns TRUE if an
  3369.         error occured.
  3370.  
  3371. PEMIT   ( c1 --- )              KERNEL2
  3372.         A DEFERed word that normally contains (PRINT), to print a
  3373.         character c1 to the printer.
  3374.  
  3375. PERFORM ( a1 --- )              KERNEL1
  3376.         The word whose code field is stored at the address pointed to
  3377.         by a1, the number on the stack.  Same as @ EXECUTE
  3378.  
  3379. PFILE   ( | <name> --- )        PRINT
  3380.         All printing is to goto diskfile <name>.  No extention is added
  3381.         to <name>.
  3382.  
  3383. PICK    ( n1 --- n2 )           KERNEL1
  3384.         Reaches into the stack and grabs an element, copying it to the
  3385.         top of the stack.  For example, if the stack has 1 2 3 Then 0
  3386.         PICK is 3, 1 PICK is 2, and 2 PICK is 1.
  3387.  
  3388. PLACE   ( from count to --- )   KERNEL1
  3389.         Move the characters at from to to with a preceding length byte
  3390.         of len.
  3391.  
  3392. POSTFIX ( --- )                 PASM
  3393.         Switch the assembler to POSTFIX mode, like the F83 postfix
  3394.         assembler. The normal mode is PREFIX.  See also PREFIX.
  3395.  
  3396. PR-STATUS ( n1 --- n2 )         KERNEL2
  3397.         Return the printer status as n2 from the printer specified by
  3398.         n1. N1=0 for PRT1, and 1 for PRT2.
  3399.  
  3400. PRE>    ( --- )                 PASM
  3401.         Restores the previous assembler mode after using >PRE to select
  3402.         PREFIX for a macro. Used in pairs with >PRE.
  3403.  
  3404. PREFIX  ( --- )                 PASM
  3405.         Switch the assembler to PREFIX notation mode. This is the
  3406.         normal mode. See also POSTFIX.
  3407.  
  3408. PREPEND.PATH ( handle --- f1 )  PATHSET
  3409.         Prepend the default drive and path to handle, and return f1 the
  3410.         boolean that tells if we were successful.
  3411.  
  3412. PRINT   ( | <words-to-be-interpreted> -- ) KERNEL3
  3413.         Interpret the following words, and output to printer.
  3414.  
  3415. PRINTING ( --- a1 )             KERNEL2
  3416.         A variable which holds a flag that Indicates whether printing
  3417.         is enabled.
  3418.  
  3419. PRIOR   ( --- a1 )              KERNEL2
  3420.         Points to the last vocabulary that was searched.
  3421.  
  3422. PRNHNDL ( --- a1 )              SEQREAD
  3423.         The handle used by the system to talk to the printer.  Normally
  3424.         initialized to contain PRN. on handle 4, but may be opened on a
  3425.         real file to cause printing to a file. See also PFILE and
  3426.         PCLOSE.
  3427.  
  3428. QTYPE   ( A1 N1 --- )           QVIDEO
  3429.         Quick type, uses a direct screen assembly word called
  3430.         VIDEO-TYPE to blast text directly tot he screen. Handles
  3431.         attributes as well, see MONOCROM.
  3432.  
  3433. QUERY   ( --- )                 KERNEL2
  3434.         Get more input from the user and place it at TIB.
  3435.  
  3436. QUIT    ( -- )                  KERNEL4
  3437.        The main loop in Forth. Gets more input from the terminal and
  3438.        Interprets it. Responds with OK if healthy.
  3439.  
  3440. R#      ( --- a1 )              KERNEL2
  3441.         The cursor position during editing.
  3442.  
  3443. R>      ( --- n1 )              KERNEL1
  3444.         Pops a value off of the return stack and pushes it onto the
  3445.         parameter stack.  It is dangerous to use this randomly!
  3446.  
  3447. R>DROP  ( --- )                 KERNEL1
  3448.         Pops a value off of the return stack and discards it. It is
  3449.         dangerous to use this randomly!
  3450.  
  3451. R@      ( --- n1 )              KERNEL1
  3452.         Copies the value on the return stack to the parameter stack.
  3453.  
  3454. RECOVERLINE ( n1 --- )          SAVESCR
  3455.         Recover a line n1 from the most recently saved screen with
  3456.         SAVESCR. The line is placed on the screen on line n1.
  3457.  
  3458. RECOVERSCR ( --- )              SAVESCR
  3459.         Recover a COPY of the most recently saved screen with SAVESCR.
  3460.         You can temporarily restore the screen with this word, in
  3461.         preperation for messing it up again before finally using
  3462.         RESTSCR to restore the screen.  This word does NOT pop the save
  3463.         screen stack, it only makes a copy of the most recent save.
  3464.  
  3465. RECURSE ( -- )                  KERNEL4
  3466.         We prefer to use RECURSIVE rather than RECURSE. See RECURSIVE
  3467.  
  3468. RECURSIVE ( -- )  immediate     KERNEL3
  3469.         Allow the current definition to be self referencing.
  3470.  
  3471. RED     ( --- n1 )              COLOR
  3472.         A CONSTANT that retuns the value of the color red on a color
  3473.         monitor.
  3474.  
  3475. REF     ( | <name> --- )        REF
  3476.         Display all references found to <name> in the currently
  3477.         compiled Forth system. Examines COLON definitions and DEFERed
  3478.         words.
  3479.  
  3480. REN     ( <filespec> --- )      EXEC
  3481.         Perform a RENAME with the filespec following the REN command.
  3482.  
  3483. RENAME  ( | <filespec> --- )    EXEC
  3484.         Perform a RENAME with the filespec following the RENAME
  3485.         command.
  3486.  
  3487. REPAIR  ( | <name> --- )        TOPEDIT
  3488.         Perform a VIEW and EDit on the <name> following.
  3489.  
  3490. REPEAT  ( -- )                  KERNEL3
  3491.         Unconditional backward branch to just after BEGIN in a BEGIN
  3492.         <loop>  flag WHILE  <true>  REPEAT   loop.
  3493.  
  3494. RESTORE> ( --- ) followed by a definition in a colon def.
  3495.                                 SAVEREST
  3496.         Restore the previous value of the body of the name following in
  3497.         this colon definition.  See also SAVE> and SAVE!>.
  3498.  
  3499. RESTORESTATE ( --- )            UTILS
  3500.         Restore the system state as preserved by SAVESTATE.
  3501.  
  3502. RESTORE_VECTORS ( -- )          KERNEL4
  3503.         Restores the CONTROL BREAK DOS vectors to their original value
  3504.         as when Forth was entered.  The CONTROL BREAK and DIVIDE by 0
  3505.         vectors are saved by the assembly language cold start routines
  3506.         before Forth is entered.
  3507.  
  3508. RESTSCR ( --- )                 SAVESCR
  3509.         Restore  the screen from the external segment screen save area.
  3510.         Un-nestable up to three times.
  3511.  
  3512. REVEAL  ( -- )                  KERNEL3
  3513.         Activates (reveals) the Last definition in the Header
  3514.         Dictionary.
  3515.  
  3516. RMARGIN ( -- a1 )               KERNEL4
  3517.         Controls the right margin, used by ?LINE, ?CR. Specifys where
  3518.         to wrap the line.  Default value is 70.
  3519.  
  3520. ROLL    ( n1 --- n2 )           KERNEL1
  3521.         Similar to SHAKE and RATTLE.  Should be avoided. 1 ROLL is
  3522.         SWAP, 2 ROLL is ROT, etc. ROLL can be useful, but it is SLOW.
  3523.  
  3524. ROOT    ( --- )                 VOCABS
  3525.         The root vocabulary that is always available in the vocabulary
  3526.         list.
  3527.  
  3528. ROT     ( n1 n2 n3 --- n2 n3 n1 ) KERNEL1
  3529.         Rotate the top three element, bringing the third to the top.
  3530.  
  3531. ROWS    ( --- n1 )              VIDEO
  3532.         A VALUE that returns the number of ROWS available on the
  3533.         current display as determined at boot time.  You should use
  3534.         this VALUE to adjust your programs to work with displays having
  3535.         between 25 and 60 lines.  See also COLS.
  3536.  
  3537. RP!     ( a1 --- )              KERNEL1
  3538.         ( Warning, this is different from FIG Forth )
  3539.         Sets the return stack pointer to the specified value.
  3540.  
  3541. RP0     ( --- a1 )              KERNEL2
  3542.         Empty return stack for this task.
  3543.  
  3544. RP@     ( --- a1 )              KERNEL1
  3545.         Return the address of the next entry on the return stack.
  3546.  
  3547. RUN     ( --- )                 KERNEL3
  3548.         Interpret or compile whatever is in the TERMINAL INPUT BUFFER.
  3549.         Tests STATE, and does the appropriate thing.
  3550.  
  3551. RWERR   ( --- a1 )              HANDLES
  3552.         A VARIABLE that holds the value of the most recent disk read or
  3553.         write error.
  3554.  
  3555. RWMODE  ( --- a1 )              HANDLES
  3556.         the variable rwmode, which defaults to a value of 2, controls
  3557.         the read write mode of the file being opened, the value 2 is
  3558.         read, or write, a value of 1 specifies write only, and a value
  3559.         of 0 specifies read only.
  3560.  
  3561. S>D     ( n1 --- d1 )           KERNEL1
  3562.         Take a single precision number and make it double precision by
  3563.         extending the sign bit to the upper half.
  3564.  
  3565. SAVE!>  ( n1 --- ) followed by the name of a definition   SAVEREST
  3566.         Saves the body contents of the definition following to the
  3567.         return stack, and sets the body to value n1.  Used to save and
  3568.         set VARIALBEs or VALUEs. Complimented by RESTORE>.
  3569.  
  3570. SAVE-EXE ( | <name> --- )        SAVEEXE
  3571.         Save the current Forth memory image to the file <name> if
  3572.         present, or if not present, then prompt for a name to save to.
  3573.  
  3574. SAVE>   ( --- ) followed by a name in definition        SAVEREST
  3575.         Saves the body contents of the definition following to the
  3576.         return stack.  Used to save VARIABLEs or VALUEs that may be
  3577.         changed by a following operation.  Complimented with RESTORE>.
  3578.         See also SAVE!>
  3579.  
  3580. SAVEPOINTER ( --- )             SEQREAD
  3581.         Save the file offset into the current file for later restoral.
  3582.  
  3583. SAVESCR ( --- )                 SAVESCR
  3584.         Save the current contents of the screen to an external segment
  3585.         save area. Nestable up to three times.
  3586.  
  3587. SAVESTATE ( --- )               UTILS
  3588.         Saves F-PC's state, including BASE, CAPS, LMARGIN, RMARGIN,
  3589.         TABSIZE and STATV.
  3590.  
  3591. SCAN    ( a1 n1 c1 --- )        KERNEL2
  3592.         Given the address and length of a string, and a character to
  3593.         look for, run through the string until we find the character.
  3594.         Leave the address of the match and the length of the remaining
  3595.         string.
  3596.  
  3597. SCANW   ( a1 w1 w2 --- a2 w3 )  SCAN
  3598.         Scan array at a1 for length w1 words for word value w2. Returns
  3599.         address a2 where w2 was found, and length remaining w3.
  3600.  
  3601. SEARCH  ( sadr slen badr blen -- n1 f1 ) SEARCH
  3602.         Search for string sadr,slen contained in badr,blen. Returns f1
  3603.         equal true if found, and n1 equal to the offset into the string
  3604.         where sadr,slen was found.
  3605.  
  3606. SEC-ELAPSED ( --- N1 )          TIMESTUF
  3607.         Return n1 the seconds that have elapsed since TIME-RESET.
  3608.  
  3609. SECONDS ( N1 --- )              TIMESTUF
  3610.         Wait n1 seconds.
  3611.  
  3612. SED     ( | filename --- )      TOPEDIT
  3613.         Start the editor on the filename specified, or if no name is
  3614.         specified, then prompt for a file. Will create a file if it
  3615.         does not already exist. See also EDITOR
  3616.  
  3617. SEE     ( <name> --- )          DECOM
  3618.         The user interface.  To decompile something type SEE <name>.
  3619.  
  3620. SEEK    ( d1 --- )              SEQREAD
  3621.         Seek (move pointer) to position d1 in the current file.
  3622.  
  3623. SEGSET  ( --- )                 KERNEL4
  3624.         A DEFERed word that contain the current function used to set up
  3625.         the segment registers at cold start time. Typically contains
  3626.         SETYSEG.
  3627.  
  3628. SELECT  ( n1 --- )              KERNEL4
  3629.         Select drive n1 as the current disk drive to use as the DEFAULT
  3630.         drive when no drive is specified. N1 ranges from 0 which is
  3631.         drive A:, to a legal value up to 255 in DOS.
  3632.  
  3633. SEQDOWN ( --- )                 SEQREAD
  3634.         Step down one handle in the handle stack. closes the current
  3635.         file, and selects the next lower file.
  3636.  
  3637. SEQHANDLE+ ( --- a1 )           SEQREAD
  3638.         A VALUE that holds the address of the NEXT available sequential
  3639.         file handle. Oftain used to hold temporary file information
  3640.         during copy or rename operations.
  3641.  
  3642. SEQHANDLE ( --- a1 )            KERNEL2
  3643.         A VALUE that holds the address of the current sequential file
  3644.         handle.  This handle holds the filename of the currently open
  3645.         file if any, along with the DOS handle number if the file is
  3646.         open.
  3647.  
  3648. SEQINIT ( --- )                 SEQREAD
  3649.         Initialize the handle stack, in preparation for use.
  3650.  
  3651. SEQUP   ( --- )                 SEQREAD
  3652.         Step up one handle in the handle stack.
  3653.  
  3654. SET-CURSOR ( N1 --- )           IBMCURSR
  3655.         Set the cursor shape to the mask value n1.
  3656.  
  3657. SET-DTA ( a1 --- )              HANDLES
  3658.         Set the Disk Transfer Area as a1.
  3659.  
  3660. SETBLOCK ( seg size --- f1 )    SETBLOCK
  3661.         Adjust the segment seg to the new size in 16 byte segments.
  3662.         return error flag f1 non-zero if the adjustment did not
  3663.         succeed.
  3664.  
  3665. SETDATE ( NM Y --- )            TIMER
  3666.         Set the DOS date given the double date.
  3667.  
  3668. SETTIB  ( a1 --- )              SEQREAD
  3669.         Sets the terminal input buffer to the counted string a1, in
  3670.         preperation for INTERPRETation, or WORD. Be sure to save the
  3671.         current TIB for later restoral.
  3672.  
  3673. SETTIME ( HM Sh --- )           TIMER
  3674.         Set the DOS time given the double time.
  3675.  
  3676. SETVIEW ( | <path> --- )        VIEW
  3677.         Set the VIEWPATH handle to <path>.  If <path> is omitted, it
  3678.         will be prompted.
  3679.  
  3680. SETYSEG ( --- )                 KERNEL2
  3681.         Set the segment variables as needed.
  3682.  
  3683. SET_VECTORS ( -- )              KERNEL4
  3684.         Set the CONTROL BREAK and DIVIDE by 0 traps to point to the
  3685.         Forth provided functions, so we can handle them smoothly.
  3686.  
  3687. SHOWLINES ( --- )               SEQREAD
  3688.         Turn on listing of lines while loading.
  3689.  
  3690. SIGN    ( n1 --- )              KERNEL2
  3691.         If n1 is negative insert a minus sign into the string.
  3692.  
  3693. SKIP    ( a1 n1 c1 --- )        KERNEL2
  3694.         Given the address and length of a string, and a character to
  3695.         look for, run through the string while we continue to find the
  3696.         character.  Leave the address of the mismatch and the length of
  3697.         the remaining string.
  3698.  
  3699. SLOW    ( --- )                 QVIDEO
  3700.         Select the BDOS screen output routines. Mose everything will
  3701.         still work but BOY WILL IT BE SLOW!  NO COLOR SUPPORT in this
  3702.         mode.
  3703.  
  3704. SOURCE  ( --- a1 n1 )           KERNEL2
  3705.         Return a string from the current input stream.
  3706.  
  3707. SP!     ( a1 --- )              KERNEL1
  3708.         ( Warning, this is different from FIG Forth )
  3709.         Sets the parameter stack pointer to the specified value.
  3710.  
  3711. SP0     ( --- a1 )              KERNEL2
  3712.         Empty parameter stack for this task.
  3713.  
  3714. SP@     ( --- a1 )              KERNEL1
  3715.         Return the address of the next entry on the parameter stack
  3716.  
  3717. SPACE   ( --- )                 KERNEL2
  3718.         Send a space to the terminal
  3719.  
  3720. SPACES  ( n1 --- )              KERNEL2
  3721.         Send a set of spaces to the terminal, uses the SPCS array to
  3722.         TYPE the spaces out very quickly
  3723.  
  3724. SPAN    ( --- a1 )              KERNEL2
  3725.         Number of characters input by EXPECT.
  3726.  
  3727. SPCS    ( --- a1 )              KERNEL2
  3728.         An array of spaces used by SPACES to display spaces quickly.
  3729.         This array holds 132 spaces, for displays up to 132 columns
  3730.         wide.
  3731.  
  3732. SPLIT   ( n1 --- n2 n3 )        KERNEL1
  3733.         SPLIT the 16 bit value n1 into two stack entries which are the
  3734.         LOW and HIGH bytes of N1. The HIGH byte is on the top of the
  3735.         stack.
  3736.  
  3737. SRCOFF  ( --- )                 DECOM
  3738.         A control to the debugger, to cause the source for a word being
  3739.         debugged NOT to be displayed.
  3740.  
  3741. SRCON   ( --- )                 DECOM
  3742.         A control to the debugger, to cause the source for a word being
  3743.         debugged to be displayed.
  3744.  
  3745. SSEG    ( --- a1 )              KERNEL2
  3746.         A VARIABLE that holds the absolure segment where SEARCHing is
  3747.         done.
  3748.  
  3749. START   ( --- )                 KERNEL4
  3750.         A minimum initialization word, clears the input stream, and the
  3751.         data stack, then performs DEFAULT, and INTERPRETs the input
  3752.         stream.
  3753.  
  3754. STATE   ( --- a1 )              KERNEL2
  3755.         A USER VARIABLE that holds the system STATE, used to determine
  3756.         if Forth is COMPILING or INTERPRETING.
  3757.  
  3758. STATOFF ( --- )                 STATUS
  3759.         Turn status displaying off.
  3760.  
  3761. STATON  ( --- )                 STATUS
  3762.         Turn status displaying on.
  3763.  
  3764. STATUS  ( -- )                  KERNEL3
  3765.         Indicate the current status of the system.
  3766.  
  3767. STIME   ( --- a1 )              TIMER
  3768.         A double variable that holds the BINARY start time for various
  3769.         timing operations.
  3770.  
  3771. SVINIT  ( --- )                 SAVESCR
  3772.         Cold start initialization word that allocates some space for
  3773.         the screen save segment.
  3774.  
  3775. SVSEG   ( --- seg1 )            SAVESCR
  3776.         A constant that returns the segment of the screen save area.
  3777.         When not initialized, svseg return a zero.
  3778.  
  3779. SWAP    ( n1 n2 --- n2 n1 )     KERNEL1
  3780.         Exchange the top two elements on the stack.
  3781.  
  3782. SYS     ( | command --- )       EXEC
  3783.         Accept the command line (up to line end) following SYS as a DOS
  3784.         command line.
  3785.  
  3786. T>B     ( d1 --- d2 )           TIMER
  3787.         Convert the d1 DOS double time value to d2 the BINARY time.
  3788.  
  3789. TAB     ( -- )                  KERNEL4
  3790.         Print spaces to get to the next TAB increment as specified by
  3791.         TABSIZE.
  3792.  
  3793. TABSIZE ( --- a1 )              KERNEL4
  3794.         Controls the TAB increment for TAB. Default is 8.
  3795.  
  3796. TELETYPE ( --- )                PRTCTRL
  3797.         Select the dumbest printer, so NOT CONTROL CHARACTER aside from
  3798.         CR and LF will be sent to the printer.  BOLD and UNDERLINE wil
  3799.         not function with this driver.
  3800.  
  3801. TENTHS  ( N1 --- )              TIMESTUF
  3802.         Wait n1 tenths of a second.
  3803.  
  3804. THEN    ( -- )                  KERNEL3
  3805.         Terminate a branch structure. Used in the form:
  3806.         flag IF ... ELSE ... THEN
  3807.  
  3808. THESE   ( --- )                 WORDS
  3809.         A option passed to WORDS, to control whether WORDS will look in
  3810.         all vocabularys, or only the CONTEXT vocabulary.  The following
  3811.         command sequence will cause WORDS to display only those words
  3812.         containing XYZ in the HIDDEN vocabulary:
  3813.         HIDDEN THESE WORDS XYZ <enter>
  3814.  
  3815. TIB     ( --- a1 )              KERNEL2
  3816.         Leaves address of text input buffer.
  3817.  
  3818. TILLKEY ( n1 --- )              TIMESTUF
  3819.         Wait up to n1 seconds for the user to press a key, then
  3820.         continue on whether they have pressed a key or not.
  3821.  
  3822. TIME-ELAPSED ( --- d1 )         TIMER
  3823.         Return d1 the binary time elapsed since the last TIME-RESET.
  3824.  
  3825. TIME-RESET ( --- )              TIMER
  3826.         Reset the start time to the current time.
  3827.  
  3828. TIMER   ( | forth_commands --- )TIMER
  3829.         Measure the time it takes to interpret the forth commands on
  3830.         the following command line.
  3831.  
  3832. TIMES   ( N1 -- )               UTILS
  3833.         Re-execute the input stream N1 number of times. Used in the
  3834.         form:  CR HERE . 5 TIMES <enter>
  3835.  
  3836. TIMES   ( n1 -- )               UTILS
  3837.         Re-execute the input stream a specified number of times.
  3838.  
  3839. TOPRINTER ( --- )               PRINT
  3840.         An ALIAS for PCLOSE. Close the current print file, and restore
  3841.         printing to the PRN device.
  3842.  
  3843. TOS     ( --- a1 )              KERNEL2
  3844.         Top OF Stack, Saved during Task switching.
  3845.  
  3846. TOTALLINES ( --- a1 )           SEQREAD
  3847.         A VARIABLE that holds the total number of lines the system has
  3848.         read and compiled since it was last reset. Incremented by
  3849.         LINEREAD.
  3850.  
  3851. TOTALWORDS ( --- a1 )           WORDS
  3852.         Accumulator for the total number of names.
  3853.  
  3854. TRAVERSE ( a1 direction -- addr' ) KERNEL3
  3855.         Run through a name field in the specified direction. Terminate
  3856.         when a byte whose high order bit is on is detected.
  3857.  
  3858. TRIM    ( faddr voc-addr -- )   KERNEL3
  3859.         Change the hash pointers in a vocabulary so that they are all
  3860.         less than a specified value, faddr.
  3861.  
  3862. TRUE    ( --- f1 )              KERNEL1
  3863.         A CONSTANT that returns -1, a boolean true.
  3864.  
  3865. TTIME   ( --- a1 )              TIMER
  3866.         A double variable that holds the DOS total time.
  3867.  
  3868. TUCK    ( n1 n2 --- n2 n1 n2 )  KERNEL1
  3869.         Tuck the first element under the second one.
  3870.  
  3871. TURNKEY ( | <name> --- )        SAVEEXE
  3872.         Save a copy of the current memory image to the file <name> as
  3873.         an .EXE file. The LIST segment id compressed as much as
  3874.         possible.  The CODE segment is compressed as much as possible,
  3875.         and the HEAD segment is discarded completely.  The created .EXE
  3876.         file is not Forth any more, and can only perform whatever
  3877.         function was plugged into BOOT or DEFAULT before TURNKEY was
  3878.         performed.  The user is responsible for performing whatever
  3879.         initializaton is needed, and for handling ALL error conditions.
  3880.         However wonderful this word may sound, it is NOT for the faint
  3881.         of heart.
  3882.  
  3883. TYPE    ( a1 n1 --- )           KERNEL2
  3884.         A defered word used to Print a string to the current output
  3885.         device from the segment specified in the variable TYPESEG.
  3886.  
  3887. TYPESEG ( --- a1 )              VIDEO
  3888.         A VARIABLE that holds the absolute segment in memory where
  3889.         VIDEO-TYPE types FROM, it is the source of VIDEO-WRITE, and
  3890.         normally holds the CODE segment, but can be set to any segment
  3891.         from which typing needs to be done.
  3892.  
  3893. U*D     ( n1 n2 --- d1 )        KERNEL1
  3894.         U*D is a synonym for UM*
  3895.  
  3896. U.      ( n1 --- )              KERNEL2
  3897.         Output as an unsigned single number with trailing space.
  3898.  
  3899. U.R     ( n1 n2 --- )           KERNEL2
  3900.         Output as an unsigned single number right justified.
  3901.  
  3902. U16/    ( n1 --- n2 )           KERNEL1
  3903.         Four 16 bit logical right shifts. Unsigned divide by 16
  3904.         decimal.
  3905.  
  3906. U2/     ( n1 --- n2 )           KERNEL1
  3907.         16 bit logical right shift.
  3908.  
  3909. U<      ( n1 n2 --- f1 )        KERNEL1
  3910.         Compare the top two elements on the stack as unsigned integers
  3911.         and return true if the second is less than the first. Be sure
  3912.         to use U< whenever comparing addresses, or else strange things
  3913.         will happen beyond 32K.
  3914.  
  3915. U<=     ( un1 un2 --- f1 )      UTILS
  3916.         Unsigned less than or equal.
  3917.  
  3918. U>      ( n1 n2 --- f1 )        KERNEL1
  3919.         Compare the top two elements on the stack as unsigned integers.
  3920.         True if n1 > n2 unsigned.
  3921.  
  3922. U>=     ( n1 n2 --- f1 )        UTILS
  3923.         Unsigned greater than or equal.
  3924.  
  3925. UD.     ( d1 --- )              KERNEL2
  3926.         Output as an unsigned double number with a trailing space
  3927.  
  3928. UD.R    ( d1 n1 --- )           KERNEL2
  3929.         Output as an unsigned double number right justified.
  3930.  
  3931. UM*     ( un1 un2 -- ud )       KERNEL1
  3932.         Return a 32 bit unsigned product of two 16 bit unsigned
  3933.         numbers.
  3934.  
  3935. UM/MOD  ( ud un --- uremainder uquotient ) KERNEL1
  3936.         The unsigned double numerator ud is divided by an unsigned
  3937.         single denominator un to produce an unsigned quotient and
  3938.         unsigned remainder.  The quotient is at the top of the stack.
  3939.  
  3940. UNBUG   ( -- )                  DEBUG
  3941.         Remove the debug point currently in place.
  3942.  
  3943. UNDEFER ( | <name> -- )         DEFERS
  3944.         This is sort of an undo for DEFERS.  UNDEFER removes one level
  3945.         from the chain of a defered word.  Must be used with EXTREME
  3946.         caution, as there is no protection from trying to use it at the
  3947.         wrong time in the wrong place.  YOU ARE ON YOUR OWN with this
  3948.         one.  See also DEFERS above.
  3949.  
  3950. UNDO    ( --- )                 KERNEL1
  3951.         Cleans up the return stack so we can EXIT from the current loop
  3952.         without crashing, as in DO and "UN"DO.
  3953.  
  3954. UNEDIT  ( --- )                 TOPEDIT
  3955.         The word that gets plugged into CLEARMEM, which de-allocates
  3956.         the memory used by the editor during an edit session.  This is
  3957.         needed in the case where you want to spawn a DOS shell, as the
  3958.         SED editor consumes all of the available memory during an edit.
  3959.  
  3960. UNINSTALL ( --- )               INSTALL
  3961.         Mark the F-PC currently in memory as un-installed. A subequent
  3962.         FSAVE will result in a system that comes up with the
  3963.         UN-installed message in HELLO.
  3964.  
  3965. UNINSTALLSTUFF ( --- )          UTILS
  3966.         A DEFERed word that is executed by UNINSTALL. Typically
  3967.         contains a chain of function to perform during the un-install
  3968.         process.
  3969.  
  3970. UNNEST  ( --- )                 KERNEL1
  3971.         Same as exit.  Compiled by ; to help decompiling.
  3972.  
  3973. UNTIL   ( f1 -- )               KERNEL3
  3974.         Marks end of a BEGIN ... UNTIL loop; terminate if flag boolean
  3975.         is true.
  3976.  
  3977. UP      ( --- a1 )              KERNEL1
  3978.         Holds a pointer to the current USER area. ( multitasking )
  3979.  
  3980. UPC     ( char --- char' )      KERNEL2
  3981.         Convert a Char to upper Case
  3982.  
  3983. UPPER   ( a1 length --- )       KERNEL2
  3984.         Take the string at the specified address and convert length
  3985.         characters of it to upper case.  It converts the string in
  3986.         place, so be sure to make a copy of the original if you need to
  3987.         use it later.
  3988.  
  3989. USED    ( | <command_line> --- )UTILS
  3990.         A word which calls USED! to save the current values of DP, XDP,
  3991.         and YDP.  USED then executes the command line following, and
  3992.         calculates the space used by the command line and displays the
  3993.         results.  USED is used as follows:   USED FLOAD MYFILE <enter>
  3994.  
  3995. USEDIN  ( | <name> --- )        REF
  3996.         An ALIAS for REF, this word looks through the dictionary and
  3997.         finds words which use <name>, the names are then displayed.
  3998.  
  3999. USER    ( --- )                 KERNEL4
  4000.         VOCABULARY that holds multi tasking  versions of defining
  4001.         words.
  4002.  
  4003. USER    ( | <name> --- )        KERNEL4
  4004.         Vocabulary that holds task versions of defining words.
  4005.  
  4006. VALUE   ( n1 | <name> --- )     KERNEL3
  4007.         Create <name> as a word which like a CONSTANT return its value,
  4008.         but which unlike a constant can be changed with the words: =:,
  4009.         !>, INCR>, DECR>, OFF>, ON>, +!>. Values provide a more
  4010.         readable source code than VARIABLES, and an improvement in
  4011.         performance as well.
  4012.  
  4013. VARIABLE ( | <name> -- )        KERNEL3
  4014.         A defining word to create variables. At runtime the address of
  4015.         the variable is placed on the stack.
  4016.  
  4017. VIDEO-SEG ( --- a1 )            VIDEO
  4018.         A variable that holds the segment value of the display screen.
  4019.  
  4020. VIDEO-TYPE ( a1 n1 --- )        VIDEO2
  4021.         The VERY FAST direct screen type routine, displays the string
  4022.         starting at address a1 for length n1 at the current cursor
  4023.         position specified by #LINE and #OUT. #OUT is incremented by
  4024.         n1.  The variable NOSETCUR holds a flag that controls whether
  4025.         VIDEO-TYPE should actually move the cursor during the type.
  4026.         VIDEO-TYPE is much faster if NOSETCUR is TRUE, but then the
  4027.         cursor must be set later with an AT or TYPE with
  4028.         NOSETCUR=FALSE. This TRICK allows F-PC to re-display 10 full
  4029.         text screens per second on an XT (4.7mhz) class machine.
  4030.  
  4031. VIEW    ( | <name> --- )        VIEW
  4032.         A DEFERED word that contains either DOVIEW, or HELPVIEW. View
  4033.         the source for <name>.
  4034.  
  4035. VIEW>   ( vfa -- cfa )          KERNEL3
  4036.         Go from view field address vfa to code field address cfa.
  4037.  
  4038. VIEWLINES ( n1 n2 --- )         VIEW
  4039.         n1 lines to view, n2 line to underline.
  4040.  
  4041. VIEWPATH ( --- a1 )             PATHSET
  4042.         A handle that holds the path for the compiled files in F-PC.
  4043.  
  4044. VMODE-VAR ( --- a1 )            VIDEO
  4045.         A VARIABLE that holds the video mode that was obtained at
  4046.         system startup. See the IBM or Mictosoft documentation for
  4047.         further information on the various video modes.
  4048.  
  4049. VMODE.SET ( --- )               VIDEO
  4050.         Set the VIDEO-SEG variable after testing the current video
  4051.         mode, and perform any needed initialization required by
  4052.         executing the INITMONO, or INITCOLOR as needed.
  4053.  
  4054. VOC-LINK ( --- a1 )             KERNEL2
  4055.          Points to the most recently defined vocabulary.
  4056.  
  4057. VOCABULARY ( | <name> -- )      KERNEL3
  4058.         Defines a new Forth vocabulary <name>.
  4059.  
  4060. W.NAME  ( NFA --- )             WORDS
  4061.         Print name of word NFA. Test to see if conditions are correct,
  4062.         like CODE, or ALL, or WITHIN, and print name.
  4063.  
  4064. WARM    ( -- )                  KERNEL4
  4065.         The WARM entry point for Forth, just calles the DEFERed word
  4066.         WARMFUNC, then calls BYE is WARMFUNC returns. A WARM start is
  4067.         invoked whenever the CONTROL BREAK key is pressed.
  4068.  
  4069. WARMFUNC ( --- )                KERNEL4
  4070.         A DEFERed word that is invoked when a warm start occurs. This
  4071.         function is called whenever the CONTROL BREAK key is pressed.
  4072.  
  4073. WARMSTRT ( -- )                 KERNEL4
  4074.         The default function to be performed on a WARM start.  This
  4075.         word is plugged into the DEFERed word WARMFUNC, to specify what
  4076.         is done when the CONTROL BREAK key is pressed.  See also
  4077.         WARMFUNC and WARM.
  4078.  
  4079. WARNING ( --- a1 )              KERNEL2
  4080.         A VARIABLE that holds a boolean flag that determines if you
  4081.         should be warned in the event you re-define a definition name.
  4082.  
  4083. WARNOVER ( --- )                KERNEL3
  4084.         A warning message that is issued by ?STACK in the event you are
  4085.         close to running out of CODE memory.
  4086.  
  4087. WHILE   ( f1 -- )               KERNEL3
  4088.         Used in the form  BEGIN <loop> flag WHILE <true> REPEAT. Repeat
  4089.         <loop> and <true> clauses while the flag f1 is true (really,
  4090.         non-zero).
  4091.  
  4092. WHITE   ( --- n1 )              COLOR
  4093.         A CONSTANT that return the value for the color white on a color
  4094.         display. White will blink if used in the background.
  4095.  
  4096. WHITE-ON-BLACK ( --- )          MONOCROM
  4097.         Selects the normal display mode of light characters on a dark
  4098.         background.  The opposite mode is BLACK-ON-WHITE.
  4099.  
  4100. WIDTH   ( --- a1 )              KERNEL2
  4101.         Number of characters to keep in name field.
  4102.  
  4103. WITHIN  ( n1 n2 --- f1 )        KERNEL1
  4104.         Return true if min <= n1 < max, otherwise false.
  4105.  
  4106. WITHPATH ( --- f1 )              SEQREAD
  4107.         A boolean VALUE that returns a true flag if the file path is to
  4108.         be included in the name of the variable that gets compiled by
  4109.         LOADED, when adding a new file the loaded file list in the
  4110.         FILES vocabulary. WITHPATH is normally true, so user loaded
  4111.         files can be located in whatever directory they are in.
  4112.         WITHPATH is set to FALSE when compiling the system which allows
  4113.         the VIEWPATH to be applied to system files and have their
  4114.         location specified at installation time.
  4115.  
  4116. WORD    ( C1 --- A1 )           KERNEL2
  4117.         Parse the input stream for char and return a count delimited
  4118.         string at here.  Note there is always a blank following it.
  4119.  
  4120. WORDS   ( | <text> <text> -- )  WORDS
  4121.         Display words that match text. <text> is optional, if ommited
  4122.         then the CONTEXT vocabulary will be displayed.  Two space
  4123.         delimited <text> strings may follow, and only words containing
  4124.         both <text> strings will be printed:
  4125.  
  4126. X,      ( n1 --- )              KERNEL2
  4127.         Compile the value n1 into LIST space into the next available
  4128.         address as specified by XDPSEG and XDP.  XDP is incremented by
  4129.         two.
  4130.  
  4131. X,"     ( | <string>" --- )     KERNEL3
  4132.         A " delimited string from the input stream is compiled into
  4133.         LIST space.  This word is used by ." and "" .
  4134.  
  4135. X>"BUF  ( --- "BUF )            KERNEL3
  4136.         This word is compiled by the "" word, it moves the string
  4137.         compiled into LIST space from LIST space to CODE space in the
  4138.         "BUF buffer. The address of "BUF is then returned on the stack.
  4139.  
  4140. XALIGN  ( --- )                 KERNEL3
  4141.         Align XDP to the next higher even value. This word is not
  4142.         currently used in F-PC.
  4143.  
  4144. XC,     ( n1 --- )              KERNEL2
  4145.         Compile n1 into the next available byte in LIST space. XDP is
  4146.         incremented by one.
  4147.  
  4148. XDP     ( --- a1 )              KERNEL2
  4149.         A VARIABLE that holds the offset into the XDPSEG where the next
  4150.         word in a colon definition will be compiled.  F-PC always
  4151.         aligns colon definitions to the next higher segment boundry at
  4152.         the start of a new definition, causing XDP to equal zero.
  4153.  
  4154. XDPSEG  ( --- a1 )              KERNEL2
  4155.         A VARIABLE that holds the current absolute segment where the
  4156.         next colon definition will be compiled.
  4157.  
  4158. XDUMP   ( a1 n1 --- )           DUMP
  4159.         DUMP an area of memory in the LIST segment.  A1 is a relative
  4160.         segment offset from XSEG, and n1 is the length to dump in
  4161.         bytes. This is normally used as follows:   ' HEX >BODY @ 10
  4162.         XDUMP
  4163.  
  4164. XEVEN   ( a1 --- a2 )           KERNEL3
  4165.         LIST space is aligned on WORD boundries in F-PC, this word
  4166.         aligns a1 to the next higher even address a2.
  4167.  
  4168. XFDOS   ( ?? --- ?? )           KERNEL2
  4169.         call INT 21 with most any reg combination used. See the souce
  4170.         for this word in the KERNEL for more information on how to use
  4171.         it.
  4172.  
  4173. XHERE   ( --- seg n1 )          KERNEL2
  4174.         HERE for LIST space, returns the absolute segment SEG and the
  4175.         offset into that segment n1 of HERE in LIST space.
  4176.  
  4177. XOR     ( n1 n2 --- n3 )        KERNEL1
  4178.         Returns the bitwise Exclusive Or of n1 and n2 on the stack.
  4179.  
  4180. XREF    ( | <name> --- )        REF
  4181.         An ALIAS for REF, this word looks through the dictionary and
  4182.         finds words which use <name>, the names are then displayed.
  4183.  
  4184. XSEG    ( --- a1 )              KERNEL1
  4185.         A system variable that holds the  current absolute segment of
  4186.         the LIST area.
  4187.  
  4188. Y!      ( n1 a1 --- )           KERNEL2
  4189.         Store the value n1 into the address a1 in HEAD space.
  4190.  
  4191. Y,      ( n1 --- )              KERNEL2
  4192.         Compile the value n1 into the next available location in HEAD
  4193.         space.  YDP is incremented by two.
  4194.  
  4195. Y-M-D   ( --- )                 TIMER
  4196.         Switch the system to using the date format Year-Month-Day.
  4197.  
  4198. Y@      ( a1 --- n1 )           KERNEL2
  4199.         Fetch the 16 bit contents of a1 in HEAD space and return it as
  4200.         n1.
  4201.  
  4202. YC!     ( n1 a1 --- )           KERNEL2
  4203.         Store the byte value n1 into address a1 in HEAD space.
  4204.  
  4205. YC@     ( a1 --- n1 )           KERNEL2
  4206.         Fetch the byte contents of a1 in HEAD space, and return it as
  4207.         n1.
  4208.  
  4209. YCOUNT  ( a1 --- a2 n1 )        UTILS
  4210.         The byte at a1 in HEAD space is returned as n1, and a2=a1+1.
  4211.  
  4212. YCSET   ( byte a1 --- )         KERNEL2
  4213.         The byte located at a1 in HEAD space is ored with byte, and the
  4214.         result is saved back into addr.
  4215.  
  4216. YDP     ( --- a1 )              KERNEL2
  4217.         A variable that holds the address in HEAD space of the next
  4218.         available byte.
  4219.  
  4220. YDUMP   ( A1 N1 --- )           DUMP
  4221.         Dump an area of the HEAD segment.
  4222.  
  4223. YELLOW  ( --- n1 )              COLOR
  4224.         The color value for YELLOW on a color monitor. Yellow blinks
  4225.         when used in background.
  4226.  
  4227. YHASH   ( yname vocaddr --- thre) KERNEL2
  4228.         Using the name address in HEAD space, and the vocabulary
  4229.         address, determine the address thread in the vocabulary that
  4230.         yname should go into.  Used by HIDE and REVEAL.
  4231.  
  4232. YHERE   ( --- a1 )              KERNEL2
  4233.         Push the contents of YDP the new HEAD pointer on the stack.
  4234.  
  4235. YS:     ( a1 --- yseg a1 )      KERNEL2
  4236.         Place a copy of the current HEAD segment under the address a1
  4237.         on the stack.
  4238.  
  4239. YSEG    ( -- a1 )               KERNEL1
  4240.         A variable which holds the base of Head space.
  4241.  
  4242. YSTART  ( --- a1 )              KERNEL2
  4243.         System variable, If non-zero, ptr to start of headers after
  4244.         dictionary. Used to set DP in when SAVE-SYSTEM is used in
  4245.         making a .COM file.
  4246.  
  4247. [       ( -- )                  KERNEL3
  4248.         Stop compiling and start interpreting.
  4249.  
  4250. [']     ( | <name> -- )         KERNEL3
  4251.         Compile the CFA of <name> as a literal in a colon definition.
  4252.         Like ' only used while compiling
  4253.  
  4254. [COMPILE] ( | <name> -- )       KERNEL3
  4255.         Force <name> which is normally an immediate word to be compiled
  4256.         like any other word.
  4257.  
  4258. \       ( -- )                  KERNEL4
  4259.        This line is a comment till the end of this line, and any text
  4260.         after the \ is ignored.
  4261.  
  4262. \S      ( n1 --- )              SEQREAD
  4263.         Stop loading the current file with the line that contains this
  4264.         word.
  4265.  
  4266. \UNLESS ( | <name> --- )        UTILS
  4267.         An immediate word, dont load this line  of source UNLESS <name>
  4268.         is defined, that is treat this line as a comment if <name> is
  4269.         not defined.
  4270.  
  4271. ]       ( -- )                  KERNEL3
  4272.         The Compiling Loop. First sets Compile State. Looks up the next
  4273.         word in the input stream and either executes it or compiles it
  4274.         depending upon whether or not it is immediate. If the word is
  4275.         not in the dictionary, it converts it to a number, either
  4276.         single or double precision depending on whether or not any
  4277.         punctuation was present. Continues until input stream is empty
  4278.         or state changes.
  4279.  
  4280. `       ( command --- )         EXEC
  4281.         A pseudonym for SYS. See also SYS.
  4282.  
  4283.