home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol159 / tincmp.a86 < prev    next >
Encoding:
Text File  |  1985-03-23  |  18.6 KB  |  1,456 lines

  1.     TITLE    '8086 TINCMP CMPLR[CP/M 1.1]'
  2.     PAGEWIDTH 79
  3.     NAME    'MAINPROG'
  4.     EXTRN    MSG:NEAR,OPENIO:NEAR,CLOSEIO:NEAR,RNX:NEAR
  5.     EXTRN    WNX:NEAR,STOP:NEAR,BREAD:NEAR,BWRITE:NEAR
  6.     EXTRN    INITIAL:NEAR,ENDING:NEAR,STOP:NEAR,ATTACH:NEAR
  7.     EXTRN    ASSOC:NEAR
  8. IOCTRL    DSEG    COMMON
  9. IAV    DW    0
  10. BA0ER    DB    0
  11. DATA    DSEG
  12. KA0LF    EQU    10
  13. KA0CR    EQU    13
  14. KA0EF    EQU    26
  15. BA0AA    RB    1
  16. BA0BB    RB    1
  17. BA0DD    RB    1
  18. BA0EE    RB    1
  19. BA0BF    RB    80
  20. BA0BL    RB    1
  21. BA0BP    RB    1
  22. BA0C0    RB    1
  23. BA0C1    RB    1
  24. BA0C2    RB    1
  25. BA0C3    RB    1
  26. BA0C4    RB    1
  27. BA0C8    RB    1
  28. BA0C9    RB    1
  29. BA0CC    RB    1
  30. BA0CX    RB    1
  31. BA0DG    RB    1
  32. BA0DS    RB    10
  33. BA0EF    RB    1
  34. BA0F1    RB    128
  35. BA0F2    RB    128
  36. BA0HA    RB    1
  37. BA0HF    RB    1
  38. BA0LE    RB    1
  39. BA0LF    RB    1
  40. BA0LS    RB    9000
  41. BA0MF    RB    1
  42. BA0ML    RB    1
  43. BA0MM    RB    1
  44. BA0ND    RB    1
  45. BA0NL    RB    1
  46. BA0O1    RB    1
  47. BA0O2    RB    1
  48. BA0O3    RB    1
  49. BA0OA    RB    1
  50. BA0OB    RB    1
  51. BA0OC    RB    1
  52. BA0OD    RB    1
  53. BA0OE    RB    1
  54. BA0OG    RB    1
  55. BA0OH    RB    1
  56. BA0OL    RB    1
  57. BA0OM    RB    1
  58. BA0ON    RB    1
  59. BA0OP    RB    1
  60. BA0OR    RB    1
  61. BA0OS    RB    1
  62. BA0OT    RB    1
  63. BA0PP    RB    1
  64. BA0RB    RB    1
  65. BA0RC    RB    1
  66. BA0SF    RB    1
  67. BA0SP    RB    1
  68. BA0TR    RB    1
  69. BA0UG    RB    1
  70. BA0UN    RB    1
  71. BA0UO    RB    1
  72. BA0UT    RB    1
  73. BA0ZR    RB    1
  74. WA000    RW    1
  75. WA001    RW    1
  76. WA009    RW    1
  77. WA010    RW    1
  78. WA016    RW    1
  79. WA0AA    RW    1
  80. WA0BB    RW    1
  81. WA0BC    RW    1
  82. WA0DP    RW    1
  83. WA0ED    RW    1
  84. WA0II    RW    1
  85. WA0JJ    RW    1
  86. WA0LM    RW    1
  87. WA0LP    RW    1000
  88. WA0MP    RW    1
  89. WA0NM    RW    1
  90. WA0PR    RW    10
  91. WA0SS    RW    40
  92. WA0TU    RW    1
  93. WA0UU    RW    1
  94. WA0XX    RW    1
  95. WA0YY    RW    1
  96. BA0AC    RB    1
  97. WA0AV    RW    1
  98. ERASER    RB    1
  99.     CSEG
  100. START:    CALL    INITIAL
  101.     MOV    AX,IAV
  102.     MOV    BA0AC,AL
  103.     MOV    BA0NL,KA0CR
  104.     MOV    BA0LF,KA0LF
  105.     CALL    SA0CR
  106.     CALL    MSG
  107.     DB    'COPYRIGHT'
  108.     CALL    MSG
  109.     DB    ' (C) 1981'
  110.     CALL    MSG
  111.     DB    ' W.A.GALE'
  112.     CALL    SA0CR
  113.     CALL    MSG
  114.     DB    '8086 TINC'
  115.     CALL    MSG
  116.     DB    'MP COMPIL'
  117.     CALL    MSG
  118.     DB    'ER CP/M V'
  119.     CALL    MSG
  120.     DB    'ERSION 1.'
  121.     CALL    MSG
  122.     DB    '07/TINCMP'
  123.     CALL    SA0CR
  124.     CALL    MSG
  125.     DB    'COPYRIGHT'
  126.     CALL    MSG
  127.     DB    ' (C) 1984'
  128.     CALL    MSG
  129.     DB    ' A L BEND'
  130.     CALL    MSG
  131.     DB    'ER, MD   '
  132.     CALL    SA0CR
  133.     CALL    SA0IN
  134.     CALL    SA0RM
  135. LOC00:
  136. TW0100:    MOV    BX, OFFSET BA0CC
  137.     MOV    DX, OFFSET BA0F1
  138.     CALL    BREAD
  139.     MOV    AL,BA0ER
  140.     CMP    AL,BA0C0
  141.     MOV    AL,1
  142.     JZ    $+4
  143.     MOV    AL,0
  144.     MOV    BA0AA,AL
  145.     MOV    AL,BA0AA
  146.     TEST    AL,AL
  147.     JNZ    $+5
  148.     JMP    BW0100
  149.     MOV    AL,BA0UG
  150.     TEST    AL,AL
  151.     JNZ    $+5
  152.     JMP    IFA0101
  153. TW0102:    MOV    AL,BA0CC
  154.     CMP    AL,BA0NL
  155.     MOV    AL,1
  156.     JZ    $+4
  157.     MOV    AL,0
  158.     MOV    BA0BB,AL
  159.     MOV    AL,BA0CC
  160.     CMP    AL,BA0LF
  161.     MOV    AL,1
  162.     JZ    $+4
  163.     MOV    AL,0
  164.     MOV    BA0DD,AL
  165.     MOV    AL,BA0CC
  166.     CMP    AL,BA0OG
  167.     MOV    AL,1
  168.     JZ    $+4
  169.     MOV    AL,0
  170.     MOV    BA0AA,AL
  171.     MOV    AL,BA0BB
  172.     OR    AL,BA0DD
  173.     MOV    BA0EE,AL
  174.     MOV    AL,BA0CC
  175.     CMP    AL,BA0BL
  176.     MOV    AL,1
  177.     JZ    $+4
  178.     MOV    AL,0
  179.     MOV    BA0BB,AL
  180.     MOV    AL,BA0BB
  181.     OR    AL,BA0AA
  182.     MOV    BA0AA,AL
  183.     MOV    AL,BA0EE
  184.     OR    AL,BA0AA
  185.     MOV    BA0AA,AL
  186.     MOV    AL,BA0AA
  187.     TEST    AL,AL
  188.     JNZ    $+5
  189.     JMP    BW0102
  190.     CALL    SA0GC
  191.     JMP    TW0102
  192. BW0102:
  193. IFA0101:
  194.     MOV    AL,BYTE PTR BA0C1
  195.     MOV    BA0BP,AL
  196.     MOV    BL,BA0C0
  197.     MOV    BH,0
  198.     MOV    AL,BA0CC
  199.     MOV    BA0BF[BX],AL
  200. TW0103:    CALL    SA0GC
  201.     MOV    AL,BA0CC
  202.     CMP    AL,BA0NL
  203.     MOV    AL,1
  204.     JZ    $+4
  205.     MOV    AL,0
  206.     MOV    BA0AA,AL
  207.     MOV    AL,BA0AA
  208.     TEST    AL,AL
  209.     JNZ    $+5
  210.     JMP    IFA0104
  211.     CALL    SA0GC
  212.     MOV    AL,BA0CC
  213.     CMP    AL,BA0LF
  214.     MOV    AL,1
  215.     JZ    $+4
  216.     MOV    AL,0
  217.     MOV    BA0AA,AL
  218.     MOV    AL,BA0AA
  219.     TEST    AL,AL
  220.     JNZ    $+5
  221.     JMP    IFA0105
  222.     MOV    AL,BYTE PTR BA0NL
  223.     MOV    BA0CC,AL
  224. IFA0105:
  225. IFA0104:
  226.     MOV    AL,BA0NL
  227.     CMP    AL,BA0CC
  228.     MOV    AL,1
  229.     JNZ    $+4
  230.     MOV    AL,0
  231.     MOV    BA0AA,AL
  232.     MOV    AL,BA0C8
  233.     CMP    AL,BA0BP
  234.     MOV    AL,1
  235.     JNZ    $+4
  236.     MOV    AL,0
  237.     MOV    BA0BB,AL
  238.     MOV    AL,BA0AA
  239.     AND    AL,BA0BB
  240.     MOV    BA0AA,AL
  241.     MOV    AL,BA0AA
  242.     TEST    AL,AL
  243.     JNZ    $+5
  244.     JMP    BW0103
  245.     MOV    BL,BA0BP
  246.     MOV    BH,0
  247.     MOV    AL,BA0CC
  248.     MOV    BA0BF[BX],AL
  249.     INC    BA0BP
  250.     JMP    TW0103
  251. BW0103:
  252. TW0106:    MOV    AL,BA0NL
  253.     CMP    AL,BA0CC
  254.     MOV    AL,1
  255.     JNZ    $+4
  256.     MOV    AL,0
  257.     MOV    BA0AA,AL
  258.     MOV    AL,BA0AA
  259.     TEST    AL,AL
  260.     JNZ    $+5
  261.     JMP    BW0106
  262.     CALL    SA0GC
  263.     JMP    TW0106
  264. BW0106:
  265.     MOV    BL,BA0BP
  266.     MOV    BH,0
  267.     MOV    AL,BA0RC
  268.     MOV    BA0BF[BX],AL
  269.     INC    BA0BP
  270.     MOV    BL,BA0BP
  271.     MOV    BH,0
  272.     MOV    AL,BA0NL
  273.     MOV    BA0BF[BX],AL
  274.     MOV    AL,BYTE PTR BA0BP
  275.     MOV    BA0LE,AL
  276.     MOV    AL,BA0BP
  277.     CMP    AL,BA0MM
  278.     MOV    AL,0
  279.     JNBE    $+4
  280.     MOV    AL,1
  281.     MOV    BA0AA,AL
  282.     MOV    AL,BA0AA
  283.     TEST    AL,AL
  284.     JNZ    $+5
  285.     JMP    IFA0107
  286.     MOV    BA0ML,0
  287.     JMP    LOC17
  288.     JMP    IFA0108
  289. IFA0107:
  290.     MOV    BA0ML,1
  291. IFA0108:
  292.     MOV    BX,WA000
  293.     MOV    WA0DP,BX
  294.     MOV    AL,BYTE PTR BA0C0
  295.     MOV    BA0PP,AL
  296.     MOV    BX,WA000
  297.     MOV    WA0JJ,BX
  298.     MOV    BH,0
  299.     MOV    BL,BA0C0
  300.     MOV    WA0NM,BX
  301. TW0109:    MOV    AX,WA0DP
  302.     CMP    AX,WA0ED
  303.     LAHF
  304.     ROL    AH,1
  305.     AND    AH,1
  306.     MOV    BA0AA,AH
  307.     MOV    AL,BA0AA
  308.     TEST    AL,AL
  309.     JNZ    $+5
  310.     JMP    BW0109
  311.     MOV    AL,BYTE PTR BA0C0
  312.     MOV    BA0BP,AL
  313. TW0110:    MOV    AL,BA0BP
  314.     CMP    AL,BA0LE
  315.     MOV    AL,0
  316.     JNBE    $+4
  317.     MOV    AL,1
  318.     MOV    BA0AA,AL
  319.     MOV    AL,BA0AA
  320.     TEST    AL,AL
  321.     JNZ    $+5
  322.     JMP    BW0110
  323.     MOV    BX,WA0JJ
  324.     MOV    AL,BA0LS[BX]
  325.     MOV    BA0AA,AL
  326.     MOV    AL,BA0AA
  327.     CMP    AL,BA0RC
  328.     MOV    AL,1
  329.     JZ    $+4
  330.     MOV    AL,0
  331.     MOV    BA0AA,AL
  332.     MOV    BL,BA0BP
  333.     MOV    BH,0
  334.     MOV    AL,BA0BF[BX]
  335.     MOV    BA0O3,AL
  336.     MOV    AL,BA0O3
  337.     CMP    AL,BA0RC
  338.     MOV    AL,1
  339.     JZ    $+4
  340.     MOV    AL,0
  341.     MOV    BA0O3,AL
  342.     MOV    AL,BA0AA
  343.     AND    AL,BA0O3
  344.     MOV    BA0AA,AL
  345.     MOV    AL,BA0AA
  346.     TEST    AL,AL
  347.     JNZ    $+5
  348.     JMP    IFA0111
  349.     CALL    SA0DM
  350.     JMP    LOC00
  351.     JMP    IFA0112
  352. IFA0111:
  353.     MOV    BL,BA0BP
  354.     MOV    BH,0
  355.     MOV    AL,BA0BF[BX]
  356.     MOV    BA0AA,AL
  357.     MOV    BX,WA0JJ
  358.     MOV    AL,BA0LS[BX]
  359.     MOV    BA0BB,AL
  360.     MOV    AL,BA0AA
  361.     CMP    AL,BA0BB
  362.     MOV    AL,1
  363.     JZ    $+4
  364.     MOV    AL,0
  365.     MOV    BA0AA,AL
  366.     MOV    AL,BA0AA
  367.     TEST    AL,AL
  368.     JNZ    $+5
  369.     JMP    IFA0113
  370.     JMP    LOC01
  371.     JMP    IFA0114
  372. IFA0113:
  373.     MOV    AL,BA0SF
  374.     CMP    AL,BA0BB
  375.     MOV    AL,1
  376.     JNZ    $+4
  377.     MOV    AL,0
  378.     MOV    BA0AA,AL
  379.     MOV    AL,BA0AA
  380.     TEST    AL,AL
  381.     JNZ    $+5
  382.     JMP    IFA0115
  383.     JMP    LOC10
  384.     JMP    IFA0116
  385. IFA0115:
  386.     INC    BA0PP
  387.     MOV    BL,BA0BP
  388.     MOV    BH,0
  389.     MOV    AL,BA0BF[BX]
  390.     MOV    BA0AA,AL
  391.     MOV    BH,0
  392.     MOV    BL,BA0AA
  393.     MOV    WA0AA,BX
  394.     MOV    BL,BA0PP
  395.     MOV    BH,0
  396.     SHL    BX,1
  397.     MOV    AX,WA0AA
  398.     MOV    WA0PR[BX],AX
  399. IFA0116:
  400. IFA0114:
  401. IFA0112:
  402. LOC01:
  403.     INC    BA0BP
  404.     INC    WA0JJ
  405.     JMP    TW0110
  406. BW0110:
  407. LOC10:
  408.     MOV    AL,BYTE PTR BA0C0
  409.     MOV    BA0PP,AL
  410.     INC    WA0NM
  411.     MOV    BX,WA0NM
  412.     SHL    BX,1
  413.     MOV    AX,WA0LP[BX]
  414.     MOV    WA0DP,AX
  415.     MOV    BX,WA0DP
  416.     MOV    WA0JJ,BX
  417.     JMP    TW0109
  418. BW0109:
  419. LOC17:
  420.     MOV    AL,BYTE PTR BA0C0
  421.     MOV    BA0BP,AL
  422. TW0117:    MOV    BL,BA0BP
  423.     MOV    BH,0
  424.     MOV    AL,BA0BF[BX]
  425.     MOV    BA0CC,AL
  426.     MOV    AL,BA0C1
  427.     ADD    AL,BA0BP
  428.     MOV    BA0O1,AL
  429.     MOV    BL,BA0O1
  430.     MOV    BH,0
  431.     MOV    AL,BA0BF[BX]
  432.     MOV    BA0AA,AL
  433.     MOV    AL,BA0NL
  434.     CMP    AL,BA0AA
  435.     MOV    AL,1
  436.     JNZ    $+4
  437.     MOV    AL,0
  438.     MOV    BA0AA,AL
  439.     MOV    AL,BA0AA
  440.     TEST    AL,AL
  441.     JNZ    $+5
  442.     JMP    BW0117
  443.     MOV    AL,BA0ML
  444.     TEST    AL,AL
  445.     JNZ    $+5
  446.     JMP    IFA0118
  447.     MOV    AL,BA0CC
  448.     CALL    WNX
  449. IFA0118:
  450.     MOV    BX, OFFSET BA0CC
  451.     MOV    DX, OFFSET BA0F2
  452.     CALL    BWRITE
  453.     INC    BA0BP
  454.     JMP    TW0117
  455. BW0117:
  456.     MOV    AL,BA0ML
  457.     TEST    AL,AL
  458.     JNZ    $+5
  459.     JMP    IFA0119
  460.     CALL    SA0CR
  461. IFA0119:
  462.     MOV    AL,BA0UN
  463.     TEST    AL,AL
  464.     JNZ    $+5
  465.     JMP    IFA0120
  466.     MOV    BX, OFFSET BA0NL
  467.     MOV    DX, OFFSET BA0F2
  468.     CALL    BWRITE
  469.     MOV    BX, OFFSET BA0LF
  470.     MOV    DX, OFFSET BA0F2
  471.     CALL    BWRITE
  472. IFA0120:
  473.     JMP    TW0100
  474. BW0100:
  475. LOC88:
  476.     CALL    MSG
  477.     DB    'TINCMP CO'
  478.     CALL    MSG
  479.     DB    'MPILATION'
  480.     CALL    MSG
  481.     DB    ' FINISHED'
  482.     CALL    SA0CR
  483.     MOV    DX, OFFSET BA0F1
  484.     CALL    CLOSEIO
  485.     MOV    DX, OFFSET BA0F2
  486.     CALL    CLOSEIO
  487.     CALL    ENDING
  488.     MOV    CL,0
  489.     INT    224
  490.     HLT
  491. SA0GC:    MOV    BX, OFFSET BA0CC
  492.     MOV    DX, OFFSET BA0F1
  493.     CALL    BREAD
  494.     MOV    AL,BA0C0
  495.     CMP    AL,BA0ER
  496.     MOV    AL,1
  497.     JNZ    $+4
  498.     MOV    AL,0
  499.     MOV    BA0AA,AL
  500.     MOV    AL,BA0AA
  501.     TEST    AL,AL
  502.     JNZ    $+5
  503.     JMP    IFA0121
  504.     JMP    LOC88
  505. IFA0121:
  506.     MOV    AL,BA0CC
  507.     CMP    AL,BA0EF
  508.     MOV    AL,1
  509.     JZ    $+4
  510.     MOV    AL,0
  511.     MOV    BA0AA,AL
  512.     MOV    AL,BA0AA
  513.     TEST    AL,AL
  514.     JNZ    $+5
  515.     JMP    IFA0122
  516.     JMP    LOC88
  517. IFA0122:
  518.     RET
  519. SA0SD:    MOV    AX,WA0TU
  520.     CMP    AX,WA000
  521.     LAHF
  522.     ROL    AH,1
  523.     AND    AH,1
  524.     MOV    BA0AA,AH
  525.     MOV    AL,BA0AA
  526.     TEST    AL,AL
  527.     JNZ    $+5
  528.     JMP    IFA0123
  529.     MOV    BA0BB,1
  530.     MOV    AX,WA0TU
  531.     NEG    AX
  532.     MOV    WA0TU,AX
  533.     JMP    IFA0124
  534. IFA0123:
  535.     MOV    BA0BB,0
  536. IFA0124:
  537.     MOV    AX,WA000
  538.     CMP    AX,WA0TU
  539.     MOV    AL,1
  540.     JZ    $+4
  541.     MOV    AL,0
  542.     MOV    BA0AA,AL
  543.     MOV    AL,BA0AA
  544.     TEST    AL,AL
  545.     JNZ    $+5
  546.     JMP    IFA0125
  547.     MOV    AL,BYTE PTR BA0C1
  548.     MOV    BA0ND,AL
  549.     MOV    BL,BA0C0
  550.     MOV    BH,0
  551.     MOV    AL,BA0ZR
  552.     MOV    BA0DS[BX],AL
  553.     JMP    IFA0126
  554. IFA0125:
  555.     MOV    AL,BYTE PTR BA0C0
  556.     MOV    BA0ND,AL
  557. TW0127:    MOV    AX,WA000
  558.     CMP    AX,WA0TU
  559.     LAHF
  560.     ROL    AH,1
  561.     AND    AH,1
  562.     MOV    BA0AA,AH
  563.     MOV    AL,BA0AA
  564.     TEST    AL,AL
  565.     JNZ    $+5
  566.     JMP    BW0127
  567.     MOV    AX,WA0TU
  568.     MOV    CX,WA010
  569.     CWD
  570.     JCXZ    $+4
  571.     IDIV    CX
  572.     MOV    WA0YY,AX
  573.     MOV    AX,WA010
  574.     IMUL    WA0YY
  575.     MOV    WA0AA,AX
  576.     MOV    AX,WA0TU
  577.     SUB    AX,WA0AA
  578.     MOV    WA0XX,AX
  579.     MOV    BX,WA0YY
  580.     MOV    WA0TU,BX
  581.     MOV    AL,BYTE PTR WA0XX
  582.     MOV    BA0AA,AL
  583.     MOV    AL,BA0ZR
  584.     ADD    AL,BA0AA
  585.     MOV    BA0AA,AL
  586.     MOV    BL,BA0ND
  587.     MOV    BH,0
  588.     MOV    AL,BA0AA
  589.     MOV    BA0DS[BX],AL
  590.     INC    BA0ND
  591.     JMP    TW0127
  592. BW0127:
  593. IFA0126:
  594.     MOV    BL,BA0ND
  595.     MOV    BH,0
  596.     MOV    AL,BA0OR
  597.     MOV    BA0DS[BX],AL
  598.     MOV    AL,BA0BB
  599.     ADD    AL,BA0ND
  600.     MOV    BA0ND,AL
  601.     RET
  602. SA0WN:    CALL    SA0SD
  603. TW0128:    MOV    BH,0
  604.     MOV    BL,BA0ND
  605.     MOV    WA0AA,BX
  606.     MOV    AX,WA000
  607.     CMP    AX,WA0AA
  608.     LAHF
  609.     ROL    AH,1
  610.     AND    AH,1
  611.     MOV    BA0AA,AH
  612.     MOV    AL,BA0AA
  613.     TEST    AL,AL
  614.     JNZ    $+5
  615.     JMP    BW0128
  616.     DEC    BA0ND
  617.     MOV    BL,BA0ND
  618.     MOV    BH,0
  619.     MOV    AL,BA0DS[BX]
  620.     MOV    BA0AA,AL
  621.     MOV    BX, OFFSET BA0AA
  622.     MOV    DX, OFFSET BA0F2
  623.     CALL    BWRITE
  624.     JMP    TW0128
  625. BW0128:
  626.     RET
  627. SA0PN:    CALL    SA0SD
  628. TW0129:    MOV    BH,0
  629.     MOV    BL,BA0ND
  630.     MOV    WA0AA,BX
  631.     MOV    AX,WA000
  632.     CMP    AX,WA0AA
  633.     LAHF
  634.     ROL    AH,1
  635.     AND    AH,1
  636.     MOV    BA0AA,AH
  637.     MOV    AL,BA0AA
  638.     TEST    AL,AL
  639.     JNZ    $+5
  640.     JMP    BW0129
  641.     DEC    BA0ND
  642.     MOV    BL,BA0ND
  643.     MOV    BH,0
  644.     MOV    AL,BA0DS[BX]
  645.     MOV    BA0AA,AL
  646.     MOV    AL,BA0AA
  647.     CALL    WNX
  648.     JMP    TW0129
  649. BW0129:
  650.     MOV    AL,BA0BL
  651.     CALL    WNX
  652.     RET
  653. SA0CD:    MOV    AL,BA0ZR
  654.     CMP    AL,BA0AA
  655.     MOV    AL,0
  656.     JNBE    $+4
  657.     MOV    AL,1
  658.     MOV    BA0BB,AL
  659.     MOV    AL,BA0AA
  660.     CMP    AL,BA0C9
  661.     MOV    AL,0
  662.     JNBE    $+4
  663.     MOV    AL,1
  664.     MOV    BA0CC,AL
  665.     MOV    AL,BA0BB
  666.     AND    AL,BA0CC
  667.     MOV    BA0BB,AL
  668.     MOV    AL,BA0BB
  669.     TEST    AL,AL
  670.     JNZ    $+5
  671.     JMP    IFA0130
  672.     MOV    AL,BA0AA
  673.     SUB    AL,BA0ZR
  674.     MOV    BA0AA,AL
  675.     RET
  676. IFA0130:
  677.     MOV    AL,BYTE PTR BA0C0
  678.     MOV    BA0AA,AL
  679.     RET
  680. SA0CH:    MOV    AL,BA0ZR
  681.     CMP    AL,BA0AA
  682.     MOV    AL,0
  683.     JNBE    $+4
  684.     MOV    AL,1
  685.     MOV    BA0BB,AL
  686.     MOV    AL,BA0AA
  687.     CMP    AL,BA0C9
  688.     MOV    AL,0
  689.     JNBE    $+4
  690.     MOV    AL,1
  691.     MOV    BA0CC,AL
  692.     MOV    AL,BA0BB
  693.     AND    AL,BA0CC
  694.     MOV    BA0BB,AL
  695.     MOV    AL,BA0BB
  696.     TEST    AL,AL
  697.     JNZ    $+5
  698.     JMP    IFA0131
  699.     MOV    AL,BA0AA
  700.     SUB    AL,BA0ZR
  701.     MOV    BA0AA,AL
  702.     RET
  703. IFA0131:
  704.     MOV    AL,BA0HA
  705.     CMP    AL,BA0AA
  706.     MOV    AL,0
  707.     JNBE    $+4
  708.     MOV    AL,1
  709.     MOV    BA0BB,AL
  710.     MOV    AL,BA0AA
  711.     CMP    AL,BA0HF
  712.     MOV    AL,0
  713.     JNBE    $+4
  714.     MOV    AL,1
  715.     MOV    BA0CC,AL
  716.     MOV    AL,BA0BB
  717.     AND    AL,BA0CC
  718.     MOV    BA0BB,AL
  719.     MOV    AL,BA0BB
  720.     TEST    AL,AL
  721.     JNZ    $+5
  722.     JMP    IFA0132
  723.     MOV    AL,BA0AA
  724.     SUB    AL,BA0HA
  725.     MOV    BA0AA,AL
  726.     MOV    AL,BA0CX
  727.     ADD    AL,BA0AA
  728.     MOV    BA0AA,AL
  729.     RET
  730. IFA0132:
  731.     MOV    AL,BYTE PTR BA0C0
  732.     MOV    BA0AA,AL
  733.     RET
  734. SA0IN:    MOV    WA0LM,8920
  735.     MOV    WA000,0
  736.     MOV    WA001,1
  737.     MOV    WA010,10
  738.     MOV    WA009,9
  739.     MOV    BA0C0,0
  740.     MOV    BA0C1,1
  741.     MOV    BA0C2,2
  742.     MOV    BA0C3,3
  743.     MOV    BA0EF,KA0EF
  744.     MOV    BA0C4,40
  745.     MOV    BA0C8,80
  746.     MOV    WA016,16
  747.     MOV    BA0SP,0
  748.     MOV    BA0C9,'9'
  749.     MOV    BA0ZR,'0'
  750.     MOV    BA0BL,' '
  751.     MOV    BA0HF,'F'
  752.     MOV    BA0HA,'A'
  753.     MOV    BA0CX,10
  754.     MOV    BX,WA001
  755.     MOV    WA0BC,BX
  756.     MOV    BA0TR,'R'
  757.     MOV    DX, OFFSET BA0F1
  758.     CALL    CLOSEIO
  759.     MOV    AL,1
  760.     MOV    BX, OFFSET WA0BC
  761.     CALL    ATTACH
  762.     MOV    DX,OFFSET BA0F1
  763.     MOV    BX,OFFSET BA0TR
  764.     MOV    SI,OFFSET WA0BC
  765.     CALL    OPENIO
  766.     MOV    BA0TR,'W'
  767.     INC    WA0BC
  768.     MOV    DX, OFFSET BA0F2
  769.     CALL    CLOSEIO
  770.     MOV    AL,2
  771.     MOV    BX, OFFSET WA0BC
  772.     CALL    ATTACH
  773.     MOV    DX,OFFSET BA0F2
  774.     MOV    BX,OFFSET BA0TR
  775.     MOV    SI,OFFSET WA0BC
  776.     CALL    OPENIO
  777.     MOV    BX, OFFSET BA0AA
  778.     MOV    DX, OFFSET BA0F1
  779.     CALL    BREAD
  780.     MOV    BA0OT,'T'
  781.     MOV    BA0UT,0
  782.     MOV    BA0BB,'X'
  783.     MOV    AL,BA0BB
  784.     CMP    AL,BA0AA
  785.     MOV    AL,1
  786.     JNZ    $+4
  787.     MOV    AL,0
  788.     MOV    BA0UN,AL
  789.     MOV    BX, OFFSET BA0RB
  790.     MOV    DX, OFFSET BA0F1
  791.     CALL    BREAD
  792.     MOV    BX, OFFSET BA0RC
  793.     MOV    DX, OFFSET BA0F1
  794.     CALL    BREAD
  795.     MOV    BX, OFFSET BA0SF
  796.     MOV    DX, OFFSET BA0F1
  797.     CALL    BREAD
  798.     MOV    BX, OFFSET BA0MF
  799.     MOV    DX, OFFSET BA0F1
  800.     CALL    BREAD
  801.     MOV    BA0BB,'X'
  802.     MOV    AL,BA0MF
  803.     CMP    AL,BA0BB
  804.     MOV    AL,1
  805.     JZ    $+4
  806.     MOV    AL,0
  807.     MOV    BA0AA,AL
  808.     MOV    AL,BA0AA
  809.     TEST    AL,AL
  810.     JNZ    $+5
  811.     JMP    IFA0133
  812.     MOV    AL,BYTE PTR BA0C0
  813.     MOV    BA0UO,AL
  814.     JMP    IFA0134
  815. IFA0133:
  816.     MOV    AL,BYTE PTR BA0C1
  817.     MOV    BA0UO,AL
  818. IFA0134:
  819.     MOV    BA0OP,'P'
  820.     MOV    BA0OE,'@'
  821.     MOV    BA0OD,'V'
  822.     MOV    BA0OB,'!'
  823.     MOV    BA0OS,'S'
  824.     MOV    BA0OH,'H'
  825.     MOV    BA0ON,'N'
  826.     MOV    BA0OL,'L'
  827.     MOV    BA0OC,'C'
  828.     MOV    BA0OA,'+'
  829.     MOV    BA0OR,'-'
  830.     MOV    BA0OM,'*'
  831.     MOV    BX, OFFSET BA0OG
  832.     MOV    DX, OFFSET BA0F1
  833.     CALL    BREAD
  834.     MOV    BA0AA,'X'
  835.     MOV    AL,BA0AA
  836.     CMP    AL,BA0OG
  837.     MOV    AL,1
  838.     JZ    $+4
  839.     MOV    AL,0
  840.     MOV    BA0BB,AL
  841.     MOV    AL,BA0BB
  842.     TEST    AL,AL
  843.     JNZ    $+5
  844.     JMP    IFA0135
  845.     MOV    BA0UG,0
  846.     JMP    IFA0136
  847. IFA0135:
  848.     MOV    BA0UG,1
  849. IFA0136:
  850.     MOV    BX, OFFSET BA0CC
  851.     MOV    DX, OFFSET BA0F1
  852.     CALL    BREAD
  853.     MOV    AL,BA0CC
  854.     CMP    AL,BA0NL
  855.     MOV    AL,1
  856.     JNZ    $+4
  857.     MOV    AL,0
  858.     MOV    BA0AA,AL
  859.     MOV    AL,BA0AA
  860.     TEST    AL,AL
  861.     JNZ    $+5
  862.     JMP    IFA0137
  863.     CALL    MSG
  864.     DB    'FLAG LINE'
  865.     MOV    AL,1
  866.     CALL    STOP
  867. IFA0137:
  868.     MOV    WA0UU,100
  869.     RET
  870. SA0RM:    MOV    BX,WA000
  871.     MOV    WA0II,BX
  872.     MOV    BH,0
  873.     MOV    BL,BA0C0
  874.     MOV    WA0NM,BX
  875.     MOV    BA0MM,127
  876. TW0138:    MOV    BX, OFFSET BA0CC
  877.     MOV    DX, OFFSET BA0F1
  878.     CALL    BREAD
  879.     MOV    AL,BA0ER
  880.     CMP    AL,BA0C0
  881.     MOV    AL,1
  882.     JZ    $+4
  883.     MOV    AL,0
  884.     MOV    BA0AA,AL
  885.     MOV    AL,BA0AA
  886.     TEST    AL,AL
  887.     JNZ    $+5
  888.     JMP    BW0138
  889.     MOV    AL,BA0CC
  890.     MOV    ERASER,AL
  891.     JMP    XA0140
  892.     RB    0-3
  893. A0U139:    MOV    AL,BA0OE
  894.     CMP    AL,ERASER
  895.     JZ    $+5
  896.     JMP    A0U141
  897.     MOV    BX, OFFSET BA0CC
  898.     MOV    DX, OFFSET BA0F1
  899.     CALL    BREAD
  900.     JMP    LOC77
  901.     JMP    XA0140
  902.     RB    0-0
  903. A0U141:    MOV    AL,BA0RB
  904.     CMP    AL,ERASER
  905.     JZ    $+5
  906.     JMP    A0U142
  907.     MOV    BX,WA0NM
  908.     SHL    BX,1
  909.     MOV    AX,WA0II
  910.     MOV    WA0LP[BX],AX
  911.     INC    WA0NM
  912.     MOV    BA0ML,0
  913.     JMP    XA0140
  914.     RB    0-0
  915. A0U142:    MOV    AL,BA0NL
  916.     CMP    AL,ERASER
  917.     JZ    $+5
  918.     JMP    A0U143
  919.     JMP    XA0140
  920.     RB    0-0
  921. A0U143:    MOV    AL,BA0LF
  922.     CMP    AL,ERASER
  923.     JZ    $+5
  924.     JMP    A0U144
  925.     JMP    XA0140
  926.     RB    0-0
  927. A0U144:    MOV    AL,BA0RC
  928.     CMP    AL,ERASER
  929.     JZ    $+5
  930.     JMP    A0U145
  931.     MOV    BX,WA0II
  932.     MOV    AL,BA0RC
  933.     MOV    BA0LS[BX],AL
  934.     INC    WA0II
  935.     MOV    AL,BA0ML
  936.     CMP    AL,BA0MM
  937.     LAHF
  938.     AND    AH,1
  939.     MOV    BA0AA,AH
  940.     MOV    AL,BA0AA
  941.     TEST    AL,AL
  942.     JNZ    $+5
  943.     JMP    IFA0146
  944.     MOV    AL,BYTE PTR BA0ML
  945.     MOV    BA0MM,AL
  946. IFA0146:
  947. TW0147:    MOV    BX, OFFSET BA0CC
  948.     MOV    DX, OFFSET BA0F1
  949.     CALL    BREAD
  950.     MOV    AL,BA0LF
  951.     CMP    AL,BA0CC
  952.     MOV    AL,1
  953.     JNZ    $+4
  954.     MOV    AL,0
  955.     MOV    BA0AA,AL
  956.     MOV    AL,BA0AA
  957.     TEST    AL,AL
  958.     JNZ    $+5
  959.     JMP    BW0147
  960.     JMP    TW0147
  961. BW0147:
  962.     JMP    XA0140
  963.     RB    0-0
  964. A0U145:    MOV    AL,BA0OG
  965.     CMP    AL,ERASER
  966.     JZ    $+5
  967.     JMP    A0U148
  968.     MOV    AL,BA0UG
  969.     TEST    AL,AL
  970.     JNZ    $+5
  971.     JMP    IFA0149
  972.     JMP    IFA0150
  973. IFA0149:
  974.     JMP    LOC77
  975. IFA0150:
  976.     JMP    XA0140
  977.     RB    0-0
  978. A0U148:
  979. LOC77:
  980.     MOV    BX,WA0II
  981.     MOV    AL,BA0CC
  982.     MOV    BA0LS[BX],AL
  983.     INC    WA0II
  984.     MOV    AX,WA0LM
  985.     CMP    AX,WA0II
  986.     LAHF
  987.     ROL    AH,1
  988.     AND    AH,1
  989.     MOV    BA0AA,AH
  990.     MOV    AL,BA0AA
  991.     TEST    AL,AL
  992.     JNZ    $+5
  993.     JMP    IFA0151
  994.     CALL    MSG
  995.     DB    'MACMEMXST'
  996.     CALL    SA0CR
  997.     MOV    DX, OFFSET BA0F1
  998.     CALL    CLOSEIO
  999.     MOV    AL,5
  1000.     CALL    STOP
  1001. IFA0151:
  1002.     INC    BA0ML
  1003. XA0140:
  1004.     JMP    TW0138
  1005. BW0138:
  1006.     MOV    AL,BA0EF
  1007.     CMP    AL,BA0CC
  1008.     MOV    AL,1
  1009.     JNZ    $+4
  1010.     MOV    AL,0
  1011.     MOV    BA0AA,AL
  1012.     MOV    AL,BA0AA
  1013.     TEST    AL,AL
  1014.     JNZ    $+5
  1015.     JMP    IFA0152
  1016.     CALL    MSG
  1017.     DB    'DEFN READ'
  1018.     MOV    AL,2
  1019.     CALL    STOP
  1020. IFA0152:
  1021.     MOV    DX, OFFSET BA0F1
  1022.     CALL    CLOSEIO
  1023.     MOV    WA0BC,3
  1024.     MOV    AL,3
  1025.     MOV    BX, OFFSET WA0BC
  1026.     CALL    ATTACH
  1027.     MOV    BA0TR,'R'
  1028.     MOV    DX,OFFSET BA0F1
  1029.     MOV    BX,OFFSET BA0TR
  1030.     MOV    SI,OFFSET WA0BC
  1031.     CALL    OPENIO
  1032.     MOV    BX,WA0II
  1033.     MOV    WA0ED,BX
  1034.     CALL    MSG
  1035.     DB    'LOADED...'
  1036.     MOV    BX,WA0II
  1037.     MOV    WA0TU,BX
  1038.     CALL    SA0PN
  1039.     CALL    MSG
  1040.     DB    '.BYTES FO'
  1041.     CALL    MSG
  1042.     DB    'R DEFINES'
  1043.     CALL    SA0CR
  1044.     MOV    BX,WA0NM
  1045.     SHL    BX,1
  1046.     MOV    AX,WA0II
  1047.     MOV    WA0LP[BX],AX
  1048.     MOV    BX,WA0NM
  1049.     MOV    WA0TU,BX
  1050.     CALL    SA0PN
  1051.     CALL    MSG
  1052.     DB    '.MACROS..'
  1053.     MOV    BH,0
  1054.     MOV    BL,BA0MM
  1055.     MOV    WA0TU,BX
  1056.     CALL    SA0PN
  1057.     CALL    MSG
  1058.     DB    ' MIN LEN.'
  1059.     CALL    SA0CR
  1060.     RET
  1061. SA0CR:    MOV    AL,BA0NL
  1062.     CALL    WNX
  1063.     MOV    AL,BA0LF
  1064.     CALL    WNX
  1065.     RET
  1066. SA0DM:    MOV    AX,WA0JJ
  1067.     ADD    AX,WA001
  1068.     MOV    WA0MP,AX
  1069.     INC    WA0NM
  1070.     MOV    BX,WA0NM
  1071.     SHL    BX,1
  1072.     MOV    AX,WA0LP[BX]
  1073.     MOV    WA0DP,AX
  1074. TW0153:    MOV    AX,WA0MP
  1075.     CMP    AX,WA0DP
  1076.     LAHF
  1077.     ROL    AH,1
  1078.     AND    AH,1
  1079.     MOV    BA0AA,AH
  1080.     MOV    AL,BA0AA
  1081.     TEST    AL,AL
  1082.     JNZ    $+5
  1083.     JMP    BW0153
  1084.     MOV    BX,WA0MP
  1085.     MOV    AL,BA0LS[BX]
  1086.     MOV    BA0AA,AL
  1087.     MOV    AL,BA0UO
  1088.     TEST    AL,AL
  1089.     JNZ    $+5
  1090.     JMP    IFA0154
  1091.     MOV    AL,BA0AA
  1092.     CMP    AL,BA0MF
  1093.     MOV    AL,1
  1094.     JZ    $+4
  1095.     MOV    AL,0
  1096.     MOV    BA0AA,AL
  1097.     JMP    IFA0155
  1098. IFA0154:
  1099.     MOV    AL,BYTE PTR BA0C0
  1100.     MOV    BA0AA,AL
  1101. IFA0155:
  1102.     MOV    AL,BA0AA
  1103.     TEST    AL,AL
  1104.     JNZ    $+5
  1105.     JMP    IFA0156
  1106.     INC    WA0MP
  1107.     MOV    BX,WA0MP
  1108.     MOV    AL,BA0LS[BX]
  1109.     MOV    BA0O1,AL
  1110.     INC    WA0MP
  1111.     MOV    BX,WA0MP
  1112.     MOV    AL,BA0LS[BX]
  1113.     MOV    BA0AA,AL
  1114.     MOV    AL,BYTE PTR BA0AA
  1115.     MOV    BA0O2,AL
  1116.     CALL    SA0CD
  1117.     MOV    AL,BYTE PTR BA0AA
  1118.     MOV    BA0DG,AL
  1119.     INC    WA0MP
  1120.     MOV    BX,WA0MP
  1121.     MOV    AL,BA0LS[BX]
  1122.     MOV    BA0O3,AL
  1123.     MOV    AL,BA0UT
  1124.     TEST    AL,AL
  1125.     JNZ    $+5
  1126.     JMP    IFA0157
  1127.     MOV    AL,BA0O1
  1128.     CALL    WNX
  1129.     MOV    AL,BA0O2
  1130.     CALL    WNX
  1131.     MOV    AL,BA0O3
  1132.     CALL    WNX
  1133. IFA0157:
  1134.     MOV    AL,BA0O1
  1135.     MOV    ERASER,AL
  1136.     JMP    XA0159
  1137.     RB    0-3
  1138. A0U158:    MOV    AL,BA0OP
  1139.     CMP    AL,ERASER
  1140.     JZ    $+5
  1141.     JMP    A0U160
  1142.     MOV    BL,BA0DG
  1143.     MOV    BH,0
  1144.     SHL    BX,1
  1145.     MOV    AX,WA0PR[BX]
  1146.     MOV    WA0TU,AX
  1147.     JMP    XA0159
  1148.     RB    0-0
  1149. A0U160:    MOV    AL,BA0OD
  1150.     CMP    AL,ERASER
  1151.     JZ    $+5
  1152.     JMP    A0U161
  1153.     MOV    BL,BA0DG
  1154.     MOV    BH,0
  1155.     SHL    BX,1
  1156.     MOV    AX,WA0PR[BX]
  1157.     MOV    WA0AA,AX
  1158.     MOV    AL,BYTE PTR WA0AA
  1159.     MOV    BA0AA,AL
  1160.     CALL    SA0CD
  1161.     MOV    BH,0
  1162.     MOV    BL,BA0AA
  1163.     MOV    WA0TU,BX
  1164.     JMP    XA0159
  1165.     RB    0-0
  1166. A0U161:    MOV    AL,BA0OB
  1167.     CMP    AL,ERASER
  1168.     JZ    $+5
  1169.     JMP    A0U162
  1170.     MOV    BL,BA0SP
  1171.     MOV    BH,0
  1172.     SHL    BX,1
  1173.     MOV    AX,WA0SS[BX]
  1174.     MOV    WA0TU,AX
  1175.     MOV    AL,BA0SP
  1176.     CMP    AL,BA0C0
  1177.     MOV    AL,0
  1178.     JNBE    $+4
  1179.     MOV    AL,1
  1180.     MOV    BA0AA,AL
  1181.     MOV    AL,BA0AA
  1182.     TEST    AL,AL
  1183.     JNZ    $+5
  1184.     JMP    IFA0163
  1185.     CALL    MSG
  1186.     DB    'S STACKER'
  1187.     CALL    SA0CR
  1188.     MOV    AL,BYTE PTR BA0C1
  1189.     MOV    BA0SP,AL
  1190. IFA0163:
  1191.     DEC    BA0SP
  1192.     JMP    XA0159
  1193.     RB    0-0
  1194. A0U162:    MOV    AL,BA0OS
  1195.     CMP    AL,ERASER
  1196.     JZ    $+5
  1197.     JMP    A0U164
  1198.     MOV    BL,BA0SP
  1199.     MOV    BH,0
  1200.     SHL    BX,1
  1201.     MOV    AX,WA0SS[BX]
  1202.     MOV    WA0TU,AX
  1203.     JMP    XA0159
  1204.     RB    0-0
  1205. A0U164:    MOV    AL,BA0OH
  1206.     CMP    AL,ERASER
  1207.     JZ    $+5
  1208.     JMP    A0U165
  1209.     MOV    AL,BYTE PTR BA0O2
  1210.     MOV    BA0AA,AL
  1211.     CALL    SA0CH
  1212.     MOV    BH,0
  1213.     MOV    BL,BA0AA
  1214.     MOV    WA0AA,BX
  1215.     MOV    AX,WA0AA
  1216.     IMUL    WA016
  1217.     MOV    WA0AA,AX
  1218.     MOV    AL,BYTE PTR BA0O3
  1219.     MOV    BA0AA,AL
  1220.     CALL    SA0CH
  1221.     MOV    BH,0
  1222.     MOV    BL,BA0AA
  1223.     MOV    WA0BB,BX
  1224.     MOV    AX,WA0AA
  1225.     ADD    AX,WA0BB
  1226.     MOV    WA0TU,AX
  1227.     MOV    AL,BYTE PTR BA0OC
  1228.     MOV    BA0O3,AL
  1229.     JMP    XA0159
  1230.     RB    0-0
  1231. A0U165:    MOV    AL,BA0OL
  1232.     CMP    AL,ERASER
  1233.     JZ    $+5
  1234.     JMP    A0U166
  1235.     MOV    BH,0
  1236.     MOV    BL,BA0O2
  1237.     MOV    WA0TU,BX
  1238.     JMP    XA0159
  1239.     RB    0-0
  1240. A0U166:    MOV    AL,BA0ON
  1241.     CMP    AL,ERASER
  1242.     JZ    $+5
  1243.     JMP    A0U167
  1244.     MOV    AL,BYTE PTR BA0O2
  1245.     MOV    BA0AA,AL
  1246.     CALL    SA0CD
  1247.     MOV    BH,0
  1248.     MOV    BL,BA0AA
  1249.     MOV    WA0TU,BX
  1250.     JMP    XA0159
  1251.     RB    0-0
  1252. A0U167:    MOV    AL,BA0OT
  1253.     CMP    AL,ERASER
  1254.     JZ    $+5
  1255.     JMP    A0U168
  1256.     MOV    BA0UT,1
  1257.     JMP    XA0159
  1258.     RB    0-0
  1259. A0U168:
  1260.     MOV    BX,WA0UU
  1261.     MOV    WA0TU,BX
  1262.     INC    WA0UU
  1263. XA0159:
  1264.     MOV    AL,BA0UT
  1265.     TEST    AL,AL
  1266.     JNZ    $+5
  1267.     JMP    IFA0169
  1268.     MOV    BX,WA0TU
  1269.     MOV    WA0II,BX
  1270.     CALL    SA0PN
  1271.     MOV    BL,BA0SP
  1272.     MOV    BH,0
  1273.     SHL    BX,1
  1274.     MOV    AX,WA0SS[BX]
  1275.     MOV    WA0TU,AX
  1276.     CALL    SA0PN
  1277.     MOV    BH,0
  1278.     MOV    BL,BA0SP
  1279.     MOV    WA0TU,BX
  1280.     CALL    SA0PN
  1281.     MOV    BX,WA0II
  1282.     MOV    WA0TU,BX
  1283.     CALL    SA0CR
  1284. IFA0169:
  1285.     MOV    AL,BA0O3
  1286.     MOV    ERASER,AL
  1287.     JMP    XA0171
  1288.     RB    0-3
  1289. A0U170:    MOV    AL,BA0OC
  1290.     CMP    AL,ERASER
  1291.     JZ    $+5
  1292.     JMP    A0U172
  1293.     MOV    AL,BYTE PTR WA0TU
  1294.     MOV    BA0AA,AL
  1295.     MOV    BX, OFFSET BA0AA
  1296.     MOV    DX, OFFSET BA0F2
  1297.     CALL    BWRITE
  1298.     JMP    XA0171
  1299.     RB    0-0
  1300. A0U172:    MOV    AL,BA0OS
  1301.     CMP    AL,ERASER
  1302.     JZ    $+5
  1303.     JMP    A0U173
  1304.     INC    BA0SP
  1305.     MOV    AL,BA0C4
  1306.     CMP    AL,BA0SP
  1307.     MOV    AL,0
  1308.     JNBE    $+4
  1309.     MOV    AL,1
  1310.     MOV    BA0AA,AL
  1311.     MOV    AL,BA0AA
  1312.     TEST    AL,AL
  1313.     JNZ    $+5
  1314.     JMP    IFA0174
  1315.     CALL    MSG
  1316.     DB    'S OVERFLO'
  1317.     CALL    SA0CR
  1318.     MOV    AL,BYTE PTR BA0C4
  1319.     MOV    BA0SP,AL
  1320. IFA0174:
  1321.     MOV    BL,BA0SP
  1322.     MOV    BH,0
  1323.     SHL    BX,1
  1324.     MOV    AX,WA0TU
  1325.     MOV    WA0SS[BX],AX
  1326.     JMP    XA0171
  1327.     RB    0-0
  1328. A0U173:    MOV    AL,BA0OP
  1329.     CMP    AL,ERASER
  1330.     JZ    $+5
  1331.     JMP    A0U175
  1332.     MOV    BL,BA0DG
  1333.     MOV    BH,0
  1334.     SHL    BX,1
  1335.     MOV    AX,WA0TU
  1336.     MOV    WA0PR[BX],AX
  1337.     JMP    XA0171
  1338.     RB    0-0
  1339. A0U175:    MOV    AL,BA0OA
  1340.     CMP    AL,ERASER
  1341.     JZ    $+5
  1342.     JMP    A0U176
  1343.     MOV    BL,BA0SP
  1344.     MOV    BH,0
  1345.     SHL    BX,1
  1346.     MOV    AX,WA0SS[BX]
  1347.     MOV    WA0AA,AX
  1348.     MOV    AX,WA0AA
  1349.     ADD    AX,WA0TU
  1350.     MOV    WA0AA,AX
  1351.     MOV    BL,BA0SP
  1352.     MOV    BH,0
  1353.     SHL    BX,1
  1354.     MOV    AX,WA0AA
  1355.     MOV    WA0SS[BX],AX
  1356.     JMP    XA0171
  1357.     RB    0-0
  1358. A0U176:    MOV    AL,BA0OR
  1359.     CMP    AL,ERASER
  1360.     JZ    $+5
  1361.     JMP    A0U177
  1362.     MOV    BL,BA0SP
  1363.     MOV    BH,0
  1364.     SHL    BX,1
  1365.     MOV    AX,WA0SS[BX]
  1366.     MOV    WA0AA,AX
  1367.     MOV    AX,WA0AA
  1368.     SUB    AX,WA0TU
  1369.     MOV    WA0AA,AX
  1370.     MOV    BL,BA0SP
  1371.     MOV    BH,0
  1372.     SHL    BX,1
  1373.     MOV    AX,WA0AA
  1374.     MOV    WA0SS[BX],AX
  1375.     JMP    XA0171
  1376.     RB    0-0
  1377. A0U177:    MOV    AL,BA0OM
  1378.     CMP    AL,ERASER
  1379.     JZ    $+5
  1380.     JMP    A0U178
  1381.     MOV    BL,BA0SP
  1382.     MOV    BH,0
  1383.     SHL    BX,1
  1384.     MOV    AX,WA0SS[BX]
  1385.     MOV    WA0AA,AX
  1386.     MOV    AX,WA0AA
  1387.     IMUL    WA010
  1388.     MOV    WA0AA,AX
  1389.     MOV    AX,WA0AA
  1390.     ADD    AX,WA0TU
  1391.     MOV    WA0AA,AX
  1392.     MOV    BL,BA0SP
  1393.     MOV    BH,0
  1394.     SHL    BX,1
  1395.     MOV    AX,WA0AA
  1396.     MOV    WA0SS[BX],AX
  1397.     JMP    XA0171
  1398.     RB    0-0
  1399. A0U178:    MOV    AL,BA0OH
  1400.     CMP    AL,ERASER
  1401.     JZ    $+5
  1402.     JMP    A0U179
  1403.     MOV    AX,WA0TU
  1404.     MOV    BA0AA,AH
  1405.     MOV    BA0BB,AL
  1406.     MOV    BX, OFFSET BA0AA
  1407.     MOV    DX, OFFSET BA0F2
  1408.     CALL    BWRITE
  1409.     JMP    XA0171
  1410.     RB    0-0
  1411. A0U179:
  1412.     CALL    SA0WN
  1413. XA0171:
  1414.     JMP    IFA0180
  1415. IFA0156:
  1416.     MOV    BX,WA0MP
  1417.     MOV    AL,BA0LS[BX]
  1418.     MOV    BA0AA,AL
  1419.     MOV    AL,BA0UN
  1420.     TEST    AL,AL
  1421.     JNZ    $+5
  1422.     JMP    IFA0181
  1423.     MOV    AL,BA0RC
  1424.     CMP    AL,BA0AA
  1425.     MOV    AL,1
  1426.     JNZ    $+4
  1427.     MOV    AL,0
  1428.     MOV    BA0BB,AL
  1429.     JMP    IFA0182
  1430. IFA0181:
  1431.     MOV    AL,BYTE PTR BA0C1
  1432.     MOV    BA0BB,AL
  1433. IFA0182:
  1434.     MOV    AL,BA0BB
  1435.     TEST    AL,AL
  1436.     JNZ    $+5
  1437.     JMP    IFA0183
  1438.     MOV    BX, OFFSET BA0AA
  1439.     MOV    DX, OFFSET BA0F2
  1440.     CALL    BWRITE
  1441.     JMP    IFA0184
  1442. IFA0183:
  1443.     MOV    BX, OFFSET BA0NL
  1444.     MOV    DX, OFFSET BA0F2
  1445.     CALL    BWRITE
  1446.     MOV    BX, OFFSET BA0LF
  1447.     MOV    DX, OFFSET BA0F2
  1448.     CALL    BWRITE
  1449. IFA0184:
  1450. IFA0180:
  1451.     INC    WA0MP
  1452.     JMP    TW0153
  1453. BW0153:
  1454.     MOV    BA0UT,0
  1455.     RET
  1456.     END    START
  1457.