; ******************************************************* ; * * ; * 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