[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]