home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / soundpot / f / figforth.lbr / FORTH.AZM / FORTH.ASM
Encoding:
Assembly Source File  |  1993-10-26  |  45.3 KB  |  3,905 lines

  1. ; "8080 FIG-FORTH FOR THE KAYPRO II"     LIST    DBG 
  2. ; FROM FIG-FORTH RELEASE 1.1 
  3. ; THIS PUBLIC DOMAIN SOFTWARE IS PROVIDED THROUGH THE COURTESY OF THE
  4. ; FORTH INTEREST GROUP, P.O. BOX 1105, SAN CARLOS CA 94070.
  5. ; FURTHER DISTRIBUTION MUST INCLUDE THIS NOTICE.
  6. ;
  7. ; ALL OTHER CODE IS THE FAULT OF :
  8. ;
  9. ;    Bob Bumala
  10. ;    955 N. California
  11. ;    Palo Alto, California 94303
  12. ;
  13. ;        * and *
  14. ;
  15. ;    Kevin Appert
  16. ;    ( address $+123SO )
  17. ;
  18. ;
  19. FIGREL    EQU    1    ; FIG RELEASE #
  20. FIGREV    EQU    1    ; FIG REV LEV
  21. USRVER    EQU    6    ; USER VERSION NUMBER
  22. ;
  23. ; USERVER 1 - FIRST OK 
  24. ; USERVER 2 - FIXED SOME BUGS
  25. ; USERVER 3 - 
  26. ; USERVER 4 - ADDED TWO DISK CAPABILITY
  27. ; USERVER 5 - ADDED VECTORED EXICUTION OF EMIT AND KEY
  28. ; USERVER 6 - REMOVED OPEN AND CLOSE
  29. ;
  30. ;
  31. ;        CP/M 
  32. ;
  33. OPENF    EQU    000FH    ; OPEN FILE
  34. CLOSF    EQU    0010H    ; CLOSE FILE
  35. MAKEF    EQU    0016H    ; MAKE FILE
  36. RESDSK    EQU    000CH    ; RESET DISK SYSTEM
  37. NIOS    EQU    0005H    ; FDOS
  38. ;
  39. ;        ASCII SPECIAL CHARACTORS
  40. ;
  41. ABL    EQU    20H    ; SPACE
  42. ACR    EQU    0DH    ; CARRIAGE RETURN
  43. ADOT    EQU    02EH    ; PERIOD
  44. BELL    EQU    07H    ; (^G)
  45. BSIN    EQU    07FH    ; BACKSPACE (RUBOUT)
  46. BSOUT    EQU    08H    ; BACKSPACE (^H)
  47. DLE    EQU    10H    ; (^P)
  48. LF    EQU    0AH    ; LINE FEED
  49. FF    EQU    0CH    ; FORM FEED (^L)
  50. ;
  51. ;        MEMORY ALLOCATION
  52. ;
  53. NSCR    EQU    8    ; NUMBER OF 1024 DB SCREENS AVAILABLE
  54. KBBUF     EQU    1024     ; DATA BYTES PER DISK BUFFER
  55. US    EQU    40H    ; USER VARIABLE SPACE
  56. RTS    EQU    0A0H    ; RETURN STACK AND TERM BUFF SPACE
  57. ;
  58. EM    EQU    0B000H    ; TOP OF MEMORY +1
  59. CO    EQU    KBBUF+4    ; DISK BUFFER + 2 HEADER + 2 TAIL
  60. NBUF    EQU    NSCR*400H/KBBUF ; NUMBER OF BUFFERS 
  61. BUF1    EQU    EM-CO*NBUF    ; ADDR FIRST DISK BUFFER
  62. INITRO    EQU    BUF1-US        ; (RO)
  63. INITSO    EQU    INITRO-RTS    ; (SO)
  64.      
  65. ;
  66. ;
  67.     ORG    100H
  68. ORIG    NOP
  69.     JMP    CLD    ; COLD START
  70.     NOP
  71.     JMP     WRM    ; WARM START
  72.     DB    FIGREL
  73.     DB    FIGREV
  74.     DB     USRVER
  75.     DB    0EH    ; IMPLEMENTATION ATTRIBUTES
  76.     DW    TASK-7     ; TOPMOST DW IN FORTH VOCABULARY
  77.     DW    BSIN    
  78.     DW    INITRO
  79. ;
  80. ;--------------FOLLOWING USED BY COLD---------------------
  81. ; (MUST BE IN SAME ORDER AS USER VARIABLES)
  82.     DW    INITSO
  83.     DW    INITRO
  84.     DW    INITSO
  85.     DW    20H    ; INIT WIDTH
  86.     DW    01H    ; INIT WARNING
  87.     DW     INITDP    ; INIT FENCE
  88.     DW    INITDP    ; INIT DP
  89.     DW    FORTH+6 ; INIT VOC-LINK
  90.     DW    PEMIT    ; EMIT VECTOR
  91.     DW    PKEY    ; KEY VECTOR
  92. ;
  93. ;--------------END OF DATA USED BY COLD--------------------
  94. ;
  95.     DW    5H,0B320H    ;    PROCESSOR IN RAD-36,32 BIT
  96. ;
  97. ;--------------FORTH REGISTERS ----------------------------
  98. ;
  99. UP    DW    INITRO    ; USER AREA POINTER
  100. RPP    DW    INITRO     ; RETURN STACK POINTER
  101. ;
  102. ;
  103.      
  104. ;
  105. ;-------------DEBUG SUPPORT--------------------------------
  106. ;
  107. BIP    DW    0    ; BREAKPOINT ON IP VALUE
  108. ;
  109. TNEXT    LXI    H,BIP
  110.     MOV    A,M
  111.     CMP     C
  112.     JNZ    TNEXT1
  113.     INX    H
  114.     MOV    A,M
  115.     CMP    B
  116.     JNZ    TNEXT1
  117. BREAK    NOP
  118.     NOP
  119.     NOP
  120. TNEXT1    LDAX    B
  121.     INX    B
  122.     MOV    L,A
  123.     JMP    NEXT+3
  124. ;
  125. ;----------THE EVERPOPULAR --NEXT-- THE FORTH ADDRESS INTERPRETER
  126. ;          ( POST INCREMENTING VERSION )
  127. ;
  128. DPUSH    PUSH    D
  129. HPUSH    PUSH    H
  130. NEXT    LDAX    B
  131.     INX    B
  132.     MOV    L,A
  133.     LDAX    B
  134.     INX    B
  135.     MOV    H,A
  136. NEXT1    MOV    E,M    ;  WAS NEXT1: IN FIG LISTING
  137.     INX    H
  138.     MOV    D,M
  139.     XCHG
  140.     PCHL
  141. ;
  142.      
  143. ;
  144. ;
  145. ;******************************************************************************
  146. ;******************************************************************************
  147. ;***            THE FORTH DICTIONARY                *******
  148. ;******************************************************************************
  149. ;******************************************************************************
  150. ;
  151. ;
  152. DP0:    DB    83H    ;LIT
  153.     DB     'LI'
  154.     DB    'T'+80H
  155.     DW    0    ; LFA = 0 IS END OF DICTIONARY
  156. LIT     DW    $+2
  157.     LDAX    B
  158.     INX    B
  159.     MOV    L,A
  160.     LDAX    B
  161.     INX    B
  162.     MOV    H,A
  163.     JMP    HPUSH
  164. ;
  165.     DB    87H    ;EXECUTE
  166.     DB    'EXECUT'
  167.     DB    'E'+80H
  168.     DW    LIT-6
  169. EXEC    DW    $+2
  170.     POP    H
  171.     JMP    NEXT1
  172. ;
  173.     DB    86H    ;BRANCH
  174.     DB    'BRANC'
  175.     DB    'H'+80H
  176.     DW    EXEC-0AH
  177. BRAN    DW    $+2    
  178. BRAN1    MOV    H,B
  179.     MOV    L,C
  180.     MOV    E,M
  181.     INX    H
  182.     MOV    D,M
  183.     DCX    H
  184.     DAD    D
  185.     MOV    C,L
  186.     MOV    B,H
  187.     JMP    NEXT
  188. ;
  189.     DB    87H    ;0BRANCH
  190.     DB    '0BRANC'
  191.     DB    'H'+80H
  192.     DW    BRAN-9
  193. ZBRAN    DW    $+2
  194.     POP    H
  195.     MOV    A,L
  196.     ORA    H
  197.     JZ    BRAN1
  198.     INX    B
  199.     INX    B
  200.     JMP NEXT
  201. ;
  202.     DB    86H    ;LOOP
  203.     DB    '(LOOP'
  204.     DB    ')'+80H
  205.     DW    ZBRAN-0AH
  206. XLOOP    DW    $+2
  207.     LXI    D,1
  208. XLOO1    LHLD    RPP
  209.     MOV    A,M
  210.     ADD    E
  211.     MOV    M,A
  212.     MOV    E,A
  213.     INX    H
  214.     MOV    A,M
  215.     ADC    D
  216.     MOV    M,A
  217.     INX    H
  218.     INR    D
  219.     DCR    D
  220.     MOV    D,A
  221.     JM    XLOO2
  222.     MOV    A,E
  223.     SUB    M
  224.     MOV    A,D
  225.     INX    H
  226.     SBB    M
  227.     JMP    XLOO3
  228. XLOO2    MOV    A,M
  229.     SUB    E
  230.     INX    H
  231.     MOV    A,M
  232.     SBB    D
  233. ;
  234. XLOO3    JM    BRAN1
  235.     INX    H
  236.     SHLD    RPP
  237.     INX    B
  238.     INX    B
  239.     JMP    NEXT
  240. ;
  241.     DB    87H    ;(+LOOP)
  242.     DB    '(+LOOP'
  243.     DB    ')'+80H
  244.     DW    XLOOP-9
  245. XPLOO    DW    $+2
  246.     POP    D
  247.     JMP    XLOO1
  248. ;
  249.     DB    84H    ;(DO)
  250.     DB    '(DO'
  251.     DB    ')'+80H
  252.     DW    XPLOO-0AH
  253. XDO    DW    $+2
  254.     LHLD    RPP
  255.     DCX    H
  256.     DCX    H
  257.     DCX    H
  258.     DCX    H
  259.     SHLD    RPP
  260.     POP    D
  261.     MOV    M,E
  262.     INX    H
  263.     MOV    M,D
  264.     POP    D
  265.     INX    H
  266.     MOV    M,E
  267.     INX    H
  268.     MOV    M,D
  269.     JMP    NEXT
  270.     DB    81H    ; I
  271.     DB    'I'+80H
  272.     DW    XDO-7
  273. IDO    DW    $+2
  274.     LHLD    RPP
  275.     MOV    E,M
  276.     INX    H
  277.     MOV    D,M
  278.     PUSH    D
  279.     JMP    NEXT
  280. ;
  281.     DB    85H    ; DIGIT
  282.     DB    'DIGI'
  283.     DB    'T'+80H
  284.     DW    IDO-4
  285. DIGIT    DW    $+2
  286.     POP    H
  287. ;
  288.     POP    D
  289.     MOV    A,E
  290.     SUI    30H
  291.     JM    DIGI2
  292.     CPI    0AH
  293.     JM    DIGI1
  294.     SUI    7
  295.     CPI    0AH
  296.     JM    DIGI2
  297. ;
  298. DIGI1    CMP    L
  299.     JP    DIGI2
  300.     MOV    E,A
  301.     LXI    H,1
  302.     JMP    DPUSH
  303. ;
  304. DIGI2    MOV    L,H
  305.     JMP    HPUSH
  306. ;
  307.     DB    86H    ; (FIND)
  308.     DB    '(FIND'
  309.     DB    ')'+80H
  310.     DW    DIGIT-8
  311. PFIND    DW    $+2
  312.     POP    D
  313. PFIN1    POP    H
  314.     PUSH    H
  315.     LDAX    D
  316.     XRA    M
  317.     ANI    3FH
  318.     JNZ    PFIN4
  319. ;
  320. PFIN2    INX    H
  321.     INX    D
  322.     LDAX    D
  323.     XRA    M
  324.     ADD    A
  325.     JNZ    PFIN3
  326.     JNC    PFIN2
  327.     LXI    H,5
  328.     DAD    D
  329.     XTHL
  330. ;
  331. PFIN6    DCX    D
  332.     LDAX    D
  333.     ORA    A
  334.     JP    PFIN6
  335.     MOV    E,A
  336.     MVI    D,0
  337.     LXI    H,1
  338.     JMP    DPUSH
  339. ;ABOVE NF NOT A MATCH, TRY ANOTHER
  340. PFIN3    JC    PFIN5
  341. PFIN4    INX    D
  342.     LDAX    D
  343.     ORA    A
  344.     JP    PFIN4
  345. PFIN5    INX    D
  346.     XCHG
  347.     MOV    E,M
  348.     INX    H
  349.     MOV    D,M
  350.     MOV    A,D
  351.     ORA    E
  352.     JNZ    PFIN1
  353. ;
  354.     POP    H
  355.     LXI    H,0
  356.     JMP    HPUSH
  357. ;
  358.     DB    87H    ; ENCLOSE
  359.     DB    'ENCLOS'
  360.     DB    'E'+80H
  361.     DW    PFIND-9
  362. ENCL    DW    $+2
  363.     POP    D
  364.     POP    H
  365.     PUSH    H
  366.     MOV    A,E
  367.     MOV    D,A
  368.     MVI    E,0FFH
  369.     DCX    H
  370. ;
  371. ENCL1    INX    H
  372.     INR    E
  373.     CMP    M
  374.     JZ    ENCL1
  375. ;
  376.     MVI    D,0
  377.     PUSH    D
  378.     MOV    D,A
  379.     MOV    A,M
  380.     ANA    A
  381.     JNZ    ENCL2
  382.     MVI    D,0
  383.     INR    E
  384.     PUSH    D
  385.     DCR    E
  386.     PUSH    D
  387.     JMP    NEXT
  388. ;
  389. ;
  390. ENCL2    MOV    A,D
  391.     INX    H
  392.     INR    E
  393.     CMP    M
  394.     JZ    ENCL4
  395.     MOV    A,M
  396.     ANA    A
  397.     JNZ    ENCL2
  398. ;
  399. ENCL3    MVI    D,0
  400.     PUSH    D
  401.     PUSH    D
  402.     JMP    NEXT
  403. ;
  404. ENCL4    MVI    D,0
  405. ;
  406.     PUSH    D
  407.     INR    E
  408. ;
  409.     PUSH    D
  410.     JMP    NEXT
  411. ;
  412.     DB    84H    ;EMIT
  413.     DB    'EMI'
  414.     DB    'T'+80H
  415.     DW    ENCL-0AH
  416. EMIT    DW    DOCOL
  417.     DW    TEMIT
  418.     DW    AT
  419.     DW    EXEC
  420.     DW    ONE,OUTT
  421.     DW    PSTOR,SEMIS
  422. ;
  423.     DB    83H    ; KEY
  424.     DB    'KE'
  425.     DB    'Y'+80H
  426.     DW    EMIT-7
  427. KEY    DW    DOCOL
  428.     DW     TKEY
  429.     DW    AT
  430.     DW    EXEC
  431.     DW     SEMIS
  432. ;
  433.     DB    89H    ; ?TERMINAL
  434.     DB    '?TERMINA'
  435.     DB    'L'+80H
  436.     DW     KEY-6
  437. QTERM    DW    $+2
  438.     LXI    H,0
  439.     JMP    PQTER
  440. ;
  441.     DB    82H    ;CR
  442.     DB    'C'
  443.     DB    'R'+80H
  444.     DW    QTERM-0CH
  445. CR    DW    DOCOL
  446.     DW     LIT,13
  447.     DW    EMIT
  448.     DW    LIT,10
  449.     DW    EMIT
  450.     DW    SEMIS
  451. ;
  452.     DB    85H    ; CMOVE
  453.     DB    'CMOV'
  454.     DB    'E'+80H
  455.     DW    CR-5    
  456. CMOVE    DW    $+2
  457.     MOV    L,C
  458.     MOV    H,B
  459.     POP    B
  460.     POP    D
  461.     XTHL
  462. ;
  463.     JMP    CMOV2
  464. CMOV1    MOV    A,M
  465.     INX    H
  466.     STAX    D
  467.     INX    D
  468.     DCX    B
  469. CMOV2    MOV    A,B
  470.     ORA    C
  471.     JNZ    CMOV1
  472.     POP    B
  473.     JMP    NEXT
  474. ;
  475.     DB     82H    ; U*
  476.     DB    'U'    
  477.     DB    '*'+80H
  478.     DW    CMOVE-8
  479. USTAR    DW    $+2
  480.     POP    D
  481.     POP    H
  482.     PUSH    B
  483.     MOV    B,H
  484.     MOV    A,L
  485.     CALL    MPYX
  486. ;
  487.     PUSH    H
  488.     MOV    H,A
  489.     MOV    A,B
  490.     MOV    B,H
  491.     CALL    MPYX
  492. ;
  493.     POP    D
  494.     MOV    C,D
  495. ;
  496. ;
  497.     DAD    B
  498.     ACI    0
  499.     MOV    D,L
  500.     MOV    L,H
  501.     MOV    H,A
  502.     POP    B
  503.     PUSH    D
  504.     JMP    HPUSH
  505. ;
  506. ;-------------------------MULTIPLY PRIMITIVE-----------------------------------
  507. ;
  508. MPYX    LXI    H,0
  509.     MVI    C,8
  510. MPYX1    DAD    H
  511.     RAL
  512.     JNC    MPYX2
  513.     DAD    D
  514.     ACI    0
  515. MPYX2    DCR    C
  516.     JNZ    MPYX1
  517.     RET
  518. ;
  519.     DB    82H    ; U/
  520.     DB    'U'    
  521.     DB    '/'+80H
  522.     DW    USTAR-5
  523. USLAS    DW    $+2
  524.     LXI    H,4
  525.     DAD    SP
  526.     MOV    E,M
  527.     MOV    M,C
  528.     INX    H
  529.     MOV    D,M
  530.     MOV    M,B
  531.     POP    B
  532.     POP    H
  533.     MOV    A,L
  534.     SUB    C
  535.     MOV    A,H
  536.     SBB    B
  537.     JC    USLA1
  538.     LXI    H,0FFFFH
  539.     LXI    D,0FFFFH
  540.     JMP    USLA7
  541. USLA1    MVI    A,16
  542. USLA2    DAD    H
  543.     RAL    
  544.     XCHG
  545.     DAD    H
  546.     JNC    USLA3
  547.     INX    D
  548.     ANA    A
  549. USLA3    XCHG
  550.     RAR
  551.     PUSH    PSW
  552.     JNC    USLA4
  553.     MOV    A,L
  554.     SUB    C
  555.     MOV    L,A
  556.     MOV    A,H
  557.     SBB    B
  558.     MOV    H,A
  559.     JMP    USLA5
  560. USLA4    MOV    A,L
  561.     SUB    C
  562.     MOV    L,A
  563.     MOV    A,H
  564.     SBB    B
  565.     MOV    H,A
  566.     JNC    USLA5
  567.     DAD    B
  568.     DCX    D
  569. USLA5    INX    D
  570. USLA6    POP    PSW
  571.     DCR    A
  572.     JNZ    USLA2
  573. USLA7    POP    B
  574.     PUSH    H
  575.     PUSH    D
  576.     JMP    NEXT
  577. ;
  578.     DB    83H    ; AND
  579.     DB     'AN'
  580.     DB     'D'+80H
  581.     DW    USLAS-5
  582. ANDD    DW     $+2
  583.     POP    D
  584.     POP    H
  585.     MOV    A,E
  586.     ANA    L
  587.     MOV    L,A
  588.     MOV    A,D    
  589.     ANA    H
  590.     MOV    H,A
  591.     JMP    HPUSH
  592. ;
  593.     DB    82H    ;    OR
  594.     DB    'O'    
  595.     DB    'R'+80H
  596.     DW    ANDD-6
  597. ORR    DW    $+2
  598.     POP    D
  599.     POP    H
  600.     MOV    A,E
  601.     ORA    L
  602.     MOV    L,A
  603.     MOV    A,D
  604.     ORA    H
  605.     MOV    H,A
  606.     JMP    HPUSH
  607. ;
  608.     DB    83H    ;    XOR
  609.     DB    'XO'
  610.     DB    'R'+80H
  611.     DW    ORR-5
  612. XORR    DW    $+2
  613.     POP    D
  614.     POP    H
  615.     MOV    A,E
  616.     XRA    L
  617.     MOV    L,A
  618.     MOV    A,D
  619.     XRA    H
  620.     MOV    H,A
  621.     JMP    HPUSH
  622. ;
  623.     DB    83H    ;    SP@
  624.     DB    'SP'
  625.     DB    '@'+80H
  626.     DW    XORR-6
  627. SPAT    DW    $+2
  628.     LXI    H,0
  629.     DAD    SP
  630.     JMP    HPUSH
  631. ;
  632.     DB    83H    ;SP STORE
  633.     DB    'SP'
  634.     DB    '!'+80H
  635.     DW    SPAT-6
  636. SPSTO    DW    $+2
  637.     LHLD    UP
  638.     LXI    D,6
  639.     DAD    D
  640.     MOV    E,M
  641.     INX    H
  642.     MOV    D,M
  643.     XCHG
  644.     SPHL
  645.     JMP    NEXT
  646. ;
  647.     DB    83H    ;    RP@
  648.     DB    'RP'
  649.     DB    '@'+80H
  650.     DW    SPSTO-6
  651. RPAT    DW    $+2
  652.     LHLD    RPP
  653.     JMP    HPUSH
  654. ;
  655.     DB    83H
  656.     DB    'RP'
  657.     DB    '!'+80H
  658.     DW    RPAT-6
  659. RPSTO    DW    $+2
  660.     LHLD    UP
  661.     LXI    D,8
  662.     DAD    D
  663.     MOV    E,M
  664.     INX    H
  665.     MOV    D,M
  666.     XCHG
  667.     SHLD    RPP
  668.     JMP    NEXT
  669. ;
  670.     DB    82H    ;    ;S
  671.     DB    ';'
  672.     DB    'S'+80H
  673.     DW    RPSTO-6
  674. SEMIS    DW    $+2
  675.     LHLD    RPP
  676.     MOV    C,M
  677.     INX    H
  678.     MOV    B,M    
  679.     INX    H
  680.     SHLD    RPP
  681.     JMP    NEXT
  682. ;
  683.     DB    85H    ;    LEAVE
  684.     DB    'LEAV'
  685.     DB    'E'+80H
  686.     DW    SEMIS-5
  687. LEAVE    DW    $+2
  688.     LHLD    RPP
  689.     MOV    E,M
  690.     INX    H
  691.     MOV    D,M
  692.     INX    H
  693.     MOV    M,E
  694.     INX    H
  695.     MOV    M,D
  696.     JMP    NEXT
  697. ;
  698.     DB    82H    ;    >R
  699.     DB    '>'
  700.     DB    'R'+80H
  701.     DW    LEAVE-8
  702. TOR    DW    $+2
  703.     POP    D
  704.     LHLD    RPP
  705.     DCX    H
  706.     DCX    H
  707.     SHLD    RPP
  708.     MOV    M,E
  709.     INX    H
  710.     MOV    M,D
  711.     JMP    NEXT
  712. ;
  713.     DB    82H    ;    R>
  714.     DB    'R'
  715.     DB    '>'+80H    
  716.     DW    TOR-5
  717. FROMR    DW    $+2
  718.     LHLD    RPP
  719.     MOV    E,M
  720.     INX    H
  721.     MOV    D,M
  722.     INX    H
  723.     SHLD    RPP
  724.     PUSH    D
  725.     JMP    NEXT
  726. ;
  727.     DB    81H    ;     R
  728.     DB    'R'+80H
  729.     DW    FROMR-5
  730. RR    DW    IDO+2
  731. ;
  732.     DB    82H    ;    0=
  733.     DB    '0'
  734.     DB    '='+80H
  735.     DW    RR-4
  736. ZEQU    DW    $+2
  737.     POP    H
  738.     MOV    A,L
  739.     ORA    H
  740.     LXI    H,0
  741.     JNZ    ZEQU1
  742.     INX    H
  743. ZEQU1    JMP    HPUSH
  744. ;
  745.     DB    82H    ;    0<
  746.     DB    '0'
  747.     DB    '<'+80H
  748.     DW    ZEQU-5
  749. ZLESS    DW    $+2
  750.     POP    H
  751.     DAD    H
  752.     LXI    H,0
  753.     JNC    ZLESS1
  754.     INX    H
  755. ZLESS1    JMP    HPUSH
  756. ;
  757.     DB    81H    ;    +
  758.     DB    '+'+80H
  759.     DW    ZLESS-5
  760. PLUS    DW    $+2
  761.     POP    D
  762.     POP    H
  763.     DAD    D
  764.     JMP    HPUSH
  765. ;
  766.     DB    82H    ;    D+
  767.     DB    'D'
  768.     DB    '+'+80H
  769.     DW    PLUS-4
  770. DPLUS    DW    $+2
  771.     LXI    H,6
  772.     DAD    SP
  773.     MOV    E,M
  774.     MOV    M,C
  775.     INX    H
  776.     MOV    D,M
  777.     MOV    M,B
  778.     POP    B
  779.     POP    H
  780.     DAD    D
  781.     XCHG
  782.     POP    H
  783.     MOV    A,L
  784.     ADC    C
  785.     MOV    L,A
  786.     MOV    A,H
  787.     ADC    B
  788.     MOV    H,A
  789.     POP    B
  790.     PUSH    D
  791.     JMP    HPUSH
  792. ;
  793.     DB    85H    ;    MINUS
  794.     DB    'MINU'
  795.     DB    'S'+80H
  796.     DW    DPLUS-5
  797. MINUS    DW    $+2
  798.     POP    H
  799.     MOV    A,L
  800.     CMA
  801.     MOV    L,A
  802.     MOV    A,H
  803.     CMA
  804.     MOV    H,A
  805.     INX    H
  806.     JMP    HPUSH    
  807. ;
  808.     DB    86H    ;    DMINUS
  809.     DB    'DMINU'
  810.     DB    'S'+80H
  811.     DW    MINUS-8
  812. DMINU    DW    $+2
  813.     POP    H
  814.     POP    D
  815.     SUB    A
  816.     SUB    E
  817.     MOV    E,A
  818.     MVI    A,0
  819.     SBB    D
  820.     MOV    D,A
  821.     MVI    A,0
  822.     SBB    L
  823.     MOV    L,A
  824.     MVI    A,0
  825.     SBB    H
  826.     MOV    H,A
  827.     PUSH    D
  828.     JMP    HPUSH
  829. ;
  830.     DB    84H    ;    OVER
  831.     DB    'OVE'
  832.     DB    'R'+80H
  833.     DW    DMINU-9
  834. OVER    DW    $+2
  835.     POP    D
  836.     POP    H
  837.     PUSH    H
  838.     JMP    DPUSH
  839. ;
  840.     DB    84H    ;    DROP
  841.     DB    'DRO'
  842.     DB    'P'+80H
  843.     DW    OVER-7
  844. DROP    DW    $+2
  845.     POP    H
  846.     JMP    NEXT
  847. ;
  848.     DB    84H    ;    SWAP
  849.     DB    'SWA'
  850.     DB    'P'+80H
  851.     DW    DROP-7
  852. SWAP    DW    $+2
  853.     POP    H
  854.     XTHL
  855.     JMP    HPUSH
  856. ;
  857.     DB    83H    ;    DUP
  858.     DB    'DU'
  859.     DB    'P'+80H
  860.     DW    SWAP-7
  861. DUP    DW    $+2
  862.     POP    H
  863.     PUSH    H
  864.     JMP    HPUSH
  865. ;
  866.     DB    84H    ;    2DUP
  867.     DB    '2DU'
  868.     DB    'P'+80H
  869.     DW    DUP-6
  870. TDUP    DW    $+2
  871.     POP    H
  872.     POP    D
  873.     PUSH    D
  874.     PUSH    H
  875.     JMP    DPUSH
  876. ;
  877.     DB    82H    ;    +STORE
  878.     DB    '+'
  879.     DB    '!'+80H
  880.     DW    TDUP-7
  881. PSTOR    DW    $+2
  882.     POP    H
  883.     POP    D
  884.     MOV    A,M
  885.     ADD    E
  886.     MOV    M,A
  887.     INX    H
  888.     MOV    A,M
  889.     ADC    D
  890.     MOV    M,A
  891.     JMP    NEXT
  892. ;
  893.     DB    86H    ;    TOGGLE
  894.     DB    'TOGGL'
  895.     DB    'E'+80H
  896.     DW    PSTOR-5
  897. TOGGL    DW    $+2
  898.     POP    D
  899.     POP    H
  900.     MOV    A,M
  901.     XRA    E
  902.     MOV    M,A
  903.     JMP    NEXT
  904. ;
  905.     DB    81H    ;    @
  906.     DB    '@'+80H
  907.     DW    TOGGL-9
  908. AT    DW    $+2
  909.     POP    H
  910.     MOV    E,M
  911.     INX    H
  912.     MOV    D,M
  913.     PUSH    D
  914.     JMP    NEXT
  915. ;
  916.     DB    82H    ;    C@
  917.     DB    'C'
  918.     DB    '@'+80H
  919.     DW    AT-4
  920. CAT    DW    $+2
  921.     POP    H
  922.     MOV    L,M
  923.     MVI    H,0
  924.     JMP    HPUSH
  925. ;
  926.     DB    82H    ;    2@
  927.     DB    '2'
  928.     DB    '@'+80H
  929.     DW    CAT-5
  930. TAT    DW    $+2
  931.     POP    H
  932.     LXI    D,2
  933.     DAD    D
  934.     MOV    E,M
  935.     INX    H
  936.     MOV    D,M
  937.     PUSH    D
  938.     LXI    D,-3
  939.     DAD    D
  940.     MOV    E,M
  941.     INX    H
  942.     MOV    D,M
  943.     PUSH    D
  944.     JMP    NEXT
  945. ;
  946.     DB    81H    ;    STORE (PRONOUNCED STORE)
  947.     DB    '!'+80H
  948.     DW    TAT-5
  949. STORE    DW    $+2
  950.     POP    H
  951.     POP    D
  952.     MOV    M,E
  953.     INX    H
  954.     MOV    M,D
  955.     JMP    NEXT
  956. ;
  957.     DB    82H    ;    CSTORE
  958.     DB    'C'
  959.     DB    '!'+80H
  960.     DW    STORE-4
  961. CSTOR    DW    $+2
  962.     POP    H
  963.     POP    D
  964.     MOV    M,E
  965.     JMP    NEXT
  966. ;
  967.     DB    82H    ;    2 STORE
  968.     DB    '2'
  969.     DB    '!'+80H
  970.     DW    CSTOR-5
  971. TSTOR    DW    $+2
  972.     POP    H
  973.     POP    D
  974.     MOV    M,E
  975.     INX    H
  976.     MOV    M,D
  977.     INX    H
  978.     POP    D
  979.     MOV    M,E
  980.     INX    H
  981.     MOV    M,D
  982.     JMP    NEXT
  983. ;
  984.     DB    0C1H    ;    COLON
  985.     DB    ':'+80H
  986.     DW    TSTOR-5
  987. COLON    DW    DOCOL
  988.     DW    QEXEC
  989.     DW    SCSP
  990.     DW    CURR
  991.     DW    AT
  992.     DW    CONT
  993.     DW    STORE
  994.     DW    CREAT
  995.     DW    RBRAC
  996.     DW    PSCOD
  997. DOCOL    LHLD    RPP
  998.     DCX    H
  999.     MOV    M,B
  1000.     DCX    H
  1001.     MOV    M,C
  1002.     SHLD    RPP
  1003.     INX    D
  1004.     MOV    C,E
  1005.     MOV    B,D
  1006.     JMP    NEXT
  1007. ;
  1008.     DB    0C1H    ;    SEMICOLON
  1009.     DB    ';'+80H
  1010.     DW    COLON-4
  1011. SEMI    DW    DOCOL
  1012.     DW    QCSP
  1013.     DW    COMP
  1014.     DW    SEMIS
  1015.     DW    SMUDG
  1016.     DW    LBRAC
  1017.     DW    SEMIS
  1018. ;
  1019.     DB    84H    ;    NOOP
  1020.     DB    'NOO'
  1021.     DB    'P'+80H
  1022.     DW    SEMI-4
  1023. NOOP    DW    DOCOL
  1024.     DW    SEMIS
  1025. ;
  1026.     DB    88H    ;    CONSTANT
  1027.     DB    'CONSTAN'
  1028.     DB    'T'+80H
  1029.     DW    NOOP-7
  1030. CONS    DW    DOCOL
  1031.     DW    CREAT
  1032.     DW    SMUDG
  1033.     DW    COMMA
  1034.     DW    PSCOD
  1035. DOCON    INX    D    
  1036.     XCHG
  1037.     MOV    E,M
  1038.     INX    H
  1039.     MOV    D,M
  1040.     PUSH    D
  1041.     JMP    NEXT
  1042. ;
  1043.     DB    88H    ;    VARIABLE
  1044.     DB    'VARIABL'
  1045.     DB    'E'+80H
  1046.     DW    CONS-0BH
  1047. VARB    DW    DOCOL
  1048.     DW    CONS
  1049.     DW    PSCOD
  1050. DOVAR    INX    D
  1051.     PUSH    D
  1052.     JMP    NEXT
  1053. ;
  1054.     DB    84H    ;    USER
  1055.     DB    'USE'
  1056.     DB    'R'+80H
  1057.     DW    VARB-0BH
  1058. USER    DW    DOCOL
  1059.     DW    CONS
  1060.     DW    PSCOD
  1061. DOUSE    INX    D
  1062.     XCHG    
  1063.     MOV    E,M
  1064.     MVI    D,0
  1065.     LHLD    UP
  1066.     DAD    D
  1067.     JMP    HPUSH
  1068. ;
  1069.     DB    81H    ;    0 ( THE NUMBER ZERO)
  1070.     DB    '0'+80H
  1071.     DW    USER-7
  1072. ZERO    DW    DOCON
  1073.     DW    0
  1074. ;
  1075.     DB    81H    ;    1
  1076.     DB    '1'+80H
  1077.     DW    ZERO-4
  1078. ONE    DW    DOCON
  1079.     DW    1
  1080. ;
  1081.     DB    81H    ;    2
  1082.     DB    '2'+80H
  1083.     DW    ONE-4
  1084. TWO    DW    DOCON
  1085.     DW    2
  1086. ;
  1087.     DB    81H    ;    3
  1088.     DB    '3'+80H
  1089.     DW    TWO-4
  1090. THREE    DW    DOCON
  1091.     DW    3
  1092. ;
  1093.     DB    82H    ;    BL
  1094.     DB    'B'
  1095.     DB    'L'+80H
  1096.     DW    THREE-4
  1097. BL    DW    DOCON
  1098.     DW    20H
  1099. ;
  1100.     DB    83H    ;    C/L
  1101.     DB    'C/'
  1102.     DB    'L'+80H    
  1103.     DW    BL-5
  1104. CSLL    DW    DOCON
  1105.     DW    64
  1106. ;
  1107.     DB    85H    ;    FIRST
  1108.     DB    'FIRS'
  1109.     DB    'T'+80H
  1110.     DW    CSLL-6
  1111. FIRST    DW    DOCON
  1112.     DW    BUF1
  1113. ;
  1114.     DB    85H    ;    LIMIT
  1115.     DB    'LIMI'
  1116.     DB    'T'+80H
  1117.     DW    FIRST-8
  1118. LIMIT    DW    DOCON
  1119.     DW    EM
  1120. ;
  1121.     DB    85H    ;    B/BUF
  1122.     DB    'B/BU'
  1123.     DB    'F'+80H
  1124.     DW    LIMIT-8
  1125. BBUF    DW    DOCON
  1126.     DW    KBBUF
  1127. ;
  1128.     DB    85H
  1129.     DB    'B/SC'
  1130.     DB    'R'+80H
  1131.     DW    BBUF-8
  1132. BSCR    DW    DOCON
  1133.     DW    400H/KBBUF
  1134. ;
  1135.     DB    87H    ;    +ORIGIN
  1136.     DB    '+ORIGI'
  1137.     DB    'N'+80H
  1138.     DW    BSCR-8
  1139. PORIG    DW    DOCOL
  1140.     DW    LIT
  1141.     DW    ORIG
  1142.     DW    PLUS
  1143.     DW    SEMIS
  1144. ;
  1145. ;-------------------------USER VARIABLES--------------------------------------
  1146. ;
  1147.     DB    82H    ;    S0
  1148.     DB    'S'
  1149.     DB    '0'+80H
  1150.     DW    PORIG-0AH
  1151. SZERO    DW    DOUSE
  1152.     DW    6
  1153. ;
  1154.     DB    82H    ;    R0
  1155.     DB    'R'
  1156.     DB    '0'+80H
  1157.     DW    SZERO-5
  1158. RZERO    DW    DOUSE
  1159.     DW    8
  1160. ;
  1161.     DB    83H    ;    TIB
  1162.     DB    'TI'
  1163.     DB    'B'+80H
  1164.     DW    RZERO-5
  1165. TIB    DW    DOUSE
  1166.     DB    0AH
  1167. ;
  1168.     DB    85H    ;    WIDTH
  1169.     DB    'WIDT'
  1170.     DB    'H'+80H
  1171.     DW    TIB-6
  1172. WIDTH    DW    DOUSE
  1173.     DB    0CH
  1174. ;
  1175.     DB    87H    ;    WARNING
  1176.     DB    'WARNIN'
  1177.     DB    'G'+80H
  1178.     DW    WIDTH-8
  1179. WARN    DW    DOUSE
  1180.     DB    0EH
  1181. ;
  1182.     DB    85H    ;    FENCE
  1183.     DB    'FENC'
  1184.     DB    'E'+80H
  1185.     DW    WARN-0AH
  1186. FENCE    DW    DOUSE
  1187.     DB    10H
  1188. ;
  1189.     DB    82H    ;    DP
  1190.     DB    'D'
  1191.     DB    'P'+80H
  1192.     DW    FENCE-8
  1193. DP    DW    DOUSE
  1194.     DB    12H
  1195. ;
  1196.     DB    88H    ;    VOC-LINK
  1197.     DB    'VOC-LIN'
  1198.     DB    'K'+80H
  1199.     DW    DP-5
  1200. VOCL    DW    DOUSE
  1201.     DW    14H
  1202. ;
  1203.     DB    83H    ;    BLK
  1204.     DB    'BL'
  1205.     DB    'K'+80H
  1206.     DW    VOCL-0BH
  1207. BLK    DW    DOUSE
  1208.     DB    16H
  1209. ;
  1210.     DB    82H    ;    IN
  1211.     DB    'I'
  1212.     DB    'N'+80H
  1213.     DW    BLK-6
  1214. INN    DW    DOUSE
  1215.     DB     18H
  1216. ;
  1217.     DB    83H    ;    OUT
  1218.     DB    'OU'
  1219.     DB    'T'+80H
  1220.     DW    INN-5
  1221. OUTT    DW    DOUSE
  1222.     DB    1AH
  1223. ;
  1224.     DB    83H    ;    SCR
  1225.     DB    'SC'
  1226.     DB    'R'+80H
  1227.     DW    OUTT-6
  1228. SCR    DW    DOUSE
  1229.     DB    1CH
  1230. ;
  1231.     DB     86H    ;    OFFSET    
  1232.     DB    'OFFSE'
  1233.     DB    'T'+80H
  1234.     DW    SCR-6
  1235. OFSET    DW    DOUSE
  1236.     DB    1EH
  1237. ;
  1238.     DB    87H    ;    CONTEXT
  1239.     DB    'CONTEX'
  1240.     DB    'T'+80H
  1241.     DW    OFSET-9
  1242. CONT    DW    DOUSE
  1243.     DB    20H
  1244. ;
  1245.     DB    87H    ;    CURRENT
  1246.     DB    'CURREN'
  1247.     DB    'T'+80H
  1248.     DW    CONT-0AH
  1249. CURR    DW    DOUSE
  1250.     DB    22H
  1251. ;
  1252.     DB    85H    ;    STATE
  1253.     DB    'STAT'
  1254.     DB    'E'+80H
  1255.     DW    CURR-0AH
  1256. STATE    DW    DOUSE
  1257.     DB    24H
  1258. ;
  1259.     DB    84H    ;    BASE
  1260.     DB    'BAS'
  1261.     DB    'E'+80H
  1262.     DW    STATE-8
  1263. BASEE    DW    DOUSE
  1264.     DB    26H
  1265. ;
  1266.     DB    83H    ;    DPL
  1267.     DB    'DP'
  1268.     DB    'L'+80H
  1269.     DW    BASEE-7
  1270. DPL    DW    DOUSE    
  1271.     DB    28H
  1272. ;
  1273.     DB    83H    ;FLD
  1274.     DB    'FL'
  1275.     DB    'D'+80H
  1276.     DW    DPL-6
  1277. FLD    DW    DOUSE
  1278.     DB    2AH
  1279. ;
  1280.     DB    83H    ;    CSP
  1281.     DB    'CS'
  1282.     DB    'P'+80H
  1283.     DW    FLD-6
  1284. CSPP    DW    DOUSE
  1285.     DB    2CH
  1286. ;
  1287.     DB    82H    ;    R#
  1288.     DB    'R'
  1289.     DB    '#'+80H
  1290.     DW    CSPP-6
  1291. RNUM    DW    DOUSE
  1292.     DB    2EH
  1293. ;
  1294.     DB    83H    ;    HLD
  1295.     DB    'HL'
  1296.     DB    'D'+80H
  1297.     DW    RNUM-5
  1298. HLD    DW    DOUSE
  1299.     DW    30H
  1300. ;
  1301.     DB    85H    ;    TEMIT
  1302.     DB    'TEMI'
  1303.     DB    'T'+80H
  1304.     DW    HLD-6
  1305. TEMIT    DW    DOUSE
  1306.     DB    32H
  1307. ;
  1308.     DB    84H
  1309.     DB    'TKE'
  1310.     DB    'Y'+80H
  1311.     DW    TEMIT-8
  1312. TKEY    DW    DOUSE
  1313.     DB    34H
  1314. ;
  1315. ;
  1316. ;-------------------------END OF USER VARIABLES--------------------------------
  1317. ;
  1318.     DB    82H    ;    1+
  1319.     DB    '1'
  1320.     DB    '+'+80H
  1321.     DW    TKEY-7 
  1322. ONEP    DW    DOCOL
  1323.     DW    ONE
  1324.     DW    PLUS
  1325.     DW    SEMIS
  1326. ;
  1327.     DB    82H    ;    2+
  1328.     DB    '2'
  1329.     DB    '+'+80H
  1330.     DW    ONEP-5
  1331. TWOP    DW    DOCOL
  1332.     DW    TWO
  1333.     DW    PLUS
  1334.     DW    SEMIS
  1335. ;
  1336.     DB    84H    ;    HERE
  1337.          DB    'HER'
  1338.     DB    'E'+80H
  1339.     DW    TWOP-5
  1340. HERE    DW    DOCOL
  1341.     DW    DP
  1342.     DW    AT
  1343.     DW    SEMIS
  1344. ;
  1345.     DB    85H    ;    ALLOT
  1346.     DB    'ALLO'
  1347.     DB     'T'+80H
  1348.     DW    HERE-7
  1349. ALLOT    DW    DOCOL
  1350.     DW    DP
  1351.     DW    PSTOR
  1352.     DW    SEMIS
  1353. ;
  1354.     DB    81H    ;    ,
  1355.     DB    ','+80H
  1356.     DW    ALLOT-8
  1357. COMMA    DW    DOCOL
  1358.     DW    HERE
  1359.     DW    STORE
  1360.     DW    TWO
  1361.     DW    ALLOT
  1362.     DW    SEMIS
  1363. ;
  1364.     DB    82H    ;    C,
  1365.     DB    'C'
  1366.     DB    ','+80H
  1367.     DW    COMMA-4
  1368. CCOM    DW    DOCOL
  1369.     DW    HERE
  1370.     DW    CSTOR
  1371.     DW    ONE
  1372.     DW    ALLOT
  1373.     DW    SEMIS
  1374. ;
  1375. ;--------------------------SUBROUTINE USED BY - AND <
  1376. ;
  1377. SSUB    MOV    A,L    
  1378.     SUB    E
  1379.     MOV    L,A
  1380.     MOV    A,H
  1381.     SBB    D
  1382.     MOV    H,A
  1383.     RET
  1384. ;
  1385.     DB    81H    ;    -  (AS IN SUBTRACTION)
  1386.     DB    '-'+80H
  1387.     DW    CCOM-5
  1388. SUBB    DW    $+2
  1389.     POP    D
  1390.     POP    H
  1391.     CALL    SSUB
  1392.     JMP    HPUSH
  1393. ;
  1394.     DB    81H    ;    =
  1395.     DB    '='+80H
  1396.     DW    SUBB-4
  1397. EQUAL    DW    DOCOL
  1398.     DW    SUBB
  1399.     DW    ZEQU
  1400.     DW    SEMIS
  1401. ;
  1402.     DB    81H    ;    <
  1403.     DB    '<'+80H
  1404.     DW    EQUAL-4
  1405. LESS    DW    $+2
  1406.     POP    D
  1407.     POP    H
  1408.     MOV    A,D
  1409.     XRA    H
  1410.     JM    LES1
  1411.     CALL    SSUB
  1412. LES1    INR    H
  1413.     DCR    H
  1414.     JM    LES2
  1415.     LXI    H,0
  1416.     JMP    HPUSH
  1417. LES2    LXI    H,1
  1418.     JMP    HPUSH
  1419. ;
  1420.     DB    82H    ;    U<    (UNSIGNED <)
  1421.     DB    'U'
  1422.     DB    '<'+80H
  1423.     DW    LESS-4
  1424. ULESS    DW    DOCOL,TDUP
  1425.     DW    XORR,ZLESS
  1426.     DW    ZBRAN
  1427.     DW    ULES1-$
  1428.     DW    DROP,ZLESS
  1429.     DW    ZEQU
  1430.     DW    BRAN
  1431.     DW    ULES2-$
  1432. ULES1    DW    SUBB,ZLESS
  1433. ULES2    DW    SEMIS
  1434. ;
  1435.     DB    81H    ;    >
  1436.     DB    '>'+80H
  1437.     DW    ULESS-5
  1438. GREAT    DW    DOCOL
  1439.     DW    SWAP
  1440.     DW    LESS
  1441.     DW    SEMIS
  1442. ;
  1443.     DB    83H    ;    ROT
  1444.     DB    'RO'
  1445.     DB    'T'+80H
  1446.     DW    GREAT-4
  1447. ROT    DW    $+2
  1448.     POP    D
  1449.     POP    H
  1450.     XTHL
  1451.     JMP    DPUSH
  1452. ;
  1453.     DB    85H    ;    SPACE
  1454.     DB    'SPAC'
  1455.     DB    'E'+80H
  1456.     DW    ROT-6
  1457. SPACE    DW    DOCOL
  1458.     DW    BL
  1459.     DW    EMIT
  1460.     DW    SEMIS
  1461. ;
  1462.     DB    84H    ;    -DUP
  1463.     DB    '-DU'
  1464.     DB    'P'+80H
  1465.     DW    SPACE-8
  1466. DDUP    DW    DOCOL
  1467.     DW    DUP
  1468.     DW    ZBRAN
  1469.     DW    DDUP1-$
  1470.     DW    DUP
  1471. DDUP1    DW    SEMIS
  1472. ;
  1473.     DB    88H    ;    TRAVERSE
  1474.     DB    'TRAVERS'
  1475.     DB    'E'+80H
  1476.     DW    DDUP-7
  1477. TRAV    DW    DOCOL
  1478.     DW    SWAP
  1479. TRAV1    DW    OVER
  1480.     DW    PLUS
  1481.     DW    LIT
  1482.     DW    7FH
  1483.     DW    OVER
  1484.     DW    CAT
  1485.     DW    LESS
  1486.     DW    ZBRAN
  1487.     DW    TRAV1-$
  1488.     DW    SWAP
  1489.     DW    DROP
  1490.     DW    SEMIS
  1491. ;
  1492.     DB    86H    ;    LATEST
  1493.          DB    'LATES'
  1494.     DB    'T'+80H
  1495.     DW    TRAV-0BH
  1496. LATES    DW    DOCOL
  1497.     DW    CURR
  1498.     DW    AT
  1499.     DW    AT
  1500.     DW    SEMIS
  1501. ;
  1502.     DB    83H    ;    LFA
  1503.     DB    'LF'
  1504.     DB    'A'+80H
  1505.     DW    LATES-9
  1506. LFA    DW    DOCOL
  1507.     DW    LIT
  1508.     DW    4
  1509.     DW    SUBB
  1510.     DW    SEMIS
  1511. ;
  1512.     DB    83H    ;    CFA
  1513.     DB    'CF'
  1514.     DB    'A'+80H
  1515.     DW    LFA-6
  1516. CFA    DW    DOCOL
  1517.     DW    TWO
  1518.     DW    SUBB
  1519.     DW    SEMIS
  1520. ;
  1521.     DB    83H    ;    NFA
  1522.     DB    'NF'    
  1523.     DB    'A'+80H
  1524.     DW    CFA-6
  1525. NFA    DW    DOCOL
  1526.     DW    LIT
  1527.     DW    5
  1528.     DW    SUBB
  1529.     DW    LIT
  1530.     DW    -1
  1531.     DW    TRAV
  1532.     DW    SEMIS
  1533. ;
  1534.     DB    83H    ;    PFA
  1535.     DB    'PF'
  1536.     DB    'A'+80H
  1537.     DW    NFA-6
  1538. PFA    DW    DOCOL
  1539.     DW    ONE
  1540.     DW    TRAV
  1541.     DW    LIT
  1542.     DW    5
  1543.     DW    PLUS
  1544.     DW    SEMIS
  1545. ;
  1546.     DB    84H    ;    STORE CSP
  1547.     DB    '!CS'
  1548.     DB    'P'+80H
  1549.     DW    PFA-6
  1550. SCSP    DW    DOCOL
  1551.     DW    SPAT
  1552.     DW    CSPP
  1553.     DW    STORE
  1554.     DW    SEMIS
  1555. ;
  1556.     DB    86H    ;    ?ERROR
  1557.     DB    '?ERRO'
  1558.     DB    'R'+80H
  1559.     DW    SCSP-7
  1560. QERR    DW    DOCOL
  1561.     DW    SWAP
  1562.     DW    ZBRAN
  1563.     DW    QERR1-$
  1564.     DW    ERROR
  1565.     DW    BRAN
  1566.     DW    QERR2-$
  1567. QERR1    DW    DROP
  1568. QERR2    DW    SEMIS
  1569. ;
  1570.     DB    85H    ;    ?COMP
  1571.     DB    '?COM'
  1572.     DB    'P'+80H
  1573.     DW    QERR-9
  1574. QCOMP    DW    DOCOL
  1575.     DW    STATE
  1576.     DW    AT
  1577.     DW    ZEQU
  1578.     DW    LIT
  1579.     DW    11H
  1580.     DW    QERR
  1581.     DW    SEMIS
  1582. ;
  1583.     DB    85H    ;    ?EXEC
  1584.     DB    '?EXE'
  1585.     DB    'C'+80H
  1586.     DW    QCOMP-8
  1587. QEXEC    DW    DOCOL
  1588.     DW    STATE
  1589.     DW    AT
  1590.     DW    LIT
  1591.     DW    12H
  1592.     DW    QERR
  1593.     DW    SEMIS
  1594. ;
  1595.     DB    86H    ;    ?PAIRS
  1596.     DB    '?PAIR'
  1597.     DB    'S'+80H
  1598.     DW    QEXEC-8
  1599. QPAIR    DW    DOCOL
  1600.     DW    SUBB
  1601.     DW    LIT
  1602.     DW    13H
  1603.     DW    QERR
  1604.     DW    SEMIS
  1605. ;
  1606.     DB    84H    ;    ?CSP
  1607.     DB    '?CS'
  1608.     DB    'P'+80H
  1609.     DW    QPAIR-9
  1610. QCSP    DW    DOCOL
  1611.     DW    SPAT
  1612.     DW    CSPP
  1613.     DW    AT
  1614.     DW    SUBB
  1615.     DW    LIT
  1616.     DW    14H
  1617.     DW    QERR
  1618.     DW    SEMIS
  1619. ;
  1620.     DB    88H    ;    ?LOADING
  1621.     DB    '?LOADIN'
  1622.     DB    'G'+80H
  1623.     DW    QCSP-7
  1624. QLOAD    DW    DOCOL
  1625.     DW    BLK
  1626.     DW    AT
  1627.     DW    ZEQU
  1628.     DW    LIT
  1629.     DW    16H
  1630.     DW    QERR
  1631.     DW    SEMIS
  1632. ;
  1633.     DB    87H    ;    COMPILE
  1634.     DB    'COMPIL'
  1635.     DB    'E'+80H
  1636.     DW    QLOAD-0BH
  1637. COMP    DW    DOCOL
  1638.     DW    QCOMP
  1639.     DW    FROMR
  1640.     DW    DUP
  1641.     DW    TWOP
  1642.     DW    TOR
  1643.     DW    AT
  1644.     DW    COMMA
  1645.     DW    SEMIS
  1646. ;
  1647.     DB    0C1H    ;    [
  1648.     DB    '['+80H
  1649.     DW    COMP-0AH
  1650. LBRAC    DW    DOCOL
  1651.     DW    ZERO
  1652.     DW    STATE
  1653.     DW    STORE
  1654.     DW    SEMIS
  1655. ;
  1656.     DB    81H    ;    ]
  1657.     DB    ']'+80H
  1658.     DW    LBRAC-4
  1659. RBRAC    DW    DOCOL
  1660.     DW    LIT,0C0H
  1661.     DW    STATE,STORE
  1662.     DW    SEMIS
  1663. ;
  1664.     DB    86H    ;    SMUDGE
  1665.     DB    'SMUDG'
  1666.     DB    'E'+80H
  1667.     DW    RBRAC-4
  1668. SMUDG    DW    DOCOL
  1669.     DW    LATES
  1670.     DW    LIT
  1671.     DW    20H
  1672.     DW    TOGGL
  1673.     DW    SEMIS
  1674. ;
  1675.     DB    83H    ;    HEX
  1676.     DB    'HE'
  1677.     DB     'X'+80H
  1678.     DW    SMUDG-9
  1679. HEX    DW    DOCOL
  1680.     DW    LIT
  1681.     DW    10H
  1682.     DW    BASEE
  1683.     DW    STORE
  1684.     DW    SEMIS
  1685. ;
  1686.     DB    87H    ;    DECIMAL
  1687.     DB    'DECIMA'
  1688.     DB    'L'+80H
  1689.     DW    HEX-6
  1690. DEC    DW    DOCOL
  1691.     DW    LIT
  1692.     DW    0AH
  1693.     DW    BASEE
  1694.     DW    STORE
  1695.     DW    SEMIS
  1696. ;
  1697.     DB    87H    ;    (;CODE)
  1698.     DB    '(;CODE'
  1699.     DB    ')'+80H
  1700.     DW    DEC-0AH
  1701. PSCOD    DW    DOCOL
  1702.     DW    FROMR
  1703.     DW    LATES
  1704.     DW    PFA
  1705.     DW    CFA
  1706.     DW    STORE
  1707.     DW    SEMIS
  1708. ;
  1709.     DB    0C5H    ;    ;CODE
  1710.     DB    ';COD'
  1711.     DB    'E'+80H
  1712.     DW    PSCOD-0AH
  1713. SEMIC    DW    DOCOL
  1714.     DW    QCSP
  1715.     DW    COMP
  1716.     DW    PSCOD
  1717.     DW    LBRAC
  1718. SEMI1    DW    NOOP    ;    ( ASSEMBLER )
  1719.     DW    SEMIS
  1720. ;
  1721.     DB    87H    ;    <BUILDS    (CREATE IN 79 STANDARD FORTH)
  1722.     DB    '<BUILD'
  1723.     DB    'S'+80H
  1724.     DW    SEMIC-8
  1725. BUILD    DW    DOCOL
  1726.     DW    ZERO
  1727.     DW    CONS
  1728.     DW    SEMIS
  1729. ;
  1730.     DB    85H    ;    DOES>
  1731.     DB    'DOES'
  1732.     DB    '>'+80H
  1733.     DW    BUILD-0AH
  1734. DOES    DW    DOCOL
  1735.     DW    FROMR
  1736.     DW    LATES
  1737.     DW    PFA
  1738.     DW    STORE
  1739.     DW    PSCOD
  1740. DODOE    LHLD    RPP
  1741.     DCX    H
  1742.     MOV    M,B
  1743.     DCX    H
  1744.     MOV    M,C
  1745.     SHLD    RPP
  1746.     INX    D
  1747.     XCHG
  1748.     MOV    C,M
  1749.     INX    H
  1750.     MOV    B,M
  1751.     INX    H
  1752.     JMP    HPUSH
  1753. ;
  1754.     DB    85H    ;    COUNT
  1755.     DB    'COUN'
  1756.     DB    'T'+80H
  1757.     DW    DOES-8
  1758. COUNT    DW    DOCOL
  1759.     DW    DUP
  1760.     DW    ONEP
  1761.     DW    SWAP
  1762.     DW    CAT
  1763.     DW    SEMIS
  1764. ;    
  1765.     DB    84H    ;    TYPE
  1766.     DB    'TYP'
  1767.     DB    'E'+80H
  1768.     DW    COUNT-8
  1769. TYPE    DW    DOCOL
  1770.     DW    DDUP
  1771.     DW    ZBRAN
  1772.     DW    TYPE1-$
  1773.     DW    OVER
  1774.     DW    PLUS
  1775.     DW    SWAP
  1776.     DW    XDO
  1777. TYPE2    DW    IDO
  1778.     DW    CAT
  1779.     DW    EMIT
  1780.     DW    XLOOP
  1781.     DW    TYPE2-$
  1782.     DW    BRAN
  1783.     DW    TYPE3-$
  1784. TYPE1    DW    DROP
  1785. TYPE3    DW    SEMIS
  1786. ;
  1787.     DB    89H    ;    -TRAILING
  1788.     DB    '-TRAILIN'
  1789.     DB    'G'+80H
  1790.     DW    TYPE-7
  1791. DTRAI    DW    DOCOL
  1792.     DW    DUP
  1793.     DW    ZERO
  1794.     DW    XDO
  1795. DTRA1    DW    OVER
  1796.     DW    OVER
  1797.     DW    PLUS
  1798.     DW    ONE
  1799.     DW    SUBB
  1800.     DW    CAT
  1801.     DW    BL
  1802.     DW    SUBB
  1803.     DW    ZBRAN
  1804.     DW    DTRA2-$
  1805.     DW    LEAVE
  1806.     DW    BRAN
  1807.     DW    DTRA3-$
  1808. DTRA2    DW    ONE
  1809.     DW    SUBB
  1810. DTRA3    DW    XLOOP
  1811.     DW    DTRA1-$
  1812.     DW    SEMIS
  1813. ;
  1814.     DB    84H    ;    (.")
  1815.     DB    '(."'    
  1816.     DB    ')'+80H
  1817.     DW    DTRAI-0CH
  1818. PDOTQ    DW    DOCOL
  1819.     DW    RR
  1820.     DW    COUNT
  1821.     DW    DUP
  1822.     DW    ONEP
  1823.     DW    FROMR
  1824.     DW    PLUS
  1825.     DW    TOR
  1826.     DW    TYPE
  1827.     DW    SEMIS
  1828. ;
  1829.     DB    0C2H    ;    ."
  1830.     DB    '.'
  1831.     DB    '"'+80H
  1832.     DW    PDOTQ-7
  1833. DOTQ    DW    DOCOL
  1834.     DW    LIT
  1835.     DW    22H    
  1836.     DW    STATE
  1837.     DW    AT
  1838.     DW    ZBRAN
  1839.     DW    DOTQ1-$
  1840.     DW    COMP    
  1841.     DW    PDOTQ
  1842.     DW    DWD
  1843.     DW    HERE
  1844.     DW    CAT
  1845.     DW    ONEP
  1846.     DW    ALLOT
  1847.     DW    BRAN
  1848.     DW    DOTQ2-$
  1849. DOTQ1    DW    DWD
  1850.     DW    HERE
  1851.     DW    COUNT
  1852.     DW    TYPE
  1853. DOTQ2    DW    SEMIS
  1854. ;
  1855.     DB    86H    ;    EXPECT
  1856.     DB    'EXPEC'
  1857.     DB    'T'+80H
  1858.     DW    DOTQ-5
  1859. EXPEC    DW    DOCOL
  1860.     DW    OVER
  1861.     DW    PLUS
  1862.     DW    OVER
  1863.     DW    XDO
  1864. EXPE1    DW    KEY
  1865.     DW    DUP
  1866.     DW    LIT
  1867.     DW    0EH
  1868.     DW    PORIG
  1869.     DW    AT
  1870.     DW    EQUAL
  1871.     DW    ZBRAN
  1872.     DW    EXPE2-$
  1873.     DW    DROP
  1874.     DW    DUP
  1875.     DW    IDO
  1876.     DW    EQUAL
  1877.     DW    DUP
  1878.     DW    FROMR
  1879.     DW    TWO
  1880.     DW    SUBB
  1881.     DW    PLUS
  1882.     DW    TOR
  1883.     DW    ZBRAN
  1884.     DW    EXPE6-$
  1885.     DW    LIT
  1886.     DW    BELL
  1887.     DW    BRAN
  1888.     DW    EXPE7-$
  1889. EXPE6    DW    LIT
  1890.     DW    BSOUT
  1891. EXPE7    DW    BRAN
  1892.     DW    EXPE3-$
  1893. EXPE2    DW    DUP
  1894.     DW    LIT
  1895.     DW    0DH
  1896.     DW    EQUAL
  1897.     DW    ZBRAN
  1898.     DW    EXPE4-$
  1899.     DW    LEAVE
  1900.     DW    DROP
  1901.     DW    BL
  1902.     DW    ZERO
  1903.     DW    BRAN
  1904.     DW    EXPE5-$
  1905. EXPE4    DW    DUP
  1906. EXPE5    DW    IDO
  1907.     DW    CSTOR
  1908.     DW    ZERO
  1909.     DW    IDO
  1910.     DW    ONEP
  1911.     DW    STORE
  1912. EXPE3    DW    EMIT
  1913.     DW    XLOOP
  1914.     DW    EXPE1-$
  1915.     DW    DROP
  1916.     DW    SEMIS
  1917. ;
  1918.     DB    85H    ;    QUERY
  1919.     DB    'QUER'
  1920.     DB    'Y'+80H
  1921.     DW    EXPEC-9
  1922. QUERY    DW    DOCOL
  1923.     DW    TIB    
  1924.     DW    AT
  1925.     DW    LIT
  1926.     DW    50H
  1927.     DW    EXPEC
  1928.     DW    ZERO
  1929.     DW    INN
  1930.     DW    STORE
  1931.     DW    SEMIS
  1932. ;
  1933.     DB    0C1H    ;    0 (NULL)
  1934.     DB    80H
  1935.     DW    QUERY-8
  1936. NULL    DW    DOCOL
  1937.     DW    BLK
  1938.     DW    AT
  1939.     DW    ZBRAN
  1940.     DW    NULL1-$
  1941.     DW    ONE
  1942.     DW    BLK
  1943.     DW    PSTOR
  1944.     DW    ZERO
  1945.     DW    INN
  1946.     DW    STORE
  1947.     DW    BLK
  1948.     DW    AT
  1949.     DW    BSCR
  1950.     DW    ONE    
  1951.     DW    SUBB
  1952.     DW    ANDD
  1953.     DW    ZEQU
  1954.     DW    ZBRAN
  1955.     DW    NULL2-$
  1956.     DW    QEXEC
  1957.     DW    FROMR
  1958.     DW    DROP
  1959. NULL2    DW    BRAN
  1960.     DW    NULL3-$
  1961. NULL1    DW    FROMR
  1962.     DW    DROP
  1963. NULL3    DW    SEMIS
  1964. ;
  1965.     DB    84H    ;    FILL
  1966.     DB    'FIL'
  1967.     DB    'L'+80H
  1968.     DW    NULL-4
  1969. FILL    DW    $+2
  1970.     MOV    L,C
  1971.     MOV    H,B
  1972.     POP    D
  1973.     POP    B
  1974.     XTHL
  1975.     XCHG
  1976. FILL1    MOV    A,B
  1977.     ORA    C
  1978.     JZ    FILL2
  1979.     MOV    A,L
  1980.     STAX    D
  1981.     INX    D
  1982.     DCX    B
  1983.     JMP    FILL1
  1984. FILL2    POP    B
  1985.     JMP    NEXT
  1986. ;
  1987.     DB    85H    ;    ERASE
  1988.     DB    'ERAS'
  1989.     DB    'E'+80H
  1990.     DW    FILL-7
  1991. ERASEE    DW    DOCOL
  1992.     DW    ZERO
  1993.     DW    FILL
  1994.     DW    SEMIS
  1995. ;
  1996.     DB    86H    ;    BLANKS
  1997.     DB    'BLANK'
  1998.     DB    'S'+80H
  1999.     DW    ERASEE-8
  2000. BLANKK    DW    DOCOL
  2001.     DW    BL
  2002.     DW    FILL
  2003.     DW    SEMIS
  2004. ;
  2005.     DB    84H    ;    HOLD
  2006.     DB    'HOL'
  2007.     DB    'D'+80H
  2008.     DW    BLANKK-9
  2009. HOLD    DW    DOCOL
  2010.     DW    LIT
  2011.     DW    -1
  2012.     DW    HLD
  2013.     DW    PSTOR
  2014.     DW    HLD
  2015.     DW    AT
  2016.     DW    CSTOR
  2017.     DW    SEMIS
  2018. ;
  2019.     DB    83H    ;    PAD
  2020.     DB    'PA'
  2021.     DB    'D'+80H
  2022.     DW    HOLD-7
  2023. PAD    DW    DOCOL
  2024.     DW    HERE
  2025.     DW    LIT
  2026.     DW    44H
  2027.     DW    PLUS
  2028.     DW    SEMIS
  2029. ;
  2030.     DB    84H    ;    DWD
  2031.     DB    'WOR'
  2032.     DB    'D'+80H
  2033.     DW    PAD-6
  2034. DWD    DW    DOCOL
  2035.     DW    BLK
  2036.     DW    AT
  2037.     DW    ZBRAN
  2038.     DW    DW1-$
  2039.     DW    BLK
  2040.     DW    AT
  2041.     DW    BLOCK
  2042.     DW    BRAN
  2043.     DW    DW2-$
  2044. DW1    DW    TIB
  2045.     DW    AT
  2046. DW2    DW    INN
  2047.     DW    AT
  2048.     DW    PLUS
  2049.     DW    SWAP
  2050.     DW    ENCL
  2051.     DW    HERE
  2052.     DW    LIT
  2053.     DW    22H
  2054.     DW    BLANKK
  2055.     DW    INN
  2056.     DW    PSTOR
  2057.     DW    OVER
  2058.     DW    SUBB
  2059.     DW    TOR
  2060.     DW    RR
  2061.     DW    HERE
  2062.     DW    CSTOR
  2063.     DW    PLUS
  2064.     DW    HERE
  2065.     DW    ONEP
  2066.     DW    FROMR
  2067.     DW    CMOVE
  2068.     DW    SEMIS
  2069. ;
  2070.     DB    88H    ;    (NUMBER)
  2071.     DB    '(NUMBER'
  2072.     DB    ')'+80H
  2073.     DW    DWD-7
  2074. PNUMB    DW    DOCOL
  2075. PNUM1    DW    ONEP    
  2076.     DW    DUP
  2077.     DW    TOR
  2078.     DW    CAT
  2079.     DW    BASEE
  2080.     DW    AT
  2081.     DW    DIGIT
  2082.     DW    ZBRAN
  2083.     DW    PNUM2-$
  2084.     DW    SWAP
  2085.     DW    BASEE
  2086.     DW    AT
  2087.     DW    USTAR
  2088.     DW    DROP
  2089.     DW    ROT
  2090.     DW    BASEE
  2091.     DW    AT
  2092.     DW    USTAR
  2093.     DW    DPLUS
  2094.     DW    DPL
  2095.     DW    AT
  2096.     DW    ONEP
  2097.     DW    ZBRAN
  2098.     DW    PNUM3-$
  2099.     DW    ONE
  2100.     DW    DPL
  2101.     DW    PSTOR
  2102. PNUM3    DW    FROMR
  2103.     DW    BRAN
  2104.     DW    PNUM1-$
  2105. PNUM2    DW    FROMR
  2106.     DW    SEMIS
  2107. ;
  2108.     DB    86H    ;    NUMBER
  2109.     DB    'NUMBE'
  2110.     DB    'R'+80H
  2111.     DW    PNUMB-0BH
  2112. NUMB    DW    DOCOL
  2113.     DW    ZERO
  2114.     DW    ZERO
  2115.     DW    ROT
  2116.     DW    DUP
  2117.     DW    ONEP
  2118.     DW    CAT
  2119.     DW    LIT
  2120.     DW    2DH
  2121.     DW    EQUAL
  2122.     DW    DUP
  2123.     DW    TOR
  2124.     DW    PLUS
  2125.     DW    LIT
  2126.     DW    -1
  2127. NUMB1    DW    DPL
  2128.     DW    STORE
  2129.     DW    PNUMB
  2130.     DW    DUP
  2131.     DW    CAT
  2132.     DW    BL
  2133.     DW    SUBB
  2134.     DW    ZBRAN
  2135.     DW    NUMB2-$
  2136.     DW    DUP
  2137.     DW    CAT
  2138.     DW    LIT
  2139.     DW    2EH
  2140.     DW    SUBB
  2141.     DW    ZERO
  2142.     DW    QERR
  2143.     DW    ZERO
  2144.     DW    BRAN
  2145.     DW    NUMB1-$
  2146. NUMB2    DW    DROP
  2147.     DW    FROMR
  2148.     DW    ZBRAN
  2149.     DW    NUMB3-$
  2150.     DW    DMINU
  2151. NUMB3    DW    SEMIS
  2152. ;
  2153.     DB    85H    ;    -FIND
  2154.     DB    '-FIN'
  2155.     DB    'D'+80H
  2156.     DW    NUMB-9
  2157. DFIND    DW    DOCOL
  2158.     DW    BL
  2159.     DW    DWD
  2160.     DW    HERE
  2161.     DW    CONT
  2162.     DW    AT
  2163.     DW    AT
  2164.     DW    PFIND
  2165.     DW    DUP
  2166.     DW    ZEQU
  2167.     DW    ZBRAN
  2168.     DW    DFIN1-$
  2169.     DW    DROP
  2170.     DW    HERE
  2171.     DW    LATES
  2172.     DW    PFIND
  2173. DFIN1    DW    SEMIS
  2174. ;
  2175.     DB    87H    ;    (ABORT)
  2176.     DB    '(ABORT'
  2177.     DB    ')'+80H
  2178.     DW    DFIND-8
  2179. PABOR    DW    DOCOL
  2180.     DW    ABORT
  2181.     DW    SEMIS
  2182. ;
  2183.     DB    85H    ;    ERROR
  2184.     DB    'ERRO'
  2185.     DB    'R'+80H
  2186.     DW    PABOR-0AH
  2187. ERROR    DW    DOCOL
  2188.     DW    WARN
  2189.     DW    AT
  2190.     DW    ZLESS
  2191.     DW    ZBRAN
  2192.     DW    ERRO1-$
  2193.     DW    PABOR
  2194. ERRO1    DW    HERE
  2195.     DW    COUNT
  2196.     DW    TYPE
  2197.     DW    PDOTQ
  2198.     DB    2
  2199.     DB    '? '
  2200.     DW    MESS
  2201.     DW    SPSTO
  2202. ;        **************NOTE CHAGE FROM FIG MODEL*********
  2203. ;    DW    INN,AT,BLK,AT
  2204.     DW    BLK,AT
  2205.     DW    DDUP
  2206.     DW    ZBRAN
  2207.     DW    ERRO2-$
  2208.     DW    INN,AT
  2209.     DW    SWAP
  2210. ERRO2    DW    QUIT    
  2211. ;
  2212.     DB    83H    ;    ID.
  2213.     DB    'ID'
  2214.     DB    '.'+80H
  2215.     DW    ERROR-8
  2216. IDDOT    DW    DOCOL
  2217.     DW    PAD
  2218.     DW    LIT
  2219.     DW    20H
  2220.     DW    LIT
  2221.     DW    5FH
  2222.     DW    FILL
  2223.     DW    DUP
  2224.     DW    PFA
  2225.     DW    LFA
  2226.     DW    OVER
  2227.     DW    SUBB
  2228.     DW    PAD
  2229.     DW    SWAP
  2230.     DW    CMOVE
  2231.     DW    PAD
  2232.     DW    COUNT
  2233.     DW    LIT
  2234.     DW    1FH
  2235.     DW    ANDD
  2236.     DW    TYPE
  2237.     DW    SPACE
  2238.     DW    SEMIS
  2239. ;
  2240.     DB    86H    ;    CREATE
  2241.     DB    'CREAT'
  2242.     DB    'E'+80H
  2243.     DW    IDDOT-6
  2244. CREAT    DW    DOCOL
  2245.     DW    DFIND
  2246.     DW    ZBRAN
  2247.     DW    CREA1-$
  2248.     DW    DROP
  2249.     DW    NFA
  2250.     DW    IDDOT
  2251.     DW    LIT
  2252.     DW    4
  2253.     DW    MESS
  2254.     DW    SPACE
  2255. CREA1    DW    HERE
  2256.     DW    DUP
  2257.     DW    CAT
  2258.     DW    WIDTH
  2259.     DW    AT
  2260.     DW    MIN
  2261.     DW    ONEP
  2262.     DW    ALLOT
  2263.     DW    DUP
  2264.     DW    LIT
  2265.     DW    0A0H
  2266.     DW    TOGGL
  2267.     DW    HERE
  2268.     DW    ONE
  2269.     DW    SUBB
  2270.     DW    LIT
  2271.     DW    80H
  2272.     DW    TOGGL
  2273.     DW    LATES
  2274.     DW    COMMA
  2275.     DW    CURR
  2276.     DW    AT
  2277.     DW    STORE
  2278.     DW    HERE
  2279.     DW    TWOP
  2280.     DW    COMMA
  2281.     DW    SEMIS
  2282. ;
  2283.     DB    0C9H    ;    [COMPILE]
  2284.     DB    '[COMPILE'
  2285.     DB    ']'+80H
  2286.     DW    CREAT-9
  2287. BCOMP    DW    DOCOL
  2288.     DW    DFIND
  2289.     DW    ZEQU
  2290.     DW    ZERO
  2291.     DW    QERR
  2292.     DW    DROP
  2293.     DW    CFA
  2294.     DW    COMMA
  2295.     DW    SEMIS
  2296. ;
  2297.     DB    0C7H    ;    LITERAL
  2298.     DB    'LITERA'
  2299.     DB    'L'+80H
  2300.     DW    BCOMP-0CH
  2301. LITER    DW    DOCOL
  2302.     DW    STATE
  2303.     DW    AT
  2304.     DW    ZBRAN
  2305.     DW    LITE1-$
  2306.     DW    COMP
  2307.     DW    LIT
  2308.     DW    COMMA
  2309. LITE1    DW    SEMIS
  2310. ;
  2311.     DB    0C8H    ;    DLITERAL
  2312.     DB    'DLITERA'
  2313.     DB    'L'+80H
  2314.     DW    LITER-0AH
  2315. DLITE    DW    DOCOL
  2316.     DW    STATE
  2317.     DW    AT
  2318.     DW    ZBRAN
  2319.     DW    DLIT1-$
  2320.     DW    SWAP
  2321.     DW    LITER
  2322.     DW    LITER
  2323. DLIT1    DW    SEMIS
  2324. ;
  2325.     DB    86H    ;    ?STACK
  2326.     DB    '?STAC'
  2327.     DB    'K'+80H
  2328.     DW    DLITE-0BH
  2329. QSTAC    DW    DOCOL
  2330.     DW    SPAT
  2331.     DW    SZERO
  2332.     DW    AT
  2333.     DW    SWAP
  2334.     DW    ULESS
  2335.     DW    ONE
  2336.     DW    QERR
  2337.     DW    SPAT
  2338.     DW    HERE
  2339.     DW    LIT
  2340.     DW    80H
  2341.     DW    PLUS
  2342.     DW    ULESS
  2343.     DW    LIT
  2344.     DW    7
  2345.     DW    QERR
  2346.     DW    SEMIS
  2347. ;
  2348.     DB    89H    ;    INTERPRET
  2349.     DB    'INTERPRE'
  2350.     DB    'T'+80H
  2351.     DW    QSTAC-9
  2352. INTER    DW    DOCOL
  2353. INTE1    DW    DFIND
  2354.     DW    ZBRAN
  2355.     DW    INTE2-$
  2356.     DW    STATE
  2357.     DW    AT
  2358.     DW    LESS
  2359.     DW    ZBRAN
  2360.     DW    INTE3-$
  2361.     DW    CFA
  2362.     DW    COMMA
  2363.     DW    BRAN
  2364.     DW    INTE4-$
  2365. INTE3    DW    CFA
  2366.     DW    EXEC
  2367. INTE4    DW    QSTAC
  2368.     DW    BRAN
  2369.     DW    INTE5-$
  2370. INTE2    DW    HERE
  2371.     DW    NUMB
  2372.     DW    DPL
  2373.     DW    AT
  2374.     DW    ONEP
  2375.     DW    ZBRAN
  2376.     DW    INTE6-$
  2377.     DW    DLITE
  2378.     DW    BRAN
  2379.     DW    INTE7-$
  2380. INTE6    DW    DROP
  2381.     DW    LITER
  2382. INTE7    DW    QSTAC
  2383. INTE5    DW    BRAN
  2384.     DW    INTE1-$
  2385. ;
  2386.     DB    89H    ;    IMMEDIATE
  2387.     DB    'IMMEDIAT'
  2388.     DB    'E'+80H
  2389.     DW    INTER-0CH
  2390. IMMED    DW    DOCOL
  2391.     DW    LATES
  2392.     DW    LIT
  2393.     DW    40H
  2394.     DW    TOGGL
  2395.     DW    SEMIS
  2396. ;
  2397.     DB    8AH    ;    VOCABULARY
  2398.     DB    'VOCABULAR'
  2399.     DB    'Y'+80H
  2400.     DW    IMMED-0CH
  2401. VOCAB    DW    DOCOL
  2402.     DW    BUILD
  2403.     DW    LIT
  2404.     DW    0A081H
  2405.     DW    COMMA
  2406.     DW    CURR
  2407.     DW    AT
  2408.     DW    CFA
  2409.     DW    COMMA
  2410.     DW    HERE
  2411.     DW    VOCL
  2412.     DW    AT
  2413.     DW    COMMA
  2414.     DW    VOCL
  2415.     DW    STORE
  2416.     DW    DOES
  2417. DOVOC    DW    TWOP
  2418.     DW    CONT
  2419.     DW    STORE
  2420.     DW    SEMIS
  2421. ;
  2422.     DB    0C5H    ;    FORTH
  2423.     DB    'FORT'
  2424.     DB    'H'+80H
  2425.     DW    VOCAB-0DH
  2426. FORTH    DW    DODOE
  2427.     DW    DOVOC
  2428.     DW    0A081H
  2429.     DW    TASK-7    ;    COLD START VALUE ONLY CHANGED
  2430. ;                EACH TIME A DEF IS ADDED .
  2431.     DW    0    ;    LAST VOCABULARY
  2432. ;
  2433.     DB    8BH    ;    DEFINITIONS
  2434.     DB    'DEFINITION'
  2435.     DB    'S'+80H
  2436.     DW    FORTH-8
  2437. DEFIN    DW    DOCOL
  2438.     DW    CONT
  2439.     DW    AT
  2440.     DW    CURR
  2441.     DW    STORE
  2442.     DW    SEMIS
  2443. ;
  2444.     DB    0C1H    ;    (
  2445.     DB    '('+80H
  2446.     DW    DEFIN-0EH
  2447. PAREN    DW    DOCOL
  2448.     DW    LIT
  2449.     DW    29H
  2450.     DW    DWD
  2451.     DW    SEMIS
  2452. ;
  2453.     DB    84H    ;    QUIT
  2454.     DB    'QUI'
  2455.     DB    'T'+80H
  2456.     DW    PAREN-4
  2457. QUIT    DW    DOCOL
  2458.     DW    ZERO
  2459.     DW    BLK
  2460.     DW    STORE
  2461.     DW    LBRAC
  2462. QUIT1    DW    RPSTO
  2463.     DW    CR
  2464.     DW    QUERY
  2465.     DW    INTER
  2466.     DW    STATE
  2467.     DW    AT
  2468.     DW    ZEQU
  2469.     DW    ZBRAN
  2470.     DW    QUIT2-$
  2471.     DW    PDOTQ
  2472.     DB    2
  2473.     DB    'OK'
  2474. QUIT2    DW    BRAN
  2475.     DW    QUIT1-$
  2476. ;
  2477.     DB    85H    ;    ABORT
  2478.     DB    'ABOR'
  2479.     DB    'T'+80H
  2480.     DW    QUIT-7
  2481. ABORT    DW    DOCOL
  2482.     DW    SPSTO
  2483.     DW    DEC
  2484.     DW    QSTAC
  2485.     DW    CR
  2486.     DW    DOTCPU
  2487.     DW    PDOTQ
  2488.     DB    0FH    ;    LENGTH OF MESSAGE
  2489.     DB    'FIG-FORTH v'
  2490.     DB    FIGREL+30H,ADOT,FIGREV+30H,USRVER+30H
  2491.     DW    FORTH
  2492.     DW    DEFIN
  2493.     DW    QUIT
  2494. ;
  2495. WRM    LXI    B,WRM1
  2496.     JMP    NEXT
  2497. WRM1    DW    WARM
  2498. ;
  2499.     DB    84H    ;    WARM
  2500.     DB    'WAR'
  2501.     DB    'M'+80H
  2502.     DW    ABORT-8
  2503. WARM    DW    DOCOL
  2504.     DW    MTBUF
  2505.     DW    ABORT
  2506. ;
  2507. CLD    LXI    B,CLD1    ;    CLD FROM FIG MODEL (PUSH COLD ON IP STACK)
  2508.     LHLD    ORIG+12H
  2509.     SPHL
  2510.     JMP    NEXT
  2511. CLD1    DW    COLD
  2512. ;
  2513.     DB    84H    ;    COLD
  2514.     DB    'COL'
  2515.     DB    'D'+80H
  2516.     DW    WARM-7
  2517. COLD    DW    DOCOL
  2518.     DW    MTBUF
  2519.     DW    ZERO,DENSTY
  2520.     DW    STORE
  2521.     DW    LIT,BUF1
  2522.     DW    USE,STORE
  2523.     DW    LIT,BUF1
  2524.     DW    PREV,STORE
  2525.     DW    DRZER
  2526.     DW    LIT
  2527.     DW    ORIG+12H
  2528.     DW    LIT
  2529.     DW    UP
  2530.     DW    AT
  2531.     DW    LIT
  2532.     DW    6
  2533.     DW    PLUS
  2534.     DW    LIT
  2535.     DW    10H
  2536.     DW    CMOVE
  2537.     DW    LIT
  2538.     DW    ORIG+0CH
  2539.     DW    AT
  2540.     DW     LIT
  2541.     DW    FORTH+6
  2542.     DW    STORE
  2543.     DW    LIT,ORIG+22H
  2544.     DW    AT
  2545.     DW    TEMIT
  2546.     DW    STORE
  2547.     DW    LIT,ORIG+24H
  2548.     DW    AT
  2549.     DW    TKEY,STORE
  2550.     DW    LIT,FDIR
  2551.     DW    LIT,14
  2552.     DW    PLUS
  2553.     DW    LIT,23
  2554.     DW    ERASEE
  2555.     DW    OPENDR
  2556.     DW    PDOTQ
  2557.     DB    0AH
  2558.     DB    'ENTER DATE'
  2559.     DW    LIT,AEID+6
  2560.     DW    LIT
  2561.     DW    10H
  2562.     DW    EXPEC
  2563.      DW    ABORT
  2564.     DW    SEMIS
  2565. ;
  2566.     DB    84H
  2567.     DB    '&EI'
  2568.     DB    'D'+80H
  2569.     DW    COLD-7
  2570. AEID    DW    DOVAR          ; ID BLOCK FOR EDITOR
  2571.     DB    'BOB      '
  2572.     DB    '         '
  2573.     DB    '         '
  2574. ;
  2575.     DB    87H
  2576.     DB    'OPENDI'
  2577.     DB    'R'+80H
  2578.     DW    AEID-7
  2579. OPENDR    DW    $+2
  2580.     PUSH    B
  2581.     LXI    B,RESDSK
  2582.     CALL    NIOS
  2583.     LXI    B,OPENF
  2584.     LXI    D,FDIR
  2585.     CALL    NIOS
  2586.     POP    B
  2587.     JMP    NEXT
  2588. ;
  2589. ;
  2590.     DB    84H    ;    S->D
  2591.     DB    'S->'
  2592.     DB    'D'+80H
  2593.     DW    OPENDR-10
  2594. STOD    DW    $+2
  2595.     POP    D
  2596.     LXI    H,0
  2597.     MOV    A,D
  2598.     ANI    80H
  2599.     JZ    STOD1
  2600.     DCX    H
  2601. STOD1    JMP    DPUSH
  2602. ;
  2603.     DB    82H    ;    +-
  2604.     DB    '+'
  2605.     DB    '-'+80H
  2606.     DW    STOD-7
  2607. PM    DW    DOCOL
  2608.     DW    ZLESS
  2609.     DW    ZBRAN
  2610.     DW    PM1-$
  2611.     DW    MINUS
  2612. PM1    DW    SEMIS
  2613. ;
  2614.     DB    83H    ;    D+-
  2615.     DB    'D+'
  2616.     DB    '-'+80H
  2617.     DW    PM-5
  2618. DPM    DW    DOCOL
  2619.     DW    ZLESS
  2620.     DW    ZBRAN
  2621.     DW    DPM1-$
  2622.     DW    DMINU
  2623. DPM1    DW    SEMIS
  2624. ;
  2625.     DB    83H    ;    ABS
  2626.     DB    'AB'
  2627.     DB    'S'+80H    
  2628.     DW    DPM-6
  2629. ABS    DW    DOCOL
  2630.     DW    DUP
  2631.     DW    PM
  2632.     DW    SEMIS
  2633. ;
  2634.     DB    84H    ;    DABS
  2635.     DB    'DAB'
  2636.     DB    'S'+80H
  2637.     DW    ABS-6
  2638. DABS    DW    DOCOL
  2639.     DW    DUP
  2640.     DW    DPM
  2641.     DW    SEMIS
  2642. ;
  2643.     DB    83H    ;    MIN
  2644.     DB    'MI'
  2645.     DB    'N'+80H
  2646.     DW    DABS-7
  2647. MIN    DW    DOCOL,TDUP
  2648.     DW    GREAT
  2649.     DW    ZBRAN
  2650.     DW    MIN1-$
  2651.     DW    SWAP
  2652. MIN1    DW    DROP
  2653.     DW    SEMIS
  2654. ;
  2655.     DB    83H    ;    MAX
  2656.     DB    'MA'
  2657.     DB    'X'+80H
  2658.     DW    MIN-6
  2659. MAX    DW    DOCOL,TDUP
  2660.     DW    LESS
  2661.     DW    ZBRAN
  2662.     DW    MAX1-$
  2663.     DW    SWAP
  2664. MAX1    DW    DROP
  2665.     DW    SEMIS
  2666. ;
  2667.     DB    82H    ;    M*
  2668.     DB    'M'
  2669.     DB    '*'+80H
  2670.     DW    MAX-6
  2671. MSTAR    DW    DOCOL,TDUP
  2672.     DW    XORR
  2673.     DW    TOR
  2674.     DW    ABS
  2675.     DW    SWAP
  2676.     DW    ABS
  2677.     DW    USTAR
  2678.     DW    FROMR
  2679.     DW    DPM
  2680.     DW    SEMIS
  2681. ;
  2682.     DB    82H    ;    M/
  2683.     DB    'M'
  2684.     DB    '/'+80H
  2685.     DW    MSTAR-5
  2686. MSLAS    DW    DOCOL
  2687.     DW    OVER
  2688.     DW    TOR
  2689.     DW    TOR
  2690.     DW    DABS
  2691.     DW    RR
  2692.     DW    ABS
  2693.     DW    USLAS
  2694.     DW    FROMR
  2695.     DW    RR
  2696.     DW    XORR
  2697.     DW    PM
  2698.     DW    SWAP
  2699.     DW    FROMR
  2700.     DW    PM
  2701.     DW    SWAP
  2702.     DW    SEMIS
  2703. ;
  2704.     DB    81H    ;    *
  2705.     DB    '*'+80H
  2706.     DW    MSLAS-5
  2707. STAR    DW    DOCOL
  2708.     DW    MSTAR
  2709.     DW    DROP
  2710.     DW    SEMIS
  2711. ;
  2712.     DB    84H    ;    /MOD
  2713.     DB    '/MO'
  2714.     DB    'D'+80H
  2715.     DW    STAR-4
  2716. SLMOD    DW    DOCOL
  2717.     DW    TOR
  2718.     DW    STOD
  2719.     DW    FROMR
  2720.     DW    MSLAS
  2721.     DW    SEMIS
  2722. ;
  2723.     DB    81H    ;    /
  2724.     DB    '/'+80H
  2725.     DW    SLMOD-7
  2726. SLASH    DW    DOCOL
  2727.     DW    SLMOD
  2728.     DW    SWAP
  2729.     DW    DROP
  2730.     DW    SEMIS
  2731. ;
  2732.     DB    83H    ;    MOD
  2733.     DB    'MO'
  2734.     DB    'D'+80H
  2735.     DW    SLASH-4
  2736. MODD    DW    DOCOL    
  2737.     DW    SLMOD
  2738.     DW    DROP
  2739.     DW    SEMIS
  2740. ;
  2741.     DB    85H    ;    */MOD
  2742.     DB    '*/MO'
  2743.     DB    'D'+80H
  2744.     DW    MODD-6
  2745. SSMOD    DW    DOCOL
  2746.     DW    TOR
  2747.     DW    MSTAR
  2748.     DW    FROMR
  2749.     DW    MSLAS
  2750.     DW    SEMIS
  2751. ;
  2752.     DB    82H    ;    */
  2753.     DB    '*'
  2754.     DB    '/'+80H
  2755.     DW    SSMOD-8
  2756. SSLA    DW    DOCOL
  2757.     DW    SSMOD
  2758.     DW    SWAP
  2759.     DW    DROP
  2760.     DW    SEMIS
  2761. ;
  2762.     DB    85H    ;    M/MOD
  2763.     DB    'M/MO'
  2764.     DB    'D'+80H
  2765.     DW    SSLA-5
  2766. MSMOD    DW    DOCOL
  2767.     DW    TOR
  2768.     DW    ZERO
  2769.     DW    RR
  2770.     DW    USLAS
  2771.     DW    FROMR
  2772.     DW    SWAP
  2773.     DW    TOR
  2774.     DW    USLAS
  2775.     DW    FROMR
  2776.     DW    SEMIS
  2777. ;
  2778. ;-------------------------BLOCK MOVED DOWN TWO  S (WHAT THIS MEANS I HAVE)
  2779. ;            (NO IDEA WHATSOEVER)
  2780. ;
  2781.     DB    86H    ;    (LINE)
  2782.     DB    '(LINE'
  2783.     DB    ')'+80H
  2784.     DW    MSMOD-8
  2785. PLINE    DW    DOCOL
  2786.     DW    TOR
  2787.     DW    LIT
  2788.     DW    40H
  2789.     DW    BBUF
  2790.     DW    SSMOD
  2791.     DW    FROMR
  2792.     DW    BSCR
  2793.     DW    STAR
  2794.     DW    PLUS
  2795.     DW    BLOCK    
  2796.     DW    PLUS
  2797.     DW    LIT
  2798.     DW    40H
  2799.     DW    SEMIS
  2800. ;
  2801.     DB    85H    ;    .LINE
  2802.     DB    '.LIN'
  2803.     DB    'E'+80H    
  2804.     DW    PLINE-9
  2805. DLINE    DW    DOCOL
  2806.     DW    PLINE
  2807.     DW    DTRAI
  2808.     DW    TYPE
  2809.     DW    SEMIS
  2810. ;
  2811.     DB    87H    ;    MESSAGE
  2812.     DB    'MESSAG'
  2813.     DB    'E'+80H
  2814.     DW    DLINE-8
  2815. MESS    DW    DOCOL
  2816.     DW    WARN
  2817.     DW    AT
  2818.     DW    ZBRAN
  2819.     DW    MESS1-$
  2820.     DW    DDUP
  2821.     DW    ZBRAN
  2822.     DW    MESS2-$
  2823.     DW    LIT
  2824.     DW    4
  2825.     DW    OFSET
  2826.     DW    AT
  2827.     DW    BSCR
  2828.     DW    SLASH
  2829.     DW    SUBB
  2830.     DW    DLINE
  2831.     DW    SPACE
  2832. MESS2    DW    BRAN
  2833.     DW    MESS3-$
  2834. MESS1    DW    PDOTQ
  2835.     DB    5
  2836.     DB    'MSG # '
  2837.     DW    DOT
  2838. MESS3    DW    SEMIS
  2839. ;
  2840.      
  2841. ;
  2842. ;--------------------------8080 PORT FETCH AND STORE 
  2843. ;--------------------------(SELF MODIFYING, NOT REENTRANT)
  2844. ;
  2845.     DB    82H    ;    P@
  2846.     DB    'P'
  2847.     DB    '@'+80H
  2848.     DW    MESS-0AH
  2849. PTAT    DW    $+2
  2850.     POP    D
  2851.     LXI    H,$+5
  2852.     MOV    M,E
  2853.     IN    0
  2854.     MOV    L,A
  2855.     MVI    H,0
  2856.     JMP    HPUSH
  2857. ;
  2858.     DB    82H    ;    PSTORE
  2859.     DB    'P'
  2860.     DB    '!'+80H
  2861.     DW    PTAT-5
  2862. PTSTO    DW    $+2
  2863.     POP    D
  2864.     LXI    H,$+7
  2865.     MOV    M,E
  2866.     POP    H
  2867.     MOV    A,L
  2868.     OUT    0
  2869.     JMP    NEXT
  2870.      
  2871. ;
  2872. RITSEC    EQU    34
  2873. RDSEC    EQU    33
  2874. SETDMA    EQU    33
  2875. SETDSK    EQU    24
  2876. ;
  2877. ;     DOUBLE DENSITY 5 1/4 FLOPPY CAPACITIES
  2878. SPT2    EQU    40    ;SECTORS PER TRACK
  2879. TRKS2    EQU    40    ;NUMBER OF TRACKS
  2880. SPDRV2    EQU    150      ;SECTORS/DRIVE
  2881. ;
  2882. ;     SINGLE DENSITY 51/4 FLOPPY
  2883. SPT1    EQU    20
  2884. TRKS1    EQU    40
  2885. SPDRV1    EQU    SPT1*TRKS1
  2886. ;
  2887. ;
  2888. BPS    EQU    1024    ;BYTES PER SECTOR
  2889. MXDRV    EQU    1    ;MAX # DRIVES
  2890. ;------------------------- DISK VARIABLES
  2891. ;
  2892. ;
  2893. ;
  2894.     DB    85H    ;    DRIVE
  2895.     DB    'DRIV'
  2896.     DB    'E'+80H
  2897.     DW    PTSTO-5
  2898. DRIVE    DW    DOVAR,0
  2899. ;
  2900.     DB    83H    ;    USE
  2901.     DB    'US'
  2902.     DB    'E'+80H
  2903.     DW    DRIVE-8
  2904. USE    DW    DOVAR,BUF1
  2905. ;
  2906.     DB    84H    ;    PREV
  2907.     DB    'PRE'
  2908.     DB    'V'+80H
  2909.     DW    USE-6
  2910. PREV    DW    DOVAR,BUF1
  2911. ;
  2912.     DB    87H    ;    SEC/BLOCK
  2913.     DB    'SEC/BL'
  2914.     DB    'K'+80H
  2915.     DW    PREV-7
  2916. SPBLK    DW    DOCON,KBBUF/BPS
  2917. ;
  2918.     DB    85H    ;    #BUF
  2919.     DB    '#BUF'
  2920.     DB    'F'+80H
  2921.     DW    SPBLK-10
  2922. NOBUF    DW    DOCON,NBUF
  2923. ;
  2924.     DB    87H    ;    DENSITY    (0 =SINGLE 1 =DOUBLE)
  2925.     DB    'DENSIT'
  2926.     DB    'Y'+80H
  2927.     DW    NOBUF-8
  2928. DENSTY    DW    DOVAR
  2929.     DW    1
  2930. ;
  2931.     DB    8AH    ;    DISK-ERROR
  2932.     DB    'DISK-ERRO'
  2933.     DB    'R'+80H
  2934.     DW    NOBUF-8
  2935. DSKERR    DW    DOVAR,0
  2936. ;
  2937. ;--------------------------DISK INTERFACE HIGH-LEVEL ROUTINES
  2938. ;
  2939.     DB    84H    ;    +BUF
  2940.     DB    '+BU'
  2941.     DB    'F'+80H
  2942.     DW    DSKERR-13
  2943. PBUF    DW    DOCOL
  2944.     DW    LIT,CO
  2945.     DW    PLUS,DUP
  2946.     DW    LIMIT,EQUAL
  2947.     DW    ZBRAN
  2948.     DW    PBUF1-$
  2949.     DW    DROP,FIRST
  2950. PBUF1    DW    DUP,PREV
  2951.     DW    AT,SUBB
  2952.     DW    SEMIS
  2953. ;
  2954.     DB    86H    ;    UPDATE
  2955.     DB    'UPDAT'
  2956.     DB    'E'+80H
  2957.     DW    PBUF-7
  2958. UPDAT    DW    DOCOL,PREV
  2959.     DW    AT,AT
  2960.     DW    LIT,8000H
  2961.     DW    ORR    
  2962.     DW    PREV,AT
  2963.     DW    STORE,SEMIS
  2964. ;
  2965.     DB    8DH    ;    EMPTY-BUFFERS
  2966.     DB    'EMPTY-BUFFER'
  2967.     DB    'S'+80H
  2968.     DW    UPDAT-9
  2969. MTBUF    DW    DOCOL,FIRST
  2970.     DW    LIMIT,OVER
  2971.     DW    SUBB,ERASEE
  2972.     DW    SEMIS
  2973. ;
  2974.     DB    83H    ;    DR0
  2975.     DB    'DR'    
  2976.     DB    '0'+80H
  2977.     DW    MTBUF-16
  2978. DRZER    DW    DOCOL,ZERO
  2979.     DW    OFSET,STORE
  2980.     DW    SEMIS
  2981. ;
  2982.     DB    83H    ;    DR1   (NULL DW FOR THE MOMENT)
  2983.     DB    'DR'
  2984.     DB    '1'+80H
  2985.     DW    DRZER-6
  2986. DRONE    DW    DOCOL
  2987.     DW    DENSTY,AT
  2988.     DW    ZBRAN,DRON1-$
  2989.     DW    LIT,SPDRV2
  2990.     DW    BRAN,DRON2-$
  2991. DRON1    DW    LIT,SPDRV1
  2992. DRON2    DW    OFSET,STORE
  2993.     DW    SEMIS
  2994. ;
  2995.     DB    86H    ;    BUFFER
  2996.     DB    'BUFFE'
  2997.     DB    'R'+80H
  2998.     DW    DRONE-6
  2999. BUFFE    DW    DOCOL,USE
  3000.     DW    AT,DUP
  3001.     DW    TOR
  3002. BUFF1    DW    PBUF
  3003.     DW    ZBRAN
  3004.     DW    BUFF1-$
  3005.     DW    USE,STORE
  3006.     DW    RR,AT
  3007.     DW    ZLESS
  3008.     DW    ZBRAN
  3009.     DW    BUFF2-$
  3010.     DW    RR,TWOP
  3011.     DW    RR,AT
  3012.     DW    LIT,7FFFH
  3013.     DW    ANDD,ZERO
  3014.     DW    RSLW
  3015. BUFF2    DW    RR,STORE
  3016.     DW    RR,PREV
  3017.     DW    STORE,FROMR
  3018.     DW    TWOP,SEMIS
  3019. ;
  3020.     DB    85H    ;    BLOCK
  3021.     DB    'BLOC'
  3022.     DB    'K'+80H
  3023.     DW    BUFFE-9
  3024. BLOCK    DW    DOCOL
  3025.     DW    OFSET
  3026.     DW    AT,PLUS
  3027.     DW    TOR,PREV
  3028.     DW    AT,DUP
  3029.     DW    AT,RR
  3030.     DW    SUBB
  3031.     DW    DUP,PLUS
  3032.     DW    ZBRAN
  3033.     DW    BLOC1-$
  3034. BLOC2    DW    PBUF,ZEQU
  3035.     DW    ZBRAN
  3036.     DW    BLOC3-$
  3037.     DW    DROP,RR
  3038.     DW    BUFFE,DUP
  3039.     DW    RR,ONE
  3040.     DW    RSLW
  3041.     DW    TWO,SUBB
  3042. BLOC3    DW    DUP,AT
  3043.     DW    RR,SUBB
  3044.     DW    DUP,PLUS
  3045.     DW    ZEQU
  3046.     DW    ZBRAN
  3047.     DW    BLOC2-$
  3048.     DW    DUP,PREV
  3049.     DW    STORE
  3050. BLOC1    DW    FROMR,DROP
  3051.     DW    TWOP,SEMIS
  3052. ;
  3053. ;**************************************************************
  3054. ;*******       --- THE DISK INTERFACE ---      ****************
  3055. ;**************************************************************
  3056. ;
  3057. ;    CP/M INTERFACE ROUTINES
  3058. ;
  3059. ;    SERVICE REQUEST
  3060. ;
  3061. IOS    LHLD    1
  3062.     DAD    D
  3063.     PCHL
  3064.     DB    86H    ; SET-IO
  3065.     DB    'SET-I'
  3066.     DB    'O'+80H
  3067.     DW    BLOCK-8
  3068. SETIO    DW    $+2
  3069.     PUSH    B
  3070.     LHLD    USE+2
  3071.     SHLD    DIOPTR
  3072.     MOV    B,H
  3073.     MOV    C,L
  3074.     LXI    D,SETDMA
  3075.     CALL    IOS
  3076. ;
  3077. ;
  3078.     POP    B
  3079.     JMP    NEXT
  3080. ;
  3081. FDIR    DB    1    ; FILE CONTROL BYTE
  3082.     DB    'FORTH'
  3083.     DB    '   '
  3084.     DB    'SCR'
  3085. FDZER    DW    0,0
  3086.     DW    0,0
  3087.     DW    0,0
  3088.     DW    0,0
  3089.     DB    0
  3090.     DW    0,0
  3091. RZONE    DW    0
  3092.     DW    0,0
  3093. ;
  3094.     DB    89H
  3095.     DB    'SET-DRIV'
  3096.     DB    'E'+80H
  3097.     DW    SETIO-9
  3098. SETDRV    DW    $+2
  3099.     PUSH    B
  3100.     LXI    D,FDIR
  3101.     LXI    B,CLOSF
  3102.     CALL    NIOS
  3103.     POP     B
  3104.     POP    H
  3105.     PUSH    B
  3106.     MOV    A,L
  3107.     ADI    1
  3108.     STA    FDIR
  3109.     LXI    D,FDIR
  3110.     LXI    B,OPENF
  3111.     CALL    NIOS
  3112.     CPI    0FFH
  3113.     JZ    CREFL
  3114.     POP    B
  3115.     JMP    NEXT
  3116. CREFL    LXI    D,FDIR
  3117.     LXI    B,MAKEF
  3118.     CALL    NIOS
  3119.     POP    B
  3120.     JMP    NEXT
  3121. ;
  3122.     DB    86H
  3123.     DB    'RECST'
  3124.     DB    'R'+80H
  3125.     DW    SETDRV-12
  3126. RECSTR    DW    $+2
  3127.     POP    H
  3128.     SHLD    RZONE
  3129.     JMP    NEXT
  3130. ;
  3131.     DB    87H    ;T&SCALC
  3132.     DB    'T&SCAL'
  3133.     DB    'C'+80H
  3134.     DW    RECSTR-9
  3135. TSCALC    DW    DOCOL
  3136.     DW    LIT,SPDRV2
  3137.     DW    SLMOD
  3138.     DW    LIT,MXDRV
  3139.     DW    MIN
  3140.     DW    DUP,DRIVE
  3141.     DW    AT,EQUAL
  3142.     DW    ZBRAN,TSCAL1-$
  3143.     DW    DROP
  3144.     DW    BRAN,TSCAL2-$
  3145. TSCAL1    DW    DUP
  3146.     DW    DRIVE,STORE
  3147.     DW    SETDRV
  3148. TSCAL2    DW    LIT,150
  3149.     DW    MIN
  3150.     DW    LIT,8
  3151.     DW    STAR
  3152.     DW    RECSTR
  3153.     DW    SEMIS
  3154. ;
  3155. ;    SEC-READ
  3156. ;
  3157.     DB    88H
  3158.     DB    'SEC-REA'
  3159.     DB    'D'+80H
  3160.     DW    TSCALC-10
  3161. SECRD    DW    $+2
  3162.     PUSH    B
  3163. RRSEC    MVI    C,RDSEC
  3164.     LXI    D,FDIR
  3165.     CALL    NIOS
  3166.     ORA    A
  3167.     JNZ    WWSEC
  3168.     MVI    A,14H
  3169.     STA    REDWRT
  3170.     MVI    A,8
  3171.     CALL    READSQ
  3172.     POP    B
  3173.     JMP    NEXT
  3174. ;
  3175. WWSEC    MVI    C,RITSEC
  3176.     LXI    D,FDIR
  3177.     CALL    NIOS
  3178.     JMP    RRSEC
  3179. ;
  3180. COUTER    DB    0
  3181. REDWRT    DB    0
  3182. DIOPTR    DW    0
  3183. READSQ    STA    COUTER
  3184.     LHLD    DIOPTR
  3185.     MOV    B,H
  3186.     MOV    C,L
  3187.     LXI    D,0021H
  3188.     CALL    IOS
  3189.     LDA    REDWRT
  3190.     MOV    C,A
  3191.     LXI    D,FDIR
  3192.     CALL    NIOS
  3193.     LHLD    DIOPTR
  3194.     MVI    E,80H
  3195.     MVI    D,0
  3196.     DAD    D
  3197.     SHLD    DIOPTR
  3198.     LDA    COUTER
  3199.     DCR    A
  3200.     JNZ    READSQ
  3201.     RET
  3202. ;
  3203. ;    SEC-WRITE
  3204. ;
  3205.     DB    88H    ; SEC-WRITE
  3206.     DB    'SEC-WRIT'
  3207.     DB    'E'+80H
  3208.     DW    SECRD-11
  3209. SECWT    DW    $+2
  3210.     PUSH    B
  3211.     MVI    C,RITSEC
  3212.     LXI    D,FDIR
  3213.     CALL    NIOS
  3214.     STA    DSKERR+2
  3215.     MVI    A,15H
  3216.     STA    REDWRT
  3217.     MVI    A,8
  3218.     CALL    READSQ
  3219.     POP    B
  3220.     JMP    NEXT
  3221. ;
  3222.     DB    83H    ;R/W    (FORTH DISK PRIMATIVE)
  3223.     DB    'R/'
  3224.     DB    'W'+80H
  3225.     DW    SECWT-12
  3226. RSLW    DW    DOCOL
  3227.     DW    USE,AT
  3228.     DW    TOR
  3229.     DW    SWAP,SPBLK
  3230.     DW    STAR,ROT
  3231.     DW    USE,STORE
  3232.     DW    SPBLK,ZERO
  3233.     DW    XDO
  3234. RSLW1    DW    OVER,OVER
  3235.     DW    TSCALC,SETIO
  3236.     DW    ZBRAN,RSLW2-$
  3237.     DW    SECRD
  3238.     DW    BRAN,RSLW3-$
  3239. RSLW2    DW    SECWT
  3240. RSLW3    DW    ONEP
  3241.     DW    LIT,80H
  3242.     DW    USE,PSTOR
  3243.     DW    XLOOP,RSLW1-$
  3244.     DW    DROP,DROP
  3245.     DW    FROMR,USE
  3246.     DW    STORE,SEMIS
  3247. ;
  3248. ;
  3249.     DB    85H    ;    FLUSH
  3250.     DB    'FLUS'
  3251.     DB    'H'+80H
  3252.     DW    RSLW-6
  3253. FLUSH    DW    DOCOL
  3254.     DW    NOBUF,ONEP
  3255.     DW    ZERO,XDO
  3256. FLUS1    DW    ZERO,BUFFE
  3257.     DW    DROP
  3258.     DW    XLOOP
  3259.     DW    FLUS1-$
  3260.     DW    SEMIS
  3261. ;
  3262.     DB    84H    ;    LOAD
  3263.     DB    'LOA'
  3264.     DB    'D'+80H
  3265.     DW    FLUSH-8
  3266. LOAD    DW    DOCOL,BLK
  3267.     DW    AT,TOR
  3268.     DW    INN,AT
  3269.     DW    TOR,ZERO
  3270.     DW    INN,STORE
  3271.     DW    BSCR,STAR
  3272.     DW    BLK,STORE
  3273.     DW    INTER
  3274.     DW    FROMR,INN
  3275.     DW    STORE
  3276.     DW    FROMR,BLK
  3277.     DW    STORE
  3278.     DW    SEMIS
  3279. ;
  3280.     DB    0C3H    ;    -->
  3281.     DB    '--'
  3282.     DB    '>'+80H
  3283.     DW    LOAD-7
  3284. ARROW    DW    DOCOL
  3285.     DW    QLOAD
  3286.     DW    ZERO
  3287.     DW    INN
  3288.     DW    STORE
  3289.     DW    BSCR
  3290.     DW    BLK
  3291.     DW    AT
  3292.     DW    OVER
  3293.     DW    MODD
  3294.     DW    SUBB
  3295.     DW    BLK
  3296.     DW    PSTOR
  3297.     DW    SEMIS
  3298. ;
  3299. ;    CP/M CONSOLE INTERFACE
  3300. ;
  3301. KCSTAT    EQU    3    ;CONSOLE STATUS
  3302. KCIN    EQU    6    ;CONSOLE INPUT
  3303. KCOUT    EQU    9    ;CONSOLE OUTPUT
  3304. ;
  3305. CSTAT    PUSH    B    ;CONSOLE STATUS
  3306.     LXI    D,KCSTAT
  3307.     CALL    IOS
  3308.     POP    B
  3309.     RET
  3310. ;
  3311. CIN    PUSH    B    ;CONSOLE INPUT
  3312.     LXI    D,KCIN
  3313.     CALL    IOS
  3314.     POP    B
  3315.     RET
  3316. ;
  3317. COUT    PUSH    H    ;CONSOLE OUTPUT
  3318.     LXI    D,KCOUT
  3319.     MOV    A,C
  3320.     ANI    7FH
  3321.     MOV    C,A
  3322.     CALL    IOS
  3323.     POP    H
  3324.     RET
  3325. ;
  3326. LFEED    MVI    A,20H
  3327.     POP    B
  3328.     RET
  3329. ;
  3330. ;    FORTH TO CP/M SERIAL IO INTERFACE
  3331. ;
  3332. PQTER    CALL    CSTAT    ; IF CHR TYPED
  3333.     LXI    H,0
  3334.     ORA    A
  3335.     JZ    PQTE1
  3336.     INR    L
  3337. PQTE1    JMP    HPUSH
  3338. ;
  3339.     DB    84H
  3340.     DB    'PKE'
  3341.     DB    'Y'+80H
  3342.     DW    ARROW-6
  3343. PKEY    DW    $+2    ; (KEY)
  3344.     CALL    CIN
  3345.     MOV    L,A
  3346.     MVI    H,0
  3347.     JMP    HPUSH
  3348. ;
  3349.     DB    85H
  3350.     DB    'PEMI'
  3351.     DB    'T'+80H
  3352.     DW    PKEY-7
  3353. PEMIT    DW    $+2    ; (EMIT)
  3354.     POP    H
  3355.     PUSH    B
  3356.     MOV    C,L
  3357.     CALL    COUT
  3358. ;
  3359.     POP    B
  3360.     JMP    NEXT
  3361. ;
  3362. PCR    PUSH    B
  3363.     MVI    C,ACR
  3364.     MOV    L,C
  3365.     CALL    COUT
  3366.     MVI    C,LF
  3367.     MOV    L,C
  3368.     CALL    COUT
  3369.     POP    B
  3370.     JMP    NEXT
  3371. ;
  3372. ;
  3373.     DB    0C1H    ;    TICK
  3374.     DB    0A7H
  3375.     DW    PEMIT-8
  3376. TICK    DW    DOCOL
  3377.     DW    DFIND
  3378.     DW    ZEQU
  3379.     DW    ZERO
  3380.     DW    QERR
  3381.     DW    DROP
  3382.     DW    LITER
  3383.     DW    SEMIS
  3384. ;
  3385.     DB    86H    ;    FORGET
  3386.     DB    'FORGE'
  3387.     DB    'T'+80H
  3388.     DW    TICK-4
  3389. FORG    DW    DOCOL
  3390.     DW    CURR
  3391.     DW    AT
  3392.     DW    CONT
  3393.     DW    AT
  3394.     DW    SUBB
  3395.     DW    LIT
  3396.     DW    18H
  3397.     DW    QERR
  3398.     DW    TICK
  3399.     DW    DUP
  3400.     DW    FENCE
  3401.     DW    AT
  3402.     DW    LESS
  3403.     DW    LIT
  3404.     DW    15H
  3405.     DW    QERR
  3406.     DW    DUP
  3407.     DW    NFA
  3408.     DW    DP
  3409.     DW    STORE
  3410.     DW    LFA
  3411.     DW    AT
  3412.     DW    CONT
  3413.     DW    AT
  3414.     DW    STORE
  3415.     DW    SEMIS
  3416. ;
  3417.     DB    84H    ;    BACK
  3418.     DB    'BAC'
  3419.     DB    'K'+80H
  3420.     DW    FORG-9
  3421. BACK    DW    DOCOL
  3422.     DW    HERE
  3423.     DW    SUBB
  3424.     DW    COMMA
  3425.     DW    SEMIS
  3426. ;
  3427.     DB    0C5H    ;    BEGIN
  3428.     DB    'BEGI'
  3429.     DB    'N'+80H
  3430.     DW    BACK-7
  3431. BEGIN    DW    DOCOL
  3432.     DW    QCOMP
  3433.     DW    HERE
  3434.     DW    ONE
  3435.     DW    SEMIS
  3436. ;
  3437.     DB    0C5H    ;    ENDIF
  3438.     DB    'ENDI'
  3439.     DB    'F'+80H
  3440.     DW    BEGIN-8
  3441. ENDIFF    DW    DOCOL
  3442.     DW    QCOMP
  3443.     DW    TWO
  3444.     DW    QPAIR
  3445.     DW    HERE
  3446.     DW    OVER
  3447.     DW    SUBB
  3448.     DW    SWAP
  3449.     DW    STORE
  3450.     DW    SEMIS
  3451. ;
  3452.     DB    0C4H    ;    THEN
  3453.     DB    'THE'
  3454.     DB    'N'+80H
  3455.     DW    ENDIFF-8
  3456. THEN    DW    DOCOL
  3457.     DW    ENDIFF
  3458.     DW    SEMIS
  3459. ;
  3460.     DB    0C2H    ;    DO
  3461.     DB    'D'
  3462.     DB    'O'+80H
  3463.     DW    THEN-7
  3464. DO    DW    DOCOL
  3465.     DW    COMP
  3466.     DW    XDO
  3467.     DW    HERE
  3468.     DW    THREE
  3469.     DW    SEMIS
  3470. ;
  3471.     DB    0C4H    ;    LOOP
  3472.     DB    'LOO'
  3473.     DB    'P'+80H
  3474.     DW    DO-5
  3475. LOOP    DW    DOCOL
  3476.     DW    THREE
  3477.     DW    QPAIR
  3478.     DW    COMP
  3479.     DW    XLOOP
  3480.     DW    BACK
  3481.     DW    SEMIS
  3482. ;
  3483.     DB    0C5H    ;    +LOOP
  3484.     DB    '+LOO'
  3485.     DB    'P'+80H
  3486.     DW    LOOP-7
  3487. PLOOP    DW    DOCOL
  3488.     DW    THREE    
  3489.     DW    QPAIR
  3490.     DW    COMP
  3491.     DW    XPLOO
  3492.     DW    BACK
  3493.     DW    SEMIS
  3494. ;
  3495.     DB    0C5H    ;    UNTIL
  3496.     DB    'UNTI'
  3497.     DB    'L'+80H
  3498.     DW    PLOOP-8
  3499. UNTIL    DW    DOCOL
  3500.     DW    ONE
  3501.     DW    QPAIR
  3502.     DW    COMP
  3503.     DW    ZBRAN
  3504.     DW    BACK
  3505.     DW    SEMIS
  3506. ;
  3507.     DB    0C3H    ;    END
  3508.     DB    'EN'
  3509.     DB    'D'+80H
  3510.     DW    UNTIL-8
  3511. ENDD    DW    DOCOL
  3512.     DW    UNTIL
  3513.     DW    SEMIS
  3514. ;
  3515.     DB    0C5H    ;    AGAIN
  3516.     DB    'AGAI'
  3517.     DB    'N'+80H
  3518.     DW    ENDD-6
  3519. AGAIN    DW    DOCOL
  3520.     DW    ONE
  3521.     DW    QPAIR
  3522.     DW    COMP
  3523.     DW    BRAN
  3524.     DW    BACK
  3525.     DW    SEMIS
  3526. ;
  3527.     DB    0C6H    ;    REPEAT
  3528.     DB    'REPEA'
  3529.     DB    'T'+80H
  3530.     DW    AGAIN-8
  3531. REPEA    DW    DOCOL
  3532.     DW    TOR    
  3533.     DW    TOR
  3534.     DW    AGAIN
  3535.     DW    FROMR
  3536.     DW    FROMR
  3537.     DW    TWO
  3538.     DW    SUBB
  3539.     DW    ENDIFF
  3540.     DW    SEMIS
  3541. ;
  3542.     DB    0C2H    ;    IF
  3543.     DB    'I'
  3544.     DB    'F'+80H
  3545.     DW    REPEA-9
  3546. IFF    DW    DOCOL    
  3547.     DW    COMP
  3548.     DW    ZBRAN
  3549.     DW    HERE
  3550.     DW    ZERO
  3551.     DW    COMMA
  3552.     DW    TWO
  3553.     DW    SEMIS
  3554. ;
  3555.     DB    0C4H    ;    ELSE
  3556.     DB    'ELS'
  3557.     DB    'E'+80H
  3558.     DW    IFF-5
  3559. ELSEE    DW    DOCOL
  3560.     DW    TWO
  3561.     DW    QPAIR
  3562.     DW    COMP
  3563.     DW    BRAN
  3564.     DW    HERE
  3565.     DW    ZERO
  3566.     DW    COMMA
  3567.     DW    SWAP
  3568.     DW    TWO
  3569.     DW    ENDIFF
  3570.     DW    TWO
  3571.     DW    SEMIS
  3572. ;
  3573.     DB    0C5H    ;    WHILE
  3574.     DB    'WHIL'
  3575.     DB    'E'+80H    
  3576.     DW    ELSEE-7
  3577. WHILE    DW    DOCOL
  3578.     DW    IFF
  3579.     DW    TWOP
  3580.     DW    SEMIS
  3581. ;
  3582.     DB    86H    ;    SPACES
  3583.     DB    'SPACE'
  3584.     DB    'S'+80H
  3585.     DW    WHILE-8
  3586. SPACS    DW    DOCOL
  3587.     DW    ZERO
  3588.     DW    MAX
  3589.     DW    DDUP
  3590.     DW    ZBRAN
  3591.     DW    SPAX1-$
  3592.     DW    ZERO
  3593.     DW    XDO
  3594. SPAX2    DW    SPACE
  3595.     DW    XLOOP
  3596.     DW    SPAX2-$
  3597. SPAX1    DW    SEMIS
  3598. ;
  3599.     DB    82H    ;    <#
  3600.     DB    '<'
  3601.     DB    '#'+80H
  3602.     DW    SPACS-9
  3603. BDIGS    DW    DOCOL
  3604.     DW    PAD
  3605.     DW    HLD
  3606.     DW    STORE
  3607.     DW    SEMIS
  3608. ;
  3609.     DB    82H    ;    #>
  3610.     DB    '#'
  3611.     DB    '>'+80H
  3612.     DW    BDIGS-5
  3613. EDIGS    DW    DOCOL
  3614.     DW    DROP
  3615.     DW    DROP
  3616.     DW    HLD
  3617.     DW    AT
  3618.     DW    PAD
  3619.     DW    OVER
  3620.     DW    SUBB
  3621.     DW    SEMIS
  3622. ;
  3623.     DB    84H    ;    SIGN
  3624.     DB    'SIG'
  3625.     DB    'N'+80H
  3626.     DW    EDIGS-5
  3627. SIGN    DW    DOCOL
  3628.     DW    ROT
  3629.     DW    ZLESS
  3630.     DW    ZBRAN
  3631.     DW    SIGN1-$
  3632.     DW    LIT
  3633.     DW    2DH
  3634.     DW    HOLD
  3635. SIGN1    DW    SEMIS
  3636. ;
  3637.     DB    81H    ;    #
  3638.     DB    '#'+80H
  3639.     DW    SIGN-7
  3640. DIG    DW    DOCOL
  3641.     DW    BASEE
  3642.     DW    AT
  3643.     DW    MSMOD
  3644.     DW    ROT
  3645.     DW    LIT
  3646.     DW    9
  3647.     DW    OVER
  3648.     DW    LESS
  3649.     DW    ZBRAN
  3650.     DW    DIG1-$
  3651.     DW    LIT
  3652.     DW    7
  3653.     DW    PLUS
  3654. DIG1    DW    LIT
  3655.     DW    30H
  3656.     DW    PLUS
  3657.     DW    HOLD
  3658.     DW    SEMIS
  3659. ;
  3660.     DB    82H    ;    #S
  3661.     DB    '#'
  3662.     DB    'S'+80H
  3663.     DW    DIG-4
  3664. DIGS    DW    DOCOL
  3665. DIGS1    DW    DIG
  3666.     DW    OVER
  3667.     DW    OVER
  3668.     DW    ORR
  3669.     DW    ZEQU
  3670.     DW    ZBRAN
  3671.     DW    DIGS1-$
  3672.     DW    SEMIS
  3673. ;
  3674.     DB    83H    ;    D.R
  3675.     DB    'D.'
  3676.     DB    'R'+80H
  3677.     DW    DIGS-5
  3678. DDOTR    DW    DOCOL
  3679.     DW    TOR
  3680.     DW    SWAP
  3681.     DW    OVER
  3682.     DW    DABS
  3683.     DW    BDIGS
  3684.     DW    DIGS
  3685.     DW    SIGN
  3686.     DW    EDIGS
  3687.     DW    FROMR
  3688.     DW    OVER
  3689.     DW    SUBB
  3690.     DW    SPACS
  3691.     DW    TYPE
  3692.     DW    SEMIS
  3693. ;
  3694.     DB    82H    ;    .R
  3695.     DB    '.'
  3696.     DB    'R'+80H
  3697.     DW    DDOTR-6
  3698. DOTR    DW    DOCOL
  3699.     DW    TOR
  3700.     DW    STOD
  3701.     DW    FROMR
  3702.     DW    DDOTR
  3703.     DW    SEMIS
  3704. ;
  3705.     DB    82H    ;    D.
  3706.     DB    'D'
  3707.     DB    '.'+80H
  3708.     DW    DOTR-5
  3709. DDOT    DW    DOCOL
  3710.     DW    ZERO
  3711.     DW    DDOTR
  3712.     DW    SPACE
  3713.     DW    SEMIS
  3714. ;
  3715.     DB    81H    ;    .
  3716.     DB    '.'+80H
  3717.     DW    DDOT-5
  3718. DOT    DW    DOCOL
  3719.     DW    STOD
  3720.     DW    DDOT
  3721.     DW    SEMIS
  3722. ;
  3723.     DB    81H    ;    ?
  3724.     DB    '?'+80H
  3725.     DW    DOT-4
  3726. QUES    DW    DOCOL
  3727.     DW    AT
  3728.     DW    DOT
  3729.     DW    SEMIS
  3730. ;
  3731.     DB    82H    ;    U.
  3732.     DB    'U'
  3733.     DB    '.'+80H
  3734.     DW    QUES-4
  3735. UDOT    DW    DOCOL
  3736.     DW    ZERO
  3737.     DW    DDOT
  3738.     DW    SEMIS
  3739. ;
  3740.     DB    85H    ;    VLIST
  3741.     DB    'VLIS'
  3742.     DB    'T'+80H
  3743.     DW    UDOT-5
  3744. VLIST    DW    DOCOL
  3745.     DW    LIT
  3746.     DW    80H
  3747.     DW    OUTT
  3748.     DW    STORE
  3749.     DW    CONT
  3750.     DW    AT
  3751.     DW    AT
  3752. VLIS1    DW    OUTT
  3753.     DW    AT
  3754.     DW    CSLL
  3755.     DW    GREAT
  3756.     DW    ZBRAN
  3757.     DW    VLIS2-$
  3758.     DW    CR
  3759.     DW    ZERO
  3760.     DW    OUTT
  3761.     DW    STORE
  3762. VLIS2    DW    DUP
  3763.     DW    IDDOT
  3764.     DW    SPACE
  3765.     DW    SPACE
  3766.     DW    PFA
  3767.     DW    LFA
  3768.     DW    AT
  3769.     DW    DUP
  3770.     DW    ZEQU
  3771.     DW    QTERM
  3772.     DW    ORR
  3773.     DW    ZBRAN
  3774.     DW    VLIS1-$
  3775.     DW    DROP
  3776.     DW    SEMIS
  3777. ;
  3778. ;    ----- EXIT CP/M -------------------
  3779. ;
  3780.     DB    83H    ;    BYE
  3781.     DB    'BY'
  3782.     DB    'E'+80H
  3783.     DW    VLIST-8
  3784. BYE    DW    $+2
  3785.     MVI    C,10H
  3786.     LXI    D,FDIR
  3787.     CALL    NIOS
  3788.     JMP    0
  3789. ;    -----------------------------------
  3790. ;
  3791.     DB    84H    ;    LIST
  3792.     DB    'LIS'
  3793.     DB    'T'+80H
  3794.     DW    BYE-6  
  3795. LISTT    DW    DOCOL,DEC
  3796.     DW    CR,DUP
  3797.     DW    SCR,STORE
  3798.     DW    PDOTQ
  3799.     DB    6
  3800.     DB    'SCR # '
  3801.     DW    DOT
  3802.     DW    LIT,10H
  3803.     DW    ZERO,XDO
  3804. LIST1    DW    CR,IDO
  3805.     DW    LIT,3
  3806.     DW    DOTR,SPACE
  3807.     DW    IDO,SCR
  3808.     DW    AT,DLINE
  3809.     DW    QTERM
  3810.     DW    ZBRAN
  3811.     DW    LIST2-$
  3812.     DW    LEAVE
  3813. LIST2    DW    XLOOP
  3814.     DW    LIST1-$
  3815.     DW    CR,SEMIS
  3816. ;
  3817.     DB    85H    ;    INDEX
  3818.     DB    'INDE'
  3819.     DB    'X'+80H
  3820.     DW    LISTT-7
  3821. INDEX    DW    DOCOL
  3822.     DW    LIT,FF
  3823.     DW    EMIT,CR
  3824.     DW    ONEP,SWAP
  3825.     DW    XDO    
  3826. INDE1    DW    CR,IDO
  3827.     DW    LIT,3
  3828.     DW    DOTR,SPACE
  3829.     DW    ZERO,IDO
  3830.     DW    DLINE,QTERM
  3831.     DW    ZBRAN
  3832.     DW    INDE2-$
  3833.     DW    LEAVE
  3834. INDE2    DW    XLOOP
  3835.     DW    INDE1-$
  3836.     DW    SEMIS
  3837. ;
  3838.     DB    85H    ;    TRIAD
  3839.     DB    'TRIA'
  3840.     DB    'D'+80H
  3841.     DW    INDEX-8
  3842. TRIAD    DW    DOCOL
  3843.     DW    LIT,FF
  3844.     DW    EMIT
  3845.     DW    LIT,3
  3846.     DW    SLASH
  3847.     DW    LIT,3
  3848.     DW    STAR
  3849.     DW    LIT,3
  3850.     DW    OVER,PLUS
  3851.     DW    SWAP,XDO
  3852. TRIA1    DW    CR,IDO
  3853.     DW    LISTT
  3854.     DW    QTERM
  3855.     DW    ZBRAN
  3856.     DW    TRIA2-$
  3857.     DW    LEAVE
  3858. TRIA2    DW    XLOOP    
  3859.     DW    TRIA1-$
  3860.     DW    CR
  3861.     DW    LIT,15
  3862.     DW    MESS,CR
  3863.     DW    SEMIS
  3864. ;
  3865.     DB    84H    ;    .CPU
  3866.     DB    '.CP'
  3867.     DB    'U'+80H
  3868.     DW    TRIAD-8
  3869. DOTCPU    DW    DOCOL
  3870.     DW    BASEE,AT
  3871.     DW    LIT,36
  3872.     DW    BASEE,STORE
  3873.     DW    LIT,26H
  3874.     DW    PORIG,TAT
  3875.     DW    DDOT
  3876.     DW    BASEE,STORE
  3877.     DW    SEMIS
  3878. ;
  3879.     DB    84H
  3880.     DB    'FDO'
  3881.     DB    'S'+80H
  3882.     DW    DOTCPU-7
  3883. FDOS    DW    $+2
  3884.     POP    D
  3885.     POP    H
  3886.     PUSH    B
  3887.     MOV    C,L
  3888.     CALL    0005H
  3889.     POP    B
  3890.     PUSH    H
  3891.     MVI    H,0
  3892.     MOV    L,A
  3893.     JMP    HPUSH
  3894. ;
  3895.     DB    84H    ;    TASK
  3896.     DB    'TAS'
  3897.     DB    'K'+80H
  3898.     DW    FDOS-7
  3899. TASK    DW    DOCOL
  3900.     DW    SEMIS
  3901. INITDP    DS    EM-$
  3902.     END    ORIG
  3903.      
  3904.  
  3905.