home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / soundpot / f / figforth.lbr / FORTH.SZR / FORTH.SCR
Encoding:
Text File  |  1993-10-26  |  150.0 KB  |  1 lines

  1.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ( MOVE & CLEAR                            BOB 4-AUG-83          )                                                               : MOVE-SCR                                                              SWAP BLOCK 2 - ! UPDATE FLUSH ;                         : CLEAR-SCR                                                             DUP SCR ! BLOCK 1024 BLANKS UPDATE FLUSH ;              : -ROT                                                                  ROT ROT ;                                               11 LOAD    ( LOAD WORDS )                                       : LOAD-THRU                                                             1+ SWAP DO                                                              I LOAD                                                  LOOP ;                                                  ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ ERROR MESSAGES )                        BOB 7-AUG-83          EMPTY STACK                                                     DICTIONARY FULL                                                 HAS INCORRECT ADDRESS MODE                                      ISN'T UNIQUE                                                                                                                    DISK RANGE ?                                                    FULL STACK                                                      DISK ERROR !                                                                                                                    CAN'T OPEN FILE                                                                                                                 PATCH ERROR                                                                                                                                                                                     8080 FIG-FORTH FOR THE KAYPRO II                                ( ERROR MESSAGES )                        BOB                   COMPILATION ONLY, USE IN DEFFINATION                            EXECUTION ONLY                                                  CONDITIONALS NOT PAIRED                                         DEFINITION NOT FINISHED                                         IN PROTECTED DICTIONARY                                         USE ONLY WHEN LOADING                                           OFF CURRENT EDITING SCREEN                                      DECLARE VOCABULARY                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               EDITOR HELP SCREEN   < KEY-PAD MAP >     BOB 09/19/83          ARROW-KEYS - MOVE ONE POSITION IN THE DIRECTION                 ^ V <- ->    INDICATED             '^P' - Prints the screen     ------------------------------------------------------------    |   Toggle    |   Move Up    |Clear ( Kill )| Delete Line  |    | Insert Mode |   4 Lines    |   Screen     |( Into Buffer)|    ------------------------------------------------------------    |  Move Left  |Yank Back Line|  Move Right  |    Delete    |    |   One Word  |( From Buffer)|   One Word   |     Word     |    ------------------------------------------------------------    |   Delete    |  Move Down   |    Clear     |   Exit The   |    |  Character  |   4 Lines    |    Line      |    Editor    |    ---------------------------------------------     And      |    |       Insert Line          | Exit Editor  |    Write To  |    |                            |  No Update   |   The Disk   |    ------------------------------------------------------------    \ MAGIC INCANTATION TO ADD TO FORTH       BOB                   DECIMAL                                                         HERE FENCE !                                                    HERE 28 +ORIGIN !                                               HERE 30 +ORIGIN !                                               LATEST 12 +ORIGIN !                                             ' FORTH 6 + 32 +ORIGIN !                                        ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ( LOAD STATUS                             BOB   AUG-83          )                                                               12 LOAD ( NEW-FORGET )                                          13 LOAD ( PATCH )                                               14 LOAD ( CRT )                                                 15 LOAD ( S. )                                                  16 LOAD ( SQUIT )                                               17 LOAD ( WHERE )                                               18 LOAD ( ERR )                                                 7 LOAD ( MAGIC )                                                PATCH SQUIT QUIT                                                PATCH NEW-FORGET FORGET                                         PATCH ERR ERROR                                                 ;S                                                                                                                                                                                              ( L+ / LOAD WITH PRINT OF FIRST LINE      BOB 5-AUG-83          )                                                               : LOAD ." LOADING " DUP DECIMAL . CR                                    DUP 0 SWAP .LINE CR LOAD CR ;                           : NL SCR @ 1+ LIST ;                                            : -L SCR @ 1 - LIST ;                                           : CLEAR-THRU                                                            1+ SWAP DO                                                              I BLOCK 1024 BLANKS UPDATE                              LOOP FLUSH ;                                            ;S                                                                                                                                                                                                                                                                                                                                                                                              \ NEW-FORGET                              BOB 5-AUG-83          \ NEEDED TO FIX FORGET SO THAT A FENCE ABOVE 32000              \ DOES NOT FIGURE AS A NEGITIVE IE. YOU CAN'T FORGET            \ WORDS ABOVE 32000                                             HEX                                                             : NEW-FORGET                                                            CURRENT @ CONTEXT @ - 18 ?ERROR [COMPILE] '                     DUP FENCE @ U< 15 ?ERROR DUP NFA DP !                           LFA @ CURRENT @ ! ;                                     DECIMAL                                                         : ERASE-DATE                                                            BLOCK 40 + 24 BLANKS UPDATE ;                           ;S                                                                                                                                                                                                                                                              \  PATCH                                  BOB 09/19/83          DECIMAL                                                         : GET-TWO-CFA'S  ( ----- CFA1 CFA2 )                               [COMPILE] ' CFA [COMPILE] ' CFA ;                            : PATCH                                                           GET-TWO-CFA'S DUP @ ' : CFA @ =                                   IF 2+ DUP -ROT ! ' ;S CFA SWAP 2+ !                            ELSE 12 ERROR QUIT                                            THEN ;                                                         ;S                                                              This word ( patch ) allows you to replace an already existing   word without having to re-compile. It puts a call to the        new word at the start of the old word.                                                                                                                                                                                                                          \ CRT FUNCTIONS                           RWB 6-AUG-83          HEX                                                             : XYCRT 1B EMIT 3D EMIT 20 + EMIT 20 + EMIT ;                   : HOME 1E EMIT ;                                                : CLEAR-LINE 18 EMIT ;                                          : HOME&CLEAR 1A EMIT ;                                          : CLEAR 17 EMIT ;                                               : INSERT-LINE 1B EMIT 45 EMIT ;                                 DECIMAL                                                         : RETURN 0 22 XYCRT ;                                           ;S                                                              These are the crt control words for the KAYPRO II.                                                                                                                                                                                                                                                                              \ S. BASE.                                BOB 09/20/83          DECIMAL                                                         : OCTAL 8 BASE ! ;                                              : BINARY 2 BASE ! ;                                             : S. DEPTH IF                                                           SP@ 2 - S0 @ 2 - DO I @ . -2 +LOOP                                      ELSE ." EMPTY STACK " THEN ;                    : BASE. BASE @ DUP DECIMAL ." BASE = " . BASE ! ;               : $ HEX ; IMMEDIATE : % DECIMAL ; IMMEDIATE                     : | OCTAL ; IMMEDIATE : ~ BINARY ; IMMEDIATE                    : NOT $ FFFF % XOR ;                                            : -! DUP @ ROT - SWAP ! ;                                       : .VOC                                                                  CONTEXT @ 4 - NFA ID. ;                                 ;S                                                              These words provided by Kevin Appert                            \ STATUS                                  RWB 6-AUG-83          : STATUS CR HOME CLEAR-LINE S. ."   " BASE.                             ."    " .VOC CR CLEAR-LINE RETURN ;                     : SQUIT 0 BLK ! [COMPILE] [                                             BEGIN RP! CR QUERY INTERPRET STATE @ 0=                                 IF ." OK " THEN                                         STATUS                                                  AGAIN ;                                                         ;S                                                              These are the words that print the stack, base and vocabulary at the top of the screen in a "window" made by homming the cursor and clearing the second line.  This status display is invaluable for debugging programs, and was done with the help of Kevin.                                                                                                                                                                                                   \ WHERE                                   BOB 09/19/83          HEX   0 VARIABLE ERRLOC                                         : WHERE BLK @                                                           IF BLK @ DUP SCR ! CR CR ." SCR# "                               DUP . IN @ 3FF MIN DUP ERRLOC ! C/L /MOD DUP                    ." LINE# " . C/L * ROT BLOCK +                                  CR CR C/L -TRAILING TYPE IN @ 3FFF > +                         ELSE IN @                                                       THEN CR HERE C@ DUP DUP 1+ ERRLOC -! >R - HERE R + 1+           C@ 20 = IF 1- THEN SPACES R> 0 DO 5E EMIT LOOP ;        DECIMAL ;S                                                      This word finds where an error in compilation occurrs and       underlines it.  This makes it very easy to de-bug code.                                                                                                                                                                                                         \ ERR OOPS                                BOB 7-AUG-83          HEX                                                             : ERR WARNING @ 0< IF (ABORT) THEN WHERE CR ." HUH?"               CR MESSAGE SP! BLK @ -DUP IF IN @ SWAP THEN SQUIT ;          : OOPS SWAP DROP EDITOR E-INIT ERRLOC @ MOVE-CURSOR                     BEGIN DISPLAY-STATUS 0 MOVE-CURSOR &MODE @ IF                   E-INSERT ELSE E-OVERSTRIKE ENDIF AGAIN ;                FORTH DEFINITIONS DECIMAL ;S                                    Err repalces error and uses where to find and underline the     misstake.                                                       Opps puts you in the editor and positions the cursor at the     error.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \ PPA-CP/M                                RWB 6-AUG-83          : FCB <BUILDS 37 HERE OVER ERASE ALLOT DOES> ;                  : SET-DMA 26 SWAP FDOS DROP DROP ;                              : READ-SEC SET-DMA 20 SWAP FDOS DROP ;                          : WRITE-SEC SET-DMA 21 SWAP FDOS DROP IF                                8 ERROR THEN ;                                          : OPEN/MAKE DUP 15 SWAP FDOS DROP 255 =                                 IF 22 SWAP FDOS DROP 255 =                                             10 ?ERROR                                                ELSE DROP THEN ;                                        FCB PPA-FILE                                                    : CLOSE-FILE 16 SWAP FDOS DROP 255 = 8 ?ERROR ;                 : OPEN-FILE 15 SWAP FDOS DROP 255 = 10 ?ERROR ;                 : ZERO-CR 32 + 0 SWAP ! ;                                       : RESET-DISKS 13 0 FDOS DROP DROP OPENDIR ;                     ;S  These are CP/M Control words                                \ FILENAME                                BOB 7-AUG-83          : FILENAME ( FCB ADDRESS | FILENAME | <NAMETEXT> )                      DUP 37 ERASE DUP 2 SWAP ! 1+ DUP 11 BLANKS                      BLK @ IF BLK @ BLOCK ELSE TIB @ ENDIF IN @ +                    8 0 DO DUP C@ DUP                                               46 = IF DROP LEAVE ELSE                                         DUP 33 < IF DROP LEAVE                                          ELSE ROT DUP I + ROT SWAP C! SWAP 1+ 1 IN +!                    THEN THEN LOOP DUP C@ 46 =                                      IF SWAP 8 + SWAP 1+ 1 IN +! 3 0 DO DUP C@                       DUP 33 < IF DROP LEAVE ELSE ROT DUP I + ROT                     SWAP C! SWAP 1+ 1 IN +! ENDIF LOOP ENDIF                        DROP DROP ;                                             ;S                                                              This word makes a CP/M File Name.                               ****** ON DISK B ONLY ! ******                                  \ CP/M                                    RWB 6-AUG-83          VOCABULARY CP/M IMMEDIATE                                       CP/M DEFINITIONS DECIMAL                                        25 LOAD                                                         26 LOAD                                                         FORTH DEFINITIONS DECIMAL                                       ;S                                                              This word loads and makes the vocabulary CP/M containing the    CP/M control words.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \ STORE                                   BOB 7-AUG-83          : STORE   (S CHAR --- CHAR )                                            DUP 10 <> IF DUP LOG-POINTER @ LOG-BUFF + C!                    LOG-POINTER @ 1+ DUP 128 = IF                                           LFILE LOG-BUFF CP/M WRITE-SEC                                   DROP 0 THEN                                             LOG-POINTER ! THEN ;                                    ;S                                                              This word stores what was written on the crt to disk b in a file called FORTH.LOG.                                                                                                                                                                                                                                                                                                                                                                                                                                              \ LEMIT                                   RWB 6-AUG-83          HEX                                                             : LEMIT                                                                 7F AND STORE PEMIT 1 OUT +! ;                           DECIMAL                                                         ;S                                                              This word replaces EMIT to write to the log file.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \ LOG                                     BOB 7-AUG-83          VOCABULARY LOG IMMEDIATE                                        LOG DEFINITIONS DECIMAL                                         0 VARIABLE LOG-BUFF 128 ALLOT                                   0 VARIABLE LOG-POINTER                                          CP/M FCB LFILE                                                  LFILE FILENAME FORTH.LOG                                        30 LOAD                                                         31 LOAD                                                         FORTH DEFINITIONS DECIMAL                                       : START-LOG                                                             CP/M RESET-DISKS LOG LFILE CP/M OPEN/MAKE                       LOG LFILE CP/M ZERO-CR LOG ' LEMIT CFA TEMIT ! ;        : END-LOG                                                               LOG LFILE CP/M CLOSE-FILE CRT-ENABLE ;                  ;S      These turn on and off the log words.                    \ BACK UP THE DISK                        RWB 6-AUG-83          : ?EMPTY-SCR                                                            BLOCK C/L -TRAILING SWAP DROP 0= ;                      : BACK-UP-DISK                                                          150 1 DO                                                                I DUP CR . ?EMPTY-SCR IF                                                ." NOT COPIED "                                         ELSE                                                                    ." COPIED" I DUP 150 + MOVE-SCR                         THEN                                                    LOOP ;                                                  ;S                                                              This word copies any screen with something written in the first line to disk b.  This backs up all screens most efficiently.                                                                                                                                    \ TRIAD-THRU                              BOB 09/19/83          : TRIAD-THRU    (S FIRST SCREEN | LAST SCREEN --- )                     1+ SWAP DO                                                              I TRIAD                                                 3 +LOOP ;                                               ;S                                                              This word allows you to print a range of screens in groups of   threes ( triads ). This is helpful for documentation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     RWB 6-AUG-83                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \ MAKE NEW SCR FILE                       BOB 7-AUG-83          0 VARIABLE NEW-DMA 128 ALLOT NEW-DMA 128 BLANKS                 CP/M FCB NEW-FILE                                               NEW-FILE CP/M FILENAME FORTH.SCR                                : MAKE-NEW                                                      ." PUT THE DISK YOU WANT TO MAKE A SCREEN FILE"                 CR ." ON IN DISK B HIT ANY KEY WHEN READY"                      CR ." *** DISK B MUST HAVE AT LEAST 150 K LEFT ***"             CR ." *** AND NO FORTH.SCR FILE ***"                            KEY DROP                                                        NEW-FILE CP/M OPEN/MAKE                                         1200 0 DO NEW-FILE NEW-DMA WRITE-SEC LOOP                       NEW-FILE CP/M CLOSE-FILE ;                                      ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ( FORTH EXTENSIONS                        RWB   AUG-83          )                                                               : EXTENSIONS ;                                                  2 LOAD                                                          61 97 LOAD-THRU         \ EDITOR LOAD SCREENS                   10 LOAD                 \ OOPS SQUIT ETC.                       102 LOAD                \ DECOMPILER                            27 LOAD                 \ CP/M                                  108 LOAD                \ ASSEMBLER                             7 LOAD                  \ MAGIC INCANTATION                     ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ SCREEN ORIENTED EDITOR                  BOB 09/19/83          \                                                               \ FROM Dr. Dobb's Journal                                       \ NUMBER 59 , SEPTEMBER 1981                                    \                                                               \ BY Henery Laxen                                               \    1259 Cornell Ave.                                          \    Berkley, California 94706                                  \    ( 415 ) 525-8582                                           \                                                               \ At least it started life as this editor                       \ I've only commented the code I've changed                     \ For a description of the hows and why-fors of                 \ the remainder I suggest you read Dr. Dobb's.                  ;S                                                                                                                              ( EDITOR SCREEN 1       BYE               BOB 09/19/83          )                                                               : BYE   ( --- )                                                         FLUSH   ( Clear all the screen buffers )                        HERE 256 / 1+   ( find out how big FORTH is )                                   ( in CP/M records [ 256 bytes ] )               CR ." Forth is " . ." Records Long"     ( tell us )             CR ." LEAVING FORTH Have A Nice Day "   ( say goodbye )         BYE ;   ( call the regular FORTH BYE )                  ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                              ( EDITOR SCREEN 2     UTILITIES           BOB 5-AUG-83          )                                                                : BEEP 7 EMIT ;                                                 : MAKET <BUILDS DOES> ;                                         : \ IN @ C/L / 1+ C/L * IN ! ; IMMEDIATE                        : DEPTH  SP@ S0 @ SWAP - 2 / 0 MAX ;                            : (S  41 WORD ; IMMEDIATE                                       : (P  41 WORD ; IMMEDIATE                                       : L  DEPTH IF DUP SCR ! ELSE SCR @ ENDIF LIST ;                ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 3                         BOB 5-AUG-83          : 2DROP  DROP DROP ;                                            : 2*  DUP + ;                                                   : BOUNDS  OVER + SWAP ;                                         : BMOVE  -DUP IF >R R + 1 - SWAP 1 -  R> BOUNDS SWAP DO            I C@ OVER C! 1 - -1 +LOOP DROP ELSE 2DROP ENDIF ;            : MOVE  ROT ROT 2DUP U< IF ROT BMOVE ELSE ROT CMOVE ENDIF ;     : 1-  1 - ;                                                     : 2-  2 - ;                                                     ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 4                         BOB 5-AUG-83          : >=  < 0= ;                                                    : <>  = 0= ;                                                    : <=  > 0= ;                                                    : U>  SWAP U< ;                                                 : RE-FORTH  IN @ >R  BLK @ >R  0 IN ! 0 BLK !                           QUERY INTERPRET                                            R> BLK !  R> IN ! ;                                          : ?DUP  -DUP ;                                                  ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 5       -TIDY             BOB 5-AUG-83          : CASE:  <BUILDS  ] SMUDGE DOES>  SWAP 2* + @ EXECUTE ;         \ I didn't use this version of case                             : -TIDY  BOUNDS DO I C@ BL < IF BL I C! ENDIF LOOP ;            ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 6       RAW KEY           BOB 09/19/83          HEX                                                             : RAW-KEY                                                               BEGIN   7 P@ 1 AND UNTIL 5 P@ ;                         DECIMAL                                                         ;S                                                              This word simply reads the keybord of my KAYPRO II              without going through CP/M.  This way I can define the          keypad and arrow keys to perform the functions of the editor.                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \ EDITOR SCREEN 7       CASE              BOB 5-AUG-83          : CASE                                                                 ?COMP CSP @ !CSP 4 ; IMMEDIATE                           : OF                                                                    4 ?PAIRS COMPILE OVER COMPILE = COMPILE 0BRANCH                 HERE 0 , COMPILE DROP 5 ; IMMEDIATE                     : ENDOF                                                                 5 ?PAIRS COMPILE BRANCH HERE 0 ,                                SWAP 2 [COMPILE] ENDIF 4 ; IMMEDIATE                    : ENDCASE                                                               4 ?PAIRS COMPILE DROP BEGIN SP@ CSP @ = 0=                      WHILE 2 [COMPILE] ENDIF REPEAT  CSP ! ; IMMEDIATE       ;S                                                              For an example of how to use these words, see screen 91.                                                                                                                                        \ EDITOR SCREEN 8       &EID              BOB 5-AUG-83          CR                                                              ." ENTER YOUR INITALS IN THREE LETTERS "                        &EID 4 EXPECT                                                   ;S                                                              This screen puts your initals in &EID.                          This way you only have to do it once.  The date is added        in COLD. The editor then stamps them in the upper right         corner of the screen each time you update the screen.                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \ EDITOR SCREEN 9       PRINTER WORDS     BOB 09/19/83          : PRINTER-EMIT  (S CHAR --- TO PRINTER )                                05 SWAP FDOS DROP DROP ;                                : BOTH-EMIT     (S CHAR --- TO PRINTER AND CRT )                        DUP PRINTER-EMIT PEMIT ;                                : PRINTER-ENABLE        (S --- )                                        ' PRINTER-EMIT CFA TEMIT ! ;                            : CRT-ENABLE    (S --- )                                                ' PEMIT CFA TEMIT ! ;                                   : BOTH-ENABLE ' BOTH-EMIT CFA TEMIT ! ; ;S                      My version of FORTH differs from standard 8080 FIG-FORTH in thatI am using vectored execution I/O.  The user variable TEMIT     contains the CFA of the word to use, and all EMIT does is       TEMIT @ EXECUTE.  FDOS is another deviation.  It is a call to   0005H ( CP/M ).  I tried to be compatable with Z-80 FORTH.      the use is ( function # / DE registers ---  A reg. / HL reg. )  \ EDITOR SCREEN 10      MORE PRINTER      BOB 5-AUG-83          : ^P    (P Toggle the printer on / off )                                TEMIT @ ' PEMIT CFA = IF                                                BOTH-ENABLE                                                     ELSE CRT-ENABLE                                         THEN ;                                                  : BURP  (P Form-feed to the printer )                                   PRINTER-ENABLE 12 EMIT                                          CRT-ENABLE ;                                            ;S                                                              This is an attempt to be compatable with regular 8080 FIG-FORTH.After the editor has loaded, the word ^P is re-defined to be    control P .  This editor will not let you print control         charactors in the screen.                                                                                                                                                                       \ EDITOR SCREEN 11      VARIABLES         BOB 5-AUG-83          VOCABULARY EDITOR  IMMEDIATE EDITOR DEFINITIONS                 0 VARIABLE &MODE                                                0 VARIABLE &CURSOR                                              0 VARIABLE &OLD-MODE                                            0 VARIABLE &UPDATE                                              0 VARIABLE &BUF-ADR                                             0 VARIABLE LINE-BUFFER 64 ALLOT (P Used by DELETE-LINE )        0 VARIABLE OVERRUN      (P Used by INSERT-CHAR )                ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 12      FILTER            BOB 5-AUG-83          : FILTER (S --- )                                                       &EID 20 OVER + SWAP DO I C@ 0=                                          IF 32 I C! THEN LOOP ;                          ;S                                                              FILTER removes the trailing nulls from the date stamp           &EID that expect leaves behind.  You see the KAYPRO II          prints them ( the nulls ).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \ EDITOR SCREEN 13      VARIABLES         BOB 5-AUG-83          5 CONSTANT %X-OFF                                               2 CONSTANT %Y-OFF                                               B/SCR B/BUF * CONSTANT C/SCR                                    C/SCR C/L /   CONSTANT L/SCR                                    0 VARIABLE 'CRTXY                                               0 VARIABLE 'CRTCLR-SCR                                          0 VARIABLE 'CLEAR-TO-EOL                                        ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 14      CRT CALLS         BOB 5-AUG-83           :  CRTXY 'CRTXY @ EXECUTE ;                                     :  CRTCLR-SCR  'CRTCLR-SCR @ EXECUTE ;                          :  CLEAR-TO-EOL 'CLEAR-TO-EOL @ EXECUTE ;                       :  CURPOS  &CURSOR @ ;                                          :  +CURPOS  &CURSOR +! CURPOS 0 MAX                                    [ C/SCR 1- ] LITERAL MIN &CURSOR ! ;                     :  MOVE-CURSOR  +CURPOS CURPOS C/L /MOD %Y-OFF + SWAP %X-OFF + SWAP  CRTXY ;                                                   ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 15                        BOB 5-AUG-83          :  BUF-ADR  &BUF-ADR @ + ;                                      :  BUFPOS  CURPOS BUF-ADR ;                                     :  E-UPDATE  1 &UPDATE ! ;                                      :  BUF-MOVE  ROT BUF-ADR  ROT BUF-ADR ROT MOVE E-UPDATE ;       :  ?PRINTABLE  DUP 32 < SWAP 126 > OR 0= ;                      :  >LINE#  C/L / ;                                              :  LINE#>  C/L * ;                                              :  CHARS-TO-EOL  C/L MOD C/L SWAP - ;                           ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 16      DISPLAY           BOB 5-AUG-83          :  DISPLAY-TO-EOL  DUP BUF-ADR OVER CHARS-TO-EOL -TRAILING ROT         OVER + >R                                                    TYPE R> CLEAR-TO-EOL ;                                      :  ?EMPTY-LINE  LINE#> BUF-ADR C/L -TRAILING SWAP DROP 0= ;     :  DISPLAY-TO-EOS  CURPOS                                           SWAP L/SCR SWAP DO I LINE#> DUP &CURSOR !                       0 MOVE-CURSOR DISPLAY-TO-EOL LOOP                                &CURSOR !  0 MOVE-CURSOR ;                                 ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 17      EXPAND / SHRINK   BOB 5-AUG-83           :  EXPAND  DUP DUP C/L + C/SCR OVER -                                  BUF-MOVE BUF-ADR C/L BLANKS E-UPDATE ;                   :  SHRINK  DUP C/L + SWAP OVER C/SCR                                   SWAP - BUF-MOVE [ L/SCR 1- ] LITERAL                        LINE#> BUF-ADR C/L BLANKS E-UPDATE ;                         :  INSERT-LINE  [ L/SCR 1- ] LITERAL                                   ?EMPTY-LINE IF DUP EXPAND >LINE#                            DISPLAY-TO-EOS                                                      ELSE BEEP ENDIF ;                                       ;S                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 18      INSERT CHAR       BOB 09/19/83          : SCAN-2BL      (S ADDR --- # ) (P Returns the number of )              0 SWAP                  (P chars to a double space )            BUF-ADR C/SCR 1- BUF-ADR SWAP DO                                        I C@ BL = IF                                                            I 1+ C@ BL = IF                                                         DROP I 1+ LEAVE                                         THEN                                                    THEN    LOOP ;                                  ;S                                                              This word is used by INS-CHAR to find the next occurrence       of a double blank ( ie  two blanks in a row ), so it can remove them.                                                                                                                                                                                                                                                           \ EDITOR SCREEN 19      INSERT-CHAR       BOB 09/19/83          : INS-CHAR      (S CHAR POS --- )                                       DUP DUP 1+ OVER SCAN-2BL -DUP IF                                BUFPOS - DUP CURPOS C/L MOD + C/L / OVERRUN !                           BUF-MOVE BUF-ADR C!                                     ELSE BEEP DROP DROP DROP DROP THEN ;                    ;S                                                              This word works by eating double blanks.  This meens you        compress the print on that line.  In other words                JUNK   TRASH                                                    becomes,                                                         JUNK  TRASH                                                    instead of,                                                      JUNK   TRASH                                                   This word also wraps the characters that fall off of the end of the line to the next line .                                     \ EDITOR SCREEN 20      DELETE            BOB 5-AUG-83          :  DELETE-LINE  >LINE# DUP LINE#> DUP BUF-ADR LINE-BUFFER               64 CMOVE SHRINK DISPLAY-TO-EOS ;                        :  DEL-CHAR  DUP DUP 1+ SWAP OVER CHARS-TO-EOL                          BUF-MOVE DUP CHARS-TO-EOL +                                 1- BUF-ADR BL SWAP C! ;                                     : R-ARROW  1 +CURPOS ;                                          : L-ARROW  -1 +CURPOS ;                                         ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 21      YANK-BACK         BOB 5-AUG-83          : YANK-BACK     (S --- )                                                [ L/SCR 1- ] LITERAL ?EMPTY-LINE IF DUP EXPAND                          >LINE# DUP LINE#> BUF-ADR LINE-BUFFER SWAP                      64 CMOVE DISPLAY-TO-EOS                                ELSE BEEP THEN ;                                         ;S                                                              Yank-back moves the line stored in the line-buffer by del-line  into the screen at the present cursor position , and moves all  of the rest of the lines down 1 line. If the last line (line 15)is not blank , Yank-back will not work.                                                                                                                                                                                                                                                                                                                                                         \ EDITOR SCREEN 22      COMMANDS          BOB 5-AUG-83          : U-ARROW  C/L MINUS +CURPOS ;                                  : D-ARROW  C/L +CURPOS ;                                        : I-LINE  CURPOS INSERT-LINE ;                                  : D-LINE  CURPOS DELETE-LINE ;                                  : Y-BACK CURPOS YANK-BACK ;                                     : D-CHAR  CURPOS DEL-CHAR CURPOS DISPLAY-TO-EOL ;               : INSERT-MODE  &MODE 1 TOGGLE ;                                 : RETURN  CURPOS >LINE# 1+ [ L/SCR 1- ] LITERAL                         MIN LINE#> &CURSOR ! ;                                  ;S                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 23      COMMANDS          BOB 7-AUG-83          : MODE-RESTORE 27 EMIT 93 EMIT ;                                : EXIT-EDIT MODE-RESTORE  CR R> DROP R>                                 DROP R> DROP R> DROP R> DROP ;                          : EXIT-UPDATE  C/SCR MOVE-CURSOR CR CR SCR @ .                          &UPDATE @ IF FILTER (P GET THE NULLS OUT OF &EID )              &EID [ C/L 22 - ] LITERAL BUF-ADR 22 CMOVE                      ." MODIFIED" UPDATE                                             ELSE ." UNMODIFIED" ENDIF EXIT-EDIT ;                   ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 24      COMMANDS          BOB 5-AUG-83           : EXIT-SCRATCH  C/SCR MOVE-CURSOR                                      CR CR SCR ? ." Abandoned" EXIT-EDIT ;                    : E-TAB 8 CURPOS 8 MOD - +CURPOS ;                              : SCAN+=  2DUP = IF DROP 2DROP 0                                       ELSE 0 ROT ROT DO OVER I C@ = IF LEAVE                          ELSE 1+ ENDIF LOOP SWAP DROP ENDIF ;                     : SCAN+<> 2DUP = IF DROP 2DROP 0                                       ELSE 0 ROT ROT DO OVER I C@ <>                                  IF LEAVE ELSE 1+ ENDIF LOOP                                     SWAP DROP ENDIF ;                                       ;S                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 25      COMMANDS          BOB 5-AUG-83          : SCAN-= 2DUP = IF DROP 2DROP 0                                         ELSE 0 ROT ROT DO OVER I C@ = IF LEAVE                     ELSE 1- ENDIF -1 +LOOP SWAP DROP ENDIF ;                     : SCAN-<> 2DUP = IF DROP 2DROP 0                                        ELSE 0 ROT ROT DO OVER I C@ <> IF LEAVE                    ELSE 1- ENDIF -1 +LOOP SWAP DROP ENDIF ;                     : MOVE-LEFT-WORD  BL 0 BUF-ADR BUFPOS SCAN-=                            >R BL 0 BUF-ADR BUFPOS R +                                      SCAN-<> R> + >R BL 0 BUF-ADR BUFPOS R +                         SCAN-=  R> + DUP BUFPOS + C@ BL = IF 1+ ENDIF ;         ;S                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 26      COMMANDS          BOB 5-AUG-83          : MOVE-RIGHT-WORD BL [ C/SCR 1- ] LITERAL                               BUF-ADR BUFPOS SCAN+= >R BL                                [ C/SCR 1- ] LITERAL BUF-ADR BUFPOS                                  R + SCAN+<> R> + ;                                      : R-WORD  MOVE-RIGHT-WORD +CURPOS ;                             ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 27      COMMANDS          BOB 5-AUG-83           : L-WORD  MOVE-LEFT-WORD +CURPOS ;                              : DEL-CHARS  2DUP + OVER DUP CHARS-TO-EOL                              BUF-MOVE DUP CHARS-TO-EOL +                                OVER - BUF-ADR SWAP BLANKS ;                                  : D-WORD  MOVE-RIGHT-WORD CURPOS                                       BUF-ADR CURPOS CHARS-TO-EOL -TRAILING SWAP                 DROP MIN CURPOS DEL-CHARS CURPOS DISPLAY-TO-EOL ;             : U-TAB 4 C/L * MINUS +CURPOS ;                                : PRINT-SCR     (S --- ) (P PRINTS OUT THE SCREEN )                     BURP PRINTER-ENABLE SCR @                                       LIST CRT-ENABLE ;                                       ;S                                                                                                                                                                                                                                                              \ EDITOR SCREEN 28      COMMANDS          BOB 5-AUG-83           : D-TAB 4 C/L * +CURPOS ;                                       : CLR-SCREEN 0 &CURSOR ! CURPOS                                        BUF-ADR C/SCR BLANKS 0 DISPLAY-TO-EOS                      E-UPDATE ;                                                    : DISPLAY-STATUS  &MODE @ &OLD-MODE @                                  <> IF 40 0 CRTXY &MODE @ IF ." INSERT ON"                  ELSE 9 SPACES ENDIF &MODE @ &OLD-MODE ! ENDIF                        CURPOS C/L /MOD 35 0 CRTXY 2 .R                                 28 0 CRTXY 2 .R ;                                       ;S                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 29      COMMANDS          BOB 5-AUG-83           : CLR-LINE  CURPOS DUP >LINE# LINE#>                                   &CURSOR ! CURPOS BUF-ADR C/L BLANKS                        E-UPDATE 0 MOVE-CURSOR CURPOS CLEAR-TO-EOL &CURSOR ! ;       : DELETE-KEY  (S --- )                                                  BL BUFPOS C! BL EMIT                                            L-ARROW ;                                               ;S                                                              The delete key moves the cursor to the left and errases the char                                                                                                                                                                                                                                                                                                                                                                                                                                                                \ EDITOR SCREEN 30      HELP              BOB 5-AUG-83          : HELP  (S --- )                                                        CRTCLR-SCR  CR CR L/SCR 0 DO I 6 .LINE CR LOOP                  CR ." *** Hit Any Key To Return To The Editor " KEY DROP        CRTCLR-SCR  0 %Y-OFF CRTXY L/SCR 0 DO I 3 .R CR LOOP            10 0 CRTXY                                                      ." SCR:" SCR @ 4 .R 6 SPACES ." X=     Y="                      CR 15 SPACES ." PRESS '^Q' FOR HELP"                            0 DISPLAY-TO-EOS ;                                      ;S                                                              Help displays the help screen ( screen 6 ).  On this screen is  the function map for all the functions of the editor and where  they are on the keybord.                                                                                                                                                                                                                                        \ EDITOR SCREEN 31      CONTROL-CHAR      BOB 5-AUG-83          HEX : CONTROL-CHAR CASE     (S KEY --- )                        0D OF RETURN ENDOF              D0 OF L-WORD ENDOF              09 OF E-TAB ENDOF               D1 OF Y-BACK ENDOF              7F OF DELETE-KEY ENDOF          D2 OF R-WORD ENDOF              F1 OF U-ARROW ENDOF             D3 OF D-WORD ENDOF              F2 OF D-ARROW  ENDOF            C0 OF D-CHAR ENDOF              F3 OF L-ARROW ENDOF             C1 OF D-TAB ENDOF               F4 OF R-ARROW  ENDOF            C2 OF CLR-LINE ENDOF            E1 OF INSERT-MODE ENDOF         C3 OF EXIT-UPDATE ENDOF         E2 OF U-TAB ENDOF               B1 OF I-LINE ENDOF              E3 OF CLR-SCREEN ENDOF          B2 OF EXIT-SCRATCH ENDOF        E4 OF D-LINE    ENDOF           08 OF L-ARROW ENDOF             11 OF HELP ENDOF                10 OF PRINT-SCR ENDOF           BEEP ENDCASE ;                                                  DECIMAL ;S      (P MAPS THE FUNCTIONS TO THE KEYBORD )          \ EDITOR SCREEN 32      MOTOR OFF         BOB 09/19/83          HEX                                                             : MOTOR-OFF                                                             1C P@ 40 OR 1C P! ;                                     DECIMAL                                                         ;S                                                              The CP/M on my KAYPRO II keeps the motor running on the disk    drive until another call is made to it after a disk access.     This is very annoying since I am bypassing CP/M to get a key.   This word sets bit 7 of the system bitport ( 1CH ). This turns  the motor off.                                                                                                                                                                                                                                                                                                                                                                                  \ EDITOR SCREEN 33      E-OVERSTRIKE      BOB 5-AUG-83           :  E-OVERSTRIKE  RAW-KEY DUP ?PRINTABLE                                IF DUP EMIT BUFPOS C! E-UPDATE 1 +CURPOS                        ELSE CONTROL-CHAR ENDIF ;                               ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 34      E-INSERT          BOB 5-AUG-83           :  E-INSERT  RAW-KEY DUP ?PRINTABLE                                    IF CURPOS INS-CHAR CURPOS DISPLAY-TO-EOL                        OVERRUN @ -DUP IF CURPOS SWAP OVER >LINE# 1+ SWAP               OVER + SWAP DO I LINE#> DUP &CURSOR ! 0 MOVE-CURSOR             DISPLAY-TO-EOL LOOP &CURSOR ! THEN                        1 +CURPOS ELSE CONTROL-CHAR ENDIF ;                           ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 35      E-INIT            BOB 5-AUG-83           :  E-INIT  DEPTH IF SCR ! ENDIF  SCR @ BLOCK                           &BUF-ADR ! MOTOR-OFF CRTCLR-SCR 0 &MODE !                       0 &CURSOR ! 0 &UPDATE ! 0 %Y-OFF CRTXY                          L/SCR 0 DO I 3 .R CR LOOP 10 0 CRTXY                            ." SCR: " SCR @ 4 .R 6 SPACES ." X=    Y="                      CR 19 SPACES ." PRESS '^Q' FOR HELP" 0 DISPLAY-TO-EOS ; ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 36      CRT-FUNCTIONS     BOB 5-AUG-83           :  KAY-CRTXY 27 EMIT 61 EMIT 32 + EMIT 32 + EMIT  ;             :  KAY-CRTCLR-SCR  26 EMIT  ;                                   :  KAY-CRTCLR-EOL  DROP 24 EMIT ;                               ' KAY-CRTXY         CFA 'CRTXY !                                ' KAY-CRTCLR-SCR    CFA 'CRTCLR-SCR !                           ' KAY-CRTCLR-EOL    CFA 'CLEAR-TO-EOL !                        ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ EDITOR SCREEN 37      E                 BOB 5-AUG-83           FORTH DEFINITIONS                                               :  E  EDITOR E-INIT                                                    BEGIN DISPLAY-STATUS 0 MOVE-CURSOR &MODE @ IF            E-INSERT ELSE E-OVERSTRIKE ENDIF AGAIN FORTH ;                 : NE SCR @ 1+ E ;                                               : LE SCR @ 1- E ;                                               ;S                                                              NE stands for "next edit " ie edit the next screen              LE stands for edit the "last" screen ie this screen number minus1.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BOB 09/19/83                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \ RECURSIVE DECOMPILER                    BOB 5-AUG-83          \ FROM FORTH DIMENTIONS IV/2                                    \       PAGE 28                                                 \ BY ROBERT DUDLY ACKERMAN                                      103 106 LOAD-THRU                                               ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ DECOMPILER SCREEN 1                     BOB 5-AUG-83          VOCABULARY DECOMPILER IMMEDIATE                                 DECOMPILER DEFINITIONS DECIMAL                                  : MYSELF LATEST PFA CFA , ; IMMEDIATE                           0 VARIABLE GIN                                                   : GIN+ CR GIN @ 2+ DUP GIN ! SPACES ;                           : DIN CR GIN @ SPACES ;                                        ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ DECOMPILER SCREEN 2                     BOB 3-AUG-83           : GCHK DUP @ 2+ ' COMPILE =                                       IF 2+ DUP @ 2+ NFA ID. 2+                                       ELSE DUP @ 2+ DUP ' LIT =                                          OVER ' BRANCH = OR                                              OVER ' 0BRANCH = OR                                             OVER ' (LOOP) = OR                                              SWAP ' (+LOOP) = OR                                          IF 2+ DUP @ SPACE . 2+                                          ELSE DUP @ 2+ 33000  =     ( SHOULD BE CLIT )                      IF 2+ DUP C@ SPACE . 1+                                         ELSE DUP @ 2+ ' (.") =                                            IF 2+ DUP COUNT TYPE                                                DUP C@ 1+ +                                                 ELSE 2+ THEN THEN THEN THEN                                     -2 GIN +! ; ;S                                          \ DECOMPILER SCREEN 3                     BOB 3-AUG-83           : (GOESINTO)                                                         DUP CFA @ ' : CFA @ =                                           OVER ' ERROR = 0= AND                                      IF ( COLON DEF AND NOT ERROR )                                     BEGIN DUP @ DUP ' ;S CFA =                                        OVER ' (;CODE) CFA = OR 0= WHILE                                2+ DUP GIN+ NFA ID. KEY DUP 81 =                               IF SP! QUIT                                                     ELSE 13 =                                                         IF MYSELF                                                       ELSE DROP THEN                                                THEN GCHK                                                     REPEAT                                                          2+ DIN NFA ID.                                                       THEN DROP ; ;S                                          \ DECOMPILER SCREEN 4                     BOB 5-AUG-83          FORTH DEFINITIONS DECIMAL                                        : GOESINTO DECOMPILER -FIND IF DROP 0 GIN !                      (GOESINTO)  ELSE ." NOT FOUND " THEN ;                        ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ 8080 ASSEMBLER                          BOB 5-AUG-83          \ FROM FORTH DIMENTIONS III/6                                   \       PAGE 180                                                \    BY J. J. CASSADY                                           109 113 LOAD-THRU                                               ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ ASSEMBLER SCREEN 1                      BOB 5-AUG-83           (  FIGFORTH 8080 ASSEMBLER )                                    ( FROM FORTH DIMENSIONS VOL.3 #6)                               HEX VOCABULARY ASSEMBLER IMMEDIATE                             : 8* DUP + DUP + DUP + ;                                         ' ASSEMBLER CFA ' ;CODE 8 + !                                   : CODE ?EXEC CREATE [COMPILE] ASSEMBLER !CSP ; IMMEDIATE        : C; CURRENT @ CONTEXT ! ?EXEC ?CSP SMUDGE ; IMMEDIATE          : LABEL ?EXEC 0 VARIABLE SMUDGE -2 ALLOT [COMPILE] ASSEMBLER       !CSP ; IMMEDIATE ASSEMBLER DEFINITIONS                      ;S                                                                                                                                                                                                                                                                                                                                                                                              \ ASSEMBLER SCREEN 2                      BOB 7-AUG-83          HEX                                                             4 CONSTANT H    5 CONSTANT L    7 CONSTANT A    6 CONSTANT PSW  2 CONSTANT D    3 CONSTANT E    0 CONSTANT B    1 CONSTANT C    6 CONSTANT  M   6 CONSTANT SP   ' ;S 0B + @ CONSTANT (NEXT)     C2 CONSTANT  0= D2 CONSTANT CS  E2 CONSTANT PE  F2 CONSTANT 0<  ;S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ ASSEMBLER SCREEN 3                      BOB 7-AUG-83          HEX                                                             : 1MI  <BUILDS C, DOES> C@ C, ;                                 : 2MI  <BUILDS C, DOES> C@ + C, ;                               : 3MI  <BUILDS C, DOES> C@ SWAP 8* + C, ;                       : 4MI  <BUILDS C, DOES> C@ C, C, ;                              : 5MI  <BUILDS C, DOES> C@ C, , ;                               : PSH1,  C3 C, (NEXT) 1 - , ;                                   : PSH2,  C3 C, (NEXT) 2 -  , ;                                  : NEXT,  C3 C, (NEXT) , ;                                       : NOT,  8 + ;                                                   : MOV,  8* 40 + + C, ;                                          : MVI,  8* 6 + C, C, ;                                          : LXI,  8* 1+ C, , ;                                            : THEN,  HERE SWAP ! ;                                          ;S                                                              \ ASSEMBLER SCREEN 4                      BOB 7-AUG-83          HEX                                                             00  1MI  NOP,   76  1MI  HLT,   F3  1MI  DI,    FB  1MI EI,     07  1MI  RLC,   0F  1MI  RRC,   17  1MI  RAL,   1F  1MI RAR,    E9  1MI  PCHL,  F9  1MI  SPHL,  E3  1MI  XTHL,  EB  1MI XCHG,   27  1MI  DAA,   2F  1MI  CMA,   37  1MI  STC,   3F  1MI CMC,    80  2MI  ADD,   88  2MI  ADC,   90  2MI  SUB,   98  2MI SBB,    A0  2MI  ANA,   A8  2MI  XRA,   B0  2MI  ORA,   B8  2MI CMP,    09  3MI  DAD,   C1  3MI  POP,   C5  3MI  PUSH,  02  3MI STAX,   0A  3MI  LDAX,  04  3MI  INR,   05  3MI  DCR,   03  3MI INX,    0B  3MI  DCX,   C7  3MI  RST,   D3  4MI  OUT,   DB  4MI IN,     C6  4MI  ADI,   CE  4MI  ACI,   D6  4MI  SUI,   DE  4MI SBI,    E6  4MI  ANI,   EE  4MI  XRI,   F6  4MI  ORI,   FE  4MI CPI,    22  5MI  SHLD,  2A  5MI  LHLD,  32  5MI  STA,   3A  5MI LDA,    CD  5MI  CALL,  C9  1MI  RET,   C3  5MI  JMP,                   ;S                                                              \ ASSEMBLER SCREEN 5                      BOB 7-AUG-83          HEX                                                             : IF,  C, HERE 0 , ;                                            : ELSE,  C3 IF, SWAP THEN, ;                                    : BEGIN,  HERE ;                                                : UNTIL, C, , ;                                                 : WHILE, IF, ;                                                  : REPEAT,  SWAP C3 C, , THEN, ;                                 FORTH DEFINITIONS HEX                                           CODE CSWAP   H POP,   L A MOV,   H L MOV,   A H MOV,   PSH1,                 C;                                                 DECIMAL                                                         ;S                                                                                                                                                                                                                                                              \ ASSEMBLER SCREEN 9                      BOB 5-AUG-83           CODE CSWAP   H POP,   L A MOV,   H L MOV,   A H MOV,   PSH1,                                                                    DECIMAL                                                                                                                                                                                                                                                        ;S