home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l440 / 2.ddi / CHAP2 / LASTDRV2.BAS < prev    next >
Encoding:
BASIC Source File  |  1990-09-25  |  1.1 KB  |  46 lines

  1. REM LASTDRV2.BAS
  2. REM $INCLUDE: 'QB.BI'
  3.  
  4. DEF FNHI (x) = x \ &H100
  5. DEF FNLO (x) = x AND &HFF
  6.  
  7. FUNCTION DOSVERSION
  8.     DIM Regs AS RegType
  9.     Regs.ax = &H3000
  10.     CALL INTERRUPT(&H21, Regs, Regs)
  11.     DOSVERSION = Regs.ax
  12. END FUNCTION
  13.  
  14. SUB DOSEXIT(errorlevel)
  15.     CLOSE
  16.     DIM Regs AS RegType
  17.     Regs.ax = &H4C00 + errorlevel
  18.     CALL INTERRUPT(&H21, Regs, Regs)
  19. END SUB
  20.  
  21. REM based on DOS version number, find offset of LASTDRIVE
  22. lastdrvofs = &H21
  23. vers = DOSVERSION
  24. IF FNLO(vers) < 3 THEN DOSEXIT(0)
  25. IF (FNLO(vers) = 3) AND (FNHI(vers) = 0) THEN lastdrvofs = &H1B
  26.  
  27. REM get address of DOS List Of Lists
  28. DIM Regs AS RegTypeX
  29. Regs.ax = &H5200
  30. Regs.es = 0
  31. Regs.bx = 0
  32. REM to use current value of DS, set to -1
  33. Regs.ds = -1
  34. CALL INTERRUPTX(&H21, Regs, Regs)
  35. IF (Regs.es = 0) AND (Regs.bx = 0) THEN DOSEXIT(0)
  36.  
  37. REM peek at LASTDRIVE field within DOS List Of Lists
  38. DEF SEG = Regs.es
  39. lastdrv = PEEK(Regs.bx + lastdrvofs)
  40. IF lastdrv = &HFF THEN DOSEXIT(0)
  41.  
  42. REM print LASTDRIVE letter, return LASTDRIVE number
  43. PRINT "LASTDRIVE="; CHR$(ASC("A") - 1 + lastdrv)
  44. CALL DOSEXIT(lastdrv)
  45. END
  46.