        tabs    8,8                     ;first tab is 8, then each tab is 8 ahead
        width   160                     ;prevent folding of long lines
        noproces                        ;disable fancy stuff, speed is what we want
;
        title   "Phunsy 2650 Micro Computer"
        stitle  "Forth"
;       FP-2011-01-03 (www.philipse.info)
;
;       Note: I don't remember how I got this forth software... But aparently it was not yet completely finished.
;       Some stuff did not work correctly so it was not fully debugged.
;
        name    forth                   ;the module name
;
pm      equ     01fffh                  ; page mask - this is to fool the VASC assembler
;
        INCLUDE "2650.inc"              ; 2650 definitions
        INCLUDE "ascii.inc"             ; ascii definitions
        INCLUDE "monitor.inc"           ; monitor definitions
        INCLUDE "phunsy.inc"            ; phunsy definitions
;
        section ram
;
        org     04A70h
;
X4A70fp ds      1024                    ; parameter stack end ?
TXTINPB ds      144                     ; text input buffer
X4F00fp ds      256                     ; instruction return stack
X5000fp ds      4096                    ; top of return stack
X6000fp equ     $                       ;
;
        section forth
        ORG     02000H                  ;
ORIGIN  EQU     $                       ; this is where forth resides
;
        BCTA,UN COLDC                   ;2000 1F22A4    cold start code
        BCTA,UN WARMC                   ;2003 1F22F5    warm start code
;
;                                       == Variables / pointers
VARS    EQU     $                       ; indicates base of variables and constants
ITCIP   DS      2                     ;W;2006 ;00       ITC IP - Interpreter/Instruction Pointer
PSP     DS      2                     ;W;2008 ;02       PSP parameter stack pointer
ITCRP   DS      2                     ;C;200A ;04       ITC RP - Return Pointer
ITCX    DS      2                     ;C;200C ;06       ITC X - working register
VAR04   DS      2                       ;     ;08       not used ?
VAR05   DS      2                       ;     ;0A       not used ?
VAR06   DS      2                     ;C;2012 ;0C       tmp storage for PUSH & PULL routines
VAR07   DS      2                     ;C;2014 ;0E       pointer to 4A70
VAR08   DS      2                       ;2016 ;10       tmp variable used as result of operations
VAR09   DS      2                     ;C;2018 ;12       set to FF at cold start. column counter? was single byte
VAR10   DS      2                       ;2019 ;13
VAR11   DS      2                       ;201B ;15       tmp variable
VAR12   DS      2                       ;201D ;17       tmp variable
VAR13   DS      2                       ;     ;19       tmp variable
VAR14   DS      2                       ;     ;1B       not used ?
VAR15   DS      2                     ;W;     ;1D       pointer to system variables
ITCW    DS      2                       ;     ;1F       ITC W - Working Register
;
;                                       == System Variables (2027h)
SVARS   EQU     $
SV_1ST  DS      2                       ;                 ?
SV_2ND  DS      2                       ;                 ?
SV_3RD  DS      2                       ;                 ?
SV_FENC DS      2                     ;C;FENCE    (0006h) first (last) key word
SV_DP   DS      2                     ;C;DP       (0008h) pointer to dictionary
SV_VOLK DS      2                     ;C;VOC-LINK (000Ah) TASK
SV_CLMS DS      2                     ;C;COLUMNS  (000Ch) 64
SV_BS   DS      2                     ;C;                 ? ascii backspace
SV_CAN  DS      2                     ;C;                 ? ascii cancel
SV_S0   DS      2                     ;W;S0       (0012h) parameter stack top
SV_TIB  DS      2                     ;W;TIB      (0014h) text input buffer
SV_R0   DS      2                     ;W;R0       (0016h) return stack top
SV_UNK0 DS      2                     ;W;                 ? unknown
SV_UNK1 DS      2                     ;W;                 ?
SV_WIDT DS      2                     ;W;WIDTH    (001Ch) 0001FH
SV_UNK3 DS      2                     ;W;                 ? 40
SV_WARN DS      2                     ;W;WARNING  (0020h)
SV_BLK  DS      2                       ;BLK      (0022h)
SV_IN   DS      2                       ;IN       (0024h)
SV_OUT  DS      2                       ;OUT      (0026h)
SV_SRC  DS      2                       ;SCR      (0028h)
SV_OFFS DS      2                       ;OFFSET   (002Ah)
SV_CTXT DS      2                       ;CONTEXT  (002Ch) system variable pointing to vocabulary where word names are searched for
SV_CURR DS      2                       ;CURRENT  (002Eh)
SV_STAT DS      2                       ;STATE    (0030h)
SV_BASE DS      2                       ;BASE     (0032h) 10
SV_DPL  DS      2                       ;DPL      (0034h) 0FFFFH
SV_FLD  DS      2                       ;FLD      (0036h)
SV_CSP  DS      2                       ;CSP      (0038h)
SV_RNUM DS      2                       ;R#       (003Ah)
SV_HLD  DS      2                       ;HLD      (003Ch) 04100H
SV_UNK2 DS      2                       ;                 ?
;
X2069   WORD    02650H                  ; 2650 cpu number ?
X206B   WORD    00104H                  ; version data
;
;                                                       == initial data for cold start 
CSDAT0  WORD    LASTWRD                 ;206F           first (last) key word
CSDAT1  WORD    FREEMEM                 ;               first free byte ?
CSDAT2  WORD    X3BAAb                  ;2073           TASK
CSDAT3  WORD    64                      ;2075           COLUMNS (was 80)
CSDAT4  WORD    00808H                  ;2077           ascii backspace
CSDAT5  WORD    01818H                  ;2079           ascii cancel
CSDAT6  WORD    X4A70fp                 ;207B           moved to ITCX VAR06 VAR07 at cold start
;
;                                                       == initial data for warm start 
WSDAT0  WORD    0
WSDAT1  WORD    SVARS                   ;206D           pointer to system variables
WSDAT2  WORD    X4A70fp-1               ; top of parameter stack
WSDAT3  WORD    TXTINPB
WSDAT4  WORD    X5000fp                 ; top of instruction return stack
WSDAT5  WORD    31
WSDAT6  WORD    40
WSABORT WORD    X3747
;
;------------------------------------------------------- code follows
;
;                                                       == VARS[R3]=VARS[R2]
VARCPY  loda,r0 VARS&pm,R2+             ;20E4 0D2006
        stra,r0 VARS&pm,R3+             ;20E7 CF2006
        loda,r0 VARS&pm,R2-             ;20EA 0D4006
        stra,r0 VARS&pm,R3-             ;20ED CF4006
        retc,un                         ;20F0 17
;
;                                                       == VARS[R2]*=2
VARSHL  ppsl    wc
        cpsl    c
        loda,r0 VARS&pm,R2+
        rrl,r0
        stra,r0 VARS&pm,R2
        loda,r0 VARS&pm,R2-
        rrl,r0
        stra,r0 VARS&pm,R2
        cpsl    c+wc
        retc,un
;
;                                                       == VAR[R2]+=VAR[R3]
VARADD  loda,r0 VARS&pm,R2+
        adda,r0 VARS&pm,R3+
        stra,r0 VARS&pm,R2
        ppsl    wc
        loda,r0 VARS&pm,R2-
        adda,r0 VARS&pm,R3-
        stra,r0 VARS&pm,R2
        cpsl    wc
        retc,un
;
;                                                       == push value VAR08 on stack, then NEXT
;                                                       -(PSP)=VAR08, next
PSH8NXT LODA,R0 PSP+1&pm                ;20BF 0C0009
        SUBI,R0 2                       ;20C2 A402
        STRA,R0 PSP+1&pm                ;20C4 CC0009
        TPSL    C                       ;20C7 B501
        BCTR,EQ TOP8NXT                 ;20C9 1808
        LODA,R0 PSP&pm                  ;20CB 0C0008
        SUBI,R0 1                       ;20CE A401
        STRA,R0 PSP&pm                  ;20D0 CC0008
;                                                       == save value VAR08 at top of stack, then NEXT
TOP8NXT LODA,R0 VAR08&pm                ;20D3 0C0016
        STRA,R0 *PSP&pm                 ;20D6 CC8008
        LODI,R1 1                       ;20D9 0501
        LODA,R0 VAR08+1&pm              ;20DB 0C0017
        STRA,R0 *PSP&pm,R1              ;20DE CDE008
        BCTA,UN NEXT                    ;20E1 1F213F
;
;
;-------------------------------------------------------
;indirect threaded code
;next:   (ip)+ ->   w    ;  jmp (w)+
;nest:    ip   -> -(rp)  ;  w -> ip  ;  next
;unnest: (rp)+ ->   ip   ;  next
;
;implemented here
;next:   (ip)+ ->   w    ;  jmp (w)
;nest:    ip   -> -(rp)  ;  +w -> ip  ;  next
;unnest: (rp)+ ->   ip   ;  next
;-------------------------------------------------------
;
;                                                       == :
COLON@  BYTE    COLON-COLON@-3+6<<5
        BYTE    128+":"
        WORD    0                       ;end indication
;
COLON   WORD    NEST                    ;20F5 2109
        WORD    X307Bp                  ;20F7 307B      ?EXEC
        WORD    X3037p                  ;20F9 3037      !CSP
        WORD    CURRNT                  ;20FB 2EA1      CURRENT
        WORD    FETCH                   ;20FD 2A5A      @
        WORD    CONTXT                  ;20FF 2E93      CONTEXT
        WORD    STORE                   ;2101 2A94      !
        WORD    X35A3p                  ;2103 35A3      CREATE
        WORD    X30FCp                  ;2105 30FC      ]
        WORD    X314Bp                  ;2107 314B      (;CODE)
;
;                                                       == starting Forth stuff
;                                                       ITCRP-=2
NEST    LODA,R0 ITCRP+1&pm              ;2109 0C000B
        SUBI,R0 2                       ;210C A402
        STRA,R0 ITCRP+1&pm              ;210E CC000B
        TPSL    C                       ;2111 B501
        BCTR,EQ NESTA                   ;2113 1808
        LODA,R0 ITCRP&pm                ;2115 0C000A
        SUBI,R0 1                       ;2118 A401
        STRA,R0 ITCRP&pm                ;211A CC000A
;
;                                                       *ITCRP=ITCIP
NESTA   LODA,R0 ITCIP&pm                ;211D 0C0006
        STRA,R0 *ITCRP&pm               ;2120 CC800A
        LODI,R1 1                       ;2123 0501
        LODA,R0 ITCIP+1&pm              ;2125 0C0007
        STRA,R0 *ITCRP&pm,R1            ;2128 CDE00A
;                                                       ITCIP=ITCW+2
        LODA,R0 ITCW+1&pm               ;212B 0C0026
        ADDI,R0 2                       ;212E 8402
        STRA,R0 ITCIP+1&pm              ;2130 CC0007
        PPSL    WC                      ;2133 7708
        LODA,R0 ITCW&pm                 ;2135 0C0025
        ADDI,R0 0                       ;2138 8400
        STRA,R0 ITCIP&pm                ;213A CC0006
        CPSL    WC                      ;213D 7508
;
;                                                       == End Code. exec code at ITCX=*ITCIP++
;                                                       Indirect Threaded Code (ITC)
;                                                       ITCW=*ITCIP : W=(IP)
NEXT    LODI,R1 1                       ;2145 0501
        LODA,R0 *ITCIP&pm               ;213F 0C8006
        STRA,R0 ITCW&pm                 ;2142 CC0025
        LODA,R0 *ITCIP&pm,R1            ;2147 0DE006
        STRA,R0 ITCW+1&pm               ;214A CC0026
;                                                       ITCIP+=2 : IP+=2
        LODA,R0 ITCIP+1&pm              ;214D 0C0007
        ADDI,R0 2                       ;2150 8402
        STRA,R0 ITCIP+1&pm              ;2152 CC0007
        TPSL    C                       ;2155 B501      this is faster then the 'normal' carry addition
        BCFR,EQ NEXTA                   ;2157 9808
        LODA,R0 ITCIP&pm                ;2159 0C0006
        ADDI,R0 1                       ;215C 8401
        STRA,R0 ITCIP&pm                ;215E CC0006
;                                                       ITCX=*ITCW : X=(W)
NEXTA   LODA,R0 *ITCW&pm                ;2161 0C8025
        STRA,R0 ITCX&pm                 ;2164 CC000C
        LODA,R0 *ITCW&pm,R1             ;2169 0DE025
        STRA,R0 ITCX+1&pm               ;216C CC000D
;                                                       exec2650 at *ITCX : exec(X)
        BCTA,UN *ITCX                   ;216F 1FA00C
;
;                                                       == VARS[R3]-=2, VAR06=VARS[R3], *VAR06=VARS[R2]
;                                                       push value on stack
;                                                       r3 points to stack pointer, r2 points to value
PUSH    lodi,r1 2
        bstr,un SUBR1                   ;               VARS[R3]-=R1
        lodi,r1 0
        loda,r0 VARS&pm,r3+             ;               VAR06=VARS[R3]
        stra,r0 VAR06&pm,r1+
        loda,r0 VARS&pm,r3-
        stra,r0 VAR06&pm,r1-
        loda,r0 VARS&pm,r2+             ;               *VAR06=VARS[R2]
        stra,r0 *VAR06&pm,r1+
        loda,r0 VARS&pm,r2-
        stra,r0 *VAR06&pm,r1-
        retc,un
;
;                                                       == VARS[R3]-=R1
SUBR1   LODA,R0 VARS&pm,R3+             ;21C2 0F2006
        SUBZ    R1                      ;21C5 A1
        STRA,R0 VARS&pm,R3              ;21C6 CF6006
        PPSL    WC                      ;21C9 7708
        LODA,R0 VARS&pm,R3-             ;21CB 0F4006
        SUBI,R0 000H                    ;21CE A400
        STRA,R0 VARS&pm,R3              ;21D0 CF6006
        CPSL    WC                      ;21D3 7508
        RETC,UN                         ;21D5 17
;
;                                                       == VAR06=VARS[R3], VARS[R2]=*VAR06, VARS[R3]+=2
;                                                       pull value from stack
;                                                       r3 points to stack pointer, r2 points to value
;                                                       r3 and r2 are not changed
;                                                       pull to var06 is not allowed
PULL    lodi,r1 0
        loda,r0 VARS&pm,r3+
        stra,r0 VAR06&pm,r1+
        loda,r0 VARS&pm,r3-
        stra,r0 VAR06&pm,r1-
;                                                       note: can not pull to VAR06
        loda,r0 *VAR06&pm,r1+
        stra,r0 VARS&pm,r2+
        loda,r0 *VAR06&pm,r1-
        stra,r0 VARS&pm,r2-
;
;                                                       note: this can pull to var06 but takes more time
;        loda,r0 *VAR06&pm,r1+
;        strz    r1
;        loda,r0 *VAR06&pm
;        stra,r0 VARS&pm,r2
;        lodz    r1
;        stra,r0 VARS&pm,r2+
;        subi,r2 1
;
        lodi,r1 2
;
;                                                       == VARS[R3]+=R1
ADDR1   LODA,R0 VARS&pm,R3+             ;21AE 0F2006
        ADDZ    R1                      ;21B1 81
        STRA,R0 VARS&pm,R3              ;21B2 CF6006
        PPSL    WC                      ;21B5 7708
        LODA,R0 VARS&pm,R3-             ;21B7 0F4006
        ADDI,R0 0                       ;21BA 8400
        STRA,R0 VARS&pm,R3              ;21BC CF6006
        CPSL    WC                      ;21BF 7508
        RETC,UN                         ;21C1 17
;
;                                                       == ;S "semi-s"
;                                                       Stop interpretation of a block.
UNNEST@ BYTE    UNNEST-UNNEST@-3+4<<5
        BYTE    ";",128+"S"
        WORD    COLON@                  ;21D9 20F1
;
UNNEST  WORD    $+2                     ;21DB 21DD
        LODA,R0 *ITCRP&pm               ;21DD 0C800A
        STRA,R0 ITCIP&pm                ;21E0 CC0006
        LODI,R1 1                       ;21E3 0501
        LODA,R0 *ITCRP&pm,R1            ;21E5 0DE00A
        STRA,R0 ITCIP+1&pm              ;21E8 CC0007
;                                                       ITCRP+=2
        LODA,R0 ITCRP+1&pm              ;21EB 0C000B
        ADDI,R0 2                       ;21EE 8402
        STRA,R0 ITCRP+1&pm              ;21F0 CC000B
        TPSL    C                       ;21F3 B501
        BCFA,EQ NEXT                    ;21F5 9C213F
        ADDA,R1 ITCRP&pm                ;21F8 8D000A
        STRA,R1 ITCRP&pm                ;21FB CD000A
        BCTA,UN NEXT                    ;21FE 1F213F
;
;                                                       == EXECUTE
;                                                       The word definition indicated by addr is executed.
;                                                       An error condition exists if addr is not a compilation address
EXECUT@ BYTE    EXECUT-EXECUT@-3+4<<5   ;87
        BYTE    "EXECUT",128+"E"
        WORD    UNNEST@
;
EXECUT  WORD    $+2                     ;220B 220D
        LODI,R3 PSP-VARS                ;220D 0502
        LODI,R2 ITCW-VARS               ;220F 061F
        BSTA,UN PULL                    ;2211 3F2197
        lodi,r1 1                       ;
        LODA,R0 *ITCW&pm                ;2161 0C8025
        STRA,R0 ITCX&pm                 ;2164 CC000C
        LODA,R0 *ITCW&pm,R1             ;2169 0DE025
        STRA,R0 ITCX+1&pm               ;216C CC000D
        BCTA,UN *ITCX                   ;216F 1FA00C
;
;                                                       == BYE
;                                                       leave forth, return
BYE@    BYTE    BYE-BYE@-3+4<<5
        BYTE    "BY",128+"E"
        WORD    EXECUT@                 ;221B 2201
;
BYE     WORD    $+2                     ;221D 0000
        retc,un
;                                                       == JSR
;                                                       jump to subroutine
JSR@    BYTE    JSR-JSR@-3+4<<5
        BYTE    "JS",128+"R"
        WORD    BYE@
;
JSR     WORD    $+2                     ;2225 2227
        LODI,R3 PSP-VARS                ;2227 0502      ;PSP
        LODI,R2 VAR08-VARS              ;2229 060C      ;was VAR06, see note at PULL
        BSTA,UN PULL                    ;222B 3F2197
        BSTA,UN *VAR08                  ;222E 3FA012    ;was VAR06
        lodi,r0 com
        lpsl
        BCTA,UN NEXT                    ;2231 1F213F
;
;                                                       == EMIT
;                                                       Type ascii value from stack
EMIT@   BYTE    EMIT-EMIT@-3+4<<5
        BYTE    "EMI",128+"T"
        WORD    JSR@
;
EMIT    WORD    NEST                    ;223B 2109
        WORD    EMITP                   ;223D 2241
        WORD    UNNEST                  ;223F 21DB      ;S
;
EMITP   WORD    EMITC                   ;2241 2243
EMITC   LODI,R3 PSP-VARS                ;2243 0502
        LODI,R2 VAR08-VARS              ;2245 0610
        BSTA,UN PULL                    ;2247 3F2197
        loda,r0 VAR08+1&pm                              ; get char
        andi,r0 07fh                                    ; e.g. at VLIST, the last chars are missing. does this help? Yes.
        bctr,z  EMITD                                   ; phunsy resets screen with 0. There is a command 0 in VLIST
        zbsr    wrtzv
EMITD   BCTA,UN NEXT                    ;2254 1F213F
;
;                                                       == KEY
;                                                       Read key and leave ascii value on stack.
KEY@    BYTE    KEY-KEY@-3+4<<5
        BYTE    "KE",128+"Y"
        WORD    EMIT@
;
KEY     WORD    NEST                    ;225D 2109
        WORD    KEYP                    ;225F 2263
        WORD    UNNEST                  ;2261 21DB      ;S
;
KEYP    WORD    KEYC                    ;2263 2265
KEYC    zbsr    redzv                                   ;get key from keyboard (wait for it)
KEYD    STRA,R0 VAR08+1&pm              ;226B CC0017
        EORZ    R0                      ;226E 20
        STRA,R0 VAR08&pm                ;226F CC0016
        BCTA,UN PSH8NXT                 ;2272 1F20BF
;
;                                                       == ?TERMINAL
QTERML@ BYTE    QTERML-QTERML@-3+4<<5
        BYTE    "?TERMINA",128+"L"
        WORD    KEY@
;
QTERML  WORD    $+2                     ;2281 2283
        zbsr    chizv                                   ;check keyboard if key was pressed
        comi,r0 del                                     ;del means no key is pressed
        bcfr,eq KEYD                                    ;
        eorz    r0                                      ;indicate no key pressed
        BCTR,UN KEYD                    ;2286 1B60      ;
;
;                                                       == CR "c-r"
;                                                       Displays a carriage-return and line-feed or equivalent operation.
CARRET@ BYTE    CARRET-CARRET@-3+4<<5
        BYTE    "C",128+"R"
        WORD    QTERML@
;
CARRET  WORD    NEST                    ;228D 2109
        WORD    PSHNB                   ;228F 2382
        BYTE    cr                      ;2291
        WORD    EMIT                    ;2292 223B      EMIT
        WORD    PSHNB                   ;2294 2382
        BYTE    lf                      ;2296
        WORD    EMIT                    ;2297 223B      EMIT
        WORD    UNNEST                  ;2299 21DB      ;S
;
;                                                       == COLD
COLD@   BYTE    COLD-COLD@-3+4<<5
        BYTE    "COL",128+"D"
        WORD    CARRET@                 ;22A0 2288
;
COLD    WORD    COLDC                   ;22A2 22A4
COLDC   lodi,r0 com
        lpsl
;
        lodi,r2 CSDAT0-VARS
        lodi,r3 SV_FENC-VARS
        bsta,un VARCPY
        lodi,r2 CSDAT1-VARS
        lodi,r3 SV_DP-VARS
        bsta,un VARCPY
        lodi,r2 CSDAT2-VARS
        lodi,r3 SV_VOLK-VARS
        bsta,un VARCPY
        lodi,r2 CSDAT3-VARS
        lodi,r3 SV_CLMS-VARS
        bsta,un VARCPY
        lodi,r2 CSDAT4-VARS
        lodi,r3 SV_BS-VARS
        bsta,un VARCPY
        lodi,r2 CSDAT5-VARS
        lodi,r3 SV_CAN-VARS
        bsta,un VARCPY
;
        lodi,r2 WSDAT3-VARS
        lodi,r3 ITCRP-VARS
        bsta,un VARCPY
        lodi,r2 CSDAT6-VARS
        lodi,r3 VAR06-VARS
        bsta,un VARCPY
        lodi,r3 VAR07-VARS
        bsta,un VARCPY
        lodi,r3 ITCX-VARS
        bsta,un VARCPY
;                                                       this clears 4A70-4EFF
COLDD   eorz    r0                      ;22D7 0400      zero fill byte
        STRA,R0 *ITCX&pm                ;22D9 CC800C
        LODI,R1 1                       ;22DC 0501
        LODI,R3 ITCX-VARS               ;22DE 0706      ITCX
        BSTA,UN ADDR1                   ;22E0 3F21AE    VARS[R3]+=R1
        LODA,R0 ITCX&pm                 ;22E3 0C000C
        COMI,R0 HI X4F00fp              ;22E6 E44F
        BCTR,LT COLDD                   ;22E8 986D      clear all bytes up to 4FFF
        LODA,R0 ITCX+1&pm               ;
        COMI,R0 LO X4F00fp              ;
        BCTR,LT COLDD                   ;
        BCTR,UN WARMC                   ;22EA 1B09
;
;                                                       == WARM
WARM@   BYTE    WARM-WARM@-3+4<<5
        BYTE    "WAR",128+"M"
        WORD    COLD@
;                                                       == Warm Start
WARM    WORD    WARMC
WARMC   lodi,r0 com
        lpsl
        lodi,r2 WSDAT0-VARS
        lodi,r3 SV_WARN-VARS
        bsta,un VARCPY
        lodi,r3 SV_UNK0-VARS
        bsta,un VARCPY
        lodi,r3 SV_UNK1-VARS
        bsta,un VARCPY
        lodi,r2 WSDAT3-VARS
        lodi,r3 SV_TIB-VARS
        bsta,un VARCPY
        lodi,r2 WSDAT4-VARS
        lodi,r3 SV_R0-VARS
        bsta,un VARCPY
        lodi,r2 WSDAT5-VARS
        lodi,r3 SV_WIDT-VARS
        bsta,un VARCPY
        lodi,r2 WSDAT6-VARS
        lodi,r3 SV_UNK3-VARS
        bsta,un VARCPY
        lodi,r2 WSDAT2-VARS
        lodi,r3 SV_S0-VARS
        bsta,un VARCPY
        lodi,r3 PSP-VARS
        bsta,un VARCPY
        lodi,r2 WSDAT1-VARS
        lodi,r3 ITCX-VARS
        bsta,un VARCPY
        lodi,r3 VAR15-VARS
        bsta,un VARCPY
        lodi,r2 WSABORT-VARS
        lodi,r3 ITCIP-VARS              ;ITCIP is set to ABORT
        bsta,un VARCPY
        BCTR,UN RPCLRC                   ;2327 1B38
;
;                                                       == SP@ "s-p-fetch"
;                                                       addr is the address of the top of the stack just before SP@ was executed.
SPFCH@  BYTE    SPFCH-SPFCH@-3+4<<5
        BYTE    "SP",128+"@"
        WORD    WARM@
;
SPFCH   WORD    $+2                     ;232F 2331
        LODI,R2 PSP-VARS                ;2331 0502
        LODI,R3 ITCX-VARS               ;2333 0706
        BSTA,UN VARCPY                  ;2335 3F20E4    VARS[R3]=VARS[R2]
        LODI,R3 PSP-VARS                ;2338 0502
        LODI,R2 ITCX-VARS               ;233A 0606
        BSTA,UN PUSH                    ;233C 3F2176
        BCTA,UN NEXT                    ;233F 1F213F
;
;                                                       == SP!
;                                                       reset parameter stack pointer
SPCLR@  BYTE    SPCLR-SPCLR@-3+4<<5
        BYTE    "SP",128+"!"
        WORD    SPFCH@
;
SPCLR   WORD    $+2                     ;2348 234A
        LODA,R0 SV_S0&pm                ;234A 0C0039
        STRA,R0 PSP&pm                  ;234D CC0008
        LODA,R0 SV_S0+1&pm              ;2350 0C003A
        STRA,R0 PSP+1&pm                ;2353 CC0009
        BCTA,UN NEXT                    ;2356 1F213F
;
;                                                       == RP!
;                                                       reset return stack pointer
RPCLR@  BYTE    RPCLR-RPCLR@-3-4<<5
        BYTE    "RP",128+"!"
        WORD    SPCLR@
;
RPCLR   WORD    RPCLRC                  ;235F 2361
RPCLRC  LODA,R0 SV_R0&pm                ;2361 0C003D    X5000fp to ITCRP
        STRA,R0 ITCRP&pm                ;2364 CC000A
        LODA,R0 SV_R0+1&pm              ;2367 0C003E
        STRA,R0 ITCRP+1&pm              ;236A CC000B
        BCTA,UN NEXT                    ;236D 1F213F
;
;                                                       == LIT
;                                                       get next word and push it on parameter stack 
PSHNW@  BYTE    PSHNW-PSHNW@-3+4<<5
        BYTE    "LI",128+"T"
        WORD    RPCLR@
;
PSHNW   WORD    $+2                     ;2376 2378
        LODI,R3 ITCIP-VARS              ;2378 0500
        LODI,R2 VAR08-VARS              ;237A 0610
        BSTA,UN PULL                    ;237C 3F2197 
        BCTA,UN PSH8NXT                 ;237F 1F20BF
;
;                                                       get next byte and push it on parameter stack 
PSHNB   WORD    $+2                     ;2382 2384
        LODA,R0 *ITCIP&pm               ;2388 0C8006
        STRA,R0 VAR08+1&pm              ;238B CC0017
        EORZ    R0                      ;2384 20
        STRA,R0 VAR08&pm                ;2385 CC0016
        LODI,R1 1                       ;238E 0501
        LODI,R3 ITCIP-VARS              ;2390 0700
        BSTA,UN ADDR1                   ;2392 3F21AE    VARS[R3]+=R1
        BCTA,UN PSH8NXT                 ;2395 1F20BF
;
;                                                       == BRANCH
BRANCH@ BYTE    BRANCH-BRANCH@-3+4<<5
        BYTE    "BRANC",128+"H"
        WORD    PSHNW@
;
BRANCH  WORD    BRANCHC                   ;23A1 23C4
;
;                                                       == 0BRANCH
ZBRAN@  BYTE    ZBRAN-ZBRAN@-3+4<<5
        BYTE    "0BRANC",128+"H"
        WORD    BRANCH@
;
ZBRAN   WORD    $+2
;                                                       get and test value on ps
        LODA,R2 *PSP&pm                 ;23B1 0E8008
        BCFR,EQ ZBRAND                  ;23B4 9804
        LODI,R1 1                       ;23AF 0501
        LODA,R0 *PSP&pm,R1              ;23B6 0DE008
        STRZ    R2                      ;23B9 C2
ZBRAND  LODI,R1 2                       ;23BA 0502
        LODI,R3 PSP-VARS                ;23BC 0702
        BSTA,UN ADDR1                   ;23BE 3F21AE    VARS[R3]+=R1
        LODZ    R2                      ;23C1 02
        BCFR,EQ SKIPW                   ;23C2 981B      skip value if not zero
;                                                       ip=ip+(ip)
BRANCHC LODI,R1 1                       ;23C4 0501
        LODA,R3 *ITCIP&pm               ;23C6 0F8006
        LODA,R0 *ITCIP&pm,R1            ;23C9 0DE006
        ADDA,R0 ITCIP+1&pm              ;23CC 8C0007
        STRA,R0 ITCIP+1&pm              ;23CF CC0007
        PPSL    WC                      ;23D2 7708
        ADDA,R3 ITCIP&pm                ;23D4 8F0006
        STRA,R3 ITCIP&pm                ;23D7 CF0006
        CPSL    WC                      ;23DA 7508
        BCTA,UN NEXT                    ;23DC 1F213F
;
;                                                       skip value ip+=2
SKIPW   LODI,R1 2                       ;23DF 0502
        LODI,R3 ITCIP-VARS              ;23E1 0700
        BSTA,UN ADDR1                   ;23E3 3F21AE    VARS[R3]+=R1
        BCTA,UN NEXT                    ;23E6 1F213F
;
;                                                       == (LOOP)
BBLOOP@ BYTE    BBLOOP-BBLOOP@-3+4<<5
        BYTE    "(LOOP",128+")"
        WORD    ZBRAN@
;
BBLOOP  WORD    $+2                     ;23F2 23F4
        EORZ    R0                      ;23F4 20
        STRA,R0 VAR08&pm                ;23F5 CC0016
        LODI,R0 001H                    ;23F8 0401
        STRA,R0 VAR08+1&pm              ;23FA CC0017
        BCTR,UN BPLOOPD                   ;23FD 1B13
;
;                                                       == (+LOOP)
BPLOOP@ BYTE    BPLOOP-BPLOOP@-3+4<<5
        BYTE    "(+LOOP",128+")"
        WORD    BBLOOP@
;
BPLOOP  WORD    $+2                     ;2409 240B
        LODI,R3 PSP-VARS                ;240B 0502
        LODI,R2 VAR08-VARS              ;240D 0610
        BSTA,UN PULL                    ;240F 3F2197 
BPLOOPD LODA,R0 VAR08&pm                ;2412 0C0016
        STRZ    R3                      ;2415 C3
        STRZ    R2                      ;2416 C2
        LODA,R0 VAR08+1&pm              ;2417 0C0017
        LODI,R1 001H                    ;241A 0501
        ADDA,R0 *ITCRP&pm,R1            ;241C 8DE00A
        STRA,R0 *ITCRP&pm,R1            ;241F CDE00A
        STRZ    R1                      ;2422 C1
        PPSL    WC                      ;2423 7708
        ADDA,R2 *ITCRP&pm               ;2425 8E800A
        CPSL    WC                      ;2428 7508
        STRA,R2 *ITCRP&pm               ;242A CE800A
        LODZ    R1                      ;242D 01
        LODI,R1 003H                    ;242E 0503
        SUBA,R0 *ITCRP&pm,R1            ;2430 ADE00A
        PPSL    WC                      ;2433 7708
        LODZ    R2                      ;2435 02
        SUBA,R0 *ITCRP&pm,R1-           ;2436 ADC00A
        CPSL    WC                      ;2439 7508
        EORZ    R3                      ;243B 23
        BCTA,LT BRANCHC                 ;243C 1E23C4
        LODI,R1 4                       ;243F 0504
        LODI,R3 ITCRP-VARS              ;2441 0704
        BSTA,UN ADDR1                   ;2443 3F21AE    VARS[R3]+=R1
        BCTA,UN SKIPW                   ;2446 1F23DF
;
;                                                       == (DO)
BBDO@   BYTE    BBDO-BBDO@-3+4<<5
        BYTE    "(DO",128+")"
        WORD    BPLOOP@
;
BBDO    WORD    $+2                     ;2450 2452
        LODI,R1 4                       ;2452 0504
        LODI,R3 ITCRP-VARS              ;2454 0704
        BSTA,UN SUBR1                   ;2456 3F21C2    VARS[R3]-=R1
BBDOD   LODA,R0 *PSP&pm,R1-             ;2459 0DC008
        STRA,R0 *ITCRP&pm,R1            ;245C CDE00A
        BRNR,R1 BBDOD                   ;245F 5978
        LODI,R1 4                       ;2461 0504
        LODI,R3 PSP-VARS                ;2463 0702
        BSTA,UN ADDR1                   ;2465 3F21AE    VARS[R3]+=R1
        BCTA,UN NEXT                    ;2468 1F213F
;
;                                                       == I
;                                                       Place current index on data stack
I@      BYTE    I-I@-3+4<<5
        BYTE    128+"I"
        WORD    BBDO@
;
I       WORD    IC                      ;246F 2471
IC      LODI,R1 1                       ;2471 0501
ID      LODA,R0 *ITCRP&pm,R1            ;2473 0DE00A
        STRA,R0 VAR08+1&pm              ;2476 CC0017
        LODA,R0 *ITCRP&pm,R1-           ;2479 0DC00A
        STRA,R0 VAR08&pm                ;247C CC0016
        BCTA,UN PSH8NXT                 ;247F 1F20BF
;
;                                                       == J
;                                                       Return index of next outer loop in same definition
J@      BYTE    J-J@-3+4<<5
        BYTE    128+"J"
        WORD    I@
;
J       WORD    $+2                     ;2486 2488
        LODI,R1 5                       ;2488 0505
        BCTR,UN ID                      ;248A 1B67
;
;                                                       == K
;                                                       this seems to take of I and J one further...
K@      BYTE    K-K@-3+4<<5
        BYTE    128+"K"
        WORD    J@
;
K       WORD    $+2                     ;2490 2492
        LODI,R1 9                       ;2492 0509
        BCTR,UN ID                      ;2494 1B5D
;
;                                                       == DIGIT
DIGIT@  BYTE    DIGIT-DIGIT@-3+4<<5
        BYTE    "DIGI",128+"T"
        WORD    K@
;
DIGIT   WORD    $+2                     ;249E 24A0
        LODI,R1 3                       ;24A0 0503
        LODA,R0 *PSP&pm,R1              ;24A2 0DE008
        SUBI,R0 "0"                     ;24A5 A430
        BCTR,LT DIGITF                  ;24A7 1A26
        COMI,R0 "9"-"0"                 ;24A9 E40A
        BCFR,GT DIGITD                  ;24AB 1A0A      decimal
        COMI,R0 "A"-"0"                 ;24AD E411
        BCTR,LT DIGITF                  ;24AF 1A1E
        COMI,R0 "Z"-"0"                 ;24B1 E42B      hex and up-to base 36
        BCTR,GT DIGITF                  ;24B3 191A
        SUBI,R0 7                       ;24B5 A407
DIGITD  LODI,R1 1                       ;24B7 0501
        COMA,R0 *PSP&pm,R1              ;24B9 EDE008
        BCTR,LT DIGITG                  ;24BC 1911      ok (this compare was wrong in original code)
;
DIGITF  LODI,R1 2                       ;24CF 0502
        LODI,R3 PSP-VARS                ;24D1 0702
        BSTA,UN ADDR1                   ;24D3 3F21AE    VARS[R3]+=R1
        EORZ    R0                      ;24D6 20
        STRZ    R1                      ;24D7 C1
        BCTR,UN DIGITE                  ;24D8 1B69
;
DIGITG  LODI,R2 3                       ;24BE 0603
        STRA,R0 *PSP&pm,R2              ;24C0 CEE008
DIGITE  LODI,R2 0                       ;24C3 0600
        STRA,R0 *PSP&pm,R2              ;24C5 CEE008
        LODZ    R1                      ;24C8 01
        STRA,R0 *PSP&pm,R2+             ;24C9 CEA008
        BCTA,UN NEXT                    ;24CC 1F213F
;
;                                                       == (FIND)
bFINDb@ BYTE    bFINDb-bFINDb@-3+4<<5
        BYTE    "(FIND",128+")"
        WORD    DIGIT@                  ;24E1 2496
;
bFINDb  WORD    P24E5                   ;24E3 24E5
;
P24E5   LODI,R3 PSP-VARS                ;24E5 0502
        LODI,R2 VAR11-VARS              ;24E7 0615
        BSTA,UN PULL                    ;24E9 3F2197 
;        LODI,R3 PSP-VARS                ;24EC 0502
        LODI,R2 VAR12-VARS              ;24EE 0617
        BSTA,UN PULL                    ;24F0 3F2197 
P24F3   LODA,R2 *VAR11&pm               ;24F3 0E801B
        STRA,R2 VAR13&pm                ;24F6 CE001F
        ANDI,R2 03FH                    ;24F9 463F
        COMA,R2 *VAR12&pm               ;24FB EE801D
        BCFA,EQ P254F                   ;24FE 9C254F
        LODI,R2 VAR12-VARS              ;2501 0517
        LODI,R3 VAR10-VARS              ;2503 0713
        BSTA,UN VARCPY                  ;2505 3F20E4    VARS[R3]=VARS[R2]
P2508   LODI,R1 1                       ;2508 0501
        LODI,R3 VAR10-VARS              ;250A 0713
        BSTA,UN ADDR1                   ;250C 3F21AE    VARS[R3]+=R1
        LODI,R3 VAR11-VARS              ;250F 0715
        BSTA,UN ADDR1                   ;2511 3F21AE    VARS[R3]+=R1
        LODA,R2 *VAR11&pm               ;2514 0E801B
        BCFA,LT P2549                   ;2517 9E2549
        LODA,R0 *VAR10&pm               ;251A 0C8019
        IORI,R0 080H                    ;251D 6480
        COMZ    R2                      ;251F E2
        BCTA,EQ P255E                   ;2520 1C255E
P2523   LODI,R1 1                       ;2523 0501
        LODI,R3 VAR11-VARS              ;2525 0715
        BSTA,UN ADDR1                   ;2527 3F21AE    VARS[R3]+=R1
        LODI,R1 1                       ;252A 0501
        LODA,R0 *VAR11&pm,R1            ;252C 0DE01B
        STRZ    R2                      ;252F C2
        LODA,R0 *VAR11&pm               ;2530 0C801B
        STRA,R0 VAR11&pm                ;2533 CC001B
        STRA,R2 VAR11+1&pm              ;2536 CE001C
        BCFA,EQ P24F3                   ;2539 9C24F3
        LODZ    R2                      ;253C 02
        BCFA,EQ P24F3                   ;253D 9C24F3
        STRA,R0 VAR08&pm                ;2540 CC0016
        STRA,R0 VAR08+1&pm              ;2543 CC0017
        BCTA,UN PSH8NXT                 ;2546 1F20BF
;
P2549   COMA,R2 *VAR10&pm               ;2549 EE8019
        BCTA,EQ P2508                   ;254C 1C2508
P254F   LODI,R1 1                       ;254F 0501
        LODI,R3 VAR11-VARS              ;2551 0715
        BSTA,UN ADDR1                   ;2553 3F21AE    VARS[R3]+=R1
        LODA,R0 *VAR11&pm               ;2556 0C801B
        BCFR,LT P254F                   ;2559 9A74
        BCTA,UN P2523                   ;255B 1F2523
;
P255E   LODI,R1 5                       ;255E 0505
        LODI,R3 VAR11-VARS              ;2560 0715
        BSTA,UN ADDR1                   ;2562 3F21AE    VARS[R3]+=R1
        LODI,R3 PSP-VARS                ;2565 0502
        LODI,R2 VAR11-VARS              ;2567 0615
        BSTA,UN PUSH                    ;2569 3F2176
        LODA,R0 VAR13&pm                ;256C 0C001F
        STRA,R0 VAR08+1&pm              ;256F CC0017
        EORZ    R0                      ;2572 20
        STRA,R0 VAR08&pm                ;2573 CC0016
        LODI,R3 PSP-VARS                ;2576 0502
        LODI,R2 VAR08-VARS              ;2578 0610
        BSTA,UN PUSH                    ;257A 3F2176
        BCTA,UN PSH8NXT                 ;257D 1F20BF
;
;                                                       == ENCLOSE
ENCLOS@ BYTE    ENCLOSE-ENCLOS@-3+4<<5
        BYTE    045H,04EH,043H,04CH,04FH,053H,0C5H
        WORD    bFINDb@                  ;2588 24DA
;
ENCLOSE WORD    $+2                     ;258A 258C
;
P258C   LODI,R1 1                       ;258C 0501
        LODA,R0 *PSP&pm,R1              ;258E 0DE008
        STRA,R0 VAR08+1&pm              ;2591 CC0017
        LODA,R0 *PSP&pm,R1+             ;2594 0DA008
        STRA,R0 ITCX&pm                 ;2597 CC000C
        LODA,R0 *PSP&pm,R1+             ;259A 0DA008
        STRA,R0 ITCX+1&pm               ;259D CC000D
        LODI,R3 0FFH                    ;25A0 07FF
P25A2   LODA,R0 *ITCX&pm,R3+            ;25A2 0FA00C
        BCTA,EQ P25F1                   ;25A5 1C25F1
        COMA,R0 VAR08+1&pm              ;25A8 EC0017
        BCTR,EQ P25A2                   ;25AB 1875
        LODZ    R3                      ;25AD 03
        STRZ    R2                      ;25AE C2
P25AF   LODA,R0 *ITCX&pm,R3+            ;25AF 0FA00C
        BCTA,EQ P25F8                   ;25B2 1C25F8
        COMA,R0 VAR08+1&pm              ;25B5 EC0017
        BCFR,EQ P25AF                   ;25B8 9875
        LODZ    R3                      ;25BA 03
        STRZ    R1                      ;25BB C1
        ADDI,R3 1                       ;25BC 8701
P25BE   LODA,R0 PSP+1&pm                ;25BE 0C0009
        SUBI,R0 004H                    ;25C1 A404
        STRA,R0 PSP+1&pm                ;25C3 CC0009
        PPSL    WC                      ;25C6 7708
        LODA,R0 PSP&pm                  ;25C8 0C0008
        SUBI,R0 0                       ;25CB A400
        STRA,R0 PSP&pm                  ;25CD CC0008
        CPSL    WC+C                    ;25D0 7509
        LODZ    R2                      ;25D2 02
        LODI,R2 5                       ;25D3 0605
        STRA,R0 *PSP&pm,R2              ;25D5 CEE008
        LODZ    R1                      ;25D8 01
        LODI,R2 3                       ;25D9 0603
        STRA,R0 *PSP&pm,R2              ;25DB CEE008
        LODZ    R3                      ;25DE 03
        LODI,R2 1                       ;25DF 0601
        STRA,R0 *PSP&pm,R2              ;25E1 CEE008
        LODI,R3 5                       ;25E4 0705
        EORZ    R0                      ;25E6 20
P25E7   STRA,R0 *PSP&pm,R3-             ;25E7 CFC008
        SUBI,R3 1                       ;25EA A701
        BCFR,LT P25E7                   ;25EC 9A79
        BCTA,UN NEXT                    ;25EE 1F213F
;
P25F1   LODZ    R3                      ;25F1 03
        STRZ    R2                      ;25F2 C2
        STRZ    R1                      ;25F3 C1
        ADDI,R1 1                       ;25F4 8501
        BCTR,UN P25BE                   ;25F6 1B46
;
P25F8   LODZ    R3                      ;25F8 03
        STRZ    R1                      ;25F9 C1
        BCTR,UN P25BE                   ;25FA 1B42
;
;                                                       == CMOVE
;                                                       move n bytes starting at addr1 to memory starting at addr2, if n>0.
CMOVE@  BYTE    CMOVE-CMOVE@-3+4<<5
        BYTE    043H,04DH,04FH,056H,0C5H
        WORD    ENCLOS@                 ;2602 2580
;
CMOVE   WORD    $+2                     ;2604 2606
P2606   LODI,R3 PSP-VARS                ;2606 0502
        LODI,R2 VAR11-VARS              ;2608 0615      length
        BSTA,UN PULL                    ;260A 3F2197 
;        LODI,R3 PSP-VARS                ;260D 0502
        LODI,R2 VAR12-VARS              ;260F 0617      target
        BSTA,UN PULL                    ;2611 3F2197
;        LODI,R3 PSP-VARS                ;2614 0502
        LODI,R2 VAR13-VARS              ;2616 0619      source
        BSTA,UN PULL                    ;2618 3F2197
P261B   loda,r0 VAR11+1&pm              ;               changed: zero check before move
        iora,r0 VAR11&pm                ;
        BCTA,z  NEXT                    ;263D 1F213F
        LODA,R0 *VAR13&pm               ;261B 0C801F    source
        STRA,R0 *VAR12&pm               ;261E CC801D    target
        LODI,R1 1                       ;2621 0501      1
        LODI,R3 VAR13-VARS              ;2623 0719
        BSTA,UN ADDR1                   ;2625 3F21AE    VARS[R3]+=R1
;        LODI,R1 1                       ;2628 0501     R1 remains
        LODI,R3 VAR12-VARS              ;262A 0717
        BSTA,UN ADDR1                   ;262C 3F21AE    VARS[R3]+=R1
;        LODI,R1 1                       ;262F 0501     R1 remains
        LODI,R3 VAR11-VARS              ;2631 0715
        BSTA,UN SUBR1                   ;2633 3F21C2    VARS[R3]-=R1
        bctr,un P261B                   ;
;
;                                                       == U*
X2640b  BYTE    082H
        BYTE    055H,0AAH               ;2640 .U*
        WORD    CMOVE@                  ;2643 25FC
;
X2645t  WORD    P2647                   ;2645 2647
;
P2647   LODI,R3 17                      ;2647 0711
        EORZ    R0                      ;2649 20
        STRA,R0 VAR08&pm                ;264A CC0016
        STRA,R0 VAR08+1&pm              ;264D CC0017
        CPSL    C                       ;2650 7501
        PPSL    WC                      ;2652 7708
P2654   LODI,R1 1                       ;2654 0501
        LODI,R2 2                       ;2656 0602
P2658   LODA,R0 *PSP&pm,R1+             ;2658 0DA008
        RRR,R0                          ;265B 50
        STRA,R0 *PSP&pm,R1              ;265C CDE008
        BDRR,R2 P2658                   ;265F FA77
        BDRR,R3 P2663                   ;2661 FB00
P2663   LODZ    R3                      ;2663 03
        BCTR,EQ P2691                   ;2664 182B
        TPSL    C                       ;2666 B501
        BCFR,EQ P2680                   ;2668 9816
        CPSL    C                       ;266A 7501
        LODI,R1 1                       ;266C 0501
        LODA,R0 *PSP&pm,R1              ;266E 0DE008
        ADDA,R0 VAR08+1&pm              ;2671 8C0017
        STRA,R0 VAR08+1&pm              ;2674 CC0017
        LODA,R0 *PSP&pm                 ;2677 0C8008
        ADDA,R0 VAR08&pm                ;267A 8C0016
        STRA,R0 VAR08&pm                ;267D CC0016
P2680   LODA,R0 VAR08&pm                ;2680 0C0016
        RRR,R0                          ;2683 50
        STRA,R0 VAR08&pm                ;2684 CC0016
        LODA,R0 VAR08+1&pm              ;2687 0C0017
        RRR,R0                          ;268A 50
        STRA,R0 VAR08+1&pm              ;268B CC0017
        BCTA,UN P2654                   ;268E 1F2654
;
P2691   CPSL    WC+C                    ;2691 7509
        LODI,R1 2                       ;2693 0502
        LODI,R3 PSP-VARS                ;2695 0702
        BSTA,UN ADDR1                   ;2697 3F21AE    VARS[R3]+=R1
        BCTA,UN PSH8NXT                 ;269A 1F20BF
;
;                                                       == U/
X269Db  BYTE    082H,055H,0AFH          ;269D .U/
        WORD    X2640b                  ;26A0 2640
;
X26A2t  WORD    P26A4                   ;26A2 26A4
;
P26A4   LODI,R1 2                       ;26A4 0502
        LODA,R0 *PSP&pm,R1              ;26A6 0DE008
        STRA,R0 VAR08&pm                ;26A9 CC0016
        LODA,R0 *PSP&pm,R1+             ;26AC 0DA008
        STRA,R0 VAR08+1&pm              ;26AF CC0017
        LODA,R0 *PSP&pm,R1+             ;26B2 0DA008
        STRA,R0 ITCX&pm                 ;26B5 CC000C
        LODA,R0 *PSP&pm,R1+             ;26B8 0DA008
        STRA,R0 ITCX+1&pm               ;26BB CC000D
        LODI,R1 2                       ;26BE 0502
        LODA,R0 ITCX&pm                 ;26C0 0C000C
        STRA,R0 *PSP&pm,R1              ;26C3 CDE008
        LODA,R0 ITCX+1&pm               ;26C6 0C000D
        STRA,R0 *PSP&pm,R1+             ;26C9 CDA008
        LODA,R0 VAR08&pm                ;26CC 0C0016
        STRA,R0 *PSP&pm,R1+             ;26CF CDA008
        LODA,R0 VAR08+1&pm              ;26D2 0C0017
        STRA,R0 *PSP&pm,R1+             ;26D5 CDA008
        LODI,R1 3                       ;26D8 0503
        CPSL    C                       ;26DA 7501
        PPSL    WC                      ;26DC 7708
        LODA,R0 *PSP&pm,R1              ;26DE 0DE008
        RRL,R0                          ;26E1 D0
        STRA,R0 *PSP&pm,R1              ;26E2 CDE008
        LODA,R0 *PSP&pm,R1-             ;26E5 0DC008
        RRL,R0                          ;26E8 D0
        STRA,R0 *PSP&pm,R1              ;26E9 CDE008
        LODI,R3 16                      ;26EC 0710
P26EE   LODI,R1 5                       ;26EE 0505
        LODA,R0 *PSP&pm,R1              ;26F0 0DE008
        RRL,R0                          ;26F3 D0
        STRA,R0 *PSP&pm,R1              ;26F4 CDE008
        LODA,R0 *PSP&pm,R1-             ;26F7 0DC008
        RRL,R0                          ;26FA D0
        STRA,R0 *PSP&pm,R1              ;26FB CDE008
        STRA,R0 VAR08&pm                ;26FE CC0016
        LODA,R0 *PSP&pm,R1+             ;2701 0DA008
        STRA,R0 VAR08+1&pm              ;2704 CC0017
        PPSL    C                       ;2707 7701
        LODI,R1 001H                    ;2709 0501
        SUBA,R0 *PSP&pm,R1              ;270B ADE008
        STRA,R0 VAR08+1&pm              ;270E CC0017
        LODA,R0 VAR08&pm                ;2711 0C0016
        SUBA,R0 *PSP&pm                 ;2714 AC8008
        STRA,R0 VAR08&pm                ;2717 CC0016
        CPSL    C                       ;271A 7501
        BCTR,LT P272B                   ;271C 1A0D
        LODI,R1 4                       ;271E 0504
        STRA,R0 *PSP&pm,R1              ;2720 CDE008
        LODA,R0 VAR08+1&pm              ;2723 0C0017
        STRA,R0 *PSP&pm,R1+             ;2726 CDA008
        PPSL    C                       ;2729 7701
P272B   LODI,R1 3                       ;272B 0503
        LODA,R0 *PSP&pm,R1              ;272D 0DE008
        RRL,R0                          ;2730 D0
        STRA,R0 *PSP&pm,R1              ;2731 CDE008
        LODA,R0 *PSP&pm,R1-             ;2734 0DC008
        RRL,R0                          ;2737 D0
        STRA,R0 *PSP&pm,R1              ;2738 CDE008
        BDRA,R3 P26EE                   ;273B FF26EE
        LODI,R1 2                       ;273E 0502
        LODI,R3 PSP-VARS                ;2740 0702
        CPSL    WC+C                    ;2742 7509
        BSTA,UN ADDR1                   ;2744 3F21AE    VARS[R3]+=R1
        BCTA,UN NEXT                    ;2747 1F213F
;
;                                                       == AND
X274Ab  BYTE    083H,041H,04EH,0C4H     ;274A .AND
        WORD    X269Db                  ;274E 269D
;
X2750t  WORD    P2752                   ;2750 2752
;
P2752   LODI,R3 PSP-VARS                ;2752 0502
        LODI,R2 VAR08-VARS              ;2754 0610
        BSTA,UN PULL                    ;2756 3F2197 
        LODI,R1 1                       ;2759 0501
        LODA,R0 VAR08+1&pm              ;275B 0C0017
        ANDA,R0 *PSP&pm,R1              ;275E 4DE008
        STRZ    R2                      ;2761 C2
        LODA,R0 VAR08&pm                ;2762 0C0016
        ANDA,R0 *PSP&pm,R1-             ;2765 4DC008
;                                                       == (SP)=[R0][R2], NEXT
R0R2NXT LODI,R1 1                       ;2768 0500
        STRA,R0 *PSP&pm                 ;276A CC8008
        LODZ    R2                      ;276D 02
        STRA,R0 *PSP&pm,R1              ;276E CDA008
        BCTA,UN NEXT                    ;2771 1F213F
;
;                                                       == OR
X2774b  BYTE    082H,04FH,0D2H          ;2774 .OR
        WORD    X274Ab                  ;2777 274A
;
X2779t  WORD    P277B                   ;2779 277B
;
P277B   LODI,R3 PSP-VARS                ;277B 0502
        LODI,R2 VAR08-VARS              ;277D 0610
        BSTA,UN PULL                    ;277F 3F2197 
        LODI,R1 1                       ;2782 0501
        LODA,R0 VAR08+1&pm              ;2784 0C0017
        IORA,R0 *PSP&pm,R1              ;2787 6DE008
        STRZ    R2                      ;278A C2
        LODA,R0 VAR08&pm                ;278B 0C0016
        IORA,R0 *PSP&pm,R1-             ;278E 6DC008
        BCTR,UN R0R2NXT                 ;2791 1B55
;
;                                                       == XOR
X2793b  BYTE    083H,058H,04FH,0D2H     ;2793 .XOR
        WORD    X2774b                  ;2797 2774
;
X2799t  WORD    P279B                   ;2799 279B
;
P279B   LODI,R3 PSP-VARS                ;279B 0502
        LODI,R2 VAR08-VARS              ;279D 0610
        BSTA,UN PULL                    ;279F 3F2197 
        LODI,R1 1                       ;27A2 0501
        LODA,R0 VAR08+1&pm              ;27A4 0C0017
        EORA,R0 *PSP&pm,R1              ;27A7 2DE008
        STRZ    R2                      ;27AA C2
        LODA,R0 VAR08&pm                ;27AB 0C0016
        EORA,R0 *PSP&pm,R1-             ;27AE 2DC008
        BCTA,UN R0R2NXT                 ;27B1 1F2768
;
;                                                       == +
X27B4b  BYTE    081H,0ABH               ;27B4 .+
        WORD    X2793b                  ;27B6 2793
;
X27B8t  WORD    P27BA                   ;27B8 27BA
;
P27BA   LODI,R3 PSP-VARS                ;27BA 0502
        LODI,R2 VAR08-VARS              ;27BC 0610
        BSTA,UN PULL                    ;27BE 3F2197 
P27C1   LODI,R1 1                       ;27C1 0501
        LODA,R0 VAR08+1&pm              ;27C3 0C0017
        ADDA,R0 *PSP&pm,R1              ;27C6 8DE008
        STRZ    R2                      ;27C9 C2
        PPSL    WC                      ;27CA 7708
        LODA,R0 VAR08&pm                ;27CC 0C0016
        ADDA,R0 *PSP&pm,R1-             ;27CF 8DC008
        CPSL    WC                      ;27D2 7508
        BCTA,UN R0R2NXT                 ;27D4 1F2768
;
;                                                       == MINUS
X27D7b  BYTE    085H,04DH,049H,04EH,055H,0D3H
        WORD    X27B4b                  ;27DD 27B4
;
X27DFt  WORD    P27E1                   ;27DF 27E1
;
P27E1   LODI,R1 1                       ;27E1 0501
        LODA,R0 *PSP&pm,R1              ;27E3 0DE008
        EORI,R0 0FFH                    ;27E6 24FF
        ADDI,R0 1                       ;27E8 8401
        STRA,R0 *PSP&pm,R1              ;27EA CDE008
        TPSL    C                       ;27ED B501
        BCFR,EQ P27FE                   ;27EF 980D
        LODA,R0 *PSP&pm                 ;27F1 0C8008
        EORI,R0 0FFH                    ;27F4 24FF
        ADDI,R0 1                       ;27F6 8401
P27F8   STRA,R0 *PSP&pm                 ;27F8 CC8008
        BCTA,UN NEXT                    ;27FB 1F213F
;
P27FE   LODA,R0 *PSP&pm                 ;27FE 0C8008
        EORI,R0 0FFH                    ;2801 24FF
        BCTR,UN P27F8                   ;2803 1B73
;
;                                                       == D+
X2805b  BYTE    082H,044H,0ABH          ;2805 .D+
        WORD    X27D7b                  ;2808 27D7
;
X280At  WORD    P280C                   ;280A 280C
;
P280C   LODI,R1 002H                    ;280C 0502
        BSTR,UN P2826                   ;280E 3B16
        LODI,R1 007H                    ;2810 0507
        BSTR,UN P2833                   ;2812 3B1F
        LODI,R1 000H                    ;2814 0500
        BSTR,UN P2826                   ;2816 3B0E
        LODI,R1 005H                    ;2818 0505
        BSTR,UN P2833                   ;281A 3B17
        LODI,R1 4                       ;281C 0504
        LODI,R3 PSP-VARS                ;281E 0702
        BSTA,UN ADDR1                   ;2820 3F21AE    VARS[R3]+=R1
        BCTA,UN NEXT                    ;2823 1F213F
;
P2826   LODA,R0 *PSP&pm,R1              ;2826 0DE008
        STRA,R0 VAR08&pm                ;2829 CC0016
        LODA,R0 *PSP&pm,R1+             ;282C 0DA008
        STRA,R0 VAR08+1&pm              ;282F CC0017
        RETC,UN                         ;2832 17
;
P2833   ADDA,R0 *PSP&pm,R1              ;2833 8DE008
        STRA,R0 *PSP&pm,R1              ;2836 CDE008
        LODA,R0 VAR08&pm                ;2839 0C0016
        PPSL    WC                      ;283C 7708
        ADDA,R0 *PSP&pm,R1-             ;283E 8DC008
        STRA,R0 *PSP&pm,R1              ;2841 CDE008
        CPSL    WC+C                    ;2844 7509
        RETC,UN                         ;2846 17
;
;                                                       == DMINUS
X2847b  BYTE    086H,044H,04DH,049H,04EH,055H,0D3H
        WORD    X2805b                  ;284E 2805
;
X2850t  WORD    P2852                   ;2850 2852
;
P2852   LODI,R1 003H                    ;2852 0503
        LODA,R0 *PSP&pm,R1              ;2854 0DE008
        EORI,R0 0FFH                    ;2857 24FF
        ADDI,R0 001H                    ;2859 8401
        STRA,R0 *PSP&pm,R1              ;285B CDE008
P285E   LODA,R0 *PSP&pm,R1-             ;285E 0DC008
        EORI,R0 0FFH                    ;2861 24FF
        STRA,R0 *PSP&pm,R1              ;2863 CDE008
        BRNR,R1 P285E                   ;2866 5976
        LODI,R1 003H                    ;2868 0503
        LODA,R0 *PSP&pm,R1              ;286A 0DE008
        BCFR,EQ P288B                   ;286D 981C
        LODA,R0 *PSP&pm,R1-             ;286F 0DC008
        ADDI,R0 001H                    ;2872 8401
        STRA,R0 *PSP&pm,R1              ;2874 CDE008
        BCFR,EQ P288B                   ;2877 9812
        LODA,R0 *PSP&pm,R1-             ;2879 0DC008
        ADDI,R0 001H                    ;287C 8401
        STRA,R0 *PSP&pm,R0              ;287E CCE008
        BCFR,EQ P288B                   ;2881 9808
        LODA,R0 *PSP&pm                 ;2883 0C8008
        ADDI,R0 001H                    ;2886 8401
        STRA,R0 *PSP&pm                 ;2888 CC8008
P288B   BCTA,UN NEXT                    ;288B 1F213F
;
;                                                       == 1+
X288Eb  BYTE    082H,031H,0ABH          ;288E .1+
        WORD    X2847b                  ;2891 2847
;
X2893t  WORD    P2895                   ;2893 2895
;
P2895   EORZ    R0                      ;2895 20
        STRA,R0 VAR08&pm                ;2896 CC0016
        LODI,R0 1                       ;2899 0401
P289B   STRA,R0 VAR08+1&pm              ;289B CC0017
        BCTA,UN P27C1                   ;289E 1F27C1
;
;                                                       == 2+
X28A1b  BYTE    082H,032H,0ABH          ;28A1 .2+
        WORD    X288Eb                  ;28A4 288E
;
X28A6t  WORD    P28A8                   ;28A6 28A8
;
P28A8   EORZ    R0                      ;28A8 20
        STRA,R0 VAR08&pm                ;28A9 CC0016
        LODI,R0 2                       ;28AC 0402
        BCTR,UN P289B                   ;28AE 1B6B
;
;                                                       == 1-
X28B0b  BYTE    082H,031H,0ADH          ;28B0 .1-
        WORD    X28A1b                  ;28B3 28A1
;
X28B5t  WORD    P28B7                   ;28B5 28B7
;
P28B7   LODI,R0 0FFH                    ;28B7 04FF
        STRA,R0 VAR08&pm                ;28B9 CC0016
        BCTR,UN P289B                   ;28BC 1B5D
;
;                                                       == 2-
X28BEb  BYTE    082H,032H,0ADH          ;28BE .2-
        WORD    X28B0b                  ;28C1 28B0
;
X28C3t  WORD    P28C5                   ;28C3 28C5
;
P28C5   LODI,R0 0FFH                    ;28C5 04FF
        STRA,R0 VAR08&pm                ;28C7 CC0016
        LODI,R0 0FEH                    ;28CA 04FE
        BCTR,UN P289B                   ;28CC 1B4D
;
;                                                       == <
X28CEb  BYTE    081H,0BCH               ;28CE .<
        WORD    X28BEb                  ;28D0 28BE
;
X28D2t  WORD    P28D4                   ;28D2 28D4
;
P28D4   LODI,R3 PSP-VARS                ;28D4 0502
        LODI,R2 VAR08-VARS              ;28D6 0610
        BSTA,UN PULL                    ;28D8 3F2197 
        CPSL    COM
        LODA,R0 *PSP&pm                 ;28DB 0C8008
        COMA,R0 VAR08&pm                ;28DE EC0016
        PPSL    COM                     ;28E1 7702
        BCTR,LT P28F4                   ;28E3 1A0F
        BCFR,EQ P28F1                   ;28E5 980A
        LODI,R1 001H                    ;28E7 0501
        LODA,R0 *PSP&pm,R1              ;28E9 0DE008
        COMA,R0 VAR08+1&pm              ;28EC EC0017
        BCTR,LT P28F4                   ;28EF 1A03
P28F1   EORZ    R0                      ;28F1 20
        BCTR,UN P28F6                   ;28F2 1B02
;
P28F4   LODI,R0 1                       ;28F4 0401
P28F6   LODI,R2 0                       ;28F6 0600
;       CPSL    COM                     ;28F8 7502
        BCTA,UN R0R2NXT                 ;28FA 1F2768
;
;                                                       == S->
X28FDb  BYTE    084H,053H,02DH,03EH,0C4H
        WORD    X28CEb                  ;2902 28CE
;
X2904t  WORD    P2906                   ;2904 2906
;
P2906   LODI,R2 0                       ;2906 0600
        LODA,R0 *PSP&pm                 ;2908 0C8008
        BCFR,LT P290F                   ;290B 9A02
        LODI,R2 0FFH                    ;290D 06FF
P290F   STRA,R2 VAR08&pm                ;290F CE0016
        STRA,R2 VAR08+1&pm              ;2912 CE0017
        BCTA,UN PSH8NXT                 ;2915 1F20BF
;
;                                                       == +-
X2918b  BYTE    082H,02BH,0ADH          ;2918 .+-
        WORD    X28FDb                  ;291B 28FD
;
X291Dp  WORD    NEST                    ;291D 2109
        WORD    X2962t                  ;291F 2962      0<
        WORD    ZBRAN                   ;2921 23AD      0BRANCH
        WORD    B2927-$                 ;2923 0004
        WORD    X27DFt                  ;2925 27DF      MINUS
B2927   WORD    UNNEST                  ;2927 21DB      ;S
;
;                                                       == D+-
X2929b  BYTE    083H,044H,02BH,0ADH     ;2929 .D+-
        WORD    X2918b                  ;292D 2918
;
X292Fp  WORD    NEST                    ;292F 2109
        WORD    X2962t                  ;2931 2962      0<
        WORD    ZBRAN                   ;2933 23AD      0BRANCH
        WORD    B2939-$                 ;2935 0004
        WORD    X2850t                  ;2937 2850      DMINUS
B2939   WORD    UNNEST                  ;2939 21DB      ;S
;
;                                                       == 0=    check if 0, if 0 return 1 else return 0
X293Bb  BYTE    082H,030H,0BDH          ;293B .0=
        WORD    X2929b                  ;293E 2929
;
X2940t  WORD    P2942                   ;2940 2942
;
P2942   LODI,R1 1                       ;2942 0501
        LODA,R0 *PSP&pm                 ;2944 0C8008
        BCFR,EQ P295A                   ;2947 9811
        LODA,R0 *PSP&pm,R1              ;2949 0DE008
        BCFR,EQ P295A                   ;294C 980C
P294E   LODI,R0 1                       ;294E 0401
P2950   STRA,R0 *PSP&pm,R1              ;2950 CDE008
        EORZ    R0                      ;2953 20
        STRA,R0 *PSP&pm                 ;2954 CC8008
        BCTA,UN NEXT                    ;2957 1F213F
;
P295A   EORZ    R0                      ;295A 20
        BCTR,UN P2950                   ;295B 1B73
;
;                                                       == 0<    check if < 0, if so, return 1 else return 0
X295Db  BYTE    082H,030H,0BCH          ;295D .0<
        WORD    X293Bb                  ;2960 293B
;
X2962t  WORD    P2964                   ;2962 2964
;
P2964   LODI,R1 1                       ;2964 0501
        LODA,R0 *PSP&pm                 ;2966 0C8008
        BCFR,LT P295A                   ;2969 9A6F
        BCTR,UN P294E                   ;296B 1B61
;
;                                                       == LEAVE
;                                                       Terminate loop at next LOOP or +LOOP, by setting limit equal to index.
X296Db  BYTE    085H,04CH,045H,041H,056H,0C5H
        WORD    X295Db                  ;2973 295D
;
X2975t  WORD    P2977                   ;2975 2977
;
P2977   LODI,R1 1                       ;2977 0501
        LODA,R0 *ITCRP&pm,R1            ;2979 0DE00A
        STRZ    R3                      ;297C C3
        LODA,R0 *ITCRP&pm               ;297D 0C800A
        STRA,R0 *ITCRP&pm,R1+           ;2980 CDA00A
        LODZ    R3                      ;2983 03
        STRA,R0 *ITCRP&pm,R1+           ;2984 CDA00A
        BCTA,UN NEXT                    ;2987 1F213F
;
;                                                       == >R
;                                                       move top item to "return stack" for temporary storage (use caution) "to-r)
X298Ab  BYTE    082H,03EH,0D2H          ;298A .>R
        WORD    X296Db                  ;298D 296D
;
X298Ft  WORD    P2991                   ;298F 2991
;
P2991   LODI,R3 PSP-VARS                ;2991 0502
        LODI,R2 VAR08-VARS              ;2993 0610
        BSTA,UN PULL                    ;2995 3F2197
        LODI,R3 ITCRP-VARS              ;2998 0504
        LODI,R2 VAR08-VARS              ;299A 0610
        BSTA,UN PUSH                    ;299C 3F2176
        BCTA,UN NEXT                    ;299F 1F213F
;
;                                                       == R>
;                                                       Retrieve item from return stack. "r-from"
X29A2b  BYTE    082H,052H,0BEH          ;29A2 .R>
        WORD    X298Ab                  ;29A5 298A
;
X29A7t  WORD    P29A9                   ;29A7 29A9
;
P29A9   LODI,R3 ITCRP-VARS              ;29A9 0504
        LODI,R2 VAR08-VARS              ;29AB 0610
        BSTA,UN PULL                    ;29AD 3F2197
        LODI,R3 PSP-VARS                ;29B0 0502
        LODI,R2 VAR08-VARS              ;29B2 0610
        BSTA,UN PUSH                    ;29B4 3F2176
        BCTA,UN NEXT                    ;29B7 1F213F
;
;                                                       == R@
;                                                       Copy top of return stack on to stack. "r-fetch"
X29BAb  BYTE    082H,052H,0C0H          ;29BA .R
        WORD    X29A2b                  ;29BC 29A2
;
X29BEt  WORD    IC                      ;29BE 2471
;
;                                                       == OVER
;                                                       Make copy of second item on top
OVER@   BYTE    OVER-OVER@-3+4<<5
        BYTE    "OVE",128+"R"
        WORD    X29BAb
;
OVER    WORD    $+2
        LODI,R1 2                       ;29C9 0502
        LODA,R0 *PSP&pm,R1              ;29CB 0DE008
        STRA,R0 VAR08&pm                ;29CE CC0016
        LODA,R0 *PSP&pm,R1+             ;29D1 0DA008
        STRA,R0 VAR08+1&pm              ;29D4 CC0017
        BCTA,UN PSH8NXT                 ;29D7 1F20BF
;
;                                                       == DROP
;                                                       Discard top of stack
DROP@   BYTE    DROP-DROP@-3+4<<5
        BYTE    "DRO",128+"P"
        WORD    OVER@
;
DROP    WORD    $+2                     ;29E1 29E3
        LODI,R1 2                       ;29E3 0502
        LODI,R3 PSP-VARS                ;29E5 0702
        BSTA,UN ADDR1                   ;29E7 3F21AE    VARS[R3]+=R1
        BCTA,UN NEXT                    ;29EA 1F213F
;
;                                                       == SWAP
;                                                       Exchange values last entered
SWAP@   BYTE    SWAP-SWAP@-3+4<<5
        BYTE    "SWA",128+"P"
        WORD    DROP@
;
SWAP    WORD    $+2                     ;29F4 29F6
        LODI,R1 4                       ;29F6 0504
        LODI,R2 2                       ;29F8 0602
SWAPD   LODA,R0 *PSP&pm,R1-             ;29FA 0DC008
        STRZ    R3                      ;29FD C3
        LODA,R0 *PSP&pm,R2-             ;29FE 0EC008
        STRA,R0 *PSP&pm,R1              ;2A01 CDE008
        LODZ    R3                      ;2A04 03
        STRA,R0 *PSP&pm,R2              ;2A05 CEE008
        BRNR,R2 SWAPD                   ;2A08 5A70
        BCTA,UN NEXT                    ;2A0A 1F213F
;
;                                                      == PICK
PICK@   BYTE    PICK-PICK@-3-4<<5
        BYTE    "PIC",128+"K"
        WORD    SWAP@
;
PICK    WORD    $+2
        lodi,r3 PSP-VARS
        lodi,r2 VAR11-VARS
        bsta,un PULL                    ;VAR11=(SP+)
        bsta,un varshl                  ;VAR11*=2
        bsta,un varadd                  ;VAR11+=PSP
        lodi,r1 1
        loda,r0 *var11&pm
        stra,r0 var08&pm
        loda,r0 *var11&pm,r1
        stra,r0 var08+1&pm
        bcta,un psh8nxt
;
;                                                      == ROLL
ROLL@   BYTE    ROLL-ROLL@-3-4<<5
        BYTE    "ROL",128+"L"
        WORD    PICK@
;
ROLL    WORD    $+2
        lodi,r3 PSP-VARS
        lodi,r2 VAR11-VARS
        bsta,un PULL                    ;VAR11=(SP+)
        bsta,un varshl                  ;VAR11*=2
        lodi,r3 VAR12-VARS
        bsta,un varcpy                  ;VAR12=var11
        lodi,r3 PSP-VARS
        bsta,un varadd                  ;VAR11+=PSP
        lodi,r1 1
        loda,r0 *var11&pm
        stra,r0 var08&pm
        loda,r0 *var11&pm,r1
        stra,r0 var08+1&pm
;
        lodi,r2 0
        lodi,r1 2
ROLLA   lodi,r3 VAR12-VARS
        bsta,un subr1
        bcta,n  TOP8NXT                 ;VAR08 to stack and NEXT
        lodi,r3 VAR11-VARS
        bsta,un subr1
        loda,r0 *VAR11&pm,r2+
        stra,r0 *VAR11&pm,r1+
        loda,r0 *VAR11&pm,r2-
        stra,r0 *VAR11&pm,r1-
        bstr,un ROLLA
;
;                                                       == DUP duplicate last entered value
DUP@    BYTE    DUP-DUP@-3+4<<5
        BYTE    "DU",128+"P"
        WORD    ROLL@
;
DUP     WORD    $+2                     ;2A13 2A15
        LODA,R0 *PSP&pm                 ;2A15 0C8008
        STRA,R0 VAR08&pm                ;2A18 CC0016
        LODI,R1 1                       ;2A1B 0501
        LODA,R0 *PSP&pm,R1              ;2A1D 0DE008
        STRA,R0 VAR08+1&pm              ;2A20 CC0017
        BCTA,UN PSH8NXT                 ;2A23 1F20BF
;
;                                                       == +!
X2A26b  BYTE    082H,02BH,0A1H          ;2A26 .+!
        WORD    DUP@                    ;2A29 2A0D
;
X2A2Bt  WORD    P2A2D                   ;2A2B 2A2D      +!
;
P2A2D   LODI,R3 PSP-VARS                ;2A2D 0502
        LODI,R2 ITCX-VARS               ;2A2F 0606
        BSTA,UN PULL                    ;2A31 3F2197 
;        LODI,R3 PSP-VARS                ;2A34 0502
        LODI,R2 VAR08-VARS              ;2A36 0610
        BSTA,UN PULL                    ;2A38 3F2197 
        LODI,R1 001H                    ;2A3B 0501
        LODA,R0 *ITCX&pm,R1             ;2A3D 0DE00C
        ADDA,R0 VAR08+1&pm              ;2A40 8C0017
        STRA,R0 *ITCX&pm,R1             ;2A43 CDE00C
        PPSL    WC                      ;2A46 7708
        LODA,R0 *ITCX&pm                ;2A48 0C800C
        ADDA,R0 VAR08&pm                ;2A4B 8C0016
        STRA,R0 *ITCX&pm                ;2A4E CC800C
        CPSL    WC                      ;2A51 7508
        BCTA,UN NEXT                    ;2A53 1F213F
;
;                                                       == @ "fetch"
;                                                       replace address by number at address
FETCH@  BYTE    FETCH-FETCH@-3+4<<5
        BYTE    128+"@"
        WORD    X2A26b
;
FETCH   WORD    $+2
        LODA,R0 *PSP&pm                 ;2A5C 0C8008
        STRA,R0 VAR08&pm                ;2A5F CC0016
        LODI,R1 1                       ;2A62 0501
        LODA,R0 *PSP&pm,R1              ;2A64 0DE008
        STRA,R0 VAR08+1&pm              ;2A67 CC0017
        LODA,R0 *VAR08&pm,R1            ;2A6A 0DE016
        STRZ    R2                      ;2A6D C2
        LODA,R0 *VAR08&pm               ;2A6E 0C8016
        BCTA,UN R0R2NXT                 ;2A71 1F2768
;
;                                                       == C@ "c-fetch"
;                                                       fetch least significant byte only
CFETCH@ BYTE    CFETCH-CFETCH@-3+4<<5
        BYTE    "C",128+"@"
        WORD    FETCH@                  ;2A77 2A56
;
CFETCH  WORD    $+2                     ;2A79 2A7B
        LODA,R0 *PSP&pm                 ;2A7B 0C8008
        STRA,R0 VAR08&pm                ;2A7E CC0016
        LODI,R1 1                       ;2A81 0501
        LODA,R0 *PSP&pm,R1              ;2A83 0DE008
        STRA,R0 VAR08+1&pm              ;2A86 CC0017
        LODA,R2 *VAR08&pm               ;2A89 0E8016
        EORZ    R0                      ;2A8C 20
        BCTA,UN R0R2NXT                 ;2A8D 1F2768
;
;                                                       == ! "store"
;                                                       store n at address
X2A90b  BYTE    081H,0A1H               ;2A90 .!
        WORD    CFETCH@                  ;2A92 2A74
;
STORE  WORD    P2A96                   ;2A94 2A96
;
P2A96   LODI,R3 PSP-VARS                ;2A96 0502
        LODI,R2 ITCX-VARS               ;2A98 0606
        BSTA,UN PULL                    ;2A9A 3F2197 
;        LODI,R3 PSP-VARS                ;2A9D 0502
        LODI,R2 VAR08-VARS              ;2A9F 0610
        BSTA,UN PULL                    ;2AA1 3F2197 
        LODI,R1 1                       ;2AA4 0501
        LODA,R0 VAR08&pm                ;2AA6 0C0016
        STRA,R0 *ITCX&pm                ;2AA9 CC800C
        LODA,R0 VAR08+1&pm              ;2AAC 0C0017
        STRA,R0 *ITCX&pm,R1             ;2AAF CDE00C
        BCTA,UN NEXT                    ;2AB2 1F213F
;
;                                                       == C!  "c-store"
;                                                       Store least significant byte only.
X2AB5b  BYTE    082H,043H,0A1H          ;2AB5 .C!
        WORD    X2A90b                  ;2AB8 2A90
;
X2ABAt  WORD    P2ABC                   ;2ABA 2ABC
;
P2ABC   LODI,R3 PSP-VARS                ;2ABC 0502
        LODI,R2 ITCX-VARS               ;2ABE 0606
        BSTA,UN PULL                    ;2AC0 3F2197 
;        LODI,R3 PSP-VARS                ;2AC3 0502
        LODI,R2 VAR08-VARS              ;2AC5 0610
        BSTA,UN PULL                    ;2AC7 3F2197 
        LODA,R0 VAR08+1&pm              ;2ACA 0C0017
        STRA,R0 *ITCX&pm                ;2ACD CC800C
        BCTA,UN NEXT                    ;2AD0 1F213F
;
;                                                       == M*
X2AD3b  BYTE    082H,04DH,0AAH          ;2AD3 .M*
        WORD    X2AB5b                  ;2AD6 2AB5
;
X2AD8p  WORD    NEST                    ;2AD8 2109
        WORD    OVER                    ;2ADA 29C7      OVER
        WORD    OVER                    ;2ADC 29C7      OVER
        WORD    X2799t                  ;2ADE 2799      XOR
        WORD    X298Ft                  ;2AE0 298F      >R
        WORD    X2B99p                  ;2AE2 2B99      ABS
        WORD    SWAP                    ;2AE4 29F4      SWAP
        WORD    X2B99p                  ;2AE6 2B99      ABS
        WORD    X2645t                  ;2AE8 2645      U*
        WORD    X29A7t                  ;2AEA 29A7      R>
        WORD    X292Fp                  ;2AEC 292F      D+-
        WORD    UNNEST                  ;2AEE 21DB      ;S
;
;                                                       == *
X2AF0b  BYTE    081H,0AAH               ;2AF0 .*
        WORD    X2AD3b                  ;2AF2 2AD3
;
X2AF4p  WORD    NEST                    ;2AF4 2109
        WORD    X2AD8p                  ;2AF6 2AD8      M*
        WORD    DROP                    ;2AF8 29E1      DROP
        WORD    UNNEST                  ;2AFA 21DB      ;S
;
;                                                       == /M
X2AFCb  BYTE    082H,04DH,0AFH          ;2AFC .M/
        WORD    X2AF0b                  ;2AFF 2AF0
;
X2B01p  WORD    NEST                    ;2B01 2109
        WORD    OVER                    ;2B03 29C7      OVER
        WORD    X298Ft                  ;2B05 298F      >R
        WORD    X298Ft                  ;2B07 298F      >R
        WORD    X2BAEp                  ;2B09 2BAE      DABS
        WORD    X29BEt                  ;2B0B 29BE      R
        WORD    X2B99p                  ;2B0D 2B99      ABS
        WORD    X26A2t                  ;2B0F 26A2      U/
        WORD    X29A7t                  ;2B11 29A7      R>
        WORD    X29BEt                  ;2B13 29BE      R
        WORD    X2799t                  ;2B15 2799      XOR
        WORD    X291Dp                  ;2B17 291D      +-
        WORD    SWAP                    ;2B19 29F4      SWAP
        WORD    X29A7t                  ;2B1B 29A7      R>
        WORD    X291Dp                  ;2B1D 291D      +-
        WORD    SWAP                    ;2B1F 29F4      SWAP
        WORD    UNNEST                  ;2B21 21DB      ;S
;
;                                                       == /MOD
X2B23b  BYTE    084H,02FH,04DH,04FH,0C4H
        WORD    X2AFCb                  ;2B28 2AFC
;
X2B2Ap  WORD    NEST                    ;2B2A 2109
        WORD    X298Ft                  ;2B2C 298F      >R
        WORD    X2904t                  ;2B2E 2904      S->
        WORD    X29A7t                  ;2B30 29A7      R>
        WORD    X2B01p                  ;2B32 2B01      /M
        WORD    UNNEST                  ;2B34 21DB      ;S
;
;                                                       == /
X2B36b  BYTE    081H,0AFH               ;2B36 ./
        WORD    X2B23b                  ;2B38 2B23
;
X2B3Ap  WORD    NEST                    ;2B3A 2109
        WORD    X2B2Ap                  ;2B3C 2B2A      /MOD
        WORD    SWAP                    ;2B3E 29F4      SWAP
        WORD    DROP                    ;2B40 29E1      DROP
        WORD    UNNEST                  ;2B42 21DB      ;S
;
;                                                       == MOD
X2B44b  BYTE    083H,04DH,04FH,0C4H     ;2B44 .MOD
        WORD    X2B36b                  ;2B48 2B36
;
X2B4Ap  WORD    NEST                    ;2B4A 2109
        WORD    X2B2Ap                  ;2B4C 2B2A      /MOD
        WORD    DROP                    ;2B4E 29E1      DROP
        WORD    UNNEST                  ;2B50 21DB      ;S
;
;                                                       == */MOD
X2B52b  BYTE    085H,02AH,02FH,04DH,04FH,0C4H
        WORD    X2B44b                  ;2B58 2B44
;
X2B5Ap  WORD    NEST                    ;2B5A 2109
        WORD    X298Ft                  ;2B5C 298F      >R
        WORD    X2AD8p                  ;2B5E 2AD8      M*
        WORD    X29A7t                  ;2B60 29A7      R>
        WORD    X2B01p                  ;2B62 2B01      /M
        WORD    UNNEST                  ;2B64 21DB      ;S
;
;                                                       == */
X2B66b  BYTE    082H,02AH,0AFH          ;2B66 .*/
        WORD    X2B52b                  ;2B69 2B52
;
X2B6Bp  WORD    NEST                    ;2B6B 2109
        WORD    X2B5Ap                  ;2B6D 2B5A      */MOD
        WORD    SWAP                    ;2B6F 29F4      SWAP
        WORD    DROP                    ;2B71 29E1      DROP
        WORD    UNNEST                  ;2B73 21DB      ;S
;
;                                                       == M/MOD
X2B75b  BYTE    085H,04DH,02FH,04DH,04FH,0C4H
        WORD    X2B66b                  ;2B7B 2B66
;
X2B7Dp  WORD    NEST                    ;2B7D 2109
        WORD    X298Ft                  ;2B7F 298F      >R
        WORD    ZERO                    ;2B81 2C7D      0 (zero)
        WORD    X29BEt                  ;2B83 29BE      R
        WORD    X26A2t                  ;2B85 26A2      U/
        WORD    X29A7t                  ;2B87 29A7      R>
        WORD    SWAP                    ;2B89 29F4      SWAP
        WORD    X298Ft                  ;2B8B 298F      >R
        WORD    X26A2t                  ;2B8D 26A2      U/
        WORD    X29A7t                  ;2B8F 29A7      R>
        WORD    UNNEST                  ;2B91 21DB      ;S
;
;                                                       == ABS
X2B93b  BYTE    083H,041H,042H,0D3H     ;2B93 .ABS
        WORD    X2B75b                  ;2B97 2B75
;
X2B99p  WORD    NEST                    ;2B99 2109
        WORD    DUP                     ;2B9B 2A13      DUP
        WORD    X2962t                  ;2B9D 2962      0<
        WORD    ZBRAN                   ;2B9F 23AD      0BRANCH
        WORD    B2BA5-$                 ;2BA1 0004
        WORD    X27DFt                  ;2BA3 27DF      MINUS
B2BA5   WORD    UNNEST                  ;2BA5 21DB      ;S
;
;                                                       == DABS
X2BA7b  BYTE    084H,044H,041H,042H,0D3H
        WORD    X2B93b                  ;2BAC 2B93
;
X2BAEp  WORD    NEST                    ;2BAE 2109
        WORD    DUP                     ;2BB0 2A13      DUP
        WORD    X2962t                  ;2BB2 2962      0<
        WORD    ZBRAN                   ;2BB4 23AD      0BRANCH
        WORD    B2BBA-$                 ;2BB6 0004
        WORD    X2850t                  ;2BB8 2850      DMINUS
B2BBA   WORD    UNNEST                  ;2BBA 21DB      ;S
;
;                                                       == <BUILDS
X2BBCb  BYTE    087H,03CH,042H,055H,049H,04CH,044H,0D3H
        WORD    X2BA7b                  ;2BC4 2BA7
;
X2BC6p  WORD    NEST                    ;2BC6 2109
        WORD    ZERO                    ;2BC8 2C7D      0 (zero)
        WORD    X2C3Cp                  ;2BCA 2C3C      CONSTANT
        WORD    UNNEST                  ;2BCC 21DB      ;S
;
;                                                       == DOES>
X2BCEb  BYTE    085H,044H,04FH,045H,053H,0BEH
        WORD    X2BBCb                  ;2BD4 2BBC
;
X2BD6p  WORD    NEST                    ;2BD6 2109
        WORD    X29A7t                  ;2BD8 29A7      R>
        WORD    X2FE1p                  ;2BDA 2FE1      LATEST
        WORD    X3023p                  ;2BDC 3023      PFA
        WORD    STORE                   ;2BDE 2A94      !
        WORD    X314Bp                  ;2BE0 314B      (;CODE)
;
P2BE2c  LODI,R3 ITCRP-VARS              ;2BE2 0504
        LODI,R2 ITCIP-VARS              ;2BE4 0600
        BSTA,UN PUSH                    ;2BE6 3F2176
        LODI,R1 2                       ;2BE9 0502
        LODA,R0 *ITCW&pm,R1             ;2BEB 0DE025
        STRA,R0 ITCIP&pm                ;2BEE CC0006
        LODA,R0 *ITCW&pm,R1+            ;2BF1 0DA025
        STRA,R0 ITCIP+1&pm              ;2BF4 CC0007
        LODI,R1 4                       ;2BF7 0504
        LODI,R3 ITCW-VARS               ;2BF9 071F
        BSTA,UN ADDR1                   ;2BFB 3F21AE    VARS[R3]+=R1
        LODI,R3 PSP-VARS                ;2BFE 0502
        LODI,R2 ITCW-VARS               ;2C00 061F
        BSTA,UN PUSH                    ;2C02 3F2176
        BCTA,UN NEXT                    ;2C05 1F213F
;
;                                                       == TOGGLE
X2C08b  BYTE    086H,054H,04FH,047H,047H,04CH,0C5H
        WORD    X2BCEb                  ;2C0F 2BCE
;
X2C11p  WORD    NEST                    ;2C11 2109
        WORD    OVER                    ;2C13 29C7      OVER
        WORD    CFETCH                  ;2C15 2A79      CA
        WORD    X2799t                  ;2C17 2799      XOR
        WORD    SWAP                    ;2C19 29F4      SWAP
        WORD    X2ABAt                  ;2C1B 2ABA      C!
        WORD    UNNEST                  ;2C1D 21DB      ;S
;
;                                                       == ;
X2C1Fb  BYTE    0C1H,0BBH               ;2C1F A;
        WORD    X2C08b                  ;2C21 2C08
;
X2C23p  WORD    NEST                    ;2C23 2109
        WORD    X30A3p                  ;2C25 30A3      ?CSP
        WORD    X30D8p                  ;2C27 30D8      COMPILE
        WORD    UNNEST                  ;2C29 21DB      ;S
        WORD    X3110p                  ;2C2B 3110      SMUDGE
        WORD    X30EEp                  ;2C2D 30EE      [
        WORD    UNNEST                  ;2C2F 21DB      ;S
;
;                                                       == CONSTANT
X2C31b  BYTE    088H,043H,04FH,04EH,053H,054H,041H,04EH,0D4H
        WORD    X2C1Fb                  ;2C3A 2C1F
;
X2C3Cp  WORD    NEST                    ;2C3C 2109
        WORD    X35A3p                  ;2C3E 35A3      CREATE
        WORD    X3110p                  ;2C40 3110      SMUDGE
        WORD    X2F1Ep                  ;2C42 2F1E      ,
        WORD    X314Bp                  ;2C44 314B      (;CODE)
;
PSHCON  LODI,R1 2                       ;2C46 0502
        LODA,R0 *ITCW&pm,R1             ;2C48 0DE025
        STRA,R0 VAR08&pm                ;2C4B CC0016
        LODA,R0 *ITCW&pm,R1+            ;2C4E 0DA025
        STRA,R0 VAR08+1&pm              ;2C51 CC0017
        BCTA,UN PSH8NXT                 ;2C54 1F20BF
;
;                                                       == VARIABLE
X2C57b  BYTE    088H,056H,041H,052H,049H,041H,042H,04CH,0C5H
        WORD    X2C31b                  ;2C60 2C31
;
X2C62p  WORD    NEST                    ;2C62 2109
        WORD    X2C3Cp                  ;2C64 2C3C      CONSTANT
        WORD    X314Bp                  ;2C66 314B      (;CODE)
;
P2C68c  LODI,R1 2                       ;2C68 0502
        LODI,R3 ITCW-VARS               ;2C6A 071F
        BSTA,UN ADDR1                   ;2C6C 3F21AE    VARS[R3]+=R1
        LODI,R3 PSP-VARS                ;2C6F 0502
        LODI,R2 ITCW-VARS               ;2C71 061F
        BSTA,UN PUSH                    ;2C73 3F2176
        BCTA,UN NEXT                    ;2C76 1F213F
;
;                                       == 0 (zero)
ZERO@   BYTE    ZERO-ZERO@-3+4<<5
        BYTE    128+"0"
        WORD    X2C57b
;
ZERO    WORD    PSHCON
        WORD    0
;
;                                       == 1
ONE@    BYTE    ONE-ONE@-3+4<<5
        BYTE    128+"1"
        WORD    ZERO@
;
ONE     WORD    PSHCON
        WORD    1
;
;                                       == 2
TWO@    BYTE    TWO-TWO@-3+4<<5
        BYTE    128+"2"
        WORD    ONE@
;
TWO     WORD    PSHCON
        WORD    2
;
;                                       == 3
THREE@  BYTE    THREE-THREE@-3+4<<5
        BYTE    128+"3"
        WORD    TWO@
;
THREE   WORD    PSHCON
        WORD    3
;
;                                                       == BL
X2C99b  BYTE    082H,042H,0CCH          ;2C99 .BL
        WORD    THREE@                  ;2C9C 2C91
;
X2C9Ep  WORD    PSHCON                  ;2C9E 2C46
        WORD    32                      ;2CA0 0020
;
;                                                       == FIRST
X2CA2b  BYTE    085H,046H,049H,052H,053H,0D4H
        WORD    X2C99b                  ;2CA8 2C99
;
X2CAAp  WORD    PSHCON                  ;2CAA 2C46
        WORD    X4A70fp                 ;2CAC 4A70
;
;                                                       == LIMIT
X2CAEb  BYTE    085H,04CH,049H,04DH,049H,0D4H
        WORD    X2CA2b                  ;2CB4 2CA2
;
X2CB6p  WORD    PSHCON                  ;2CB6 2C46
        WORD    TXTINPB                 ;2CB8 4E70
;
;                                                       == USER
X2CBAb  BYTE    084H,055H,053H,045H,0D2H
        WORD    X2CAEb                  ;2CBF 2CAE
;
X2CC1p  WORD    NEST                    ;2CC1 2109
        WORD    X2C3Cp                  ;2CC3 2C3C      CONSTANT
        WORD    X314Bp                  ;2CC5 314B      (;CODE)
;
;                                                       == VAR08=*ITCW+VAR15 then PSH8NXT
PSHSV   LODI,R1 2                       ;2CC7 0502
        LODA,R0 *ITCW&pm,R1+            ;2CC9 0DA025
        ADDA,R0 VAR15+1&pm              ;2CCC 8C0024
        STRA,R0 VAR08+1&pm              ;2CCF CC0017
        PPSL    WC                      ;2CD2 7708
        LODA,R0 *ITCW&pm,R1-            ;2CD4 0DC025
        ADDA,R0 VAR15&pm                ;2CD7 8C0023
        STRA,R0 VAR08&pm                ;2CDA CC0016
        CPSL    WC                      ;2CDD 7508
        BCTA,UN PSH8NXT                 ;2CDF 1F20BF
;
;                                                       == +ORIGIN
X2CE2b  BYTE    087H,02BH,04FH,052H,049H,047H,049H,0CEH
        WORD    X2CBAb                  ;2CEA 2CBA
;
X2CECp  WORD    NEST                    ;2CEC 2109
        WORD    PSHNW                   ;2CEE 2376      LIT
        WORD    ORIGIN                  ;2CF0 2000
        WORD    X27B8t                  ;2CF2 27B8      +
        WORD    UNNEST                  ;2CF4 21DB      ;S
;
;                                       == S0
SZERO@  BYTE    SZERO-SZERO@-3+4<<5
        BYTE    "S",128+"0"
        WORD    X2CE2b
;
SZERO   WORD    PSHSV
        WORD    SV_S0-SVARS             ;
;
;                                       == R0
RZERO@  BYTE    RZERO-RZERO@-3+4<<5
        BYTE    "R",128+"0"
        WORD    SZERO@
;
RZERO   WORD    PSHSV
        WORD    SV_R0-SVARS             ;
;
;                                       == TIB
TIB@    BYTE    TIB-TIB@-3+4<<5
        BYTE    "TI",128+"B"
        WORD    RZERO@
;
TIB     WORD    PSHSV
        WORD    SV_TIB-SVARS            ;
;
;                                       == WIDTH
WIDTH@  BYTE    WIDTH_-WIDTH@-3+4<<5
        BYTE    "WIDT",128+"H"
        WORD    TIB@
;
WIDTH_   WORD    PSHSV
        WORD    SV_WIDT-SVARS           ;
;
;                                       == WARNING
WARNNG@ BYTE    WARNNG-WARNNG@-3+4<<5
        BYTE    "WARNIN",128+"G"
        WORD    WIDTH@
;
WARNNG  WORD    PSHSV
        WORD    SV_WARN-SVARS           ;
;
;                                       == FENCE
FENCE@  BYTE    FENCE-FENCE@-3+4<<5
        BYTE    "FENC",128+"E"
        WORD    WARNNG@
;
FENCE   WORD    PSHSV
        WORD    SV_FENC-SVARS           ;
;
;                                       == DP
DP@     BYTE    DP-DP@-3+4<<5
        BYTE    "D",128+"P"
        WORD    FENCE@
;
DP      WORD    PSHSV
        WORD    SV_DP-SVARS             ;
;
;                                       == VOC-LINK
VOCLNK@ BYTE    VOCLNK-VOCLNK@-3+4<<5
        BYTE    "VOC-LIN",128+"K"
        WORD    DP@
;
VOCLNK  WORD    PSHSV
        WORD    SV_VOLK-SVARS           ;
;
;                                       == BLK
BLK@    BYTE    BLK-BLK@-3+4<<5
        BYTE    "BL",128+"K"
        WORD    VOCLNK@
;
BLK     WORD    PSHSV
        WORD    SV_BLK-SVARS            ;
;
;                                       == IN
IN@     BYTE    IN-IN@-3+4<<5
        BYTE    "I",128+"N"
        WORD    BLK@
;
IN      WORD    PSHSV
        WORD    SV_IN-SVARS             ;
;
;                                       == OUT
OUT@    BYTE    OUT-OUT@-3+4<<5
        BYTE    "OU",128+"T"
        WORD    IN@
;
OUT     WORD    PSHSV
        WORD    SV_OUT-SVARS            ;
;
;                                                       == SCR
SCR@    BYTE    SCR-SCR@-3+4<<5
        BYTE    "SC",128+"R"
        WORD    OUT@
;
SCR     WORD    PSHSV
        WORD    SV_SRC-SVARS            ;
;
;                                                       == OFFSET
OFFSET@ BYTE    OFFSET-OFFSET@-3+4<<5
        BYTE    "OFFSE",128+"T"
        WORD    SCR@
;
OFFSET  WORD    PSHSV
        WORD    SV_OFFS-SVARS           ;
;
;                                                       == CONTEXT
;                                                       system variable pointing to vocabulary where word names are searched for.
CONTXT@ BYTE    CONTXT-CONTXT@-3+4<<5
        BYTE    "CONTEX",128+"T"
        WORD    OFFSET@
;
CONTXT  WORD    PSHSV                   ;
        WORD    SV_CTXT-SVARS           ;
;
;                                                       == CURRENT
;                                                       system variable pointing to vocabulary where new definitions are put.
CURRNT@ BYTE    CURRNT-CURRNT@-3+4<<5
        BYTE    "CURREN",128+"T"
        WORD    CONTXT@
;
CURRNT  WORD    PSHSV                   ;
        WORD    SV_CURR-SVARS           ;
;
;                                                       == STATE
STATE@  BYTE    STATE-STATE@-3+4<<5
        BYTE    "STAT",128+"E"
        WORD    CURRNT@
;
STATE   WORD    PSHSV
        WORD    SV_STAT-SVARS           ;
;
;                                                       == BASE System variable containing Radix for numeric conversions
BASE@   BYTE    BASE_-BASE@-3+4<<5
        BYTE    "BAS",128+"E"
        WORD    STATE@
;
BASE_   WORD    PSHSV
        WORD    SV_BASE-SVARS           ;
;
;                                       == DPL
DPL@    BYTE    DPL-DPL@-3+4<<5
        BYTE    "DP",128+"L"
        WORD    BASE@
;
DPL     WORD    PSHSV
        WORD    SV_DPL-SVARS            ;
;
;                                       == FLD
FLD@    BYTE    FLD-FLD@-3+4<<5
        BYTE    "FL",128+"D"
        WORD    DPL@
;
FLD     WORD    PSHSV
        WORD    SV_FLD-SVARS            ;
;
;                                       == CSP
CSP@    BYTE    CSP-CSP@-3+4<<5
        BYTE    "CS",128+"P"
        WORD    FLD@
;
CSP     WORD    PSHSV
        WORD    SV_CSP-SVARS            ;
;
;                                       == R#
RSHARP@ BYTE    RSHARP-RSHARP@-3-4<<5
        BYTE    "R",128+"#"
        WORD    CSP@
;
RSHARP  WORD    PSHSV
        WORD    SV_RNUM-SVARS           ;
;
;                                       == HLD
HLD@    BYTE    HLD-HLD@-3+4<<5
        BYTE    "HL",128+"D"
        WORD    RSHARP@
;
HLD     WORD    PSHSV
        WORD    SV_HLD-SVARS            ;
;
;                                       == COLUMNS
COLMNS@ BYTE    COLMNS-COLMNS@-3+4<<5
        BYTE    "COLUMN",128+"S"
        WORD    HLD@
;
COLMNS  WORD    PSHSV
        WORD    SV_CLMS-SVARS           ;number of columns on screen ?
;
;                                                       == HERE
;                                                       leave address of next available dictionary location
X2EFBb  BYTE    084H,048H,045H,052H,0C5H
        WORD    COLMNS@                 ;2F00 2EED
;
X2F02p  WORD    NEST                    ;2F02 2109
        WORD    DP                      ;2F04 2E42      DP
        WORD    FETCH                   ;2F06 2A5A      @
        WORD    UNNEST                  ;2F08 21DB      ;S
;
;                                                       == ALLOT
X2F0Ab  BYTE    085H,041H,04CH,04CH,04FH,0D4H
        WORD    X2EFBb                  ;2F10 2EFB
;
X2F12p  WORD    NEST                    ;2F12 2109
        WORD    DP                      ;2F14 2E42      DP
        WORD    X2A2Bt                  ;2F16 2A2B      +!
        WORD    UNNEST                  ;2F18 21DB      ;S
;
;                                                       == ,
X2F1Ab  BYTE    081H,0ACH               ;2F1A .,
        WORD    X2F0Ab                  ;2F1C 2F0A
;
X2F1Ep  WORD    NEST                    ;2F1E 2109
        WORD    X2F02p                  ;2F20 2F02      HERE
        WORD    STORE                   ;2F22 2A94      !
        WORD    TWO                     ;2F24 2C8D      2
        WORD    X2F12p                  ;2F26 2F12      ALLOT
        WORD    UNNEST                  ;2F28 21DB      ;S
;
;                                                       == C,
X2F2Ab  BYTE    082H,043H,0ACH          ;2F2A .C,
        WORD    X2F1Ab                  ;2F2D 2F1A
;
X2F2Fp  WORD    NEST                    ;2F2F 2109
        WORD    X2F02p                  ;2F31 2F02      HERE
        WORD    X2ABAt                  ;2F33 2ABA      C!
        WORD    ONE                     ;2F35 2C85      1
        WORD    X2F12p                  ;2F37 2F12      ALLOT
        WORD    UNNEST                  ;2F39 21DB      ;S
;
;                                                       == -
X2F3Bb  BYTE    081H,0ADH               ;2F3B .-
        WORD    X2F2Ab                  ;2F3D 2F2A
;
X2F3Fp  WORD    NEST                    ;2F3F 2109
        WORD    X27DFt                  ;2F41 27DF      MINUS
        WORD    X27B8t                  ;2F43 27B8      +
        WORD    UNNEST                  ;2F45 21DB      ;S
;
;                                                       == =
X2F47b  BYTE    081H,0BDH               ;2F47 .=
        WORD    X2F3Bb                  ;2F49 2F3B
;
X2F4Bp  WORD    NEST                    ;2F4B 2109
        WORD    X2F3Fp                  ;2F4D 2F3F      -
        WORD    X2940t                  ;2F4F 2940      0=
        WORD    UNNEST                  ;2F51 21DB      ;S
;
;                                                       == >
X2F53b  BYTE    081H,0BEH               ;2F53 .>
        WORD    X2F47b                  ;2F55 2F47
;
X2F57p  WORD    NEST                    ;2F57 2109
        WORD    SWAP                    ;2F59 29F4      SWAP
        WORD    X28D2t                  ;2F5B 28D2      <
        WORD    UNNEST                  ;2F5D 21DB      ;S
;
;                                                       == SPACE Type one space
X2F5Fb  BYTE    085H,053H,050H,041H,043H,0C5H
        WORD    X2F53b                  ;2F65 2F53
;
X2F67p  WORD    NEST                    ;2F67 2109
        WORD    X2C9Ep                  ;2F69 2C9E      BL
        WORD    EMIT                    ;2F6B 223B      EMIT
        WORD    UNNEST                  ;2F6D 21DB      ;S
;
;                                                       == MIN
X2F6Fb  BYTE    083H,04DH,049H,0CEH     ;2F6F .MIN
        WORD    X2F5Fb                  ;2F73 2F5F
;
X2F75p  WORD    NEST                    ;2F75 2109
        WORD    OVER                    ;2F77 29C7      OVER
        WORD    OVER                    ;2F79 29C7      OVER
        WORD    X2F57p                  ;2F7B 2F57      >
        WORD    ZBRAN                   ;2F7D 23AD      0BRANCH
        WORD    B2F83-$                 ;2F7F 0004
        WORD    SWAP                    ;2F81 29F4      SWAP
B2F83   WORD    DROP                    ;2F83 29E1      DROP
        WORD    UNNEST                  ;2F85 21DB      ;S
;
;                                                       == MAX
X2F87b  BYTE    083H,04DH,041H,0D8H     ;2F87 .MAX
        WORD    X2F6Fb                  ;2F8B 2F6F
;
X2F8Dp  WORD    NEST                    ;2F8D 2109
        WORD    OVER                    ;2F8F 29C7      OVER
        WORD    OVER                    ;2F91 29C7      OVER
        WORD    X28D2t                  ;2F93 28D2      <
        WORD    ZBRAN                   ;2F95 23AD      0BRANCH
        WORD    B2F9B-$                 ;2F97 0004
        WORD    SWAP                    ;2F99 29F4      SWAP
B2F9B   WORD    DROP                    ;2F9B 29E1      DROP
        WORD    UNNEST                  ;2F9D 21DB      ;S
;
;                                                       == ?DUP
QDUP@   BYTE    QDUP-QDUP@-3+4<<5
        BYTE    "?DU",128+"P"
        WORD    X2F87b
;
QDUP    WORD    NEST                    ;2FA6 2109
        WORD    DUP                     ;2FA8 2A13      DUP
        WORD    ZBRAN                   ;2FAA 23AD      0BRANCH
        WORD    QDUPD-$                 ;2FAC 0004
        WORD    DUP                     ;2FAE 2A13      DUP
QDUPD   WORD    UNNEST                  ;2FB0 21DB      ;S
;
;                                                       == TRAVERSE
X2FB2b  BYTE    088H,054H,052H,041H,056H,045H,052H,053H,0C5H
        WORD    QDUP@                  ;2FBB 2F9F
;
X2FBDp  WORD    NEST                    ;2FBD 2109
        WORD    SWAP                    ;2FBF 29F4      SWAP
B2FC1   WORD    OVER                    ;2FC1 29C7      OVER
        WORD    X27B8t                  ;2FC3 27B8      +
        WORD    PSHNB                   ;2FC5 2382
        BYTE    127                     ;2FC7 .
        WORD    OVER                    ;2FC8 29C7      OVER
        WORD    CFETCH                  ;2FCA 2A79      C@
        WORD    X28D2t                  ;2FCC 28D2      <
        WORD    ZBRAN                   ;2FCE 23AD      0BRANCH
        WORD    B2FC1-$                 ;2FD0 FFF1
        WORD    SWAP                    ;2FD2 29F4      SWAP
        WORD    DROP                    ;2FD4 29E1      DROP
        WORD    UNNEST                  ;2FD6 21DB      ;S
;
;                                                       == LATEST
X2FD8b  BYTE    086H,04CH,041H,054H,045H,053H,0D4H
        WORD    X2FB2b                  ;2FDF 2FB2
;
X2FE1p  WORD    NEST                    ;2FE1 2109
        WORD    CURRNT                  ;2FE3 2EA1      CURRENT
        WORD    FETCH                   ;2FE5 2A5A      @
        WORD    FETCH                   ;2FE7 2A5A      @
        WORD    UNNEST                  ;2FE9 21DB      ;S
;
;                                                       == LFA
X2FEBb  BYTE    083H,04CH,046H,0C1H     ;2FEB .LFA
        WORD    X2FD8b                  ;2FEF 2FD8
;
X2FF1p  WORD    NEST                    ;2FF1 2109
        WORD    PSHNB                   ;2FF3 2382
        BYTE    4                       ;2FF5 .         4
        WORD    X2F3Fp                  ;2FF6 2F3F      -
        WORD    UNNEST                  ;2FF8 21DB      ;S
;
;                                                       == CFA
X2FFAb  BYTE    083H,043H,046H,0C1H     ;2FFA .CFA
        WORD    X2FEBb                  ;2FFE 2FEB
;
X3000p  WORD    NEST                    ;3000 2109
        WORD    TWO                     ;3002 2C8D      2
        WORD    X2F3Fp                  ;3004 2F3F      -
        WORD    UNNEST                  ;3006 21DB      ;S
;
;                                                       == NFA
X3008b  BYTE    083H,04EH,046H,0C1H     ;3008 .NFA
        WORD    X2FFAb                  ;300C 2FFA
;
X300Ep  WORD    NEST                    ;300E 2109
        WORD    PSHNB                   ;3010 2382
        BYTE    5                       ;3012 .
        WORD    X2F3Fp                  ;3013 2F3F      -
        WORD    ONE                     ;3015 2C85      1
        WORD    X27DFt                  ;3017 27DF      MINUS
        WORD    X2FBDp                  ;3019 2FBD      TRAVERSE
        WORD    UNNEST                  ;301B 21DB      ;S
;
;                                                       == PFA
X301Db  BYTE    083H,050H,046H,0C1H     ;301D .PFA
        WORD    X3008b                  ;3021 3008
;
X3023p  WORD    NEST                    ;3023 2109
        WORD    ONE                     ;3025 2C85      1
        WORD    X2FBDp                  ;3027 2FBD      TRAVERSE
        WORD    PSHNB                   ;3029 2382
        BYTE    5                       ;302B .
        WORD    X27B8t                  ;302C 27B8      +
        WORD    UNNEST                  ;302E 21DB      ;S
;
;                                                       == !CSP
X3030b  BYTE    084H,021H,043H,053H,0D0H
        WORD    X301Db                  ;3035 301D
;
X3037p  WORD    NEST                    ;3037 2109
        WORD    SPFCH                   ;3039 232F      SP@
        WORD    CSP                     ;303B 2ED6      CSP
        WORD    STORE                   ;303D 2A94      !
        WORD    UNNEST                  ;303F 21DB      ;S
;
;                                                       == ?ERROR
X3041b  BYTE    086H,03FH,045H,052H,052H,04FH,0D2H
        WORD    X3030b                  ;3048 3030
;
X304Ap  WORD    NEST                    ;304A 2109
        WORD    SWAP                    ;304C 29F4      SWAP
        WORD    ZBRAN                   ;304E 23AD      0BRANCH
        WORD    B3058-$                 ;3050 0008
        WORD    X353Ep                  ;3052 353E      ERROR
        WORD    BRANCH                  ;3054 23A1      BRANCH
        WORD    B305A-$                 ;3056 0004
B3058   WORD    DROP                    ;3058 29E1      DROP
B305A   WORD    UNNEST                  ;305A 21DB      ;S
;
;                                                       == ?COMP
X305Cb  BYTE    085H,03FH,043H,04FH,04DH,0D0H
        WORD    X3041b                  ;3062 3041
;
X3064p  WORD    NEST                    ;3064 2109
        WORD    STATE                   ;3066 2EAD      STATE
        WORD    FETCH                   ;3068 2A5A      @
        WORD    X2940t                  ;306A 2940      0=
        WORD    PSHNB                   ;306C 2382
        BYTE    17                      ;306E .
        WORD    X304Ap                  ;306F 304A      ?ERROR
        WORD    UNNEST                  ;3071 21DB      ;S
;
;                                                       == ?EXEC
X3073b  BYTE    085H,03FH,045H,058H,045H,0C3H
        WORD    X305Cb                  ;3079 305C
;
X307Bp  WORD    NEST                    ;307B 2109
        WORD    STATE                   ;307D 2EAD      STATE
        WORD    FETCH                   ;307F 2A5A      @
        WORD    PSHNB                   ;3081 2382
        BYTE    012H                    ;3083 .
        WORD    X304Ap                  ;3084 304A      ?ERROR
        WORD    UNNEST                  ;3086 21DB      ;S
;
;                                                       == ?PAIRS
X3088b  BYTE    086H,03FH,050H,041H,049H,052H,0D3H
        WORD    X3073b                  ;308F 3073
;
X3091p  WORD    NEST                    ;3091 2109
        WORD    X2F3Fp                  ;3093 2F3F      -
        WORD    PSHNB                   ;3095 2382
        BYTE    013H                    ;3097 .
        WORD    X304Ap                  ;3098 304A      ?ERROR
        WORD    UNNEST                  ;309A 21DB      ;S
;
;                                                       == ?CSP
X309Cb  BYTE    084H,03FH,043H,053H,0D0H
        WORD    X3088b                  ;30A1 3088
;
X30A3p  WORD    NEST                    ;30A3 2109
        WORD    SPFCH                   ;30A5 232F      SP@
        WORD    CSP                     ;30A7 2ED6      CSP
        WORD    FETCH                   ;30A9 2A5A      @
        WORD    X2F3Fp                  ;30AB 2F3F      -
        WORD    PSHNB                   ;30AD 2382
        BYTE    014H                    ;30AF .
        WORD    X304Ap                  ;30B0 304A      ?ERROR
        WORD    UNNEST                  ;30B2 21DB      ;S
;
;                                                       == ?LOADING
X30B4b  BYTE    088H,03FH,04CH,04FH,041H,044H,049H,04EH,0C7H
        WORD    X309Cb                  ;30BD 309C
;
X30BFp  WORD    NEST                    ;30BF 2109
        WORD    BLK                     ;30C1 2E5B      BLK
        WORD    FETCH                   ;30C3 2A5A      @
        WORD    X2940t                  ;30C5 2940      0=
        WORD    PSHNB                   ;30C7 2382
        BYTE    016H                    ;30C9 .
        WORD    X304Ap                  ;30CA 304A      ?ERROR
        WORD    UNNEST                  ;30CC 21DB      ;S
;
;                                                       == COMPILE
X30CEb  BYTE    087H,043H,04FH,04DH,050H,049H,04CH,0C5H
        WORD    X30B4b                  ;30D6 30B4
;
X30D8p  WORD    NEST                    ;30D8 2109
        WORD    X3064p                  ;30DA 3064      ?COMP
        WORD    X29A7t                  ;30DC 29A7      R>
        WORD    DUP                     ;30DE 2A13      DUP
        WORD    X28A6t                  ;30E0 28A6      2+
        WORD    X298Ft                  ;30E2 298F      >R
        WORD    FETCH                   ;30E4 2A5A      @
        WORD    X2F1Ep                  ;30E6 2F1E      ,
        WORD    UNNEST                  ;30E8 21DB      ;S
;
;                                                       == [
X30EAb  BYTE    081H,0DBH               ;30EA .[
        WORD    X30CEb                  ;30EC 30CE
;
X30EEp  WORD    NEST                    ;30EE 2109
        WORD    ZERO                    ;30F0 2C7D      0
        WORD    STATE                   ;30F2 2EAD      STATE
        WORD    STORE                   ;30F4 2A94      !
        WORD    UNNEST                  ;30F6 21DB      ;S
;
;                                                       == ]
X30F8b  BYTE    081H,0DDH               ;30F8 .]
        WORD    X30EAb                  ;30FA 30EA
;
X30FCp  WORD    NEST                    ;30FC 2109
        WORD    PSHNB                   ;30FE 2382
        BYTE    0C0H                    ;3100 @
        WORD    STATE                   ;3101 2EAD      STATE
        WORD    STORE                   ;3103 2A94      !
        WORD    UNNEST                  ;3105 21DB      ;S
;
;                                                       == SMUDGE
X3107b  BYTE    086H,053H,04DH,055H,044H,047H,0C5H
        WORD    X30F8b                  ;310E 30F8
;
X3110p  WORD    NEST                    ;3110 2109
        WORD    X2FE1p                  ;3112 2FE1      LATEST
        WORD    PSHNB                   ;3114 2382
        BYTE    020H                    ;3116  
        WORD    X2C11p                  ;3117 2C11      TOGGLE
        WORD    UNNEST                  ;3119 21DB      ;S
;
;                                                       == HEX
X311Bb  BYTE    083H,048H,045H,0D8H     ;311B .HEX
        WORD    X3107b                  ;311F 3107
;
X3121p  WORD    NEST                    ;3121 2109
        WORD    PSHNB                   ;3123 2382
        BYTE    16                      ;3125 .
        WORD    BASE_                   ;3126 2EB8      BASE
        WORD    STORE                   ;3128 2A94      !
        WORD    UNNEST                  ;312A 21DB      ;S
;
;                                                       == DECIMAL
X312Cb  BYTE    087H,044H,045H,043H,049H,04DH,041H,0CCH
        WORD    X311Bb                  ;3134 311B
;
X3136p  WORD    NEST                    ;3136 2109
        WORD    PSHNB                   ;3138 2382
        BYTE    10                      ;313A .
        WORD    BASE_                   ;313B 2EB8      BASE
        WORD    STORE                   ;313D 2A94      !
        WORD    UNNEST                  ;313F 21DB      ;S
;
;                                                       == (;CODE)
X3141b  BYTE    087H,028H,03BH,043H,04FH,044H,045H,0A9H
        WORD    X312Cb                  ;3149 312C
;
X314Bp  WORD    NEST                    ;314B 2109
        WORD    X29A7t                  ;314D 29A7      R>
        WORD    X2FE1p                  ;314F 2FE1      LATEST
        WORD    X3023p                  ;3151 3023      PFA
        WORD    X3000p                  ;3153 3000      CFA
        WORD    STORE                   ;3155 2A94      !
        WORD    UNNEST                  ;3157 21DB      ;S
;
;                                                       == ;CODE
X3159b  BYTE    0C5H,03BH,043H,04FH,044H,0C5H
        WORD    X3141b                  ;315F 3141
;
X3161p  WORD    NEST                    ;3161 2109
        WORD    X30A3p                  ;3163 30A3      ?CSP
        WORD    X30D8p                  ;3165 30D8      COMPILE
        WORD    X314Bp                  ;3167 314B      (;CODE)
        WORD    X3110p                  ;3169 3110      SMUDGE
        WORD    X30EEp                  ;316B 30EE      [
        WORD    X3287p                  ;316D 3287      ?TTACK
        WORD    UNNEST                  ;316F 21DB      ;S
;
;                                                       == COUNT
;                                                       Change address of string (prefixed by length byte at addr) to TYPE form.
X3171b  BYTE    085H,043H,04FH,055H,04EH,0D4H
        WORD    X3159b                  ;3177 3159
;
X3179p  WORD    NEST                    ;3179 2109
        WORD    DUP                     ;317B 2A13      DUP
        WORD    X2893t                  ;317D 2893      2+
        WORD    SWAP                    ;317F 29F4      SWAP
        WORD    CFETCH                  ;3181 2A79      C@
        WORD    UNNEST                  ;3183 21DB      ;S
;
;                                                       == TYPE Type string of n characters beginning at addr, if n>0.
X3185b  BYTE    084H,054H,059H,050H,0C5H
        WORD    X3171b                  ;318A 3171
;
X318Cp  WORD    NEST                    ;318C 2109
        WORD    QDUP                    ;318E 2FA6      ?DUP
        WORD    ZBRAN                   ;3190 23AD      0BRANCH
        WORD    B31AA-$                 ;3192 0018
        WORD    OVER                    ;3194 29C7      OVER
        WORD    X27B8t                  ;3196 27B8      +
        WORD    SWAP                    ;3198 29F4      SWAP
        WORD    BBDO                    ;319A 2450      (DO)
B319C   WORD    I                       ;319C 246F      I
        WORD    CFETCH                  ;319E 2A79      C@
        WORD    EMIT                    ;31A0 223B      EMIT
        WORD    BBLOOP                  ;31A2 23F2      (LOOP)
        WORD    B319C-$                 ;31A4 FFF8
        WORD    BRANCH                  ;31A6 23A1      BRANCH
        WORD    B31AC-$                 ;31A8 0004
B31AA   WORD    DROP                    ;31AA 29E1      DROP
B31AC   WORD    UNNEST                  ;31AC 21DB      ;S
;
;                                                       == -TRAILING Reduce character count of string at addr to omit trailing blanks. "dash-trailing"
X31AEb  BYTE    089H,02DH,054H,052H,041H,049H,04CH,049H,04EH,0C7H
        WORD    X3185b                  ;31B8 3185
;
X31BAp  WORD    NEST                    ;31BA 2109
        WORD    DUP                     ;31BC 2A13      DUP
        WORD    ZERO                    ;31BE 2C7D      0
        WORD    BBDO                    ;31C0 2450      (DO)
B31C2   WORD    OVER                    ;31C2 29C7      OVER
        WORD    OVER                    ;31C4 29C7      OVER
        WORD    X27B8t                  ;31C6 27B8      +
        WORD    ONE                     ;31C8 2C85      1
        WORD    X2F3Fp                  ;31CA 2F3F      -
        WORD    CFETCH                  ;31CC 2A79      C@
        WORD    X2C9Ep                  ;31CE 2C9E      BL
        WORD    X2F3Fp                  ;31D0 2F3F      -
        WORD    ZBRAN                   ;31D2 23AD      0BRANCH
        WORD    B31DC-$                 ;31D4 0008
        WORD    X2975t                  ;31D6 2975      LEAVE
        WORD    BRANCH                  ;31D8 23A1      BRANCH
        WORD    B31E0-$                 ;31DA 0006
B31DC   WORD    ONE                     ;31DC 2C85      1
        WORD    X2F3Fp                  ;31DE 2F3F      -
B31E0   WORD    BBLOOP                  ;31E0 23F2      (LOOP)
        WORD    B31C2-$                 ;31E2 FFE0
        WORD    UNNEST                  ;31E4 21DB      ;S
;
;                                                       == "
X31E6b  BYTE    0C1H,0A2H               ;31E6 A"
        WORD    X31AEb                  ;31E8 31AE
;
X31EAp  WORD    NEST                    ;31EA 2109
        WORD    PSHNB                   ;31EC 2382
        BYTE    022H                    ;31EE "
        WORD    STATE                   ;31EF 2EAD      STATE
        WORD    FETCH                   ;31F1 2A5A      @
        WORD    ZBRAN                   ;31F3 23AD      0BRANCH
        WORD    B3209-$                 ;31F5 0014
        WORD    X30D8p                  ;31F7 30D8      COMPILE
        WORD    X3223p                  ;31F9 3223      (")
        WORD    X3413p                  ;31FB 3413      WORD
        WORD    X2F02p                  ;31FD 2F02      HERE
        WORD    CFETCH                  ;31FF 2A79      C@
        WORD    X2893t                  ;3201 2893      2+
        WORD    X2F12p                  ;3203 2F12      ALLOT
        WORD    BRANCH                  ;3205 23A1      BRANCH
        WORD    B321B-$                 ;3207 0014
B3209   WORD    X3413p                  ;3209 3413      WORD
        WORD    X2F02p                  ;320B 2F02      HERE
        WORD    X2F02p                  ;320D 2F02      HERE
        WORD    CFETCH                  ;320F 2A79      C@
        WORD    X2893t                  ;3211 2893      2+
        WORD    X3401p                  ;3213 3401      PAD
        WORD    SWAP                    ;3215 29F4      SWAP
        WORD    CMOVE                   ;3217 2604      CMOVE
        WORD    X3401p                  ;3219 3401      PAD
B321B   WORD    UNNEST                  ;321B 21DB      ;S
;
;                                                       == (")
X321Db  BYTE    083H,028H,022H,0A9H     ;321D .(")
        WORD    X31E6b                  ;3221 31E6
;
X3223p  WORD    NEST                    ;3223 2109
        WORD    X29BEt                  ;3225 29BE      R
        WORD    DUP                     ;3227 2A13      DUP
        WORD    CFETCH                  ;3229 2A79      C@
        WORD    X2893t                  ;322B 2893      2+
        WORD    X29A7t                  ;322D 29A7      R>
        WORD    X27B8t                  ;322F 27B8      +
        WORD    X298Ft                  ;3231 298F      >R
        WORD    UNNEST                  ;3233 21DB      ;S
;
;                                                       == (.")
X3235b  BYTE    084H,028H,02EH,022H,0A9H
        WORD    X321Db                  ;323A 321D
;
X323Cp  WORD    NEST                    ;323C 2109
        WORD    X29BEt                  ;323E 29BE      R
        WORD    X3179p                  ;3240 3179      COUNT
        WORD    DUP                     ;3242 2A13      DUP
        WORD    X2893t                  ;3244 2893      2+
        WORD    X29A7t                  ;3246 29A7      R>
        WORD    X27B8t                  ;3248 27B8      +
        WORD    X298Ft                  ;324A 298F      >R
        WORD    X318Cp                  ;324C 318C      TYPE
        WORD    UNNEST                  ;324E 21DB      ;S
;
;                                                       == ."
X3250b  BYTE    0C2H,02EH,0A2H          ;3250 B."
        WORD    X3235b                  ;3253 3235
;
X3255p  WORD    NEST                    ;3255 2109
        WORD    PSHNB                   ;3257 2382
        BYTE    022H                    ;3259 "
        WORD    STATE                   ;325A 2EAD      STATE
        WORD    FETCH                   ;325C 2A5A      @
        WORD    ZBRAN                   ;325E 23AD      0BRANCH
        WORD    B3274-$                 ;3260 0014
        WORD    X30D8p                  ;3262 30D8      COMPILE
        WORD    X323Cp                  ;3264 323C      (.")
        WORD    X3413p                  ;3266 3413      WORD
        WORD    X2F02p                  ;3268 2F02      HERE
        WORD    CFETCH                  ;326A 2A79      C@
        WORD    X2893t                  ;326C 2893      2+
        WORD    X2F12p                  ;326E 2F12      ALLOT
        WORD    BRANCH                  ;3270 23A1      BRANCH
        WORD    B327C-$                 ;3272 000A
B3274   WORD    X3413p                  ;3274 3413      WORD
        WORD    X2F02p                  ;3276 2F02      HERE
        WORD    X3179p                  ;3278 3179      COUNT
        WORD    X318Cp                  ;327A 318C      TYPE
B327C   WORD    UNNEST                  ;327C 21DB      ;S
;
;                                                       == ?TTACK
X327Eb  BYTE    086H,03FH,054H,054H,041H,043H,0CBH
        WORD    X3250b                  ;3285 3250
;
X3287p  WORD    NEST                    ;3287 2109
        WORD    PSHNW                   ;3289 2376      LIT
        WORD    X4A70fp-2               ;328B 4A6E
        WORD    SPFCH                   ;328D 232F      SP@
        WORD    X28D2t                  ;328F 28D2      <
        WORD    ONE                     ;3291 2C85      1
        WORD    X304Ap                  ;3293 304A      ?ERROR
        WORD    SPFCH                   ;3295 232F      SP@
        WORD    X2F02p                  ;3297 2F02      HERE
        WORD    PSHNB                   ;3299 2382
        BYTE    128                     ;329B .
        WORD    X27B8t                  ;329C 27B8      +
        WORD    X28D2t                  ;329E 28D2      <
        WORD    TWO                     ;32A0 2C8D      2
        WORD    X304Ap                  ;32A2 304A      ?ERROR
        WORD    UNNEST                  ;32A4 21DB      ;S
;
;                                                       == ROT
;                                                       rotate 3rd item to top
ROT@    BYTE    ROT-ROT@-3+4<<5
        BYTE    "RO",128+"T"
        WORD    X327Eb
;
ROT     WORD    NEST                    ;32AC 2109
        WORD    X298Ft                  ;32AE 298F      >R
        WORD    SWAP                    ;32B0 29F4      SWAP
        WORD    X29A7t                  ;32B2 29A7      R>
        WORD    SWAP                    ;32B4 29F4      SWAP
        WORD    UNNEST                  ;32B6 21DB      ;S
;
;                                                       == EXPECT
;                                                       Read n characters (or until carriage return) from terminal to address, with null(s) at end.
X32B8b  BYTE    086H,045H,058H,050H,45H,043H,0D4H
        WORD    ROT@                  ;32BF 32A6
;
X32C1p  WORD    NEST                    ;32C1 2109
        WORD    OVER                    ;32C3 29C7      OVER
        WORD    X27B8t                  ;32C5 27B8      +
        WORD    OVER                    ;32C7 29C7      OVER
        WORD    BBDO                    ;32C9 2450      (DO)
B32CB   WORD    KEY                     ;32CB 225D      KEY
        WORD    DUP                     ;32CD 2A13      DUP
        WORD    PSHNW                   ;32CF 2376      LIT
        WORD    SV_CAN                  ;32D1 2037              cancel
        WORD    CFETCH                  ;32D3 2A79      C@      "c-fetch"
        WORD    X2F4Bp                  ;32D5 2F4B      =
        WORD    ZBRAN                   ;32D7 23AD      0BRANCH
        WORD    B32F1-$                 ;32D9 0018
        WORD    DROP                    ;32DB 29E1      DROP
        WORD    PSHNW                   ;32DD 2376      LIT
        WORD    SV_CAN+1                ;32DF 2038
        WORD    CFETCH                  ;32E1 2A79      C@
        WORD    X29A7t                  ;32E3 29A7      R>
        WORD    DROP                    ;32E5 29E1      DROP
        WORD    OVER                    ;32E7 29C7      OVER
        WORD    X28B5t                  ;32E9 28B5      1-
        WORD    X298Ft                  ;32EB 298F      >R
        WORD    BRANCH                  ;32ED 23A1      BRANCH
        WORD    B3344-$                 ;32EF 0055
;
B32F1   WORD    DUP                     ;32F1 2A13      DUP
        WORD    PSHNW                   ;32F3 2376      LIT
        WORD    SV_BS                   ;32F5 2035              backspace
        WORD    CFETCH                  ;32F7 2A79      C@
        WORD    X2F4Bp                  ;32F9 2F4B      =
        WORD    ZBRAN                   ;32FB 23AD      0BRANCH
        WORD    B331F-$                 ;32FD 0022
        WORD    DROP                    ;32FF 29E1      DROP
        WORD    PSHNW                   ;3301 2376      LIT
        WORD    SV_BS+1                 ;3303 2036              backspace
        WORD    CFETCH                  ;3305 2A79      C@
        WORD    OVER                    ;3307 29C7      OVER
        WORD    I                       ;3309 246F      I
        WORD    X2F4Bp                  ;330B 2F4B      =
        WORD    DUP                     ;330D 2A13      DUP
        WORD    X29A7t                  ;330F 29A7      R>
        WORD    TWO                     ;3311 2C8D      2
        WORD    X2F3Fp                  ;3313 2F3F      -
        WORD    X27B8t                  ;3315 27B8      +
        WORD    X298Ft                  ;3317 298F      >R
        WORD    X2F3Fp                  ;3319 2F3F      -
        WORD    BRANCH                  ;331B 23A1      BRANCH
        WORD    B3344-$                 ;331D 0027
;
B331F   WORD    DUP                     ;331F 2A13      DUP
        WORD    PSHNB                   ;3321 2382
        BYTE    cr                      ;3323 .
        WORD    X2F4Bp                  ;3324 2F4B      =
        WORD    ZBRAN                   ;3326 23AD      0BRANCH
        WORD    B3336-$                 ;3328 000E
        WORD    X2975t                  ;332A 2975      LEAVE
        WORD    DROP                    ;332C 29E1      DROP
        WORD    X2C9Ep                  ;332E 2C9E      BL
        WORD    ZERO                    ;3330 2C7D      0
        WORD    BRANCH                  ;3332 23A1      BRANCH
        WORD    B3338-$                 ;3334 0004
;
B3336   WORD    DUP                     ;3336 2A13      DUP
B3338   WORD    I                       ;3338 246F      I
        WORD    X2ABAt                  ;333A 2ABA      C!
        WORD    ZERO                    ;333C 2C7D      0
        WORD    I                       ;333E 246F      I
        WORD    X2893t                  ;3340 2893      2+
        WORD    STORE                   ;3342 2A94      !
B3344   WORD    EMIT                    ;3344 223B      EMIT
        WORD    BBLOOP                  ;3346 23F2      (LOOP)
        WORD    B32CB-$                 ;3348 FF83
        WORD    DROP                    ;334A 29E1      DROP
        WORD    UNNEST                  ;334C 21DB      ;S
;
;                                                       == QUERY
;                                                       Read line of up to 80 characters from terminal to input buffer.
X334Eb  BYTE    080H+5,"QUER",0D9H
        WORD    X32B8b                  ;3354 32B8
;
X3356p  WORD    NEST                    ;3356 2109
        WORD    TIB                     ;3358 2E13      TIB     text input buffer address
        WORD    FETCH                   ;335A 2A5A      @
        WORD    COLMNS                  ;335C 2EF7      COLUMNS number of chars
        WORD    FETCH                   ;335E 2A5A      @
        WORD    X32C1p                  ;3360 32C1      EXPECT  get text from input
        WORD    ZERO                    ;3362 2C7D      0
        WORD    IN                      ;3364 2E64      IN
        WORD    STORE                   ;3366 2A94      !
        WORD    UNNEST                  ;3368 21DB      ;S
;
;                                                       == 0 seems to be used... how? forth does not work without this.
NULL@   BYTE    NULL-NULL@-3+6<<5
        BYTE    128+0
        WORD    X334Eb
;
NULL    WORD    NEST                    ;336E 2109
        WORD    BLK                     ;3370 2E5B      BLK
        WORD    FETCH                   ;3372 2A5A      @
        WORD    ZBRAN                   ;3374 23AD      0BRANCH
        WORD    B339C-$                 ;3376 0026
        WORD    ONE                     ;3378 2C85      1
        WORD    BLK                     ;337A 2E5B      BLK
        WORD    X2A2Bt                  ;337C 2A2B      +!
        WORD    ZERO                    ;337E 2C7D      0 (zero)
        WORD    IN                      ;3380 2E64      IN
        WORD    STORE                   ;3382 2A94      !
        WORD    BLK                     ;3384 2E5B      BLK
        WORD    FETCH                   ;3386 2A5A      @
        WORD    X38CDp                  ;3388 38CD      B/SCR
        WORD    X2B4Ap                  ;338A 2B4A      MOD
        WORD    X2940t                  ;338C 2940      0=
        WORD    ZBRAN                   ;338E 23AD      0BRANCH
        WORD    B3398-$                 ;3390 0008
        WORD    X307Bp                  ;3392 307B      ?EXEC
        WORD    X29A7t                  ;3394 29A7      R>
        WORD    DROP                    ;3396 29E1      DROP
B3398   WORD    BRANCH                  ;3398 23A1      BRANCH
        WORD    B33A0-$                 ;339A 0006
;
B339C   WORD    X29A7t                  ;339C 29A7      R>
        WORD    DROP                    ;339E 29E1      DROP
B33A0   WORD    UNNEST                  ;33A0 21DB      ;S
;
;                                                       == FILL
X33A2b  BYTE    084H,046H,049H,04CH,0CCH
        WORD    NULL@                  ;33A7 336A
;
X33A9p  WORD    NEST                    ;33A9 2109
        WORD    SWAP                    ;33AB 29F4      SWAP
        WORD    X298Ft                  ;33AD 298F      >R
        WORD    OVER                    ;33AF 29C7      OVER
        WORD    X2ABAt                  ;33B1 2ABA      C!
        WORD    DUP                     ;33B3 2A13      DUP
        WORD    X2893t                  ;33B5 2893      2+
        WORD    X29A7t                  ;33B7 29A7      R>
        WORD    ONE                     ;33B9 2C85      1
        WORD    X2F3Fp                  ;33BB 2F3F      -
        WORD    CMOVE                   ;33BD 2604      CMOVE
        WORD    UNNEST                  ;33BF 21DB      ;S
;
;                                                       == ERASE
X33C1b  BYTE    085H,045H,052H,041H,053H,0C5H
        WORD    X33A2b                  ;33C7 33A2
;
X33C9p  WORD    NEST                    ;33C9 2109
        WORD    ZERO                    ;33CB 2C7D      0 (zero)
        WORD    X33A9p                  ;33CD 33A9      FILL
        WORD    UNNEST                  ;33CF 21DB      ;S
;
;                                                       == BLANKS
X33D1b  BYTE    086H,042H,04CH,041H,04EH,04BH,0D3H
        WORD    X33C1b                  ;33D8 33C1
;
X33DAp  WORD    NEST                    ;33DA 2109
        WORD    X2C9Ep                  ;33DC 2C9E      BL
        WORD    X33A9p                  ;33DE 33A9      FILL
        WORD    UNNEST                  ;33E0 21DB      ;S
;
;                                                       == HOLD
X33E2b  BYTE    084H,048H,04FH,04CH,0C4H
        WORD    X33D1b                  ;33E7 33D1
;
X33E9p  WORD    NEST                    ;33E9 2109
        WORD    PSHNW                   ;33EB 2376      LIT
        WORD    0FFFFH                  ;33ED FFFF
        WORD    HLD                     ;33EF 2EE9      HLD
        WORD    X2A2Bt                  ;33F1 2A2B      +!
        WORD    HLD                     ;33F3 2EE9      HLD
        WORD    FETCH                   ;33F5 2A5A      @
        WORD    X2ABAt                  ;33F7 2ABA      C!
        WORD    UNNEST                  ;33F9 21DB      ;S
;
;                                                       == PAD
X33FBb  BYTE    083H,050H,041H,0C4H     ;33FB .PAD
        WORD    X33E2b                  ;33FF 33E2
;
X3401p  WORD    NEST                    ;3401 2109
        WORD    X2F02p                  ;3403 2F02      HERE
        WORD    PSHNB                   ;3405 2382
        BYTE    044H                    ;3407 D
        WORD    X27B8t                  ;3408 27B8      +
        WORD    UNNEST                  ;340A 21DB      ;S
;
;                                                       == WORD
;                                                       Read next word from input stream using char as delimeter, or untill null.
;                                                       Leave addr of length byte.
X340Cb  BYTE    084H,057H,04FH,052H,0C4H
        WORD    X33FBb                  ;3411 33FB
;
X3413p  WORD    NEST                    ;3413 2109
        WORD    BLK                     ;3415 2E5B      BLK
        WORD    FETCH                   ;3417 2A5A      @
        WORD    ZBRAN                   ;3419 23AD      0BRANCH
        WORD    B3427-$                 ;341B 000C
        WORD    BLK                     ;341D 2E5B      BLK
        WORD    FETCH                   ;341F 2A5A      @
        WORD    X3B42p                  ;3421 3B42      BLOCK
        WORD    BRANCH                  ;3423 23A1      BRANCH
        WORD    B342B-$                 ;3425 0006
;
B3427   WORD    TIB                     ;3427 2E13      TIB
        WORD    FETCH                   ;3429 2A5A      @
B342B   WORD    IN                      ;342B 2E64      IN
        WORD    FETCH                   ;342D 2A5A      @
        WORD    X27B8t                  ;342F 27B8      +
        WORD    SWAP                    ;3431 29F4      SWAP
        WORD    ENCLOSE                 ;3433 258A      ENCLOSE
        WORD    X2F02p                  ;3435 2F02      HERE
        WORD    PSHNB                   ;3437 2382
        BYTE    022H                    ;3439 "
        WORD    X33DAp                  ;343A 33DA      BLANKS
        WORD    IN                      ;343C 2E64      IN
        WORD    X2A2Bt                  ;343E 2A2B      +!
        WORD    OVER                    ;3440 29C7      OVER
        WORD    X2F3Fp                  ;3442 2F3F      -
        WORD    X298Ft                  ;3444 298F      >R
        WORD    X29BEt                  ;3446 29BE      R
        WORD    X2F02p                  ;3448 2F02      HERE
        WORD    X2ABAt                  ;344A 2ABA      C!
        WORD    X27B8t                  ;344C 27B8      +
        WORD    X2F02p                  ;344E 2F02      HERE
        WORD    X2893t                  ;3450 2893      2+
        WORD    X29A7t                  ;3452 29A7      R>
        WORD    CMOVE                   ;3454 2604      CMOVE
        WORD    UNNEST                  ;3456 21DB      ;S
;
;                                                       == (NUMBER)
X3458b  BYTE    088H,028H,04EH,055H,04DH,042H,045H,052H,0A9H
        WORD    X340Cb                  ;3461 340C
;
X3463p  WORD    NEST                    ;3463 2109
B3465   WORD    X2893t                  ;3465 2893      2+
        WORD    DUP                     ;3467 2A13      DUP
        WORD    X298Ft                  ;3469 298F      >R
        WORD    CFETCH                  ;346B 2A79      C@
        WORD    BASE_                   ;346D 2EB8      BASE
        WORD    FETCH                   ;346F 2A5A      @
        WORD    DIGIT                   ;3471 249E      DIGIT
        WORD    ZBRAN                   ;3473 23AD      0BRANCH
        WORD    B34A1-$                 ;3475 002C
        WORD    SWAP                    ;3477 29F4      SWAP
        WORD    BASE_                   ;3479 2EB8      BASE
        WORD    FETCH                   ;347B 2A5A      @
        WORD    X2645t                  ;347D 2645      U*
        WORD    DROP                    ;347F 29E1      DROP
        WORD    ROT                     ;3481 32AC      ROT
        WORD    BASE_                   ;3483 2EB8      BASE
        WORD    FETCH                   ;3485 2A5A      @
        WORD    X2645t                  ;3487 2645      U*
        WORD    X280At                  ;3489 280A      D+
        WORD    DPL                     ;348B 2EC2      DPL
        WORD    FETCH                   ;348D 2A5A      @
        WORD    X2893t                  ;348F 2893      2+
        WORD    ZBRAN                   ;3491 23AD      0BRANCH
        WORD    B349B-$                 ;3493 0008
        WORD    ONE                     ;3495 2C85      1
        WORD    DPL                     ;3497 2EC2      DPL
        WORD    X2A2Bt                  ;3499 2A2B      +!
B349B   WORD    X29A7t                  ;349B 29A7      R>
        WORD    BRANCH                  ;349D 23A1      BRANCH
        WORD    B3465-$                 ;349F FFC6
;
B34A1   WORD    X29A7t                  ;34A1 29A7      R>
        WORD    UNNEST                  ;34A3 21DB      ;S
;
;                                                       == NUMBER
X34A5b  BYTE    086H,04EH,055H,04DH,042H,045H,0D2H
        WORD    X3458b                  ;34AC 3458
;
X34AEp  WORD    NEST                    ;34AE 2109
        WORD    ZERO                    ;34B0 2C7D      0 (zero)
        WORD    ZERO                    ;34B2 2C7D      0 (zero)
        WORD    ROT                     ;34B4 32AC      ROT
        WORD    DUP                     ;34B6 2A13      DUP
        WORD    X2893t                  ;34B8 2893      2+
        WORD    CFETCH                  ;34BA 2A79      C@
        WORD    PSHNB                   ;34BC 2382
        BYTE    "-"                     ;34BE -
        WORD    X2F4Bp                  ;34BF 2F4B      =
        WORD    DUP                     ;34C1 2A13      DUP
        WORD    X298Ft                  ;34C3 298F      >R
        WORD    X27B8t                  ;34C5 27B8      +
        WORD    PSHNW                   ;34C7 2376      LIT
        WORD    0FFFFH                  ;34C9 FFFF      -1
B34CB   WORD    DPL                     ;34CB 2EC2      DPL
        WORD    STORE                   ;34CD 2A94      !
        WORD    X3463p                  ;34CF 3463      (NUMBER)
        WORD    DUP                     ;34D1 2A13      DUP
        WORD    CFETCH                  ;34D3 2A79      C@
        WORD    X2C9Ep                  ;34D5 2C9E      BL
        WORD    X2F3Fp                  ;34D7 2F3F      -
        WORD    ZBRAN                   ;34D9 23AD      0BRANCH
        WORD    B34F0-$                 ;34DB 0015
        WORD    DUP                     ;34DD 2A13      DUP
        WORD    CFETCH                  ;34DF 2A79      C@
        WORD    PSHNB                   ;34E1 2382
        BYTE    "."                     ;34E3 .
        WORD    X2F3Fp                  ;34E4 2F3F      -
        WORD    ZERO                    ;34E6 2C7D      0 (zero)
        WORD    X304Ap                  ;34E8 304A      ?ERROR
        WORD    ZERO                    ;34EA 2C7D      0 (zero)
        WORD    BRANCH                  ;34EC 23A1      BRANCH
        WORD    B34CB-$                 ;34EE FFDD
;
B34F0   WORD    DROP                    ;34F0 29E1      DROP
        WORD    X29A7t                  ;34F2 29A7      R>
        WORD    ZBRAN                   ;34F4 23AD      0BRANCH
        WORD    B34FA-$                 ;34F6 0004
        WORD    X2850t                  ;34F8 2850      DMINUS
B34FA   WORD    UNNEST                  ;34FA 21DB      ;S
;
;                                                       == -FIND
X34FCb  BYTE    085H,02DH,046H,049H,04EH,0C4H
        WORD    X34A5b                  ;3502 34A5
;
X3504p  WORD    NEST                    ;3504 2109
        WORD    X2C9Ep                  ;3506 2C9E      BL
        WORD    X3413p                  ;3508 3413      WORD
        WORD    X2F02p                  ;350A 2F02      HERE
        WORD    CONTXT                  ;350C 2E93      CONTEXT
        WORD    FETCH                   ;350E 2A5A      @
        WORD    FETCH                   ;3510 2A5A      @
        WORD    bFINDb                  ;3512 24E3      (FIND)
        WORD    DUP                     ;3514 2A13      DUP
        WORD    X2940t                  ;3516 2940      0=
        WORD    ZBRAN                   ;3518 23AD      0BRANCH
        WORD    B3524-$                 ;351A 000A
        WORD    DROP                    ;351C 29E1      DROP
        WORD    X2F02p                  ;351E 2F02      HERE
        WORD    X2FE1p                  ;3520 2FE1      LATEST
        WORD    bFINDb                  ;3522 24E3      (FIND)
B3524   WORD    UNNEST                  ;3524 21DB      ;S
;
;                                                       == (ABORT)
X3526b  BYTE    087H,028H,041H,042H,04FH,052H,054H,0A9H
        WORD    X34FCb                  ;352E 34FC
;
X3530p  WORD    NEST                    ;3530 2109
        WORD    X3745p                  ;3532 3745      ABORT
        WORD    UNNEST                  ;3534 21DB      ;S
;
;                                                       == ERROR
X3536b  BYTE    085H,045H,052H,052H,04FH,0D2H
        WORD    X3526b                  ;353C 3526
;
X353Ep  WORD    NEST                    ;353E 2109
        WORD    WARNNG                  ;3540 2E2D      WARNING
        WORD    FETCH                   ;3542 2A5A      @
        WORD    X2962t                  ;3544 2962      0<
        WORD    ZBRAN                   ;3546 23AD      0BRANCH
        WORD    B354C-$                 ;3548 0004
        WORD    X3530p                  ;354A 3530      (ABORT)
B354C   WORD    X2F02p                  ;354C 2F02      HERE
        WORD    X3179p                  ;354E 3179      COUNT
        WORD    X318Cp                  ;3550 318C      TYPE
        WORD    X323Cp                  ;3552 323C      (.")
        BYTE    3," ? "
        WORD    X383Bp                  ;3559 383B
        WORD    SPCLR                   ;355B 2348      SP!
        WORD    IN                      ;355D 2E64      IN
        WORD    FETCH                   ;355F 2A5A      @
        WORD    BLK                     ;3561 2E5B      BLK
        WORD    FETCH                   ;3563 2A5A      @
        WORD    X3717p                  ;3565 3717
        WORD    UNNEST                  ;3567 21DB      ;S
;
;                                                       == ID.
X3569b  BYTE    083H,049H,044H,0AEH     ;3569 .ID.
        WORD    X3536b                  ;356D 3536
;
X356Fp  WORD    NEST                    ;356F 2109
        WORD    X3401p                  ;3571 3401      PAD
        WORD    PSHNB                   ;3573 2382
        BYTE    020H                    ;3575  
        WORD    PSHNB                   ;3576 2382
        BYTE    05FH                    ;3578 _
        WORD    X33A9p                  ;3579 33A9      FILL
        WORD    DUP                     ;357B 2A13      DUP
        WORD    X3023p                  ;357D 3023      PFA
        WORD    X2FF1p                  ;357F 2FF1      LFA
        WORD    OVER                    ;3581 29C7      OVER
        WORD    X2F3Fp                  ;3583 2F3F      -
        WORD    X3401p                  ;3585 3401      PAD
        WORD    SWAP                    ;3587 29F4      SWAP
        WORD    CMOVE                   ;3589 2604      CMOVE
        WORD    X3401p                  ;358B 3401      PAD
        WORD    X3179p                  ;358D 3179      COUNT
        WORD    PSHNB                   ;358F 2382
        BYTE    01FH                    ;3591 .
        WORD    X2750t                  ;3592 2750      AND
        WORD    X318Cp                  ;3594 318C      TYPE
        WORD    X2F67p                  ;3596 2F67      SPACE
        WORD    UNNEST                  ;3598 21DB      ;S
;
;                                                       == CREATE
X359Ab  BYTE    086H,043H,052H,045H,041H,054H,0C5H
        WORD    X3569b                  ;35A1 3569
;
X35A3p  WORD    NEST                    ;35A3 2109
        WORD    X3504p                  ;35A5 3504      -FIND
        WORD    ZBRAN                   ;35A7 23AD      0BRANCH
        WORD    B35C2-$                 ;35A9 0019
        WORD    DROP                    ;35AB 29E1      DROP
        WORD    X323Cp                  ;35AD 323C      (.")
        BYTE    6,"REDEF:"
        WORD    X300Ep                  ;35B7 300E      NFA
        WORD    X356Fp                  ;35B9 356F      ID.
        WORD    PSHNB                   ;35BB 2382
        BYTE    4                       ;35BD .
        WORD    X383Bp                  ;35BE 383B
        WORD    X2F67p                  ;35C0 2F67      SPACE
B35C2   WORD    X2F02p                  ;35C2 2F02      HERE
        WORD    DUP                     ;35C4 2A13      DUP
        WORD    CFETCH                  ;35C6 2A79      C@
        WORD    WIDTH_                  ;35C8 2E1F      WIDTH
        WORD    FETCH                   ;35CA 2A5A      @
        WORD    X2F75p                  ;35CC 2F75      MIN
        WORD    X2893t                  ;35CE 2893      2+
        WORD    X2F12p                  ;35D0 2F12      ALLOT
        WORD    DUP                     ;35D2 2A13      DUP
        WORD    PSHNB                   ;35D4 2382
        BYTE    160                     ;35D6  
        WORD    X2C11p                  ;35D7 2C11      TOGGLE
        WORD    X2F02p                  ;35D9 2F02      HERE
        WORD    ONE                     ;35DB 2C85      1
        WORD    X2F3Fp                  ;35DD 2F3F      -
        WORD    PSHNB                   ;35DF 2382
        BYTE    128                     ;35E1 .
        WORD    X2C11p                  ;35E2 2C11      TOGGLE
        WORD    X2FE1p                  ;35E4 2FE1      LATEST
        WORD    X2F1Ep                  ;35E6 2F1E      ,
        WORD    CURRNT                  ;35E8 2EA1      CURRENT
        WORD    FETCH                   ;35EA 2A5A      @
        WORD    STORE                   ;35EC 2A94      !
        WORD    X2F02p                  ;35EE 2F02      HERE
        WORD    X28A6t                  ;35F0 28A6      2+
        WORD    X2F1Ep                  ;35F2 2F1E      ,
        WORD    UNNEST                  ;35F4 21DB      ;S
;
;                                                       == [COMPILE]
X35F6b  BYTE    0C9H,05BH,043H,04FH,4DH,050H,049H,04CH,045H,0DDH
        WORD    X359Ab                  ;3600 359A
;
X3602p  WORD    NEST                    ;3602 2109
        WORD    X3504p                  ;3604 3504      -FIND
        WORD    X2940t                  ;3606 2940      0=
        WORD    ZERO                    ;3608 2C7D      0 (zero)
        WORD    X304Ap                  ;360A 304A      ?ERROR
        WORD    DROP                    ;360C 29E1      DROP
        WORD    X3000p                  ;360E 3000      CFA
        WORD    X2F1Ep                  ;3610 2F1E      ,
        WORD    UNNEST                  ;3612 21DB      ;S
;
;                                                       == LITERAL
;                                                       If compiling, save n in dictionary, to be returned to stack when definition is executed.
X3614b  BYTE    0C7H,04CH,049H,054H,045H,052H,041H,0CCH
        WORD    X35F6b                  ;361C 35F6
;
X361Ep  WORD    NEST                    ;361E 2109
        WORD    STATE                   ;3620 2EAD      STATE
        WORD    FETCH                   ;3622 2A5A      @
        WORD    ZBRAN                   ;3624 23AD      0BRANCH
        WORD    B362E-$                 ;3626 0008
        WORD    X30D8p                  ;3628 30D8      COMPILE
        WORD    PSHNW                   ;362A 2376      LIT
        WORD    X2F1Ep                  ;362C 2F1E      ,
B362E   WORD    UNNEST                  ;362E 21DB      ;S
;
;                                                       == DLITERAL
X3630b  BYTE    0C8H,044H,04CH,049H,054H,045H,052H,041H,0CCH
        WORD    X3614b                  ;3639 3614
;
X363Bp  WORD    NEST                    ;363B 2109
        WORD    STATE                   ;363D 2EAD      STATE
        WORD    FETCH                   ;363F 2A5A      @
        WORD    ZBRAN                   ;3641 23AD      0BRANCH
        WORD    B364B-$                 ;3643 0008
        WORD    SWAP                    ;3645 29F4      SWAP
        WORD    X361Ep                  ;3647 361E      LITERAL
        WORD    X361Ep                  ;3649 361E      LITERAL
B364B   WORD    UNNEST                  ;364B 21DB      ;S
;
;                                                       == INTERPRET
X364Db  BYTE    089H,049H,04EH,054H,045H,052H,050H,052H,045H,0D4H
        WORD    X3630b                  ;3657 3630
;
X3659p  WORD    NEST                    ;3659 2109
B365B   WORD    X3504p                  ;365B 3504      -FIND
        WORD    ZBRAN                   ;365D 23AD      0BRANCH
        WORD    B367D-$                 ;365F 001E
        WORD    STATE                   ;3661 2EAD      STATE
        WORD    FETCH                   ;3663 2A5A      @
        WORD    X28D2t                  ;3665 28D2      <
        WORD    ZBRAN                   ;3667 23AD      0BRANCH
        WORD    B3673-$                 ;3669 000A
        WORD    X3000p                  ;366B 3000      CFA
        WORD    X2F1Ep                  ;366D 2F1E      ,
        WORD    BRANCH                  ;366F 23A1      BRANCH
        WORD    B3677-$                 ;3671 0006
;
B3673   WORD    X3000p                  ;3673 3000      CFA
        WORD    EXECUT                  ;3675 220B      EXECUTE
B3677   WORD    X3287p                  ;3677 3287      ?TTACK
        WORD    BRANCH                  ;3679 23A1      BRANCH
        WORD    B3695-$                 ;367B 001A
;
B367D   WORD    X2F02p                  ;367D 2F02      HERE
        WORD    X34AEp                  ;367F 34AE      NUMBER
        WORD    DPL                     ;3681 2EC2      DPL
        WORD    FETCH                   ;3683 2A5A      @
        WORD    X2893t                  ;3685 2893      2+
        WORD    ZBRAN                   ;3687 23AD      0BRANCH
        WORD    B3691-$                 ;3689 0008
        WORD    X363Bp                  ;368B 363B      DLITERAL
        WORD    BRANCH                  ;368D 23A1      BRANCH
        WORD    B3695-$                 ;368F 0006
B3691   WORD    DROP                    ;3691 29E1      DROP
        WORD    X361Ep                  ;3693 361E      LITERAL
B3695   WORD    X3287p                  ;3695 3287      ?TTACK
        WORD    BRANCH                  ;3697 23A1      BRANCH
        WORD    B365B-$                 ;3699 FFC2
;
;                                                       == IMMEDIATE
X369Bb  BYTE    089H,049H,04DH,04DH,045H,044H,049H,041H,054H,0C5H
        WORD    X364Db                  ;36A5 364D
;
X36A7p  WORD    NEST                    ;36A7 2109
        WORD    X2FE1p                  ;36A9 2FE1      LATEST
        WORD    PSHNB                   ;36AB 2382
        BYTE    040H                    ;36AD @
        WORD    X2C11p                  ;36AE 2C11      TOGGLE
        WORD    UNNEST                  ;36B0 21DB      ;S
;
;                                                       == VOCABULARY
X36B2b  BYTE    08AH,056H,04FH,043H,041H,042H,055H,04CH,041H,052H,0D9H
        WORD    X369Bb                  ;36BD 369B
;
X36BFp  WORD    NEST                    ;36BF 2109
        WORD    X2BC6p                  ;36C1 2BC6      <BUILDS
        WORD    PSHNW                   ;36C3 2376      LIT
        WORD    081A0H                  ;36C5 81A0
        WORD    X2F1Ep                  ;36C7 2F1E      ,
        WORD    CURRNT                  ;36C9 2EA1      CURRENT
        WORD    FETCH                   ;36CB 2A5A      @
        WORD    X3000p                  ;36CD 3000      CFA
        WORD    X2F1Ep                  ;36CF 2F1E      ,
        WORD    X2F02p                  ;36D1 2F02      HERE
        WORD    VOCLNK                  ;36D3 2E51      VOC-LINK
        WORD    FETCH                   ;36D5 2A5A      @
        WORD    X2F1Ep                  ;36D7 2F1E      ,
        WORD    VOCLNK                  ;36D9 2E51      VOC-LINK
        WORD    STORE                   ;36DB 2A94      !
        WORD    X2BD6p                  ;36DD 2BD6      DOES>
X36DF   WORD    X28A6t                  ;36DF 28A6      2+
        WORD    CONTXT                  ;36E1 2E93      CONTEXT
        WORD    STORE                   ;36E3 2A94      !
        WORD    UNNEST                  ;36E5 21DB      ;S
;        WORD    0                       ;36E7 0000                           ???
;
;                                                       == DEFINITIONS
X36E9b  BYTE    08BH,044H,045H,046H,049H,04EH,049H,054H,049H,04FH,04EH,0D3H
        WORD    X36B2b                  ;36F5 36B2
;
X36F7p  WORD    NEST                    ;36F7 2109
        WORD    CONTXT                  ;36F9 2E93      CONTEXT
        WORD    FETCH                   ;36FB 2A5A      @
        WORD    CURRNT                  ;36FD 2EA1      CURRENT
        WORD    STORE                   ;36FF 2A94      !
        WORD    UNNEST                  ;3701 21DB      ;S
;
;                                                       == (
X3703b  BYTE    0C1H,0A8H               ;3703 A(
        WORD    X36E9b                  ;3705 36E9
;
X3707p  WORD    NEST                    ;3707 2109
        WORD    PSHNB                   ;3709 2382
        BYTE    ")"                     ;370B )
        WORD    X3413p                  ;370C 3413      WORD
        WORD    UNNEST                  ;370E 21DB      ;S
;
;                                                       == QUIT
X3710b  BYTE    084H,051H,055H,049H,0D4H
        WORD    X3703b                  ;3715 3703
;
X3717p  WORD    NEST                    ;3717 2109
        WORD    ZERO                    ;3719 2C7D      0 (zero)
        WORD    BLK                     ;371B 2E5B      BLK
        WORD    STORE                   ;371D 2A94      !
        WORD    X30EEp                  ;371F 30EE      [
B3721   WORD    RPCLR                   ;3721 235F      RP!
        WORD    CARRET                  ;3723 228D      CR
        WORD    X3356p                  ;3725 3356      QUERY
        WORD    X3659p                  ;3727 3659
        WORD    STATE                   ;3729 2EAD      STATE
        WORD    FETCH                   ;372B 2A5A      @
        WORD    X2940t                  ;372D 2940      0=
        WORD    ZBRAN                   ;372F 23AD      0BRANCH
        WORD    B3739-$                 ;3731 0008
        WORD    X323Cp                  ;3733 323C      (.")
        BYTE    3," OK"                 ;3735 . OK
B3739   WORD    BRANCH                  ;3739 23A1      BRANCH
        WORD    B3721-$                 ;373B FFE6
;
;                                                       == ABORT
X373Db  BYTE    085H,041H,042H,04FH,052H,0D4H
        WORD    X3710b                  ;3743 3710
;
X3745p  WORD    NEST                    ;3745 2109
X3747   WORD    SPCLR                   ;3747 2348      SP!
        WORD    X3136p                  ;3749 3136      DECIMAL
        WORD    X38DFp                  ;374B 38DF      DR0
        WORD    CARRET                  ;374D 228D      CR
        WORD    X323Cp                  ;374F 323C      (.")
        BYTE    18,"FORTH-2650  VERS #"
        WORD    PSHNW                   ;3764 2376      LIT
        WORD    X206B                   ;3766 206B      version number
        WORD    DUP                     ;3768 2A13      DUP
        WORD    CFETCH                  ;376A 2A79      C@
        WORD    X39ADp                  ;376C 39AD      .
        WORD    X323Cp                  ;376E 323C      (.")
        BYTE    1,"."                   ;3770 012E
        WORD    X2893t                  ;3772 2893      2+
        WORD    CFETCH                  ;3774 2A79      C@
        WORD    X39ADp                  ;3776 39AD      .
        WORD    ZERO                    ;3778 2C7D      0
        WORD    IN                      ;377A 2E64      IN
        WORD    STORE                   ;377C 2A94      !
        WORD    ZERO                    ;377E 2C7D      0
        WORD    BLK                     ;3780 2E5B      BLK
        WORD    STORE                   ;3782 2A94      !
        WORD    X3BA2p                  ;3784 3BA2      FORTH
        WORD    X36F7p                  ;3786 36F7      DEFINITIONS
        WORD    X3717p                  ;3788 3717      QUIT
;
;                                                       == SRCBLK
X378Ab  BYTE    086H,053H,043H,052H,042H,04CH,0CBH
        WORD    X373Db                  ;3791 373D
;
X3793p  WORD    NEST                    ;3793 2109
        WORD    X38CDp                  ;3795 38CD      B/SCR
        WORD    X2AF4p                  ;3797 2AF4      *
        WORD    X37D9p                  ;3799 37D9      USEBLK
        WORD    X2B2Ap                  ;379B 2B2A      /MOD
        WORD    X37CCp                  ;379D 37CC      SEC/TRK
        WORD    X2AF4p                  ;379F 2AF4      *
        WORD    X37BEp                  ;37A1 37BE      TRK/DISK
        WORD    X2AF4p                  ;37A3 2AF4      *
        WORD    X27B8t                  ;37A5 27B8      +
        WORD    UNNEST                  ;37A7 21DB      ;S
;
;                                                       == #DR
X37A9b  BYTE    083H,023H,044H,0D2H     ;37A9 .#DR
        WORD    X378Ab                  ;37AD 378A
;
X37AFp  WORD    PSHCON                  ;37AF 2C46
        WORD    2                       ;37B1 0002
;
;                                                       == TRK/DISK
X37B3b  BYTE    088H,054H,052H,04BH,02FH,044H,049H,053H,0CBH
        WORD    X37A9b                  ;37BC 37A9
;
X37BEp  WORD    PSHCON                  ;37BE 2C46
        WORD    40                      ;37C0 0028
;
;                                                       == SEC/TRK
X37C2b  BYTE    087H,053H,045H,043H,2FH,054H,052H,0CBH
        WORD    X37B3b                  ;37CA 37B3
;
X37CCp  WORD    PSHCON                  ;37CC 2C46      SEC/TRK
        WORD    9                       ;37CE 0009
;
;                                                       == USEBLK
X37D0b  BYTE    086H,055H,053H,045H,042H,04CH,0CBH
        WORD    X37C2b                  ;37D7 37C2
;
X37D9p  WORD    NEST                    ;37D9 2109
        WORD    X37CCp                  ;37DB 37CC      SEC/TRK
        WORD    X37BEp                  ;37DD 37BE      TRK/DISK
        WORD    X2AF4p                  ;37DF 2AF4      *
        WORD    X38CDp                  ;37E1 38CD      B/SCR
        WORD    X2B3Ap                  ;37E3 2B3A      /
        WORD    X38CDp                  ;37E5 38CD      B/SCR
        WORD    X2AF4p                  ;37E7 2AF4      *
        WORD    UNNEST                  ;37E9 21DB      ;S
;
;                                                       == USE
X37EBb  BYTE    083H,055H,053H,0C5H     ;37EB .USE
        WORD    X37D0b                  ;37EF 37D0
;
X37F1p  WORD    PSHCON                  ;37F1 2C46
        WORD    VAR06                   ;37F3 2012
;
;                                                       == PREV
X37F5b  BYTE    084H,050H,052H,045H,0D6H
        WORD    X37EBb                  ;37FA 37EB
;
X37FCp  WORD    PSHCON                  ;37FC 2C46
        WORD    VAR07                   ;37FE 2014
;
;                                                       == (LINE)
X3800b  BYTE    086H,028H,04CH,049H,04EH,045H,0A9H
        WORD    X37F5b                  ;3807 37F5
;
X3809p  WORD    NEST                    ;3809 2109
        WORD    X298Ft                  ;380B 298F      >R
        WORD    PSHNB                   ;380D 2382
        BYTE    040H                    ;380F @
        WORD    X38C1p                  ;3810 38C1      B/BUF
        WORD    X2B5Ap                  ;3812 2B5A      */MOD
        WORD    X29A7t                  ;3814 29A7      R>
        WORD    X3793p                  ;3816 3793      SRCBLK
        WORD    X27B8t                  ;3818 27B8      +
        WORD    X3B42p                  ;381A 3B42      BLOCK
        WORD    X27B8t                  ;381C 27B8      +
        WORD    PSHNB                   ;381E 2382
        BYTE    040H                    ;3820 @
        WORD    UNNEST                  ;3821 21DB      ;S
;
;                                                       == X
X3823b  BYTE    081H,0D8H               ;3823 .X
        WORD    X3800b                  ;3825 3800
;
X3827p  WORD    NEST                    ;3827 2109
        WORD    X3809p                  ;3829 3809      (LINE)
        WORD    X31BAp                  ;382B 31BA      -TRAILING
        WORD    X318Cp                  ;382D 318C      TYPE
        WORD    UNNEST                  ;382F 21DB      ;S
;
;                                                       == MESSAGE - lists error message and number
X3831b  BYTE    087H,04DH,045H,053H,053H,041H,047H,0C5H
        WORD    X3823b                  ;3839 3823
;
X383Bp  WORD    NEST                    ;383B 2109
        WORD    WARNNG                  ;383D 2E2D      WARNING
        WORD    FETCH                   ;383F 2A5A      @
        WORD    ZBRAN                   ;3841 23AD      0BRANCH
        WORD    B386B-$                 ;3843 0028
        WORD    QDUP                    ;3845 2FA6      ?DUP
        WORD    ZBRAN                   ;3847 23AD      0BRANCH
        WORD    B3888-$                 ;3849 003F
        WORD    PSHNW                   ;384B 2376      LIT
        WORD    SV_UNK3                 ;384D 2045
        WORD    FETCH                   ;384F 2A5A      @
        WORD    OFFSET                  ;3851 2E85      OFFSET
        WORD    FETCH                   ;3853 2A5A      @
        WORD    X298Ft                  ;3855 298F      >R
        WORD    ZERO                    ;3857 2C7D      0
        WORD    OFFSET                  ;3859 2E85      OFFSET
        WORD    STORE                   ;385B 2A94      !
        WORD    X3827p                  ;385D 3827      X
        WORD    X29A7t                  ;385F 29A7      R>
        WORD    OFFSET                  ;3861 2E85      OFFSET
        WORD    STORE                   ;3863 2A94      !
        WORD    CARRET                  ;3865 228D      CR
        WORD    BRANCH                  ;3867 23A1      BRANCH
        WORD    B3888-$                 ;3869 001F
;
B386B   WORD    X323Cp                  ;386B 323C      (.")
        BYTE    4,"ERR "                ;386D .ERR
        WORD    PSHNB                   ;3872 2382
        BYTE    "#"                     ;               #
        WORD    BASE_                   ;3874           BASE
        WORD    FETCH                   ;               @
        WORD    PSHNB                   ;3878
        BYTE    10                      ;               
        WORD    X2F4Bp                  ;387C 2F4B      =
        WORD    X2940t                  ;387E 2940      0=
        WORD    X27B8t                  ;3880 27B8      +
        WORD    EMIT                    ;3882 223B      EMIT
        WORD    X2F67p                  ;3884 2F67      SPACE
        WORD    X39ADp                  ;3886 39AD      .
B3888   WORD    UNNEST                  ;3888 21DB      ;S
;
;                                                       == LOAD
X388Ab  BYTE    084H,04CH,04FH,041H,0C4H
        WORD    X3831b                  ;388F 3831
;
X3891p  WORD    NEST                    ;3891 2109
        WORD    BLK                     ;3893 2E5B      BLK
        WORD    FETCH                   ;3895 2A5A      @
        WORD    X298Ft                  ;3897 298F      >R
        WORD    IN                      ;3899 2E64      IN
        WORD    FETCH                   ;389B 2A5A      @
        WORD    X298Ft                  ;389D 298F      >R
        WORD    ZERO                    ;389F 2C7D      0
        WORD    IN                      ;38A1 2E64      IN
        WORD    X3793p                  ;38A3 3793      SRCBLK
        WORD    BLK                     ;38A5 2E5B      BLK
        WORD    STORE                   ;38A7 2A94      !
        WORD    X3659p                  ;38A9 3659      INTERPRET
        WORD    X29A7t                  ;38AB 29A7      R>
        WORD    IN                      ;38AD 2E64      IN
        WORD    STORE                   ;38AF 2A94      !
        WORD    X29A7t                  ;38B1 29A7      R>
        WORD    BLK                     ;38B3 2E5B      BLK
        WORD    STORE                   ;38B5 2A94      !
        WORD    UNNEST                  ;38B7 21DB      ;S
;
;                                                       == B/BUF
X38B9b  BYTE    085H,042H,02FH,042H,055H,0C6H
        WORD    X388Ab                  ;38BF 388A
;
X38C1p  WORD    PSHCON                  ;38C1 2C46
        WORD    256                     ;38C3 0100
;
;                                                       == B/SCR
X38C5b  BYTE    085H,042H,02FH,053H,043H,0D2H
        WORD    X38B9b                  ;38CB 38B9
;
X38CDp  WORD    NEST                    ;38CD 2109
        WORD    PSHNW                   ;38CF 2376      LIT
        WORD    1024                    ;38D1 0400
        WORD    X38C1p                  ;38D3 38C1      B/BUF
        WORD    X2B3Ap                  ;38D5 2B3A      /
        WORD    UNNEST                  ;38D7 21DB      ;S
;
;                                                       == DR0
X38D9b  BYTE    083H,044H,052H,0B0H     ;38D9 .DR0
        WORD    X38C5b                  ;38DD 38C5
;
X38DFp  WORD    NEST                    ;38DF 2109      DR0
        WORD    ZERO                    ;38E1 2C7D      0 (zero)
        WORD    OFFSET                  ;38E3 2E85      OFFSET
        WORD    STORE                   ;38E5 2A94      !
        WORD    UNNEST                  ;38E7 21DB      ;S
;
;                                                       == <#
X38E9b  BYTE    082H,03CH,0A3H          ;38E9 .<#
        WORD    X38D9b                  ;38EC 38D9
;
X38EEp  WORD    NEST                    ;38EE 2109
        WORD    X3401p                  ;38F0 3401      PAD
        WORD    HLD                     ;38F2 2EE9      HLD
        WORD    STORE                   ;38F4 2A94      !
        WORD    UNNEST                  ;38F6 21DB      ;S
;
;                                                       == #> "sharp-greater"
X38F8b  BYTE    082H,023H,0BEH          ;38F8 .#>
        WORD    X38E9b                  ;38FB 38E9
;
X38FDp  WORD    NEST                    ;38FD 2109
        WORD    DROP                    ;38FF 29E1      DROP
        WORD    DROP                    ;3901 29E1      DROP
        WORD    HLD                     ;3903 2EE9      HLD
        WORD    FETCH                   ;3905 2A5A      A
        WORD    X3401p                  ;3907 3401      PAD
        WORD    OVER                    ;3909 29C7      OVER
        WORD    X2F3Fp                  ;390B 2F3F      -
        WORD    UNNEST                  ;390D 21DB      ;S
;
;                                                       == SIGN
X390Fb  BYTE    084H,053H,049H,047H,0CEH
        WORD    X38F8b                  ;3914 38F8
;
X3916p  WORD    NEST                    ;3916 2109
        WORD    ROT                     ;3918 32AC      ROT
        WORD    X2962t                  ;391A 2962      0<
        WORD    ZBRAN                   ;391C 23AD      0BRANCH
        WORD    B3925-$                 ;391E 0007
        WORD    PSHNB                   ;3920 2382
        BYTE    02DH                    ;3922 -
        WORD    X33E9p                  ;3923 33E9      HOLD
B3925   WORD    UNNEST                  ;3925 21DB      ;S
;
;                                                       == # "sharp"
X3927b  BYTE    081H,0A3H               ;3927 .#
        WORD    X390Fb                  ;3929 390F
;
X392Bp  WORD    NEST                    ;392B 2109
        WORD    BASE_                   ;392D 2EB8      BASE
        WORD    FETCH                   ;392F 2A5A      @
        WORD    X2B7Dp                  ;3931 2B7D      M/MOD
        WORD    ROT                     ;3933 32AC      ROT
        WORD    PSHNB                   ;3935 2382
        BYTE    009H                    ;3937 .
        WORD    OVER                    ;3938 29C7      OVER
        WORD    X28D2t                  ;393A 28D2      <
        WORD    ZBRAN                   ;393C 23AD      0BRANCH
        WORD    B3945-$                 ;393E 0007
        WORD    PSHNB                   ;3940 2382
        BYTE    007H                    ;3942 .
        WORD    X27B8t                  ;3943 27B8      +
B3945   WORD    PSHNB                   ;3945 2382
        BYTE    030H                    ;3947 0
        WORD    X27B8t                  ;3948 27B8      +
        WORD    X33E9p                  ;394A 33E9      HOLD
        WORD    UNNEST                  ;394C 21DB      ;S
;
;                                                       == #S "sharp-s"
X394Eb  BYTE    082H,023H,0D3H          ;394E .#S
        WORD    X3927b                  ;3951 3927
;
X3953p  WORD    NEST                    ;3953 2109
B3955   WORD    X392Bp                  ;3955 392B      #
        WORD    OVER                    ;3957 29C7      OVER
        WORD    OVER                    ;3959 29C7      OVER
        WORD    X2779t                  ;395B 2779      OR
        WORD    X2940t                  ;395D 2940      0=
        WORD    ZBRAN                   ;395F 23AD      0BRANCH
        WORD    B3955-$                 ;3961 FFF4
        WORD    UNNEST                  ;3963 21DB      ;S
;
;                                                       == C.R
X3965b  BYTE    083H,043H,02EH,0D2H     ;3965 .C.R
        WORD    X394Eb                  ;3969 394E
;
X396Bp  WORD    NEST                    ;396B 2109
        WORD    X298Ft                  ;396D 298F      >R
        WORD    SWAP                    ;396F 29F4      SWAP
        WORD    OVER                    ;3971 29C7      OVER
        WORD    X2BAEp                  ;3973 2BAE      DABS
        WORD    X38EEp                  ;3975 38EE      <#
        WORD    X3953p                  ;3977 3953      #S
        WORD    X3916p                  ;3979 3916      SIGN
        WORD    X38FDp                  ;397B 38FD      #>
        WORD    X29A7t                  ;397D 29A7      R>
        WORD    OVER                    ;397F 29C7      OVER
        WORD    X2F3Fp                  ;3981 2F3F      -
        WORD    X39BE                   ;3983 39BE      SPACES
        WORD    X318Cp                  ;3985 318C      TYPE
        WORD    UNNEST                  ;3987 21DB      ;S
;
;                                                       == .R
X3989b  BYTE    082H,02EH,0D2H          ;3989 ..R
        WORD    X3965b                  ;398C 3965
;
X398Ep  WORD    NEST                    ;398E 2109
        WORD    X298Ft                  ;3990 298F      >R
        WORD    X2904t                  ;3992 2904      S->
        WORD    X29A7t                  ;3994 29A7      R>
        WORD    X396Bp                  ;3996 396B      C.R
        WORD    UNNEST                  ;3998 21DB      ;S
;
;                                                       == D.
X399Ab  BYTE    082H,044H,0AEH          ;399A .D.
        WORD    X3989b                  ;399D 3989
;
X399Fp  WORD    NEST                    ;399F 2109
        WORD    ZERO                    ;39A1 2C7D      0 (zero)
        WORD    X396Bp                  ;39A3 396B      C.R
        WORD    X2F67p                  ;39A5 2F67      SPACE
        WORD    UNNEST                  ;39A7 21DB      ;S
;
;                                                       == .
X39A9b  BYTE    081H,0AEH               ;39A9 ..
        WORD    X399Ab                  ;39AB 399A
;
X39ADp  WORD    NEST                    ;39AD 2109
        WORD    X2904t                  ;39AF 2904      S->
        WORD    X399Fp                  ;39B1 399F      D.
        WORD    UNNEST                  ;39B3 21DB      ;S
;
;                                                       == SPACES Type n spaces, if n>0.
X39B5b  BYTE    086H,053H,050H,041H,043H,045H,0D3H
        WORD    X39A9b                  ;39BC 39A9
;
X39BE   WORD    NEST                    ;39BE 2109
        WORD    ZERO                    ;39C0 2C7D      0 (zero)
        WORD    X2F8Dp                  ;39C2 2F8D      MAX
        WORD    QDUP                    ;39C4 2FA6      ?DUP
        WORD    ZBRAN                   ;39C6 23AD      0BRANCH
        WORD    B39D4-$                 ;39C8 000C
        WORD    ZERO                    ;39CA 2C7D      0 (zero)
        WORD    BBDO                    ;39CC 2450      (DO)
B39CE   WORD    X2F67p                  ;39CE 2F67      SPACE
        WORD    BBLOOP                  ;39D0 23F2      (LOOP)
        WORD    B39CE-$                 ;39D2 FFFC
B39D4   WORD    UNNEST                  ;39D4 21DB      ;S
;
;                                                       == R/W
X39E0b  BYTE    083H,052H,02FH,0D7H     ;39E0 .R/W
        WORD    X39B5b                  ;39E4 39B5
;
X39E6p  WORD    NEST                    ;39E6 2109
        WORD    SWAP                    ;39E8 29F4      SWAP
        WORD    DUP                     ;39EA 2A13      DUP
        WORD    X2962t                  ;39EC 2962      0<
        WORD    X2940t                  ;39EE 2940      0=
        WORD    ZBRAN                   ;39F0 23AD      0BRANCH
        WORD    B3A06-$                 ;39F2 0014
        WORD    X37CCp                  ;39F4 37CC      SEC/TRK
        WORD    X37BEp                  ;39F6 37BE      TRK/DISK
        WORD    X2AF4p                  ;39F8 2AF4      *
        WORD    X2B2Ap                  ;39FA 2B2A      /MOD
        WORD    DUP                     ;39FC 2A13      DUP
        WORD    X37AFp                  ;39FE 37AF      #DR
        WORD    X2F57p                  ;3A00 2F57      >
        WORD    ZBRAN                   ;3A02 23AD      0BRANCH
        WORD    B3A21-$                 ;3A04 001D
B3A06   WORD    CARRET                  ;3A06 228D      CR
        WORD    X39ADp                  ;3A08 39AD      .
        WORD    X323Cp                  ;3A0A 323C      (.")
        BYTE    8," DRIVE ?"
B3A15   WORD    PSHNW                   ;3A15 2376      LIT
        WORD    07FFFH                  ;3A17 7FFF
        WORD    X37FCp                  ;3A19 37FC      PREV
        WORD    FETCH                   ;3A1B 2A5A      @
        WORD    STORE                   ;3A1D 2A94      !
        WORD    X3717p                  ;3A1F 3717      QUIT
B3A21   WORD    DUP                     ;3A21 2A13      DUP
        WORD    X37AFp                  ;3A23 37AF      #DR
        WORD    X2F4Bp                  ;3A25 2F4B      =
        WORD    ZBRAN                   ;3A27 23AD      0BRANCH
        WORD    B3A72-$                 ;3A29 0049
        WORD    DROP                    ;3A2B 29E1      DROP
        WORD    X28C3t                  ;3A2D 28C3      2-
        WORD    X28C3t                  ;3A2F 28C3      2-
        WORD    DUP                     ;3A31 2A13      DUP
        WORD    X2962t                  ;3A33 2962      0<
        WORD    ZBRAN                   ;3A35 23AD      0BRANCH
        WORD    B3A4C-$                 ;3A37 0015
B3A39   WORD    CARRET                  ;3A39 228D      CR
        WORD    X39ADp                  ;3A3B 39AD      .
        WORD    X323Cp                  ;3A3D 323C      (.")
        BYTE    8," RANGE ?"            ;3A3F
        WORD    BRANCH                  ;3A48 23A1      BRANCH
        WORD    B3A15-$                 ;3A4A FFCB
;
B3A4C   WORD    X38C1p                  ;3A4C 38C1      B/BUF
        WORD    X2AF4p                  ;3A4E 2AF4      *
        WORD    X3AB1p                  ;3A50 3AB1      LO
        WORD    X27B8t                  ;3A52 27B8      +
        WORD    DUP                     ;3A54 2A13      DUP
        WORD    X3ABAp                  ;3A56 3ABA      HI
        WORD    X38C1p                  ;3A58 38C1      B/BUF
        WORD    X2F3Fp                  ;3A5A 2F3F      -
        WORD    X2F57p                  ;3A5C 2F57      >
        WORD    X2940t                  ;3A5E 2940      0=
        WORD    ZBRAN                   ;3A60 23AD      0BRANCH
        WORD    B3A39-$                 ;3A62 FFD7
        WORD    SWAP                    ;3A64 29F4      SWAP
        WORD    ZBRAN                   ;3A66 23AD      0BRANCH
        WORD    B3A6C-$                 ;3A68 0004
        WORD    SWAP                    ;3A6A 29F4      SWAP
B3A6C   WORD    X38C1p                  ;3A6C 38C1      B/BUF
        WORD    CMOVE                   ;3A6E 2604      CMOVE
        WORD    UNNEST                  ;3A70 21DB      ;S
;
B3A72   WORD    X298Ft                  ;3A72 298F      >R
        WORD    X37CCp                  ;3A74 37CC      SEC/TRK
        WORD    X2B2Ap                  ;3A76 2B2A      /MOD
        WORD    SWAP                    ;3A78 29F4      SWAP
        WORD    X2893t                  ;3A7A 2893      2+
        WORD    SWAP                    ;3A7C 29F4      SWAP
        WORD    X29A7t                  ;3A7E 29A7      R>
        WORD    X3AA4p                  ;3A80 3AA4      DISKRW
        WORD    ZBRAN                   ;3A82 23AD      0BRANCH
        WORD    B3A99-$                 ;3A84 0015
        WORD    CARRET                  ;3A86 228D      CR
        WORD    X323Cp                  ;3A88 323C      (.")
        BYTE    14,"DISK I/O ERROR"
B3A99   WORD    UNNEST                  ;3A99 21DB      ;S
;
;                                                       == DISKRW
X3A9Bb  BYTE    086H,044H,049H,053H,04BH,052H,0D7H
        WORD    X39E0b                  ;3AA2 39E0
;
X3AA4p  WORD    X3AA6                   ;3AA4 3AA6
;
X3AA6   BSTR,UN P2DBBc
        BCTA,UN NEXT
;
;W2DB3   WORD    01707H                  ;2DB3 ..
;W2DB5   WORD    01702H                  ;2DB5 ..
;W2DB7   WORD    01705H                  ;2DB7 ..
;W2DB9   WORD    01706H                  ;2DB9 ..
;
;                                                       this calls unknown disk routine
P2DBBc  LODI,R1 001H                    ;2DBB 0501
;        STRA,R1 *W2DB5&pm               ;2DBD CD8DB5
;        LODA,R0 *PSP&pm,R1              ;2DC0 0DE008
;        STRZ    R3                      ;2DC3 C3
;        LODI,R1 003H                    ;2DC4 0503
;        LODA,R0 *PSP&pm,R1              ;2DC6 0DE008
;        STRA,R0 *W2DB9&pm               ;2DC9 CC8DB9
;        LODI,R1 005H                    ;2DCC 0505
;        LODA,R0 *PSP&pm,R1              ;2DCE 0DE008
;        STRA,R0 *W2DB7&pm               ;2DD1 CC8DB7
;        LODI,R1 007H                    ;2DD4 0507
;        LODA,R0 *PSP&pm,R1              ;2DD6 0DE008
;        STRZ    R2                      ;2DD9 C2
;        LODA,R0 *PSP&pm,R1+             ;2DDA 0DA008
;        STRA,R0 VAR10&pm                ;2DDD CC0019
;        LODA,R0 *PSP&pm,R1+             ;2DE0 0DA008
;        STRZ    R1                      ;2DE3 C1
;        LODI,R0 0FFH                    ;2DE4 04FF
;        STRA,R0 *W2DB3&pm               ;2DE6 CC8DB3
;        LODA,R0 VAR10&pm                ;2DE9 0C0019
;        BSTA,UN P0444                   ;2DEC 3F0444
;        BCTR,GT P2DF4                   ;2DEF 1903
        EORZ    R0                      ;2DF1 20
;        BCTR,UN P2DF6                   ;2DF2 1B02
;
;P2DF4   LODI,R0 001H                    ;2DF4 0401
P2DF6   LODI,R1 008H                    ;2DF6 0508
        STRA,R0 *PSP&pm,R1+             ;2DF8 CDA008
        STRA,R0 *PSP&pm,R1-             ;2DFB CDC008
        LODI,R3 PSP-VARS                ;2DFE 0702
        BSTA,UN ADDR1                   ;2E00 3F21AE    VARS[R3]+=R1
        RETC,UN                          ;2E03 17
;
;
;                                                       == LO
X3AACb  BYTE    082H,04CH,0CFH          ;3AAC .LO
        WORD    X3A9Bb                  ;3AAF 3A9B
;
X3AB1p  WORD    PSHCON                  ;3AB1 2C46
        WORD    X5000fp                 ;3AB3 5000      ?
;
;                                                       == HI
X3AB5b  BYTE    082H,048H,0C9H          ;3AB5 .HI
        WORD    X3AACb                  ;3AB8 3AAC
;
X3ABAp  WORD    PSHCON                  ;3ABA 2C46
        WORD    X6000fp                 ;3ABC 6000      ?
;
;                                                       == PBUF
X3ABEb  BYTE    084H,050H,042H,055H,0C6H
        WORD    X3AB5b                  ;3AC3 3AB5
;
X3AC5p  WORD    NEST                    ;3AC5 2109
        WORD    X38C1p                  ;3AC7 38C1      B/BUF
        WORD    PSHNB                   ;3AC9 2382
        BYTE    004H                    ;3ACB .
        WORD    X27B8t                  ;3ACC 27B8      +
        WORD    X27B8t                  ;3ACE 27B8      +
        WORD    DUP                     ;3AD0 2A13      DUP
        WORD    X38C1p                  ;3AD2 38C1      B/BUF
        WORD    X27B8t                  ;3AD4 27B8      +
        WORD    PSHNB                   ;3AD6 2382
        BYTE    004H                    ;3AD8 .
        WORD    X27B8t                  ;3AD9 27B8      +
        WORD    X2CB6p                  ;3ADB 2CB6      LIMIT
        WORD    X2F57p                  ;3ADD 2F57      >
        WORD    ZBRAN                   ;3ADF 23AD      0BRANCH
        WORD    B3AE7-$                 ;3AE1 0006
        WORD    DROP                    ;3AE3 29E1      DROP
        WORD    X2CAAp                  ;3AE5 2CAA      FIRST
B3AE7   WORD    DUP                     ;3AE7 2A13      DUP
        WORD    X37FCp                  ;3AE9 37FC      PREV
        WORD    FETCH                   ;3AEB 2A5A      @
        WORD    X2F3Fp                  ;3AED 2F3F      -
        WORD    UNNEST                  ;3AEF 21DB      ;S
;
;                                                       == BUFFER
X3AF1b  BYTE    086H,042H,055H,046H,046H,045H,0D2H
        WORD    X3ABEb                  ;3AF8 3ABE
;
X3AFAp  WORD    NEST                    ;3AFA 2109
        WORD    X37F1p                  ;3AFC 37F1      USE
        WORD    FETCH                   ;3AFE 2A5A      @
        WORD    DUP                     ;3B00 2A13      DUP
        WORD    X298Ft                  ;3B02 298F      >R
B3B04   WORD    X3AC5p                  ;3B04 3AC5      PBUF
        WORD    ZBRAN                   ;3B06 23AD      0BRANCH
        WORD    B3B04-$                 ;3B08 FFFC
        WORD    X37F1p                  ;3B0A 37F1      USE
        WORD    STORE                   ;3B0C 2A94      !
        WORD    X29BEt                  ;3B0E 29BE      R
        WORD    FETCH                   ;3B10 2A5A      @
        WORD    X2962t                  ;3B12 2962      0<
        WORD    ZBRAN                   ;3B14 23AD      0BRANCH
        WORD    B3B2A-$                 ;3B16 0014
        WORD    X29BEt                  ;3B18 29BE      R
        WORD    X28A6t                  ;3B1A 28A6      2+
        WORD    X29BEt                  ;3B1C 29BE      R
        WORD    FETCH                   ;3B1E 2A5A      @
        WORD    PSHNW                   ;3B20 2376      LIT
        WORD    07FFFH                  ;3B22 7FFF
        WORD    X2750t                  ;3B24 2750      AND
        WORD    ZERO                    ;3B26 2C7D      0 (zero)
        WORD    X39E6p                  ;3B28 39E6      R/W
B3B2A   WORD    X29BEt                  ;3B2A 29BE      R
        WORD    STORE                   ;3B2C 2A94      !
        WORD    X29BEt                  ;3B2E 29BE      R
        WORD    X37FCp                  ;3B30 37FC      PREV
        WORD    STORE                   ;3B32 2A94      !
        WORD    X29A7t                  ;3B34 29A7      R>
        WORD    X28A6t                  ;3B36 28A6      2+
        WORD    UNNEST                  ;3B38 21DB      ;S
;
;                                                       == BLOCK
X3B3Ab  BYTE    085H,042H,04CH,04FH,043H,0CBH
        WORD    X3AF1b                  ;3B40 3AF1
;
X3B42p  WORD    NEST                    ;3B42 2109
        WORD    OFFSET                  ;3B44 2E85      OFFSET
        WORD    FETCH                   ;3B46 2A5A      @
        WORD    X27B8t                  ;3B48 27B8      +
        WORD    X298Ft                  ;3B4A 298F      >R
        WORD    X37FCp                  ;3B4C 37FC      PREV
        WORD    FETCH                   ;3B4E 2A5A      @
        WORD    DUP                     ;3B50 2A13      DUP
        WORD    FETCH                   ;3B52 2A5A      @
        WORD    X29BEt                  ;3B54 29BE      R
        WORD    X2F3Fp                  ;3B56 2F3F      -
        WORD    DUP                     ;3B58 2A13      DUP
        WORD    X27B8t                  ;3B5A 27B8      +
        WORD    ZBRAN                   ;3B5C 23AD      0BRANCH
        WORD    B3B92-$                 ;3B5E 0034
B3B60   WORD    X3AC5p                  ;3B60 3AC5      PBUF
        WORD    X2940t                  ;3B62 2940      0=
        WORD    ZBRAN                   ;3B64 23AD      0BRANCH
        WORD    B3B7A-$                 ;3B66 0014
        WORD    DROP                    ;3B68 29E1      DROP
        WORD    X29BEt                  ;3B6A 29BE      R
        WORD    X3AFAp                  ;3B6C 3AFA      BUFFER
        WORD    DUP                     ;3B6E 2A13      DUP
        WORD    X29BEt                  ;3B70 29BE      R
        WORD    ONE                     ;3B72 2C85      1
        WORD    X39E6p                  ;3B74 39E6      R/W
        WORD    TWO                     ;3B76 2C8D      2
        WORD    X2F3Fp                  ;3B78 2F3F      -
B3B7A   WORD    DUP                     ;3B7A 2A13      DUP
        WORD    FETCH                   ;3B7C 2A5A      @
        WORD    X29BEt                  ;3B7E 29BE      R
        WORD    X2F3Fp                  ;3B80 2F3F      -
        WORD    DUP                     ;3B82 2A13      DUP
        WORD    X27B8t                  ;3B84 27B8      +
        WORD    X2940t                  ;3B86 2940      0=
        WORD    ZBRAN                   ;3B88 23AD      0BRANCH
        WORD    B3B60-$                 ;3B8A FFD6
        WORD    DUP                     ;3B8C 2A13      DUP
        WORD    X37FCp                  ;3B8E 37FC      PREV
        WORD    STORE                   ;3B90 2A94      !
B3B92   WORD    X29A7t                  ;3B92 29A7      R>
        WORD    DROP                    ;3B94 29E1      DROP
        WORD    X28A6t                  ;3B96 28A6      2+
        WORD    UNNEST                  ;3B98 21DB      ;S
;
;                                                       == FORTH
X3B9Ab  BYTE    0C5H,046H,04FH,052H,054H,0C8H
        WORD    X3B3Ab                  ;3BA0 3B3A
;
X3BA2p  WORD    P2BE2c                  ;3BA2 2BE2
        WORD    X36DF                   ;3BA4 36DF      ???
        WORD    081A0H                  ;3BA6 81A0
X3BA8fp WORD    LASTWRD                 ;3BA8 40AF      first (last im memory) key word
;
;                                                       == TASK do nothing ???
X3BAAb  BYTE    084H,054H,041H,053H,0CBH
        WORD    X3B9Ab                  ;3BAF 3B9A
;
X3BB1p  WORD    NEST                    ;3BB1 2109
        WORD    UNNEST                  ;3BB3 21DB      ;S
;
;                                                       == UPDATE
X3BB5b  BYTE    086H,055H,050H,044H,041H,054H,0C5H
        WORD    X3BAAb                  ;3BBC 3BAA      TASK
;
X3BBEp  WORD    NEST                    ;3BBE 2109
        WORD    X37FCp                  ;3BC0 37FC      PREV
        WORD    FETCH                   ;3BC2 2A5A      @
        WORD    FETCH                   ;3BC4 2A5A      @
        WORD    PSHNW                   ;3BC6 2376      LIT
        WORD    08000H                  ;3BC8 8000
        WORD    X2779t                  ;3BCA 2779      OR
        WORD    X37FCp                  ;3BCC 37FC      PREV
        WORD    FETCH                   ;3BCE 2A5A      @
        WORD    STORE                   ;3BD0 2A94      !
        WORD    UNNEST                  ;3BD2 21DB      ;S
;
;                                                       == EMPTY-BUFFERS
X3BD4b  BYTE    08DH,045H,04DH,050H,054H,059H,02DH,042H,055H,046H,046H,045H,052H,0D3H
        WORD    X3BB5b                  ;3BE2 3BB5
;
X3BE4p  WORD    NEST                    ;3BE4 2109
        WORD    X2CAAp                  ;3BE6 2CAA      FIRST
        WORD    X2CB6p                  ;3BE8 2CB6      LIMIT
        WORD    OVER                    ;3BEA 29C7      OVER
        WORD    X2F3Fp                  ;3BEC 2F3F      -
        WORD    X33C9p                  ;3BEE 33C9      ERASE
        WORD    UNNEST                  ;3BF0 21DB      ;S
;
;                                                       == -->
X3BF2b  BYTE    0C3H,02DH,02DH,0BEH     ;3BF2 C-->
        WORD    X3BD4b                  ;3BF6 3BD4
;
X3BF8p  WORD    NEST                    ;3BF8 2109
        WORD    X30BFp                  ;3BFA 30BF      ?LOADING
        WORD    ZERO                    ;3BFC 2C7D      0 (zero)
        WORD    IN                      ;3BFE 2E64      IN
        WORD    STORE                   ;3C00 2A94      !
        WORD    X38CDp                  ;3C02 38CD      B/SCR
        WORD    BLK                     ;3C04 2E5B      BLK
        WORD    FETCH                   ;3C06 2A5A      @
        WORD    OVER                    ;3C08 29C7      OVER
        WORD    X2B4Ap                  ;3C0A 2B4A      MOD
        WORD    X2F3Fp                  ;3C0C 2F3F      -
        WORD    BLK                     ;3C0E 2E5B      BLK
        WORD    X2A2Bt                  ;3C10 2A2B      +!
        WORD    UNNEST                  ;3C12 21DB      ;S
;
;                                                       == '
X3C14b  BYTE    0C1H,0A7H               ;3C14 A'
        WORD    X3BF2b                  ;3C16 3BF2
;
X3C18p  WORD    NEST                    ;3C18 2109
        WORD    X3504p                  ;3C1A 3504      -FIND
        WORD    X2940t                  ;3C1C 2940      0=
        WORD    ZERO                    ;3C1E 2C7D      0 (zero)
        WORD    X304Ap                  ;3C20 304A      ?ERROR
        WORD    DROP                    ;3C22 29E1      DROP
        WORD    X361Ep                  ;3C24 361E      LITERAL
        WORD    UNNEST                  ;3C26 21DB      ;S
;
;                                                       == FORGET
X3C28b  BYTE    086H,046H,04FH,052H,047H,045H,0D4H
        WORD    X3C14b                  ;3C2F 3C14
;
X3C31p  WORD    NEST                    ;3C31 2109
        WORD    CURRNT                  ;3C33 2EA1      CURRENT
        WORD    FETCH                   ;3C35 2A5A      @
        WORD    CONTXT                  ;3C37 2E93      CONTEXT
        WORD    FETCH                   ;3C39 2A5A      @
        WORD    X2F3Fp                  ;3C3B 2F3F      -
        WORD    PSHNW                   ;3C3D 2376      LIT
        WORD    00018H                  ;3C3F 0018
        WORD    X304Ap                  ;3C41 304A      ?ERROR
        WORD    X3C18p                  ;3C43 3C18      '
        WORD    DUP                     ;3C45 2A13      DUP
        WORD    FENCE                   ;3C47 2E39      FENCE
        WORD    FETCH                   ;3C49 2A5A      @
        WORD    X28D2t                  ;3C4B 28D2      <
        WORD    PSHNW                   ;3C4D 2376      LIT
        WORD    00015H                  ;3C4F 0015
        WORD    X304Ap                  ;3C51 304A      ?ERROR
        WORD    DUP                     ;3C53 2A13      DUP
        WORD    X300Ep                  ;3C55 300E      NFA
        WORD    DP                      ;3C57 2E42      DP
        WORD    STORE                   ;3C59 2A94      !
        WORD    X2FF1p                  ;3C5B 2FF1      LFA
        WORD    FETCH                   ;3C5D 2A5A      @
        WORD    CURRNT                  ;3C5F 2EA1      CURRENT
        WORD    FETCH                   ;3C61 2A5A      @
        WORD    STORE                   ;3C63 2A94      !
        WORD    UNNEST                  ;3C65 21DB      ;S
;
;                                                       == BACK
X3C67b  BYTE    084H,042H,041H,043H,0CBH
        WORD    X3C28b                  ;3C6C 3C28
;
X3C6Ep  WORD    NEST                    ;3C6E 2109
        WORD    X2F02p                  ;3C70 2F02      HERE
        WORD    X2F3Fp                  ;3C72 2F3F      -
        WORD    X2F1Ep                  ;3C74 2F1E      ,
        WORD    UNNEST                  ;3C76 21DB      ;S
;
;                                                       == BEGIN
X3C78b  BYTE    0C5H,042H,045H,047H,049H,0CEH
        WORD    X3C67b                  ;3C7E 3C67
;
X3C80p  WORD    NEST                    ;3C80 2109
        WORD    X3064p                  ;3C82 3064      ?COMP
        WORD    X2F02p                  ;3C84 2F02      HERE
        WORD    ONE                     ;3C86 2C85      1
        WORD    UNNEST                  ;3C88 21DB      ;S
;
;                                                       == ENDIF
X3C8Ab  BYTE    0C5H,045H,04EH,044H,049H,0C6H
        WORD    X3C78b                  ;3C90 3C78
;
X3C92p  WORD    NEST                    ;3C92 2109
        WORD    X3064p                  ;3C94 3064      ?COMP
        WORD    TWO                     ;3C96 2C8D      2
        WORD    X3091p                  ;3C98 3091      ?PAIRS
        WORD    X2F02p                  ;3C9A 2F02      HERE
        WORD    OVER                    ;3C9C 29C7      OVER
        WORD    X2F3Fp                  ;3C9E 2F3F      -
        WORD    SWAP                    ;3CA0 29F4      SWAP
        WORD    STORE                   ;3CA2 2A94      !
        WORD    UNNEST                  ;3CA4 21DB      ;S
;
;                                                       == THEN
X3CA6b  BYTE    0C4H,054H,048H,045H,0CEH
        WORD    X3C8Ab                  ;3CAB 3C8A
;
X3CADp  WORD    NEST                    ;3CAD 2109
        WORD    X3C92p                  ;3CAF 3C92      ENDIF
        WORD    UNNEST                  ;3CB1 21DB      ;S
;
;                                                       == DO
X3CB3b  BYTE    0C2H,044H,0CFH          ;3CB3 BDO
        WORD    X3CA6b                  ;3CB6 3CA6
;
X3CB8p  WORD    NEST                    ;3CB8 2109
        WORD    X30D8p                  ;3CBA 30D8      COMPILE
        WORD    BBDO                    ;3CBC 2450      (DO)
        WORD    X2F02p                  ;3CBE 2F02      HERE
        WORD    THREE                   ;3CC0 2C95      3
        WORD    UNNEST                  ;3CC2 21DB      ;S
;
;                                                       == LOOP
X3CC4b  BYTE    0C4H,04CH,04FH,04FH,0D0H
        WORD    X3CB3b                  ;3CC9 3CB3
;
X3CCBp  WORD    NEST                    ;3CCB 2109
        WORD    THREE                   ;3CCD 2C95      3
        WORD    X3091p                  ;3CCF 3091      ?PAIRS
        WORD    X30D8p                  ;3CD1 30D8      COMPILE
        WORD    BBLOOP                  ;3CD3 23F2      (LOOP)
        WORD    X3C6Ep                  ;3CD5 3C6E      BACK
        WORD    UNNEST                  ;3CD7 21DB      ;S
;
;                                                       == +LOOP
X3CD9b  BYTE    0C5H,02BH,04CH,04FH,04FH,0D0H
        WORD    X3CC4b                  ;3CDF 3CC4
;
X3CE1p  WORD    NEST                    ;3CE1 2109
        WORD    THREE                   ;3CE3 2C95      3
        WORD    X3091p                  ;3CE5 3091      ?PAIRS
        WORD    X30D8p                  ;3CE7 30D8      COMPILE
        WORD    BPLOOP                  ;3CE9 2409      (+LOOP)
        WORD    X3C6Ep                  ;3CEB 3C6E      BACK
        WORD    UNNEST                  ;3CED 21DB      ;S
;
;                                                       == UNTIL
X3CEFb  BYTE    0C5H,055H,04EH,054H,049H,0CCH
        WORD    X3CD9b                  ;3CF5 3CD9
;
X3CF7p  WORD    NEST                    ;3CF7 2109
        WORD    ONE                     ;3CF9 2C85      1
        WORD    X3091p                  ;3CFB 3091      ?PAIRS
        WORD    X30D8p                  ;3CFD 30D8      COMPILE
        WORD    ZBRAN                   ;3CFF 23AD      0BRANCH
        WORD    X3C6Ep                  ;3D01 3C6E      BACK
        WORD    UNNEST                  ;3D03 21DB      ;S
;
;                                                       == END
X3D05b  BYTE    0C3H,045H,04EH,0C4H     ;3D05 CEND
        WORD    X3CEFb                  ;3D09 3CEF
;
X3D0Bp  WORD    NEST                    ;3D0B 2109
        WORD    X3CF7p                  ;3D0D 3CF7      UNTIL
        WORD    UNNEST                  ;3D0F 21DB      ;S
;
;                                                       == AGAIN
X3D11b  BYTE    0C5H,041H,047H,041H,049H,0CEH
        WORD    X3D05b                  ;3D17 3D05
;
X3D19p  WORD    NEST                    ;3D19 2109
        WORD    ONE                     ;3D1B 2C85      1
        WORD    X3091p                  ;3D1D 3091      ?PAIRS
        WORD    X30D8p                  ;3D1F 30D8      COMPILE
        WORD    BRANCH                  ;3D21 23A1      BRANCH
        WORD    X3C6Ep                  ;3D23 3C6E      BACK
        WORD    UNNEST                  ;3D25 21DB      ;S
;
;                                                       == REPEAT
X3D27b  BYTE    0C6H,052H,045H,050H,045H,041H,0D4H
        WORD    X3D11b                  ;3D2E 3D11
;
X3D30p  WORD    NEST                    ;3D30 2109
        WORD    X298Ft                  ;3D32 298F      >R
        WORD    X298Ft                  ;3D34 298F      >R
        WORD    X3D19p                  ;3D36 3D19      AGAIN
        WORD    X29A7t                  ;3D38 29A7      R>
        WORD    X29A7t                  ;3D3A 29A7      R>
        WORD    TWO                     ;3D3C 2C8D      2
        WORD    X2F3Fp                  ;3D3E 2F3F      -
        WORD    X3C92p                  ;3D40 3C92      ENDIF
        WORD    UNNEST                  ;3D42 21DB      ;S
;
;                                                       == IF
X3D44b  BYTE    0C2H,049H,0C6H          ;3D44 BIF
        WORD    X3D27b                  ;3D47 3D27
;
X3D49p  WORD    NEST                    ;3D49 2109
        WORD    X30D8p                  ;3D4B 30D8      COMPILE
        WORD    ZBRAN                   ;3D4D 23AD      0BRANCH
        WORD    X2F02p                  ;3D4F 2F02      HERE
        WORD    ZERO                    ;3D51 2C7D      0 (zero)
        WORD    X2F1Ep                  ;3D53 2F1E      ,
        WORD    TWO                     ;3D55 2C8D      2
        WORD    UNNEST                  ;3D57 21DB      ;S
;
;                                                       == ELSE
X3D59b  BYTE    0C4H,045H,04CH,053H,0C5H
        WORD    X3D44b                  ;3D5E 3D44
;
X3D60p  WORD    NEST                    ;3D60 2109
        WORD    TWO                     ;3D62 2C8D      2
        WORD    X3091p                  ;3D64 3091      ?PAIRS
        WORD    X30D8p                  ;3D66 30D8      COMPILE
        WORD    BRANCH                  ;3D68 23A1      BRANCH
        WORD    X2F02p                  ;3D6A 2F02      HERE
        WORD    ZERO                    ;3D6C 2C7D      0 (zero)
        WORD    X2F1Ep                  ;3D6E 2F1E      ,
        WORD    SWAP                    ;3D70 29F4      SWAP
        WORD    TWO                     ;3D72 2C8D      2
        WORD    X3C92p                  ;3D74 3C92      ENDIF
        WORD    TWO                     ;3D76 2C8D      2
        WORD    UNNEST                  ;3D78 21DB      ;S
;
;                                                       == WHILE
X3D7Ab  BYTE    0C5H,057H,048H,049H,04CH,0C5H
        WORD    X3D59b                  ;3D80 3D59
;
X3D82p  WORD    NEST                    ;3D82 2109
        WORD    X3D49p                  ;3D84 3D49      IF
        WORD    X28A6t                  ;3D86 28A6      2+
        WORD    UNNEST                  ;3D88 21DB      ;S
;
;                                                       == ?
X3D8Ab  BYTE    081H,0BFH               ;3D8A .?
        WORD    X3D7Ab                  ;3D8C 3D7A
;
X3D8Ep  WORD    NEST                    ;3D8E 2109
        WORD    FETCH                   ;3D90 2A5A      @
        WORD    X39ADp                  ;3D92 39AD      .
        WORD    UNNEST                  ;3D94 21DB      ;S
;
;                                                       == LIST
X3D96b  BYTE    084H,04CH,049H,053H,0D4H
        WORD    X3D8Ab                  ;3D9B 3D8A
;
X3D9Dp  WORD    NEST                    ;3D9D 2109
        WORD    X3136p                  ;3D9F 3136      DECIMAL
        WORD    CARRET                  ;3DA1 228D      CR
        WORD    DUP                     ;3DA3 2A13      DUP
        WORD    SCR                     ;3DA5 2E78      SCR
        WORD    STORE                   ;3DA7 2A94      !
        WORD    X323Cp                  ;3DA9 323C      (.")
        BYTE    6,"SCR # "
        WORD    X39ADp                  ;3DB2 39AD      .
        WORD    PSHNW                   ;3DB4 2376      LIT
        WORD    0000CH                  ;3DB6 000C
        WORD    ZERO                    ;3DB8 2C7D      0 (zero)
        WORD    BBDO                    ;3DBA 2450      (DO)
B3DBC   WORD    CARRET                  ;3DBC 228D      CR
        WORD    I                       ;3DBE 246F      I
        WORD    THREE                   ;3DC0 2C95      3
        WORD    X398Ep                  ;3DC2 398E      .R
        WORD    X2F67p                  ;3DC4 2F67      SPACE
        WORD    I                       ;3DC6 246F      I
        WORD    SCR                     ;3DC8 2E78      SCR
        WORD    FETCH                   ;3DCA 2A5A      @
        WORD    X3827p                  ;3DCC 3827      X
        WORD    BBLOOP                  ;3DCE 23F2      (LOOP)
        WORD    B3DBC-$                 ;3DD0 FFEC
        WORD    CARRET                  ;3DD2 228D      CR
        WORD    UNNEST                  ;3DD4 21DB      ;S
;
;                                                       == INDEX
X3DD6b  BYTE    085H,049H,04EH,044H,045H,0D8H
        WORD    X3D96b                  ;3DDC 3D96
;
X3DDEp  WORD    NEST                    ;3DDE 2109
        WORD    PSHNW                   ;3DE0 2376      LIT
        WORD    0000CH                  ;3DE2 000C
        WORD    EMIT                    ;3DE4 223B      EMIT
        WORD    CARRET                  ;3DE6 228D      CR
        WORD    X2893t                  ;3DE8 2893      2+
        WORD    SWAP                    ;3DEA 29F4      SWAP
        WORD    BBDO                    ;3DEC 2450      (DO)
B3DEE   WORD    CARRET                  ;3DEE 228D      CR
        WORD    I                       ;3DF0 246F      I
        WORD    THREE                   ;3DF2 2C95      3
        WORD    X398Ep                  ;3DF4 398E      .R
        WORD    X2F67p                  ;3DF6 2F67      SPACE
        WORD    ZERO                    ;3DF8 2C7D      0 (zero)
        WORD    I                       ;3DFA 246F      I
        WORD    X3827p                  ;3DFC 3827      X
        WORD    QTERML                  ;3DFE 2281      ?TERMINAL
        WORD    ZBRAN                   ;3E00 23AD      0BRANCH
        WORD    B3E06-$                 ;3E02 0004
        WORD    X2975t                  ;3E04 2975      LEAVE
B3E06   WORD    BBLOOP                  ;3E06 23F2      (LOOP)
        WORD    B3DEE-$                 ;3E08 FFE6
        WORD    UNNEST                  ;3E0A 21DB      ;S
;
;                                                       == TRIAD
X3E0Cb  BYTE    085H,054H,052H,049H,041H,0C4H
        WORD    X3DD6b                  ;3E12 3DD6
;
X3E14p  WORD    NEST                    ;3E14 2109
        WORD    PSHNW                   ;3E16 2376      LIT
        WORD    ff                      ;3E18 000C      form feed
        WORD    EMIT                    ;3E1A 223B      EMIT
        WORD    THREE                   ;3E1C 2C95      3
        WORD    X2B3Ap                  ;3E1E 2B3A      /
        WORD    THREE                   ;3E20 2C95      3
        WORD    X2AF4p                  ;3E22 2AF4      *
        WORD    THREE                   ;3E24 2C95      3
        WORD    OVER                    ;3E26 29C7      OVER
        WORD    X27B8t                  ;3E28 27B8      +
        WORD    SWAP                    ;3E2A 29F4      SWAP
        WORD    BBDO                    ;3E2C 2450      (DO)
B3E2E   WORD    CARRET                  ;3E2E 228D      CR
        WORD    I                       ;3E30 246F      I
        WORD    X3D9Dp                  ;3E32 3D9D      LIST
        WORD    BBLOOP                  ;3E34 23F2      (LOOP)
        WORD    B3E2E-$                 ;3E36 FFF8
        WORD    CARRET                  ;3E38 228D      CR
        WORD    PSHNW                   ;3E3A 2376      LIT
        WORD    15                      ;3E3C 000F
        WORD    X383Bp                  ;3E3E 383B      MESSAGE
        WORD    CARRET                  ;3E40 228D      CR
        WORD    UNNEST                  ;3E42 21DB      ;S
;
;                                                       == C/L - characters per line (was80)
X3E44b  BYTE    083H,043H,02FH,0CCH     ;3E44 .C/L
        WORD    X3E0Cb                  ;3E48 3E0C
;
X3E4Ab  WORD    PSHCON                  ;3E4A
        WORD    64
;
;                                                       == VLIST
X3E4Eb  BYTE    080H+5,"VLIS",0D4H
        WORD    X3E44b
;
VLIST   WORD    NEST                    ;3E56 2109
        WORD    PSHNW                   ;3E58 2376      LIT
        WORD    128                     ;3E5A 0080
        WORD    OUT                     ;3E5C 2E6E      OUT
        WORD    STORE                   ;3E5E 2A94      !         SV_OUT=128
        WORD    CONTXT                  ;3E60 2E93      CONTEXT
        WORD    FETCH                   ;3E62 2A5A      @
        WORD    FETCH                   ;3E64 2A5A      @
B3E66   WORD    OUT                     ;3E66 2E6E      OUT
        WORD    FETCH                   ;3E68 2A5A      @
        WORD    X3E4Ab                  ;3E6A 3E4A      C/L
        WORD    X2F57p                  ;3E6C 2F57      >
        WORD    ZBRAN                   ;3E6E 23AD      0BRANCH
        WORD    B3E7A-$                 ;3E70 000A
        WORD    CARRET                  ;3E72 228D      CR
        WORD    ZERO                    ;3E74 2C7D      0
        WORD    OUT                     ;3E76 2E6E      OUT
        WORD    STORE                   ;3E78 2A94      !       SV_OUT=0
B3E7A   WORD    DUP                     ;3E7A 2A13      DUP
        WORD    X356Fp                  ;3E7C 356F      ID.
        WORD    X2F67p                  ;3E7E 2F67      SPACE
;        WORD    X2F67p                  ;3E80 2F67      SPACE
        WORD    X3023p                  ;3E82 3023      PFA
        WORD    X2FF1p                  ;3E84 2FF1      LFA
        WORD    FETCH                   ;3E86 2A5A      @
        WORD    DUP                     ;3E88 2A13      DUP
        WORD    X2940t                  ;3E8A 2940      0=
        WORD    QTERML                  ;3E8C 2281      ?TERMINAL
        WORD    X2779t                  ;3E8E 2779      OR
        WORD    ZBRAN                   ;3E90 23AD      0BRANCH
        WORD    B3E66-$                 ;3E92 FFD4
        WORD    DROP                    ;3E94 29E1      DROP
        WORD    UNNEST                  ;3E96 21DB      ;S
;
;                                                       == TEXT
X3E98b  BYTE    084H,054H,045H,058H,0D4H
        WORD    X3E4Eb                  ;3E9D 3E4E
;
X3E9Fp  WORD    NEST                    ;3E9F 2109      TEXT
        WORD    X2F02p                  ;3EA1 2F02      HERE
        WORD    X3E4Ab                  ;3EA3 3E4A      C/L
        WORD    01B93H                  ;3EA5 1B93                  ???
        WORD    X33DAp                  ;3EA7 33DA      BLANKS
        WORD    X3413p                  ;3EA9 3413      WORD
        WORD    X2F02p                  ;3EAB 2F02      HERE
        WORD    X3401p                  ;3EAD 3401      PAD
        WORD    X3E4Ab                  ;3EAF 3E4A      C/L
        WORD    X2893t                  ;3EB1 2893      2+
        WORD    CMOVE                   ;3EB3 2604      CMOVE
        WORD    UNNEST                  ;3EB5 21DB      ;S
;
;                                                       == LINE
X3EB7b  BYTE    084H,04CH,049H,04EH,0C5H
        WORD    X3E98b                  ;3EBC 3E98
;
X3EBEp  WORD    NEST                    ;3EBE 2109
        WORD    DUP                     ;3EC0 2A13      DUP
        WORD    PSHNW                   ;3EC2 2376      LIT
        WORD    0FFF0H                  ;3EC4 FFF0
        WORD    X2750t                  ;3EC6 2750      AND
        WORD    PSHNW                   ;3EC8 2376      LIT
        WORD    00017H                  ;3ECA 0017
        WORD    X304Ap                  ;3ECC 304A      ?ERROR
        WORD    SCR                     ;3ECE 2E78      SCR
        WORD    FETCH                   ;3ED0 2A5A      @
        WORD    X3809p                  ;3ED2 3809      (LINE)
        WORD    DROP                    ;3ED4 29E1      DROP
        WORD    UNNEST                  ;3ED6 21DB      ;S
;
;                                                       == EDITOR
X3ED8b  BYTE    0C6H,045H,044H,049H,054H,04FH,0D2H
        WORD    X3EB7b                  ;3EDF 3EB7
;
EDITOR  WORD    P2BE2c                  ;3EE1 2BE2
        WORD    X36DF                   ;3EE3 36DF      ???
        WORD    081A0H                  ;3EE5
        WORD    0408FH                  ;3EE7 408F
        WORD    LASTWRD                 ; changed fp
        WORD    X3BAAb                  ;3EE9 3BAA
;
;                                                       == WHERE
LASTWRD EQU     $
X3EEBb  BYTE    085H,057H,048H,045H,052H,0C5H
        WORD    X3ED8b                  ;3EF1 3ED8
;
WHERE   WORD    NEST                    ;3EF3 2109
        WORD    DUP                     ;3EF5 2A13      DUP
        WORD    X38CDp                  ;3EF7 38CD      B/SCR
        WORD    X2B3Ap                  ;3EF9 2B3A      /
        WORD    DUP                     ;3EFB 2A13      DUP
        WORD    SCR                     ;3EFD 2E78      SCR
        WORD    STORE                   ;3EFF 2A94      !
        WORD    X323Cp                  ;3F01 323C      (.")
        BYTE    6,"SCR # "              ;
        WORD    X3136p                  ;3F0A 3136      DECIMAL
        WORD    X39ADp                  ;3F0C 39AD      .
        WORD    SWAP                    ;3F0E 29F4      SWAP
        WORD    X3E4Ab                  ;3F10 3E4A      C/L
        WORD    X2B4Ap                  ;3F12 2B4A      MOD
        WORD    X3E4Ab                  ;3F14 3E4A      C/L
        WORD    X2AF4p                  ;3F16 2AF4      *
        WORD    ROT                     ;3F18 32AC      ROT
        WORD    X3B42p                  ;3F1A 3B42      BLOCK
        WORD    X27B8t                  ;3F1C 27B8      +
        WORD    CARRET                  ;3F1E 228D      CR
        WORD    X3E4Ab                  ;3F20 3E4A      C/L
        WORD    X318Cp                  ;3F22 318C      TYPE
        WORD    CARRET                  ;3F24 228D      CR
        WORD    X2F02p                  ;3F26 2F02      HERE
        WORD    CFETCH                  ;3F28 2A79      C@
        WORD    X2F3Fp                  ;3F2A 2F3F      -
        WORD    X39BE                   ;3F2C 39BE      SPACES
        WORD    PSHNW                   ;3F2E 2376      LIT
        WORD    "^"                     ;3F30 005E
        WORD    EMIT                    ;3F32 223B      EMIT
        WORD    EDITOR                  ;3F34 3EE1      EDITOR
        WORD    X3717p                  ;3F36 3717      QUIT
        WORD    UNNEST                  ;3F38 21DB      ;S
;
FREEMEM EQU     $
;
        END                             ;
