home *** CD-ROM | disk | FTP | other *** search
- ; CURDIR.ASM
- ;
- ; by Leonard Zerman
- ;
- ; Placed in the public domain by Tom Rettig Associates, 10/22/1990.
- ;
- ;---------------------------------------------------------------
- ; SYNTAX: memvar = CURDIR( [<drive>] )
- ;
- ; RETURNS: Current disk directory on specified drive,
- ; or default drive if no drive is specified.
- ;---------------------------------------------------------------
- ;
- INCLUDE EXTENDA.INC
- DATASEG
-
- CLpublic <CURDIR>
-
- CLstatic <byte DRIVEBUFF ' :\' 65 DUP (0)>
- CLstatic <byte NULLSTR 0>
- CLstatic <cptr OLD_INT24>
-
- CLfunc char CURDIR <char DRIVE>
-
- CLcode
-
- PUSH DS ; Save caller's DS
- PUSH ES
- MOV AL,24H
- DOSREQ 35H ; GET INT 24 vector.
-
- MOV SI,OFFSET OLD_INT24
- MOV [SI],BX
- MOV [SI+2],ES
- PUSH DS
-
- MOV AX,CS
- MOV DS,AX
- MOV DX,OFFSET NEW_INT24-CODESEG
- MOV AL,24H
- DOSREQ 25H ; SET INT 24 vector.
-
- POP DS
- XOR DL,DL ; assume no parm
- CMP PCOUNT,1
- JG ERROR
- JL CURDIR1
- TESTNUL DRIVE
- JZ CURDIR1
- LES DI,DRIVE
- XOR DL,DL ; assume no parm
- MOV DL,BYTE PTR ES:[DI]
- AND DL,0DFH ; Force to upper case
- SUB DL,'A'-1 ; Convert to numeric code (A=1, etc.)
- CURDIR1:
- MOV SI,OFFSET DRIVEBUFF
- MOV AX,SEG DRIVEBUFF
- MOV DS,AX
- CMP DL,0
- JNE CURDIR1A
- DOSREQ 19H ; Get current drive
- ADD AL,'A' ; Convert to ASCII
- MOV DS:[SI],AL
- JMP SHORT CURDIR1B
- CURDIR1A:
- MOV DS:[SI],DL ; Store drive number in
- ; CUR_DRIVE
- ADD BYTE PTR DS:[SI],'A'-1 ; Convert to ASCII
- CURDIR1B:
- MOV SI,OFFSET DRIVEBUFF+3
- MOV AX,SEG DRIVEBUFF
- MOV DS,AX
- DOSREQ 47H ; Get directory
-
- JNC CURDIR2
- ERROR:
- MOV DI,OFFSET NULLSTR
- MOV AX,SEG NULLSTR
- MOV ES,AX
- JMP SHORT EXIT
-
- CURDIR2:
- MOV DI,OFFSET DRIVEBUFF
- MOV AX,SEG DRIVEBUFF
- MOV ES,AX
-
- EXIT:
- PUSH ES
- PUSH DI
- MOV DX, SEG OLD_INT24
- MOV DS,DX
- MOV DX,WORD PTR OLD_INT24
- MOV AX,WORD PTR OLD_INT24[2]
- MOV DS,AX
- MOV AL,24H
- DOSREQ 25H ;set old vector
- POP AX
- POP DX
- POP ES
- POP DS
- CLret DX,AX
-
- ;--------------------------------------
- WORKFUNCS
- NEW_INT24 PROC FAR
-
- IRET
-
- NEW_INT24 ENDP
- ENDWORK
- ;--------------------------------------
- ;**************************************
- END
-
-