Detecting SUBSTed Drives INT21/32 can be used to retrieve a pointer to the DRIVE PARAMETER TABLE (DPT). On return from the call DS:BX will point to this table. The byte at offset 0 int the DPT will indicate the drive number and the byte at offset 1 will indicate the unit within the drive. If these do not match then the drive is either a RAMdisk or is SUBST'ed. RAMdisks usually have a 0 at offset 1. 1. issue INT 21/32 to get pointer to DPT in DS:BX 2. if ( DS:[BX] == DS:[BX+1] ) then drive is not substituted, done 4. else if ( DS:[BX] == 0 && not Drive A:) then drive may be a RAMDRIVE else drive is SUBSTed (or Bernoulli box) - see DRIVE PARAMETER TABLE and INT 21h/32h |
|