I've read many conflicting views on exaclty how extended CHS works. All
in essence, you divide the cylinders by factors of 2 and multiply the heads
by the same number keeping cylinders <=1024. My confusion is in the
There doesn't seem to be agreement on whether the "test" in the above
algorithm is c<1024 or c<=1024? Taking the former would explain the "famous"
8191 limit on cylinders for DOS and Win95. It would, however, only allow a
maximum translated number of cylinders of 1023 (0 to 1022), not 1024 (0 to
1023), which contradicts what most people say is the 4GB limit (i.e. 1024 x
128 x 63 sectors instead of 1023 x 128 x 63). Taking the latter instead
(c<=1024) explains the 4GB limit because it _does_ allow the cylinders to be
1024. However, if you apply the assembler bit-shift to divide numbers by 2,
you end up concluding that
the maximum number of cylinders is not 8191 (or even 8192 as some punters
have stated) but 8199! I.e., 8199 -> 4099 -> 2049 -> 1024.
Any ideas / opinions?