'=========================================================================== ' Subject: REPORTS DISK INFORMATION Date: 06-20-95 (00:00) ' Author: Dave Navarro, Jr. Code: PB ' Origin: Christy Gemmell Packet: DISK.ABC '=========================================================================== ' DISKID.BAS reports disk volume and serial number from boot sector ' ' Author: Christy Gemmell (christy.gemmell@almac.co.uk) ' Date: 12/4/1992 ' ' Captured from alt.lang.basic newsgroup on July 20, 1995 and converted ' to PowerBASIC by Dave Navarro, Jr. (dave@powerbasic.com) TYPE ParaBlock Info AS INTEGER ' Call information level SerNo AS LONG ' Disk serial number Label AS STRING * 11 ' Volume label FlSys AS STRING * 8 ' File system type END TYPE INPUT "Which drive - for default"; D$ GetDiskID D$, S$, V$, F$ PRINT PRINT "Disk information for drive "; D$ PRINT "----------------------------" PRINT "Volume label : "; V$ PRINT "Serial number : "; S$ PRINT "File system : "; F$ END SUB GetDiskID (Drive$, Serial$, Volume$, FileSys$) DIM Para AS ParaBlock ' Buffer for drive parameter block Para.Info = 0 ' Information level always zero REG 1, &H440D ' Generic IOCTL device request IF Drive$ = "" THEN ' If no drive specified REG 2, 0 ' then use default ELSE ' Otherwise convert REG 2, ASC(UCASE$(Drive$)) - 64 ' drive letter to number END IF ' A: = 1, B: = 2 etc REG 3, &H866 ' Subfunction: get drive ID REG 8, VARSEG(Para) ' Segment of buffer REG 4, VARPTR(para) ' Offset of buffer CALL INTERRUPT &H21 ' Invoke DOS Serial$ = HEX$(Para.SerNo) ' Get serial number Volume$ = Para.Label ' Get volume label FileSy$ = Para.FlSys ' Get file system type END SUB