home *** CD-ROM | disk | FTP | other *** search
-
- ; *******************************************************
- ; * *
- ; * Turbo Pascal Runtime Library Version 5.5 *
- ; * File Name Expansion Routine *
- ; * *
- ; * Copyright (C) 1988,89 Borland International *
- ; * *
- ; *******************************************************
-
- TITLE EXPN
-
- LOCALS @@
-
- CODE SEGMENT BYTE PUBLIC
-
- ASSUME CS:CODE
-
- PUBLIC FExpand
-
- FExpand PROC FAR
-
- ResultP EQU (DWORD PTR [BP+10])
- PathP EQU (DWORD PTR [BP+6])
-
- PUSH BP
- MOV BP,SP
- PUSH DS
- CLD
- LDS SI,PathP
- LODSB
- MOV CL,AL
- XOR CH,CH
- ADD CX,SI
- LES DI,ResultP
- INC DI
- LODSW
- CMP SI,CX
- JA @@1
- CMP AH,':'
- JNE @@1
- CMP AL,'a'
- JB @@2
- CMP AL,'z'
- JA @@2
- SUB AL,20H
- JMP SHORT @@2
- @@1: DEC SI
- DEC SI
- MOV AH,19H ;Get current drive
- INT 21H
- ADD AL,'A'
- MOV AH,':'
- @@2: STOSW
- CMP SI,CX
- JE @@21
- CMP BYTE PTR [SI],'\'
- JE @@3
- @@21: SUB AL,'A'-1
- MOV DL,AL
- MOV AL,'\'
- STOSB
- PUSH SI
- PUSH DS
- MOV AH,47H ;Get current directory
- MOV SI,DI
- PUSH ES
- POP DS
- INT 21H
- POP DS
- POP SI
- JC @@3
- CMP BYTE PTR ES:[DI],0
- JE @@3
- PUSH CX
- MOV CX,-1
- XOR AL,AL
- REPNE SCASB
- DEC DI
- MOV AL,'\'
- STOSB
- POP CX
- @@3: SUB CX,SI
- REP MOVSB
- XOR AL,AL
- STOSB
- LDS SI,ResultP
- INC SI
- MOV DI,SI
- PUSH DI
- @@4: LODSB
- OR AL,AL
- JE @@6
- CMP AL,'\'
- JE @@6
- CMP AL,'a'
- JB @@5
- CMP AL,'z'
- JA @@5
- SUB AL,20H
- @@5: STOSB
- JMP @@4
- @@6: CMP WORD PTR [DI-2],'.\'
- JNE @@7
- DEC DI
- DEC DI
- JMP SHORT @@9
- @@7: CMP WORD PTR [DI-2],'..'
- JNE @@9
- CMP BYTE PTR [DI-3],'\'
- JNE @@9
- SUB DI,3
- CMP BYTE PTR [DI-1],':'
- JE @@9
- @@8: DEC DI
- CMP BYTE PTR [DI],'\'
- JNE @@8
- @@9: OR AL,AL
- JNE @@5
- CMP BYTE PTR [DI-1],':'
- JNE @@10
- MOV AL,'\'
- STOSB
- @@10: MOV AX,DI
- POP DI
- SUB AX,DI
- DEC DI
- STOSB
- POP DS
- POP BP
- RET 4
-
- FExpand ENDP
-
- CODE ENDS
-
- END
-