Fix slow hard drive access on early PCs

Last Updated on February 20, 2024 by Dave Farquhar

The prevailing wisdom regarding hard drives and early PCs is to keep your C drive small, ideally no bigger than 128 MB, and maybe even as little as 32. Otherwise, disk activity becomes unbearably slow. But what if I told you there is another way to fix slow hard drive access on early PCs?

The 30 second delay

Fix slow hard drive access on early PCs
Accessing a compact flash card on an 8088 machine or even a 286 running at less than 10 MHz has a noticeable delay. Unless you use FREESPT to fix slow hard drive access on early PCs, that is.

On PCs with an 8088 CPU, it can take around 30 seconds to calculate the free space on a hard drive when you run the DIR command or when you write a file to disk. The delay is especially noticeable when you use a compact flash card, because everything else with the compact flash is really fast.

The delay gets worse on systems that run at 4.77 megahertz, and even more worse on a PCjr, since its effective speed is a fair bit lower than 4.77 megahertz. But I even notice it on 286 systems.

There are several possible workarounds, all of which have some limitations.

The conventional fixes

Keeping your disk partitions small, and by small I mean 32 MB to 128 MB, is the most common workaround. But having one large drive is definitely more convenient.

A second workaround is using a third party replacement for the DIR command or creating a batch file that runs DIR with the /b parameter. Either of these solutions lets you skip the lengthy free space calculation when you get a directory listing, but it won’t help you when you need to save a file to the drive.

Admittedly, that isn’t something you do terribly often, but it’s a bit disconcerting when you edit your config.sys, and saving it takes more than 30 seconds. When you aren’t used to it taking 30 seconds to save a 300 byte long file, you may wonder if the system is crashed.

Note that upgrading the CPU to an NEC V20 has little to no effect on the delay. The V20 runs select 8088 instructions faster, but the speedup isn’t across the board.

FREESP: A modern fix for slow hard drive access on an early PC

I think the best solution is a utility that intercepts the free space calculation routine that DOS uses. This utility cuts the delay by about 90%. The utility is called FREESP, an open source (BSD license) utility written by a Canadian retro hobbyist who goes by the name ChartreuseK.

When you use FREESP, your first disk write or directory listing will have a delay in it. But it’s a much shorter and less concerning delay, along the lines of 3 seconds.

The utility comes with two versions, one that you run from the command line to pre-calculate the free space, and one that stays in memory, intercepting the slow system function and replacing it with a much faster one. The second version requires about 1.2 kB of conventional memory, so it comes at a price, but 1.2K usually won’t be enough to make a difference between a piece of software working or not working. If you do have some software that needs every bit of conventional memory you can spare, you can use a boot menu.

You can run the non-resident FREESP ahead of time to save some time when using the resident version. But the trick is to run FREESPT first to get it into memory, then run FREESP. Just copy the FREESPT and FREESP files into your path and add these two lines to autoexec.bat, near the end, in this order:

FREESPT C
FREESP C

On my compact flash-equipped IBM 5170 and Tandy 1000, I find it in dispensable. A 2-gig drive on an 8 MHz 286 is a bit much under normal circumstances, but FREESP makes it nice, as it should be. And while the benefit is less on 386 and 486 systems, I use it on those systems too. It just makes them nicer to use.

Compatibility

FreeSP runs under PC-DOS or MS-DOS 4.0 or newer. I have also run it successfully under SvarDOS, an 8088-optimized build of FreeDOS.

If you found this post informative or helpful, please share it!