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

    {
    Author : MARCO MILTENBURG

    Here's an overview of INT13h, Function 8 :

    Name  : Get drive parameters

    Input : AH = 08h
            DL = <drive>   00h - 7Fh : Floppy disk
                           80h - FFh : Harddisk

    Output: if succesfull
            -------------
            Carry is cleared
            BL = <driveType>    01 : 360 KBytes, 40 tracks, 5.25 Inch
                                02 : 1,2 MBytes, 80 tracks, 5.25 Inch
                                03 : 720 KBytes, 80 tracks, 3.5 Inch
                                04 : 1,44 MBytes, 80 tracks, 3,5 Inch
            CH = Lower 8 bits of maximum cylindernumber
            CL = bits 6-7 : Highest 2 bits of maximum cylindernumber
                 bits 0-5 : Maximum sectornumber
            DH = Maximum headnumber
            DL = Number of connected drives
            ES:DI = Pointer to disk drive parameter table

            if failed
            ---------
            Carry is set
            AH = errorstatus

    As you can see, you must do more to get the cylindernumber. Here's a little
    pascal code :
    }

    Uses
      Dos;

    Const
      DriveTypes : Array[0..4] of String[18] = ('Harddisk          ',
                                                '360 kB - 5.25 Inch',
                                                '1.2 MB - 5.25 Inch',
                                                '720 kB - 3.5 Inch ',
                                                '1.44 MB - 3.5 Inch');
    Var
      Regs      : Registers;
    begin
      Regs.AH := $08;
      Regs.DL := $80;
      Intr($13, Regs);

      WriteLn ('DriveType : ', DriveTypes[Regs.BL]);
      WriteLn ('Cylinders : ', 256 * (Regs.CL SHR 6) + Regs.CH + 1);
      WriteLn ('Sectors   : ', Regs.CL and $3F);
      WriteLn ('Heads     : ', Regs.DH + 1);

    end.
    {
    This will give you the right information from your diskdrives. I noticed that
    my harddisks will always be reported as driveType 0 (zero). I don't know for
    sure if that is documented, but it seems to be logical ;-).
    }

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