'=========================================================================== ' Subject: GET CURRENT DRIVE/DIRECTORY Date: 05-26-98 (17:00) ' Author: Leandro Pardini Code: QB, QBasic, PDS ' Origin: lpardini@cefex.com Packet: DOS.ABC '=========================================================================== '========================================================================== 'CurDrv$ and CurDir$ functions for QBASIC 05-31-1998 '========================================================================== ' 'FUNCTION CurDrv$ Returns the current drive letter, uppercased. ' 'FUNCTION CurDir$ Returns the current directory on default drive. ' '========================================================================== ' | I like mail, so contact me for '__________ ____---____ | any doubt or suggestion you '\_________D /-/---_----' LL&P | have for this/another program, ' _H__/_/ Leandro Pardini | for get my last routines, to ' '-_____|( lpardini@cefex.com | chat about computers and/or ' | programming or to say "Hello". '========================================================================== '$STATIC DEFINT A-Z DECLARE FUNCTION CurDir$ () DECLARE FUNCTION CurDrv$ () '***** DEMO CODE STARTS HERE ***** PRINT "Current drive and directory: "; CurDrv$ + ":\" + CurDir$ '======================== ' Get the current directory on default drive. '============================================ FUNCTION CurDir$ DIM AsmProc AS STRING * 14 DIM AsmBuff AS STRING * 64 MID$(AsmProc, 1, 2) = CHR$(&HB4) + CHR$(&H47) 'MOV AH,47 MID$(AsmProc, 3, 2) = CHR$(&HB2) + CHR$(0) 'MOV DL,00 MID$(AsmProc, 5, 3) = CHR$(&H68) + MKI$(VARSEG(AsmBuff)) 'PUSH S:AsmBuff MID$(AsmProc, 8, 1) = CHR$(&H1F) 'POP DS MID$(AsmProc, 9, 3) = CHR$(&HBE) + MKI$(VARPTR(AsmBuff)) 'MOV SI,P:AsmBuff MID$(AsmProc, 12, 2) = CHR$(&HCD) + CHR$(&H21) 'INT 21 MID$(AsmProc, 14, 1) = CHR$(&HCB) 'RETF DEF SEG = VARSEG(AsmProc) CALL ABSOLUTE(VARPTR(AsmProc)) DEF SEG CurDir$ = LEFT$(AsmBuff, INSTR(AsmBuff, CHR$(0)) - 1) END FUNCTION '========================================================= 'Returns the current drive letter. '============================================================================= FUNCTION CurDrv$ DIM AsmProc AS STRING * 14 DIM AsmBuff AS STRING * 1 MID$(AsmProc, 1, 2) = CHR$(&HB4) + CHR$(&H19) 'MOV AH,19 MID$(AsmProc, 3, 2) = CHR$(&HCD) + CHR$(&H21) 'INT 21 MID$(AsmProc, 5, 2) = CHR$(4) + CHR$(&H41) 'ADD AL,41 MID$(AsmProc, 7, 3) = CHR$(&H68) + MKI$(VARSEG(AsmBuff)) 'PUSH S:AsmBuff MID$(AsmProc, 10, 1) = CHR$(&H1F) 'POP DS MID$(AsmProc, 11, 3) = CHR$(&HA2) + MKI$(VARPTR(AsmBuff)) 'MOV [AsmBuff],AL MID$(AsmProc, 14, 1) = CHR$(&HCB) 'RETF DEF SEG = VARSEG(AsmProc) CALL ABSOLUTE(VARPTR(AsmProc)) DEF SEG CurDrv$ = AsmBuff END FUNCTION