home *** CD-ROM | disk | FTP | other *** search
Text File | 1985-03-23 | 39.6 KB | 3,293 lines |
- 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
-