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

    (*
    ===========================================================================
     BBS: Canada Remote Systems
    Date: 08-29-93 (15:41)             Number: 36579
    From: KENT BRIGGS                  Refer#: NONE
      To: HOWARD HUANG                  Recvd: NO
    Subj: CHECK AVAILABLE DRIVES         Conf: (1221) F-PASCAL
    ---------------------------------------------------------------------------
     -=> Quoting Howard Huang to All <=-

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

     Howard, here's what I use:
    *)
    program show_drives;
    uses dos;
    var
      reg: registers;
      drv: array[1..3] of byte;
      drvlist: string[26];
      fcb: array[1..37] of byte;
      i: integer;
    begin
      drvlist:='';
      for i:=1 to 26 do         {Try drives A..Z}
      begin
        drv[1]:=i+64;           {A=ASCII 65, etc}
        drv[2]:=ord(':');
        drv[3]:=0;
        reg.ax:=$2906;          {DOS function 29h = Parse Filename}
        reg.si:=ofs(drv[1]);    {Point to drive string}
        reg.di:=ofs(fcb[1]);    {Point to File Control Block}
        reg.ds:=dseg;
        reg.es:=dseg;
        msdos(reg);             {DOS Interrupt}
        if reg.al<>$ff then drvlist:=drvlist+chr(i+64);
      end;
      writeln('Available drives = ',drvlist);
    end.

    ___ Blue Wave/QWK v2.12
    --- Renegade v07-17 Beta
     * Origin: Snipe's Castle BBS, Waco TX   (817)-757-0169 (1:388/26)

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