home *** CD-ROM | disk | FTP | other *** search
Text File | 1985-03-23 | 18.6 KB | 1,456 lines |
- TITLE '8086 TINCMP CMPLR[CP/M 1.1]'
- 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
- IOCTRL DSEG COMMON
- IAV DW 0
- BA0ER DB 0
- DATA DSEG
- KA0LF EQU 10
- KA0CR EQU 13
- KA0EF EQU 26
- BA0AA RB 1
- BA0BB RB 1
- BA0DD RB 1
- BA0EE RB 1
- BA0BF RB 80
- BA0BL RB 1
- BA0BP RB 1
- BA0C0 RB 1
- BA0C1 RB 1
- BA0C2 RB 1
- BA0C3 RB 1
- BA0C4 RB 1
- BA0C8 RB 1
- BA0C9 RB 1
- BA0CC RB 1
- BA0CX RB 1
- BA0DG RB 1
- BA0DS RB 10
- BA0EF RB 1
- BA0F1 RB 128
- BA0F2 RB 128
- BA0HA RB 1
- BA0HF RB 1
- BA0LE RB 1
- BA0LF RB 1
- BA0LS RB 9000
- BA0MF RB 1
- BA0ML RB 1
- BA0MM RB 1
- BA0ND RB 1
- BA0NL RB 1
- BA0O1 RB 1
- BA0O2 RB 1
- BA0O3 RB 1
- BA0OA RB 1
- BA0OB RB 1
- BA0OC RB 1
- BA0OD RB 1
- BA0OE RB 1
- BA0OG RB 1
- BA0OH RB 1
- BA0OL RB 1
- BA0OM RB 1
- BA0ON RB 1
- BA0OP RB 1
- BA0OR RB 1
- BA0OS RB 1
- BA0OT RB 1
- BA0PP RB 1
- BA0RB RB 1
- BA0RC RB 1
- BA0SF RB 1
- BA0SP RB 1
- BA0TR RB 1
- BA0UG RB 1
- BA0UN RB 1
- BA0UO RB 1
- BA0UT RB 1
- BA0ZR RB 1
- WA000 RW 1
- WA001 RW 1
- WA009 RW 1
- WA010 RW 1
- WA016 RW 1
- WA0AA RW 1
- WA0BB RW 1
- WA0BC RW 1
- WA0DP RW 1
- WA0ED RW 1
- WA0II RW 1
- WA0JJ RW 1
- WA0LM RW 1
- WA0LP RW 1000
- WA0MP RW 1
- WA0NM RW 1
- WA0PR RW 10
- WA0SS RW 40
- WA0TU RW 1
- WA0UU RW 1
- WA0XX RW 1
- WA0YY RW 1
- BA0AC RB 1
- WA0AV RW 1
- ERASER RB 1
- CSEG
- START: CALL INITIAL
- MOV AX,IAV
- MOV BA0AC,AL
- MOV BA0NL,KA0CR
- MOV BA0LF,KA0LF
- CALL SA0CR
- CALL MSG
- DB 'COPYRIGHT'
- CALL MSG
- DB ' (C) 1981'
- CALL MSG
- DB ' W.A.GALE'
- CALL SA0CR
- CALL MSG
- DB '8086 TINC'
- CALL MSG
- DB 'MP COMPIL'
- CALL MSG
- DB 'ER CP/M V'
- CALL MSG
- DB 'ERSION 1.'
- CALL MSG
- DB '07/TINCMP'
- CALL SA0CR
- CALL MSG
- DB 'COPYRIGHT'
- CALL MSG
- DB ' (C) 1984'
- CALL MSG
- DB ' A L BEND'
- CALL MSG
- DB 'ER, MD '
- CALL SA0CR
- CALL SA0IN
- CALL SA0RM
- LOC00:
- TW0100: MOV BX, OFFSET BA0CC
- MOV DX, OFFSET BA0F1
- CALL BREAD
- 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 BW0100
- MOV AL,BA0UG
- TEST AL,AL
- JNZ $+5
- JMP IFA0101
- TW0102: MOV AL,BA0CC
- CMP AL,BA0NL
- MOV AL,1
- JZ $+4
- MOV AL,0
- MOV BA0BB,AL
- MOV AL,BA0CC
- CMP AL,BA0LF
- MOV AL,1
- JZ $+4
- MOV AL,0
- MOV BA0DD,AL
- MOV AL,BA0CC
- CMP AL,BA0OG
- MOV AL,1
- JZ $+4
- MOV AL,0
- MOV BA0AA,AL
- MOV AL,BA0BB
- OR AL,BA0DD
- MOV BA0EE,AL
- MOV AL,BA0CC
- CMP AL,BA0BL
- MOV AL,1
- JZ $+4
- MOV AL,0
- MOV BA0BB,AL
- MOV AL,BA0BB
- OR AL,BA0AA
- MOV BA0AA,AL
- MOV AL,BA0EE
- OR AL,BA0AA
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP BW0102
- CALL SA0GC
- JMP TW0102
- BW0102:
- IFA0101:
- MOV AL,BYTE PTR BA0C1
- MOV BA0BP,AL
- MOV BL,BA0C0
- MOV BH,0
- MOV AL,BA0CC
- MOV BA0BF[BX],AL
- TW0103: CALL SA0GC
- 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 IFA0104
- CALL SA0GC
- MOV AL,BA0CC
- CMP AL,BA0LF
- MOV AL,1
- JZ $+4
- MOV AL,0
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0105
- MOV AL,BYTE PTR BA0NL
- MOV BA0CC,AL
- IFA0105:
- IFA0104:
- MOV AL,BA0NL
- CMP AL,BA0CC
- MOV AL,1
- JNZ $+4
- MOV AL,0
- MOV BA0AA,AL
- MOV AL,BA0C8
- CMP AL,BA0BP
- 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 BW0103
- MOV BL,BA0BP
- MOV BH,0
- MOV AL,BA0CC
- MOV BA0BF[BX],AL
- INC BA0BP
- JMP TW0103
- BW0103:
- TW0106: 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 BW0106
- CALL SA0GC
- JMP TW0106
- BW0106:
- MOV BL,BA0BP
- MOV BH,0
- MOV AL,BA0RC
- MOV BA0BF[BX],AL
- INC BA0BP
- MOV BL,BA0BP
- MOV BH,0
- MOV AL,BA0NL
- MOV BA0BF[BX],AL
- MOV AL,BYTE PTR BA0BP
- MOV BA0LE,AL
- MOV AL,BA0BP
- CMP AL,BA0MM
- MOV AL,0
- JNBE $+4
- MOV AL,1
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0107
- MOV BA0ML,0
- JMP LOC17
- JMP IFA0108
- IFA0107:
- MOV BA0ML,1
- IFA0108:
- MOV BX,WA000
- MOV WA0DP,BX
- MOV AL,BYTE PTR BA0C0
- MOV BA0PP,AL
- MOV BX,WA000
- MOV WA0JJ,BX
- MOV BH,0
- MOV BL,BA0C0
- MOV WA0NM,BX
- TW0109: MOV AX,WA0DP
- CMP AX,WA0ED
- LAHF
- ROL AH,1
- AND AH,1
- MOV BA0AA,AH
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP BW0109
- MOV AL,BYTE PTR BA0C0
- MOV BA0BP,AL
- TW0110: MOV AL,BA0BP
- CMP AL,BA0LE
- MOV AL,0
- JNBE $+4
- MOV AL,1
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP BW0110
- MOV BX,WA0JJ
- MOV AL,BA0LS[BX]
- MOV BA0AA,AL
- MOV AL,BA0AA
- CMP AL,BA0RC
- MOV AL,1
- JZ $+4
- MOV AL,0
- MOV BA0AA,AL
- MOV BL,BA0BP
- MOV BH,0
- MOV AL,BA0BF[BX]
- MOV BA0O3,AL
- MOV AL,BA0O3
- CMP AL,BA0RC
- MOV AL,1
- JZ $+4
- MOV AL,0
- MOV BA0O3,AL
- MOV AL,BA0AA
- AND AL,BA0O3
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0111
- CALL SA0DM
- JMP LOC00
- JMP IFA0112
- IFA0111:
- MOV BL,BA0BP
- MOV BH,0
- MOV AL,BA0BF[BX]
- MOV BA0AA,AL
- MOV BX,WA0JJ
- MOV AL,BA0LS[BX]
- MOV BA0BB,AL
- MOV AL,BA0AA
- CMP AL,BA0BB
- MOV AL,1
- JZ $+4
- MOV AL,0
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0113
- JMP LOC01
- JMP IFA0114
- IFA0113:
- MOV AL,BA0SF
- CMP AL,BA0BB
- MOV AL,1
- JNZ $+4
- MOV AL,0
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0115
- JMP LOC10
- JMP IFA0116
- IFA0115:
- INC BA0PP
- MOV BL,BA0BP
- MOV BH,0
- MOV AL,BA0BF[BX]
- MOV BA0AA,AL
- MOV BH,0
- MOV BL,BA0AA
- MOV WA0AA,BX
- MOV BL,BA0PP
- MOV BH,0
- SHL BX,1
- MOV AX,WA0AA
- MOV WA0PR[BX],AX
- IFA0116:
- IFA0114:
- IFA0112:
- LOC01:
- INC BA0BP
- INC WA0JJ
- JMP TW0110
- BW0110:
- LOC10:
- MOV AL,BYTE PTR BA0C0
- MOV BA0PP,AL
- INC WA0NM
- MOV BX,WA0NM
- SHL BX,1
- MOV AX,WA0LP[BX]
- MOV WA0DP,AX
- MOV BX,WA0DP
- MOV WA0JJ,BX
- JMP TW0109
- BW0109:
- LOC17:
- MOV AL,BYTE PTR BA0C0
- MOV BA0BP,AL
- TW0117: MOV BL,BA0BP
- MOV BH,0
- MOV AL,BA0BF[BX]
- MOV BA0CC,AL
- MOV AL,BA0C1
- ADD AL,BA0BP
- MOV BA0O1,AL
- MOV BL,BA0O1
- MOV BH,0
- MOV AL,BA0BF[BX]
- MOV BA0AA,AL
- MOV AL,BA0NL
- CMP AL,BA0AA
- MOV AL,1
- JNZ $+4
- MOV AL,0
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP BW0117
- MOV AL,BA0ML
- TEST AL,AL
- JNZ $+5
- JMP IFA0118
- MOV AL,BA0CC
- CALL WNX
- IFA0118:
- MOV BX, OFFSET BA0CC
- MOV DX, OFFSET BA0F2
- CALL BWRITE
- INC BA0BP
- JMP TW0117
- BW0117:
- MOV AL,BA0ML
- TEST AL,AL
- JNZ $+5
- JMP IFA0119
- CALL SA0CR
- IFA0119:
- MOV AL,BA0UN
- TEST AL,AL
- JNZ $+5
- JMP IFA0120
- MOV BX, OFFSET BA0NL
- MOV DX, OFFSET BA0F2
- CALL BWRITE
- MOV BX, OFFSET BA0LF
- MOV DX, OFFSET BA0F2
- CALL BWRITE
- IFA0120:
- JMP TW0100
- BW0100:
- LOC88:
- CALL MSG
- DB 'TINCMP CO'
- CALL MSG
- DB 'MPILATION'
- CALL MSG
- DB ' FINISHED'
- CALL SA0CR
- MOV DX, OFFSET BA0F1
- CALL CLOSEIO
- MOV DX, OFFSET BA0F2
- CALL CLOSEIO
- CALL ENDING
- MOV CL,0
- INT 224
- HLTSA0GC: MOV BX, OFFSET BA0CC
- MOV DX, OFFSET BA0F1
- CALL BREAD
- 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 IFA0121
- JMP LOC88
- IFA0121:
- MOV AL,BA0CC
- CMP AL,BA0EF
- MOV AL,1
- JZ $+4
- MOV AL,0
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0122
- JMP LOC88
- IFA0122:
- RET
- SA0SD: MOV AX,WA0TU
- CMP AX,WA000
- LAHF
- ROL AH,1
- AND AH,1
- MOV BA0AA,AH
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0123
- MOV BA0BB,1
- MOV AX,WA0TU
- NEG AX
- MOV WA0TU,AX
- JMP IFA0124
- IFA0123:
- MOV BA0BB,0
- IFA0124:
- MOV AX,WA000
- CMP AX,WA0TU
- MOV AL,1
- JZ $+4
- MOV AL,0
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0125
- MOV AL,BYTE PTR BA0C1
- MOV BA0ND,AL
- MOV BL,BA0C0
- MOV BH,0
- MOV AL,BA0ZR
- MOV BA0DS[BX],AL
- JMP IFA0126
- IFA0125:
- MOV AL,BYTE PTR BA0C0
- MOV BA0ND,AL
- TW0127: MOV AX,WA000
- CMP AX,WA0TU
- LAHF
- ROL AH,1
- AND AH,1
- MOV BA0AA,AH
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP BW0127
- MOV AX,WA0TU
- MOV CX,WA010
- CWD
- JCXZ $+4
- IDIV CX
- MOV WA0YY,AX
- MOV AX,WA010
- IMUL WA0YY
- MOV WA0AA,AX
- MOV AX,WA0TU
- SUB AX,WA0AA
- MOV WA0XX,AX
- MOV BX,WA0YY
- MOV WA0TU,BX
- MOV AL,BYTE PTR WA0XX
- MOV BA0AA,AL
- MOV AL,BA0ZR
- ADD AL,BA0AA
- MOV BA0AA,AL
- MOV BL,BA0ND
- MOV BH,0
- MOV AL,BA0AA
- MOV BA0DS[BX],AL
- INC BA0ND
- JMP TW0127
- BW0127:
- IFA0126:
- MOV BL,BA0ND
- MOV BH,0
- MOV AL,BA0OR
- MOV BA0DS[BX],AL
- MOV AL,BA0BB
- ADD AL,BA0ND
- MOV BA0ND,AL
- RET
- SA0WN: CALL SA0SD
- TW0128: MOV BH,0
- MOV BL,BA0ND
- MOV WA0AA,BX
- 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 BW0128
- DEC BA0ND
- MOV BL,BA0ND
- MOV BH,0
- MOV AL,BA0DS[BX]
- MOV BA0AA,AL
- MOV BX, OFFSET BA0AA
- MOV DX, OFFSET BA0F2
- CALL BWRITE
- JMP TW0128
- BW0128:
- RET
- SA0PN: CALL SA0SD
- TW0129: MOV BH,0
- MOV BL,BA0ND
- MOV WA0AA,BX
- 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 BW0129
- DEC BA0ND
- MOV BL,BA0ND
- MOV BH,0
- MOV AL,BA0DS[BX]
- MOV BA0AA,AL
- MOV AL,BA0AA
- CALL WNX
- JMP TW0129
- BW0129:
- MOV AL,BA0BL
- CALL WNX
- RET
- SA0CD: MOV AL,BA0ZR
- CMP AL,BA0AA
- MOV AL,0
- JNBE $+4
- MOV AL,1
- MOV BA0BB,AL
- MOV AL,BA0AA
- CMP AL,BA0C9
- MOV AL,0
- JNBE $+4
- MOV AL,1
- MOV BA0CC,AL
- MOV AL,BA0BB
- AND AL,BA0CC
- MOV BA0BB,AL
- MOV AL,BA0BB
- TEST AL,AL
- JNZ $+5
- JMP IFA0130
- MOV AL,BA0AA
- SUB AL,BA0ZR
- MOV BA0AA,AL
- RET
- IFA0130:
- MOV AL,BYTE PTR BA0C0
- MOV BA0AA,AL
- RET
- SA0CH: MOV AL,BA0ZR
- CMP AL,BA0AA
- MOV AL,0
- JNBE $+4
- MOV AL,1
- MOV BA0BB,AL
- MOV AL,BA0AA
- CMP AL,BA0C9
- MOV AL,0
- JNBE $+4
- MOV AL,1
- MOV BA0CC,AL
- MOV AL,BA0BB
- AND AL,BA0CC
- MOV BA0BB,AL
- MOV AL,BA0BB
- TEST AL,AL
- JNZ $+5
- JMP IFA0131
- MOV AL,BA0AA
- SUB AL,BA0ZR
- MOV BA0AA,AL
- RET
- IFA0131:
- MOV AL,BA0HA
- CMP AL,BA0AA
- MOV AL,0
- JNBE $+4
- MOV AL,1
- MOV BA0BB,AL
- MOV AL,BA0AA
- CMP AL,BA0HF
- MOV AL,0
- JNBE $+4
- MOV AL,1
- MOV BA0CC,AL
- MOV AL,BA0BB
- AND AL,BA0CC
- MOV BA0BB,AL
- MOV AL,BA0BB
- TEST AL,AL
- JNZ $+5
- JMP IFA0132
- MOV AL,BA0AA
- SUB AL,BA0HA
- MOV BA0AA,AL
- MOV AL,BA0CX
- ADD AL,BA0AA
- MOV BA0AA,AL
- RET
- IFA0132:
- MOV AL,BYTE PTR BA0C0
- MOV BA0AA,AL
- RET
- SA0IN: MOV WA0LM,8920
- MOV WA000,0
- MOV WA001,1
- MOV WA010,10
- MOV WA009,9
- MOV BA0C0,0
- MOV BA0C1,1
- MOV BA0C2,2
- MOV BA0C3,3
- MOV BA0EF,KA0EF
- MOV BA0C4,40
- MOV BA0C8,80
- MOV WA016,16
- MOV BA0SP,0
- MOV BA0C9,'9'
- MOV BA0ZR,'0'
- MOV BA0BL,' '
- MOV BA0HF,'F'
- MOV BA0HA,'A'
- MOV BA0CX,10
- MOV BX,WA001
- MOV WA0BC,BX
- MOV BA0TR,'R'
- MOV DX, OFFSET BA0F1
- CALL CLOSEIO
- MOV AL,1
- MOV BX, OFFSET WA0BC
- CALL ATTACH
- MOV DX,OFFSET BA0F1
- MOV BX,OFFSET BA0TR
- MOV SI,OFFSET WA0BC
- CALL OPENIO
- MOV BA0TR,'W'
- INC WA0BC
- MOV DX, OFFSET BA0F2
- CALL CLOSEIO
- MOV AL,2
- MOV BX, OFFSET WA0BC
- CALL ATTACH
- MOV DX,OFFSET BA0F2
- MOV BX,OFFSET BA0TR
- MOV SI,OFFSET WA0BC
- CALL OPENIO
- MOV BX, OFFSET BA0AA
- MOV DX, OFFSET BA0F1
- CALL BREAD
- MOV BA0OT,'T'
- MOV BA0UT,0
- MOV BA0BB,'X'
- MOV AL,BA0BB
- CMP AL,BA0AA
- MOV AL,1
- JNZ $+4
- MOV AL,0
- MOV BA0UN,AL
- MOV BX, OFFSET BA0RB
- MOV DX, OFFSET BA0F1
- CALL BREAD
- MOV BX, OFFSET BA0RC
- MOV DX, OFFSET BA0F1
- CALL BREAD
- MOV BX, OFFSET BA0SF
- MOV DX, OFFSET BA0F1
- CALL BREAD
- MOV BX, OFFSET BA0MF
- MOV DX, OFFSET BA0F1
- CALL BREAD
- MOV BA0BB,'X'
- MOV AL,BA0MF
- CMP AL,BA0BB
- MOV AL,1
- JZ $+4
- MOV AL,0
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0133
- MOV AL,BYTE PTR BA0C0
- MOV BA0UO,AL
- JMP IFA0134
- IFA0133:
- MOV AL,BYTE PTR BA0C1
- MOV BA0UO,AL
- IFA0134:
- MOV BA0OP,'P'
- MOV BA0OE,'@'
- MOV BA0OD,'V'
- MOV BA0OB,'!'
- MOV BA0OS,'S'
- MOV BA0OH,'H'
- MOV BA0ON,'N'
- MOV BA0OL,'L'
- MOV BA0OC,'C'
- MOV BA0OA,'+'
- MOV BA0OR,'-'
- MOV BA0OM,'*'
- MOV BX, OFFSET BA0OG
- MOV DX, OFFSET BA0F1
- CALL BREAD
- MOV BA0AA,'X'
- MOV AL,BA0AA
- CMP AL,BA0OG
- MOV AL,1
- JZ $+4
- MOV AL,0
- MOV BA0BB,AL
- MOV AL,BA0BB
- TEST AL,AL
- JNZ $+5
- JMP IFA0135
- MOV BA0UG,0
- JMP IFA0136
- IFA0135:
- MOV BA0UG,1
- IFA0136:
- MOV BX, OFFSET BA0CC
- MOV DX, OFFSET BA0F1
- CALL BREAD
- MOV AL,BA0CC
- CMP AL,BA0NL
- MOV AL,1
- JNZ $+4
- MOV AL,0
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0137
- CALL MSG
- DB 'FLAG LINE'
- MOV AL,1
- CALL STOP
- IFA0137:
- MOV WA0UU,100
- RET
- SA0RM: MOV BX,WA000
- MOV WA0II,BX
- MOV BH,0
- MOV BL,BA0C0
- MOV WA0NM,BX
- MOV BA0MM,127
- TW0138: MOV BX, OFFSET BA0CC
- MOV DX, OFFSET BA0F1
- CALL BREAD
- 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 BW0138
- MOV AL,BA0CC
- MOV ERASER,AL
- JMP XA0140
- RB 0-3
- A0U139: MOV AL,BA0OE
- CMP AL,ERASER
- JZ $+5
- JMP A0U141
- MOV BX, OFFSET BA0CC
- MOV DX, OFFSET BA0F1
- CALL BREAD
- JMP LOC77
- JMP XA0140
- RB 0-0
- A0U141: MOV AL,BA0RB
- CMP AL,ERASER
- JZ $+5
- JMP A0U142
- MOV BX,WA0NM
- SHL BX,1
- MOV AX,WA0II
- MOV WA0LP[BX],AX
- INC WA0NM
- MOV BA0ML,0
- JMP XA0140
- RB 0-0
- A0U142: MOV AL,BA0NL
- CMP AL,ERASER
- JZ $+5
- JMP A0U143
- JMP XA0140
- RB 0-0
- A0U143: MOV AL,BA0LF
- CMP AL,ERASER
- JZ $+5
- JMP A0U144
- JMP XA0140
- RB 0-0
- A0U144: MOV AL,BA0RC
- CMP AL,ERASER
- JZ $+5
- JMP A0U145
- MOV BX,WA0II
- MOV AL,BA0RC
- MOV BA0LS[BX],AL
- INC WA0II
- MOV AL,BA0ML
- CMP AL,BA0MM
- LAHF
- AND AH,1
- MOV BA0AA,AH
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0146
- MOV AL,BYTE PTR BA0ML
- MOV BA0MM,AL
- IFA0146:
- TW0147: MOV BX, OFFSET BA0CC
- MOV DX, OFFSET BA0F1
- CALL BREAD
- MOV AL,BA0LF
- CMP AL,BA0CC
- MOV AL,1
- JNZ $+4
- MOV AL,0
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP BW0147
- JMP TW0147
- BW0147:
- JMP XA0140
- RB 0-0
- A0U145: MOV AL,BA0OG
- CMP AL,ERASER
- JZ $+5
- JMP A0U148
- MOV AL,BA0UG
- TEST AL,AL
- JNZ $+5
- JMP IFA0149
- JMP IFA0150
- IFA0149:
- JMP LOC77
- IFA0150:
- JMP XA0140
- RB 0-0
- A0U148:
- LOC77:
- MOV BX,WA0II
- MOV AL,BA0CC
- MOV BA0LS[BX],AL
- INC WA0II
- MOV AX,WA0LM
- CMP AX,WA0II
- LAHF
- ROL AH,1
- AND AH,1
- MOV BA0AA,AH
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0151
- CALL MSG
- DB 'MACMEMXST'
- CALL SA0CR
- MOV DX, OFFSET BA0F1
- CALL CLOSEIO
- MOV AL,5
- CALL STOP
- IFA0151:
- INC BA0ML
- XA0140:
- JMP TW0138
- BW0138:
- MOV AL,BA0EF
- CMP AL,BA0CC
- MOV AL,1
- JNZ $+4
- MOV AL,0
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0152
- CALL MSG
- DB 'DEFN READ'
- MOV AL,2
- CALL STOP
- IFA0152:
- MOV DX, OFFSET BA0F1
- CALL CLOSEIO
- MOV WA0BC,3
- MOV AL,3
- MOV BX, OFFSET WA0BC
- CALL ATTACH
- MOV BA0TR,'R'
- MOV DX,OFFSET BA0F1
- MOV BX,OFFSET BA0TR
- MOV SI,OFFSET WA0BC
- CALL OPENIO
- MOV BX,WA0II
- MOV WA0ED,BX
- CALL MSG
- DB 'LOADED...'
- MOV BX,WA0II
- MOV WA0TU,BX
- CALL SA0PN
- CALL MSG
- DB '.BYTES FO'
- CALL MSG
- DB 'R DEFINES'
- CALL SA0CR
- MOV BX,WA0NM
- SHL BX,1
- MOV AX,WA0II
- MOV WA0LP[BX],AX
- MOV BX,WA0NM
- MOV WA0TU,BX
- CALL SA0PN
- CALL MSG
- DB '.MACROS..'
- MOV BH,0
- MOV BL,BA0MM
- MOV WA0TU,BX
- CALL SA0PN
- CALL MSG
- DB ' MIN LEN.'
- CALL SA0CR
- RET
- SA0CR: MOV AL,BA0NL
- CALL WNX
- MOV AL,BA0LF
- CALL WNX
- RET
- SA0DM: MOV AX,WA0JJ
- ADD AX,WA001
- MOV WA0MP,AX
- INC WA0NM
- MOV BX,WA0NM
- SHL BX,1
- MOV AX,WA0LP[BX]
- MOV WA0DP,AX
- TW0153: MOV AX,WA0MP
- CMP AX,WA0DP
- LAHF
- ROL AH,1
- AND AH,1
- MOV BA0AA,AH
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP BW0153
- MOV BX,WA0MP
- MOV AL,BA0LS[BX]
- MOV BA0AA,AL
- MOV AL,BA0UO
- TEST AL,AL
- JNZ $+5
- JMP IFA0154
- MOV AL,BA0AA
- CMP AL,BA0MF
- MOV AL,1
- JZ $+4
- MOV AL,0
- MOV BA0AA,AL
- JMP IFA0155
- IFA0154:
- MOV AL,BYTE PTR BA0C0
- MOV BA0AA,AL
- IFA0155:
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0156
- INC WA0MP
- MOV BX,WA0MP
- MOV AL,BA0LS[BX]
- MOV BA0O1,AL
- INC WA0MP
- MOV BX,WA0MP
- MOV AL,BA0LS[BX]
- MOV BA0AA,AL
- MOV AL,BYTE PTR BA0AA
- MOV BA0O2,AL
- CALL SA0CD
- MOV AL,BYTE PTR BA0AA
- MOV BA0DG,AL
- INC WA0MP
- MOV BX,WA0MP
- MOV AL,BA0LS[BX]
- MOV BA0O3,AL
- MOV AL,BA0UT
- TEST AL,AL
- JNZ $+5
- JMP IFA0157
- MOV AL,BA0O1
- CALL WNX
- MOV AL,BA0O2
- CALL WNX
- MOV AL,BA0O3
- CALL WNX
- IFA0157:
- MOV AL,BA0O1
- MOV ERASER,AL
- JMP XA0159
- RB 0-3
- A0U158: MOV AL,BA0OP
- CMP AL,ERASER
- JZ $+5
- JMP A0U160
- MOV BL,BA0DG
- MOV BH,0
- SHL BX,1
- MOV AX,WA0PR[BX]
- MOV WA0TU,AX
- JMP XA0159
- RB 0-0
- A0U160: MOV AL,BA0OD
- CMP AL,ERASER
- JZ $+5
- JMP A0U161
- MOV BL,BA0DG
- MOV BH,0
- SHL BX,1
- MOV AX,WA0PR[BX]
- MOV WA0AA,AX
- MOV AL,BYTE PTR WA0AA
- MOV BA0AA,AL
- CALL SA0CD
- MOV BH,0
- MOV BL,BA0AA
- MOV WA0TU,BX
- JMP XA0159
- RB 0-0
- A0U161: MOV AL,BA0OB
- CMP AL,ERASER
- JZ $+5
- JMP A0U162
- MOV BL,BA0SP
- MOV BH,0
- SHL BX,1
- MOV AX,WA0SS[BX]
- MOV WA0TU,AX
- MOV AL,BA0SP
- CMP AL,BA0C0
- MOV AL,0
- JNBE $+4
- MOV AL,1
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0163
- CALL MSG
- DB 'S STACKER'
- CALL SA0CR
- MOV AL,BYTE PTR BA0C1
- MOV BA0SP,AL
- IFA0163:
- DEC BA0SP
- JMP XA0159
- RB 0-0
- A0U162: MOV AL,BA0OS
- CMP AL,ERASER
- JZ $+5
- JMP A0U164
- MOV BL,BA0SP
- MOV BH,0
- SHL BX,1
- MOV AX,WA0SS[BX]
- MOV WA0TU,AX
- JMP XA0159
- RB 0-0
- A0U164: MOV AL,BA0OH
- CMP AL,ERASER
- JZ $+5
- JMP A0U165
- MOV AL,BYTE PTR BA0O2
- MOV BA0AA,AL
- CALL SA0CH
- MOV BH,0
- MOV BL,BA0AA
- MOV WA0AA,BX
- MOV AX,WA0AA
- IMUL WA016
- MOV WA0AA,AX
- MOV AL,BYTE PTR BA0O3
- MOV BA0AA,AL
- CALL SA0CH
- MOV BH,0
- MOV BL,BA0AA
- MOV WA0BB,BX
- MOV AX,WA0AA
- ADD AX,WA0BB
- MOV WA0TU,AX
- MOV AL,BYTE PTR BA0OC
- MOV BA0O3,AL
- JMP XA0159
- RB 0-0
- A0U165: MOV AL,BA0OL
- CMP AL,ERASER
- JZ $+5
- JMP A0U166
- MOV BH,0
- MOV BL,BA0O2
- MOV WA0TU,BX
- JMP XA0159
- RB 0-0
- A0U166: MOV AL,BA0ON
- CMP AL,ERASER
- JZ $+5
- JMP A0U167
- MOV AL,BYTE PTR BA0O2
- MOV BA0AA,AL
- CALL SA0CD
- MOV BH,0
- MOV BL,BA0AA
- MOV WA0TU,BX
- JMP XA0159
- RB 0-0
- A0U167: MOV AL,BA0OT
- CMP AL,ERASER
- JZ $+5
- JMP A0U168
- MOV BA0UT,1
- JMP XA0159
- RB 0-0
- A0U168:
- MOV BX,WA0UU
- MOV WA0TU,BX
- INC WA0UU
- XA0159:
- MOV AL,BA0UT
- TEST AL,AL
- JNZ $+5
- JMP IFA0169
- MOV BX,WA0TU
- MOV WA0II,BX
- CALL SA0PN
- MOV BL,BA0SP
- MOV BH,0
- SHL BX,1
- MOV AX,WA0SS[BX]
- MOV WA0TU,AX
- CALL SA0PN
- MOV BH,0
- MOV BL,BA0SP
- MOV WA0TU,BX
- CALL SA0PN
- MOV BX,WA0II
- MOV WA0TU,BX
- CALL SA0CR
- IFA0169:
- MOV AL,BA0O3
- MOV ERASER,AL
- JMP XA0171
- RB 0-3
- A0U170: MOV AL,BA0OC
- CMP AL,ERASER
- JZ $+5
- JMP A0U172
- MOV AL,BYTE PTR WA0TU
- MOV BA0AA,AL
- MOV BX, OFFSET BA0AA
- MOV DX, OFFSET BA0F2
- CALL BWRITE
- JMP XA0171
- RB 0-0
- A0U172: MOV AL,BA0OS
- CMP AL,ERASER
- JZ $+5
- JMP A0U173
- INC BA0SP
- MOV AL,BA0C4
- CMP AL,BA0SP
- MOV AL,0
- JNBE $+4
- MOV AL,1
- MOV BA0AA,AL
- MOV AL,BA0AA
- TEST AL,AL
- JNZ $+5
- JMP IFA0174
- CALL MSG
- DB 'S OVERFLO'
- CALL SA0CR
- MOV AL,BYTE PTR BA0C4
- MOV BA0SP,AL
- IFA0174:
- MOV BL,BA0SP
- MOV BH,0
- SHL BX,1
- MOV AX,WA0TU
- MOV WA0SS[BX],AX
- JMP XA0171
- RB 0-0
- A0U173: MOV AL,BA0OP
- CMP AL,ERASER
- JZ $+5
- JMP A0U175
- MOV BL,BA0DG
- MOV BH,0
- SHL BX,1
- MOV AX,WA0TU
- MOV WA0PR[BX],AX
- JMP XA0171
- RB 0-0
- A0U175: MOV AL,BA0OA
- CMP AL,ERASER
- JZ $+5
- JMP A0U176
- MOV BL,BA0SP
- MOV BH,0
- SHL BX,1
- MOV AX,WA0SS[BX]
- MOV WA0AA,AX
- MOV AX,WA0AA
- ADD AX,WA0TU
- MOV WA0AA,AX
- MOV BL,BA0SP
- MOV BH,0
- SHL BX,1
- MOV AX,WA0AA
- MOV WA0SS[BX],AX
- JMP XA0171
- RB 0-0
- A0U176: MOV AL,BA0OR
- CMP AL,ERASER
- JZ $+5
- JMP A0U177
- MOV BL,BA0SP
- MOV BH,0
- SHL BX,1
- MOV AX,WA0SS[BX]
- MOV WA0AA,AX
- MOV AX,WA0AA
- SUB AX,WA0TU
- MOV WA0AA,AX
- MOV BL,BA0SP
- MOV BH,0
- SHL BX,1
- MOV AX,WA0AA
- MOV WA0SS[BX],AX
- JMP XA0171
- RB 0-0
- A0U177: MOV AL,BA0OM
- CMP AL,ERASER
- JZ $+5
- JMP A0U178
- MOV BL,BA0SP
- MOV BH,0
- SHL BX,1
- MOV AX,WA0SS[BX]
- MOV WA0AA,AX
- MOV AX,WA0AA
- IMUL WA010
- MOV WA0AA,AX
- MOV AX,WA0AA
- ADD AX,WA0TU
- MOV WA0AA,AX
- MOV BL,BA0SP
- MOV BH,0
- SHL BX,1
- MOV AX,WA0AA
- MOV WA0SS[BX],AX
- JMP XA0171
- RB 0-0
- A0U178: MOV AL,BA0OH
- CMP AL,ERASER
- JZ $+5
- JMP A0U179
- MOV AX,WA0TU
- MOV BA0AA,AH
- MOV BA0BB,AL
- MOV BX, OFFSET BA0AA
- MOV DX, OFFSET BA0F2
- CALL BWRITE
- JMP XA0171
- RB 0-0
- A0U179:
- CALL SA0WN
- XA0171:
- JMP IFA0180
- IFA0156:
- MOV BX,WA0MP
- MOV AL,BA0LS[BX]
- MOV BA0AA,AL
- MOV AL,BA0UN
- TEST AL,AL
- JNZ $+5
- JMP IFA0181
- MOV AL,BA0RC
- CMP AL,BA0AA
- MOV AL,1
- JNZ $+4
- MOV AL,0
- MOV BA0BB,AL
- JMP IFA0182
- IFA0181:
- MOV AL,BYTE PTR BA0C1
- MOV BA0BB,AL
- IFA0182:
- MOV AL,BA0BB
- TEST AL,AL
- JNZ $+5
- JMP IFA0183
- MOV BX, OFFSET BA0AA
- MOV DX, OFFSET BA0F2
- CALL BWRITE
- JMP IFA0184
- IFA0183:
- MOV BX, OFFSET BA0NL
- MOV DX, OFFSET BA0F2
- CALL BWRITE
- MOV BX, OFFSET BA0LF
- MOV DX, OFFSET BA0F2
- CALL BWRITE
- IFA0184:
- IFA0180:
- INC WA0MP
- JMP TW0153
- BW0153:
- MOV BA0UT,0
- RET
- END START
-