Home | Dev Workstation | Genealogy | Telephones | UNIX Tricks | My Music | Likes/Dislikes | Political Views | Programming Languages RSS Feed | Contact Me

John P. Willis

Opinions presented here are held in all of my roles and capacities, both personal and professional.


Politics: Communist+Trotskyist+Anarcho-Transhumanist
Occupation: Software Engineer
Preferences: View

Social Networking



The GNU Project
The Free Software Foundation
American Civil Liberties Union

Computers & Programming

Programming Languages I Know
Greatest Common Divisor in 19 Languages
Microcomputer OS History
UNIX Tricks
The Datashed (personal datacenter)
Computer Collection
ChivaNet Internet Services
The VAX Pirate's Lair (my old website, ca. 2002)
YOUNGMUMPSTER (my tech blog)
GCC OS Test Macros


Genealogy Home
English Notable Kin
Scottish Notable Kin


Telephones & PBX

Other Sites


Geek Code

Version: 3.1
GCS d-@ s+: a C++ UBLHS++++$ P+ L++ E++ W+++$ N++ !o 
K-? w++$ O+++ M V+++>$ PS+++ PE Y+ !PGP t+++ !5-- !X 
R tv+ b+++ DI+ !D-- G e h---- r+++ y++++ 

Site Info

This site is hosted on a Sun SPARCserver 20 running Apache 2.2, Perl 5, and a home-built CMS.

RSS feed generation is done with a BASH script I have implemented, called Syndicator.

This site contains no JavaScript, no CSS, and should render in any HTML 2.0-compliant browser.

Microcomputer OS History


See full-size version (Opens in new window)

CP/M (Control Program/Monitor)

CP/M was developed by the late Gary Kildall of Digital Research Inc., originally Intergalactic Digital Research. As the first de facto standard among microcomputer operating systems, CP/M ran on a very wide variety of competing hardware platforms. Although many of CP/M's supported platforms were vastly different in architecture, power, and peripherals (meaning that binary programs could not be shared among different types of CP/M machines), application programs could be easily ported, if they limited themselves to the API supplied by the operating system, rather than accessing hardware directly. In fact, DRI often provided source translator automata for converting assembly language programs from one supported platform to the other.

Architecturally, CP/M was divided into three parts. These were the Basic Input/Output System or BIOS, the Basic Disk Operating System or BDOS, and the Console Command Processor or CCP. This is where we get the term "BIOS", as applied to the ROM-based firmware of the IBM-compatible x86 family of microcomputers, still in wide use today 1.

The BIOS was the only hardware-dependent component of CP/M, and can be considered as a primitive hardware abstraction layer, or HAL. BDOS restricted itself to calling the BIOS. Portability was enhanced by the fact that at least the BDOS and CCP were written in PL/M (Programming Language for Microcomputers), a high-level language conceived by Kildall in 1973 with similarities to PL/I and ALGOL.

CP/M rapidly lost ground to PC-DOS and MS-DOS after the introduction of the IBM Personal Computer in 1981. However, CP/M-86 was eventually released on the IBM PC, a product which gained little traction against Microsoft's dominance. The CP/M family of operating systems eventually came to include MP/M (a multiuser version of CP/M), and Concurrent CP/M, a multitasking version of CP/M that was ultimately developed into Concurrent DOS, which was a multitasking MS-DOS clone that itself became DR-DOS, which enjoyed a mild degree of success among x86 power users, and was well-reviewed by the computer press of the time.

DR-DOS was eventually sold to Novell, becoming Novell DOS. Novell sold most of its non-NetWare OS properties to Caldera in the late 1990s, and Novell DOS became Caldera OpenDOS.

CP/M still enjoys wide use among retrocomputing hobbyists.


MS-DOS was originally developed in 1980 as QDOS (the Quick and Dirty OS) by Tim Paterson of Seattle Computer Products, as an 8086-based clone of Digital Research CP/M. It improved upon CP/M in several ways: where CP/M's disk cache logic required the machine to be rebooted if a new disk was inserted into the floppy drive, QDOS did not. Also, QDOS implemented the FAT12 filesystem used by Microsoft's Disk BASIC instead of the CP/M filesystem, and also had more intuitive commands (such as COPY instead of PIP).

QDOS was sold with SCP's 8086 computer kits, and was eventually renamed 86-DOS. Microsoft purchased 86-DOS from SCP and ported it to the original IBM PC in 1981, renaming it MS-DOS. IBM was granted a non-exclusive license to supply MS-DOS (as IBM PC-DOS) for its own machines.

IBM PC-DOS continued as a distinct IBM product until the late 1990s release of PC-DOS 2000.

MS-DOS 2.0 introduced UNIX-style pipelines, installable device drivers, and hierarchical directory support in the FAT filesystem. It also added support for accessing files through file handles rather than the clumsier CP/M approach of FCBs, or File Control Blocks.

MS-DOS 5.0 was a full re-write of the operating system, largely performed by Microsoft star programmer Charles Simonyi, the original implementer of Microsoft Word and Excel.

MS-DOS, unlike CP/M, was written in hand-tuned 8086 assembly language. It runs in 8086 real mode, although the advent of 80286 (and higher) CPUs added support for memory above 1MB. Very large programs could eventually use EMS memory. EMS is a standard developed by Lotus Development Corp., Intel, and Microsoft (the LIM Expanded Memory Specification) for access of bank-switched memory mapped into free areas of the UMA, which was memory between 640KB and 1MB.

EMS memory was originally supplied via expansion boards, but expanded memory support was later supplied most often by a software package (such as Microsoft's EMM386, Qualitas 386MAX, and Quarterdeck QEMM) which used XMS memory to simulate EMS memory. XMS memory (eXtended Memory Specification) support was provided by HIMEM.SYS in MS-DOS 5.0 and later, and in earlier operating systems (or in the case of users who chose a third-party memory manager), by equivalent drivers provided by the above memory management products.

Many MS-DOS programs implemented later in the operating system's lifetime actually ran in 386 protected mode, using what is called a "DOS Extender", which is a program often conforming to the DPMI (or DOS Protected Mode Interface) specification, using the 80386 Virtual 8086 mode to allow DOS programs running in protected mode to make calls to DOS and BIOS APIs.

It can be argued that early versions of Microsoft Windows were themselves a type of DOS extender. The degree to which any given non-NT-kernel-based version of Windows can be considered a DOS extender or a standalone operating system is a highly complex and nuanced discussion, involving various modes of operation in which Windows can be run, as well as the engagement of various, optional Windows components.

Microsoft Windows (non-NT)

Microsoft Windows 1.01 was released in 1985. It was a task-switching graphical shell for MS-DOS, that provided an API and an SDK for GUI application development. It used a GUI file manager application called the MS-DOS Executive to manage and launch programs and files. It ran only in 8086 real mode, and could thus only access the first 640KB of memory on the host. The XT-class microcomputers common in its day had barely enough power to run Windows, which limited its popularity. Windows 1.01 did not support overlapping windows on the screen, and used the terms iconify and zoom, instead of the now-familiar minimize and maximize.

Windows 1.01 strictly relied upon DOS and BIOS APIs to access the hardware of the computer.

Windows 2.0 introduced overlapping windows, prompting a lawsuit from Apple Computer, which claimed to own the technology for overlapping windows. Architecturally, Windows 2.x eventually added 80286- and 80386-specific versions (Windows/286 and Windows/386), which began to blur the distinction between graphical shell and operating system, providing native Windows drivers for increasingly more hardware.

Windows 3.0 was the first truly successful release of Windows, replacing the MS-DOS Executive with Program Manager and File Manager. It ran in Real Mode (corresponding to the 8086 real address mode), Standard Mode (corresponding to 80286 protected mode), and 386 Enhanced Mode (corresponding to 80386 protected mode). Individual applications in any of these modes were cooperatively multitasked, but still themselves 16-bit applications. DOS and BIOS were still used to access the filesystem and much of the hardware. MS-DOS applications could be run under Windows in standard mode or 386 Enhanced mode, but in any mode other than 386 Enhanced mode, only one MS-DOS application could be run at a time, and then only in full screen. 386 Enhanced mode allowed multiple MS-DOS applications to run, each in its own window.

Windows 3.1 eliminated Real Mode and improved stability, as well as adding multimedia device support (previously limited to the Microsoft Multimedia Extensions, a set of extensions for Windows 3.0 only available to hardware OEMs) to Windows itself.

Windows for Workgroups eliminated standard mode, and provided optional 32-bit disk access and 32-bit file access. When these two components were enabled, Windows for Workgroups could be considered to be nearly a full, standalone operating system, with DOS being used only as a boot loader, as DOS and BIOS APIs were no longer needed for access to media. Windows for Workgroups also added networking support, and the Win32s extensions allowed a small subset of 32-bit applications designed for a subset of the Windows NT API to run.

Windows 95, released on August 24, 1995, added 32-bit application support, support for 255-character filenames, an improved GUI, preemptive multitasking, and multithreading. It implemented a subset of the Windows NT API (excluding Unicode and security APIs), and retained full support for MS-DOS applications. Windows 95 no longer had to be started via WIN.COM from an MS-DOS prompt, but instead loaded directly on machine boot-up. CONFIG.SYS and AUTOEXEC.BAT could be eliminated, provided the computer required no real-mode device drivers to support its hardware. It instantiated an MS-DOS virtual machine using Virtual-8086 mode on bootup, and if provided, CONFIG.SYS and AUTOEXEC.BAT would provide the base environment for any MS-DOS application being run, with each MS-DOS application inheriting the base VM's environment and configuration.

Note that LFN support in Win95 was still FAT16-based, but used reserved header areas to support this, through a system called VFAT. The MS-DOS interrupt 21h APIs for handling file access through file handles were also enhanced to add LFN support, used in at least the MS-DOS Editor and the supplied DOS utilities. The File Control Block (FCB) APIs were not, however, given the same enhancement. There was discussion at Microsoft of releasing MS-DOS 7.0 as a standalone product, but these plans were eventually scrapped.

Windows 9x can be considered an extension to the Windows for Workgroups 3.11 386 Enhanced Mode kernel. For a discussion of the Windows 95 architecture, see Windows Multitasking: A Historical Aside on my tech blog.

Windows 98 and Windows Millennium Edition continued to extend this platform until around 1999 or 2000, adding support for things like USB, FAT32, and dual-head monitor configurations.

OS/2 (Operating System/2)

The result of a Joint Development Agreement between Microsoft and IBM, OS/2 was designed alongside the IBM PS/2 line of microcomputers, and was intended to provide a modern replacement for MS-DOS and PC-DOS, breaking the 640KB memory barrier of the latter operating systems.

OS/2 was originally implemented as a multitasking, 16-bit, 80286 protected mode operating system. The original 1987 release did not have a graphical user interface, but OS/2 1.1 added a Windows 2.x-style GUI, called Presentation Manager. The Presentation Manager API was at least superficially similar to the Microsoft Windows API, but with somewhat more consistent API names, and the Presentation Manager coordinate system used a different point of origin, i.e., the location of (0, 0) was different.

OS/2 1.3 changed the Presentation Manager UI to match Windows 3.0.

Following the release of Microsoft Windows 3.0, Microsoft abandoned its joint development agreement with IBM in order to focus on its Windows product line exclusively.

OS/2 2.0, developed solely by IBM's Personal Systems Products division, added support for 80386 protected mode, and many parts of the operating system were extended from 16-bit to 32-bit. OS/2 2.0 also added the Workplace Shell, an advanced, object-oriented GUI built around IBM's CUA (or Common User Access) standards, and implemented using IBM's System Object Model (or SOM) ABI and API. SOM is conceptually similar to Microsoft's Component Object Model (COM, not to be confused with .COM executables in MS-DOS and CP/M), and Netscape/Mozilla's XPCOM.

OS/2 2.1 furthered the extension of OS/2 from a 16-bit to a 32-bit operating system. OS/2 could run 16-bit Windows applications, either in a shared virtual machine, or in dedicated, protected virtual machines. It could also run MS-DOS applications, providing far better compatibility for said applications than any Windows version ever could, including games.

OS/2 Warp v3 reduced hardware requirements, improved the installation experience, added multimedia device support, added the LaunchPad application launcher, and introduced the BonusPak, which contained a suite of productivity applications such as a word processor and a spreadsheet, multimedia applications for video production and image management, as well as a dialup-only TCP/IP stack, including support for telnet, FTP, Gopher, e-mail, and USENET newsgroups. A web browser, known as IBM WebExplorer, was added as an optional download later. Dialers were included for IBM's own ISP, as well as a SLIP-only dialer for users wishing to connect to a non-IBM ISP. The BonusPak also included an OS/2 port of the CompuServe Information Manager. OS/2 Warp v3 sold very well until Windows 95 was released, and was the high point of OS/2's success.

OS/2 Warp Connect v3 added support for TCP/IP over non-dialup connections, including Ethernet, ATM, Token Ring, and others, bundling IBM's Multi-Protocol Transport Services (MPTS), IBM Peer (for SMB-based networking), and IBM LAN Server domain support into the base product.

IBM PSP invested billions of dollars attempting to port OS/2 to the PowerPC platform, in an attempt to disrupt the Intel/Microsoft desktop hegemony, as part of the AIM (Apple, IBM, Motorola) Alliance, a collaboration which also produced the PReP (PowerPC Reference Platform). The failure of this project contributed greatly to the dissolution of the IBM Personal Systems Products division, as CEO Lou Gerstner began to eviscerate IBM's less-profitable divisions, conceding the desktop OS war to Microsoft.

OS/2 Warp v4 was the last version of OS/2 to be commercially sold by IBM. It revamped the UI, added a new application launcher that followed the Windows "Start" menu metaphor, enhanced the online help facility, and added voice command support (VoiceType) to the base product, allowing a user to open programs and perform other operations by speaking commands into a microphone.

OS/2 Warp v4 was followed on by OS/2 Warp 4.51 and OS/2 Warp 4.52, known as the MCPs, or "Merlin Convenience Packs". These substantial updates were only available to IBM's commercial customers, or those with a Software Subscription.

OS/2 became the basis for IBM's ill-fated WorkSpace On-Demand (WSOD) product, and ceased commercial availability in 2006. A third-party company called Serenity Systems eventually acquired a license from IBM to sell a modernized and enhanced OS/2-based operating system under the name "eComStation", which produced roughly three major releases, before entering an uncertain ownership and development status. It is widely assumed that eComStation is now a dead product, and a company called Arca Noae now produces a similarly-licensed OS/2-based operating system called "ArcaOS", which is still supported, and under continuous development and enhancement.

The OS/2 community is still quite dedicated, and manages to produce annual conferences in the US and Europe, called WarpStock. Several OS/2 User Groups still exist, and many ports of free and open-source software--generally requiring OS/2 Warp v4 or newer--have given the operating system new life, in spite of IBM's wholesale withdrawal of sales and support.

In 2005, IBM withdrew from the PC market it had created, selling off its then-current line of x86 personal computers to Chinese electronics manufacturer Lenovo.

Windows NT

Windows NT (where "NT" originally stood for "New Technology") was introduced as Windows NT 3.1 on July 27, 1993. It used a brand-new, fully 32-bit, protected-mode, preemptive multitasking microkernel developed by Dave Cutler, the original engineer for Digital Equipment Corporation's VMS operating system, an OS from which Windows NT derives many of its architectural features.

Originally developed as "NT OS/2" for "New Technology OS/2", the "OS/2" label was dropped when Microsoft abandoned the IBM/Microsoft Joint Development Agreement for OS/2, instead choosing to put all of its efforts behind its own Windows product.

While Windows 1.01 through Windows Me were written in highly platform-specific assembly language and C code, the majority of Windows NT, outside of its Hardware Abstraction Layer, is written in portable C++ code. It was conceived with portability, security, and stability as its major design goals.

Windows NT (and all Windows versions derived from it) have much more demanding hardware requirements, and implement NTFS as their native filesystem. NTFS provides support for compound files consisting of multiple data streams, advanced permissions, access control lists, long filenames, and less susceptibility to fragmentation.

Windows NT provides multiple APIs atop its microkernel. They are:

  • Win32 - the native Windows API
  • OS/2 - providing support for non-graphical, 16-bit OS/2 1.x programs

One could argue that Win16 and DOS application support in Windows NT, supplied by the Windows-on-Windows and NTVDM subsystems, could be counted as other APIs, but Microsoft documentation generally counts these two subsystems as backwards compatibility mechanisms, rather than first-class API "personalities".

Windows NT has, over the course of its lifetime, been ported to 80386, x86-64, Itanium, MIPS, Alpha, PowerPC, and ARM processors, and eventually replaced the non-NT-based Windows operating systems when the product lines were merged in the release of Windows XP.

  • 1 ROM BIOS on IBM PC compatibles has largely been supplanted by the Unified Extensible Firmware Interface.
Revision History
$Log: index.shtml,v $
Revision 1.7  2019/09/03 15:51:40  jpw
Remove redundant horizontal rule

Revision 1.6  2019/09/03 15:48:44  jpw
Fix sidebar include

Revision 1.5  2019/09/03 15:48:28  jpw
Add sidebar

Revision 1.4  2018/12/17 15:50:19  jpw
Fix some wording, add references to OS/2 Warp 4.51 and 4.52

Revision 1.3  2018/12/15 18:03:23  jpw
Add reference to Windows Multitasking article on YOUNGMUMPSTER.

Revision 1.2  2018/12/15 17:58:14  jpw
Apply some fixes from DrScriptt

Revision 1.1  2018/12/14 17:38:40  jpw
Initial revision

Thanks to DrScriptt for his invaluable feedback in the production of this article.

Copyright © 2015 John P. Willis
Last modified $Date: 2019/09/03 15:51:40 $

You are visitor number 00679

$Id: index.shtml,v 1.7 2019/09/03 15:51:40 jpw Exp $