Hi George!
Thus quoth George White to MIKE RUSKAI:
GW> It's a valid number for heads, Jonathan has got it slightly wrong
GW> (a rare event so note it down - but see below), afaiaa the BIOS
GW> INT13 C/H/S access call limits are:-
GW> Cylinders 0 to 1023 = 1024
GW> Heads 0 to 255 = 256
GW> Sectors 1 to 63 = 63
GW> That form of translation on ATA (or IDE if you insist) drives over
GW> 504 MB is used as the ATA C/H/S addressing scheme is limited to
GW> _16_ heads (according to Ralf Brown's Interrupt List it's for
GW> compatibility with the then standard Western Digital WD1003
GW> controller for ST506 interface drives which could only support 16
GW> heads). The alternative for drives over 504 MB is to use LBA
GW> addressing (which is the only way for drives over 8 GB).
I'm sorry, but you mixed up two totally different things:
1) there is the CHS translation visible at the BIOS API as you described with
its value ranges. This translation applies to any sort of transport technology
(SCSI, ATA, ...)
2) there is another CHS translation - or much more correct: addressing scheme
- used on the EIDE channel with these limits:
Cylinders 0 to 65535 = 65536
Heads 0 to 15 = 16
Sectors 1 to 63 = 63
Some BIOS implementations have bugs which prevent the use of 16 logical heads.
So, as you stated, any EIDE command initiator *should* use the LBA addressing
scheme for drives with capacities above 7.8GiB because the ATA spec tells you
so (f.e. Fujitsus just fail if you don't); but the CHS addressing scheme is
good for up to about 31GiB (and f.e. IBMs support that). Any bigger drive
*requires* the LBA addressing scheme.
bye, Dani
--- Sqed/32 1.14/r01354
114/477
143/1
5100/8
* Origin: Nachtigall/2,Nuernberg/Ger,+49-911-861319,Z19+ISDN (2:2490/2576)
|