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.     HLTSA0GC:    MOV    BX, OFFSET BA0CC
  491.     MOV    DX, OFFSET BA0F1
  492.     CALL    BREAD
  493.     MOV    AL,BA0C0
  494.     CMP    AL,BA0ER
  495.     MOV    AL,1
  496.     JNZ    $+4
  497.     MOV    AL,0
  498.     MOV    BA0AA,AL
  499.     MOV    AL,BA0AA
  500.     TEST    AL,AL
  501.     JNZ    $+5
  502.     JMP    IFA0121
  503.     JMP    LOC88
  504. IFA0121:
  505.     MOV    AL,BA0CC
  506.     CMP    AL,BA0EF
  507.     MOV    AL,1
  508.     JZ    $+4
  509.     MOV    AL,0
  510.     MOV    BA0AA,AL
  511.     MOV    AL,BA0AA
  512.     TEST    AL,AL
  513.     JNZ    $+5
  514.     JMP    IFA0122
  515.     JMP    LOC88
  516. IFA0122:
  517.     RET
  518. SA0SD:    MOV    AX,WA0TU
  519.     CMP    AX,WA000
  520.     LAHF
  521.     ROL    AH,1
  522.     AND    AH,1
  523.     MOV    BA0AA,AH
  524.     MOV    AL,BA0AA
  525.     TEST    AL,AL
  526.     JNZ    $+5
  527.     JMP    IFA0123
  528.     MOV    BA0BB,1
  529.     MOV    AX,WA0TU
  530.     NEG    AX
  531.     MOV    WA0TU,AX
  532.     JMP    IFA0124
  533. IFA0123:
  534.     MOV    BA0BB,0
  535. IFA0124:
  536.     MOV    AX,WA000
  537.     CMP    AX,WA0TU
  538.     MOV    AL,1
  539.     JZ    $+4
  540.     MOV    AL,0
  541.     MOV    BA0AA,AL
  542.     MOV    AL,BA0AA
  543.     TEST    AL,AL
  544.     JNZ    $+5
  545.     JMP    IFA0125
  546.     MOV    AL,BYTE PTR BA0C1
  547.     MOV    BA0ND,AL
  548.     MOV    BL,BA0C0
  549.     MOV    BH,0
  550.     MOV    AL,BA0ZR
  551.     MOV    BA0DS[BX],AL
  552.     JMP    IFA0126
  553. IFA0125:
  554.     MOV    AL,BYTE PTR BA0C0
  555.     MOV    BA0ND,AL
  556. TW0127:    MOV    AX,WA000
  557.     CMP    AX,WA0TU
  558.     LAHF
  559.     ROL    AH,1
  560.     AND    AH,1
  561.     MOV    BA0AA,AH
  562.     MOV    AL,BA0AA
  563.     TEST    AL,AL
  564.     JNZ    $+5
  565.     JMP    BW0127
  566.     MOV    AX,WA0TU
  567.     MOV    CX,WA010
  568.     CWD
  569.     JCXZ    $+4
  570.     IDIV    CX
  571.     MOV    WA0YY,AX
  572.     MOV    AX,WA010
  573.     IMUL    WA0YY
  574.     MOV    WA0AA,AX
  575.     MOV    AX,WA0TU
  576.     SUB    AX,WA0AA
  577.     MOV    WA0XX,AX
  578.     MOV    BX,WA0YY
  579.     MOV    WA0TU,BX
  580.     MOV    AL,BYTE PTR WA0XX
  581.     MOV    BA0AA,AL
  582.     MOV    AL,BA0ZR
  583.     ADD    AL,BA0AA
  584.     MOV    BA0AA,AL
  585.     MOV    BL,BA0ND
  586.     MOV    BH,0
  587.     MOV    AL,BA0AA
  588.     MOV    BA0DS[BX],AL
  589.     INC    BA0ND
  590.     JMP    TW0127
  591. BW0127:
  592. IFA0126:
  593.     MOV    BL,BA0ND
  594.     MOV    BH,0
  595.     MOV    AL,BA0OR
  596.     MOV    BA0DS[BX],AL
  597.     MOV    AL,BA0BB
  598.     ADD    AL,BA0ND
  599.     MOV    BA0ND,AL
  600.     RET
  601. SA0WN:    CALL    SA0SD
  602. TW0128:    MOV    BH,0
  603.     MOV    BL,BA0ND
  604.     MOV    WA0AA,BX
  605.     MOV    AX,WA000
  606.     CMP    AX,WA0AA
  607.     LAHF
  608.     ROL    AH,1
  609.     AND    AH,1
  610.     MOV    BA0AA,AH
  611.     MOV    AL,BA0AA
  612.     TEST    AL,AL
  613.     JNZ    $+5
  614.     JMP    BW0128
  615.     DEC    BA0ND
  616.     MOV    BL,BA0ND
  617.     MOV    BH,0
  618.     MOV    AL,BA0DS[BX]
  619.     MOV    BA0AA,AL
  620.     MOV    BX, OFFSET BA0AA
  621.     MOV    DX, OFFSET BA0F2
  622.     CALL    BWRITE
  623.     JMP    TW0128
  624. BW0128:
  625.     RET
  626. SA0PN:    CALL    SA0SD
  627. TW0129:    MOV    BH,0
  628.     MOV    BL,BA0ND
  629.     MOV    WA0AA,BX
  630.     MOV    AX,WA000
  631.     CMP    AX,WA0AA
  632.     LAHF
  633.     ROL    AH,1
  634.     AND    AH,1
  635.     MOV    BA0AA,AH
  636.     MOV    AL,BA0AA
  637.     TEST    AL,AL
  638.     JNZ    $+5
  639.     JMP    BW0129
  640.     DEC    BA0ND
  641.     MOV    BL,BA0ND
  642.     MOV    BH,0
  643.     MOV    AL,BA0DS[BX]
  644.     MOV    BA0AA,AL
  645.     MOV    AL,BA0AA
  646.     CALL    WNX
  647.     JMP    TW0129
  648. BW0129:
  649.     MOV    AL,BA0BL
  650.     CALL    WNX
  651.     RET
  652. SA0CD:    MOV    AL,BA0ZR
  653.     CMP    AL,BA0AA
  654.     MOV    AL,0
  655.     JNBE    $+4
  656.     MOV    AL,1
  657.     MOV    BA0BB,AL
  658.     MOV    AL,BA0AA
  659.     CMP    AL,BA0C9
  660.     MOV    AL,0
  661.     JNBE    $+4
  662.     MOV    AL,1
  663.     MOV    BA0CC,AL
  664.     MOV    AL,BA0BB
  665.     AND    AL,BA0CC
  666.     MOV    BA0BB,AL
  667.     MOV    AL,BA0BB
  668.     TEST    AL,AL
  669.     JNZ    $+5
  670.     JMP    IFA0130
  671.     MOV    AL,BA0AA
  672.     SUB    AL,BA0ZR
  673.     MOV    BA0AA,AL
  674.     RET
  675. IFA0130:
  676.     MOV    AL,BYTE PTR BA0C0
  677.     MOV    BA0AA,AL
  678.     RET
  679. SA0CH:    MOV    AL,BA0ZR
  680.     CMP    AL,BA0AA
  681.     MOV    AL,0
  682.     JNBE    $+4
  683.     MOV    AL,1
  684.     MOV    BA0BB,AL
  685.     MOV    AL,BA0AA
  686.     CMP    AL,BA0C9
  687.     MOV    AL,0
  688.     JNBE    $+4
  689.     MOV    AL,1
  690.     MOV    BA0CC,AL
  691.     MOV    AL,BA0BB
  692.     AND    AL,BA0CC
  693.     MOV    BA0BB,AL
  694.     MOV    AL,BA0BB
  695.     TEST    AL,AL
  696.     JNZ    $+5
  697.     JMP    IFA0131
  698.     MOV    AL,BA0AA
  699.     SUB    AL,BA0ZR
  700.     MOV    BA0AA,AL
  701.     RET
  702. IFA0131:
  703.     MOV    AL,BA0HA
  704.     CMP    AL,BA0AA
  705.     MOV    AL,0
  706.     JNBE    $+4
  707.     MOV    AL,1
  708.     MOV    BA0BB,AL
  709.     MOV    AL,BA0AA
  710.     CMP    AL,BA0HF
  711.     MOV    AL,0
  712.     JNBE    $+4
  713.     MOV    AL,1
  714.     MOV    BA0CC,AL
  715.     MOV    AL,BA0BB
  716.     AND    AL,BA0CC
  717.     MOV    BA0BB,AL
  718.     MOV    AL,BA0BB
  719.     TEST    AL,AL
  720.     JNZ    $+5
  721.     JMP    IFA0132
  722.     MOV    AL,BA0AA
  723.     SUB    AL,BA0HA
  724.     MOV    BA0AA,AL
  725.     MOV    AL,BA0CX
  726.     ADD    AL,BA0AA
  727.     MOV    BA0AA,AL
  728.     RET
  729. IFA0132:
  730.     MOV    AL,BYTE PTR BA0C0
  731.     MOV    BA0AA,AL
  732.     RET
  733. SA0IN:    MOV    WA0LM,8920
  734.     MOV    WA000,0
  735.     MOV    WA001,1
  736.     MOV    WA010,10
  737.     MOV    WA009,9
  738.     MOV    BA0C0,0
  739.     MOV    BA0C1,1
  740.     MOV    BA0C2,2
  741.     MOV    BA0C3,3
  742.     MOV    BA0EF,KA0EF
  743.     MOV    BA0C4,40
  744.     MOV    BA0C8,80
  745.     MOV    WA016,16
  746.     MOV    BA0SP,0
  747.     MOV    BA0C9,'9'
  748.     MOV    BA0ZR,'0'
  749.     MOV    BA0BL,' '
  750.     MOV    BA0HF,'F'
  751.     MOV    BA0HA,'A'
  752.     MOV    BA0CX,10
  753.     MOV    BX,WA001
  754.     MOV    WA0BC,BX
  755.     MOV    BA0TR,'R'
  756.     MOV    DX, OFFSET BA0F1
  757.     CALL    CLOSEIO
  758.     MOV    AL,1
  759.     MOV    BX, OFFSET WA0BC
  760.     CALL    ATTACH
  761.     MOV    DX,OFFSET BA0F1
  762.     MOV    BX,OFFSET BA0TR
  763.     MOV    SI,OFFSET WA0BC
  764.     CALL    OPENIO
  765.     MOV    BA0TR,'W'
  766.     INC    WA0BC
  767.     MOV    DX, OFFSET BA0F2
  768.     CALL    CLOSEIO
  769.     MOV    AL,2
  770.     MOV    BX, OFFSET WA0BC
  771.     CALL    ATTACH
  772.     MOV    DX,OFFSET BA0F2
  773.     MOV    BX,OFFSET BA0TR
  774.     MOV    SI,OFFSET WA0BC
  775.     CALL    OPENIO
  776.     MOV    BX, OFFSET BA0AA
  777.     MOV    DX, OFFSET BA0F1
  778.     CALL    BREAD
  779.     MOV    BA0OT,'T'
  780.     MOV    BA0UT,0
  781.     MOV    BA0BB,'X'
  782.     MOV    AL,BA0BB
  783.     CMP    AL,BA0AA
  784.     MOV    AL,1
  785.     JNZ    $+4
  786.     MOV    AL,0
  787.     MOV    BA0UN,AL
  788.     MOV    BX, OFFSET BA0RB
  789.     MOV    DX, OFFSET BA0F1
  790.     CALL    BREAD
  791.     MOV    BX, OFFSET BA0RC
  792.     MOV    DX, OFFSET BA0F1
  793.     CALL    BREAD
  794.     MOV    BX, OFFSET BA0SF
  795.     MOV    DX, OFFSET BA0F1
  796.     CALL    BREAD
  797.     MOV    BX, OFFSET BA0MF
  798.     MOV    DX, OFFSET BA0F1
  799.     CALL    BREAD
  800.     MOV    BA0BB,'X'
  801.     MOV    AL,BA0MF
  802.     CMP    AL,BA0BB
  803.     MOV    AL,1
  804.     JZ    $+4
  805.     MOV    AL,0
  806.     MOV    BA0AA,AL
  807.     MOV    AL,BA0AA
  808.     TEST    AL,AL
  809.     JNZ    $+5
  810.     JMP    IFA0133
  811.     MOV    AL,BYTE PTR BA0C0
  812.     MOV    BA0UO,AL
  813.     JMP    IFA0134
  814. IFA0133:
  815.     MOV    AL,BYTE PTR BA0C1
  816.     MOV    BA0UO,AL
  817. IFA0134:
  818.     MOV    BA0OP,'P'
  819.     MOV    BA0OE,'@'
  820.     MOV    BA0OD,'V'
  821.     MOV    BA0OB,'!'
  822.     MOV    BA0OS,'S'
  823.     MOV    BA0OH,'H'
  824.     MOV    BA0ON,'N'
  825.     MOV    BA0OL,'L'
  826.     MOV    BA0OC,'C'
  827.     MOV    BA0OA,'+'
  828.     MOV    BA0OR,'-'
  829.     MOV    BA0OM,'*'
  830.     MOV    BX, OFFSET BA0OG
  831.     MOV    DX, OFFSET BA0F1
  832.     CALL    BREAD
  833.     MOV    BA0AA,'X'
  834.     MOV    AL,BA0AA
  835.     CMP    AL,BA0OG
  836.     MOV    AL,1
  837.     JZ    $+4
  838.     MOV    AL,0
  839.     MOV    BA0BB,AL
  840.     MOV    AL,BA0BB
  841.     TEST    AL,AL
  842.     JNZ    $+5
  843.     JMP    IFA0135
  844.     MOV    BA0UG,0
  845.     JMP    IFA0136
  846. IFA0135:
  847.     MOV    BA0UG,1
  848. IFA0136:
  849.     MOV    BX, OFFSET BA0CC
  850.     MOV    DX, OFFSET BA0F1
  851.     CALL    BREAD
  852.     MOV    AL,BA0CC
  853.     CMP    AL,BA0NL
  854.     MOV    AL,1
  855.     JNZ    $+4
  856.     MOV    AL,0
  857.     MOV    BA0AA,AL
  858.     MOV    AL,BA0AA
  859.     TEST    AL,AL
  860.     JNZ    $+5
  861.     JMP    IFA0137
  862.     CALL    MSG
  863.     DB    'FLAG LINE'
  864.     MOV    AL,1
  865.     CALL    STOP
  866. IFA0137:
  867.     MOV    WA0UU,100
  868.     RET
  869. SA0RM:    MOV    BX,WA000
  870.     MOV    WA0II,BX
  871.     MOV    BH,0
  872.     MOV    BL,BA0C0
  873.     MOV    WA0NM,BX
  874.     MOV    BA0MM,127
  875. TW0138:    MOV    BX, OFFSET BA0CC
  876.     MOV    DX, OFFSET BA0F1
  877.     CALL    BREAD
  878.     MOV    AL,BA0ER
  879.     CMP    AL,BA0C0
  880.     MOV    AL,1
  881.     JZ    $+4
  882.     MOV    AL,0
  883.     MOV    BA0AA,AL
  884.     MOV    AL,BA0AA
  885.     TEST    AL,AL
  886.     JNZ    $+5
  887.     JMP    BW0138
  888.     MOV    AL,BA0CC
  889.     MOV    ERASER,AL
  890.     JMP    XA0140
  891.     RB    0-3
  892. A0U139:    MOV    AL,BA0OE
  893.     CMP    AL,ERASER
  894.     JZ    $+5
  895.     JMP    A0U141
  896.     MOV    BX, OFFSET BA0CC
  897.     MOV    DX, OFFSET BA0F1
  898.     CALL    BREAD
  899.     JMP    LOC77
  900.     JMP    XA0140
  901.     RB    0-0
  902. A0U141:    MOV    AL,BA0RB
  903.     CMP    AL,ERASER
  904.     JZ    $+5
  905.     JMP    A0U142
  906.     MOV    BX,WA0NM
  907.     SHL    BX,1
  908.     MOV    AX,WA0II
  909.     MOV    WA0LP[BX],AX
  910.     INC    WA0NM
  911.     MOV    BA0ML,0
  912.     JMP    XA0140
  913.     RB    0-0
  914. A0U142:    MOV    AL,BA0NL
  915.     CMP    AL,ERASER
  916.     JZ    $+5
  917.     JMP    A0U143
  918.     JMP    XA0140
  919.     RB    0-0
  920. A0U143:    MOV    AL,BA0LF
  921.     CMP    AL,ERASER
  922.     JZ    $+5
  923.     JMP    A0U144
  924.     JMP    XA0140
  925.     RB    0-0
  926. A0U144:    MOV    AL,BA0RC
  927.     CMP    AL,ERASER
  928.     JZ    $+5
  929.     JMP    A0U145
  930.     MOV    BX,WA0II
  931.     MOV    AL,BA0RC
  932.     MOV    BA0LS[BX],AL
  933.     INC    WA0II
  934.     MOV    AL,BA0ML
  935.     CMP    AL,BA0MM
  936.     LAHF
  937.     AND    AH,1
  938.     MOV    BA0AA,AH
  939.     MOV    AL,BA0AA
  940.     TEST    AL,AL
  941.     JNZ    $+5
  942.     JMP    IFA0146
  943.     MOV    AL,BYTE PTR BA0ML
  944.     MOV    BA0MM,AL
  945. IFA0146:
  946. TW0147:    MOV    BX, OFFSET BA0CC
  947.     MOV    DX, OFFSET BA0F1
  948.     CALL    BREAD
  949.     MOV    AL,BA0LF
  950.     CMP    AL,BA0CC
  951.     MOV    AL,1
  952.     JNZ    $+4
  953.     MOV    AL,0
  954.     MOV    BA0AA,AL
  955.     MOV    AL,BA0AA
  956.     TEST    AL,AL
  957.     JNZ    $+5
  958.     JMP    BW0147
  959.     JMP    TW0147
  960. BW0147:
  961.     JMP    XA0140
  962.     RB    0-0
  963. A0U145:    MOV    AL,BA0OG
  964.     CMP    AL,ERASER
  965.     JZ    $+5
  966.     JMP    A0U148
  967.     MOV    AL,BA0UG
  968.     TEST    AL,AL
  969.     JNZ    $+5
  970.     JMP    IFA0149
  971.     JMP    IFA0150
  972. IFA0149:
  973.     JMP    LOC77
  974. IFA0150:
  975.     JMP    XA0140
  976.     RB    0-0
  977. A0U148:
  978. LOC77:
  979.     MOV    BX,WA0II
  980.     MOV    AL,BA0CC
  981.     MOV    BA0LS[BX],AL
  982.     INC    WA0II
  983.     MOV    AX,WA0LM
  984.     CMP    AX,WA0II
  985.     LAHF
  986.     ROL    AH,1
  987.     AND    AH,1
  988.     MOV    BA0AA,AH
  989.     MOV    AL,BA0AA
  990.     TEST    AL,AL
  991.     JNZ    $+5
  992.     JMP    IFA0151
  993.     CALL    MSG
  994.     DB    'MACMEMXST'
  995.     CALL    SA0CR
  996.     MOV    DX, OFFSET BA0F1
  997.     CALL    CLOSEIO
  998.     MOV    AL,5
  999.     CALL    STOP
  1000. IFA0151:
  1001.     INC    BA0ML
  1002. XA0140:
  1003.     JMP    TW0138
  1004. BW0138:
  1005.     MOV    AL,BA0EF
  1006.     CMP    AL,BA0CC
  1007.     MOV    AL,1
  1008.     JNZ    $+4
  1009.     MOV    AL,0
  1010.     MOV    BA0AA,AL
  1011.     MOV    AL,BA0AA
  1012.     TEST    AL,AL
  1013.     JNZ    $+5
  1014.     JMP    IFA0152
  1015.     CALL    MSG
  1016.     DB    'DEFN READ'
  1017.     MOV    AL,2
  1018.     CALL    STOP
  1019. IFA0152:
  1020.     MOV    DX, OFFSET BA0F1
  1021.     CALL    CLOSEIO
  1022.     MOV    WA0BC,3
  1023.     MOV    AL,3
  1024.     MOV    BX, OFFSET WA0BC
  1025.     CALL    ATTACH
  1026.     MOV    BA0TR,'R'
  1027.     MOV    DX,OFFSET BA0F1
  1028.     MOV    BX,OFFSET BA0TR
  1029.     MOV    SI,OFFSET WA0BC
  1030.     CALL    OPENIO
  1031.     MOV    BX,WA0II
  1032.     MOV    WA0ED,BX
  1033.     CALL    MSG
  1034.     DB    'LOADED...'
  1035.     MOV    BX,WA0II
  1036.     MOV    WA0TU,BX
  1037.     CALL    SA0PN
  1038.     CALL    MSG
  1039.     DB    '.BYTES FO'
  1040.     CALL    MSG
  1041.     DB    'R DEFINES'
  1042.     CALL    SA0CR
  1043.     MOV    BX,WA0NM
  1044.     SHL    BX,1
  1045.     MOV    AX,WA0II
  1046.     MOV    WA0LP[BX],AX
  1047.     MOV    BX,WA0NM
  1048.     MOV    WA0TU,BX
  1049.     CALL    SA0PN
  1050.     CALL    MSG
  1051.     DB    '.MACROS..'
  1052.     MOV    BH,0
  1053.     MOV    BL,BA0MM
  1054.     MOV    WA0TU,BX
  1055.     CALL    SA0PN
  1056.     CALL    MSG
  1057.     DB    ' MIN LEN.'
  1058.     CALL    SA0CR
  1059.     RET
  1060. SA0CR:    MOV    AL,BA0NL
  1061.     CALL    WNX
  1062.     MOV    AL,BA0LF
  1063.     CALL    WNX
  1064.     RET
  1065. SA0DM:    MOV    AX,WA0JJ
  1066.     ADD    AX,WA001
  1067.     MOV    WA0MP,AX
  1068.     INC    WA0NM
  1069.     MOV    BX,WA0NM
  1070.     SHL    BX,1
  1071.     MOV    AX,WA0LP[BX]
  1072.     MOV    WA0DP,AX
  1073. TW0153:    MOV    AX,WA0MP
  1074.     CMP    AX,WA0DP
  1075.     LAHF
  1076.     ROL    AH,1
  1077.     AND    AH,1
  1078.     MOV    BA0AA,AH
  1079.     MOV    AL,BA0AA
  1080.     TEST    AL,AL
  1081.     JNZ    $+5
  1082.     JMP    BW0153
  1083.     MOV    BX,WA0MP
  1084.     MOV    AL,BA0LS[BX]
  1085.     MOV    BA0AA,AL
  1086.     MOV    AL,BA0UO
  1087.     TEST    AL,AL
  1088.     JNZ    $+5
  1089.     JMP    IFA0154
  1090.     MOV    AL,BA0AA
  1091.     CMP    AL,BA0MF
  1092.     MOV    AL,1
  1093.     JZ    $+4
  1094.     MOV    AL,0
  1095.     MOV    BA0AA,AL
  1096.     JMP    IFA0155
  1097. IFA0154:
  1098.     MOV    AL,BYTE PTR BA0C0
  1099.     MOV    BA0AA,AL
  1100. IFA0155:
  1101.     MOV    AL,BA0AA
  1102.     TEST    AL,AL
  1103.     JNZ    $+5
  1104.     JMP    IFA0156
  1105.     INC    WA0MP
  1106.     MOV    BX,WA0MP
  1107.     MOV    AL,BA0LS[BX]
  1108.     MOV    BA0O1,AL
  1109.     INC    WA0MP
  1110.     MOV    BX,WA0MP
  1111.     MOV    AL,BA0LS[BX]
  1112.     MOV    BA0AA,AL
  1113.     MOV    AL,BYTE PTR BA0AA
  1114.     MOV    BA0O2,AL
  1115.     CALL    SA0CD
  1116.     MOV    AL,BYTE PTR BA0AA
  1117.     MOV    BA0DG,AL
  1118.     INC    WA0MP
  1119.     MOV    BX,WA0MP
  1120.     MOV    AL,BA0LS[BX]
  1121.     MOV    BA0O3,AL
  1122.     MOV    AL,BA0UT
  1123.     TEST    AL,AL
  1124.     JNZ    $+5
  1125.     JMP    IFA0157
  1126.     MOV    AL,BA0O1
  1127.     CALL    WNX
  1128.     MOV    AL,BA0O2
  1129.     CALL    WNX
  1130.     MOV    AL,BA0O3
  1131.     CALL    WNX
  1132. IFA0157:
  1133.     MOV    AL,BA0O1
  1134.     MOV    ERASER,AL
  1135.     JMP    XA0159
  1136.     RB    0-3
  1137. A0U158:    MOV    AL,BA0OP
  1138.     CMP    AL,ERASER
  1139.     JZ    $+5
  1140.     JMP    A0U160
  1141.     MOV    BL,BA0DG
  1142.     MOV    BH,0
  1143.     SHL    BX,1
  1144.     MOV    AX,WA0PR[BX]
  1145.     MOV    WA0TU,AX
  1146.     JMP    XA0159
  1147.     RB    0-0
  1148. A0U160:    MOV    AL,BA0OD
  1149.     CMP    AL,ERASER
  1150.     JZ    $+5
  1151.     JMP    A0U161
  1152.     MOV    BL,BA0DG
  1153.     MOV    BH,0
  1154.     SHL    BX,1
  1155.     MOV    AX,WA0PR[BX]
  1156.     MOV    WA0AA,AX
  1157.     MOV    AL,BYTE PTR WA0AA
  1158.     MOV    BA0AA,AL
  1159.     CALL    SA0CD
  1160.     MOV    BH,0
  1161.     MOV    BL,BA0AA
  1162.     MOV    WA0TU,BX
  1163.     JMP    XA0159
  1164.     RB    0-0
  1165. A0U161:    MOV    AL,BA0OB
  1166.     CMP    AL,ERASER
  1167.     JZ    $+5
  1168.     JMP    A0U162
  1169.     MOV    BL,BA0SP
  1170.     MOV    BH,0
  1171.     SHL    BX,1
  1172.     MOV    AX,WA0SS[BX]
  1173.     MOV    WA0TU,AX
  1174.     MOV    AL,BA0SP
  1175.     CMP    AL,BA0C0
  1176.     MOV    AL,0
  1177.     JNBE    $+4
  1178.     MOV    AL,1
  1179.     MOV    BA0AA,AL
  1180.     MOV    AL,BA0AA
  1181.     TEST    AL,AL
  1182.     JNZ    $+5
  1183.     JMP    IFA0163
  1184.     CALL    MSG
  1185.     DB    'S STACKER'
  1186.     CALL    SA0CR
  1187.     MOV    AL,BYTE PTR BA0C1
  1188.     MOV    BA0SP,AL
  1189. IFA0163:
  1190.     DEC    BA0SP
  1191.     JMP    XA0159
  1192.     RB    0-0
  1193. A0U162:    MOV    AL,BA0OS
  1194.     CMP    AL,ERASER
  1195.     JZ    $+5
  1196.     JMP    A0U164
  1197.     MOV    BL,BA0SP
  1198.     MOV    BH,0
  1199.     SHL    BX,1
  1200.     MOV    AX,WA0SS[BX]
  1201.     MOV    WA0TU,AX
  1202.     JMP    XA0159
  1203.     RB    0-0
  1204. A0U164:    MOV    AL,BA0OH
  1205.     CMP    AL,ERASER
  1206.     JZ    $+5
  1207.     JMP    A0U165
  1208.     MOV    AL,BYTE PTR BA0O2
  1209.     MOV    BA0AA,AL
  1210.     CALL    SA0CH
  1211.     MOV    BH,0
  1212.     MOV    BL,BA0AA
  1213.     MOV    WA0AA,BX
  1214.     MOV    AX,WA0AA
  1215.     IMUL    WA016
  1216.     MOV    WA0AA,AX
  1217.     MOV    AL,BYTE PTR BA0O3
  1218.     MOV    BA0AA,AL
  1219.     CALL    SA0CH
  1220.     MOV    BH,0
  1221.     MOV    BL,BA0AA
  1222.     MOV    WA0BB,BX
  1223.     MOV    AX,WA0AA
  1224.     ADD    AX,WA0BB
  1225.     MOV    WA0TU,AX
  1226.     MOV    AL,BYTE PTR BA0OC
  1227.     MOV    BA0O3,AL
  1228.     JMP    XA0159
  1229.     RB    0-0
  1230. A0U165:    MOV    AL,BA0OL
  1231.     CMP    AL,ERASER
  1232.     JZ    $+5
  1233.     JMP    A0U166
  1234.     MOV    BH,0
  1235.     MOV    BL,BA0O2
  1236.     MOV    WA0TU,BX
  1237.     JMP    XA0159
  1238.     RB    0-0
  1239. A0U166:    MOV    AL,BA0ON
  1240.     CMP    AL,ERASER
  1241.     JZ    $+5
  1242.     JMP    A0U167
  1243.     MOV    AL,BYTE PTR BA0O2
  1244.     MOV    BA0AA,AL
  1245.     CALL    SA0CD
  1246.     MOV    BH,0
  1247.     MOV    BL,BA0AA
  1248.     MOV    WA0TU,BX
  1249.     JMP    XA0159
  1250.     RB    0-0
  1251. A0U167:    MOV    AL,BA0OT
  1252.     CMP    AL,ERASER
  1253.     JZ    $+5
  1254.     JMP    A0U168
  1255.     MOV    BA0UT,1
  1256.     JMP    XA0159
  1257.     RB    0-0
  1258. A0U168:
  1259.     MOV    BX,WA0UU
  1260.     MOV    WA0TU,BX
  1261.     INC    WA0UU
  1262. XA0159:
  1263.     MOV    AL,BA0UT
  1264.     TEST    AL,AL
  1265.     JNZ    $+5
  1266.     JMP    IFA0169
  1267.     MOV    BX,WA0TU
  1268.     MOV    WA0II,BX
  1269.     CALL    SA0PN
  1270.     MOV    BL,BA0SP
  1271.     MOV    BH,0
  1272.     SHL    BX,1
  1273.     MOV    AX,WA0SS[BX]
  1274.     MOV    WA0TU,AX
  1275.     CALL    SA0PN
  1276.     MOV    BH,0
  1277.     MOV    BL,BA0SP
  1278.     MOV    WA0TU,BX
  1279.     CALL    SA0PN
  1280.     MOV    BX,WA0II
  1281.     MOV    WA0TU,BX
  1282.     CALL    SA0CR
  1283. IFA0169:
  1284.     MOV    AL,BA0O3
  1285.     MOV    ERASER,AL
  1286.     JMP    XA0171
  1287.     RB    0-3
  1288. A0U170:    MOV    AL,BA0OC
  1289.     CMP    AL,ERASER
  1290.     JZ    $+5
  1291.     JMP    A0U172
  1292.     MOV    AL,BYTE PTR WA0TU
  1293.     MOV    BA0AA,AL
  1294.     MOV    BX, OFFSET BA0AA
  1295.     MOV    DX, OFFSET BA0F2
  1296.     CALL    BWRITE
  1297.     JMP    XA0171
  1298.     RB    0-0
  1299. A0U172:    MOV    AL,BA0OS
  1300.     CMP    AL,ERASER
  1301.     JZ    $+5
  1302.     JMP    A0U173
  1303.     INC    BA0SP
  1304.     MOV    AL,BA0C4
  1305.     CMP    AL,BA0SP
  1306.     MOV    AL,0
  1307.     JNBE    $+4
  1308.     MOV    AL,1
  1309.     MOV    BA0AA,AL
  1310.     MOV    AL,BA0AA
  1311.     TEST    AL,AL
  1312.     JNZ    $+5
  1313.     JMP    IFA0174
  1314.     CALL    MSG
  1315.     DB    'S OVERFLO'
  1316.     CALL    SA0CR
  1317.     MOV    AL,BYTE PTR BA0C4
  1318.     MOV    BA0SP,AL
  1319. IFA0174:
  1320.     MOV    BL,BA0SP
  1321.     MOV    BH,0
  1322.     SHL    BX,1
  1323.     MOV    AX,WA0TU
  1324.     MOV    WA0SS[BX],AX
  1325.     JMP    XA0171
  1326.     RB    0-0
  1327. A0U173:    MOV    AL,BA0OP
  1328.     CMP    AL,ERASER
  1329.     JZ    $+5
  1330.     JMP    A0U175
  1331.     MOV    BL,BA0DG
  1332.     MOV    BH,0
  1333.     SHL    BX,1
  1334.     MOV    AX,WA0TU
  1335.     MOV    WA0PR[BX],AX
  1336.     JMP    XA0171
  1337.     RB    0-0
  1338. A0U175:    MOV    AL,BA0OA
  1339.     CMP    AL,ERASER
  1340.     JZ    $+5
  1341.     JMP    A0U176
  1342.     MOV    BL,BA0SP
  1343.     MOV    BH,0
  1344.     SHL    BX,1
  1345.     MOV    AX,WA0SS[BX]
  1346.     MOV    WA0AA,AX
  1347.     MOV    AX,WA0AA
  1348.     ADD    AX,WA0TU
  1349.     MOV    WA0AA,AX
  1350.     MOV    BL,BA0SP
  1351.     MOV    BH,0
  1352.     SHL    BX,1
  1353.     MOV    AX,WA0AA
  1354.     MOV    WA0SS[BX],AX
  1355.     JMP    XA0171
  1356.     RB    0-0
  1357. A0U176:    MOV    AL,BA0OR
  1358.     CMP    AL,ERASER
  1359.     JZ    $+5
  1360.     JMP    A0U177
  1361.     MOV    BL,BA0SP
  1362.     MOV    BH,0
  1363.     SHL    BX,1
  1364.     MOV    AX,WA0SS[BX]
  1365.     MOV    WA0AA,AX
  1366.     MOV    AX,WA0AA
  1367.     SUB    AX,WA0TU
  1368.     MOV    WA0AA,AX
  1369.     MOV    BL,BA0SP
  1370.     MOV    BH,0
  1371.     SHL    BX,1
  1372.     MOV    AX,WA0AA
  1373.     MOV    WA0SS[BX],AX
  1374.     JMP    XA0171
  1375.     RB    0-0
  1376. A0U177:    MOV    AL,BA0OM
  1377.     CMP    AL,ERASER
  1378.     JZ    $+5
  1379.     JMP    A0U178
  1380.     MOV    BL,BA0SP
  1381.     MOV    BH,0
  1382.     SHL    BX,1
  1383.     MOV    AX,WA0SS[BX]
  1384.     MOV    WA0AA,AX
  1385.     MOV    AX,WA0AA
  1386.     IMUL    WA010
  1387.     MOV    WA0AA,AX
  1388.     MOV    AX,WA0AA
  1389.     ADD    AX,WA0TU
  1390.     MOV    WA0AA,AX
  1391.     MOV    BL,BA0SP
  1392.     MOV    BH,0
  1393.     SHL    BX,1
  1394.     MOV    AX,WA0AA
  1395.     MOV    WA0SS[BX],AX
  1396.     JMP    XA0171
  1397.     RB    0-0
  1398. A0U178:    MOV    AL,BA0OH
  1399.     CMP    AL,ERASER
  1400.     JZ    $+5
  1401.     JMP    A0U179
  1402.     MOV    AX,WA0TU
  1403.     MOV    BA0AA,AH
  1404.     MOV    BA0BB,AL
  1405.     MOV    BX, OFFSET BA0AA
  1406.     MOV    DX, OFFSET BA0F2
  1407.     CALL    BWRITE
  1408.     JMP    XA0171
  1409.     RB    0-0
  1410. A0U179:
  1411.     CALL    SA0WN
  1412. XA0171:
  1413.     JMP    IFA0180
  1414. IFA0156:
  1415.     MOV    BX,WA0MP
  1416.     MOV    AL,BA0LS[BX]
  1417.     MOV    BA0AA,AL
  1418.     MOV    AL,BA0UN
  1419.     TEST    AL,AL
  1420.     JNZ    $+5
  1421.     JMP    IFA0181
  1422.     MOV    AL,BA0RC
  1423.     CMP    AL,BA0AA
  1424.     MOV    AL,1
  1425.     JNZ    $+4
  1426.     MOV    AL,0
  1427.     MOV    BA0BB,AL
  1428.     JMP    IFA0182
  1429. IFA0181:
  1430.     MOV    AL,BYTE PTR BA0C1
  1431.     MOV    BA0BB,AL
  1432. IFA0182:
  1433.     MOV    AL,BA0BB
  1434.     TEST    AL,AL
  1435.     JNZ    $+5
  1436.     JMP    IFA0183
  1437.     MOV    BX, OFFSET BA0AA
  1438.     MOV    DX, OFFSET BA0F2
  1439.     CALL    BWRITE
  1440.     JMP    IFA0184
  1441. IFA0183:
  1442.     MOV    BX, OFFSET BA0NL
  1443.     MOV    DX, OFFSET BA0F2
  1444.     CALL    BWRITE
  1445.     MOV    BX, OFFSET BA0LF
  1446.     MOV    DX, OFFSET BA0F2
  1447.     CALL    BWRITE
  1448. IFA0184:
  1449. IFA0180:
  1450.     INC    WA0MP
  1451.     JMP    TW0153
  1452. BW0153:
  1453.     MOV    BA0UT,0
  1454.     RET
  1455.     END    START
  1456.