home *** CD-ROM | disk | FTP | other *** search
/ ftp.whtech.com / ftp.whtech.com.tar / ftp.whtech.com / ti-990 / forthdat.dsk < prev    next >
Text File  |  2006-10-19  |  256KB  |  1 lines

  1.                                                                                                                                 TI 990 FORTH 1.0.0                                              Dave Pitts               c 1983                                 980 West 6th Avenue                                             Broomfield, CO  80020                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ( Index of screens )                                            000          System Info                                        001 - 003    System Index                                       004 - 005    System error messages                              006          System Dump and Patch                              007          System Printer support                             051 - 062    System Editor                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ( Error messages )                                              EMPTY STACK                                                     DICTIONARY FULL                                                 HAS INCORRECT ADDRESS MODE                                      ISN'T UNIQUE                                                                                                                    DISK RANGE ?                                                    FULL STACK                                                      DISK ERROR !                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ( Error messages cont. )                                        COMPILATION ONLY, USE IN DEFINITION                             EXECUTION ONLY                                                  CONDITIONALS NOT PAIRED                                         DEFINITION NOT FINISHED                                         IN PROTECTED DICTIONARY                                         USE ONLY WHEN LOADING                                           OFF CURRENT EDITING SCREEN                                      DECLARE VOCABULARY                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ( Dump and Patch )    FORTH DEFINITIONS HEX                     : ?NON-PRINTING DUP 020 < SWAP 07E > OR ;                       : &TYPE 0 DO DUP I + C@                                            DUP ?NON-PRINTING IF DROP 02E ( .) THEN EMIT LOOP DROP ;     : &DUMP 0 DO DUP I + @ 0 5 D.R 2 +LOOP DROP ;                   : A-LINE  CR SWAP DUP 0 6 D.R SPACE SWAP ." (" 4 .R ." )"          010 OVER OVER &DUMP 2 SPACES &TYPE ;                         : DUMP  0 DO DUP I + I A-LINE 010 ?TERMINAL IF LEAVE ENDIF           +LOOP DROP CR ;                                                                                                            : PATCH DUP 010 DUMP DUP ROT SWAP C! 010 DUMP ;                 : ZPEEK @ 0 D. ;         : PEEK 0A0 + @ 0 D. ;                  : POKE DUP DUP >R PEEK 0A0 + ! R> PEEK ;                        : ZPOKE DUP DUP >R ZPEEK ! R> ZPEEK ;                                                                                                                                                           ( Printer support words )                                       FORTH DEFINITIONS HEX                                           : FF     ( Emit form feed with null timing )                       0C EMIT 6 0 DO 0 EMIT LOOP ;                                 0 VARIABLE S/PAGE                                               : PRINT  ( Print screens, form-2 to-1 )                            1+ 040 PBASE ! FF SWAP 0 S/PAGE !                               DO I LIST                                                          S/PAGE @ 1+ DUP S/PAGE ! 3 =                                    IF FF 0 S/PAGE ! ENDIF                                       LOOP                                                            S/PAGE @ IF FF ENDIF                                            0 PBASE ! ;                                                  : TOF    ( Force out a top of form )                               040 PBASE ! CR FF 0 PBASE ! ;                                DECIMAL                                                         ( Dump Disk )                                                   FORTH DEFINITIONS HEX                                                                                                           : DDUMP        ( Dump disk from-2 to-1 )                           1+ SWAP                                                         DO CR DUP DECIMAL ." BLOCK " I DUP 5 .R DUP 01A /MOD               6 SPACES                                                        ."  TRACK " 3 .R ."  SECTOR " 3 .R CR HEX                       BLOCK 080 DUMP                                               LOOP ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           88                                                                                                                              89                                                                                                                              90                                                                                                                              91                                                                                                                              92                                                                                                                              93                                                                                                                              94                                                                                                                              95                                                                                                                              96                                                                                                                              97                                                                                                                              98                                                                                                                              99                                                                                                                             100                                                                                                                             101                                                                                                                             102                                                                                                                             103                                                                                                                                                                                                             105                                                                                                                             106                                                                                                                             107                                                                                                                             108                                                                                                                             109                                                                                                                             110                                                                                                                             111                                                                                                                             112                                                                                                                             113                                                                                                                             114                                                                                                                             115                                                                                                                             116                                                                                                                             117                                                                                                                             118                                                                                                                             119                                                                                                                             120                                                                                                                             121                                                                                                                             122                                                                                                                             123                                                                                                                             124                                                                                                                             125                                                                                                                             126                                                                                                                             127                                                                                                                          HEX : NEWEXP OVER + OVER DO                                        KEY DUP 07F =                                                   IF ( BS ) DROP 08 OVER I = DUP R> 2 - + >R -                      DUP 8 = IF 8 EMIT 20 EMIT ENDIF                               ELSE ( NOT BS ) DUP 0D =                                           IF ( CR ) LEAVE DROP BL 0                                       ELSE DUP                                                        ENDIF                                                           I C! 0 I 1+ C! 0 I 2+ C!                                     ENDIF                                                           EMIT                                                          LOOP DROP ;                                                    DECIMAL                                                                                                                                                                                                                                                            136                                                                                                                             137                                                                                                                             138                                                                                                                             139                                                                                                                             140                                                                                                                             141                                                                                                                             142                                                                                                                             143                                                                                                                             144                                                                                                                             145                                                                                                                             146                                                                                                                             147                                                                                                                             148                                                                                                                             149                                                                                                                             150                                                                                                                             151                                                                                                                             152                                                                                                                             153                                                                                                                             154                                                                                                                             155                                                                                                                          DEFINITION NOT FINISHED                                         IN PROTECTED DICTIONARY                                            157                                                                                                                             158                                                                                                                             159                                                                                                                             160                                                                                                                             161                                                                                                                             162                                                                                                                             163                                                                                                                             164                                                                                                                             165                                                                                                                             166                                                                                                                             167                                                                                                                             168                                                                                                                             169                                                                                                                             170                                                                                                                             171                                                                                                                             172                                                                                                                             173                                                                                                                             174                                                                                                                             175                                                                                                                             176                                                                                                                             177                                                                                                                             178                                                                                                                             179                                                                                                                             180                                                                                                                             181                                                                                                                          DECLARE VOCABULARY                                                                 183                                                                                                                             184                                                                                                                             185                                                                                                                             186                                                                                                                             187                                                                                                                             188                                                                                                                             189                                                                                                                             190                                                                                                                             191                                                                                                                             192                                                                                                                             193                                                                                                                             194                                                                                                                             195                                                                                                                             196                                                                                                                             197                                                                                                                             198                                                                                                                             199                                                                                                                                                                                                                                 201                                                                                                                             202                                                                                                                             203                                                                                                                             204                                                                                                                             205                                                                                                                             206                                                                                                                             207                                                                                                                                                                                                             209                                                                                                                             210                                                                                                                             211                                                                                                                             212                                                                                                                             213                                                                                                                             214                                                                                                                             215                                                                                                                             216                                                                                                                             217                                                                                                                             218                                                                                                                             219                                                                                                                             220                                                                                                                             221                                                                                                                             222                                                                                                                             223                                                                                                                             224                                                                                                                             225                                                                                                                             226                                                                                                                             227                                                                                                                             228                                                                                                                             229                                                                                                                             230                                                                                                                             231                                                                                                                             232                                                                                                                             233                                                                                                                          FORTH DEFINITIONS HEX                                           : ?NON-PRINTING DUP 20 < SWAP 7E > OR ;                            235                                                                                                                             236                                                                                                                             237                                                                                                                             238                                                                                                                             239                                                                                                                             240                                                                                                                             241                                                                                                                             242                                                                                                                             243                                                                                                                             244                                                                                                                             245                                                                                                                             246                                                                                                                             247                                                                                                                             248                                                                                                                             249                                                                                                                             250                                                                                                                             251                                                                                                                             252                                                                                                                             253                                                                                                                             254                                                                                                                             255                                                                                                                             256                                                                                                                             257                                                                                                                             258                                                                                                                             259                                                                                                                             DUP ?NON-PRINTING IF DROP 2E ( .) THEN EMIT LOOP DROP ;                                                                         261                                                                                                                             262                                                                                                                             263                                                                                                                             264                                                                                                                             265                                                                                                                             266                                                                                                                             267                                                                                                                             268                                                                                                                             269                                                                                                                             270                                                                                                                             271                                                                                                                             272                                                                                                                             273                                                                                                                             274                                                                                                                             275                                                                                                                             276                                                                                                                             277                                                                                                                             278                                                                                                                             279                                                                                                                             280                                                                                                                             281                                                                                                                             282                                                                                                                             283                                                                                                                             284                                                                                                                             285                                                                                                                          : A-LINE  CR DUP 0 6 D.R SPACE 10 OVER OVER &DUMP 2                SPACES &TYPE ;                                                  287                                                                                                                             288                                                                                                                             289                                                                                                                             290                                                                                                                             291                                                                                                                             292                                                                                                                             293                                                                                                                             294                                                                                                                             295                                                                                                                             296                                                                                                                             297                                                                                                                             298                                                                                                                             299                                                                                                                             300                                                                                                                             301                                                                                                                             302                                                                                                                             303                                                                                                                             304                                                                                                                             305                                                                                                                             306                                                                                                                             307                                                                                                                             308                                                                                                                             309                                                                                                                             310                                                                                                                             311                                                                                                                                                                                                                                                             313                                                                                                                             314                                                                                                                             315                                                                                                                             316                                                                                                                             317                                                                                                                             318                                                                                                                             319                                                                                                                             320                                                                                                                             321                                                                                                                             322                                                                                                                             323                                                                                                                             324                                                                                                                             325                                                                                                                             326                                                                                                                             327                                                                                                                             328                                                                                                                             329                                                                                                                             330                                                                                                                             331                                                                                                                             332                                                                                                                             333                                                                                                                             334                                                                                                                             335                                                                                                                             336                                                                                                                             337                                                                                                                          FORTH DEFINITIONS HEX                                           : ?NON-PRINTING DUP 20 < SWAP 7E > OR ;                            339                                                                                                                             340                                                                                                                             341                                                                                                                             342                                                                                                                             343                                                                                                                             344                                                                                                                             345                                                                                                                             346                                                                                                                             347                                                                                                                             348                                                                                                                             349                                                                                                                             350                                                                                                                             351                                                                                                                             352                                                                                                                             353                                                                                                                             354                                                                                                                             355                                                                                                                             356                                                                                                                             357                                                                                                                             358                                                                                                                             359                                                                                                                             360                                                                                                                             361                                                                                                                             362                                                                                                                             363                                                                                                                             DUP ?NON-PRINTING IF DROP 2E ( .) THEN EMIT LOOP DROP ;                                                                         365                                                                                                                             366                                                                                                                             367                                                                                                                             368                                                                                                                             369                                                                                                                             370                                                                                                                             371                                                                                                                             372                                                                                                                             373                                                                                                                             374                                                                                                                             375                                                                                                                             376                                                                                                                             377                                                                                                                             378                                                                                                                             379                                                                                                                             380                                                                                                                             381                                                                                                                             382                                                                                                                             383                                                                                                                             384                                                                                                                             385                                                                                                                             386                                                                                                                             387                                                                                                                             388                                                                                                                             389                                                                                                                             SPACES &TYPE ;                                                                                                                  391                                                                                                                             392                                                                                                                             393                                                                                                                             394                                                                                                                             395                                                                                                                             396                                                                                                                             397                                                                                                                             398                                                                                                                             399                                                                                                                             400                                                                                                                             401                                                                                                                             402                                                                                                                             403                                                                                                                             404                                                                                                                             405                                                                                                                             406                                                                                                                             407                                                                                                                          ( Text Editor )                                                 FORTH DEFINITIONS HEX                                           : TEXT   ( accept following text to pad )                          HERE C/L 1+ BLANKS WORD HERE PAD C/L 1+ CMOVE ;                                                                              : LINE   ( Relative to SCR, leave address of line )                DUP 0FFF0 AND 017 ?ERROR   ( Keep on this screen )              SCR @ (LINE) DROP ;                                                                                                          : A+     ( incr addr --- addr1 )                                   DUP 0 < IF SWAP - ELSE + ENDIF ;                                                                                             -->                                                                                                                                                                                                                                                             ( Line Editor )                                                 VOCABULARY EDITOR IMMEDIATE HEX                                 : WHERE  ( Print screen # and image of error )                     DUP B/SCR / DUP SCR ! ." SCR # " DECIMAL                        SWAP C/L /MOD C/L * ROT BLOCK + CR C/L TYPE                     CR HERE C@ - SPACES 05E EMIT [COMPILE] EDITOR QUIT ;                                                                         EDITOR DEFINITIONS                                              : #LOCATE   ( Leave cursor offset-2, line-1 )                      R# @ C/L /MOD ;                                              : #LEAD      ( Line address-2, offset-1 to cursor )                #LOCATE LINE SWAP ;                                          : #LAG       ( Cursor address-2, count-1 after cursor )            #LEAD DUP >R + C/L R> - ;                                    : -MOVE      ( Move in block buffer addr from-2, line to-1 )       LINE C/L CMOVE UPDATE ;          -->                         ( Line editing commands )                                       : H           ( Hold numbered line at pad )                        LINE PAD 1+ C/L DUP PAD C! CMOVE ;                                                                                           : E           ( Erase line-1 with blanks )                         LINE C/L BLANKS UPDATE ;                                                                                                     : S           ( Spread making line # blank )                       DUP 1 - ( limit ) 0E ( first to move )                          DO I LINE I 1+ -MOVE -1 +LOOP E ;                                                                                            : D           ( Delete line-1, but hold in pad )                   DUP H 0F DUP ROT                                                DO I 1+ LINE I -MOVE LOOP E ;                                                                                                -->                                                             ( Line editing commands )                                                                                                       : M         ( Move cursor by signed amount-1, print its line )     R# +! CR SPACE #LEAD TYPE 05F EMIT                              #LAG TYPE #LOCATE . DROP ;                                                                                                   : T         ( Type line by #-1, save also in pad )                 DUP C/L * R# ! DUP H 0 M ;                                                                                                   : L         ( Re-list screen )                                     SCR @ LIST 0 M ;                                                                                                             : ML        ( Move to specified line )                             0 R# ! 40 * M ;                                                                                                              -->                                                             ( Line editing commands )                                       : R              ( Replace on line #-1, from pad )                 PAD 1+ SWAP -MOVE ;                                                                                                          : P              ( Put following text on line-1 )                  1 TEXT R ;                                                                                                                   : I              ( Insert text from pad onto line # )              DUP S R ;                                                                                                                    : TOP            ( Home cursor to top left of screen )             0 R# ! ;                                                                                                                     -->                                                                                                                                                                                             ( Screen editing commands )                                     : CLEAR           ( Clear screen by number-1 )                     SCR ! 010 0 DO FORTH I EDITOR E LOOP ;                                                                                       : FLUSH           ( Flush all update blocks to disk )              [ LIMIT FIRST - 0 B/BUF 4 + U/ SWAP DROP ] ( Calc blocks )      LITERAL 0 DO 07FFF BUFFER DROP LOOP ;                                                                                        : COPY             ( Copy screen-2 to screen-1 )                   B/SCR * OFFSET @ + SWAP B/SCR * B/SCR OVER + SWAP               DO DUP FORTH I BLOCK 2 - ! 1+ UPDATE LOOP                       DROP FLUSH ;                                                                                                                 -->                                                                                                                                                                                             ( String editing commands )                                     : C            ( Spread at cursor and copy in text )               1 TEXT PAD COUNT                                                #LAG ROT OVER MIN >R                                            FORTH R R# +!  ( bump cursor )                                  R - >R         ( chars to save )                                DUP HERE R CMOVE ( from old cursor to here )                    HERE #LEAD + R> CMOVE ( here to cursor location )               R> CMOVE UPDATE ( pad to old cursor )                           0 M            ( look at new line ) ;                                                                                        0 VARIABLE STR-LEN           0 VARIABLE STR-ADDR                0 VARIABLE STR-PTR           0 VARIABLE CUR-LEN                 0 VARIABLE CUR-FIRST         0 VARIABLE CUR-ADDR                0 VARIABLE CUR-PTR           0 VARIABLE CUR-LAST                -->                                                             ( Match primitives )                                                                                                                                                                                                                                            : (MATCH)       ( addr-3, addr-2, count-1 -- flag )                -DUP IF OVER + SWAP DO                                             DUP C@ I C@ -                                                   IF 0= LEAVE ELSE 1+ ENDIF                                       LOOP                                                         ELSE DROP 0= ENDIF ;                                                                                                         : 2DROP    DROP DROP ;                                          : 2DUP     OVER OVER ;                                          : 2SWAP    ROT >R ROT R> ;                                                                                                      -->                                                             ( More Match )                                                  : MATCH            ( Cursor addr-4, bytes left-3, string addr-2                    ( string count-1 -- flag-2, cursor offset-1     >R >R 2DUP R> R> 2SWAP OVER + SWAP                              ( caddr-6, bleft-5, $addr-4, $len-3, caddr+bleft-2, caddr-1 )   DO                                                                 2DUP I SWAP (MATCH)                                             IF >R 2DROP R> - I SWAP - 0 SWAP 0 0 LEAVE                         ( caddr, bleft, $addr, $len OR 0, offset, 0, 0 )             ENDIF                                                        LOOP                                                            2DROP   ( caddr-2, bleft-1 OR 0-2, offset-1 )                   SWAP 0= SWAP ;                                                                                                                                                                               -->                                                             ( String editing commands cont. )                               : 1LINE     ( Scan line with cursor for match to pad text )                 (  update cursor, return boolean )                     #LAG PAD COUNT MATCH R# +! ;                                                                                                 : FIND      ( String at pad over full screen range, else error )   BEGIN 03FF R# @ <                                                  IF TOP PAD HERE C/L 1+ CMOVE 0 ERROR ENDIF                      1LINE DUP 0= IF R# @ 040 /MOD DROP 040 SWAP - R# +! ENDIF    UNTIL ;                                                      : DELETE     ( Backwards at cursor by count-1 )                    >R #LAG + FORTH R -  ( save blank fill location )               #LAG R MINUS R# +!   ( backup cursor )                          #LEAD + SWAP CMOVE                                              R> BLANKS UPDATE ;                                           -->                                                             ( String editing commands cont. )                               : N       ( Find next occurance of previous text )                 FIND 0 M ;                                                                                                                   : F       ( Find occurance of following text )                     1 TEXT N ;                                                                                                                   : B       ( Backup cursor by text in pad )                         PAD C@ MINUS M ;                                                                                                             : X       ( Delete following text )                                1 TEXT FIND PAD C@ DELETE 0 M ;                                                                                              : TILL    ( Delete on cursor line, from cursor to text end )       #LEAD + 1 TEXT 1LINE 0= 0 ?ERROR #LEAD + SWAP - DELETE 0 M ; -->                                                             ( Editor extensions )                                           : ENTER? ( start line# curr line# - f ) OVER = ;                : ENTER ( - ) QUERY 1 TEXT ;                                    : NULL? ( - f ) TIB @ C@ 0= ;                                   : .BS ( - ) 08 EMIT ;                                           : NEW ( start line# ) FORTH 010 0 DO CR I 3 .R SPACE               I ENTER? IF ENTER NULL? IF .BS I SCR @ .LINE ELSE               I EDITOR R FORTH 1+ THEN ELSE I SCR @ .LINE                     THEN LOOP DROP ;                                             : UNDER ( start line # ) FORTH 1+ 010 0 DO CR I 3 .R SPACE         I ENTER? IF ENTER NULL? IF .BS I SCR @ .LINE ELSE               I EDITOR I FORTH 1+ THEN ELSE I SCR @ .LINE                     THEN LOOP DROP ;                                                                                                             FORTH DEFINITIONS DECIMAL                                       HERE FENCE !   ;S                                                  504                                                                                                                             505                                                                                                                             506                                                                                                                             507                                                                                                                             508                                                                                                                             509                                                                                                                             510                                                                                                                             511                                                                                                                             512                                                                                                                             513                                                                                                                             514                                                                                                                             515                                                                                                                             516                                                                                                                             517                                                                                                                             518                                                                                                                             519                                                                                                                                                                                                             521                                                                                                                             522                                                                                                                             523                                                                                                                             524                                                                                                                             525                                                                                                                             526                                                                                                                             527                                                                                                                             528                                                                                                                             529                                                                                                                             530                                                                                                                             531                                                                                                                             532                                                                                                                             533                                                                                                                             534                                                                                                                             535                                                                                                                             536                                                                                                                             537                                                                                                                             538                                                                                                                             539                                                                                                                             540                                                                                                                             541                                                                                                                             542                                                                                                                             543                                                                                                                             544                                                                                                                             545                                                                                                                                                                                                      PP   547                                                                                                                             548                                                                                                                             549                                                                                                                             550                                                                                                                             551                                                                                                                             552                                                                                                                             553                                                                                                                             554                                                                                                                             555                                                                                                                             556                                                                                                                             557                                                                                                                             558                                                                                                                             559                                                                                                                             560                                                                                                                             561                                                                                                                             562                                                                                                                             563                                                                                                                             564                                                                                                                             565                                                                                                                             566                                                                                                                             567                                                                                                                             568                                                                                                                             569                                                                                                                             570                                                                                                                             571                                                                                                                                                                                                    PXWID   573                                                                                                                             574                                                                                                                             575                                                                                                                             576                                                                                                                             577                                                                                                                             578                                                                                                                             579                                                                                                                             580                                                                                                                             581                                                                                                                             582                                                                                                                             583                                                                                                                             584                                                                                                                             585                                                                                                                             586                                                                                                                             587                                                                                                                             588                                                                                                                             589                                                                                                                             590                                                                                                                             591                                                                                                                             592                                                                                                                             593                                                                                                                             594                                                                                                                             595                                                                                                                             596                                                                                                                             597                                                                                                                                                                                                    DP   D   599                                                                                                                             600                                                                                                                             601                                                                                                                             602                                                                                                                             603                                                                                                                             604                                                                                                                             605                                                                                                                             606                                                                                                                             607                                                                                                                             608                                                                                                                             609                                                                                                                             610                                                                                                                             611                                                                                                                             612                                                                                                                             613                                                                                                                             614                                                                                                                             615                                                                                                                             616                                                                                                                             617                                                                                                                             618                                                                                                                             619                                                                                                                             620                                                                                                                             621                                                                                                                             622                                                                                                                             623                                                                                                                                                                                                             625                                                                                                                             626                                                                                                                             627                                                                                                                             628                                                                                                                             629                                                                                                                             630                                                                                                                             631                                                                                                                             632                                                                                                                             633                                                                                                                             634                                                                                                                             635                                                                                                                             636                                                                                                                             637                                                                                                                             638                                                                                                                             639                                                                                                                             640                                                                                                                             641                                                                                                                             642                                                                                                                             643                                                                                                                             644                                                                                                                             645                                                                                                                             646                                                                                                                             647                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             656                                                                                                                             657                                                                                                                             658                                                                                                                             659                                                                                                                             660                                                                                                                             661                                                                                                                             662                                                                                                                             663                                                                                                                             664                                                                                                                             665                                                                                                                             666                                                                                                                             667                                                                                                                             668                                                                                                                             669                                                                                                                             670                                                                                                                             671                                                                                                                             672                                                                                                                             673                                                                                                                             674                                                                                                                             675                                                                                                                                                                                                             677                                                                                                                             678                                                                                                                             679                                                                                                                             680                                                                                                                             681                                                                                                                             682                                                                                                                             683                                                                                                                             684                                                                                                                             685                                                                                                                             686                                                                                                                             687                                                                                                                             688                                                                                                                             689                                                                                                                             690                                                                                                                             691                                                                                                                             692                                                                                                                             693                                                                                                                             694                                                                                                                             695                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ( Match primatives )                                            FORTH DEFINITIONS DECIMAL                                                                                                       : (MATCH)       ( addr-3, addr-2, count-1 -- flag )                -DUP IF OVER + SWAP DO                                             DUP C@ I C@ -                                                   IF 0= LEAVE ELSE 1+ THEN                                        LOOP                                                         ELSE DROP 0= THEN ;                                                                                                          : 2DROP    DROP DROP ;                                          : 2DUP     OVER OVER ;                                          : 2SWAP    ROT >R ROT R> ;                                                                                                                                                                      -->                                                             ( More Match )                                                  : MATCH            ( Cursor addr-4, bytes left-3, string addr-2                    ( string count-1 -- flag-2, cursor offset-1     >R >R 2DUP R> R> 2SWAP OVER + SWAP                              ( caddr-6, bleft-5, $addr-4, $len-3, caddr+bleft-2, caddr-1 )   DO                                                                 2DUP I SWAP (MATCH)                                             IF >R 2DROP R> - I SWAP - 0 SWAP 0 0 LEAVE                         ( caddr, bleft, $addr, $len OR 0, offset, 0, 0 )             THEN                                                         LOOP                                                            2DROP   ( caddr-2, bleft-1 OR 0-2, offset-1 )                   SWAP 0= SWAP ;                                                                                                                                                                               -->                                                             ( polyFORTH compatible line editor )                            FORTH DEFINITIONS HEX                                                                                                           : TEXT      ( accept following text to pad )                       HERE C/L 1+ BLANKS WORD                                         HERE PAD C/L 1+ CMOVE ;                                                                                                                                                                      : LINE      ( Relative to scr, leave address of line )             DUP 0FFF0 AND                                                   IF ."  Not on current editing screen" QUIT THEN                 SCR @ (LINE) DROP ;                                                                                                                                                                                                                                          -->                                                             ( WHERE, #LOCATE )                                              VOCABULARY EDITOR IMMEDIATE HEX                                                                                                 : WHERE       ( Print screen # and image of error )                DUP B/SCR / DUP SCR ! ." Scr # " DECIMAL .                      SWAP C/L /MOD C/L * ROT BLOCK + CR C/L TYPE                     CR HERE C@ - SPACES 05E EMIT                                    [COMPILE] EDITOR QUIT ;                                                                                                      EDITOR DEFINITIONS                                                                                                              : #LOCATE     ( --- cursor offset-2, line-1 )                      R# @ C/L /MOD ;                                                                                                                                                                              -->                                                             ( #LEAD, #LAG, -MOVE, BUF-MOVE )                                                                                                : #LEAD       ( --- line addr-2, offset to cursor-1 )              #LOCATE LINE SWAP ;                                                                                                          : #LAG        ( --- cursor addr-2, count after cursor-1 )          #LEAD DUP >R + C/L R> - ;                                                                                                    : -MOVE       ( Move from addr-2, to line-1 )                      LINE C/L CMOVE UPDATE ;                                                                                                      : BUF-MOVE    ( Move text to buffer-1, if any )                    PAD 1+ C@ IF PAD SWAP C/L 1+ CMOVE                              ELSE DROP                                                       THEN ;                                                       -->                                                             ( >LINE#, FIND-BUF, INSERT-BUF )                                                                                                : >LINE#       ( Convert current cursor position to line # )       #LOCATE SWAP DROP ;                                                                                                          : FIND-BUF     ( Buffer used for all searches )                    PAD 050 + ;                                                                                                                  : INSERT-BUF   ( Buffer used for all insertions )                  FIND-BUF 050 + ;                                                                                                                                                                                                                                                                                                                                                                             -->                                                             ( (HOLD-, (KILL-, (SPREAD-, X )                                                                                                 : (HOLD)   ( Move line-1 from block to insert buffer )             LINE INSERT-BUF 1+ C/L DUP INSERT-BUF C! CMOVE ;                                                                             : (KILL)   ( Erase line-1 with blanks )                            LINE C/L BLANKS UPDATE ;                                                                                                     : (SPREAD) ( Spread making line# blank )                           >LINE# DUP 1 - 0E                                               DO I LINE I 1+ -MOVE -1 +LOOP (KILL) ;                                                                                       : X        ( Delete line# from block, put in insert buffer )       >LINE# DUP (HOLD) 0F DUP ROT                                    DO I 1+ LINE I -MOVE LOOP (KILL) ;                           -->                                                             ( DISPLAY-CURSOR, T, L )                                                                                                        : DISPLAY-CURSOR                                                   CR SPACE #LEAD TYPE 05E EMIT                                    #LAG TYPE #LOCATE . DROP ;                                                                                                   : T        ( Type line#-1 )                                        C/L * R# ! 0 DISPLAY-CURSOR ;                                                                                                : L        ( List current screen )                                 SCR @ LIST DISPLAY-CURSOR ;                                                                                                                                                                                                                                                                                                  -->                                                             ( N, B, (TOP-, SEEK-ERROR )                                                                                                     : N       ( Select next sequential screen )                        1 SCR +! ;                                                                                                                   : B       ( Select previous sequential screen )                    -1 SCR +! ;                                                                                                                  : (TOP)   ( Reset cursor to top of block )                         0 R# ! ;                                                                                                                     : SEEK-ERROR   ( Output error msg if no match )                    (TOP) FIND-BUF HERE C/L 1+ CMOVE                                HERE COUNT TYPE ."  None" QUIT ;                                                                                             -->                                                             ( (R-, P )                                                                                                                      : (R)       ( Replace current line with insert buffer )            >LINE# INSERT-BUF 1+ SWAP -MOVE ;                                                                                            : P         ( Place following text in insert buffer and line )     05E EMIT                                                        INSERT-BUF BUF-MOVE (R) ;                                                                                                    : FLUSH     ( Flush all UPDATE buffers to disk )                   [ LIMIT FIRST - 0 B/BUF 4 + U/ SWAP DROP ] ( calc blocks )      LITERAL 0 DO 07FFF BUFFER DROP LOOP ;                                                                                                                                                                                                                        -->                                                             ( WIPE, COPY, 1LINE )                                                                                                           : WIPE       ( Clear current screen )                              010 0 DO I (KILL) LOOP ;                                                                                                     : COPY       ( Copy screen-2 onto screen-1 )                       FLUSH SWAP BLOCK SWAP BLOCK UPDATE 0400 CMOVE ;                                                                                                                                                                                                                                                                                                                                              : 1LINE      ( Scan current line for match with FIND buffer )                ( update cursor, return flag )                        #LAG FIND-BUF COUNT MATCH R# +! ;                            -->                                                             ( (SEEK-, (DELETE- )                                                                                                            : (SEEK)     ( FIND buffer match over full screen, else error )    BEGIN 03FF R# @ <                                                  IF SEEK-ERROR THEN 1LINE                                     UNTIL ;                                                                                                                      : (DELETE)   ( Backwards at cursor by count-1 )                    >R #LAG + R -        ( save blank fill location )               #LAG R MINUS R# +!   ( back up cursor )                         #LEAD + SWAP CMOVE                                              R> BLANKS UPDATE ;   ( fill from end of text )                                                                                                                                                                                                               -->                                                             ( (F-, F, (E-, E )                                                                                                              : (F)       ( Find occurance of following text )                   05E TEXT FIND-BUF BUF-MOVE (SEEK) ;                                                                                          : F         ( Find and display following text )                    (F) DISPLAY-CURSOR ;                                                                                                         : (E)       ( Erase backwards from cursor )                        FIND-BUF C@ (DELETE) ;                                                                                                       : E         ( Erase and display line )                             (E) DISPLAY-CURSOR ;                                                                                                                                                                         -->                                                             ( D, TILL )                                                                                                                     : D        ( Find, delete and display following text )             (F) E ;                                                                                                                      : TILL     ( Delete from cursor to text end )                      #LEAD + 05E TEXT FIND-BUF BUF-MOVE 1LINE 0=                     IF SEEK-ERROR THEN                                              #LEAD + SWAP - (DELETE)                                         DISPLAY-CURSOR ;                                                                                                                                                                                                                                                                                                                                                                             -->                                                             ( COUNTER, BUMP )                                                                                                               0 VARIABLE COUNTER                                                                                                              : BUMP      ( The line number and handle )                         1 COUNTER +! COUNTER @ 038 >                                    IF 0 COUNTER !                                                     CR CR 0F MESSAGE 0C EMIT THEN ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           -->                                                             ( S )                                                                                                                           : S      ( From current to screen-1 for string )                   0C EMIT 05E TEXT 0 COUNTER !                                    FIND-BUF BUF-MOVE                                               SCR @ DUP >R                                                    DO I SCR ! (TOP)                                                   BEGIN                                                              1LINE IF DISPLAY-CURSOR SCR ? BUMP THEN                         03FF R# @ <                                                  UNTIL                                                        LOOP                                                            R> SCR ! ;                                                                                                                                                                                   -->                                                             ( I, U )                                                                                                                        : I        ( Load insert buffer with text )                        05E TEXT               ( load insert buffer with text )         INSERT-BUF BUF-MOVE    ( if any )                               INSERT-BUF COUNT #LAG ROT OVER MIN >R                           R R# +!                ( bump cursor )                          R - >R                 ( characters to save )                   DUP HERE R CMOVE       ( from old cursor to HERE )              HERE #LEAD + R> CMOVE  ( HERE to cursor location )              R> CMOVE UPDATE        ( pad to old cursor )                    DISPLAY-CURSOR ;       ( look at new line )                                                                                  : U       ( Insert following text under current line )             C/L R# +! (SPREAD) P ;                                       -->                                                             ( R, M )                                                                                                                        : R       ( Replace found text with insert buffer )                (E) I ;                                                                                                                      : M       ( Move from current line on current screen )             SCR @ >R           ( to screen-2, UNDER line-1 )                R# @ >R            ( save orig. screen and cursor loc. )        >LINE# (HOLD)      ( move current line to insert buffer )       SWAP SCR !         ( set new screen # )                         1+ C/L * R#        ( text is stored UNDER requested line )      (SPREAD) (R)       ( store insert buffer in new screen )        R> C/L + R# !      ( set original cursor to next line )         R> SCR ! ;         ( restore original screen )                                                                               FORTH DEFINITIONS DECIMAL                                          888                                                                                                                             889                                                                                                                             890                                                                                                                             891                                                                                                                             892                                                                                                                             893                                                                                                                             894                                                                                                                             895                                                                                                                             896                                                                                                                             897                                                                                                                             898                                                                                                                             899                                                                                                                             900                                                                                                                             901                                                                                                                             902                                                                                                                             903                                                                                                                             904                                                                                                                             905                                                                                                                             906                                                                                                                             907                                                                                                                             908                                                                                                                             909                                                                                                                          : E ( ERASE LINE-1 WITH BLANKS )                                   LINE C/L BLANKS UPDATE ;                                        911                                                                                                                             912                                                                                                                             913                                                                                                                             914                                                                                                                             915                                                                                                                             916                                                                                                                             917                                                                                                                             918                                                                                                                             919                                                                                                                             920                                                                                                                             921                                                                                                                             922                                                                                                                             923                                                                                                                             924                                                                                                                             925                                                                                                                             926                                                                                                                             927                                                                                                                             928                                                                                                                             929                                                                                                                             930                                                                                                                             931                                                                                                                             932                                                                                                                             933                                                                                                                             934                                                                                                                             935                                                                                                                             DUP 1 - 0E                                                      DO I LINE I 1+ -MOVE -1 LOOP E ;                                937                                                                                                                             938                                                                                                                             939                                                                                                                             940                                                                                                                             941                                                                                                                             942                                                                                                                             943                                                                                                                             944                                                                                                                             945                                                                                                                             946                                                                                                                             947                                                                                                                             948                                                                                                                             949                                                                                                                             950                                                                                                                             951                                                                                                                             952                                                                                                                             953                                                                                                                             954                                                                                                                             955                                                                                                                             956                                                                                                                             957                                                                                                                             958                                                                                                                             959                                                                                                                             960                                                                                                                             961                                                                                                                             DUP H 0F DUP ROT                                                DO I 1+ LINE I -MOVE LOOP E ;                                   963                                                                                                                             964                                                                                                                             965                                                                                                                             966                                                                                                                             967                                                                                                                             968                                                                                                                             969                                                                                                                             970                                                                                                                             971                                                                                                                             972                                                                                                                             973                                                                                                                             974                                                                                                                             975                                                                                                                             976                                                                                                                             977                                                                                                                             978                                                                                                                             979                                                                                                                             980                                                                                                                             981                                                                                                                             982                                                                                                                             983                                                                                                                             984                                                                                                                             985                                                                                                                             986                                                                                                                             987                                                                                                                          ( LINE EDITING COMMANDS )                                       : M                                                                989                                                                                                                             990                                                                                                                             991                                                                                                                             992                                                                                                                             993                                                                                                                             994                                                                                                                             995                                                                                                                             996                                                                                                                             997                                                                                                                             998                                                                                                                             999                                                                                                                            1000                                                                                                                            1001                                                                                                                            1002                                                                                                                            1003                                                                                                                            1004                                                                                                                            1005                                                                                                                            1006                                                                                                                            1007                                                                                                                            1008                                                                                                                            1009                                                                                                                            1010                                                                                                                            1011                                                                                                                            1012                                                                                                                            1013                                                                                                                                                                                          : T                                                               1015                                                                                                                            1016                                                                                                                            1017                                                                                                                            1018                                                                                                                            1019                                                                                                                            1020                                                                                                                            1021                                                                                                                            1022                                                                                                                            1023                                                                                                                            1024                                                                                                                            1025                                                                                                                            1026                                                                                                                            1027                                                                                                                            1028                                                                                                                            1029                                                                                                                            1030                                                                                                                            1031                                                                                                                            1032                                                                                                                            1033                                                                                                                            1034                                                                                                                            1035                                                                                                                            1036                                                                                                                            1037                                                                                                                            1038                                                                                                                            1039                                                                                                                          : L                                                                SCR @ LIST 0 M ;                                               1041                                                                                                                            1042                                                                                                                            1043                                                                                                                            1044                                                                                                                            1045                                                                                                                            1046                                                                                                                            1047                                                                                                                            1048                                                                                                                            1049                                                                                                                            1050                                                                                                                            1051                                                                                                                            1052                                                                                                                            1053                                                                                                                            1054                                                                                                                            1055                                                                                                                            1056                                                                                                                            1057                                                                                                                            1058                                                                                                                            1059                                                                                                                            1060                                                                                                                            1061                                                                                                                            1062                                                                                                                            1063                                                                                                                            1064                                                                                                                            1065                                                                                                                                                                                                                                                            1067                                                                                                                            1068                                                                                                                            1069                                                                                                                            1070                                                                                                                            1071                                                                                                                            1072                                                                                                                            1073                                                                                                                            1074                                                                                                                            1075                                                                                                                            1076                                                                                                                            1077                                                                                                                            1078                                                                                                                            1079                                                                                                                            1080                                                                                                                            1081                                                                                                                            1082                                                                                                                            1083                                                                                                                            1084                                                                                                                            1085                                                                                                                            1086                                                                                                                            1087                                                                                                                            1088                                                                                                                            1089                                                                                                                            1090                                                                                                                            1091                                                                                                                          ( LINE EDITING COMMANDS )                                       : R                                                               1093                                                                                                                            1094                                                                                                                            1095                                                                                                                            1096                                                                                                                            1097                                                                                                                            1098                                                                                                                            1099                                                                                                                            1100                                                                                                                            1101                                                                                                                            1102                                                                                                                            1103                                                                                                                            1104                                                                                                                            1105                                                                                                                            1106                                                                                                                            1107                                                                                                                            1108                                                                                                                            1109                                                                                                                            1110                                                                                                                            1111                                                                                                                            1112                                                                                                                            1113                                                                                                                            1114                                                                                                                            1115                                                                                                                            1116                                                                                                                            1117                                                                                                                          : P                                                                1 TEXT R ;     1119                                                                                                                            1120                                                                                                                            1121                                                                                                                            1122                                                                                                                            1123                                                                                                                            1124                                                                                                                            1125                                                                                                                            1126                                                                                                                            1127                                                                                                                            1128                                                                                                                            1129                                                                                                                            1130                                                                                                                            1131                                                                                                                            1132                                                                                                                            1133                                                                                                                            1134                                                                                                                            1135                                                                                                                            1136                                                                                                                            1137                                                                                                                            1138                                                                                                                            1139                                                                                                                            1140                                                                                                                            1141                                                                                                                            1142                                                                                                                            1143                                                                                                                             0 R# ! ;                                                                                                                       1145                                                                                                                            1146                                                                                                                            1147                                                                                                                            1148                                                                                                                            1149                                                                                                                            1150                                                                                                                            1151                                                                                                                            1152                                                                                                                            1153                                                                                                                            1154                                                                                                                            1155                                                                                                                            1156                                                                                                                            1157                                                                                                                            1158                                                                                                                            1159                                                                                                                            1160                                                                                                                            1161                                                                                                                            1162                                                                                                                            1163                                                                                                                            1164                                                                                                                            1165                                                                                                                            1166                                                                                                                            1167                                                                                                                            1168                                                                                                                            1169                                                                                                                          -->                                                                                                                               1171                                                                                                                            1172                                                                                                                            1173                                                                                                                            1174                                                                                                                            1175                                                                                                                            1176                                                                                                                            1177                                                                                                                            1178                                                                                                                            1179                                                                                                                            1180                                                                                                                            1181                                                                                                                            1182                                                                                                                            1183                                                                                                                            1184                                                                                                                            1185                                                                                                                            1186                                                                                                                            1187                                                                                                                            1188                                                                                                                            1189                                                                                                                            1190                                                                                                                            1191                                                                                                                            1192                                                                                                                            1193                                                                                                                            1194                                                                                                                            1195                                                                                                                          ( SCREEN EDITING COMMANDS )                                     : CLEAR ( CLEAR SCREEN BY NUMBER-1 )                              1197                                                                                                                            1198                                                                                                                            1199                                                                                                                            1200                                                                                                                            1201                                                                                                                            1202                                                                                                                            1203                                                                                                                            1204                                                                                                                            1205                                                                                                                            1206                                                                                                                            1207                                                                                                                            1208                                                                                                                            1209                                                                                                                            1210                                                                                                                            1211                                                                                                                            1212                                                                                                                            1213                                                                                                                            1214                                                                                                                            1215                                                                                                                            1216                                                                                                                            1217                                                                                                                            1218                                                                                                                            1219                                                                                                                            1220                                                                                                                            1221                                                                                                                          : FLUSH ( WRITE ALL UPDATED BLOCKS TO DISK )                       [ LIMIT FIRST - B/BUF 4 + / ]                                  1223                                                                                                                            1224                                                                                                                            1225                                                                                                                            1226                                                                                                                            1227                                                                                                                            1228                                                                                                                            1229                                                                                                                            1230                                                                                                                            1231                                                                                                                            1232                                                                                                                            1233                                                                                                                            1234                                                                                                                            1235                                                                                                                            1236                                                                                                                            1237                                                                                                                            1238                                                                                                                            1239                                                                                                                            1240                                                                                                                            1241                                                                                                                            1242                                                                                                                            1243                                                                                                                            1244                                                                                                                            1245                                                                                                                            1246                                                                                                                            1247                                                                                                                          : COPY ( DUPLICATE SCREEN-2, ONTO SCREEN-1 )                       B/SCR * OFFSET @ + SWAP B/SCR * B/SCR OVER + SWAP              1249                                                                                                                            1250                                                                                                                            1251                                                                                                                            1252                                                                                                                            1253                                                                                                                            1254                                                                                                                            1255                                                                                                                            1256                                                                                                                            1257                                                                                                                            1258                                                                                                                            1259                                                                                                                            1260                                                                                                                            1261                                                                                                                            1262                                                                                                                            1263                                                                                                                            1264                                                                                                                            1265                                                                                                                            1266                                                                                                                            1267                                                                                                                            1268                                                                                                                            1269                                                                                                                            1270                                                                                                                            1271                                                                                                                            1272                                                                                                                            1273                                                                                                                          -->                                                                                                                               1275                                                                                                                            1276                                                                                                                            1277                                                                                                                            1278                                                                                                                            1279                                                                                                                            1280                                                                                                                            1281                                                                                                                            1282                                                                                                                            1283                                                                                                                            1284                                                                                                                            1285                                                                                                                            1286                                                                                                                            1287                                                                                                                            1288                                                                                                                            1289                                                                                                                            1290                                                                                                                            1291                                                                                                                            1292                                                                                                                            1293                                                                                                                            1294                                                                                                                            1295                                                                                                                            1296                                                                                                                            1297                                                                                                                            1298                                                                                                                            1299                                                                                                                          ( DOUBLE NUMBER SUPPORT )                                       (   OPERATES ON 32 BIT INTEGERS )                                 1301                                                                                                                            1302                                                                                                                            1303                                                                                                                            1304                                                                                                                            1305                                                                                                                            1306                                                                                                                            1307                                                                                                                            1308                                                                                                                            1309                                                                                                                            1310                                                                                                                            1311                                                                                                                            1312                                                                                                                            1313                                                                                                                            1314                                                                                                                            1315                                                                                                                            1316                                                                                                                            1317                                                                                                                            1318                                                                                                                            1319                                                                                                                            1320                                                                                                                            1321                                                                                                                            1322                                                                                                                            1323                                                                                                                            1324                                                                                                                            1325                                                                                                                          : 2DROP   DROP DROP ;                                                                                                             1327                                                                                                                            1328                                                                                                                            1329                                                                                                                            1330                                                                                                                            1331                                                                                                                            1332                                                                                                                            1333                                                                                                                            1334                                                                                                                            1335                                                                                                                            1336                                                                                                                            1337                                                                                                                            1338                                                                                                                            1339                                                                                                                            1340                                                                                                                            1341                                                                                                                            1342                                                                                                                            1343                                                                                                                            1344                                                                                                                            1345                                                                                                                            1346                                                                                                                            1347                                                                                                                            1348                                                                                                                            1349                                                                                                                            1350                                                                                                                            1351                                                                                                                          : 2SWAP   ROT >R ROT >R ;                                                                                                         1353                                                                                                                            1354                                                                                                                            1355                                                                                                                            1356                                                                                                                            1357                                                                                                                            1358                                                                                                                            1359                                                                                                                            1360                                                                                                                            1361                                                                                                                            1362                                                                                                                            1363                                                                                                                            1364                                                                                                                            1365                                                                                                                            1366                                                                                                                            1367                                                                                                                            1368                                                                                                                            1369                                                                                                                            1370                                                                                                                            1371                                                                                                                            1372                                                                                                                            1373                                                                                                                            1374                                                                                                                            1375                                                                                                                            1376                                                                                                                            1377                                                                                                                                                                                                                                                            1379                                                                                                                            1380                                                                                                                            1381                                                                                                                            1382                                                                                                                            1383                                                                                                                            1384                                                                                                                            1385                                                                                                                            1386                                                                                                                            1387                                                                                                                            1388                                                                                                                            1389                                                                                                                            1390                                                                                                                            1391                                                                                                                            1392                                                                                                                            1393                                                                                                                            1394                                                                                                                            1395                                                                                                                            1396                                                                                                                            1397                                                                                                                            1398                                                                                                                            1399                                                                                                                            1400                                                                                                                            1401                                                                                                                            1402                                                                                                                            1403                                                                                                                          ( STRING EDITING PRIMITIVES )                                   : -TEXT ( ADDRESS-3, COUNT-2, ADDRESS-1 )                         1405                                                                                                                            1406                                                                                                                            1407                                                                                                                            1408                                                                                                                            1409                                                                                                                            1410                                                                                                                            1411                                                                                                                            1412                                                                                                                            1413                                                                                                                            1414                                                                                                                            1415                                                                                                                            1416                                                                                                                            1417                                                                                                                            1418                                                                                                                            1419                                                                                                                            1420                                                                                                                            1421                                                                                                                            1422                                                                                                                            1423                                                                                                                            1424                                                                                                                            1425                                                                                                                            1426                                                                                                                            1427                                                                                                                            1428                                                                                                                            1429                                                                                                                             DO DUP C@ FORTH I C@ -                                          IF 0= LEAVE ELSE 1+ THEN LOOP                                  1431                                                                                                                            1432                                                                                                                            1433                                                                                                                            1434                                                                                                                            1435                                                                                                                            1436                                                                                                                            1437                                                                                                                            1438                                                                                                                            1439                                                                                                                            1440                                                                                                                            1441                                                                                                                            1442                                                                                                                            1443                                                                                                                            1444                                                                                                                            1445                                                                                                                            1446                                                                                                                            1447                                                                                                                            1448                                                                                                                            1449                                                                                                                            1450                                                                                                                            1451                                                                                                                            1452                                                                                                                            1453                                                                                                                            1454                                                                                                                            1455                                                                                                                             ( STRING COUNT-1, >> BOOL-2, CURSOR MOVE-1 )                    >R >R 2DUP R> R> 2SWAP OVER + SWAP                             1457                                                                                                                            1458                                                                                                                            1459                                                                                                                            1460                                                                                                                            1461                                                                                                                            1462                                                                                                                            1463                                                                                                                            1464                                                                                                                            1465                                                                                                                            1466                                                                                                                            1467                                                                                                                            1468                                                                                                                            1469                                                                                                                            1470                                                                                                                            1471                                                                                                                            1472                                                                                                                            1473                                                                                                                            1474                                                                                                                            1475                                                                                                                            1476                                                                                                                            1477                                                                                                                            1478                                                                                                                            1479                                                                                                                            1480                                                                                                                            1481                                                                                                                             IF >R 2DROP R> - I SWAP - 0 SWAP 0 0 LEAVE                                                                                     1483                                                                                                                            1484                                                                                                                            1485                                                                                                                            1486                                                                                                                            1487                                                                                                                            1488                                                                                                                            1489                                                                                                                            1490                                                                                                                            1491                                                                                                                            1492                                                                                                                            1493                                                                                                                            1494                                                                                                                            1495                                                                                                                            1496                                                                                                                            1497                                                                                                                            1498                                                                                                                            1499                                                                                                                            1500                                                                                                                            1501                                                                                                                            1502                                                                                                                            1503                                                                                                                            1504                                                                                                                            1505                                                                                                                            1506                                                                                                                            1507                                                                                                                          ( STRING EDITING COMMANDS )                                     : 1LINE ( SCAN LINE WITH CURSOR FOR MATCH TO PAD )                1509                                                                                                                            1510                                                                                                                            1511                                                                                                                            1512                                                                                                                            1513                                                                                                                            1514                                                                                                                            1515                                                                                                                            1516                                                                                                                            1517                                                                                                                            1518                                                                                                                            1519                                                                                                                            1520                                                                                                                            1521                                                                                                                            1522                                                                                                                            1523                                                                                                                            1524                                                                                                                            1525                                                                                                                            1526                                                                                                                            1527                                                                                                                            1528                                                                                                                            1529                                                                                                                            1530                                                                                                                            1531                                                                                                                            1532                                                                                                                            1533                                                                                                                                                                                          : FIND ( STRING AT PAD OVER FULL SCREEN )                         1535                                                                                                                            1536                                                                                                                            1537                                                                                                                            1538                                                                                                                            1539                                                                                                                            1540                                                                                                                            1541                                                                                                                            1542                                                                                                                            1543                                                                                                                            1544                                                                                                                            1545                                                                                                                            1546                                                                                                                            1547                                                                                                                            1548                                                                                                                            1549                                                                                                                            1550                                                                                                                            1551                                                                                                                            1552                                                                                                                            1553                                                                                                                            1554                                                                                                                            1555                                                                                                                            1556                                                                                                                            1557                                                                                                                            1558                                                                                                                            1559                                                                                                                               1LINE UNTIL ;                                                                                                                1561                                                                                                                            1562                                                                                                                            1563                                                                                                                            1564                                                                                                                            1565                                                                                                                            1566                                                                                                                            1567                                                                                                                            1568                                                                                                                            1569                                                                                                                            1570                                                                                                                            1571                                                                                                                            1572                                                                                                                            1573                                                                                                                            1574                                                                                                                            1575                                                                                                                            1576                                                                                                                            1577                                                                                                                            1578                                                                                                                            1579                                                                                                                            1580                                                                                                                            1581                                                                                                                            1582                                                                                                                            1583                                                                                                                            1584                                                                                                                            1585                                                                                                                             #LAG R MINUS R# +!                                              #LEAD + SWAP CMOVE                                             1587                                                                                                                            1588                                                                                                                            1589                                                                                                                            1590                                                                                                                            1591                                                                                                                            1592                                                                                                                            1593                                                                                                                            1594                                                                                                                            1595                                                                                                                            1596                                                                                                                            1597                                                                                                                            1598                                                                                                                            1599                                                                                                                          ( Addition quizzer )                                            0 VARIABLE ADDEND   0 VARIABLE AUGEND    0 VARIABLE SEED        0 VARIABLE NUMMOD                                               : RANDU BEGIN SEED @ DUP 1 SEED +! C@ DUP NUMMOD @ /                NUMMOD @ * - DUP IF 1 ELSE 0 ENDIF UNTIL ;                  : GETADD RANDU ABS ADDEND ! ;                                   : GETAUG RANDU ABS AUGEND ! ;                                   : DISPADD ADDEND @ ."   " 3 .R ;                                : DISPAUG AUGEND @ ."  +" 3 .R ;                                : DISPSUB AUGEND @ ."  -" 3 .R ;                                : GETNUM ."   " 0 PAD 10 EXPECT PAD BEGIN DUP 1+ SWAP                 C@ DUP IF 48 - ROT 10 * + SWAP 0 ELSE 1 ENDIF                 UNTIL DROP DROP CR ;                                                                                                          -->                                                                                                                           ( Adder continued )  0 VARIABLE WRONG   0 VARIABLE RIGHT        : ADDER  0  0 WRONG !   0 RIGHT !  DO                               CR GETAUG GETADD                                                CR DISPADD CR DISPAUG  CR                                       ."  ---- "    CR                                                ADDEND @ AUGEND @ + GETNUM - IF                                    CR ." That is incorrect, the answer is "                        ADDEND @ AUGEND @ + .                                           1 WRONG  +!                                                    ELSE CR ." That is the RIGHT answer " 1 RIGHT  +!             ENDIF                                                          LOOP   CR CR                                                    ." You have gotten " RIGHT @ . ." right answers " CR            ." And have missed " WRONG @ . ." answers " CR                 ;                                                             -->                                                             ( Subtract exerciser )                                          : SUBTRACT 0 0 WRONG ! 0 RIGHT ! DO                               CR GETADD DISPADD BEGIN GETAUG ADDEND @ AUGEND @ < IF                0 ELSE 1 ENDIF UNTIL                                       CR DISPSUB CR ."  ---- "  CR                                      ADDEND @ AUGEND @ - GETNUM - IF                                 CR ." That answer is WRONG, the correct answer is "             ADDEND @ AUGEND @ - .     1 WRONG +!                           ELSE                                                             CR ." That is the RIGHT answer " 1 RIGHT +!                    ENDIF                                                          LOOP CR  CR                                                     ." You have gotten " RIGHT @ . ." answers correct " CR          ." And have missed " WRONG @ . ." answers "     CR            ;                                                                                                                                 1624                                                                                                                            1625                                                                                                                            1626                                                                                                                            1627                                                                                                                            1628                                                                                                                            1629                                                                                                                            1630                                                                                                                            1631                                                                                                                            1632                                                                                                                            1633                                                                                                                            1634                                                                                                                            1635                                                                                                                            1636                                                                                                                            1637                                                                                                                          : F ( FIND OCCUR. OF FOLLOWING TEXT )                              1 TEXT N ;                                                     1639                                                                                                                            1640                                                                                                                            1641                                                                                                                            1642                                                                                                                            1643                                                                                                                            1644                                                                                                                            1645                                                                                                                            1646                                                                                                                            1647                                                                                                                            1648                                                                                                                            1649                                                                                                                            1650                                                                                                                            1651                                                                                                                            1652                                                                                                                            1653                                                                                                                            1654                                                                                                                            1655                                                                                                                            1656                                                                                                                            1657                                                                                                                            1658                                                                                                                            1659                                                                                                                            1660                                                                                                                            1661                                                                                                                            1662                                                                                                                            1663                                                                                                                             PAD C@ MINUS M ;                                                                                                               1665                                                                                                                            1666                                                                                                                            1667                                                                                                                            1668                                                                                                                            1669                                                                                                                            1670                                                                                                                            1671                                                                                                                            1672                                                                                                                            1673                                                                                                                            1674                                                                                                                            1675                                                                                                                            1676                                                                                                                            1677                                                                                                                            1678                                                                                                                            1679                                                                                                                            1680                                                                                                                            1681                                                                                                                            1682                                                                                                                            1683                                                                                                                            1684                                                                                                                            1685                                                                                                                            1686                                                                                                                            1687                                                                                                                            1688                                                                                                                            1689                                                                                                                                                                                          : TILL ( DELETE ON CURSOR, FROM CUR TO TEXT END )                 1691                                                                                                                            1692                                                                                                                            1693                                                                                                                            1694                                                                                                                            1695                                                                                                                            1696                                                                                                                            1697                                                                                                                            1698                                                                                                                            1699                                                                                                                            1700                                                                                                                            1701                                                                                                                            1702                                                                                                                            1703                                                                                                                            1704                                                                                                                            1705                                                                                                                            1706                                                                                                                            1707                                                                                                                            1708                                                                                                                            1709                                                                                                                            1710                                                                                                                            1711                                                                                                                            1712                                                                                                                            1713                                                                                                                            1714                                                                                                                            1715                                                                                                                          ( STRING EDITOR COMMANDS )                                      : C ( SPREAD AT CURSOR & COPY FOLLOWING TEXT )                    1717                                                                                                                            1718                                                                                                                            1719                                                                                                                            1720                                                                                                                            1721                                                                                                                            1722                                                                                                                            1723                                                                                                                            1724                                                                                                                            1725                                                                                                                            1726                                                                                                                            1727                                                                                                                            1728                                                                                                                            1729                                                                                                                            1730                                                                                                                            1731                                                                                                                            1732                                                                                                                            1733                                                                                                                            1734                                                                                                                            1735                                                                                                                            1736                                                                                                                            1737                                                                                                                            1738                                                                                                                            1739                                                                                                                            1740                                                                                                                            1741                                                                                                                             FORTH R R# +!                                                   R - >R                                                         1743                                                                                                                            1744                                                                                                                            1745                                                                                                                            1746                                                                                                                            1747                                                                                                                            1748                                                                                                                            1749                                                                                                                            1750                                                                                                                            1751                                                                                                                            1752                                                                                                                            1753                                                                                                                            1754                                                                                                                            1755                                                                                                                            1756                                                                                                                            1757                                                                                                                            1758                                                                                                                            1759                                                                                                                            1760                                                                                                                            1761                                                                                                                            1762                                                                                                                            1763                                                                                                                            1764                                                                                                                            1765                                                                                                                            1766                                                                                                                            1767                                                                                                                             R> CMOVE UPDATE                                                 0 M ;                                                          1769                                                                                                                            1770                                                                                                                            1771                                                                                                                            1772                                                                                                                            1773                                                                                                                            1774                                                                                                                            1775                                                                                                                            1776                                                                                                                            1777                                                                                                                            1778                                                                                                                            1779                                                                                                                            1780                                                                                                                            1781                                                                                                                            1782                                                                                                                            1783                                                                                                                            1784                                                                                                                            1785                                                                                                                            1786                                                                                                                            1787                                                                                                                            1788                                                                                                                            1789                                                                                                                            1790                                                                                                                            1791                                                                                                                            1792                                                                                                                            1793                                                                                                                                                                                                                                                            1795                                                                                                                            1796                                                                                                                            1797                                                                                                                            1798                                                                                                                            1799                                                                                                                            1800                                                                                                                            1801                                                                                                                            1802                                                                                                                            1803                                                                                                                            1804                                                                                                                            1805                                                                                                                            1806                                                                                                                            1807                                                                                                                            1808                                                                                                                            1809                                                                                                                            1810                                                                                                                            1811                                                                                                                            1812                                                                                                                            1813                                                                                                                            1814                                                                                                                            1815                                                                                                                            1816                                                                                                                            1817                                                                                                                            1818                                                                                                                            1819                                                                                                                          ( EDITOR EXTENSIONS )                                           EDITOR DEFINITIONS                                                1821                                                                                                                            1822                                                                                                                            1823                                                                                                                            1824                                                                                                                            1825                                                                                                                            1826                                                                                                                            1827                                                                                                                            1828                                                                                                                            1829                                                                                                                            1830                                                                                                                            1831                                                                                                                            1832                                                                                                                            1833                                                                                                                            1834                                                                                                                            1835                                                                                                                            1836                                                                                                                            1837                                                                                                                            1838                                                                                                                            1839                                                                                                                            1840                                                                                                                            1841                                                                                                                            1842                                                                                                                            1843                                                                                                                            1844                                                                                                                            1845                                                                                                                          : NULL? ( - F ) TIB @ C@ 0= ;                                   : .BS ( - ) 8 DROP ;                                              1847                                                                                                                            1848                                                                                                                            1849                                                                                                                            1850                                                                                                                            1851                                                                                                                            1852                                                                                                                            1853                                                                                                                            1854                                                                                                                            1855                                                                                                                            1856                                                                                                                            1857                                                                                                                            1858                                                                                                                            1859                                                                                                                            1860                                                                                                                            1861                                                                                                                            1862                                                                                                                            1863                                                                                                                            1864                                                                                                                            1865                                                                                                                            1866                                                                                                                            1867                                                                                                                            1868                                                                                                                            1869                                                                                                                            1870                                                                                                                            1871                                                                                                                             I ENTER? IF ENTER NULL? IF .BS I SCR @ .LINE ELSE               I EDITOR R FORTH 1+ THEN ELSE I SCR @ .LINE                    1873                                                                                                                            1874                                                                                                                            1875                                                                                                                            1876                                                                                                                            1877                                                                                                                            1878                                                                                                                            1879                                                                                                                            1880                                                                                                                            1881                                                                                                                            1882                                                                                                                            1883                                                                                                                            1884                                                                                                                            1885                                                                                                                            1886                                                                                                                            1887                                                                                                                            1888                                                                                                                            1889                                                                                                                            1890                                                                                                                            1891                                                                                                                            1892                                                                                                                            1893                                                                                                                            1894                                                                                                                            1895                                                                                                                            1896                                                                                                                            1897                                                                                                                             I ENTER? IF ENTER NULL? IF .BS I SCR @ .LINE ELSE               I EDITOR I FORTH 1+ THEN ELSE I SCR @ .LINE                    1899                                                                                                                            1900                                                                                                                            1901                                                                                                                            1902                                                                                                                            1903                                                                                                                            1904                                                                                                                            1905                                                                                                                            1906                                                                                                                            1907                                                                                                                            1908                                                                                                                            1909                                                                                                                            1910                                                                                                                            1911                                                                                                                            1912                                                                                                                            1913                                                                                                                            1914                                                                                                                            1915                                                                                                                            1916                                                                                                                            1917                                                                                                                            1918                                                                                                                            1919                                                                                                                            1920                                                                                                                            1921                                                                                                                            1922                                                                                                                            1923                                                                                                                          FORTH DEFINITIONS DECIMAL                                       HERE FENCE !                                                      1925                                                                                                                            1926                                                                                                                            1927                                                                                                                            1928                                                                                                                            1929                                                                                                                            1930                                                                                                                            1931                                                                                                                            1932                                                                                                                            1933                                                                                                                            1934                                                                                                                            1935                                                                                                                            1936                                                                                                                            1937                                                                                                                            1938                                                                                                                            1939                                                                                                                            1940                                                                                                                            1941                                                                                                                            1942                                                                                                                            1943                                                                                                                            1944                                                                                                                            1945                                                                                                                            1946                                                                                                                            1947                                                                                                                            1948                                                                                                                            1949                                                                                                                                                                                                                                                            1951                                                                                                                            1952                                                                                                                            1953                                                                                                                            1954                                                                                                                            1955                                                                                                                            1956                                                                                                                            1957                                                                                                                            1958                                                                                                                            1959                                                                                                                            1960                                                                                                                            1961                                                                                                                            1962                                                                                                                            1963                                                                                                                            1964                                                                                                                            1965                                                                                                                            1966                                                                                                                            1967                                                                                                                            1968                                                                                                                            1969                                                                                                                            1970                                                                                                                            1971                                                                                                                            1972                                                                                                                            1973                                                                                                                            1974                                                                                                                            1975                                                                                                                                                                                                                                                            1977                                                                                                                            1978                                                                                                                            1979                                                                                                                            1980                                                                                                                            1981                                                                                                                            1982                                                                                                                            1983                                                                                                                            1984                                                                                                                            1985                                                                                                                            1986                                                                                                                            1987                                                                                                                            1988                                                                                                                            1989                                                                                                                            1990                                                                                                                            1991                                                                                                                            1992                                                                                                                            1993                                                                                                                            1994                                                                                                                            1995                                                                                                                            1996                                                                                                                            1997                                                                                                                            1998                                                                                                                            1999                                                                                                                            2000                                                                                                                            2001