[Back to DRIVES SWAG index]  [Back to Main SWAG index]  [Original]

{
KENT BRIGGS

> Does anyone know how to check if a drive is valid Without accessing
> it to see? For example, if the available drives on a system are: A, B,
> C, E. How do you check if drive A is installed Without having the
> floppy drive lights go on. I use TP6, so if you include a sample code,
> could you make it compatible With it.
}

Program Show_drives;

Uses
  Dos;

Var
  Drv : Array [1..3] of Byte;

Procedure ReportDrives;
Var
  Regs    : Registers;
  Count   : Integer;
  DrvList : String[26];
  Fcb     : Array [1..37] of Byte;
begin
  DrvList := '';
  For Count := 1 to 26 do         {Try drives A..Z}
  begin
    Drv[1]  := Count + 64;         {A=ASCII 65, etc}
    Drv[2]  := Ord(':');
    Drv[3]  := 0;
    Regs.AX := $2906;          {Dos Function 29h = Parse Filename}
    Regs.SI := Ofs(Drv[1]);    {Point to drive String}
    Regs.DI := Ofs(Fcb[1]);    {Point to File Control Block}
    Regs.DS := DSeg;
    Regs.ES := DSeg;
    MsDos(Regs);               {Dos Interrupt}
    if Regs.AL <> $FF then
      DrvList := DrvList + Chr(Count + 64);
  end;
  Writeln('Available drives = ', DrvList);
end;

begin
  ReportDrives;
end.


[Back to DRIVES SWAG index]  [Back to Main SWAG index]  [Original]