Why not use MS-DOS 4.0?

On April 25, 2024, Microsoft released the source code for MS-DOS 4.0 under an open source license. But it raised an old question. Why do so few people talk about DOS 4.0? Why did so many people skip from DOS 3.3 all the way up to DOS 5.0? In this blog post, we’ll explore how DOS 4 became Microsoft’s forgotten DOS.

The significance of MS-DOS 4.0

MS-DOS 4.0
MS-DOS 4.0, released as open source in 2024, was a flop in 1988.

MS-DOS 4.0 was a significant modernization over DOS 3.3. Using it, DOS 4 feels more like DOS 5 than like DOS 3. It includes a DOS shell, making it much friendlier and easier to use. It also included other useful utilities DOS 3.3 lacked that we take for granted now, like the mem command. And maybe most importantly, it broke the 32 megabyte barrier on disk partitions, allowing you to make disk partitions up to 2 gigabytes in size. This was a pretty big deal in 1988, especially because 40 megabyte hard drives were coming down in price. DOS 4 let you use a 40 megabyte drive as a single C drive, rather than splitting it into drives C and D.

But in stereotypical Microsoft fashion, DOS 4 arrived late and it underdelivered. I found references to it in 1984 saying it was expected to ship the next year. That didn’t happen. I also found rumors saying it would have the ability to multitask. There was a multitasking version of MS-DOS 4.0, but it only saw a scaled-back release and was even less often used than the regular version of DOS 4. Apricot Computers, makers of the first 486 PC, pre-announced the multitasking version in Europe.

IBM released its version of DOS 4.0 in July 1988. Microsoft didn’t release its version to manufacturing until October 6, 1988 with it landing on shelves in late October. In those days, Microsoft and IBM sold essentially the same product under their own names, but they weren’t 100% identical. PC Magazine contributing editor Winn Rosch was fond of pointing this out, though I don’t know how many people besides him cared.

MS-DOS 4.0 was the equivalent of Windows Me, Windows Vista, and Windows 8 of its day. After the initial excitement of the new release subsided, the PC-owning community largely stayed away from it, relying on the previous version as a daily driver instead.

Improvements from earlier versions

Besides the DOS Shell and additional utilities, DOS 4 had an improved setup program called Select. It guided you through installing DOS, rather than making you FDISK and format the drive and then copy all the files over yourself. It also featured better memory management. Even though it used noticeably more memory than earlier versions, if you had a 286 or 386, you could make better use of memory above 640K with DOS 4.0 because it included himem.sys and emm386.exe. DOS 5 improved on the memory management further, adding the ability to load DOS into the upper memory area and manage upper memory blocks, but DOS 4 was a step in the right direction from version 3.3.

One thing DOS 4 did was put disk buffers in expanded memory, but it did so in a way that was compatible with IBM expanded memory boards, but not compatible with many of the third-party EMS boards.

Why people avoided MS-DOS 4.0

IBM DOS 4.0
IBM made more of an effort to sell DOS 4.0 separately than Microsoft had. But IBM’s packaging only mentioned IBM products. It even went so far as to call a hard drive a DASD. Oh IBM, don’t ever change.

I used PCs occasionally in 1988, but most of my friends still had Commodore 64s. If I ever used DOS 4 in the late 80s, I wasn’t aware of it and honestly might not have known the difference. When I really started using PCs regularly in the early 1990s, DOS 5 was out and most people were using it.

The only time I knowingly used MS-DOS 4.0 was around 1999 or 2000. One of my coworkers–the guy who threw his laptop onto the highway to get a new one–told me it wasn’t possible to make a boot floppy that contained both network drivers and CD ROM drivers.

I found out he was using the boot files from Windows 98 or Windows 95. I solved his problem really fast by putting the common oakcdrom.sys driver, Microsoft network client, and a 3Com network driver on an MS-DOS 4.0 boot floppy. It all fit comfortably, with room to spare. It fit less comfortably with DOS 5 and not at all with DOS 6. But I wasn’t aware at the time what exactly was wrong with DOS 4, so I went with version 5 to be safe.

That sums up my professional experience with DOS 4. It was part of an afternoon.

Now, 25 years later, I know what was wrong with it.

It didn’t boot off certain hard drives

One major problem turned out to be that MS-DOS 4.0 couldn’t boot off certain hard drive controllers. Given that better support for hard drives larger than 32 MB was the major reason MS-DOS 4.0 existed, that was a big problem. Here’s why that would be enraging. In 1988, hard drive prices started at around $300 and went way up from there. When you spend that kind of money, you expect to be able to boot from that drive.

This would also explain why PC makers would be reluctant to bundle DOS 4 with a new machine. They wouldn’t want their customer to buy a hard drive and then not be able to boot from it. And they didn’t necessarily want to be limited themselves to some controllers but not others when they shipped a computer with a hard drive.

It was much easier for OEMs to just stick with MS-DOS 3.3 and not worry about it.

Compatibility problems

Magazines from the late 1980s noted some compatibility problems, but frequently there were workarounds for those, like running DOS shell in text mode instead of graphics mode. And when that didn’t work, usually software vendors released a revised version for DOS 4. Most software that didn’t work with DOS 4.0 didn’t work with version 5 and newer either, so the publishers addressed the compatibility issues.

One source of incompatibility was the way it implemented file control blocks–the FCBS line you may remember from config.sys in DOS 6.22. As a workaround, it forced loading share.exe, which increased memory consumption. GEM, Digital Research’s GUI, was an example of a well-known piece of software that needed FCBs.

Data corruption

The third problem, and the one I heard the most when I asked around on social media, was data corruption. It booted fine, and it seemed to run fine, but it corrupted files or disks mysteriously and without warning. This was related to the buffers in expanded memory issue.

Microsoft did release a revised version 4.01 that was better, but not as safe as DOS 5.

But the fear of losing your work after saving it would explain why people avoided it in 1988. Digital Research took advantage of Microsoft’s missteps and released DR DOS during this time, and gained a nice following. With DOS 5, Microsoft clawed back most of the market share it lost, but it does leave us to wonder, without that competition, what MS-DOS might have become. And some people used DOS 3.31, an improved DOS 3.3 with a few DOS 4 features backported to it.

No marketing push

MS-DOS 4.0 floppy
Microsoft left publishing and distribution of MS-DOS 4.0 up to computer makers. This DOS 4.0 floppy shipped with a Zenith PC.

One more reason MS-DOS 4.0 landed with a thud was the way it was marketed. Microsoft didn’t sell it directly. Instead, Microsoft left it to PC makers to sell and support it. Those who gave DOS 4.0 a chance over time switched back to shipping their PCs with DOS 3.3 instead, presumably because they got fewer support calls from people who ran DOS 3.3. Consumers couldn’t walk into a computer software store like Egghead Software or Software Etc and buy DOS 4.0 at retail. Microsoft just relied on OEM sales.

MS-DOS 5.0 was the first version of DOS that Microsoft sold at retail and really pushed heavily. This was to counter the new competition from DR DOS. If Microsoft had pushed DOS 4 at retail, it might not have been quite as easy to overlook. It may have required another bugfixed version, but initial bugs didn’t have to be a death knell for a DOS version, as MS-DOS 6.22 shows. Bugfixes and legal issues with DOS 6.0 are the reasons DOS 6.22 existed. DOS 4 could have taken the same journey.

You could walk into an authorized IBM dealer like Computerland and buy IBM PC DOS 4.0, but in 1988, IBM wasn’t interested in selling DOS to clone owners. The packaging only mentioned the IBM PC and PS/2. I’m not going to say IBM wanted DOS 4 to fail on non-IBM hardware. But they weren’t going to put any great effort into helping you if you bought PC DOS 4.0 and ran into problems on a PC clone.

Where the source code came from

Former Microsoft Chief Technical Officer Ray Ozzie discovered some floppies in his collection containing previously unreleased beta versions of DOS 4.0 that included some source code. Microsoft had provided the disks to Ozzie during his time at Lotus Development. The discovery led to asking Microsoft about open sourcing DOS 4.0. Microsoft located some DOS 4.0 source in the Microsoft archives and IBM was agreeable to releasing it, so Microsoft released the source.

Arguably the most interesting part is the FAT16 filesystem. DOS 1.25 and 2.0, the other two versions Microsoft had released, only had FAT12. Independent implementations of FAT16 exist, but seeing Microsoft’s code will be interesting to digital historians and retro programmers.

Contrary to John C Dvorak’s old argument, open-sourcing old closed-source software doesn’t guarantee it will catch on and become popular. But having the opportunity to study and learn from MS-DOS 4.0 is a welcome development. I guess it’s not too surprising that a community quickly sprung up around the source code. As some observers have said, version 4 is much more similar than dissimilar to version 5, and having the opportunity to fix something that was so legendary for being bad is enticing. It will be interesting to see what the community makes out of this.

Problems with the MS-DOS 4.0 source code

Word quickly got out that Microsoft’s source didn’t build but there’s a fork that does indeed build available now. The problems with the source code building came down to differences in the way MS-DOS and Unix handle special characters. The differences in line breaks didn’t prove to be much of an issue, but the conversion to utf-8 caused some problems and some special characters like dashes caused some of the comments to end up too long and to break the build.

And the build I linked above fixes at least three major bugs in MS-DOS version 4.00, including the ability to boot off hard drives. It was not a difficult fix. It turned out DOS 4 was using a 64-byte stack early in the boot process, and that was too little. Bumping to 128 bytes fixes it. It also includes cross build tools so you can build it under Win32 or Win64. A modern Windows PC can build MS-DOS 4.0 in around two minutes, compared to 70 minutes on a 386.

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

2 thoughts on “Why not use MS-DOS 4.0?

  • April 29, 2024 at 6:22 am
    Permalink

    We had the multitasking version at Apricot as you say and guys in the team worked hard, together with engineers from small french manufacturer (and competitors) Goupil, but it was never stable enough, nor the multitasking useful enough, to live as a product. The vanilla DOS 4 surfaced for a while till DOS 5 came along.

    Reply
  • April 29, 2024 at 11:57 am
    Permalink

    It was pretty funny watching all the spoiled brats these days, complaining that Microsoft is evil cuz it needed some gentle massaging to build. Bro, it’s code from 1988.

    Reply

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.