home *** CD-ROM | disk | FTP | other *** search
- ; Disassembly of file :ASSIGN.COM
- ;
- ; Define common ASCII control codes.
- ;
- HT EQU 9
- LF EQU 10
- FF EQU 12
- CR EQU 13
- EOF EQU 26
- ;
- ; Define MSDOS/PCDOS functions.
- ;
- _SELDISK EQU 14
- _GETDISK EQU 25
- _GETVER EQU 48
- _TSR EQU 49
- _CLOSEH EQU 62
- _DEALLOC EQU 73
- _EXIT EQU 76
- _GETPSP EQU 98
- ;
- ; Macro to generate MSDOS/PCDOS calls.
- ;
- MSDOS MACRO name
- IFDEF &name
- MOV AH,&name
- ENDIF
- INT 21H
- ENDM
- ;
- ;
- ;
- Code_Seg SEGMENT PUBLIC
- ;
- ASSUME CS:Code_Seg,DS:Code_Seg
- ;
- ; ENV STUFF ...
- ;
- ORG 02CH
- L002CH: DW ?
- ;
- ORG 00100H
- L0100H: JMP L072BH
- L0103H: DB 01H,02H,03H,04H,05H,06H
- DB 07H,08H,09H,0AH,0BH,0CH
- DB 0DH,0EH,0FH,10H,11H,12H
- DB 13H,14H,15H,16H,17H,18H
- DB 19H,1AH
- L011DH: DB 0
- L011EH: DB 0
- L011FH: DW 0
- L0121H: DB 0
- ;
- L0122H: DW 0 ;INT 21H
- L0124H: DW 0
- ;
- L0126H: DW 0 ;INT 25H
- L0128H: DW 0
- ;
- L012AH: DW 0 ;INT 26H
- L012CH: DW 0
- ;
- L012EH: DW 0 ;INT 2FH
- L0130H: DW 0
- ;
- L0132H: DW 0
- L0134H: DW 0
- ;
- L0136H: DW 0
- ;
- L0138H: DW 9000H
- ;
- ; JUMP TABLE FOR INTERRUPT 21H
- ;
- L013AH: DW L0249H,024CH,024CH ;0,1,2
- DW 024CH,024CH,L024CH ;3
- DW L024CH,L024CH,L024CH ;6
- DW 024CH,024CH,024CH ;9
- DW 024CH,L0249H,L0534H ;0CH,0DH,0EH
- DW L0253H,L0253H,0253H ;0FH
- DW 0253H,0253H,0253H ;12H
- DW L0253H,L0253H,L0253H
- DW L0249H,0523H,0249H
- DW 0249H,0351H,L0249H
- DW L0249H,L0249H,L0249H
- DW 0253H,0253H,0253H
- DW 0253H,L0249H,L0249H
- DW L0253H,L0253H,0249H
- DW 0249H,0249H,0249H
- DW L0249H,L0249H,L0249H
- DW L0249H,0249H,0351H
- DW 0249H,0249H,L0249H
- DW L0351H,L0249H,L0249H
- DW 02AEH,02AEH,02AEH
- DW 02AEH,L02AEH,L0249H
- DW L0249H,L0249H,02AEH
- DW 0249H,02AEH,03A6H
- DW L0249H,L0249H,L0351H
- DW L0249H,0249H,0249H
- DW 044EH,0249H,L0249H
- DW L02AEH,L0249H,L0249H
- DW 0249H,0249H,0249H
- DW 0249H,L0249H,L04BBH
- DW L0249H,L0249H,0249H
- DW 02AEH,02AEH,0249H
- DW L0249H,L0249H,L0249H
- DW L046BH,0249H,0249H ;5EH,5FH,60H
- DW 0249H,03FEH,03FEH ;61H,62H,63H
- DW 03FEH,03FEH,03FEH
- DW 03FEH,024CH,024CH
- DW 02FEH ;6AH
- ;
- ;
- ; INTERRUPT 21H
- ;
- ;
- L0214H: MOV WORD PTR CS:[L0136H],0200H
- PUSH AX
- PUSH BX
- CMP AH,6CH
- JA L024CH ; exit to dos...
- MOV AL,AH
- CBW ;Convert byte (AL) to word (AX).
- SHL AX,1
- MOV BX,AX
- JMP WORD PTR CS:[BX]+offset L013AH ; jump on jump table..
- ;
- ; CRITICAL SECTION STUFF ...
- ;
- L022EH: CALL L0241H
- PUSH AX
- MOV AX,8008H
- INT 2AH
- POP AX
- RET
- ;
- L0239H: PUSH AX
- MOV AX,8108H
- INT 2AH
- POP AX
- RET
- ;
- L0241H: PUSH AX
- MOV AX,8908H
- INT 2AH
- POP AX
- RET
- ;
- L0249H: CALL L0241H
- ;
- L024CH: POP BX ; EXIT INT 21H
- POP AX
- JMP DWORD PTR CS:[L0122H]
- ;
- L0253H: MOV BX,DX
- MOV AL,BYTE PTR [BX]
- CMP AL,0FFH
- JNZ L0260H
- ADD BX,7
- MOV AL,BYTE PTR [BX]
- L0260H: OR AL,AL
- JNZ L0268H
- MOV AL,BYTE PTR CS:[L011DH]
- L0268H: CALL L022EH
- MOV BYTE PTR CS:[L011EH],AL
- CALL L05A2H
- MOV BYTE PTR [BX],AL
- MOV WORD PTR CS:[L011FH],BX
- POP BX
- POP AX
- POP WORD PTR CS:[L0132H]
- POP WORD PTR CS:[L0134H]
- CALL L0576H
- CALL DWORD PTR CS:[L0122H]
- PUSHF ;Push flag register.
- CALL L058AH
- PUSH AX
- PUSH BX
- MOV BX,WORD PTR CS:[L011FH]
- MOV AL,BYTE PTR CS:[L011EH]
- MOV BYTE PTR [BX],AL
- POP BX
- POP AX
- PUSH WORD PTR CS:[L0134H]
- PUSH WORD PTR CS:[L0132H]
- CALL L0239H
- IRET ;Return from interupt.
- ;
- L02AEH: MOV BX,DX
- CMP BYTE PTR [BX]+1,':'
- JNZ L024CH
- MOV AL,BYTE PTR [BX]
- CALL L022EH
- MOV BYTE PTR CS:[L011EH],AL
- CALL L05C4H
- MOV BYTE PTR [BX],AL
- MOV WORD PTR CS:[L011FH],BX
- POP BX
- POP AX
- POP WORD PTR CS:[L0132H]
- POP WORD PTR CS:[L0134H]
- CALL L0576H
- CALL DWORD PTR CS:[L0122H]
- PUSHF ;Push flag register.
- CALL L058AH
- PUSH AX
- PUSH BX
- MOV BX,WORD PTR CS:[L011FH]
- MOV AL,BYTE PTR CS:[L011EH]
- MOV BYTE PTR [BX],AL
- POP BX
- POP AX
- PUSH WORD PTR CS:[L0134H]
- PUSH WORD PTR CS:[L0132H]
- CALL L0239H
- IRET ;Return from interupt.
- L02FEH: MOV BX,SI
- CMP BYTE PTR [BX]+1,':'
- JZ L0309H
- JMP L024CH
- L0309H: MOV AL,BYTE PTR [BX]
- CALL L022EH
- MOV BYTE PTR CS:[L011EH],AL
- CALL L05C4H
- MOV BYTE PTR [BX],AL
- MOV WORD PTR CS:[L011FH],BX
- POP BX
- POP AX
- POP WORD PTR CS:[L0132H]
- POP WORD PTR CS:[L0134H]
- CALL L0576H
- CALL DWORD PTR CS:[L0122H]
- PUSHF ;Push flag register.
- CALL L058AH
- PUSH AX
- PUSH BX
- MOV BX,WORD PTR CS:[L011FH]
- MOV AL,BYTE PTR CS:[L011EH]
- MOV BYTE PTR [BX],AL
- POP BX
- POP AX
- PUSH WORD PTR CS:[L0134H]
- PUSH WORD PTR CS:[L0132H]
- CALL L0239H
- IRET ;Return from interupt.
- ;
- L0351H: OR DL,DL
- JNZ L0358H
- JMP L024CH
- L0358H: MOV AL,DL
- CALL L022EH
- MOV BYTE PTR CS:[L011EH],AL
- CALL L05A2H
- MOV DL,AL
- POP BX
- POP AX
- MOV BYTE PTR CS:[L0138H],AH
- POP WORD PTR CS:[L0132H]
- POP WORD PTR CS:[L0134H]
- CALL L0576H
- CALL DWORD PTR CS:[L0122H]
- PUSHF ;Push flag register.
- CALL L058AH
- CMP BYTE PTR CS:[L0138H],'6'
- JZ L0398H
- CMP BYTE PTR CS:[L0138H],1CH
- JZ L0398H
- MOV DL,BYTE PTR CS:[L011EH]
- L0398H: PUSH WORD PTR CS:[L0134H]
- PUSH WORD PTR CS:[L0132H]
- CALL L0239H
- IRET ;Return from interupt.
- ;
- L03A6H: POP BX
- POP AX
- PUSH AX
- PUSH BX
- CMP AX,4404H
- JZ L03BEH
- CMP AX,4405H
- JZ L03BEH
- CMP AX,4408H
- JZ L03BEH
- CMP AX,4409H
- JNZ L03FBH
- L03BEH: OR BX,BX
- JZ L03FBH
- MOV AL,BL
- CALL L022EH
- MOV BYTE PTR CS:[L011EH],AL
- CALL L05A2H
- MOV BL,AL
- POP AX
- POP AX
- POP WORD PTR CS:[L0132H]
- POP WORD PTR CS:[L0134H]
- CALL L0576H
- CALL DWORD PTR CS:[L0122H]
- PUSHF ;Push flag register.
- CALL L058AH
- MOV BL,BYTE PTR CS:[L011EH]
- PUSH WORD PTR CS:[L0134H]
- PUSH WORD PTR CS:[L0132H]
- CALL L0239H
- IRET ;Return from interupt.
- L03FBH: JMP L024CH
- ;
- L03FEH: POP BX
- POP AX
- PUSH AX
- PUSH BX
- CMP AH,69H
- JNZ L044AH
- OR BL,BL
- JZ L0445H
- MOV AL,BL
- CALL L022EH
- MOV BYTE PTR CS:[L011EH],AL
- CALL L05A2H
- MOV BL,AL
- POP AX
- POP AX
- POP WORD PTR CS:[L0132H]
- POP WORD PTR CS:[L0134H]
- CALL L0576H
- CALL DWORD PTR CS:[L0122H]
- PUSHF ;Push flag register.
- CALL L058AH
- MOV BL,BYTE PTR CS:[L011EH]
- PUSH WORD PTR CS:[L0134H]
- PUSH WORD PTR CS:[L0132H]
- CALL L0239H
- JMP SHORT L0448H
- L0445H: JMP L024CH
- L0448H: JMP SHORT L044DH
- L044AH: JMP L024CH
- L044DH: IRET ;Return from interupt.
- ;
- L044EH: POP BX
- POP AX
- PUSH AX
- PUSH BX
- OR AL,AL
- JNZ L0468H
- MOV BX,DX
- CMP BYTE PTR [BX]+1,':'
- JNZ L0465H
- MOV AL,BYTE PTR [BX]
- CALL L05C4H
- MOV BYTE PTR [BX],AL
- L0465H: JMP L024CH
- L0468H: JMP L02AEH
- ;
- L046BH: MOV BX,SI
- CMP BYTE PTR [BX]+1,':'
- JNZ L0465H
- MOV AL,BYTE PTR [BX]
- CALL L022EH
- MOV BYTE PTR CS:[L011EH],AL
- CALL L05C4H
- MOV BYTE PTR [BX],AL
- MOV WORD PTR CS:[L011FH],BX
- POP BX
- POP AX
- POP WORD PTR CS:[L0132H]
- POP WORD PTR CS:[L0134H]
- CALL L0576H
- CALL DWORD PTR CS:[L0122H]
- PUSHF ;Push flag register.
- CALL L058AH
- PUSH AX
- PUSH BX
- MOV BX,WORD PTR CS:[L011FH]
- MOV AL,BYTE PTR CS:[L011EH]
- MOV BYTE PTR [BX],AL
- POP BX
- POP AX
- PUSH WORD PTR CS:[L0134H]
- PUSH WORD PTR CS:[L0132H]
- CALL L0239H
- IRET ;Return from interupt.
- ;
- L04BBH: MOV BX,DX
- MOV AX,WORD PTR [BX]
- CALL L022EH
- MOV BYTE PTR CS:[L011EH],AL
- MOV WORD PTR CS:[L011FH],BX
- CMP AH,':'
- JNZ L04D5H
- CALL L05C4H
- MOV BYTE PTR [BX],AL
- L04D5H: MOV AX,WORD PTR ES:[DI]
- MOV BYTE PTR CS:[L0121H],AL
- CMP AH,':'
- JNZ L04E7H
- CALL L05C4H
- MOV BYTE PTR ES:[DI],AL
- L04E7H: POP BX
- POP AX
- POP WORD PTR CS:[L0132H]
- POP WORD PTR CS:[L0134H]
- CALL L0576H
- CALL DWORD PTR CS:[L0122H]
- PUSHF ;Push flag register.
- CALL L058AH
- PUSH AX
- L0500H: PUSH BX
- MOV AL,BYTE PTR CS:[L0121H]
- MOV BYTE PTR ES:[DI],AL
- MOV BX,WORD PTR CS:[L011FH]
- MOV AL,BYTE PTR CS:[L011EH]
- MOV BYTE PTR [BX],AL
- POP BX
- POP AX
- PUSH WORD PTR CS:[L0134H]
- PUSH WORD PTR CS:[L0132H]
- CALL L0239H
- IRET ;Return from interupt.
- ;
- L0523H: CALL L0603H
- JNZ L052BH
- JMP L024CH
- L052BH: POP BX
- POP AX
- MOV AL,BYTE PTR CS:[L011DH]
- DEC AL
- IRET ;Return from interupt.
- ;
- ; FUCTION 0EH , SELECT DISK
- ;
- L0534H: POP BX
- POP AX
- MOV AL,DL
- INC AL
- CALL L022EH
- MOV BYTE PTR CS:[L011EH],AL
- CALL L05A2H
- DEC AL
- MOV DL,AL
- MOV BYTE PTR CS:[L0121H],AL
- PUSHF ;Push flag register.
- CALL DWORD PTR CS:[L0122H]
- PUSH AX
- MOV AH,19H
- PUSHF ;Push flag register.
- CALL DWORD PTR CS:[L0122H]
- MOV DL,BYTE PTR CS:[L011EH]
- DEC DL
- CMP AL,BYTE PTR CS:[L0121H]
- JNZ L0571H
- MOV AL,BYTE PTR CS:[L011EH]
- MOV BYTE PTR CS:[L011DH],AL
- L0571H: POP AX
- CALL L0239H
- IRET ;Return from interupt.
- ;
- L0576H: PUSH AX
- PUSH BP
- MOV BP,SP
- MOV AX,WORD PTR [BP]+6
- AND WORD PTR CS:[L0136H],AX
- AND WORD PTR [BP]+6,0FDFFH
- POP BP
- POP AX
- RET
- ;
- L058AH: PUSH AX
- PUSH BP
- MOV BP,SP
- MOV AX,WORD PTR CS:[L0136H]
- OR WORD PTR [BP]+6,AX
- POP BP
- POP AX
- RET
- ;
- L0598H: INC AL
- JZ L059FH
- CALL L05A2H
- L059FH: DEC AL
- RET
- ;
- L05A2H: CMP AL,EOF
- JA L05C3H
- CMP AL,0
- JNZ L05B2H
- MOV AL,BYTE PTR CS:[L011DH]
- MOV BYTE PTR CS:[L011EH],AL
- L05B2H: PUSH BX
- PUSH CX
- MOV CH,AH
- CBW ;Convert byte (AL) to word (AX).
- MOV BX,0102H
- ADD BX,AX
- MOV AL,BYTE PTR CS:[BX]
- MOV AH,CH
- POP CX
- POP BX
- L05C3H: RET
- ;
- L05C4H: CMP AL,'A'
- JC L05DDH
- CMP AL,'Z'
- JBE L05D4H
- CMP AL,'a'
- JC L05DDH
- CMP AL,'z'
- JA L05DDH
- L05D4H: OR AL,20H
- SUB AL,60H
- CALL L05A2H
- ADD AL,40H
- L05DDH: RET
- ;
- ;
- ;
- ;
- ; INTERRUPT 25H
- ;
- L05DEH: CALL L0598H
- JMP DWORD PTR CS:[L0126H]
- ;
- ; INTERRUPT 26H
- ;
- L05E6H: CALL L0598H
- JMP DWORD PTR CS:[L012AH]
- ;
- ; INTERRUPT 2FH
- ;
- L05EEH: CMP AH,6
- JZ L05F8H
- JMP DWORD PTR CS:[L012EH]
- L05F8H: CMP AL,1
- JA L0602H
- JNZ L0600H
- PUSH CS
- POP ES
- L0600H: MOV AL,0FFH
- L0602H: IRET ;Return from interupt.
- ;
- ;
- ;
- ;
- ;
- L0603H: PUSH SI
- PUSH AX
- L0605H: PUSH CX
- XOR AX,AX
- MOV SI,AX
- MOV CX,001AH
- L060DH: MOV AL,BYTE PTR CS:[SI]+0103H
- INC SI
- CMP AX,SI
- JNZ L061BH
- LOOP L060DH ;Dec CX, loop if CX<>0.
- XOR AX,AX
- L061BH: POP CX
- POP AX
- POP SI
- RET
- L061FH: DB 0
- L0620H: DB 0
- L0621H: DB 0
- L0622H: DB 0,0
- L0624H: DB 'n'
- L0625H: DB 'n'
- L0626H: DB 0,0
- L0628H: DB 0
- L0629H: DB 0,0
- L062BH: DB 0,0
- L062DH: DB 0,0
- L062FH: DB 0,0
- ;
- ;
- L0631H: DW 0 ; LIST OF LIST SAVE_BX
- L0633H: DW 0 ; " SAVE_ES
- ;
- ;
- DB 0
- DB 0,0
- DB 0
- L0639H: DB '@',6,1,3,';+=',0
- DB 1,'I',6,2,'S',6,'l'
- DB 6,10H,' ',2,0,0FEH
- DB 6,'x',6,0,0,0,0,2
- DB 0
- L0657H: DB 0FEH,6,0,0,3
- L065CH: DB '/STATUS',0
- L0664H: DB '/STA',0
- L0669H: DB '/S',0,0,0,0,0,0FEH
- DB 6,0,0,1,'/?',0
- L0678H: DB 3,0,0,EOF,'A',0CAH
- DB 6,'B',0CCH,6,'C',0CEH
- DB 6,'D',0D0H,6,'E',0D2H
- DB 6,'F',0D4H,6,'G',0D6H
- DB 6,'H',0D8H,6,'I',0DAH
- DB 6,'J',0DCH,6,'K',0DEH
- DB 6,'L',0E0H,6,'M',0E2H
- DB 6,'N',0E4H,6
- L06A6H: DB 'O',0E6H,6
- L06A9H: DB 'P',0E8H,6,'Q',0EAH
- DB 6,'R',0ECH,6,'S',0EEH
- DB 6,'T',0F0H,6,'U',0F2H
- DB 6,'V',0F4H,6,'W',0F6H
- DB 6,'X',0F8H,6,'Y',0FAH
- DB 6
- L06C7H: DB 'Z',0FCH,6,'A',0,'B'
- DB 0,'C',0,'D',0,'E',0
- DB 'F',0,'G',0,'H',0
- DB 'I',0,'J',0,'K',0
- DB 'L',0,'M',0,'N',0
- DB 'O',0,'P',0,'Q',0
- DB 'R',0,'S',0,'T',0
- DB 'U',0,'V',0,'W',0
- DB 'X',0,'Y',0,'Z',0
- L06FEH: DB 0
- L06FFH: DB 0
- L0700H: DB 0,0,0,0,0,0
- L0706H: DB 0BH,0
- L0708H: DB 0,0
- L070AH: DB 0,0,0,10H,'(',1,' '
- L0711H: DB 0,0
- L0713H: DB 0,0
- L0715H: DB 0BH,0,11H,7
- L0719H: DB 0,0,1,10H,0,1,' ',0BH
- DB 0,13H,7
- L0724H: DB 0,0,2,10H,0,1,' '
- ;
- ;
- ; INIT STUFF...
- ;
- ;
- L072BH: PUSH AX
- MOV AX,DS
- MOV WORD PTR [L0719H],AX
- MOV WORD PTR [L0724H],AX
- POP AX
- CALL L0B3FH
- JNC L0740H
- CALL L0C53H
- CALL L096FH
- L0740H: MOV AX,WORD PTR [L002CH]
- OR AX,AX
- JZ L074FH
- PUSH ES
- MOV ES,AX
- MSDOS _DEALLOC ;Free allocated memory.
- POP ES
- L074FH: PUSH ES
- MOV AH,52H ; LIST OF LIST ....
- MSDOS
- MOV WORD PTR [L0631H],BX
- MOV WORD PTR [L0633H],ES
- POP ES
- CLD ;Set forward direction flag.
- MOV DI,OFFSET L0639H
- MOV SI,0081H
- XOR CX,CX
- XOR DX,DX
- MOV WORD PTR [L062DH],SI
- MOV WORD PTR [L062FH],SI
- CALL L1422H
- MOV WORD PTR [L0626H],AX
- L0776H: CMP AX,00H
- JNZ L078AH
- CALL L081AH
- MOV WORD PTR [L062FH],SI
- CALL L1422H
- MOV WORD PTR [L0626H],AX
- JMP SHORT L0776H
- L078AH: CMP BYTE PTR [L0622H],0
- JZ L079AH
- CALL L08CDH
- MOV AX,000H
- CALL L096FH
- L079AH: CMP AX,0FFFFH
- JZ L07AAH
- PUSH AX
- MOV AX,WORD PTR [L062FH]
- MOV WORD PTR [L062DH],AX
- POP AX
- CALL L0974H
- L07AAH: CMP BYTE PTR [L0625H],'y'
- JNZ L07E4H
- CMP AX,00H
- JLE L07BCH
- MOV AX,000AH
- CALL L0974H
- L07BCH: XOR AX,AX
- MOV AL,BYTE PTR [L0620H]
- MOV BX,0002H
- DIV BL
- CMP AH,0
- JZ L07D1H
- MOV AX,000AH
- CALL L0974H
- L07D1H: CMP BYTE PTR [L0624H],'n'
- JNZ L07E4H
- CMP BYTE PTR [L0621H],1
- JNZ L07E4H
- MOV BYTE PTR [L061FH],1
- L07E4H: CMP BYTE PTR [L061FH],0
- JNZ L07F3H
- CALL L09BDH
- CALL L0A00H
- JMP SHORT L07F9H
- L07F3H: CALL L091DH
- CALL L096FH
- ;
- L07F9H:
- MOV AH,19H
- INT 21H ;Get current disk into (AL).
- PUSH AX
- MOV AX,0601H
- INT 2FH
- MOV SI,OFFSET L0103H
- MOV DI,SI
- MOV CX,001AH
- CLI ;Disable interupts.
- REPZ MOVSB ;Move byt, (SI)+- to (DI)+-.
- STI ;Enable interupts.
- POP DX
- MSDOS _SELDISK ;Select disk in (AL).
- CALL L096FH
- INT 20H
- RET
- ;
- L081AH: XOR CX,CX
- XOR AX,AX
- MOV AL,BYTE PTR [L0620H]
- MOV BX,0002H
- DIV BL
- CMP BYTE PTR [L06FEH],2
- JNZ L0850H
- CMP AH,0
- JNZ L0850H
- INC BYTE PTR [L0620H]
- MOV BYTE PTR [L0625H],79H
- PUSH AX
- MOV AL,BYTE PTR [L06FFH]
- MOV BYTE PTR [L0628H],AL
- CALL L08ECH
- CBW ;Convert byte (AL) to word (AX).
- MOV BX,0102H
- ADD BX,AX
- MOV WORD PTR [L0629H],BX
- POP AX
- L0850H: CMP BYTE PTR [L06FEH],2
- JNZ L087FH
- CMP AH,0
- JZ L087FH
- INC BYTE PTR [L0620H]
- MOV BYTE PTR [L0625H],79H
- PUSH AX
- MOV AL,BYTE PTR [L06FFH]
- MOV BYTE PTR [L0628H],AL
- CALL L08ECH ; DO LIST OF LIST
- MOV BX,WORD PTR [L0629H]
- MOV BYTE PTR [BX],AL
- MOV BYTE PTR [L0624H],79H
- POP AX
- MOV WORD PTR [L062DH],SI
- L087FH: CMP WORD PTR [L0700H],0
- JZ L08CCH
- CMP WORD PTR [L0700H],065CH
- JZ L089EH
- CMP WORD PTR [L0700H],0664H
- JZ L089EH
- CMP WORD PTR [L0700H],0669H
- JNZ L08BDH
- L089EH: MOV BYTE PTR [L0621H],1
- MOV BYTE PTR [L0625H],79H
- MOV BYTE PTR [L065CH],20H
- MOV BYTE PTR [L0664H],20H
- MOV BYTE PTR [L0669H],20H
- MOV WORD PTR [L062DH],SI
- JMP SHORT L08CCH
- L08BDH: CMP WORD PTR [L0700H],0675H
- JNZ L08CCH
- MOV BYTE PTR [L0622H],1
- JMP SHORT L08CCH
- L08CCH: RET
- ;
- L08CDH: MOV AX,012CH
- MOV BX,0001H
- MOV CX,00H
- MOV SI,000H
- MOV DI,000H
- MOV DL,0
- MOV DH,0FFH
- L08E0H: CALL L0C53H
- CMP AX,0131H
- JZ L08EBH
- INC AX
- JMP SHORT L08E0H
- L08EBH: RET
- ;
- ; DO THE LIST OF LIST....
- ;
- L08ECH: SUB AL,41H ; SUB ALPHA TO NUM, 41H-(A=41H)=0
- JC L0917H ; ZEROED NUM FOR DRIVE A...
- PUSH ES
- PUSH BX
- PUSH AX
- LES BX,DWORD PTR [L0631H]
- CMP AL,BYTE PTR ES:[BX]+33 ; NUM OF AVAIL DRIVE LETTERS...
- JNC L0917H
- LES BX,DWORD PTR ES:[BX]+22 ; PRT TO ARRAY OF CURRENT DIR
- PUSH BX ; STUCTURES... (CDS)
- MOV BL,58H
- MUL BL
- POP BX
- ADD BX,AX
- TEST WORD PTR ES:[BX]+67,4000H ; IN CDS, DRIVE ATTRIBUTES
- JZ L0917H ; BIT 15= USED IN NETWORK REDIRECTER
- POP AX ; 14= PHYSICAL DRIVE
- POP BX ; 13= JOIN'ed
- POP ES ; 12= SUBST'ed
- INC AL
- RET
- L0917H: MOV AX,000AH
- CALL L0974H
- ;
- L091DH: PUSH ES
- PUSH ES
- POP AX
- MOV WORD PTR [L062BH],AX
- MOV AX,0601H
- INT 2FH
- MOV CL,1
- MOV BX,0103H
- L092DH: CMP CL,EOF
- JA L096DH
- CMP CL,BYTE PTR ES:[BX]
- JZ L0968H
- PUSH BX
- PUSH CX
- MOV AL,BYTE PTR ES:[BX]
- PUSH ES
- MOV BX,WORD PTR [L062BH]
- MOV ES,BX
- ADD CL,40H
- ADD AL,40H
- MOV BYTE PTR [L0711H],CL
- MOV BYTE PTR [L0713H],AL
- MOV AX,0002H
- MOV BX,0001H
- MOV CX,0002H
- MOV SI,0715H
- MOV DI,0000H
- MOV DL,0
- MOV DH,0FFH
- CALL L0C53H
- POP ES
- POP CX
- POP BX
- L0968H: INC BX
- INC CL
- JMP SHORT L092DH
- L096DH: POP ES
- RET
- ;
- L096FH: MSDOS _EXIT ;Terminate a process.
- RET
- ;
- L0974H: PUSH AX
- MOV BYTE PTR [SI],0
- MOV DX,WORD PTR [L062DH]
- MOV WORD PTR [L0708H],DX
- MOV WORD PTR [L070AH],DS
- MOV BX,0002H
- MOV CX,0001H
- MOV SI,0706H
- MOV DL,0
- MOV DH,2
- CALL L0C53H
- POP AX
- CALL L096FH
- ;
- L0998H: PUSH AX
- PUSH BX
- PUSH ES
- MSDOS _GETPSP ;Get progrm segmnt prefix addr.
- MOV ES,BX
- MOV BX,WORD PTR ES:[L002CH]
- MOV ES,BX
- MSDOS _DEALLOC ;Free allocated memory.
- POP ES
- POP BX
- POP AX
- RET
- ;
- L09B0H: PUSH BX
- MOV BX,0004H
- L09B4H: MSDOS _CLOSEH ;Close a file handle.
- DEC BX
- JNS L09B4H
- POP BX
- RET
- ;
- L09BDH: MOV AX,3525H ;Get interupt vector.
- MSDOS
- MOV WORD PTR [L0126H],BX
- MOV WORD PTR [L0128H],ES
- MOV AX,3526H ;Get interupt vector.
- MSDOS
- MOV WORD PTR [L012AH],BX
- MOV WORD PTR [L012CH],ES
- MOV AX,352FH ;Get interupt vector.
- MSDOS
- MOV WORD PTR [L012EH],BX
- MOV WORD PTR [L0130H],ES
- MOV AX,3521H ;Get interupt vector.
- MSDOS
- MOV WORD PTR CS:[L0122H],BX
- MOV WORD PTR CS:[L0124H],ES
- MOV AX,0600H
- INT 2FH
- OR AL,AL
- JZ L09FFH
- CALL L07F9H
- L09FFH: RET
- ;
- L0A00H: MSDOS _GETDISK ;Get current disk into (AL).
- INC AL
- MOV BYTE PTR [L011DH],AL
- CALL L05A2H
- DEC AL
- MOV DL,AL
- MSDOS _SELDISK ;Select disk in (AL).
- MOV DX,OFFSET L05DEH
- MOV AX,2525H ;Set int vector (AL) to DS:DX
- MSDOS
- MOV DX,OFFSET L05E6H
- MOV AX,2526H ;Set int vector (AL) to DS:DX
- MSDOS
- MOV DX,OFFSET L05EEH
- MOV AX,252FH ;Set int vector (AL) to DS:DX
- MSDOS
- MOV DX,OFFSET L0214H
- MOV AX,2521H ;Set int vector (AL) to DS:DX
- MSDOS
- CALL L09B0H
- CALL L0998H
- MOV DX,0062H
- MSDOS _TSR ;Terminate and stay resident.
- RET
- L0A42H: DB 0,0
- L0A44H: DB 0,0
- L0A46H: DB 0,0
- L0A48H: DB 0,0
- L0A4AH: DB 0,0
- L0A4CH: DB 0,0,0FFH,0FFH,0FFH
- DB 0FFH
- L0A52H: DB 0,0
- L0A54H: DB 0,0
- L0A56H: DB 0,0
- L0A58H: DB 0,0,0FFH,0FFH,0FFH
- DB 0FFH
- L0A5EH: DB 0,0
- L0A60H: DB 0,0
- L0A62H: DB 0,0
- L0A64H: DB 0,0,0FFH,0FFH,0FFH
- DB 0FFH
- L0A6AH: DB 0FFH,0FFH
- L0A6CH: DB 0FFH,0FFH
- L0A6EH: DB 0,0,0,0,0FFH,0FFH
- DB 0FFH,0FFH
- L0A76H: DB 0,0
- L0A78H: DB 0,0
- L0A7AH: DB 0,0
- L0A7CH: DB 0
- L0A7DH: DB CR,LF
- L0A7FH: DB 0
- L0A80H: DB 0,0
- L0A82H: DB 0,0
- L0A84H: DB LF,0
- L0A86H: DB '$$$$$$$'
- L0A8DH: DB '$$$$$$$$$$$$$$$$'
- DB '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$'
- L0AC6H: DB '$MS DOS Version 5.00 (C)Copyright 1981-1991 Microsoft Corp Licensed Material - '
- DB 'Property of Microsoft All rights reserved '
- ;
- L0B3FH: PUSH AX
- PUSH BX
- PUSH DX
- PUSH ES
- PUSH DI
- XOR CX,CX
- MOV ES,CX
- XOR DI,DI
- MOV AX,122EH
- L0B4DH: MOV DL,0
- INT 2FH
- MOV WORD PTR [L0A4CH],ES
- MOV WORD PTR [L0A4AH],DI
- MOV AX,122EH
- MOV DL,2
- INT 2FH
- MOV WORD PTR [L0A54H],ES
- MOV WORD PTR [L0A52H],DI
- L0B68H: MOV AX,122EH
- MOV DL,4
- L0B6DH: INT 2FH
- MOV WORD PTR [L0A64H],ES
- L0B73H: MOV WORD PTR [L0A62H],DI
- MOV AX,122EH
- MOV DL,6
- INT 2FH
- MOV WORD PTR [L0A48H],ES
- MOV WORD PTR [L0A46H],DI
- CALL L1349H
- MOV WORD PTR [L0A44H],ES
- MOV WORD PTR [L0A42H],DI
- MOV WORD PTR [L0A60H],ES
- L0B95H: MOV WORD PTR [L0A5EH],DI
- CALL L136AH
- MOV WORD PTR [L0A58H],ES
- MOV WORD PTR [L0A56H],DI
- MOV AX,122EH
- MOV DL,8
- INT 2FH
- MOV WORD PTR [L0A6CH],ES
- MOV WORD PTR [L0A6AH],DI
- MOV WORD PTR [L0A7DH],0A0DH
- MOV BYTE PTR [L0AC6H],24H
- MOV WORD PTR [L0A82H],0000H
- MOV WORD PTR [L0A84H],000AH
- CALL L1324H
- MOV WORD PTR [L0A6EH],DI
- CALL L0BEDH
- CALL L0C05H
- CALL L0C1BH
- PUSH CX
- CALL L0C2EH
- JC L0BE8H
- POP CX
- POP DI
- POP ES
- POP DX
- POP BX
- POP AX
- JMP SHORT L0BECH
- L0BE8H: ADD SP,0CH
- STC ;Set the carry flag.
- L0BECH: RET
- ;
- L0BEDH: PUSH AX
- PUSH SI
- PUSH DS
- MOV AX,6300H ; ???
- INT 21H
- PUSH DS
- POP ES
- POP DS
- JC L0C02H
- MOV WORD PTR [L0A76H],SI
- MOV WORD PTR [L0A78H],ES
- L0C02H: POP SI
- POP AX
- RET
- ;
- L0C05H: MOV AX,4400H
- L0C08H: MOV BX,0000H
- XOR DX,DX
- MSDOS
- AND DH,1
- OR DH,1
- MOV AX,4401H ;I/O control for devices.
- MSDOS
- RET
- ;
- L0C1BH: MOV AX,4400H
- MOV BX,0001H
- XOR DX,DX
- MSDOS
- OR DH,1
- MOV AX,4401H ;I/O control for devices.
- MSDOS
- RET
- ;
- L0C2EH: MSDOS _GETVER ;Get DOS version number.
- CMP AX,05H
- JNZ L0C3AH
- CLC ;Clear the carry flag.
- JMP SHORT L0C52H
- L0C3AH: CMP AX,02H
- JNC L0C44H
- MOV BX,0FFFFH
- JMP SHORT L0C47H
- L0C44H: MOV BX,0002H
- L0C47H: MOV AX,0001H
- MOV CX,0000H
- MOV DL,0
- MOV DH,0FFH
- STC ;Set the carry flag.
- L0C52H: RET
- ;
- L0C53H: PUSH AX
- PUSH BX
- PUSH CX
- PUSH BP
- PUSH DI
- PUSH ES
- PUSH DX
- MOV BP,CX
- MOV WORD PTR [L0A7AH],BX
- MOV BYTE PTR [L0A7FH],DH
- CALL L0F2DH
- OR CX,CX
- JZ L0C87H
- OR BP,BP
- JNZ L0C74H
- CALL L0C98H
- JMP SHORT L0C77H
- L0C74H: CALL L0E27H
- L0C77H: JC L0C81H
- POP DX
- CALL L0D82H
- POP ES
- POP DI
- JMP SHORT L0C85H
- L0C81H: ADD SP,6
- STC ;Set the carry flag.
- L0C85H: JMP SHORT L0C8BH
- L0C87H: POP ES
- POP DI
- POP DX
- STC ;Set the carry flag.
- L0C8BH: JC L0C93H
- POP BP
- POP CX
- POP BX
- POP AX
- JMP SHORT L0C97H
- L0C93H: ADD SP,8
- STC ;Set the carry flag.
- L0C97H: RET
- ;
- L0C98H: PUSH AX
- PUSH BX
- PUSH DX
- MOV BX,WORD PTR [L0A7AH]
- CMP BX,-1
- JNZ L0CA9H
- CALL L0CD3H
- JMP SHORT L0CACH
- L0CA9H: CALL L0D23H
- L0CACH: JNC L0CBDH
- MOV AH,59H
- MOV BX,0000H
- MSDOS
- XOR AH,AH
- ADD SP,6
- STC ;Set the carry flag.
- JMP SHORT L0CCDH
- L0CBDH: CMP BX,-1
- JZ L0CCDH
- CMP AX,CX
- JZ L0CCDH
- CALL L0D79H
- ADD SP,6
- STC ;Set the carry flag.
- L0CCDH: JC L0CD2H
- POP DX
- POP BX
- POP AX
- L0CD2H: RET
- ;
- L0CD3H: PUSH DS
- PUSH ES
- POP DS
- CMP CX,1
- JNZ L0CF6H
- MOV AH,2
- MOV DL,BYTE PTR ES:[DI]
- MSDOS
- POP DS
- MOV AL,DL
- CALL L0D99H
- PUSH DS
- PUSH ES
- POP DS
- JNC L0CF4H
- MOV DL,BYTE PTR ES:[DI]+1
- MSDOS
- CLC ;Clear the carry flag.
- L0CF4H: JMP SHORT L0D05H
- L0CF6H: MOV AH,2
- L0CF8H: OR CX,CX
- JZ L0D05H
- MOV DL,BYTE PTR ES:[DI]
- MSDOS
- INC DI
- DEC CX
- JNZ L0CF8H
- L0D05H: CLC ;Clear the carry flag.
- POP DS
- RET
- ;
- L0D08H: PUSH DI
- PUSH AX
- PUSH ES
- PUSH BX
- MOV DI,DX
- PUSH DS
- POP ES
- MOV BX,CX
- MOV AL,1AH
- CLD ;Set forward direction flag.
- REPNZ SCASB ;Scan (DI)+- for byt in AL.
- JNZ L0D1CH
- SUB BX,CX
- DEC BX
- L0D1CH: MOV CX,BX
- POP BX
- POP ES
- POP AX
- POP DI
- RET
- ;
- L0D23H: XOR AX,AX
- OR CX,CX
- JZ L0D78H
- PUSH DS
- PUSH ES
- POP DS
- MOV AH,40H
- MOV DX,DI
- CMP CX,1
- JNZ L0D5DH
- MSDOS
- POP DS
- PUSH AX
- MOV AL,BYTE PTR ES:[DI]
- CALL L0D99H
- POP AX
- PUSH DS
- PUSH ES
- POP DS
- JNC L0D4BH
- CLC ;Clear the carry flag.
- MOV AH,40H
- INC DX
- MSDOS
- L0D4BH: PUSHF ;Push flag register.
- CMP BYTE PTR ES:[DI],EOF
- JNZ L0D54H
- MOV AX,CX
- L0D54H: JMP SHORT L0D57H
- ;
- L0D56H: IRET ;Return from interupt.
- L0D57H: PUSH CS
- CALL L0D56H
- JMP SHORT L0D77H
- L0D5DH: PUSH BP
- PUSH CX
- CALL L0D08H
- MOV BP,CX
- POP CX
- MSDOS
- JNC L0D6BH
- JMP SHORT L0D76H
- L0D6BH: CMP CX,AX
- JZ L0D76H
- CMP BP,AX
- CLC ;Clear the carry flag.
- JNZ L0D76H
- MOV AX,CX
- L0D76H: POP BP
- L0D77H: POP DS
- L0D78H: RET
- ;
- L0D79H: MOV AX,0027H
- MOV BX,0004H
- MOV CH,1
- RET
- ;
- L0D82H: CMP DH,0FFH
- JZ L0D98H
- TEST DH,80H
- JNZ L0D98H
- PUSH DS
- POP ES
- LEA DI,WORD PTR [L0A7DH]
- MOV CX,002H
- CALL L0C98H
- L0D98H: RET
- ;
- L0D99H: PUSH ES
- PUSH DI
- LES DI,DWORD PTR [L0A76H];Load ES:DI with 32b pointer.
- OR DI,DI
- JZ L0DBAH
- L0DA3H: CMP WORD PTR ES:[DI],0
- CLC ;Clear the carry flag.
- JZ L0DBAH
- CMP AL,BYTE PTR ES:[DI]
- JC L0DB6H
- CMP AL,BYTE PTR ES:[DI]+1
- JA L0DB6H
- STC ;Set the carry flag.
- L0DB6H: INC DI
- INC DI
- JMP SHORT L0DA3H
- L0DBAH: POP DI
- POP ES
- RET
- ;
- L0DBDH: POP WORD PTR [L0A80H]
- XOR BX,BX
- XCHG AX,BX
- XCHG AX,DX
- L0DC5H: DIV WORD PTR [L0A84H]
- XCHG AX,BX
- DIV WORD PTR [L0A84H]
- CMP DX,HT
- JBE L0DD8H
- ADD DL,37H
- JMP SHORT L0DDBH
- L0DD8H: ADD DL,30H
- L0DDBH: PUSH DX
- INC CX
- OR AX,AX
- JNZ L0DE5H
- OR BX,BX
- JZ L0E1EH
- L0DE5H: CMP CX,3
- JNZ L0DF7H
- CMP BYTE PTR [SI]+10,','
- JNZ L0DF5H
- PUSH WORD PTR [L0A8DH]
- INC CX
- L0DF5H: JMP SHORT L0E19H
- L0DF7H: CMP CX,6
- JNZ L0E09H
- CMP BYTE PTR [SI]+10,','
- JNZ L0E07H
- PUSH WORD PTR [L0A8DH]
- INC CX
- L0E07H: JMP SHORT L0E19H
- L0E09H: CMP CX,HT
- JNZ L0E19H
- CMP BYTE PTR [SI]+10,','
- JNZ L0E19H
- PUSH WORD PTR [L0A8DH]
- INC CX
- L0E19H: XCHG AX,BX
- XOR DX,DX
- JMP SHORT L0DC5H
- L0E1EH: XOR DX,DX
- XOR AX,AX
- PUSH WORD PTR [L0A80H]
- RET
- ;
- L0E27H: XOR DX,DX
- OR CX,CX
- JZ L0E4EH
- MOV AH,25H
- MOV AL,0
- L0E31H: CMP BYTE PTR ES:[DI],AH
- JNZ L0E40H
- CMP BYTE PTR ES:[DI]+1,AH
- JZ L0E40H
- CMP AL,AH
- JNZ L0E4EH
- L0E40H: MOV AL,BYTE PTR ES:[DI]
- CALL L0D99H
- JNC L0E49H
- INC DI
- L0E49H: INC DI
- INC DX
- DEC CX
- JNZ L0E31H
- L0E4EH: PUSH SI
- XCHG CX,DX
- OR BP,BP
- JZ L0E88H
- DEC BP
- CMP WORD PTR [L0A82H],0
- JNZ L0E88H
- L0E5DH: MOV AL,BYTE PTR [SI]+6
- ADD AL,30H
- CMP AL,BYTE PTR ES:[DI]+1
- JNZ L0E6AH
- JMP SHORT L0E88H
- L0E6AH: CMP AL,'0'
- JNZ L0E72H
- OR DX,DX
- JZ L0E76H
- L0E72H: ADD SI,WORD PTR [SI]
- JMP SHORT L0E5DH
- L0E76H: CMP BYTE PTR [L0A7FH],0FFH
- JNZ L0E85H
- INC DX
- INC DX
- DEC CX
- DEC CX
- DEC DI
- DEC DI
- JMP SHORT L0E88H
- L0E85H: MOV DX,0FFFFH
- L0E88H: PUSH DI
- SUB DI,CX
- CALL L0C98H
- POP DI
- POP CX
- JNC L0E95H
- JMP SHORT L0EF9H
- NOP
- L0E95H: PUSH CX
- MOV CX,DX
- CMP BYTE PTR [SI]+6,0
- JZ L0EABH
- OR CX,CX
- JZ L0EA8H
- DEC CX
- DEC CX
- INC DI
- INC DI
- JMP SHORT L0EA9H
- L0EA8H: POP SI
- L0EA9H: JMP SHORT L0EBBH
- L0EABH: OR CX,CX
- JNZ L0EB2H
- POP SI
- JMP SHORT L0EBBH
- L0EB2H: CMP CX,-1
- JNZ L0EB9H
- XOR CX,CX
- L0EB9H: OR DI,DI
- L0EBBH: JZ L0EF9H
- PUSH BP
- PUSH DI
- PUSH ES
- PUSH CX
- XOR CX,CX
- CMP WORD PTR [L0A82H],0
- JNZ L0EDDH
- TEST BYTE PTR [SI]+7,0FH
- JNZ L0ED8H
- LES DI,DWORD PTR [SI]+2;Load ES:DI with 32b pointer.
- CALL L1130H
- JMP SHORT L0ED8H
- L0ED8H: CALL L1055H
- JMP SHORT L0EE0H
- L0EDDH: CALL L0F00H
- L0EE0H: JC L0EE9H
- POP CX
- POP ES
- POP DI
- POP BP
- POP SI
- JMP SHORT L0EEDH
- L0EE9H: ADD SP,0AH
- STC ;Set the carry flag.
- L0EEDH: CMP WORD PTR [L0A82H],0
- JNZ L0EF9H
- JC L0EF9H
- JMP L0E27H
- L0EF9H: MOV WORD PTR [L0A82H],0000H
- RET
- ;
- L0F00H: XOR DX,DX
- MOV AX,WORD PTR [L0A82H]
- MOV WORD PTR [L0A84H],000AH
- CALL L0DBDH
- L0F0EH: POP AX
- MOV BYTE PTR [BX]+0A86H,AL
- INC BX
- CMP BX,'@'
- JNZ L0F1CH
- CALL L1114H
- L0F1CH: DEC CL
- JNZ L0F0EH
- MOV AX,0A0DH
- MOV WORD PTR [BX]+0A86H,AX
- INC BX
- INC BX
- CALL L1114H
- RET
- ;
- L0F2DH: PUSH SI
- PUSH BX
- XOR SI,SI
- XOR CX,CX
- L0F33H: CMP DH,0FFH
- JNZ L0F40H
- MOV DI,WORD PTR [SI]+0A6EH
- MOV BX,DI
- JMP SHORT L0F65H
- L0F40H: TEST DH,2
- JZ L0F4DH
- LES DI,DWORD PTR [SI]+0A52H;Load ES:DI with 32b pointer.
- MOV BX,ES
- JMP SHORT L0F65H
- L0F4DH: CMP AX,13H
- JC L0F5FH
- CMP AX,27H
- JA L0F5FH
- LES DI,DWORD PTR [SI]+0A5EH;Load ES:DI with 32b pointer.
- MOV BX,ES
- JMP SHORT L0F65H
- L0F5FH: LES DI,DWORD PTR [SI]+0A42H;Load ES:DI with 32b pointer.
- MOV BX,ES
- L0F65H: CMP BX,-1
- JNZ L0F80H
- CMP DH,0FFH
- JNZ L0F72H
- STC ;Set the carry flag.
- JMP SHORT L0F7EH
- L0F72H: MOV WORD PTR [L0A82H],AX
- MOV AX,0FFFFH
- MOV BP,0001H
- XOR SI,SI
- CLC ;Clear the carry flag.
- L0F7EH: JMP SHORT L0F8CH
- L0F80H: CMP BX,0
- JZ L0F88H
- CALL L0FDCH
- L0F88H: ADD SI,4
- CLC ;Clear the carry flag.
- L0F8CH: JC L0F94H
- OR CX,CX
- JNZ L0F94H
- JMP SHORT L0F33H
- L0F94H: PUSHF ;Push flag register.
- CMP DH,1
- JNZ L0FC3H
- PUSH DX
- PUSH BP
- PUSH CX
- PUSH ES
- PUSH DI
- PUSH AX
- MOV AX,0500H
- INT 2FH
- CMP AL,0FFH
- POP AX
- JNZ L0FB3H
- MOV BX,AX
- MOV AX,0502H
- INT 2FH
- JMP SHORT L0FB4H
- L0FB3H: STC ;Set the carry flag.
- L0FB4H: JNC L0FBBH
- POP DI
- POP ES
- POP CX
- JMP SHORT L0FC1H
- L0FBBH: ADD SP,6
- CALL L0FCDH
- L0FC1H: POP BP
- POP DX
- L0FC3H: JMP SHORT L0FC6H
- ;
- L0FC5H: IRET ;Return from interupt.
- L0FC6H: PUSH CS
- CALL L0FC5H
- POP BX
- POP SI
- RET
- ;
- L0FCDH: PUSH DI
- PUSH AX
- MOV CX,0FFFFH
- XOR AL,AL
- REPNZ SCASB ;Scan (DI)+- for byt in AL.
- NOT CX
- DEC CX
- POP AX
- POP DI
- RET
- ;
- L0FDCH: CMP BX,1
- JNZ L0FFEH
- CMP WORD PTR [L0A6AH],-1
- JZ L0FFEH
- CMP AX,0FFFFH
- JNZ L0FF8H
- PUSH AX
- MOV AX,WORD PTR [L0A82H]
- CALL DWORD PTR [L0A6AH]
- POP AX
- JMP SHORT L0FFCH
- L0FF8H: CALL DWORD PTR [L0A6AH]
- L0FFCH: JMP SHORT L1018H
- L0FFEH: XOR CX,CX
- CMP DH,0FFH
- JZ L100BH
- MOV CL,BYTE PTR ES:[DI]+3
- JMP SHORT L1014H
- L100BH: CMP BYTE PTR CS:[DI],DH
- JNZ L1014H
- MOV CL,BYTE PTR CS:[DI]+3
- L1014H: ADD DI,4
- STC ;Set the carry flag.
- L1018H: JNC L1047H
- CLC ;Clear the carry flag.
- L101BH: OR CX,CX
- JZ L1038H
- CMP DH,0FFH
- JZ L1029H
- CMP AX,WORD PTR ES:[DI]
- JMP SHORT L102CH
- L1029H: CMP AX,WORD PTR CS:[DI]
- L102CH: JNZ L1030H
- JMP SHORT L1039H
- L1030H: DEC CX
- JZ L1038H
- ADD DI,4
- JMP SHORT L101BH
- L1038H: STC ;Set the carry flag.
- L1039H: JC L1047H
- CMP DH,0FFH
- CLC ;Clear the carry flag.
- JNZ L1043H
- PUSH CS
- POP ES
- L1043H: ADD DI,WORD PTR ES:[DI]+2
- L1047H: JC L104FH
- XOR CH,CH
- MOV CL,BYTE PTR ES:[DI]
- INC DI
- L104FH: MOV BYTE PTR [L0A7CH],0
- RET
- ;
- L1055H: XOR BX,BX
- CMP BYTE PTR [SI]+6,0
- JNZ L106EH
- MOV WORD PTR [BX]+0A86H,2D20H
- INC BX
- INC BX
- MOV BYTE PTR [BX]+0A86H,20H
- INC BX
- CALL L1114H
- L106EH: POP BP
- XOR BX,BX
- XOR DX,DX
- MOV BYTE PTR [L0A7CH],CL
- MOV AL,BYTE PTR [SI]+9
- CMP AL,CL
- JBE L109CH
- SUB AL,CL
- MOV DH,AL
- TEST BYTE PTR [SI]+7,80H
- JZ L109CH
- L1088H: MOV AL,BYTE PTR [SI]+10
- MOV BYTE PTR [BX]+0A86H,AL
- INC BX
- CMP BX,'@'
- JNZ L1098H
- CALL L1114H
- L1098H: DEC DH
- JNZ L1088H
- L109CH: CMP BYTE PTR [SI]+8,0
- JZ L10AFH
- CMP BYTE PTR [SI]+8,CL
- JNC L10AFH
- SUB CL,BYTE PTR [SI]+8
- MOV DL,CL
- MOV CL,BYTE PTR [SI]+8
- L10AFH: OR CX,CX
- JZ L10D7H
- L10B3H: TEST BYTE PTR [SI]+7,0FH
- JNZ L10C5H
- TEST BYTE PTR [SI]+7,10H
- JZ L10C5H
- MOV AL,BYTE PTR ES:[DI]
- INC DI
- JMP SHORT L10C6H
- L10C5H: POP AX
- L10C6H: MOV BYTE PTR [BX]+0A86H,AL
- INC BX
- CMP BX,'@'
- JNZ L10D3H
- CALL L1114H
- L10D3H: DEC CL
- JNZ L10B3H
- L10D7H: TEST BYTE PTR [SI]+7,80H
- JNZ L10F5H
- OR DH,DH
- JZ L10F5H
- L10E1H: MOV AL,BYTE PTR [SI]+10
- MOV BYTE PTR [BX]+0A86H,AL
- INC BX
- CMP BX,'@'
- JNZ L10F1H
- CALL L1114H
- L10F1H: DEC DH
- JNZ L10E1H
- L10F5H: TEST BYTE PTR [SI]+7,0FH
- JNZ L1103H
- TEST BYTE PTR [SI]+7,10H
- JZ L1103H
- JMP SHORT L110FH
- L1103H: OR DL,DL
- JZ L110FH
- L1107H: POP WORD PTR [L0A80H]
- DEC DL
- JNZ L1107H
- L110FH: CALL L1114H
- PUSH BP
- RET
- ;
- L1114H: PUSH CX
- PUSH ES
- PUSH DI
- PUSH DS
- POP ES
- MOV CX,BX
- XOR BX,BX
- LEA DI,WORD PTR [L0A86H]
- CALL L0C98H
- JC L112BH
- POP DI
- POP ES
- POP CX
- JMP SHORT L112FH
- L112BH: ADD SP,6
- STC ;Set the carry flag.
- L112FH: RET
- ;
- L1130H: POP BP
- TEST BYTE PTR [SI]+7,30H
- JNZ L1149H
- MOV AL,BYTE PTR ES:[DI]
- PUSH AX
- INC CX
- CALL L0D99H
- JNC L1147H
- MOV AL,BYTE PTR ES:[DI]+1
- PUSH AX
- CLC ;Clear the carry flag.
- L1147H: JMP SHORT L1156H
- L1149H: MOV AL,BYTE PTR ES:[DI]
- OR AL,AL
- JZ L1154H
- INC DI
- INC CX
- JMP SHORT L1149H
- L1154H: SUB DI,CX
- L1156H: PUSH BP
- RET
- L1158H: DB 0FFH,05
- DB 0,8,1,0,' ',0,2,0
- DB '4',0,',',1,'J',0
- DB '-',1,94H,0,'.',1
- DB 0BCH,0,'/',1,0EDH
- DB 0,'0',1,'''',1,'1',1
- DB 'V',1,17H,'Incorrect DOS version',CR,LF
- DB 19H,'Original %1: set to %2:',CR,LF
- DB 'MRedirects requests for disk operations on one drive to a different drive.',CR,LF,CR,LF
- DB '+ASSIGN [x[:]=y[:][...]]',CR,LF,'ASSIGN /STATUS',CR,LF,CR,LF
- DB '4 x Specifies the drive letter to reassign.',CR,LF
- DB '= y Specifies the drive that x: will be assigned to.',CR,LF
- DB '2 /STATUS Displays current drive assignments.',CR,LF,CR,LF
- DB 'UType ASSIGN without parameters to reset all drive letters to original',CR,LF
- DB 'assignments.',CR,LF
- ;
- L1324H: DB 0EH,7
- L1326H: DB 8DH,'>X',11H,81H
- L132BH: DB 0C1H,0D2H,1,0C3H
- L132FH: DB 1,5,0,1,0FFH,0FFH
- DB 4,0,11H,'Extended Error %1'
- ;
- L1349H: DB 0EH,7,8DH,'>/',13H
- DB 83H
- L1350H: DB 0C1H,' ',0C3H
- L1353H: DB 2,5,0
- L1356H: DB 1,0FFH,0FFH,4
- L135AH: DB 0,0EH,'Parse Error %1'
- ;
- L136AH: DB 0EH,7,8DH,'>S',13H
- DB 83H,0C1H,1DH,0C3H
- DB 0,0,0,0,0
- L1379H: DB 0,0
- L137BH: DB 0,0,0,0,0
- L1380H: DB 0,0
- L1382H: DB 0,0
- L1384H: DB 0,0
- L1386H: DB 0,0
- L1388H: DB 0
- L1389H: DB 0,0
- L138BH: DB 0
- L138CH: DB 0
- L138DH: DB 0
- L138EH: DB 0
- L138FH: DB 0,0
- L1391H: DB 0,0
- L1393H: DB 0
- L1394H: DB 0
- L1395H: DB 0,0
- L1397H: DB 0,0,0,0,0,0,0,0,0
- DB 0,0,0,0,0,0,0,0,0
- DB 0,0,0,0
- DB 0,0
- L13AFH: DB 0,0,0,0,0
- L13B4H: DB 0,0,0,0,0,0,0,0,0
- DB 0,0,0,0,0,0,0,0,0
- DB 0,0,0,0,0,0,0,0,0
- DB 0,0,0,0
- L13D3H: DB 0,0
- L13D5H: DB 0,0,0,0,0,0,0,0,0
- DB 0,0,0,0,0,0,0,0,0
- DB 0,0,0,0,0,0,0,0,0
- DB 0,0,0,0,0,0,0,0,0
- DB 0,0,0,0,0,0,0,0,0
- DB 0,0,0,0,0,0,0,0,0
- DB 0,0,0,0,0,0,0,0
- L1413H: DB 0,0,0,0
- L1417H: DB 0FFH,0,0,0,0
- L141CH: DB 0FFH,0,0,0,0
- L1421H: DB 0
- ;
- L1422H: MOV WORD PTR CS:[L138DH],0000H
- CLD ;Set forward direction flag.
- MOV WORD PTR CS:[L1380H],CX
- MOV WORD PTR CS:[L1382H],0000H
- MOV WORD PTR CS:[L1395H],0000H
- MOV WORD PTR CS:[L1386H],0000H
- CALL L18CEH
- JNC L145CH
- MOV AX,0FFFFH
- PUSH BX
- MOV BX,WORD PTR ES:[DI]
- CMP CL,BYTE PTR ES:[BX]
- JNC L1458H
- MOV AX,0002H
- L1458H: POP BX
- JMP L157FH
- L145CH: MOV WORD PTR CS:[L138FH],SI
- PUSH BX
- PUSH DI
- PUSH BP
- LEA BX,WORD PTR [L1397H]
- TEST BYTE PTR CS:[L138EH],20H
- JNZ L14B3H
- L1470H: LODSB ;Load AL with byt at (SI)+-.
- CALL L198BH
- JC L14B2H
- CALL L18F4H
- JZ L14B2H
- CALL L192AH
- JNZ L1498H
- TEST BYTE PTR CS:[L138EH],20H
- JNZ L148DH
- CALL L18CEH
- JMP SHORT L14B3H
- L148DH: TEST BYTE PTR CS:[L138EH],41H
- JZ L14B3H
- DEC SI
- JMP SHORT L14B3H
- L1498H: MOV BYTE PTR CS:[BX],AL
- CMP AL,'='
- JNZ L14A5H
- OR BYTE PTR CS:[L138EH],1
- L14A5H: INC BX
- CALL L19A9H
- JNC L1470H
- LODSB ;Load AL with byt at (SI)+-.
- MOV BYTE PTR CS:[BX],AL
- INC BX
- JMP SHORT L1470H
- L14B2H: DEC SI
- L14B3H: MOV WORD PTR CS:[L1384H],SI
- MOV BYTE PTR CS:[BX],0
- MOV WORD PTR CS:[L1393H],BX
- MOV BX,WORD PTR ES:[DI]
- LEA SI,WORD PTR [L1397H]
- CMP BYTE PTR CS:[SI],'/'
- JZ L1504H
- CMP BYTE PTR CS:[SI],'"'
- JZ L14DCH
- TEST BYTE PTR CS:[L138EH],1
- JNZ L1530H
- L14DCH: MOV AL,BYTE PTR ES:[BX]+1
- XOR AH,AH
- CMP WORD PTR CS:[L1380H],AX
- JNC L14FBH
- MOV AX,WORD PTR CS:[L1380H]
- SHL AX,1
- INC BX
- INC BX
- ADD BX,AX
- MOV BX,WORD PTR ES:[BX]
- CALL L1581H
- JMP SHORT L1564H
- L14FBH: MOV WORD PTR CS:[L1382H],0001H
- JMP SHORT L1564H
- L1504H: MOV AL,BYTE PTR ES:[BX]+1
- XOR AH,AH
- INC AX
- SHL AX,1
- ADD BX,AX
- MOV CL,BYTE PTR ES:[BX]
- XOR CH,CH
- OR CX,CX
- JZ L1527H
- INC BX
- L1519H: PUSH BX
- MOV BX,WORD PTR ES:[BX]
- CALL L15E6H
- POP BX
- JNC L1564H
- INC BX
- INC BX
- LOOP L1519H ;Dec CX, loop if CX<>0.
- L1527H: MOV WORD PTR CS:[L1382H],0003H
- JMP SHORT L1564H
- L1530H: MOV AL,BYTE PTR ES:[BX]+1
- XOR AH,AH
- INC AX
- SHL AX,1
- ADD BX,AX
- MOV AL,BYTE PTR ES:[BX]
- XOR AH,AH
- SHL AX,1
- INC AX
- ADD BX,AX
- MOV CL,BYTE PTR ES:[BX]
- XOR CH,CH
- OR CX,CX
- JZ L155DH
- INC BX
- L154FH: PUSH BX
- MOV BX,WORD PTR ES:[BX]
- CALL L15B3H
- POP BX
- JNC L1564H
- INC BX
- INC BX
- LOOP L154FH ;Dec CX, loop if CX<>0.
- L155DH: MOV WORD PTR CS:[L1382H],0004H
- L1564H: POP BP
- POP DI
- POP BX
- MOV CX,WORD PTR CS:[L1380H]
- MOV AX,WORD PTR CS:[L1382H]
- MOV SI,WORD PTR CS:[L1384H]
- MOV DX,WORD PTR CS:[L1386H]
- MOV BL,BYTE PTR CS:[L1388H]
- L157FH: CLC ;Clear the carry flag.
- RET
- ;
- L1581H: PUSH AX
- MOV AX,WORD PTR ES:[BX]
- TEST AX,02H
- JNZ L158FH
- INC WORD PTR CS:[L1380H]
- L158FH: CMP BYTE PTR CS:[SI],0
- JNZ L15AEH
- TEST AX,01H
- JNZ L15A3H
- MOV WORD PTR CS:[L1382H],0002H
- JMP SHORT L15B1H
- L15A3H: PUSH AX
- MOV AL,3
- MOV AH,0FFH
- CALL L1649H
- POP AX
- JMP SHORT L15B1H
- L15AEH: CALL L16CEH
- L15B1H: POP AX
- RET
- ;
- L15B3H: STC ;Set the carry flag.
- RET
- ;
- L15B5H: PUSH BP
- PUSH CX
- MOV CL,BYTE PTR ES:[BX]+8
- XOR CH,CH
- OR CX,CX
- JZ L15CEH
- LEA BP,WORD PTR [BX]+9
- L15C4H: CALL L182BH
- JNC L15D1H
- CALL L15DAH
- LOOP L15C4H ;Dec CX, loop if CX<>0.
- L15CEH: STC ;Set the carry flag.
- JMP SHORT L15D7H
- L15D1H: MOV WORD PTR CS:[L1395H],BP
- CLC ;Clear the carry flag.
- L15D7H: POP CX
- POP BP
- RET
- ;
- L15DAH: CMP BYTE PTR ES:[BP]+0,0
- JZ L15E4H
- INC BP
- JMP SHORT L15DAH
- L15E4H: INC BP
- RET
- ;
- L15E6H: OR BYTE PTR CS:[L138EH],10H
- CALL L15B5H
- JC L163BH
- AND BYTE PTR CS:[L138EH],0EFH
- PUSH AX
- MOV AX,WORD PTR CS:[L1391H]
- SUB AX,SI
- ADD WORD PTR CS:[L138FH],AX
- POP AX
- MOV SI,WORD PTR CS:[L1391H]
- CMP BYTE PTR CS:[SI],0
- JNZ L1635H
- CMP BYTE PTR CS:[SI]-1,':'
- JNZ L161FH
- MOV WORD PTR CS:[L1382H],0009H
- JMP SHORT L163EH
- L161FH: CMP WORD PTR ES:[BX],0
- JZ L163EH
- TEST WORD PTR ES:[BX],01H
- JNZ L163EH
- MOV WORD PTR CS:[L1382H],02H
- JMP SHORT L163EH
- L1635H: CALL L16CEH
- CLC ;Clear the carry flag.
- JMP SHORT L1648H
- L163BH: STC ;Set the carry flag.
- JMP SHORT L1648H
- L163EH: PUSH AX
- MOV AL,3
- MOV AH,0FFH
- CALL L1649H
- POP AX
- CLC ;Clear the carry flag.
- L1648H: RET
- ;
- L1649H: PUSH DI
- MOV DI,WORD PTR ES:[BX]+4
- MOV WORD PTR CS:[L1386H],DI
- MOV BYTE PTR ES:[DI],AL
- MOV BYTE PTR ES:[DI]+1,AH
- PUSH AX
- MOV AX,WORD PTR CS:[L1395H]
- MOV WORD PTR ES:[DI]+2,AX
- POP AX
- CMP AL,1
- JNZ L1672H
- L1668H: MOV WORD PTR ES:[DI]+4,DX
- MOV WORD PTR ES:[DI]+6,CX
- JMP SHORT L16CCH
- L1672H: CMP AL,2
- JNZ L167CH
- MOV WORD PTR ES:[DI]+4,DX
- JMP SHORT L16CCH
- L167CH: CMP AL,7
- JZ L1668H
- CMP AL,8
- JZ L1668H
- CMP AL,6
- JNZ L168EH
- MOV BYTE PTR ES:[DI]+4,DL
- JMP SHORT L16CCH
- L168EH: CMP AL,4
- JNZ L16A1H
- MOV AX,WORD PTR CS:[L138FH]
- INC AX
- MOV WORD PTR ES:[DI]+4,AX
- MOV WORD PTR ES:[DI]+6,DS
- JMP SHORT L16CCH
- L16A1H: MOV WORD PTR ES:[DI]+4,SI
- MOV WORD PTR ES:[DI]+6,CS
- PUSH AX
- TEST BYTE PTR ES:[BX]+2,1
- JZ L16B5H
- MOV AL,4
- JMP SHORT L16BEH
- L16B5H: TEST BYTE PTR ES:[BX]+2,2
- JZ L16C1H
- MOV AL,2
- L16BEH: CALL L1747H
- L16C1H: POP AX
- TEST BYTE PTR ES:[BX]+2,10H
- JZ L16CCH
- CALL L1721H
- L16CCH: POP DI
- RET
- ;
- L16CEH: MOV BYTE PTR CS:[L1421H],0
- PUSH AX
- MOV AX,WORD PTR ES:[BX]
- OR AX,AX
- JNZ L16F4H
- PUSH AX
- PUSH BX
- PUSH DX
- PUSH DI
- MOV WORD PTR CS:[L1382H],0009H
- MOV AH,0FFH
- MOV AL,3
- CALL L1649H
- POP DI
- POP DX
- POP BX
- POP AX
- JMP SHORT L16F6H
- L16F4H: JMP SHORT L16F9H
- L16F6H: JMP SHORT L1708H
- NOP
- L16F9H: TEST AX,2000H
- JZ L1708H
- MOV WORD PTR CS:[L1382H],0000H
- CALL L17C2H
- L1708H: CMP BYTE PTR CS:[L1421H],1
- JNZ L171FH
- CMP WORD PTR CS:[L1382H],0
- JNZ L171FH
- MOV WORD PTR CS:[L1382H],0009H
- L171FH: POP AX
- RET
- ;
- L1721H: PUSH AX
- PUSH SI
- L1723H: MOV AL,BYTE PTR CS:[SI]
- OR AL,AL
- JZ L1744H
- CMP AL,':'
- JNZ L173BH
- CMP BYTE PTR CS:[SI]+1,0
- JNZ L173BH
- MOV BYTE PTR CS:[SI],0
- JMP SHORT L1744H
- L173BH: CALL L19A9H
- JNC L1741H
- INC SI
- L1741H: INC SI
- JMP SHORT L1723H
- L1744H: POP SI
- POP AX
- RET
- ;
- L1747H: PUSH SI
- PUSH DX
- MOV DL,AL
- L174BH: MOV AL,BYTE PTR CS:[SI]
- CALL L19A9H
- JC L175FH
- OR AL,AL
- JZ L1763H
- CALL L1766H
- MOV BYTE PTR CS:[SI],AL
- JMP SHORT L1760H
- L175FH: INC SI
- L1760H: INC SI
- JMP SHORT L174BH
- L1763H: POP DX
- POP SI
- RET
- ;
- L1766H: CMP AL,80H
- JNC L1776H
- CMP AL,'a'
- JC L17B3H
- CMP AL,'z'
- JA L17B3H
- AND AL,0DFH
- JMP SHORT L17B3H
- L1776H: PUSH BX
- PUSH ES
- PUSH DI
- LEA DI,WORD PTR [L141CH]
- CMP DL,4
- JZ L1786H
- LEA DI,WORD PTR [L1417H]
- L1786H: CMP BYTE PTR CS:[DI],DL
- JZ L17A2H
- PUSH AX
- PUSH CX
- PUSH DX
- PUSH CS
- POP ES
- MOV AH,65H
- MOV AL,DL
- MOV BX,0FFFFH
- MOV CX,0005H
- MOV DX,0FFFFH
- MSDOS
- POP DX
- POP CX
- POP AX
- L17A2H: MOV BX,WORD PTR CS:[DI]+1
- MOV ES,WORD PTR CS:[DI]+3
- INC BX
- INC BX
- SUB AL,80H
- DB 26H ; ??? ES: ???
- XLAT ;Xlat (AL) using table at (BX).
- POP DI
- POP ES
- POP BX
- L17B3H: RET
- CMP AL,'0'
- JC L17C0H
- CMP AL,'9'
- JA L17C0H
- SUB AL,30H
- CLC ;Clear the carry flag.
- RET
- L17C0H: STC ;Set the carry flag.
- RET
- ;
- L17C2H: PUSH AX
- PUSH BX
- PUSH DX
- PUSH DI
- MOV DI,WORD PTR ES:[BX]+6
- MOV AL,BYTE PTR ES:[DI]
- OR AL,AL
- JNZ L17D5H
- MOV AH,0FFH
- JMP SHORT L1821H
- L17D5H: CMP AL,3
- JNZ L1818H
- INC DI
- MOV AL,BYTE PTR ES:[DI]
- MOV AH,9
- MUL AH
- INC AX
- ADD DI,AX
- MOV AL,BYTE PTR ES:[DI]
- MOV AH,5
- MUL AH
- INC AX
- ADD DI,AX
- MOV AL,BYTE PTR ES:[DI]
- INC DI
- INC DI
- L17F3H: MOV BP,WORD PTR ES:[DI]
- CALL L182BH
- JNC L180DH
- ADD DI,3
- DEC AL
- JNZ L17F3H
- MOV WORD PTR CS:[L1382H],0008H
- MOV AH,0FFH
- JMP SHORT L1821H
- L180DH: MOV AH,BYTE PTR ES:[DI]-1
- MOV AL,2
- MOV DX,WORD PTR ES:[DI]
- JMP SHORT L1823H
- L1818H: MOV WORD PTR CS:[L1382H],09H
- MOV AH,0FFH
- L1821H: MOV AL,3
- L1823H: CALL L1649H
- POP DI
- POP DX
- POP BX
- POP AX
- RET
- ;
- L182BH: PUSH AX
- PUSH BP
- PUSH DX
- PUSH SI
- MOV DL,2
- L1831H: MOV AL,BYTE PTR CS:[SI]
- CALL L19A9H
- JC L1875H
- CALL L1766H
- TEST BYTE PTR CS:[L138EH],8
- JZ L1851H
- CMP AL,'='
- JNZ L1867H
- CMP BYTE PTR ES:[BP]+1,0
- JNZ L18C0H
- JMP SHORT L1864H
- L1851H: TEST BYTE PTR CS:[L138EH],10H
- JZ L1867H
- CMP AL,':'
- JNZ L1867H
- CMP BYTE PTR ES:[BP]+0,0
- JNZ L18C0H
- L1864H: INC SI
- JMP SHORT L18C3H
- L1867H: CMP AL,BYTE PTR ES:[BP]+0
- JNZ L188AH
- OR AL,AL
- JZ L18C3H
- INC SI
- INC BP
- JMP SHORT L1888H
- L1875H: CMP AL,BYTE PTR ES:[BP]+0
- JNZ L18C0H
- INC SI
- MOV AL,BYTE PTR CS:[SI]
- INC BP
- CMP AL,BYTE PTR ES:[BP]+0
- JNZ L18C0H
- INC SI
- INC BP
- L1888H: JMP SHORT L1831H
- L188AH: TEST BYTE PTR CS:[L138EH],40H
- JZ L18A1H
- TEST WORD PTR ES:[BX]+2,0020H
- JZ L18A1H
- CMP BYTE PTR ES:[BP]+0,0
- JZ L18C3H
- L18A1H: TEST WORD PTR ES:[BX],0010H
- JZ L18C0H
- CMP AL,':'
- JNZ L18B5H
- CMP BYTE PTR ES:[BP]+0,0
- JNZ L18C0H
- JMP SHORT L18C3H
- L18B5H: CMP AL,0
- JNZ L18C0H
- CMP BYTE PTR ES:[BP]+0,':'
- JZ L18C3H
- L18C0H: STC ;Set the carry flag.
- JMP SHORT L18C9H
- L18C3H: MOV WORD PTR CS:[L1391H],SI
- CLC ;Clear the carry flag.
- L18C9H: POP SI
- POP DX
- POP BP
- POP AX
- RET
- ;
- L18CEH: LODSB ;Load AL with byt at (SI)+-.
- CALL L18F4H
- JZ L18ECH
- CALL L192AH
- JNZ L18EFH
- TEST BYTE PTR CS:[L138EH],20H
- JZ L18CEH
- TEST BYTE PTR CS:[L138EH],41H
- JZ L18F2H
- DEC SI
- JMP SHORT L18F2H
- L18ECH: STC ;Set the carry flag.
- JMP SHORT L18F0H
- L18EFH: CLC ;Clear the carry flag.
- L18F0H: DEC SI
- RET
- L18F2H: CLC ;Clear the carry flag.
- RET
- ;
- L18F4H: PUSH BX
- PUSH CX
- CMP AL,CR
- JZ L1927H
- CMP AL,0
- JZ L1927H
- CMP AL,LF
- JZ L1927H
- CMP BYTE PTR ES:[DI]+2,2
- JC L1927H
- XOR BX,BX
- MOV BL,BYTE PTR ES:[DI]+3
- ADD BX,4
- CMP BYTE PTR ES:[BX+DI],0
- JZ L1925H
- XOR CX,CX
- MOV CL,BYTE PTR ES:[BX+DI]
- L191DH: INC BX
- CMP AL,BYTE PTR ES:[BX+DI]
- JZ L1927H
- LOOP L191DH ;Dec CX, loop if CX<>0.
- L1925H: CMP AL,CR
- L1927H: POP CX
- POP BX
- RET
- ;
- L192AH: PUSH BX
- PUSH CX
- MOV BYTE PTR CS:[L1388H],20H
- AND BYTE PTR CS:[L138EH],0DFH
- CMP AL,' '
- JZ L1972H
- CMP AL,HT
- JZ L1972H
- CMP AL,','
- JZ L1975H
- CMP AL,' '
- JNZ L1954H
- CMP BYTE PTR [SI],' '
- JNZ L1954H
- MOV AL,20H
- INC SI
- CMP AL,AL
- JMP SHORT L1972H
- L1954H: CMP BYTE PTR ES:[DI]+2,1
- JC L1972H
- XOR CX,CX
- MOV CL,BYTE PTR ES:[DI]+3
- OR CX,CX
- JZ L1970H
- MOV BX,0003H
- L1968H: INC BX
- CMP AL,BYTE PTR ES:[BX+DI]
- JZ L1975H
- LOOP L1968H ;Dec CX, loop if CX<>0.
- L1970H: CMP AL,' '
- L1972H: POP CX
- POP BX
- RET
- L1975H: MOV BYTE PTR CS:[L1388H],AL
- TEST BYTE PTR CS:[L138EH],1
- JNZ L1987H
- OR BYTE PTR CS:[L138EH],20H
- L1987H: CMP AL,AL
- JMP SHORT L1972H
- ;
- L198BH: LEA BP,WORD PTR [L1397H]
- CMP BX,BP
- JZ L199DH
- CMP AL,'/'
- JNZ L199AH
- STC ;Set the carry flag.
- JMP SHORT L19A8H
- L199AH: CLC ;Clear the carry flag.
- JMP SHORT L19A8H
- L199DH: CMP AL,'/'
- JNZ L19A7H
- OR BYTE PTR CS:[L138EH],40H
- L19A7H: CLC ;Clear the carry flag.
- L19A8H: RET
- ;
- L19A9H: PUSH DS
- PUSH SI
- PUSH BX
- CMP WORD PTR CS:[L138BH],0
- JNZ L19DBH
- PUSH AX
- PUSH DS
- PUSH CX
- PUSH DX
- PUSH DI
- PUSH BP
- PUSH ES
- XOR SI,SI
- MOV DS,SI
- MOV AX,6300H
- MSDOS
- MOV BX,DS
- OR BX,BX
- POP ES
- POP BP
- POP DI
- POP DX
- POP CX
- POP DS
- POP AX
- JZ L19FAH
- MOV WORD PTR CS:[L1389H],SI
- MOV WORD PTR CS:[L138BH],BX
- L19DBH: MOV SI,WORD PTR CS:[L1389H]
- MOV DS,WORD PTR CS:[L138BH]
- L19E5H: CMP WORD PTR [SI],0
- JZ L19FAH
- CMP AL,BYTE PTR [SI]
- JC L19F6H
- CMP AL,BYTE PTR [SI]+1
- JA L19F6H
- STC ;Set the carry flag.
- JMP SHORT L19FBH
- L19F6H: INC SI
- INC SI
- JMP SHORT L19E5H
- L19FAH: CLC ;Clear the carry flag.
- L19FBH:
- POP BX
- POP SI
- POP DS
- RET
- Code_Seg ENDS
- END L0100H