1

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? – Stephen Kitt Jan 18 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. – Quasi_Stomach Jan 18 at 22:29
4

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 to access disk support drives up to just under 8GB, so this also the about limit for the MS-DOS. (A bug in MS-DOS means that it crashes if a drive has 256 heads, so it's limit is a bit smaller than the BIOS limit but still almost 8GB.)

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

To get around the 504MB 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.

2

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.

https://en.wikipedia.org/wiki/Logical_block_addressing#Enhanced_BIOS

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.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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