javispedro1 wrote on 2024-07-24, 17:31:
How rare is that the BIOS setup program is not using int13x (even if the BIOS actually provides them)?
Why does the win9x boot disk fdisk also show 8GB ? (it should be DOS 7 disk, and therefore capable of using int13x....).
So the term "BIOS" refers to three different things here when we are talking about storage:
- There is the setup UI that you get into during boot by pressing DEL or whatever
- There is the drive table that keeps the Cylinders, Heads, Sectors configuration
- There is the INT 13h handler that gets real mode requests for data and pulls it from storage
There can be issues along any of these parts.
One example is Phoenix BIOS 4.03 & 4.04. There is a bug in the BIOS setup UI that let you attempt to enter values that are larger than the size of the memory that it allocated to hold your input. Enter a drive larger than 3277 MB and the setup UI immediately locks hard. Boom. At the time that these came out in 1994, 3GB seemed pretty unrealistic for a desktop. I guess it didn't make it into the dev's test cases.
Many BIOS before 1998 won't accept Cylinder values larger than 65535 in the cylinder field of the drive table. They were effectively capped at ~30GB. If they autodetect a drive with Cylinders > 65535, the POST behavior can be "undefined". Depends on what memory was overwritten in the overflow.
There are many examples of cases where the Setup and the Drive table can configure and hold the values, but the INT13h handler in the BIOS doesn't work with the large values. Immediate failure isn't the worst case here. It can be more unpleasant if the INT13h handler just discards the unexpected bits and effectively maps multiple Cylinder values to the same place on the drive.
You get the same issues when you try to bring in 3rd party drivers for DOS or Windows that are older than your storage. It's not uncommon to find storage drivers that have the same issues as a BIOS at 512MB (<1994), 8GB (<1996), and 128GB (<2001). Some DOS drivers think they know best and overwrite the active copy of bios drive table with values that they like when the driver loads. If you are unlucky enough to do a lot of write operations before your computer crashes, your data gets shredded.
Then these trickle down to the OS limitations, DOS <= 3.3 @ 32MB, DOS <= 7.0 w@ 8GB, Windows < XP @ 128GB etc.