b0by007 wrote on 2024-07-25, 20:04:
I see a lot of people are "experts" in this bios hdd limitation. But those explanations are just confusing.
From experience on one of my retro pc:
I had a hdd that in bios is detected 8 gb but, like the OP said, if I made the partition with full size on other pc, windows 95/98 will see all size, BUT it cant write more then 8 gb and even scandisk dos/win gives reading errors when it reaches the 8 gb limit, even though in windows 95/98 it apears the full drive size.
You simply cannot move a > 500 MiB disk from one PC to another and expect things to work. Different BIOS may map (E)CHS values differently once your disk is large enough. This will result in corruption beyond one's imagination. It is not just simply wraparound; it may literally arrange data on disk in a different way. The CHS value in the partition table will be interpreted as pointing to some other logical block. The first partition may work, but appear truncated, or just the first cylinder will work, and then everything else is corrupted. Who knows.
As I don't remember exactly who said: if you want to deal with long-gone computers, you will also deal with long-gone problems.
These are not bugs by any definition, it's just lack of standardization , crappy limits in crappy APIs, and trying to keep backwards compatibility with those.
Era-tools like Ghost actually try to work around this, to varied success. And some BIOS have workarounds in that they try to create a CHS mapping that keeps your partitions aligned to the cylinder, so as to be consistent with whichever computer partition the disk. This is a pain inducing heuristic as any other (and likely the reason "keep your partitions cylinder-aligned" stayed as common wisdom for so long).
In part, that's why I ask for a user-friendly guide to be stickied. There is a recent long mail discussion in the FreeDOS mailing list about this because Jim himself couldn't get FD to boot in the pocket 386, as he was trying to move a disk from a computer with LBA(as in, int13x) to a computer without (this even with the partitions all CHS!). In this case, it was because FD installs an LBA-only boot sector if you run SYS from a LBA-capable system. Everything is so full of gotchas that everyone, even devs, are stumped from time to time.