The Fixed Disk Parameter Table (FDPT), a structure which is normally constructed by the BIOS at POST time, is utilized to determine actual geometry. The FDPT for the drive is referenced by the address contained in the INT 41h or INT 46h vectors for the master and slave drive, respectively, on the primary controller. The primary controller is the IDE controller whose base port address is 1F0h. For determination of actual disk geometry, the table must be constructed as described below:
FDPT_Apparent_Cyls dw ? ; # of apparent cylinders FDPT_Apparent_Heads db ? ; # of apparent heads FDPT_Signature db ? ; signature (Axh) FDPT_Actual_SPT db ? ; # of actual sectors per track FDPT_Precompensation dw ? ; write precompensation FDPT_Reserved db ? ; reserved FDPT_Control db ? ; drive control byte FDPT_Actual_Cyls dw ? ; # of actual cylinders FDPT_Actual_Heads db ? ; # of actual heads FDPT_Landing dw ? ; landing zone FDPT_Apparent_SPT db ? ; # of apparent sectors per track FDPT_Checksum db ? ; checksum byte
The checksum of the entire table must be zero. Therefore, the checksum byte should be chosen to cause the summation of all of the bytes in the table to equal 00h. The signature must be set to Axh (only the high nibble is checked). These two characteristics indicate that translation is occurring in the BIOS, and that the actual geometry in the table is correct.
Once the two characteristics described above have been verified by Windows 95, the parameters for the actual number of heads, sectors per track, and cylinders are extracted from the table and are used as the actual geometry of the drive. Windows 95 then verifies that the actual and apparent geometry values that have been retrieved do indeed facilitate accessing the disk drive correctly.