Historical Operating Systems: MS-DOS 6.0 and Microsoft Windows 3.1

In 1996, when I was eight years old, I got my first PC. With a 25MHz 486SX processor, 8MB of RAM and an 80MB hard disc, it wasn’t exactly cutting-edge, but it worked, and more importantly, it was mine. Personal computers belonging exclusively to eight-year-old children may be commonplace today, but it was a scarce sight in 1996. I remember some friends of mine with 286s and old monochrome Macintoshes, but my 486 was of a considerably newer pedigree.

Windows 95 had been released only about half a year previous to the acquisition of my 486, so plenty of older computers still ran the 16-bit versions of Windows. My own computer ran MS-DOS 6.0 and Windows 3.1, which were only three years old and still had software being made for them. Considering that I was interested first and foremost in experimenting and in learning how to use “serious” software such as office suites and the like, Windows 3.1 was still very much useful for me back then.

MS-DOS was then in its twilight years and the command-line nature contrasted strongly with most other personal computer operating systems of the time, most strongly with Macintosh. MS-DOS first appeared in 1981, when IBM requested an operating system for their IBM PC 5150. Microsoft responded by purchasing 86-DOS, an unofficial clone of the popular CP/M operating system ported to Intel 8086 processors, and renaming it to IBM PC-DOS and later to MS-DOS when clone PC manufacturers started attracting attention.

Microsoft continued to develop MS-DOS during the 1980s and early 1990s, riding on the wave of success that came from being associated with the growing popularity of the x86 platform. As time progressed, some limitations of the original design of MS-DOS began to display themselves more prominently, particularly in the light of the competition from Apple and Commodore. MS-DOS was a single-tasking operating system, capable of only processing one task at a time (with an exception for certain programs, usually device drivers, called TSRs, or Terminate and Stay Resident). The command-line interface of MS-DOS made this less of an issue than it was on the earliest versions of Apple’s System Software, or on Atari TOS, but it was still a limitation. The fact that device drivers were necessary for a fair amount of devices – serial mice, CD-ROM drives, et cetera, didn’t help either.

Another, more frustrating limitation came from IBM’s original PC design, which used memory between 640KB and the 1MB limit (from the 20-bit address bus of the Intel 8086 and 8088) for ROMs, video adapters and other devices. In 1981, this wasn’t an issue; most personal computers came with 64KB or less of RAM and the days of using 640KB of RAM looked to be quite far in the future. The limitation started hitting home around the late 1980s, when memory in excess of 1MB started to be fairly accessible with a home computer. Unfortunately, with Microsoft’s requirements for backwards compatibility with older IBM PC compatibles, they were forced to take a rather inelegant solution to affairs. The 640KB of memory with the lowest addresses became known as “conventional memory”, while memory above the 1MB mark was addressed as either “extended” or “expanded” memory.

All of this seemed like a bodge job even in the early 1990s, and it wasn’t assisted by Intel’s decision to use segmented memory with the Intel 8086. Memory below the 640KB barrier would be fought over viciously by programs, particularly by games which pushed the conventional memory to its limits. The usual way of resolving the issues raised by the 640KB barrier with games was to modify some of the files which specified the setup parameters of the MS-DOS startup sequence and move everything possible into the 384KB gap between the conventional memory barrier and the 1MB point of extended memory. Indeed, many gamers became dab hands at modifying the AUTOEXEC.BAT batch file and the CONFIG.SYS configuration file to free as much conventional memory as possible. If you were good, you might get about 600KB of memory free in the conventional memory zone, which would be enough for most games, but some just pushed the envelope that bit further than others.

In any case, the limitations of MS-DOS were well-known by 1988, when Microsoft released Windows/286, the 286-compatible version of Microsoft Windows 2.1. Windows itself dated back to 1985, when Microsoft released Windows 1.01 after a delay in release. Compared to the elegance of the Mac System Software or the power and flexibility of AmigaOS, Windows 1.0 looked like it was hacked together. Nevertheless, it provided a GUI to IBM PC compatibles, along with support for co-operative multitasking and multiple windows open at once (although due to legal concerns with Apple, the windows were not allowed to overlap even though the GUI engine allowed for it).

Microsoft continued to refine the Windows environment, with the jump from Windows 1.0 to Windows 2.0 improving the graphical environment considerably, and Windows 2.1 incorporating a DOS extender, allowing Windows programs to run in extended memory. By Windows 3.0, the graphical environment looked much more elegant than it had started out, and while I would argue that it did not look as good as the Mac System Software that it was competing with, it did at least have some endearing properties.

When I got my computer, it came with a box of floppy discs, complete with a full set of MS-DOS and Windows 3.1 installation discs. MS-DOS 6.0 came on three floppy discs, while my distribution of Windows 3.1 came on seven floppy discs plus one disc bizarrely marked ENH 1, the purpose of which I never managed to figure out. I recall installing Windows 3.1 to be remarkably easy; MS-DOS 6.0 was somewhat more difficult, but well within my hands from an early stage. The package of MS-DOS and Windows came with a large manual, from which I would often read not only to learn what to do but also for amusement. (Looking back, I seem to have had a rather skewed sense of what constituted fun when I was younger.)

Using Windows 3.1 was also rather easy, with a simple, consistent GUI that worked well enough for the requirements of office staff, home users and others alike. Given that it was possible to set up the AUTOEXEC.BAT file so that the computer would boot straight into Windows after the initial loading of MS-DOS, it was very possible to use the computer in such a way that you wouldn’t have to leave the Windows environment. I, on the other hand, spent a decent proportion of my time in the MS-DOS environment, not only for playing games – some of which wouldn’t play nicely with Windows 3.1 – but also for exploration purposes.

Efficient use of MS-DOS requires knowledge of the hierarchical nature of the directory structures, as is the case for many command-line interfaces. There were a number of simple commands which one was advised to learn as quickly as possible, such as dir for listing the contents of a directory, cd to change directories and copy for copying files from one destination to another. For whatever reason, command line interfaces proved to be rather friendly for me, but it was probably not the case for other computer users.


I got used to seeing a lot of this during my time with MS-DOS.

While most of the commands found in the MS-DOS distribution are explicit system tools, there are still enough utilities included with the operating system itself such that you’re not forced completely against a brick wall when starting, such as the MS-DOS editor for text files, the MS Anti-Virus suite (revealing an unfortunate legacy of the IBM PC platform) and the Microsoft QBasic interpreter which presented a sophisticated form of BASIC with proper control statements and the capacity for functions. I was particularly glad of the QBasic interpreter when I was younger; it was the first platform on which I learned how to program. Nevertheless, things do seem a bit sparse here for an operating system from 1992.

On the other hand, Windows 3.1 feels rather more generous with its included software – as befits an operating system which was distributed on seven floppy discs. Aside from the system tools, there was also a basic word processor, a graphical text editor, a media player for videos and music, a sound recorder for WAV files and a basic paint program, among other applications. Many of these applications have been updated and distributed with later versions of Windows as well. This guaranteed that you could do some sort of useful work without requiring external packages, although as Microsoft was then, as now, making the Microsoft Office suite, they were careful not to put too many features into the included software.


Enough software to at least get you going.

By the time of MS-DOS 6.0, the operating system was using the FAT16 file system with support for discs up to 2GB. This wasn’t much of a concern for me at the time, as I had my 80MB hard drive back in 1996, and didn’t get a computer with a hard drive in excess of 2GB until 2000, by which time Windows was using the FAT32 file system. A more pressing concern was the 8.3 filename format which MS-DOS restricted you to; files could only have a name of eight characters followed by a three-character extension. This led me to become quite imaginative with filenames, but it seemed to me like an arbitrary and insensible choice of restrictions, especially as Windows 95 included the capacity for filenames of 255 characters.

Considering hard drives in the days of Windows 3.1, it’s also bizarre that Microsoft chose to incorporate so many files with “raw” formats, such as BMP and WAV files. My 80MB hard drive was sufficient to install MS-DOS and Windows completely without any problems, but sometimes, I’d be pushed for hard drive space when I installed too many games. One way to quickly claw back the hard drive space would be to remove some of the large BMP and WAV files incorporated with the OS, but I consider myself fortunate that I didn’t really see the potential for multimedia until I started using Windows 95 – or for videos until Windows XP was released. Otherwise, there really would have been some problems!

Looking back on it with experience, it’s clear that MS-DOS 6.0 and Windows 3.1 didn’t quite match up to some of its competitors. The Macintosh’s system software looked prettier, AmigaOS (which was just about dead by the time I got into computing) was technically superior in many regards, including its multitasking model, while OS/2 was more robust (to say nothing of Unix). There were also some particular limitations of the operating system which really seemed questionable even at the time; the restrictions in filename sizes, the division of memory into conventional memory and extended memory (even if this was a solution to a problem that Microsoft didn’t create) and the difficulty posed by device drivers in MS-DOS.

Nevertheless, MS-DOS 6.0 and Windows 3.1 worked. They didn’t always work particularly well; there were some notable flaws and foibles, not all of them discussed above. They weren’t the peak of technical development, but they didn’t have to be. All they had to be was good enough for the majority of computer users, and given that I didn’t have any need then for the robustness or the sophistication of some other operating systems, it was good enough for me.