TITLE '8086 META COMPILER CP/M-86' PAGEWIDTH 79 NAME 'MAINPROG' EXTRN MSG:NEAR,OPENIO:NEAR,CLOSEIO:NEAR,RNX:NEAR EXTRN WNX:NEAR,STOP:NEAR,BREAD:NEAR,BWRITE:NEAR EXTRN INITIAL:NEAR,ENDING:NEAR,STOP:NEAR,ATTACH:NEAR EXTRN ASSOC:NEAR DATA DSEG KA0EF EQU 26 KA0HT EQU 9 KA0QM EQU 39 KA0EL EQU 13 KA0NL EQU 10 BA0AA RB 1 BA0BB RB 1 BA0BO RB 80 BA0C0 RB 1 BA0C1 RB 1 BA0C2 RB 1 BA0C3 RB 1 BA0C9 RB 1 BA0CB RB 1 BA0CC RB 1 BA0CD RB 1 BA0CE RB 1 BA0CG RB 1 BA0CL RB 1 BA0CM RB 1 BA0CP RB 1 BA0CQ RB 1 BA0CS RB 1 BA0CT RB 1 BA0CU RB 1 BA0CV RB 1 BA0CX RB 1 BA0DD RB 1 BA0DS RB 10 BA0EE RB 1 BA0EF RB 1 BA0EL RB 1 BA0F1 RB 128 BA0F2 RB 128 BA0FL RB 1 BA0KA RB 1 BA0KB RB 1 BA0KC RB 1 BA0KS RB 6000 BA0LI RB 1 BA0LL RB 1 BA0MC RB 3000 BA0MK RB 1 BA0MN RB 1 BA0ND RB 1 BA0NL RB 1 BA0NS RB 80 BA0OS RB 80 BA0PB RB 1 BA0PI RB 1 BA0PL RB 1 BA0PM RB 1 BA0PN RB 1 BA0PO RB 1 BA0QI RB 1 BA0RC RB 1 BA0RI RB 80 BA0SD RB 1 BA0WA RB 1 BA0WB RB 1 BA0X0 RB 1 BA0X1 RB 1 BA0X2 RB 1 BA0X3 RB 1 BA0X9 RB 1 BA0XA RB 1 BA0XB RB 1 BA0XC RB 1 BA0XD RB 1 BA0XE RB 1 BA0XF RB 1 BA0XG RB 1 BA0XH RB 1 BA0XI RB 1 BA0XJ RB 1 BA0XK RB 1 BA0XL RB 1 BA0XM RB 1 BA0XN RB 1 BA0XO RB 1 BA0XP RB 1 BA0XQ RB 1 BA0XR RB 1 BA0XS RB 1 BA0XT RB 1 BA0XU RB 1 BA0XV RB 1 BA0XW RB 1 BA0XX RB 1 BA0XY RB 1 BA0XZ RB 1 BA0YP RB 1 BA0ZP RB 1 BA0ZX RB 1 WA000 RW 1 WA001 RW 1 WA003 RW 1 WA010 RW 1 WA016 RW 1 WA0AA RW 1 WA0BB RW 1 WA0BK RW 1 WA0CC RW 1 WA0DD RW 1 WA0LB RW 1 WA0LN RW 1 WA0LT RW 1000 WA0MB RW 1 WA0MD RW 1 WA0MF RW 1 WA0MI RW 3000 WA0ML RW 1 WA0MM RW 1 WA0MT RW 1 WA0MX RW 1 WA0MZ RW 1 WA0NL RW 1 WA0PC RW 1 WA0PL RW 1 WA0PR RW 10 WA0PT RW 1 WA0RN RW 1 WA0SM RW 1 WA0ST RW 600 WA0TU RW 1 WA0UU RW 1 WA0XX RW 1 WA0YS RW 80 WA0YY RW 1 WA0ZC RW 1 WA0ZS RW 80 WA0ZT RW 1 BA0AC RB 1 WA0AV RW 1 IOCTRL DSEG COMMON IAV DW 0 BA0ER DB 0 CSEG START: CALL INITIAL MOV AX,IAV MOV BA0AC,AL MOV BA0EL,KA0EL MOV BA0NL,KA0NL CALL MSG DB 'METATERP ' CALL MSG DB 'Ver 1.2 ' CALL SA0CR CALL MSG DB '8086 VERS' CALL MSG DB 'ION FOR C' CALL MSG DB 'P/M-86 ' CALL SA0CR CALL MSG DB 'COPYRIGHT' CALL MSG DB ' 1984 A. ' CALL MSG DB 'L. BENDER' CALL MSG DB ', M. D. ' CALL SA0IN CALL SA0CR CALL SA0RC CALL SA0LI MOV WA0PC,0 LOC00: CALL SA0GI MOV BL,BA0C0 MOV BH,0 MOV AL,BA0RI[BX] MOV BA0CC,AL MOV AL,BA0CC JMP XA0101 RB 0-3 A0U100: CMP AL,BA0XL JZ $+5 JMP A0U102 MOV AL,BA0PI CMP AL,BA0C1 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0103 MOV AL,BA0FL TEST AL,AL JNZ $+5 JMP IF0104 CALL SA0LW INC WA0SM JMP IF0105 IF0104: MOV AL,BA0PM MOV BA0PL,AL IF0105: JMP IF0106 IF0103: MOV BL,BA0C1 MOV BH,0 MOV AL,BA0RI[BX] MOV BA0CC,AL MOV AL,BA0CC JMP XA0108 RB 0-3 A0U107: CMP AL,BA0XM JZ $+5 JMP A0U109 MOV BA0FL,0 MOV BA0BB,2 TW0110: MOV AL,BA0BB CMP AL,BA0PI LAHF AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0110 MOV BL,BA0BB MOV BH,0 MOV AL,BA0RI[BX] MOV BA0AA,AL MOV BL,BA0PL MOV BH,0 MOV AL,BA0NS[BX] MOV BA0DD,AL MOV AL,BA0DD CMP AL,BA0AA MOV AL,1 JNZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0111 JMP LOC99 IF0111: INC BA0BB CALL SA0LA JMP TW0110 BW0110: MOV BA0FL,1 CALL SA0LB JMP XA0108 RB 0-0 A0U109: CMP AL,BA0XI JZ $+5 JMP A0U112 MOV BA0FL,0 MOV BL,BA0PL MOV BH,0 MOV AL,BA0NS[BX] MOV BA0CC,AL MOV BA0PO,0 CALL SA0ZA TW0113: MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0113 MOV AL,BA0CC MOV BL,BA0PO MOV BH,0 MOV BA0OS[BX],AL INC BA0PO CALL SA0LA MOV BL,BA0PL MOV BH,0 MOV AL,BA0NS[BX] MOV BA0CC,AL CALL SA0ZA MOV AL,BA0AA MOV BA0DD,AL CALL SA0ZN MOV AL,BA0DD OR AL,BA0AA MOV BA0AA,AL JMP TW0113 BW0113: MOV AL,BA0PO CMP AL,BA0C0 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0114 JMP LOC99 IF0114: CALL SA0MS MOV AX,WA0AA MOV BL,BA0C0 MOV BH,0 SHL BX,1 MOV WA0PR[BX],AX MOV BA0FL,1 JMP XA0108 RB 0-0 A0U112: CMP AL,BA0XN JZ $+5 JMP A0U115 MOV BA0FL,0 MOV BX,WA000 MOV WA0AA,BX TW0116: MOV BL,BA0PL MOV BH,0 MOV AL,BA0NS[BX] MOV BA0CC,AL CALL SA0ZN MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0116 MOV BA0FL,1 MOV AX,WA0AA IMUL WA010 MOV WA0AA,AX MOV AL,BA0CC SUB AL,BA0X0 MOV BA0CC,AL MOV BH,0 MOV BL,BA0CC MOV WA0BB,BX MOV AX,WA0AA ADD AX,WA0BB MOV WA0AA,AX CALL SA0LA JMP TW0116 BW0116: MOV AX,WA0AA MOV BL,BA0C0 MOV BH,0 SHL BX,1 MOV WA0PR[BX],AX JMP XA0108 RB 0-0 A0U115: CMP AL,BA0XH JZ $+5 JMP A0U117 MOV BA0FL,0 MOV WA0AA,0 TW0118: MOV BL,BA0PL MOV BH,0 MOV AL,BA0NS[BX] MOV BA0CC,AL CALL SA0ZH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0118 MOV BA0FL,1 MOV AX,WA0AA IMUL WA016 MOV WA0AA,AX MOV BH,0 MOV BL,BA0CC MOV WA0BB,BX MOV AX,WA0AA ADD AX,WA0BB MOV WA0AA,AX CALL SA0LA JMP TW0118 BW0118: MOV AX,WA0AA MOV BL,BA0C0 MOV BH,0 SHL BX,1 MOV WA0PR[BX],AX JMP XA0108 RB 0-0 A0U117: CMP AL,BA0XQ JZ $+5 JMP A0U119 MOV BL,BA0C2 MOV BH,0 MOV AL,BA0RI[BX] MOV BA0DD,AL MOV BL,BA0PL MOV BH,0 MOV AL,BA0NS[BX] MOV BA0CC,AL MOV BA0PO,0 MOV AL,BA0CC CMP AL,BA0DD MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0120 CALL SA0LA TW0121: MOV BL,BA0PL MOV BH,0 MOV AL,BA0NS[BX] MOV BA0CC,AL MOV AL,BA0NL CMP AL,BA0CC MOV AL,1 JNZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0DD CMP AL,BA0CC MOV AL,1 JNZ $+4 MOV AL,0 MOV BA0BB,AL MOV AL,BA0AA AND AL,BA0BB MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0121 MOV AL,BA0CC MOV BL,BA0PO MOV BH,0 MOV BA0OS[BX],AL INC BA0PO CALL SA0LA JMP TW0121 BW0121: CALL SA0LA MOV AL,BA0CC CMP AL,BA0NL MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0122 INC WA0LN MOV BX,WA000 MOV WA0SM,BX IF0122: MOV BA0FL,1 JMP IF0123 IF0120: MOV BA0FL,0 IF0123: JMP XA0108 RB 0-0 A0U119: MOV AL,BA0CC CALL WNX CALL MSG DB ' NOT LEX!' CALL SA0CR XA0108: IF0106: JMP XA0101 RB 0-0 A0U102: CMP AL,BA0XF JZ $+5 JMP A0U124 MOV AL,BA0FL TEST AL,AL JNZ $+5 JMP IF0125 JMP IF0126 IF0125: JMP LOC20 IF0126: JMP XA0101 RB 0-0 A0U124: CMP AL,BA0XP JZ $+5 JMP A0U127 MOV BA0BB,1 TW0128: MOV AL,BA0BB CMP AL,BA0PI LAHF AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0128 MOV BL,BA0BB MOV BH,0 MOV AL,BA0RI[BX] MOV BA0CC,AL MOV AL,BA0CC MOV BL,BA0PB MOV BH,0 MOV BA0BO[BX],AL INC BA0PB INC BA0BB JMP TW0128 BW0128: JMP XA0101 RB 0-0 A0U127: CMP AL,BA0XO JZ $+5 JMP A0U129 MOV BA0BB,0 TW0130: MOV AL,BA0BB CMP AL,BA0PB LAHF AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0130 MOV BL,BA0BB MOV BH,0 MOV AL,BA0BO[BX] MOV BA0CC,AL INC BA0BB MOV BX, OFFSET BA0CC MOV DX, OFFSET BA0F2 CALL BWRITE JMP TW0130 BW0130: MOV BA0PB,0 MOV AL,BA0PI CMP AL,BA0C1 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0131 MOV BX, OFFSET BA0EL MOV DX, OFFSET BA0F2 CALL BWRITE MOV BX, OFFSET BA0NL MOV DX, OFFSET BA0F2 CALL BWRITE IF0131: JMP XA0101 RB 0-0 A0U129: CMP AL,BA0XX JZ $+5 JMP A0U132 MOV AL,BA0PI CMP AL,BA0C1 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0133 MOV AL,BA0FL TEST AL,AL JNZ $+5 JMP IF0134 JMP IF0135 IF0134: LOC98: CALL MSG DB 'ERROR AT ' CALL MSG DB 'LINE NUM ' MOV BX,WA0LN MOV WA0AA,BX CALL SA0PN CALL MSG DB ' SYMBOL ' MOV BX,WA0SM MOV WA0AA,BX CALL SA0PN MOV AL,BA0CB CALL WNX CALL SA0CR TW0136: MOV BL,BA0PL MOV BH,0 MOV AL,BA0NS[BX] MOV BA0CC,AL MOV AL,BA0ZX CMP AL,BA0CC MOV AL,1 JNZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0C0 CMP AL,BA0CC MOV AL,1 JNZ $+4 MOV AL,0 MOV BA0BB,AL MOV AL,BA0AA AND AL,BA0BB MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0136 MOV AL,BA0CC CMP AL,BA0NL MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0137 INC WA0LN MOV WA0SM,0 IF0137: CALL SA0LA CALL SA0LB JMP TW0136 BW0136: MOV AL,BA0CC CMP AL,BA0C0 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0BB,AL MOV AL,BA0BB TEST AL,AL JNZ $+5 JMP IF0138 CALL MSG DB 'END FILE ' JMP LOC21 IF0138: CALL SA0LA CALL SA0LB CALL SA0LW MOV BX,WA0ZC MOV WA0PC,BX MOV BX,WA0ZT MOV WA0PT,BX MOV BA0FL,1 IF0135: JMP IF0139 IF0133: MOV BL,BA0C1 MOV BH,0 MOV AL,BA0RI[BX] MOV BA0CC,AL MOV AL,BA0CC JMP XA0141 RB 0-3 A0U140: CMP AL,BA0XN JZ $+5 JMP A0U142 MOV BX,WA0LN MOV WA0AA,BX CALL SA0WN JMP XA0141 RB 0-0 A0U142: CMP AL,BA0XO JZ $+5 JMP A0U143 MOV BA0BB,0 TW0144: MOV AL,BA0BB CMP AL,BA0PB LAHF AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0144 MOV BL,BA0BB MOV BH,0 MOV AL,BA0BO[BX] MOV BA0CC,AL INC BA0BB MOV AL,BA0CC CALL WNX JMP TW0144 BW0144: CALL SA0CR MOV BA0PB,0 JMP XA0141 RB 0-0 A0U143: CMP AL,BA0XM JZ $+5 JMP A0U145 MOV BX,WA0PC MOV WA0ZC,BX MOV BX,WA0PT MOV WA0ZT,BX MOV BL,BA0C2 MOV BH,0 MOV AL,BA0RI[BX] MOV BA0ZX,AL JMP XA0141 RB 0-0 A0U145: XA0141: IF0139: JMP XA0101 RB 0-0 A0U132: CMP AL,BA0XT JZ $+5 JMP A0U146 MOV AL,BA0FL TEST AL,AL JNZ $+5 JMP IF0147 JMP LOC20 IF0147: JMP XA0101 RB 0-0 A0U146: CMP AL,BA0XG JZ $+5 JMP A0U148 MOV BL,BA0C1 MOV BH,0 MOV AL,BA0RI[BX] MOV BA0WA,AL MOV BL,BA0C2 MOV BH,0 MOV AL,BA0RI[BX] MOV BA0WB,AL MOV AX,WA0PT ADD AX,WA003 MOV WA0PT,AX MOV WA0AA,597 MOV AX,WA0AA CMP AX,WA0PT MOV AL,1 JLE $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0149 CALL MSG DB 'STACK OVE' CALL MSG DB 'R FLOW>>>' JMP LOC98 IF0149: MOV AX,WA0PC MOV BX,WA0PT SHL BX,1 MOV WA0ST[BX],AX MOV AL,BA0WB MOV AH,BA0WA MOV WA0PC,AX MOV BX,WA0PT MOV WA0AA,BX INC WA0AA MOV AX,WA000 MOV BX,WA0AA SHL BX,1 MOV WA0ST[BX],AX INC WA0AA MOV AX,WA000 MOV BX,WA0AA SHL BX,1 MOV WA0ST[BX],AX JMP XA0101 RB 0-0 A0U148: CMP AL,BA0XR JZ $+5 JMP A0U150 MOV BX,WA0PT SHL BX,1 MOV AX,WA0ST[BX] MOV WA0PC,AX MOV AX,WA0PT CMP AX,WA003 LAHF ROL AH,1 AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0151 CALL MSG DB 'STACK UND' CALL MSG DB 'ERFLOW...' JMP LOC98 IF0151: MOV AX,WA0PT SUB AX,WA003 MOV WA0PT,AX JMP XA0101 RB 0-0 A0U150: CMP AL,BA0XS JZ $+5 JMP A0U152 MOV AL,BA0PI CMP AL,BA0C1 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0153 MOV BA0FL,1 JMP IF0154 IF0153: MOV BL,BA0C1 MOV BH,0 MOV AL,BA0RI[BX] MOV BA0CC,AL MOV AL,BA0CC JMP XA0156 RB 0-3 A0U155: CMP AL,BA0XF JZ $+5 JMP A0U157 MOV BA0FL,0 JMP XA0156 RB 0-0 A0U157: CMP AL,BA0XC JZ $+5 JMP A0U158 MOV AL,BA0C1 SUB AL,BA0FL MOV BA0FL,AL JMP XA0156 RB 0-0 A0U158: CALL MSG DB 'SET ERROR' CALL SA0CR XA0156: IF0154: JMP XA0101 RB 0-0 A0U152: CMP AL,BA0XU JZ $+5 JMP A0U159 MOV AL,BA0PI CMP AL,BA0C1 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0160 MOV BX,WA0PT MOV WA0AA,BX INC WA0AA LOC10: MOV BX,WA0AA SHL BX,1 MOV AX,WA0ST[BX] MOV WA0BB,AX MOV AX,WA0BB CMP AX,WA001 LAHF ROL AH,1 AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0161 INC WA0UU MOV BX,WA0UU MOV WA0BB,BX MOV AX,WA0UU MOV BX,WA0AA SHL BX,1 MOV WA0ST[BX],AX IF0161: MOV BX,WA0BB MOV WA0AA,BX MOV AX,WA0AA MOV BL,BA0C0 MOV BH,0 SHL BX,1 MOV WA0PR[BX],AX CALL SA0WN JMP IF0162 IF0160: JMP LOC22 IF0162: JMP XA0101 RB 0-0 A0U159: CMP AL,BA0XC JZ $+5 JMP A0U163 MOV BA0BB,0 TW0164: MOV AL,BA0BB CMP AL,BA0PO LAHF AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0164 MOV BL,BA0BB MOV BH,0 MOV AL,BA0OS[BX] MOV BA0CC,AL MOV AL,BA0CC MOV BL,BA0PB MOV BH,0 MOV BA0BO[BX],AL INC BA0PB INC BA0BB JMP TW0164 BW0164: JMP XA0101 RB 0-0 A0U163: CMP AL,BA0XV JZ $+5 JMP A0U165 MOV AL,BA0PI CMP AL,BA0C1 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0166 MOV BX,WA0PT MOV WA0AA,BX INC WA0AA INC WA0AA JMP LOC10 JMP IF0167 IF0166: JMP LOC22 IF0167: JMP XA0101 RB 0-0 A0U165: CMP AL,BA0XM JZ $+5 JMP A0U168 MOV BL,BA0C1 MOV BH,0 MOV AL,BA0RI[BX] MOV BA0CC,AL MOV AL,BA0CC JMP XA0170 RB 0-3 A0U169: CMP AL,BA0XS JZ $+5 JMP A0U171 CALL SA0MH JMP XA0170 RB 0-0 A0U171: CMP AL,BA0XP JZ $+5 JMP A0U172 CALL SA0MP JMP XA0170 RB 0-0 A0U172: CMP AL,BA0XE JZ $+5 JMP A0U173 CALL SA0ME MOV AX,WA0AA MOV BL,BA0C0 MOV BH,0 SHL BX,1 MOV WA0PR[BX],AX JMP XA0170 RB 0-0 A0U173: CMP AL,BA0XQ JZ $+5 JMP A0U174 CALL SA0MS MOV AX,WA0AA MOV BL,BA0C0 MOV BH,0 SHL BX,1 MOV WA0PR[BX],AX JMP XA0170 RB 0-0 A0U174: CMP AL,BA0XC JZ $+5 JMP A0U175 CALL SA0MC MOV AX,WA0AA MOV BL,BA0C0 MOV BH,0 SHL BX,1 MOV WA0PR[BX],AX JMP XA0170 RB 0-0 A0U175: CMP AL,BA0XD JZ $+5 JMP A0U176 CALL SA0MD MOV AX,WA0AA MOV BL,BA0C0 MOV BH,0 SHL BX,1 MOV WA0PR[BX],AX JMP XA0170 RB 0-0 A0U176: CMP AL,BA0XI JZ $+5 JMP A0U177 MOV BL,BA0C2 MOV BH,0 MOV AL,BA0RI[BX] MOV BA0CC,AL CALL SA0ZN MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0178 MOV AL,BA0CC SUB AL,BA0X0 MOV BA0MK,AL JMP IF0179 IF0178: MOV BA0MK,2 IF0179: CALL SA0MI JMP XA0170 RB 0-0 A0U177: CALL MSG DB 'ILLEGAL M' CALL MSG DB 'EM OPN>>>' CALL SA0CR XA0170: JMP XA0101 RB 0-0 A0U168: CMP AL,BA0XJ JZ $+5 JMP A0U180 LOC20: MOV BL,BA0C1 MOV BH,0 MOV AL,BA0RI[BX] MOV BA0AA,AL MOV BL,BA0C2 MOV BH,0 MOV AL,BA0RI[BX] MOV BA0BB,AL MOV AL,BA0BB MOV AH,BA0AA MOV WA0LB,AX MOV BX,WA0LB SHL BX,1 MOV AX,WA0LT[BX] MOV WA0PC,AX JMP XA0101 RB 0-0 A0U180: CMP AL,BA0XE JZ $+5 JMP A0U181 LOC21: MOV DX, OFFSET BA0F1 CALL CLOSEIO MOV DX, OFFSET BA0F2 CALL CLOSEIO MOV BX,WA0MM MOV WA0AA,BX CALL SA0PN CALL MSG DB ' MAX MEM ' CALL MSG DB 'USAGE. ' CALL SA0CR CALL MSG DB 'PROGRAMME' CALL MSG DB 'D TERMINA' CALL MSG DB 'TION ' CALL SA0CR MOV AL,0 CALL STOP JMP XA0101 RB 0-0 A0U181: LOC22: MOV BA0QI,0 CALL SA0FT CALL SA0FI CALL SA0ST XA0101: JMP LOC00 LOC99: MOV BA0FL,0 JMP LOC00 CALL ENDING MOV CL,0 INT 224 SA0CK: MOV AL,BA0C0 CMP AL,BA0ER MOV AL,1 JNZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0182 CALL MSG DB 'CANT OPEN' MOV BX,WA0BK MOV WA0AA,BX CALL SA0PN CALL SA0CR MOV AL,1 CALL STOP IF0182: RET SA0CR: MOV AL,BA0EL CALL WNX MOV AL,BA0NL CALL WNX RET SA0DS: MOV AX,WA0AA CMP AX,WA000 LAHF ROL AH,1 AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0183 MOV BA0BB,1 MOV AX,WA0AA NEG AX MOV WA0AA,AX JMP IF0184 IF0183: MOV BA0BB,0 IF0184: MOV AX,WA000 CMP AX,WA0AA MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0185 MOV AL,BA0C1 MOV BA0ND,AL MOV AL,BA0X0 MOV BL,BA0C0 MOV BH,0 MOV BA0DS[BX],AL JMP IF0186 IF0185: MOV AL,BA0C0 MOV BA0ND,AL TW0187: MOV AX,WA000 CMP AX,WA0AA LAHF ROL AH,1 AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0187 MOV AX,WA0AA MOV CX,WA010 CWD JCXZ $+4 IDIV CX MOV WA0YY,AX MOV AX,WA010 IMUL WA0YY MOV WA0BB,AX MOV AX,WA0AA SUB AX,WA0BB MOV WA0XX,AX MOV BX,WA0YY MOV WA0AA,BX MOV AL,BYTE PTR WA0XX MOV BA0AA,AL MOV AL,BA0X0 ADD AL,BA0AA MOV BA0AA,AL MOV AL,BA0AA MOV BL,BA0ND MOV BH,0 MOV BA0DS[BX],AL INC BA0ND JMP TW0187 BW0187: IF0186: MOV AL,BA0CM MOV BL,BA0ND MOV BH,0 MOV BA0DS[BX],AL MOV AL,BA0BB ADD AL,BA0ND MOV BA0ND,AL RET SA0FI: INC BA0QI MOV BL,BA0QI MOV BH,0 MOV AL,BA0RI[BX] MOV BA0CC,AL MOV AL,BA0CC JMP XA0189 RB 0-3 A0U188: CMP AL,BA0XM JZ $+5 JMP A0U190 INC BA0QI MOV BL,BA0QI MOV BH,0 MOV AL,BA0RI[BX] MOV BA0CC,AL CALL SA0ZN MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0191 MOV AL,BA0CC SUB AL,BA0X0 MOV BA0BB,AL JMP IF0192 IF0191: LOC11: CALL MSG DB 'INDEX TO ' CALL MSG DB 'MEM CELL ' MOV BA0BB,0 IF0192: MOV AL,BA0BB CMP AL,BA0MK LAHF AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0193 MOV BH,0 MOV BL,BA0BB MOV WA0AA,BX MOV AX,WA0AA ADD AX,WA0TU MOV WA0AA,AX MOV BX,WA0AA SHL BX,1 MOV AX,WA0MI[BX] MOV WA0TU,AX RET JMP IF0194 IF0193: MOV AL,BA0BB SUB AL,BA0MK MOV BA0BB,AL MOV AL,BA0BB CMP AL,BA0MK LAHF AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0195 MOV BH,0 MOV BL,BA0BB MOV WA0AA,BX MOV AX,WA0TU ADD AX,WA0AA MOV WA0AA,AX MOV BX,WA0AA MOV AL,BA0MC[BX] MOV BA0AA,AL MOV BH,0 MOV BL,BA0AA MOV WA0TU,BX JMP IF0196 IF0195: JMP LOC11 IF0196: IF0194: JMP XA0189 RB 0-0 A0U190: CMP AL,BA0XS JZ $+5 JMP A0U197 MOV AL,BYTE PTR WA0TU MOV BA0AA,AL MOV BL,BA0AA MOV BH,0 MOV AL,BA0OS[BX] MOV BA0BB,AL MOV BH,0 MOV BL,BA0BB MOV WA0TU,BX JMP XA0189 RB 0-0 A0U197: DEC BA0QI XA0189: RET SA0FT: MOV BL,BA0QI MOV BH,0 MOV AL,BA0RI[BX] MOV BA0CC,AL MOV AL,BA0CC JMP XA0199 RB 0-3 A0U198: CMP AL,BA0XY JZ $+5 JMP A0U200 MOV BL,BA0YP MOV BH,0 SHL BX,1 MOV AX,WA0YS[BX] MOV WA0TU,AX JMP XA0199 RB 0-0 A0U200: CMP AL,BA0CX JZ $+5 JMP A0U201 MOV BL,BA0YP MOV BH,0 SHL BX,1 MOV AX,WA0YS[BX] MOV WA0TU,AX CALL SA0PY JMP XA0199 RB 0-0 A0U201: CMP AL,BA0XZ JZ $+5 JMP A0U202 MOV BL,BA0ZP MOV BH,0 SHL BX,1 MOV AX,WA0ZS[BX] MOV WA0TU,AX MOV AL,BA0ZP CMP AL,BA0C0 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0203 CALL MSG DB 'Z STACKER' CALL SA0CR MOV BA0ZP,1 MOV BA0FL,0 IF0203: DEC BA0ZP JMP XA0199 RB 0-0 A0U202: CMP AL,BA0XN JZ $+5 JMP A0U204 INC BA0QI MOV BL,BA0QI MOV BH,0 MOV AL,BA0RI[BX] MOV BA0AA,AL INC BA0QI MOV BL,BA0QI MOV BH,0 MOV AL,BA0RI[BX] MOV BA0BB,AL MOV AL,BA0BB MOV AH,BA0AA MOV WA0TU,AX JMP XA0199 RB 0-0 A0U204: CMP AL,BA0XH JZ $+5 JMP A0U205 MOV BL,BA0YP MOV BH,0 SHL BX,1 MOV AX,WA0YS[BX] MOV WA0TU,AX MOV AX,WA0TU MOV BA0AA,AH MOV BA0BB,AL MOV BH,0 MOV BL,BA0AA MOV WA0TU,BX JMP XA0199 RB 0-0 A0U205: CMP AL,BA0XB JZ $+5 JMP A0U206 MOV BH,0 MOV BL,BA0PO MOV WA0TU,BX JMP XA0199 RB 0-0 A0U206: CMP AL,BA0XU JZ $+5 JMP A0U207 MOV BX,WA0PT MOV WA0AA,BX LOC38: INC WA0AA MOV BX,WA0AA SHL BX,1 MOV AX,WA0ST[BX] MOV WA0TU,AX JMP XA0199 RB 0-0 A0U207: CMP AL,BA0XV JZ $+5 JMP A0U208 MOV BX,WA0PT MOV WA0AA,BX INC WA0AA JMP LOC38 JMP XA0199 RB 0-0 A0U208: CALL SA0ZN MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0209 MOV AL,BA0CC SUB AL,BA0X0 MOV BA0AA,AL JMP IF0210 IF0209: CALL MSG DB 'ILLEGAL F' CALL MSG DB 'ETCH OPN ' CALL SA0CR MOV BA0AA,0 IF0210: MOV BL,BA0AA MOV BH,0 SHL BX,1 MOV AX,WA0PR[BX] MOV WA0TU,AX XA0199: RET SA0GI: MOV BA0PI,0 MOV BX,WA0PC MOV AL,BA0KS[BX] MOV BA0LI,AL INC WA0PC TW0211: MOV AL,BA0PI CMP AL,BA0LI LAHF AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0211 MOV BX,WA0PC MOV AL,BA0KS[BX] MOV BA0AA,AL INC WA0PC MOV AL,BA0AA MOV BL,BA0PI MOV BH,0 MOV BA0RI[BX],AL INC BA0PI JMP TW0211 BW0211: RET SA0IN: MOV BA0KB,0 MOV BA0KC,0 MOV BA0ZX,0 MOV BA0YP,0 MOV BA0ZP,0 MOV BA0C0,0 MOV BA0FL,0 MOV BA0PI,0 MOV BA0PB,0 MOV BA0PO,0 MOV BA0PN,0 MOV WA0ZC,0 MOV WA0ZT,0 MOV WA000,0 MOV WA0PC,0 MOV WA0PT,0 MOV WA0LB,0 MOV WA0UU,0 MOV WA0SM,0 MOV WA0NL,0 MOV BA0C1,1 MOV BA0C2,2 MOV BA0MK,2 MOV WA001,1 MOV WA0LN,1 MOV BA0C3,3 MOV WA003,3 MOV BA0C9,9 MOV BA0CV,25 MOV BA0EL,KA0EL MOV BA0NL,KA0NL MOV BA0EF,KA0EF MOV WA010,10 MOV WA016,16 MOV BA0SD,80 MOV BA0MN,79 MOV BA0XA,'A' MOV BA0XB,'B' MOV BA0XC,'C' MOV BA0XD,'D' MOV BA0XE,'E' MOV BA0XF,'F' MOV BA0XG,'G' MOV BA0XH,'H' MOV BA0XI,'I' MOV BA0XJ,'J' MOV BA0XK,'K' MOV BA0XL,'L' MOV BA0XM,'M' MOV BA0XN,'N' MOV BA0XO,'O' MOV BA0XP,'P' MOV BA0XQ,'Q' MOV BA0XR,'R' MOV BA0XS,'S' MOV BA0XT,'T' MOV BA0XU,'U' MOV BA0XV,'V' MOV BA0XW,'W' MOV BA0XX,'X' MOV BA0XY,'Y' MOV BA0XZ,'Z' MOV BA0X0,'0' MOV BA0X1,'1' MOV BA0X2,'2' MOV BA0X3,'3' MOV BA0X9,'9' MOV BA0CB,' ' MOV BA0CX,'!' MOV BA0CS,'*' MOV BA0CM,'-' MOV BA0CP,'+' MOV BA0CG,'>' MOV BA0CU,'=' MOV BA0CL,'<' MOV BA0CT,KA0HT MOV BA0CE,'/' MOV BA0CD,'.' MOV BA0CQ,KA0QM MOV WA0BK,3 MOV AL,3 MOV BX, OFFSET WA0BK CALL ATTACH MOV DX,OFFSET BA0F2 MOV BX,OFFSET BA0XW MOV SI,OFFSET WA0BK CALL OPENIO CALL SA0MI RET SA0LA: MOV AL,BA0PL CMP AL,BA0MN MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0212 MOV BA0PL,0 JMP IF0213 IF0212: INC BA0PL IF0213: RET SA0LB: TW0214: MOV AL,BA0PM CMP AL,BA0PL MOV AL,1 JNZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0214 CALL SA0KG MOV AL,BA0C0 CMP AL,BA0ER MOV AL,1 JNZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0215 MOV BA0CC,0 IF0215: MOV AL,BA0CC MOV BL,BA0PM MOV BH,0 MOV BA0NS[BX],AL MOV AL,BA0PM CMP AL,BA0MN MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0216 MOV BA0PM,0 JMP IF0217 IF0216: INC BA0PM IF0217: JMP TW0214 BW0214: RET SA0LI: MOV BA0PM,0 MOV BA0PL,0 MOV BA0BB,0 TW0218: MOV AL,BA0BB CMP AL,BA0MN MOV AL,0 JNBE $+4 MOV AL,1 MOV BA0AA,AL MOV AL,BA0ER CMP AL,BA0C0 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0CC,AL MOV AL,BA0AA AND AL,BA0CC MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0218 CALL SA0KG MOV AL,BA0CC MOV BL,BA0BB MOV BH,0 MOV BA0NS[BX],AL INC BA0BB JMP TW0218 BW0218: RET SA0LW: MOV BL,BA0PL MOV BH,0 MOV AL,BA0NS[BX] MOV BA0CC,AL TW0219: MOV AL,BA0CC CMP AL,BA0NL MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0220 INC WA0LN MOV WA0SM,0 IF0220: MOV AL,BA0CC CMP AL,BA0CB MOV AL,1 JZ $+4 MOV AL,0 MOV BA0BB,AL MOV AL,BA0AA OR AL,BA0BB MOV BA0AA,AL MOV AL,BA0CC CMP AL,BA0CT MOV AL,1 JZ $+4 MOV AL,0 MOV BA0BB,AL MOV AL,BA0AA OR AL,BA0BB MOV BA0AA,AL MOV AL,BA0CC CMP AL,BA0EL MOV AL,1 JZ $+4 MOV AL,0 MOV BA0BB,AL MOV AL,BA0BB OR AL,BA0AA MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0219 CALL SA0LA MOV BL,BA0PL MOV BH,0 MOV AL,BA0NS[BX] MOV BA0CC,AL JMP TW0219 BW0219: CALL SA0LB RET SA0MC: MOV BH,0 MOV BL,BA0MK MOV WA0AA,BX MOV AX,WA0MT SUB AX,WA0AA MOV WA0MT,AX CALL SA0MO MOV BX,WA0MT MOV WA0AA,BX CALL SA0MZ RET SA0MD: MOV BH,0 MOV BL,BA0MK MOV WA0AA,BX MOV AX,WA0MT ADD AX,WA0AA MOV WA0MT,AX MOV AX,WA0MD CMP AX,WA0MT LAHF ROL AH,1 AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0221 CALL MSG DB 'DESTROY C' CALL MSG DB 'ELL ERROR' CALL SA0CR IF0221: MOV BX,WA0MT MOV WA0AA,BX RET SA0ME: CALL SA0ML MOV AX,WA000 CMP AX,WA0AA MOV AL,0 JZ $+4 MOV AL,1 MOV BA0EE,AL MOV AL,BA0EE TEST AL,AL JNZ $+5 JMP IF0222 RET IF0222: MOV AX,WA0MF MOV BX,WA0BB SHL BX,1 MOV WA0MI[BX],AX TW0223: MOV AL,BA0CC MOV BX,WA0MF MOV BA0MC[BX],AL MOV AX,WA0MX MOV BX,WA0MF SHL BX,1 MOV WA0MI[BX],AX INC WA0MF CALL SA0MO MOV AL,BA0C0 CMP AL,BA0CC MOV AL,1 JNZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0223 INC BA0BB MOV BL,BA0BB MOV BH,0 MOV AL,BA0OS[BX] MOV BA0CC,AL JMP TW0223 BW0223: MOV BX,WA0MF MOV WA0AA,BX MOV BH,0 MOV BL,BA0MK MOV WA0DD,BX MOV AX,WA0DD ADD AX,WA0MF MOV WA0MF,AX CALL SA0MO CALL SA0MZ RET SA0MH: MOV AX,WA0MB MOV BX,WA0MF SHL BX,1 MOV WA0MI[BX],AX MOV BX,WA0MF MOV WA0MB,BX MOV AX,WA0MF ADD AX,WA0ML MOV WA0MF,AX MOV AL,BA0C0 MOV BX,WA0MF MOV BA0MC[BX],AL MOV AX,WA000 MOV BX,WA0MF SHL BX,1 MOV WA0MI[BX],AX RET SA0MI: MOV WA0MB,0 MOV WA0MM,0 MOV WA0MD,3000 MOV BX,WA0MD MOV WA0MT,BX MOV WA0ML,1 MOV AX,WA0MB ADD AX,WA0ML MOV WA0MF,AX MOV WA0MX,0 MOV AX,WA000 MOV BX,WA0MB SHL BX,1 MOV WA0MI[BX],AX MOV AL,BA0C0 MOV BX,WA0MF MOV BA0MC[BX],AL MOV AX,WA000 MOV BX,WA0MF SHL BX,1 MOV WA0MI[BX],AX RET SA0ML: MOV AX,WA0MB ADD AX,WA0ML MOV WA0BB,AX MOV BA0BB,0 TW0224: MOV BL,BA0BB MOV BH,0 MOV AL,BA0OS[BX] MOV BA0CC,AL MOV BX,WA0BB MOV AL,BA0MC[BX] MOV BA0DD,AL MOV AL,BA0CC CMP AL,BA0DD MOV AL,1 JZ $+4 MOV AL,0 MOV BA0EE,AL MOV AL,BA0EE TEST AL,AL JNZ $+5 JMP IF0225 MOV AL,BA0CC CMP AL,BA0C0 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0EE,AL MOV AL,BA0EE TEST AL,AL JNZ $+5 JMP IF0226 MOV AX,WA0BB ADD AX,WA001 MOV WA0AA,AX JMP LOC77 IF0226: INC WA0BB INC BA0BB JMP IF0227 IF0225: MOV BX,WA0BB SHL BX,1 MOV AX,WA0MI[BX] MOV WA0AA,AX MOV AX,WA0MX CMP AX,WA0AA MOV AL,1 JZ $+4 MOV AL,0 MOV BA0EE,AL MOV AL,BA0EE TEST AL,AL JNZ $+5 JMP IF0228 MOV WA0AA,0 JMP LOC77 IF0228: MOV BX,WA0AA MOV WA0BB,BX IF0227: MOV AX,WA0BB CMP AX,WA0MF LAHF ROL AH,1 AND AH,1 MOV BA0EE,AH MOV AL,BA0EE TEST AL,AL JNZ $+5 JMP BW0224 JMP TW0224 BW0224: MOV WA0AA,0 LOC77: RET SA0MO: MOV AX,WA0MT CMP AX,WA0MF LAHF ROL AH,1 AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0229 CALL MSG DB 'OUT OF ME' CALL MSG DB 'MORY ERR.' MOV AL,3 CALL STOP IF0229: MOV AX,WA0MM CMP AX,WA0MF LAHF ROL AH,1 AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0230 MOV BX,WA0MF MOV WA0MM,BX IF0230: RET SA0MP: MOV AX,WA000 CMP AX,WA0MB MOV AL,0 JZ $+4 MOV AL,1 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0231 MOV BX,WA0MB MOV WA0MF,BX MOV BX,WA0MB SHL BX,1 MOV AX,WA0MI[BX] MOV WA0MB,AX JMP IF0232 IF0231: MOV BX,WA0ML MOV WA0MF,BX MOV AL,BA0C0 MOV BX,WA0MF MOV BA0MC[BX],AL MOV AX,WA000 MOV BX,WA0MF SHL BX,1 MOV WA0MI[BX],AX IF0232: RET SA0MS: MOV AL,BA0C0 MOV BL,BA0PO MOV BH,0 MOV BA0OS[BX],AL MOV BX,WA0MB MOV WA0MZ,BX TW0233: CALL SA0ML MOV AX,WA000 CMP AX,WA0AA MOV AL,1 JZ $+4 MOV AL,0 MOV BA0EE,AL MOV BX,WA0MB SHL BX,1 MOV AX,WA0MI[BX] MOV WA0MB,AX MOV AX,WA000 CMP AX,WA0MB MOV AL,0 JZ $+4 MOV AL,1 MOV BA0DD,AL MOV AL,BA0EE AND AL,BA0DD MOV BA0CC,AL MOV AL,BA0CC TEST AL,AL JNZ $+5 JMP BW0233 JMP TW0233 BW0233: MOV BX,WA0MZ MOV WA0MB,BX RET SA0MZ: MOV BA0BB,0 MOV BX,WA0AA MOV WA0DD,BX TW0234: MOV AL,BA0BB CMP AL,BA0MK LAHF AND AH,1 MOV BA0AA,AH INC BA0BB MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0234 MOV AL,BA0C0 MOV BX,WA0DD MOV BA0MC[BX],AL MOV AX,WA000 MOV BX,WA0DD SHL BX,1 MOV WA0MI[BX],AX INC WA0DD JMP TW0234 BW0234: RET SA0PN: CALL SA0DS TW0235: MOV BH,0 MOV BL,BA0ND MOV WA0BB,BX MOV AX,WA000 CMP AX,WA0BB LAHF ROL AH,1 AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0235 DEC BA0ND MOV BL,BA0ND MOV BH,0 MOV AL,BA0DS[BX] MOV BA0AA,AL MOV AL,BA0AA CALL WNX JMP TW0235 BW0235: MOV AL,BA0CB CALL WNX RET SA0PY: MOV AL,BA0YP CMP AL,BA0C0 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0236 CALL MSG DB 'Y STACKER' CALL SA0CR MOV AL,BA0C1 MOV BA0YP,AL MOV BA0FL,0 IF0236: DEC BA0YP RET SA0RA: MOV AL,BA0CC MOV BL,BA0C0 MOV BH,0 MOV BA0OS[BX],AL MOV BA0PO,1 TW0237: CALL SA0KG CALL SA0ZA MOV AL,BA0AA MOV BA0DD,AL CALL SA0ZN MOV AL,BA0AA OR AL,BA0DD MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0237 MOV AL,BA0CC MOV BL,BA0PO MOV BH,0 MOV BA0OS[BX],AL INC BA0PO JMP TW0237 BW0237: MOV AL,BA0CC CMP AL,BA0NL MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0238 JMP IF0239 IF0238: TW0240: CALL SA0KG MOV AL,BA0NL CMP AL,BA0CC MOV AL,1 JNZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0240 JMP TW0240 BW0240: IF0239: RET SA0RC: MOV DX, OFFSET BA0F1 CALL CLOSEIO MOV WA0BK,1 MOV AL,1 MOV BX, OFFSET WA0BK CALL ATTACH MOV DX,OFFSET BA0F1 MOV BX,OFFSET BA0XR MOV SI,OFFSET WA0BK CALL OPENIO CALL SA0CK MOV WA0PC,1 MOV BA0LL,0 MOV WA0PL,0 TW0241: MOV AL,BA0AA MOV BA0AA,AL LOC67: MOV BX, OFFSET BA0RC MOV DX, OFFSET BA0F1 CALL BREAD MOV AL,BA0RC CMP AL,BA0EL MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0242 JMP LOC67 IF0242: LOC33: MOV AL,BA0ER CMP AL,BA0C0 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0241 MOV AL,BA0RC JMP XA0244 RB 0-3 A0U243: CMP AL,BA0CE JZ $+5 JMP A0U245 CALL SA0KG MOV AL,BA0CC CMP AL,BA0CM MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0246 CALL SA0KG CALL SA0RN MOV AX,WA0RN NEG AX MOV WA0RN,AX JMP LOC37 IF0246: CALL SA0ZN MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0247 CALL SA0RN LOC37: MOV AX,WA0RN MOV BA0AA,AH MOV BA0BB,AL MOV AL,BA0AA MOV BX,WA0PC MOV BA0KS[BX],AL INC WA0PC INC BA0LL MOV AL,BA0BB MOV BX,WA0PC MOV BA0KS[BX],AL INC WA0PC INC BA0LL MOV AL,BA0CC MOV BA0RC,AL MOV AL,BA0RC CMP AL,BA0CB MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0248 JMP IF0249 IF0248: JMP LOC33 IF0249: JMP IF0250 IF0247: MOV AL,BA0CE MOV BX,WA0PC MOV BA0KS[BX],AL INC WA0PC INC BA0LL MOV AL,BA0CC MOV BA0RC,AL JMP LOC33 IF0250: JMP XA0244 RB 0-0 A0U245: CMP AL,BA0NL JZ $+5 JMP A0U251 MOV AL,BA0LL MOV BX,WA0PL MOV BA0KS[BX],AL MOV BX,WA0PC MOV WA0PL,BX INC WA0PC MOV BA0LL,0 JMP XA0244 RB 0-0 A0U251: CMP AL,BA0CD JZ $+5 JMP A0U252 MOV AL,BA0LL CMP AL,BA0C0 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0253 CALL SA0RL MOV AL,BA0NL MOV BA0RC,AL DEC WA0PC JMP LOC33 JMP IF0254 IF0253: JMP LOC35 IF0254: JMP XA0244 RB 0-0 A0U252: CMP AL,BA0XG JZ $+5 JMP A0U255 MOV AL,BA0LL CMP AL,BA0C0 MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0256 CALL SA0KG CALL SA0RA MOV AL,BA0C0 MOV BL,BA0PO MOV BH,0 MOV BA0OS[BX],AL CALL SA0ME MOV BX,WA0AA SHL BX,1 MOV AX,WA0MI[BX] MOV WA0RN,AX MOV AX,WA000 CMP AX,WA0RN MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0257 MOV BX,WA0AA MOV WA0RN,BX MOV AL,BA0NL MOV BX,WA0PC MOV BA0KS[BX],AL JMP IF0258 IF0257: MOV AL,BA0RC MOV BX,WA0PC MOV BA0KS[BX],AL IF0258: INC WA0PC MOV AX,WA0RN MOV BA0AA,AH MOV BA0BB,AL MOV AL,BA0AA MOV BX,WA0PC MOV BA0KS[BX],AL INC WA0PC MOV AL,BA0BB MOV BX,WA0PC MOV BA0KS[BX],AL INC WA0PC MOV AL,BA0C3 MOV BA0LL,AL MOV AL,BA0NL MOV BA0RC,AL JMP LOC33 JMP IF0259 IF0256: JMP LOC35 IF0259: JMP XA0244 RB 0-0 A0U255: CMP AL,BA0EL JZ $+5 JMP A0U260 JMP XA0244 RB 0-0 A0U260: LOC35: MOV AL,BA0RC MOV BX,WA0PC MOV BA0KS[BX],AL INC WA0PC INC BA0LL XA0244: JMP TW0241 BW0241: DEC WA0PC MOV AL,BA0C1 CMP AL,BA0ER MOV AL,1 JNZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0261 CALL MSG DB 'CANT READ' CALL MSG DB ' COMMANDS' CALL SA0CR MOV AL,1 CALL STOP IF0261: MOV DX, OFFSET BA0F1 CALL CLOSEIO MOV WA0BK,2 MOV AL,2 MOV BX, OFFSET WA0BK CALL ATTACH MOV DX,OFFSET BA0F1 MOV BX,OFFSET BA0XR MOV SI,OFFSET WA0BK CALL OPENIO CALL SA0CK MOV WA0AA,0 TW0262: MOV AX,WA0AA CMP AX,WA0PC LAHF ROL AH,1 AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0262 MOV BX,WA0AA MOV AL,BA0KS[BX] MOV BA0LL,AL MOV AX,WA0AA ADD AX,WA001 MOV WA0BB,AX MOV BX,WA0BB MOV AL,BA0KS[BX] MOV BA0AA,AL MOV AL,BA0AA CMP AL,BA0NL MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0263 MOV AL,BA0XG MOV BX,WA0BB MOV BA0KS[BX],AL INC WA0BB MOV BX,WA0BB MOV AL,BA0KS[BX] MOV BA0AA,AL INC WA0BB MOV BX,WA0BB MOV AL,BA0KS[BX] MOV BA0BB,AL MOV AL,BA0BB MOV AH,BA0AA MOV WA0RN,AX MOV BX,WA0RN MOV AL,BA0MC[BX] MOV BA0BB,AL MOV AL,BA0C1 CMP AL,BA0BB MOV AL,1 JNZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0264 MOV AX,WA0RN SUB AX,WA010 MOV WA0CC,AX TW0265: MOV AX,WA0CC CMP AX,WA0RN LAHF ROL AH,1 AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0265 MOV BX,WA0CC MOV AL,BA0MC[BX] MOV BA0BB,AL MOV AL,BA0BB CALL WNX INC WA0CC JMP TW0265 BW0265: MOV AL,BA0CB CALL WNX CALL MSG DB 'SUB UNDEF' CALL SA0CR IF0264: MOV BX,WA0RN SHL BX,1 MOV AX,WA0MI[BX] MOV WA0CC,AX MOV AX,WA0CC MOV BA0AA,AH MOV BA0BB,AL MOV AL,BA0BB MOV BX,WA0BB MOV BA0KS[BX],AL DEC WA0BB MOV AL,BA0AA MOV BX,WA0BB MOV BA0KS[BX],AL IF0263: MOV BH,0 MOV BL,BA0LL MOV WA0BB,BX MOV AX,WA0AA ADD AX,WA0BB MOV WA0AA,AX MOV AX,WA0AA ADD AX,WA001 MOV WA0AA,AX JMP TW0262 BW0262: CALL SA0MP MOV BX,WA0PC MOV WA0AA,BX CALL SA0PN CALL MSG DB 'CMD BYTS ' MOV BX,WA0NL MOV WA0AA,BX CALL SA0PN CALL MSG DB 'NUM LABS ' MOV BH,0 MOV BL,BA0PN MOV WA0AA,BX CALL SA0PN CALL MSG DB 'SUBROUTIN' CALL SA0CR RET SA0RL: TW0266: CALL SA0KG CALL SA0ZA MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0267 JMP LOC80 IF0267: CALL SA0ZN MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0268 JMP LOC85 IF0268: MOV AL,BA0NL CMP AL,BA0CC MOV AL,1 JNZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0266 JMP TW0266 BW0266: RET LOC80: CALL SA0RA MOV AL,BA0C0 MOV BL,BA0PO MOV BH,0 MOV BA0OS[BX],AL CALL SA0ME MOV AX,WA0PL MOV BX,WA0AA SHL BX,1 MOV WA0MI[BX],AX MOV AL,BA0C1 MOV BX,WA0AA MOV BA0MC[BX],AL INC BA0PN RET LOC85: INC WA0NL CALL SA0RN MOV AX,WA0PL MOV BX,WA0RN SHL BX,1 MOV WA0LT[BX],AX RET SA0RN: MOV WA0RN,0 TW0269: MOV AL,BA0CC SUB AL,BA0X0 MOV BA0CC,AL MOV BH,0 MOV BL,BA0CC MOV WA0AA,BX MOV AX,WA0RN IMUL WA010 MOV WA0RN,AX MOV AX,WA0RN ADD AX,WA0AA MOV WA0RN,AX CALL SA0KG CALL SA0ZN MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0269 JMP TW0269 BW0269: RET SA0ST: INC BA0QI MOV BL,BA0QI MOV BH,0 MOV AL,BA0RI[BX] MOV BA0CC,AL MOV AL,BA0CC JMP XA0271 RB 0-3 A0U270: CMP AL,BA0XY JZ $+5 JMP A0U272 INC BA0YP MOV AL,BA0SD CMP AL,BA0YP MOV AL,0 JNBE $+4 MOV AL,1 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0273 CALL MSG DB 'Y OVERFLW' CALL SA0CR MOV AL,BA0SD MOV BA0YP,AL MOV BA0FL,0 IF0273: MOV AX,WA0TU MOV BL,BA0YP MOV BH,0 SHL BX,1 MOV WA0YS[BX],AX JMP XA0271 RB 0-0 A0U272: CMP AL,BA0XZ JZ $+5 JMP A0U274 INC BA0ZP MOV AL,BA0SD CMP AL,BA0ZP MOV AL,0 JNBE $+4 MOV AL,1 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0275 CALL MSG DB 'Z OVERFLW' CALL SA0CR MOV AL,BA0SD MOV BA0ZP,AL MOV BA0FL,0 IF0275: MOV AX,WA0TU MOV BL,BA0ZP MOV BH,0 SHL BX,1 MOV WA0ZS[BX],AX JMP XA0271 RB 0-0 A0U274: CMP AL,BA0CP JZ $+5 JMP A0U276 MOV BL,BA0YP MOV BH,0 SHL BX,1 MOV AX,WA0YS[BX] MOV WA0AA,AX MOV AX,WA0AA ADD AX,WA0TU MOV WA0AA,AX MOV AX,WA0AA MOV BL,BA0YP MOV BH,0 SHL BX,1 MOV WA0YS[BX],AX JMP XA0271 RB 0-0 A0U276: CMP AL,BA0CM JZ $+5 JMP A0U277 MOV BL,BA0YP MOV BH,0 SHL BX,1 MOV AX,WA0YS[BX] MOV WA0AA,AX MOV AX,WA0AA SUB AX,WA0TU MOV WA0AA,AX MOV AX,WA0AA MOV BL,BA0YP MOV BH,0 SHL BX,1 MOV WA0YS[BX],AX JMP XA0271 RB 0-0 A0U277: CMP AL,BA0CS JZ $+5 JMP A0U278 MOV BL,BA0YP MOV BH,0 SHL BX,1 MOV AX,WA0YS[BX] MOV WA0AA,AX MOV AX,WA0AA IMUL WA0TU MOV WA0AA,AX MOV AX,WA0AA MOV BL,BA0YP MOV BH,0 SHL BX,1 MOV WA0YS[BX],AX JMP XA0271 RB 0-0 A0U278: CMP AL,BA0CG JZ $+5 JMP A0U279 MOV BL,BA0YP MOV BH,0 SHL BX,1 MOV AX,WA0YS[BX] MOV WA0AA,AX MOV AX,WA0AA CMP AX,WA0TU LAHF ROL AH,1 AND AH,1 MOV BA0AA,AH LOC12: MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0280 MOV BA0FL,1 JMP IF0281 IF0280: MOV BA0FL,0 IF0281: CALL SA0PY JMP XA0271 RB 0-0 A0U279: CMP AL,BA0CL JZ $+5 JMP A0U282 MOV BL,BA0YP MOV BH,0 SHL BX,1 MOV AX,WA0YS[BX] MOV WA0AA,AX MOV AX,WA0TU CMP AX,WA0AA LAHF ROL AH,1 AND AH,1 MOV BA0AA,AH JMP LOC12 JMP XA0271 RB 0-0 A0U282: CMP AL,BA0CU JZ $+5 JMP A0U283 MOV BL,BA0YP MOV BH,0 SHL BX,1 MOV AX,WA0YS[BX] MOV WA0AA,AX MOV AX,WA0AA CMP AX,WA0TU MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL JMP LOC12 JMP XA0271 RB 0-0 A0U283: CMP AL,BA0XI JZ $+5 JMP A0U284 INC BA0QI MOV BL,BA0QI MOV BH,0 MOV AL,BA0RI[BX] MOV BA0DD,AL MOV BX,WA0TU MOV WA0BB,BX INC BA0QI CALL SA0FT MOV AL,BA0DD MOV BA0CC,AL CALL SA0ZN MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0285 MOV AL,BA0CC SUB AL,BA0X0 MOV BA0BB,AL JMP IF0286 IF0285: LOC13: CALL MSG DB 'BAD INDIR' CALL MSG DB 'ECT INDEX' CALL SA0CR MOV BA0BB,0 IF0286: MOV AL,BA0BB CMP AL,BA0MK LAHF AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0287 MOV BH,0 MOV BL,BA0BB MOV WA0AA,BX MOV AX,WA0TU ADD AX,WA0AA MOV WA0AA,AX MOV AX,WA0BB MOV BX,WA0AA SHL BX,1 MOV WA0MI[BX],AX RET JMP IF0288 IF0287: MOV AL,BA0BB SUB AL,BA0MK MOV BA0BB,AL MOV AL,BA0BB CMP AL,BA0MK LAHF AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0289 MOV BH,0 MOV BL,BA0BB MOV WA0AA,BX MOV AX,WA0AA ADD AX,WA0TU MOV WA0AA,AX MOV AL,BYTE PTR WA0BB MOV BA0AA,AL MOV AL,BA0AA MOV BX,WA0AA MOV BA0MC[BX],AL JMP IF0290 IF0289: JMP LOC13 IF0290: IF0288: JMP XA0271 RB 0-0 A0U284: CMP AL,BA0XC JZ $+5 JMP A0U291 MOV BX,WA0TU MOV WA0AA,BX CALL SA0WN JMP XA0271 RB 0-0 A0U291: CMP AL,BA0XL JZ $+5 JMP A0U292 MOV AL,BYTE PTR WA0TU MOV BA0AA,AL MOV AL,BA0AA MOV BL,BA0PB MOV BH,0 MOV BA0BO[BX],AL INC BA0PB JMP XA0271 RB 0-0 A0U292: CMP AL,BA0XA JZ $+5 JMP A0U293 MOV AL,BYTE PTR WA0TU MOV BA0AA,AL MOV AL,BA0AA MOV BL,BA0PO MOV BH,0 MOV BA0OS[BX],AL INC BA0PO MOV AL,BA0C0 MOV BL,BA0PO MOV BH,0 MOV BA0OS[BX],AL JMP XA0271 RB 0-0 A0U293: CMP AL,BA0XB JZ $+5 JMP A0U294 MOV AL,BYTE PTR WA0TU MOV BA0PO,AL MOV AL,BA0C0 MOV BL,BA0PO MOV BH,0 MOV BA0OS[BX],AL JMP XA0271 RB 0-0 A0U294: CMP AL,BA0XG JZ $+5 JMP A0U295 MOV BX,WA0TU MOV WA0UU,BX JMP XA0271 RB 0-0 A0U295: CMP AL,BA0XU JZ $+5 JMP A0U296 MOV BX,WA0PT MOV WA0AA,BX LOC39: INC WA0AA MOV AX,WA0TU MOV BX,WA0AA SHL BX,1 MOV WA0ST[BX],AX JMP XA0271 RB 0-0 A0U296: CMP AL,BA0XV JZ $+5 JMP A0U297 MOV BX,WA0PT MOV WA0AA,BX INC WA0AA JMP LOC39 JMP XA0271 RB 0-0 A0U297: CMP AL,BA0XD JZ $+5 JMP A0U298 JMP XA0271 RB 0-0 A0U298: CMP AL,BA0XH JZ $+5 JMP A0U299 MOV AL,BYTE PTR WA0TU MOV BA0AA,AL MOV BH,0 MOV BL,BA0AA MOV WA0TU,BX MOV AX,WA0TU MOV CX,WA016 CWD JCXZ $+4 IDIV CX MOV WA0AA,AX MOV AX,WA0AA IMUL WA016 MOV WA0BB,AX MOV AX,WA0TU SUB AX,WA0BB MOV WA0BB,AX MOV AL,BYTE PTR WA0AA MOV BA0CC,AL CALL SA0WH MOV AL,BYTE PTR WA0BB MOV BA0CC,AL CALL SA0WH JMP XA0271 RB 0-0 A0U299: MOV BL,BA0QI MOV BH,0 MOV AL,BA0RI[BX] MOV BA0CC,AL CALL SA0ZN MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0300 MOV AL,BA0CC SUB AL,BA0X0 MOV BA0AA,AL JMP IF0301 IF0300: CALL MSG DB 'ILLEGAL S' CALL MSG DB 'TORE ATMP' CALL SA0CR MOV BA0AA,0 IF0301: MOV AX,WA0TU MOV BL,BA0AA MOV BH,0 SHL BX,1 MOV WA0PR[BX],AX XA0271: RET SA0WH: MOV AL,BA0CC CMP AL,BA0C9 MOV AL,0 JNBE $+4 MOV AL,1 MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0302 MOV AL,BA0X0 ADD AL,BA0CC MOV BA0CC,AL JMP IF0303 IF0302: MOV AL,BA0XA ADD AL,BA0CC MOV BA0CC,AL MOV AL,BA0CC SUB AL,BA0C9 MOV BA0CC,AL MOV AL,BA0CC SUB AL,BA0C1 MOV BA0CC,AL IF0303: MOV AL,BA0CC MOV BL,BA0PB MOV BH,0 MOV BA0BO[BX],AL INC BA0PB RET SA0WN: CALL SA0DS TW0304: MOV BH,0 MOV BL,BA0ND MOV WA0BB,BX MOV AX,WA000 CMP AX,WA0BB LAHF ROL AH,1 AND AH,1 MOV BA0AA,AH MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP BW0304 DEC BA0ND MOV BL,BA0ND MOV BH,0 MOV AL,BA0DS[BX] MOV BA0AA,AL MOV AL,BA0AA MOV BL,BA0PB MOV BH,0 MOV BA0BO[BX],AL INC BA0PB JMP TW0304 BW0304: RET SA0ZA: MOV AL,BA0CC SUB AL,BA0XA MOV BA0AA,AL MOV AL,BA0XZ SUB AL,BA0CC MOV BA0BB,AL MOV AL,BA0AA CMP AL,BA0CV MOV AL,0 JNBE $+4 MOV AL,1 MOV BA0AA,AL MOV AL,BA0BB CMP AL,BA0CV MOV AL,0 JNBE $+4 MOV AL,1 MOV BA0BB,AL MOV AL,BA0AA AND AL,BA0BB MOV BA0AA,AL RET SA0ZH: MOV AL,BA0X0 CMP AL,BA0CC MOV AL,0 JNBE $+4 MOV AL,1 MOV BA0AA,AL MOV AL,BA0CC CMP AL,BA0X9 MOV AL,0 JNBE $+4 MOV AL,1 MOV BA0BB,AL MOV AL,BA0AA AND AL,BA0BB MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0305 MOV AL,BA0CC SUB AL,BA0X0 MOV BA0CC,AL RET IF0305: MOV AL,BA0XA CMP AL,BA0CC MOV AL,0 JNBE $+4 MOV AL,1 MOV BA0AA,AL MOV AL,BA0CC CMP AL,BA0XF MOV AL,0 JNBE $+4 MOV AL,1 MOV BA0BB,AL MOV AL,BA0AA AND AL,BA0BB MOV BA0AA,AL MOV AL,BA0AA TEST AL,AL JNZ $+5 JMP IF0306 MOV AL,BA0CC SUB AL,BA0XA MOV BA0CC,AL MOV BA0BB,10 MOV AL,BA0BB ADD AL,BA0CC MOV BA0CC,AL RET IF0306: RET SA0ZN: MOV AL,BA0CC SUB AL,BA0X0 MOV BA0AA,AL MOV AL,BA0X9 SUB AL,BA0CC MOV BA0BB,AL MOV AL,BA0AA CMP AL,BA0C9 MOV AL,0 JNBE $+4 MOV AL,1 MOV BA0AA,AL MOV AL,BA0BB CMP AL,BA0C9 MOV AL,0 JNBE $+4 MOV AL,1 MOV BA0BB,AL MOV AL,BA0AA AND AL,BA0BB MOV BA0AA,AL RET SA0ZW: MOV AL,BA0CC CMP AL,BA0CB MOV AL,1 JZ $+4 MOV AL,0 MOV BA0AA,AL MOV AL,BA0CC CMP AL,BA0CT MOV AL,1 JZ $+4 MOV AL,0 MOV BA0BB,AL MOV AL,BA0AA OR AL,BA0BB MOV BA0AA,AL MOV AL,BA0CC CMP AL,BA0EL MOV AL,1 JZ $+4 MOV AL,0 MOV BA0BB,AL MOV AL,BA0AA OR AL,BA0BB MOV BA0AA,AL MOV AL,BA0CC CMP AL,BA0NL MOV AL,1 JZ $+4 MOV AL,0 MOV BA0BB,AL MOV AL,BA0AA OR AL,BA0BB MOV BA0AA,AL RET SA0KG: MOV BX, OFFSET BA0CC MOV DX, OFFSET BA0F1 CALL BREAD MOV AL,BA0CC CMP AL,BA0EL MOV AL,1 JZ $+4 MOV AL,0 MOV BA0KA,AL MOV AL,BA0KA TEST AL,AL JNZ $+5 JMP IF0307 MOV BX, OFFSET BA0CC MOV DX, OFFSET BA0F1 CALL BREAD IF0307: RET END START