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
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 is especially noticeable on systems that run at 4.77 megahertz, and especially noticeable 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.
So this means that your first disk write or directory listing will have a delay in it, but it’s a much shorter and less concerning delay.
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 The 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:
Of course there is no harm in using this utility on faster systems, but 386 and 486 systems don’t benefit from it as much. But on my compact flash-equipped IBM 5170 and Tandy 1000, I find it in dispensable.