My CMOS setup correctly recognizes the geometry of the drive, (but does not support LBA). And FDISK in DOS 6.22 only recognizes 504MB. FDISK even shows the size of the primary partition as roughly 1GB out of a possible 504MB.

My problem is that while DIR shows ~500MB used and ~500MB free, it gives "Sector not found" and other errors when trying to write basically anything more (since I seem to have reached the end of the readable 504MB.

Is it possible to use a hard drive with more than 1024 cylinders when using a BIOS that doesn't support LBA?

Would an IDE controller card be able to bypass this limit?

  • This question explains the limitations, but your situation is surprising — if the setup recognises the drive, I would expect DOS to be OK up to 8GB. What geometry does the BIOS setup report? Jan 18 '19 at 22:18
  • @StephenKitt That's a little weird. I've just replaced it with a 2GB drive, so it shows a CHS of 3898/16/63, but it has a "Custom Drive Information" which allows you to type in values, but you can't type in values greater than 2099. Even weirder, it starts with the auto value, and lets me change it by 1 at a time, so I can choose high byte values between 20 and the detected 38 if I decrement by 1. I can't go back up. Jan 18 '19 at 22:29

It can be done using a third-party "disk manager", such as OnTrack Disk Manager and EZ-Drive. At the end of the DOS era, these came bundled with many hard disks.


Some downloads. Kroll OnTrack have allowed this to be shared freely! https://www.philscomputerlab.com/ontrack-disk-manager.html

Info: https://en.wikipedia.org/wiki/Disk_Manager

An alternative is to use IBM PC DOS 7.1 instead. This is the last ever member of the MS-DOS family. It includes native built-in FAT32 and LBA drive support. IBM made it available as a free download -- I describe this here: https://liam-on-linux.livejournal.com/59703.html

You will need to supply the rest of PC DOS 7.01 (also known as PC DOS 2000) to make a complete OS, but that is widely available; for example it came free with Microsoft VirtualPC, which itself is a free download now.

  • It appears FreeDOS also supports LBA and FAT32. Can it be used similar to PC DOS 7.1? May 24 '21 at 11:13
  • I have not got much experience with FreeDOS -- I prefer the "real thing" -- but in theory, yes. May 25 '21 at 22:33

MS-DOS 6.22 only uses CHS (cylinder/head/sector) addressing to access disks, so it doesn't really matter if the BIOS supports LBA addressing. The CHS BIOS interfaces MS-DOS uses for disk access support drives up to just under 8 GiB, so this also about the limit for MS-DOS. (A bug in MS-DOS means that it crashes if a drive has 256 heads, so its limit is a bit smaller than the BIOS limit but still almost 8GB.)

The limit you've encountered is due to the intersection of the BIOS and IDE limits on CHS addressing being much less than either individually. The BIOS supports addressing up to 1024 cylinders, 256 heads and 63 sectors, while IDE supports up to 65536 cylinders, 16 heads and 255 sectors. Taking the minima of these three pairs (1024 × 16 × 63) gives you the 504 MiB limit.

To get around the 504 MiB limit many BIOSes supported CHS translation, where they converted BIOS CHS addresses to IDE CHS addresses using some sort of transformation. Apparently though your BIOS doesn't support this, otherwise the drive probably would've worked. You should check to see if your BIOS has some sort of "large" drive support you can enable.

If you're not booting off the hard drive then I think there were drivers for MS-DOS that performed CHS translation. According an old Microsoft KB article (KB126855) I found "SpeedStor from Storage Dimensions, EZ-Drive from Micro House, and Disk Manager from OnTrack Computer Systems" are possibilities. An IDE controller won't work unless it has its own boot ROM, one that can perform CHS translation.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.