The PC Revolution
The IBM Personal Computer
In August 1981, IBM released its Personal Computer (better known as the PC) and DOS 1.0. It was widely expected that Digital Research would release CP/M-86 for the new system (which did eventually happen), but in the meantime, there was the IBM Personal Computer DOS, not too different from CP/M after all. IBM also announced UCSD p-System support for the PC, but only DOS was available at the launch. The announcement was eagerly anticipated and thoroughly covered by the press.
It should be remembered that with the first IBM PC, DOS was optional. The PC came with BASIC, which could act as a very primitive operating system, built into its ROM. The ROM BASIC could use cassette tape as a storage medium, although this method never became popular and later PC revisions removed cassette support entirely.
The base PC model came with only 16KB RAM and no disk drives; the memory was expandable to 256KB (quite a lot in 1981). The model equipped with a disk drive came with 64KB RAM, although DOS itself needed less.
It should be noted that DOS would theoretically be able to run on the base PC model with 16KB RAM. However, this was not an option in practice: The PC’s BIOS loaded the boot sector (from a floppy) at address 7C00h, which is 31KB, meaning that it was not possible to boot DOS on a PC with less than 32KB memory. DOS applications naturally needed additional memory, and might have significantly higher system RAM requirements.
A Note on Version Numbers
IBM was inconsistent in referring to DOS version numbers. For instance, upon booting DOS, the user might see a message identifying Personal Computer DOS as “Version 3.00”. However, the IBM announcement letter for the same product referred to “DOS 3.0”. This inconsistency is reflected in the following text; references to, for example, DOS 2.10 and DOS 2.1 are equivalent.
The first version of DOS was almost more interesting for what it couldn’t do than what little it could. DOS 1.0 could read and write 160KB floppy disks, start .COM and .EXE applications, and process batch (.BAT) files. It could keep track of date and time (by no means a ubiquitous feature at the time), although both had to be manually entered every time DOS was started. A batch file called AUTOEXEC.BAT could be automatically executed at startup.
There was no support for hard disks, no directories (all files had to be stored in the root directory of a disk), no pipes or redirection, no loadable device drivers. The DOS programming interface was likewise very limited.
The command interpreter (COMMAND.COM) supported only seven internal commands: DIR, COPY, ERASE, PAUSE, REM, RENAME, and TYPE. Furthermore, DATE and TIME were implemented as external commands.
A basic interactive debugging tool, DEBUG.COM, was shipped with DOS. It was not easy to use but was quite powerful in the hands of a skilled user. A linker (LINK.EXE) was also shipped, but development tools capable of producing linkable object modules (such as MASM) had to be purchased separately.
For editing files, a very rudimentary line-oriented editor called EDLIN was provided. EDLIN was a very limited editor, hard to use and not very capable. Yet it remained as the one and only editor shipped with DOS for a decade, probably to a great surprise of its original author.
DOS 1.0 was perhaps most useful as a vehicle for Disk BASIC and Advanced BASIC. The ROM BASIC built into the PC could not use disks; the DOS commands BASIC.COM and BASICA.COM “upgraded” the ROM BASIC and added disk support, among other things.
BASIC.COM and BASICA.COM together with the ROM BASIC provided a complete environment which was started from DOS, but was more or less entirely separate from DOS. In a way, BASIC was a primitive integrated development environment (IDE). The SYSTEM command could be used to return back to DOS.
Several demo programs written in BASIC were provided on the DOS diskette. These demos were designed to show off some of the capabilities of the IBM PC. All of the demos required at least 32KB of memory, some 48KB, and some utilized the Color Graphics Adapter (CGA).
Since the ROM BASIC was an interpreter, the demo programs were effectively shipped in source form; the files were tokenized and not stored as plain text files to save space, bu they could be listed and edited from within the BASIC environment.
The demos showed how to play “music” on the IBM PC, how to send data to the (optional) printer, how to perform basic calculations, and how to display graphics. In the early years of the IBM PC, BASIC proved popular. It was relatively easy to use, reasonably capable, and came built into the system. For simple automation, it was an adequate tool.
Of course BASIC was not very suitable for developing word processors or spreadsheets. Once better development tools became available, BASIC was used less and less and eventually IBM removed it from the PC successors’ ROMs.
The core DOS consisted of about 4,000 lines of assembly code; no high level languages were used. There were three main components: IBMBIO.COM, IBMDOS.COM, and COMMAND.COM.
IBMBIO.COM or “BIOS” was a low-level driver component. When adapting DOS to a new computer platform, the BIOS computer would typically need the most changes (and ideally the required changes to the other components would be minimal). IBMBIO.COM contained the disk, console, and printer drivers, and itself was built on top of the ROM BIOS.
The “DOS” proper, IBMDOS.COM, was the operating system kernel. It implemented the DOS API (Application Programming Interface) callable via INT 21h and a few others. It also included the file and memory management code.
IBMBIO.COM and IBMDOS.COM together formed the core of DOS, but when most DOS users think of DOS, they think of COMMAND.COM, the command interpreter. COMMAND.COM is optional and may be replaced by a workalike (such as JP Software’s 4DOS) or a special purpose application may be launched directly (e.g. IBM’s diagnostic disks).
However, on most systems, COMMAND.COM was loaded and provided the user interface. It’s typically known for the C:> prompt, except in DOS 1.0 there was no such thing. Drive C did not exist (unless perhaps the user had more than two floppy drives installed), and the PROMPT command was not available, so the prompt was A> in most cases.
COMMAND.COM used an innovative division into three parts (initialization, resident, and transient) to save memory. The initialization part was used to process the contents of AUTOEXEC.BAT and was discarded once its job was done. The transient part was the largest and contained the command processor, handled user input and implemented the built-in commands. Because the built-in commands didn’t need to be loaded from disk, they executed quickly. However, they consumed precious memory, and if an application required more, COMMAND.COM discarded the transient part, only leaving the resident part in memory. Once the application completed, the transient part of COMMAND.COM would re-load the resident portion from disk.
DOS versus CP/M
DOS was designed to be to a large extent compatible with CP/M, but wasn’t a clone of it. Compatibility with CP/M brought such features as the dreaded 8.3 file name limitation, but DOS was in several ways more capable than CP/M.
The different (and better) file allocation strategy has already been mentioned earlier.
DOS provided a very rudimentary form of device independence, with the console (CON), printer (PRN) and serial communication (AUX) devices being treated as special files. The user could thus for instance print a file by copying it to the PRN device. This feature was clearly inspired by UNIX (or XENIX, as was likely the case with Microsoft).
The file interface could handle variable size record I/O, while CP/M was limited to fixed 128-byte records.
In addition to CP/M style .COM files, DOS also supported relocatable .EXE files, a format developed by Mark Zbikowski (hence the MZ signature in the .EXE file header). While .COM files were limited to a maximum of 64KB combined for code, stack, and data, .EXE files did not have the limitation. On a PC, an .EXE format executable could thus occupy the entire available memory.
Version 1.1 was a relatively minor update to DOS, released together with a refreshed Personal Computer in May 1982. The newer PC sported double-sided floppy drives; DOS simply doubled the disk capacity by utilizing both sides, going from 160KB to 320KB. DOS 1.1 itself was of course still shipped on 160KB disks so that it could be used on the earlier PC model.
Unlike the previous version, DOS 1.1 did not require the user to enter a valid date. The Enter key could be used to accept the default date, which resulted with many files being dated January 1st, 1980—before the PC even existed.
Internally at Microsoft, DOS 1.1 was actually version 1.25; the latter was consistent with Tim Paterson’s original 86-DOS versioning, but didn’t perhaps make much sense for IBM. DOS 1.1 (or 1.25) was important in that it was the first version which Microsoft licensed to several OEMs, among others COMPAQ and Zenith.
MS-DOS 1.25 wasn’t quite the same as PC DOS 1.1; Microsoft did not supply all of PC DOS and several utilities were written by IBM. Those included DISKCOPY, DISKCOMP, COMP (all written by David Litton) and the MODE command (written by Mel Hallerman, Ron Heiney, and, in version 1.1, also Ed Kiser). The first three were relatively generic, but MODE was somewhat tied to the specific hardware model.
Changes from previous version
There were no major differences between DOS 1.1 and 1.0. DATE and TIME were now internal commands built into COMMAND.COM. The familiar DEL command was added as an alias for the ERASE command, and REN for RENAME.
The operating system now kept track of times in directory entries, not just dates. The LINK utility was updated to version 1.1.
A new EXE2BIN.EXE utility was added to convert EXE format files into plain binary or .COM format files. BASIC and BASICA (Disk and Advanced BASIC) were also updated to version 1.1, with a few rather minor differences.
On the whole, DOS 1.1 was technically more or less the same as its predecessor. All the big changes had to wait for version 2.0, and there were quite a few.
The MS-DOS Encyclopedia, edited by Ray Duncan, Microsoft Press, 1987. ISBN 1-55615-049-0