VOGONS


8033 HD Size Limit In Bios

Topic actions

Reply 20 of 31, by douglar

User metadata
Rank l33t
Rank
l33t
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.

It’s complicated. Sounds like the addresses are looping around, going back to the beginning of the drive once you go past 8GB, but it’s hard to say because it’s complicated. They might just be failing.

What is the build date & make of your BIOS? What is the drive table enty look like for your drive? Is there anything that might enable LBA in your BIOS? Are you using an Option Rom or a drive overlay? Are you using Win95 or Win98? That last one is pretty important. Win95 <= OSR1 doesn’t support drives > 8GB. Win95 OSR2 or newer does.

Reply 21 of 31, by akimmet

User metadata
Rank Member
Rank
Member
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.

This is because PC drive space limitations are confusing.

Reply 22 of 31, by jakethompson1

User metadata
Rank Oldbie
Rank
Oldbie

BIOS vendors have an excuse for the 504MB, 8.4GB and 137GB limits because it wasn't defined how to handle a drive that large and they had no way of predicting the future.
All the other limits are just bugs.

Reply 23 of 31, by akimmet

User metadata
Rank Member
Rank
Member

There are just so many firmware and software bugs related to storage size. It can make giving a straightforward answer difficult.

Reply 24 of 31, by javispedro1

User metadata
Rank Member
Rank
Member
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.

Reply 25 of 31, by Syntho

User metadata
Rank Member
Rank
Member
jakethompson1 wrote on 2024-07-25, 18:51:

Is it possible you have moved this drive between machines and/or partitioned it with something smarter than Win95?

Good question, because the answer is both yes and no. The drive was partitioned using another modern machine, and from there I tried everything above. When that started to fall apart, I thought that maybe the modern system wasn't doing it quite as well as an older system, so I deleted all partitions and reformatted the drive using my Win98 boot disk (fdisk and the format command). This made no different unfortunately. fdisk still showed the same thing.

Reply 26 of 31, by javispedro1

User metadata
Rank Member
Rank
Member
Syntho wrote on 2024-07-26, 16:12:
jakethompson1 wrote on 2024-07-25, 18:51:

Is it possible you have moved this drive between machines and/or partitioned it with something smarter than Win95?

Good question, because the answer is both yes and no. The drive was partitioned using another modern machine, and from there I tried everything above. When that started to fall apart, I thought that maybe the modern system wasn't doing it quite as well as an older system, so I deleted all partitions and reformatted the drive using my Win98 boot disk (fdisk and the format command). This made no different unfortunately. fdisk still showed the same thing.

This answer eliminates my questions and makes one diagnosis the only correct one: your BIOS simply has no int13x support.

I bet win9x booted and reported the real size because it saw the LBA mark in the partition table (left by the "modern" partition manager), so it thinks this is is a BIOS with int13x support. It then bypasses the BIOS via ESDI_506.PDR and uses LBA directly. But even if 9x appears to work, you are in the risky situation I was describing in the previous post: as your BIOS in truth does NOT have int13x support, if by any accident one of the files required for 9x to boot ends up moving past the 8GB barrier, windows will fail to boot (or worse) .
Which is why MS does not enable LBA unless there are some signs that the BIOS supports LBA first (such as, the LBA mark in the partition's type, which fdisk will leave only if int13x support is there in the first place).

Any way, joining the rest of the commenters; If you really want to use more than the first 8GB, you need either:
a) an int13x capable BIOS update,
b) ez-drive or similar LBA extension program,
c) or some other type of disk controller altogether such as SCSI.

Reply 27 of 31, by douglar

User metadata
Rank l33t
Rank
l33t
javispedro1 wrote on 2024-07-26, 17:04:

This answer eliminates my questions and makes one diagnosis the only correct one: your BIOS simply has no int13x support.

Is that what you really meant to say? If your BIOS had no INT13h support, you wouldn't be able to access storage in DOS, because that's how DOS accesses storage--- https://en.wikipedia.org/wiki/INT_13H

Maybe you meant to say that the BIOS Int13h handler is limited to 1024 Cylinders & 16 Heads ? Or maybe that the Int13h handler doesn't have support for LBA?

Reply 28 of 31, by jmarsh

User metadata
Rank Oldbie
Rank
Oldbie

int13x support = int13 eXtensions.

OP could easily confirm these by running something like astra (check under information->drives).

Reply 29 of 31, by douglar

User metadata
Rank l33t
Rank
l33t
jmarsh wrote on 2024-07-26, 19:27:

int13x support = int13 eXtensions.

OP could easily confirm these by running something like astra (check under information->drives).

OK, thanks for explaining that. Hadn't seen (or maybe just hadn't noticed) the "int 13x" notation before.

Reply 30 of 31, by Syntho

User metadata
Rank Member
Rank
Member
jmarsh wrote on 2024-07-26, 19:27:

int13x support = int13 eXtensions.

OP could easily confirm these by running something like astra (check under information->drives).

Exactly what am I looking for in Astra? Under the drives I see nothing relating to the int13x capability. I do see LBA mode supported, but that's it. Maybe it's not there because it isn't supported?

EDIT: I used the DOS version instead just now and under Drives it says:

BIOS Drives: INT 13h Extensions: 2.1

Reply 31 of 31, by douglar

User metadata
Rank l33t
Rank
l33t
Syntho wrote on 2024-07-28, 15:01:

EDIT: I used the DOS version instead just now and under Drives it says:

BIOS Drives: INT 13h Extensions: 2.1

Int 13h Extension Versions:
Version 1.0: Introduced with the initial implementation of the INT 13h extensions, providing basic support for accessing drives using Logical Block Addressing (LBA).
Version 2.0: Added support for larger drives and more detailed drive information. This version began addressing the limitations of earlier BIOS functions, allowing access to drives larger than 8.4 GB.
Version 2.1: Introduced additional features, including extended error reporting and enhanced drive parameter support. This version further improved compatibility and performance for larger drives.
Version 3.0: Enhanced drive geometry handling and added more robust support for modern storage devices.