home *** CD-ROM | disk | FTP | other *** search
- ; Disassembly of file :MORE.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.
- ;
- _CONOUT EQU 2
- _DRCINE EQU 8
- _GETVER EQU 30H
- _CLOSEH EQU 3EH
- _READH EQU 3FH
- _WRITEH EQU 40H
- _XDUP EQU 45H ;DUPLICATE A FILE HANDLE
- _EXIT EQU 4CH
- ;
- ; 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
- ORG 00100H
- L0100H: CALL L03AAH
- JNC L010CH
- CALL L04A5H
- MSDOS _EXIT ;Terminate a process.
- L010CH: CALL L0239H
- JNC L0115H
- MSDOS _EXIT ;Terminate a process.
- L0115H: PUSH DS
- MOV AX,0040H
- MOV DS,AX
- MOV AL,DS:BYTE PTR [0084H]
- POP DS
- OR AL,AL
- JNZ L0125H
- MOV AL,18H
- L0125H: MOV BYTE PTR [L0297H],AL
- MOV AX,440CH
- MOV BX,0002H
- MOV CX,037FH
- LEA DX,WORD PTR [L029BH]
- MSDOS
- JC L0149H
- LEA DI,WORD PTR [L029BH]
- CMP BYTE PTR [DI]+6,1
- JNZ L0149H
- MOV AX,WORD PTR [DI]+16
- MOV BYTE PTR [L0297H],AL
- L0149H: MOV AH,0FH
- INT 10H ;Display control interupt.
- MOV BYTE PTR [L0298H],AH
- XOR BX,BX
- MSDOS _XDUP ;Duplicate a file handle.
- MOV BP,AX
- MSDOS _CLOSEH ;Close a file handle.
- MOV BX,0002H
- MSDOS _XDUP ;Duplicate a file handle.
- MOV CX,WORD PTR [L0B32H]
- MOV DX,0B30H
- MOV BX,0001H
- MSDOS _WRITEH ;Write to file/device.
- L0172H: CLD ;Set forward direction flag.
- MOV DX,0B3AH
- MOV CX,1000H
- MOV BX,BP
- MSDOS _READH ;Read from file/device.
- OR AX,AX
- JNZ L0185H
- L0183H: INT 20H
- L0185H: MOV CX,AX
- MOV SI,DX
- L0189H: LODSB ;Load AL with byt at (SI)+-.
- CMP AL,EOF
- JZ L0183H
- CMP AL,CR
- JNZ L0199H
- MOV BYTE PTR [L029AH],1
- JMP SHORT L01E5H
- L0199H: CMP AL,LF
- JNZ L01A3H
- INC BYTE PTR [L0299H]
- JMP SHORT L01E5H
- L01A3H: CMP AL,8
- JNZ L01B4H
- CMP BYTE PTR [L029AH],1
- JZ L01E5H
- DEC BYTE PTR [L029AH]
- JMP SHORT L01E5H
- L01B4H: CMP AL,HT
- JNZ L01CAH
- MOV AH,BYTE PTR [L029AH]
- ADD AH,7
- AND AH,0F8H
- INC AH
- MOV BYTE PTR [L029AH],AH
- JMP SHORT L01E5H
- L01CAH: CMP AL,7
- JZ L01E5H
- INC BYTE PTR [L029AH]
- MOV AH,BYTE PTR [L029AH]
- CMP AH,BYTE PTR [L0298H]
- JBE L01E5H
- INC BYTE PTR [L0299H]
- MOV BYTE PTR [L029AH],1
- L01E5H: MOV DL,AL
- MSDOS _CONOUT ;Display character in (DL).
- MOV AH,BYTE PTR [L0299H]
- CMP AH,BYTE PTR [L0297H]
- JC L0230H
- PUSH BP
- PUSH SI
- PUSH CX
- MOV AX,0002H
- MOV BX,0002H
- XOR CX,CX
- MOV DL,0
- MOV DH,0FFH
- CALL L04A5H
- MOV AH,0CH
- MOV AL,8
- MSDOS
- CMP AL,0
- JNZ L0215H
- MSDOS _DRCINE ;Read keyboard char into (AL).
- L0215H: MOV CX,WORD PTR [L0B38H]
- MOV DX,0B34H
- MOV BX,0002H
- MSDOS _WRITEH ;Write to file/device.
- POP CX
- POP SI
- POP BP
- MOV BYTE PTR [L029AH],1
- MOV BYTE PTR [L0299H],1
- L0230H: DEC CX
- JZ L0236H
- JMP L0189H
- L0236H: JMP L0172H
- ;
- L0239H: MOV SI,0080H
- MOV CL,BYTE PTR [SI]
- XOR CH,CH
- JCXZ L0295H ;Jump if CX=0.
- INC SI
- XOR AX,AX
- L0245H: LODSB ;Load AL with byt at (SI)+-.
- CMP AL,'/'
- JZ L0254H
- CMP AL,' '
- JZ L0250H
- INC AH
- L0250H: LOOP L0245H ;Dec CX, loop if CX<>0.
- JMP SHORT L0260H
- L0254H: JCXZ L0264H ;Jump if CX=0.
- CMP BYTE PTR [SI],'?'
- JZ L0279H
- INC SI
- INC AH
- LOOP L0245H ;Dec CX, loop if CX<>0.
- L0260H: OR AH,AH
- JZ L0295H
- L0264H: MOV AX,0003H
- MOV BX,0002H
- XOR CX,CX
- MOV DL,0
- MOV DH,0FFH
- CALL L04A5H
- MOV AX,0001H
- STC ;Set the carry flag.
- JMP SHORT L0296H
- L0279H: MOV AX,012CH
- MOV BX,0001H
- XOR CX,CX
- MOV DL,0
- MOV DH,0FFH
- L0285H: CALL L04A5H
- CMP AX,0130H
- JZ L0290H
- INC AX
- JMP SHORT L0285H
- L0290H: XOR AL,AL
- STC ;Set the carry flag.
- JMP SHORT L0296H
- L0295H: CLC ;Clear the carry flag.
- L0296H: RET
- L0297H: DB 19H
- L0298H: DB 50H
- L0299H: DB 1
- L029AH: DB 1
- L029BH: DB 0,0,0EH,0,0,0
- DB 0,0,0,0,0,0
- DB 0,0,0,0,0,0
- L02ADH: DB 0,0
- L02AFH: DB 0,0
- L02B1H: DB 0,0
- L02B3H: DB 0,0
- L02B5H: DB 0,0
- L02B7H: DB 0,0,0FFH,0FFH,0FFH,0FFH
- L02BDH: DB 0,0
- L02BFH: DB 0,0
- L02C1H: DB 0,0
- L02C3H: DB 0,0,0FFH,0FFH,0FFH,0FFH
- L02C9H: DB 0,0
- L02CBH: DB 0,0
- L02CDH: DB 0,0
- L02CFH: DB 0,0,0FFH,0FFH,0FFH,0FFH
- L02D5H: DB 0FFH,0FFH
- L02D7H: DB 0FFH,0FFH
- L02D9H: DB 0,0,0,0,0FFH,0FFH
- DB 0FFH,0FFH
- L02E1H: DB 0,0
- L02E3H: DB 0,0
- L02E5H: DB 0,0
- L02E7H: DB 0
- L02E8H: DB 0DH,0AH
- L02EAH: DB 0
- L02EBH: DB 0,0
- L02EDH: DB 0,0
- L02EFH: DB 0AH,0
- L02F1H: DB '$$$$$$$'
- L02F8H: DB '$$$$$$$$$$$$$$$$'
- DB '$$$$$$$$$$$$$$$$'
- DB '$$$$$$$$$$$$$$$$'
- DB '$$$$$$$$$'
- L0331H: DB '$MS DOS Version 5.00 (C)Copyright 1981-1991 Microsoft Corp Licensed Material - Property of Microsoft All rights reserved '
- ;
- L03AAH: PUSH AX
- PUSH BX
- PUSH DX
- PUSH ES
- PUSH DI
- XOR CX,CX
- MOV ES,CX
- XOR DI,DI
- MOV AX,122EH
- L03B8H: MOV DL,0
- INT 2FH
- MOV WORD PTR [L02B7H],ES
- L03C0H: MOV WORD PTR [L02B5H],DI
- MOV AX,122EH
- MOV DL,2
- INT 2FH
- MOV WORD PTR [L02BFH],ES
- MOV WORD PTR [L02BDH],DI
- L03D3H: MOV AX,122EH
- MOV DL,4
- L03D8H: INT 2FH
- MOV WORD PTR [L02CFH],ES
- L03DEH: MOV WORD PTR [L02CDH],DI
- MOV AX,122EH
- MOV DL,6
- INT 2FH
- MOV WORD PTR [L02B3H],ES
- MOV WORD PTR [L02B1H],DI
- CALL L098EH
- MOV WORD PTR [L02AFH],ES
- MOV WORD PTR [L02ADH],DI
- MOV WORD PTR [L02CBH],ES
- L0400H: MOV WORD PTR [L02C9H],DI
- CALL L09AFH
- MOV WORD PTR [L02C3H],ES
- MOV WORD PTR [L02C1H],DI
- MOV AX,122EH
- MOV DL,8
- INT 2FH
- MOV WORD PTR [L02D7H],ES
- MOV WORD PTR [L02D5H],DI
- MOV WORD PTR [L02E8H],0A0DH
- MOV BYTE PTR [L0331H],24H
- MOV WORD PTR [L02EDH],0000H
- MOV WORD PTR [L02EFH],000AH
- CALL L0B25H
- MOV WORD PTR [L02D9H],DI
- CALL L0455H
- CALL L046DH
- PUSH CX
- CALL L0480H
- JC L0450H
- POP CX
- POP DI
- POP ES
- POP DX
- POP BX
- POP AX
- JMP SHORT L0454H
- L0450H: ADD SP,0CH
- STC ;Set the carry flag.
- L0454H: RET
- ;
- L0455H: PUSH AX
- PUSH SI
- PUSH DS
- MOV AX,6300H
- MSDOS
- PUSH DS
- POP ES
- POP DS
- JC L046AH
- MOV WORD PTR [L02E1H],SI
- MOV WORD PTR [L02E3H],ES
- L046AH: POP SI
- POP AX
- RET
- ;
- L046DH: MOV AX,4400H
- MOV BX,0001H
- XOR DX,DX
- MSDOS
- OR DH,1
- MOV AX,4401H ;I/O control for devices.
- MSDOS
- RET
- ;
- L0480H: MSDOS _GETVER ;Get DOS version number.
- CMP AX,05H
- JNZ L048CH
- CLC ;Clear the carry flag.
- JMP SHORT L04A4H
- L048CH: CMP AX,02H
- JNC L0496H
- MOV BX,0FFFFH
- JMP SHORT L0499H
- L0496H: MOV BX,0002H
- L0499H: MOV AX,0001H
- MOV CX,0000H
- MOV DL,0
- MOV DH,0FFH
- STC ;Set the carry flag.
- L04A4H: RET
- ;
- L04A5H: PUSH AX
- PUSH BX
- PUSH CX
- PUSH BP
- PUSH DI
- PUSH ES
- PUSH DX
- MOV BP,CX
- MOV WORD PTR [L02E5H],BX
- MOV BYTE PTR [L02EAH],DH
- CALL L0771H
- OR CX,CX
- JZ L04D9H
- OR BP,BP
- JNZ L04C6H
- CALL L04EAH
- JMP SHORT L04C9H
- L04C6H: CALL L0679H
- L04C9H: JC L04D3H
- POP DX
- CALL L05D4H
- POP ES
- POP DI
- JMP SHORT L04D7H
- L04D3H: ADD SP,6
- STC ;Set the carry flag.
- L04D7H: JMP SHORT L04DDH
- L04D9H: POP ES
- POP DI
- POP DX
- STC ;Set the carry flag.
- L04DDH: JC L04E5H
- POP BP
- POP CX
- POP BX
- POP AX
- JMP SHORT L04E9H
- L04E5H: ADD SP,8
- STC ;Set the carry flag.
- L04E9H: RET
- ;
- L04EAH: PUSH AX
- PUSH BX
- PUSH DX
- MOV BX,WORD PTR [L02E5H]
- CMP BX,-1
- JNZ L04FBH
- CALL L0525H
- JMP SHORT L04FEH
- L04FBH: CALL L0575H
- L04FEH: JNC L050FH
- L0500H: MOV AH,59H
- L0502H: MOV BX,0000H
- MSDOS
- XOR AH,AH
- ADD SP,6
- STC ;Set the carry flag.
- JMP SHORT L051FH
- L050FH: CMP BX,-1
- JZ L051FH
- CMP AX,CX
- JZ L051FH
- CALL L05CBH
- ADD SP,6
- STC ;Set the carry flag.
- L051FH: JC L0524H
- POP DX
- POP BX
- POP AX
- L0524H: RET
- ;
- L0525H: PUSH DS
- PUSH ES
- POP DS
- CMP CX,1
- JNZ L0548H
- MOV AH,2
- MOV DL,BYTE PTR ES:[DI]
- MSDOS
- POP DS
- MOV AL,DL
- CALL L05EBH
- PUSH DS
- PUSH ES
- POP DS
- JNC L0546H
- MOV DL,BYTE PTR ES:[DI]+1
- MSDOS
- CLC ;Clear the carry flag.
- L0546H: JMP SHORT L0557H
- L0548H: MOV AH,2
- L054AH: OR CX,CX
- JZ L0557H
- MOV DL,BYTE PTR ES:[DI]
- MSDOS
- INC DI
- DEC CX
- JNZ L054AH
- L0557H: CLC ;Clear the carry flag.
- POP DS
- RET
- ;
- L055AH: 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 L056EH
- SUB BX,CX
- DEC BX
- L056EH: MOV CX,BX
- POP BX
- POP ES
- POP AX
- POP DI
- RET
- ;
- L0575H: XOR AX,AX
- OR CX,CX
- JZ L05CAH
- PUSH DS
- PUSH ES
- POP DS
- MOV AH,40H
- MOV DX,DI
- CMP CX,1
- JNZ L05AFH
- MSDOS
- POP DS
- PUSH AX
- MOV AL,BYTE PTR ES:[DI]
- CALL L05EBH
- POP AX
- PUSH DS
- PUSH ES
- POP DS
- JNC L059DH
- CLC ;Clear the carry flag.
- MOV AH,40H
- INC DX
- MSDOS
- L059DH: PUSHF ;Push flag register.
- CMP BYTE PTR ES:[DI],EOF
- JNZ L05A6H
- MOV AX,CX
- L05A6H: JMP SHORT L05A9H
- ;
- L05A8H: IRET ;Return from interupt.
- L05A9H: PUSH CS
- CALL L05A8H
- JMP SHORT L05C9H
- L05AFH: PUSH BP
- PUSH CX
- CALL L055AH
- MOV BP,CX
- POP CX
- MSDOS
- JNC L05BDH
- JMP SHORT L05C8H
- L05BDH: CMP CX,AX
- JZ L05C8H
- CMP BP,AX
- CLC ;Clear the carry flag.
- JNZ L05C8H
- MOV AX,CX
- L05C8H: POP BP
- L05C9H: POP DS
- L05CAH: RET
- ;
- L05CBH: MOV AX,0027H
- MOV BX,0004H
- MOV CH,1
- RET
- ;
- L05D4H: CMP DH,0FFH
- JZ L05EAH
- TEST DH,80H
- JNZ L05EAH
- PUSH DS
- POP ES
- LEA DI,WORD PTR [L02E8H]
- MOV CX,0002H
- CALL L04EAH
- L05EAH: RET
- ;
- L05EBH: PUSH ES
- PUSH DI
- LES DI,DWORD PTR [L02E1H];Load ES:DI with 32b pointer.
- OR DI,DI
- JZ L060CH
- L05F5H: CMP WORD PTR ES:[DI],0
- CLC ;Clear the carry flag.
- JZ L060CH
- CMP AL,BYTE PTR ES:[DI]
- JC L0608H
- CMP AL,BYTE PTR ES:[DI]+1
- JA L0608H
- STC ;Set the carry flag.
- L0608H: INC DI
- INC DI
- JMP SHORT L05F5H
- L060CH: POP DI
- POP ES
- RET
- ;
- L060FH: POP WORD PTR [l02EBH]
- XOR BX,BX
- XCHG AX,BX
- XCHG AX,DX
- L0617H: DIV WORD PTR [l02EFH]
- XCHG AX,BX
- DIV WORD PTR [L02EFH]
- CMP DX,HT
- JBE L062AH
- ADD DL,37H
- JMP SHORT L062DH
- L062AH: ADD DL,30H
- L062DH: PUSH DX
- INC CX
- OR AX,AX
- JNZ L0637H
- OR BX,BX
- JZ L0670H
- L0637H: CMP CX,3
- JNZ L0649H
- CMP BYTE PTR [SI]+10,','
- JNZ L0647H
- PUSH WORD PTR [L02F8H]
- INC CX
- L0647H: JMP SHORT L066BH
- L0649H: CMP CX,6
- JNZ L065BH
- CMP BYTE PTR [SI]+10,','
- JNZ L0659H
- PUSH WORD PTR [L02F8H]
- INC CX
- L0659H: JMP SHORT L066BH
- L065BH: CMP CX,HT
- JNZ L066BH
- CMP BYTE PTR [SI]+10,','
- JNZ L066BH
- PUSH WORD PTR [L02F8H]
- INC CX
- L066BH: XCHG AX,BX
- XOR DX,DX
- JMP SHORT L0617H
- L0670H: XOR DX,DX
- XOR AX,AX
- PUSH WORD PTR [L02EBH]
- RET
- ;
- L0679H: XOR DX,DX
- OR CX,CX
- JZ L06A0H
- MOV AH,25H
- MOV AL,0
- L0683H: CMP BYTE PTR ES:[DI],AH
- JNZ L0692H
- CMP BYTE PTR ES:[DI]+1,AH
- JZ L0692H
- CMP AL,AH
- JNZ L06A0H
- L0692H: MOV AL,BYTE PTR ES:[DI]
- CALL L05EBH
- JNC L069BH
- INC DI
- L069BH: INC DI
- INC DX
- DEC CX
- JNZ L0683H
- L06A0H: PUSH SI
- XCHG CX,DX
- OR BP,BP
- JZ L06DAH
- DEC BP
- CMP WORD PTR [L02EDH],0
- JNZ L06DAH
- L06AFH: MOV AL,BYTE PTR [SI]+6
- ADD AL,30H
- CMP AL,BYTE PTR ES:[DI]+1
- JNZ L06BCH
- JMP SHORT L06DAH
- L06BCH: CMP AL,'0'
- JNZ L06C4H
- OR DX,DX
- JZ L06C8H
- L06C4H: ADD SI,WORD PTR [SI]
- JMP SHORT L06AFH
- L06C8H: CMP BYTE PTR [L02EAH],0FFH
- JNZ L06D7H
- INC DX
- INC DX
- DEC CX
- DEC CX
- DEC DI
- DEC DI
- JMP SHORT L06DAH
- L06D7H: MOV DX,0FFFFH
- L06DAH: PUSH DI
- SUB DI,CX
- CALL L04EAH
- POP DI
- POP CX
- JNC L06E7H
- JMP SHORT L073DH
- NOP
- L06E7H: PUSH CX
- MOV CX,DX
- CMP BYTE PTR [SI]+6,0
- JZ L06FDH
- OR CX,CX
- JZ L06FAH
- DEC CX
- DEC CX
- INC DI
- INC DI
- JMP SHORT L06FBH
- L06FAH: POP SI
- L06FBH: JMP SHORT L070DH
- L06FDH: OR CX,CX
- JNZ L0704H
- POP SI
- JMP SHORT L070DH
- L0704H: CMP CX,-1
- JNZ L070BH
- XOR CX,CX
- L070BH: OR DI,DI
- L070DH: JZ L073DH
- PUSH BP
- PUSH DI
- PUSH ES
- PUSH CX
- XOR CX,CX
- CMP WORD PTR [L02EDH],0
- JNZ L0721H
- CALL L0899H
- JMP SHORT L0724H
- L0721H: CALL L0744H
- L0724H: JC L072DH
- POP CX
- POP ES
- POP DI
- POP BP
- POP SI
- JMP SHORT L0731H
- L072DH: ADD SP,0AH
- STC ;Set the carry flag.
- L0731H: CMP WORD PTR [L02EDH],0
- JNZ L073DH
- JC L073DH
- JMP L0679H
- L073DH: MOV WORD PTR [L02EDH],0000H
- RET
- ;
- L0744H: XOR DX,DX
- MOV AX,WORD PTR [L02EDH]
- MOV WORD PTR [L02EFH],000AH
- CALL L060FH
- L0752H: POP AX
- MOV BYTE PTR [BX]+02F1H,AL
- INC BX
- CMP BX,'@'
- JNZ L0760H
- CALL L0958H
- L0760H: DEC CL
- JNZ L0752H
- MOV AX,0A0DH
- MOV WORD PTR [BX]+02F1H,AX
- INC BX
- INC BX
- CALL L0958H
- RET
- ;
- L0771H: PUSH SI
- PUSH BX
- XOR SI,SI
- XOR CX,CX
- L0777H: CMP DH,0FFH
- JNZ L0784H
- MOV DI,WORD PTR [SI]+02D9H
- MOV BX,DI
- JMP SHORT L07A9H
- L0784H: TEST DH,2
- JZ L0791H
- LES DI,DWORD PTR [SI]+02BDH;Load ES:DI with 32b pointer.
- MOV BX,ES
- JMP SHORT L07A9H
- L0791H: CMP AX,13H
- JC L07A3H
- CMP AX,27H
- JA L07A3H
- LES DI,DWORD PTR [SI]+02C9H;Load ES:DI with 32b pointer.
- MOV BX,ES
- JMP SHORT L07A9H
- L07A3H: LES DI,DWORD PTR [SI]+02ADH;Load ES:DI with 32b pointer.
- MOV BX,ES
- L07A9H: CMP BX,-1
- JNZ L07C4H
- CMP DH,0FFH
- JNZ L07B6H
- STC ;Set the carry flag.
- JMP SHORT L07C2H
- L07B6H: MOV WORD PTR [L02EDH],AX
- MOV AX,0FFFFH
- MOV BP,0001H
- XOR SI,SI
- CLC ;Clear the carry flag.
- L07C2H: JMP SHORT L07D0H
- L07C4H: CMP BX,0
- JZ L07CCH
- CALL L0820H
- L07CCH: ADD SI,4
- CLC ;Clear the carry flag.
- L07D0H: JC L07D8H
- OR CX,CX
- JNZ L07D8H
- JMP SHORT L0777H
- L07D8H: PUSHF ;Push flag register.
- CMP DH,1
- JNZ L0807H
- PUSH DX
- PUSH BP
- PUSH CX
- PUSH ES
- PUSH DI
- PUSH AX
- MOV AX,0500H
- INT 2FH
- CMP AL,0FFH
- POP AX
- JNZ L07F7H
- MOV BX,AX
- MOV AX,0502H
- INT 2FH
- JMP SHORT L07F8H
- L07F7H: STC ;Set the carry flag.
- L07F8H: JNC L07FFH
- POP DI
- POP ES
- POP CX
- JMP SHORT L0805H
- L07FFH: ADD SP,6
- CALL L0811H
- L0805H: POP BP
- POP DX
- L0807H: JMP SHORT L080AH
- ;
- L0809H: IRET ;Return from interupt.
- L080AH: PUSH CS
- CALL L0809H
- POP BX
- POP SI
- RET
- ;
- L0811H: 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
- ;
- L0820H: CMP BX,1
- JNZ L0842H
- CMP WORD PTR [L02D5H],-1
- JZ L0842H
- CMP AX,0FFFFH
- JNZ L083CH
- PUSH AX
- MOV AX,WORD PTR [L02EDH]
- CALL DWORD PTR [L02D5H]
- POP AX
- JMP SHORT L0840H
- L083CH: CALL DWORD PTR [L02D5H]
- L0840H: JMP SHORT L085CH
- L0842H: XOR CX,CX
- CMP DH,0FFH
- JZ L084FH
- MOV CL,BYTE PTR ES:[DI]+3
- JMP SHORT L0858H
- L084FH: CMP BYTE PTR CS:[DI],DH
- JNZ L0858H
- MOV CL,BYTE PTR CS:[DI]+3
- L0858H: ADD DI,4
- STC ;Set the carry flag.
- L085CH: JNC L088BH
- CLC ;Clear the carry flag.
- L085FH: OR CX,CX
- JZ L087CH
- CMP DH,0FFH
- JZ L086DH
- CMP AX,WORD PTR ES:[DI]
- JMP SHORT L0870H
- L086DH: CMP AX,WORD PTR CS:[DI]
- L0870H: JNZ L0874H
- JMP SHORT L087DH
- L0874H: DEC CX
- JZ L087CH
- ADD DI,4
- JMP SHORT L085FH
- L087CH: STC ;Set the carry flag.
- L087DH: JC L088BH
- CMP DH,0FFH
- CLC ;Clear the carry flag.
- JNZ L0887H
- PUSH CS
- POP ES
- L0887H: ADD DI,WORD PTR ES:[DI]+2
- L088BH: JC L0893H
- XOR CH,CH
- MOV CL,BYTE PTR ES:[DI]
- INC DI
- L0893H: MOV BYTE PTR [L02E7H],0
- RET
- ;
- L0899H: XOR BX,BX
- CMP BYTE PTR [SI]+6,0
- JNZ L08B2H
- MOV WORD PTR [BX]+02F1H,2D20H
- INC BX
- INC BX
- MOV BYTE PTR [BX]+02F1H,20H
- INC BX
- CALL L0958H
- L08B2H: POP BP
- XOR BX,BX
- XOR DX,DX
- MOV BYTE PTR [L02E7H],CL
- MOV AL,BYTE PTR [SI]+9
- CMP AL,CL
- JBE L08E0H
- SUB AL,CL
- MOV DH,AL
- TEST BYTE PTR [SI]+7,80H
- JZ L08E0H
- L08CCH: MOV AL,BYTE PTR [SI]+10
- MOV BYTE PTR [BX]+02F1H,AL
- INC BX
- CMP BX,'@'
- JNZ L08DCH
- CALL L0958H
- L08DCH: DEC DH
- JNZ L08CCH
- L08E0H: CMP BYTE PTR [SI]+8,0
- JZ L08F3H
- CMP BYTE PTR [SI]+8,CL
- JNC L08F3H
- SUB CL,BYTE PTR [SI]+8
- MOV DL,CL
- MOV CL,BYTE PTR [SI]+8
- L08F3H: OR CX,CX
- JZ L091BH
- L08F7H: TEST BYTE PTR [SI]+7,0FH
- JNZ L0909H
- TEST BYTE PTR [SI]+7,10H
- JZ L0909H
- MOV AL,BYTE PTR ES:[DI]
- INC DI
- JMP SHORT L090AH
- L0909H: POP AX
- L090AH: MOV BYTE PTR [BX]+02F1H,AL
- INC BX
- CMP BX,'@'
- JNZ L0917H
- CALL L0958H
- L0917H: DEC CL
- JNZ L08F7H
- L091BH: TEST BYTE PTR [SI]+7,80H
- JNZ L0939H
- OR DH,DH
- JZ L0939H
- L0925H: MOV AL,BYTE PTR [SI]+10
- MOV BYTE PTR [BX]+02F1H,AL
- INC BX
- CMP BX,'@'
- JNZ L0935H
- CALL L0958H
- L0935H: DEC DH
- JNZ L0925H
- L0939H: TEST BYTE PTR [SI]+7,0FH
- JNZ L0947H
- TEST BYTE PTR [SI]+7,10H
- JZ L0947H
- JMP SHORT L0953H
- L0947H: OR DL,DL
- JZ L0953H
- L094BH: POP WORD PTR [L02EBH]
- DEC DL
- JNZ L094BH
- L0953H: CALL L0958H
- PUSH BP
- RET
- ;
- L0958H: PUSH CX
- PUSH ES
- PUSH DI
- PUSH DS
- POP ES
- MOV CX,BX
- XOR BX,BX
- LEA DI,WORD PTR [L02F1H]
- CALL L04EAH
- JC L096FH
- POP DI
- POP ES
- POP CX
- JMP SHORT L0973H
- L096FH: ADD SP,6
- STC ;Set the carry flag.
- L0973H: RET
- L0974H: DB 1,5,0,1,0FFH,0FFH
- DB 4,0,11H,45H,78H,74H
- DB 65H,6EH,64H,65H,64H,20H
- DB 45H,72H,72H,6FH,72H,20H
- DB 25H,31H
- ;
- L098EH: DB 0EH,7,8DH,3EH,74H,9
- DB 83H,0C1H,20H,0C3H,2,5
- DB 0,1,0FFH,0FFH,4,0
- DB 0EH,50H,61H,72H,73H,65H
- DB 20H,45H,72H,72H,6FH,72H
- L09ACH: DB 20H,25H,31H
- ;
- L09AFH: DB 0EH,7,8DH,3EH,98H,9
- DB 83H,0C1H,1DH,0C3H,0FFH,5
- DB 0,8,1,0,20H,0
- DB 2,0,34H,0,3,0
- DB 3BH,0,2CH,1,5CH,0
- DB 2DH,1,82H,0,2EH,1
- DB 9EH,0,2FH,1,0B2H,0
- DB 30H,1,0FCH,0,17H
- DB 'Incorrect DOS version',CR,LF,LF
- DB '-- More --$'
- DB 'Too many arguments in command line',CR,LF
- DB 29H,'Displays output one screen at a time.',CR,LF,CR,LF
- DB 1FH,'MORE < [drive:][path]filename',CR,LF
- DB 17H,'command-name | MORE',CR,LF,CR,LF
- DB 4DH,' [drive:][path]filename Specifies a file to display one screen at a time.',CR,LF
- DB 4FH,' command-name Specifies a command whose output will be displayed.',CR,LF
- ;
- L0B25H: DB 0EH,7,8DH,'>',0B9H
- DB HT,81H,0C1H,'r',1
- DB 0C3H
- L0B30H: DB CR,LF
- L0B32H: DB 2,0
- L0B34H: DB CR,LF,CR,LF
- L0B38H: DB 4,0 ;end of file .....
- Code_Seg ENDS
- END L0100H