Most old BIOSes on PCs and compatibles provided means to enter hard drive geometries (cylinder/head/sector as well as more esoteric things like write precomp) when configuring the machine.

Some (AMI for sure, also Phoenix? Others?) had a table of geometries for 40 or so drives, plus the ability to enter custom values. (Over the years larger drives, LBA, etc. would render this less relevant)

Anyway, my question is: where did these tables of hardcoded geometries originate from? Was there a list that all BIOS vendors used? Were they ever useful? In all the times in the late 80s/early 90s I never had a drive that mapped to an already-defined geometry.


The tables were built using the parameters for various real hard drives. For example, type 1 is used for the original Shugart drives used in the PC XT (ST506). So the intention was for the drive types to be useful, and at least some of them were; in the linked page, scroll down to the list of Award-486 drive types to see more examples.

Each BIOS manufacturer had a list, as can be seen in the page linked above. The first 14 entries came from the PC AT’s BIOS, the rest varied although various settings show up in common across different BIOSes. The list of drives would change from one generation of BIOS to another, sometimes even from on BIOS revision to another; but all clones running the same BIOS version could be expected to have the same list of drive types.

The end of the table came when drives acquired the ability to report their own geometry; that allowed the users to set everything to “auto” (although setups still had to allow manual entry for a long time, to support older drives).

  • 1
    Note that for later drives, even though you eventually had to set the values manually, they were mostly fake and the drive did an internal translation. This is because the different parameter hat quite narrow limits, for instance only 1024 cylinders were possible (or so), but 256 heads - which no drive ever physically had. So when drives got bigger, they used a fake head count to map for additional cylinders or sectors. – PMF Jan 28 '20 at 16:26
  • 1
    @PMF indeed, and that’s even the case with some entries in the tables, not just for later drives that had to be set up manually. – Stephen Kitt Jan 28 '20 at 16:31

That custom started in a time where only a few tens of hard drive models plausibly usable with PC compatibles was on the market. This was the time of ST506 (MFM) style interfaces, and installing hard drives in that kind of system was a hard enough drive already without adding an additional source for dire mistakes and confusion (much potential for ending up with something that seemed to work at first and later failed catastrophically...).

It ended at the latest when ISA slots were phased out, since lack of an ISA slot made it impractical to use this style of drives with their ISA-only controller cards (BTW, with ST506 interface "controller", not "host adapter", is the correct term!)

Not precook, precomp - write precompensation.

  • precook <= autocorrect fail from last night – Joe Jan 28 '20 at 21:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.