Copyright©2004-2005, 2015 by Daniel B. Sedory
NOT to be reproduced in any form without Permission of the Author !
6 to 64-bit Hex Numbers and Limits
(Take this link for an explanation of the hex math involved in various Limits!)
In the early 1980's, disk drives had capacities that were only in the Megabytes.
In 1983, the first PC that could use a disk drive, the IBM PC XT came with a 10 MB
ST-412 drive, and all early drives had separate controller boards plugged into the motherboard (see photo of ST-506 drive on this page). In 1985, the first IDE (Integrated Drive Electronics) drives were created with a controller board
attached to the drive itself. But IBM/Microsoft's DOS 3.30 FDISK was still limited to creating only 32 MiB partitions
It wasn't until late in 1995, that the T13 Technical Committee was formed to develop standards for the ATA (IDE) I/O interface.
"From 1961 - 1996, INCITS was known as Accredited Standards Committee X3, Information Technology. It was established within a year of ISO TC 97 and ECMA as the U.S standards committee for information technology. X3 was accredited by ANSI and it was sponsored in 1961 by ITI, a trade association then known as the Computer and Business Equipment Association (CBEMA). CBEMA was a forum for companies to identify and discuss areas of common concern, and its sponsorship of X3 provided a place for the providers of information technology and systems to receive feedback from users, government agencies, academia and other interested parties." http://www.incits.org/about/history
was limited to a capacity of no more than about 30 Megabytes. Please note: The remainder of this paragraph is conjecture on our part (if you have any documentation concerning decisions made by these engineering groups, please contact us): Some time during the development of an IBM PC with disk drives and the BIOS code that would control their access (this was prior to the release of IBM PC™ DOS 2.00; which was the first IBM PC-DOS that would partition a disk drive with a Partition Table) in an MBR sector, it appears to us that either no one in the drive industry ever considered the consequences of designing and producing standards for their drives without consulting those who made the operating systems that would run on them, or they simply did not care about limiting the capacity of a PC (which some may have regarded as only a fad at that time). Nor, apparently, did anyone from the IBM® PC group (or Microsoft®) care enough about what the disk drive manufacturing groups were doing, before making their BIOS code that had to interface with disk drives!
After viewing the following facts, it will become very clear why we have industry standards committees. Here are the facts concerning what each of those two groups of engineers produced in regards to this limitation:
|The Original IBM® BIOS Code|
|The IBM® / Western Digital® developed|
(IDE/AT) HD Interface "Maximum" Specs
|___1024 Cylinders (or 'Tracks')||___65,536 Cylinders (or 'Tracks') 1|
|____256 Heads (or 'Sides') 2||_____,_16 Heads (or 'Sides')|
|_____63 Sectors/Track||_____,256 Sectors/Track|
The problem that caused this limitation is the fact that both sets of Specs listed above had to interface with each other! So, the maximum number of bytes
that could be accessed was limited to the MINIMUM value when COMPARING the two sets of Specs for each Cylinder, Head and Sector. That gives us the items
highlighted in yellow.
Using those values, we can compute the maximum number of bytes accessible on a PC with such an IBM BIOS and the disk drives of that era:
1024 cylinders x 16 heads/cylinder x 63 sectors/head x 512 bytes/sector = 528,482,304 bytes (or about 528 MB; dividing by 10242 instead gives us the so-called binary MB, or MiB, of: Exactly 504 MiB).
Until this problem was addressed by PC-clone BIOS manufacturers (and eventually IBM), some clever programmers wrote what was called DDO (Dynamic Drive Overlay) software which provided additional code for the BIOS to access drives over 504 MiB. The DDO needed to be installed in at least the first sector of the drive before it could be partitioned and formatted. This code would hide itself from any OS and instead point to whatever sector the real MBR code was actually located at; quite often the 2nd sector on the drive, causing the OS to believe the MBR was on the first sector! At that time both Maxtor® and Western Digital® each had their own versions of DDO software: Maxtor used what they called Maxblast™ (it was created by Ontrack), and the one inlcuded with WD drives of that era was called EZ-Drive (distributed by Microhouse). EZ-Drive was more useful when BIOS code no longer required a DDO, because it was possible to uninstall the EZ-Drive code without having to re-partition and re-format the whole drive. (NOTE: This ability of some code to actually hide itself from an OS was later employed by virus authors and their malicious code infected and was carried by MANY floppy diskettes, and then the PCs they were boot-up from since the first thing such code often did was to infect either the MBR or Boot Sector of a PC and then the PC often spread that virus by infecting the boot sector of virus-free floppy diskettes inserted into it.)
1 Some time later, .
2 At some point during the development of the IBM PC/Microsoft DOS code (either prior to 2.00 or around that time), an error was made by some programmer(s) which ended up limiting the number of heads to only 255 instead of 256 (see our further comments here); which is why the 8.4 GB Partition Table Limit described below is only 8,422,686,720 bytes (1024 x 255 x 63 x 512; or 16,450,560 sectors) instead of the 8,455,716,864 bytes (16,515,072 sectors) listed in our table above.
This limit was essentially imposed by Microsoft DOS at a time long before the existence of USB drives. It wasn't related to any problem in a PC's BIOS, but rather depended solely on the IBM/Microsoft-DOS operating system; this limitation also exists under Microsoft Windows 95 and 98. NOTE: Although Windows 2000 and later may be able to access FAT16 partitions up to 4 GB, Microsoft still recommends to never create such a partition ("To maintain compatibility with MS-DOS, Windows 95, and Windows 98, a FAT16 volume should not be larger than 2 GB." We would also add that some 3rd party software and utility programs will not recognize FAT16 partitions larger than 2 GB). In 1996, Windows 95 could be upgraded to OSR2 which included the FAT32 file system, which far exceeded this 2.1 GB partition-size limit, so data could be migrated from FAT16 to FAT32 partitions if necessary.
Windows 2000 can not format a partition greater than 30 GB using FAT32, but it can use a larger FAT32 partition if it was created under Windows 98/Me. Microsoft claims that they designed it that way! No doubt many users will see that as a convenient explanation to cover up a 'bug' they never fixed. For more information, see: Knowledge Base articles KB 277546 and KB 184006. Even Windows XP has some FAT32 limitations, which are addressed in KB 314463 and KB 310525. These problems may be altered by SP updates; so check on those as well.
Some computer's BIOS can not recognize HDDs over about 32 GB; as a matter of fact, they may even lock-up or hang when you try connecting a larger drive to them! This was our experience with a 'PCChips' M577 Motherboard and a 40 GB drive! Most likely this is the same limit problem that Andries Brouwer discusses under Section 2.11 as the 33.8GB limit ( 65535 x 63 x 16 = 66,059,280 sectors, or 33,822,351,360 bytes ). Since our PC wouldn't even boot-up normally, we had two choices:
1) To jumper the drive as being only 32 GB and then install DDO software allowing the OS to see the full size of the drive, or
2) To FLASH the BIOS! Fortunately, we were able to find a free BIOS source for our motherboard and carry out the procedure without experiencing a dreaded power failure. If there had been a power outage at that time, our M577 Motherboard would have become useless! And the BIOS chip on this particular Mobo cannot be easily replaced since it's soldered in place!!
Today, you may have a computer with a good enough motherboard that it can still restart even if the flash process fails; but this is not something you can simply test for, you must know from the motherboard manufacturer (check both the documentation that came with it and their web site for your exact model). If you do have one of these modern systems, then you can flash your BIOS with any new features you want without worrying about a power failure... as long as you make absolutely sure the new BIOS code is for the exact model of your motherboard and that you have the instructions for how to proceed in the event of a power failure.
If you are running Windows 98/98SE and want to use an HDD over 64 GB, you really should review all the Knowledge Base articles related to these conditions! You can start with this one: KB 263044 at the Microsoft Support site, http://support.microsoft.com/.
A long time ago now, I used to say: "You can not use Windows 98/Me with any drive over 137 GB (that's exactly 128 GiB)! Ever." Well, that is not really true!!! It was based upon some poor wording found in the following article! Quoting the applicable text from that Microsoft KB article :
"Operating systems that do not have 48-bit LBA support enabled by default (such as
Microsoft Windows 98, Microsoft Windows Millennium Edition (Me), or Windows 2000) that are installed on a partition that spans
beyond the 28-bit LBA boundary (137GB) will experience data corruption or data loss."
What this means is: These OSs can be used on a drive larger than 137 GB, as long as the partition(s) they operate from
and have access to (for reading or writing) do not span beyond the 137 GB boundary! Therefore, you could create and use a number of
Windows 98/Me partitions anywhere on the drive below the point of 137 GB and have no problems. But that's not what some web sites seem
to imply. Note: The now defunct 48bitlba.com site which first
appeared to say this applies to the whole drive, not just the size of a single partition nor where it's located; quoting from their first page: "Some versions of Microsoft Windows do not support hard drives greater than 137 GB at all,..." But later on,
in a rather confusing page about Windows 98, they gave examples of how it can be used with such drives! Apparently this confusion is because
so many people create only one single partition, no matter how large a drive they have, which would indeed lead to data loss under Win 98/Me!
Many computer BIOS will be unable to recognize hard disks over 137 GB, since they are limited to using only 28 bits to keep track of the LBA sector count (28-bit binaries can hold a maximum value of FFFFFFF Hex, or 268,435,455 sectors; if you multiply that by 512, you get: 137,438,952,960 bytes; thus, the 137 GB size limit). NOTE: Since all Partition Table entries use 32 bits (a Hex "Double Word" 4 bytes long) for their Starting and Total Sectors counts, there weren't any problems with those MBR sectors until HDD sizes began to exceed about 2,048 GiB! For details on the Hex numbers here, see our page 6 to 64-bit Hex Numbers.
Even Windows 2000 (prior to SP3) was unable to use any space on an HDD beyond the 137-GB boundary; until we applied an SP3 (or later) update to it! This means that you will not be able to install an early Win 2000 OS on such drives using the original install CD; unless you create an initially smaller partition underneath that 137-GB boundary! That's a very good reason to purchase/use a Win 2000 install CD with SP4 already applied.
Ever since IBM® started selling the first Disk Drive with PC-DOS 2.00, there has been a Master Boot Record (MBR) with a 64-byte Partition Table and its four 16-byte entries.
Section 2.11 "Limits" of Andries Brouwer's, Partition Types pages:
http://support.microsoft.com/kb/305098/EN-US/ [Read all of it!]
You can write to me using this: online
(It opens in a new window.)
The Starman's Realm Index Page