1: <HTML>
2: <HEAD>
3: <TITLE>Microcomputer OS History</TITLE>
4: </HEAD>
5: <BODY BACKGROUND="../images/linen2d.jpg">
6: <!--#include virtual="../fragments/nav.shtml" -->
7: <TABLE CELLPADDING=3 BORDER=0 WIDTH=100%>
8: <TR>
9: <TD WIDTH=25% VALIGN=TOP>
10: <!--#include virtual="../fragments/sidebar.shtml" -->
11: </TD>
12: <TD WIDTH=75% VALIGN=TOP>
13: <H1>Microcomputer OS History</H1>
14:
15: <H2>Timeline</H2>
16:
17: <P>
18: <A HREF="images/os_history.png" TARGET="about:blank"><IMG SRC="images/os_history.png" WIDTH="100%"></A><BR>
19: <A HREF="images/os_history.png" TARGET="about:blank"><EM>See full-size version</EM></A> <EM>(Opens in new window)</EM>
20: </P>
21:
22:
23: <H2>CP/M (Control Program/Monitor)</H2>
24:
25: <P>CP/M was developed by the late Gary Kildall of Digital Research Inc., originally Intergalactic Digital Research.
26: As the first <EM>de facto</EM> standard among microcomputer operating systems, CP/M ran on a very wide variety of
27: competing hardware platforms. Although many of CP/M's supported platforms were vastly different in architecture,
28: power, and peripherals (meaning that binary programs could not be shared among different types of CP/M machines),
29: application programs could be easily ported, if they limited themselves to the API supplied by the operating system,
30: rather than accessing hardware directly. In fact, DRI often provided source translator automata for converting assembly
31: language programs from one supported platform to the other.</P>
32:
33: <P>Architecturally, CP/M was divided into three parts. These were the <STRONG>Basic Input/Output System</STRONG> or <STRONG>BIOS</STRONG>,
34: the <STRONG>Basic Disk Operating System</STRONG> or <STRONG>BDOS</STRONG>, and the <STRONG>Console Command Processor</STRONG> or <STRONG>CCP</STRONG>.
35: 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 <SUPER><A HREF="#footnote1">1</A></SUPER>.</P>
36:
37: <P>The BIOS was the only hardware-dependent component of CP/M, and can be considered as a primitive hardware abstraction layer, or HAL.
38: BDOS restricted itself to calling the BIOS. Portability was enhanced by the fact that at least the BDOS and CCP were written
39: in PL/M (Programming Language for Microcomputers), a high-level language conceived by Kildall in 1973 with similarities to
40: PL/I and ALGOL.</P>
41:
42: <P>CP/M rapidly lost ground to PC-DOS and MS-DOS after the introduction of the IBM Personal Computer in 1981. However,
43: CP/M-86 was eventually released on the IBM PC, a product which gained little traction against Microsoft's dominance. The CP/M
44: family of operating systems eventually came to include MP/M (a multiuser version of CP/M), and Concurrent CP/M, a multitasking
45: version of CP/M that was ultimately developed into Concurrent DOS, which was a multitasking MS-DOS clone that itself became
46: DR-DOS, which enjoyed a mild degree of success among x86 power users, and was well-reviewed by the computer press of the time.</P>
47:
48: <P>DR-DOS was eventually sold to Novell, becoming Novell DOS. Novell sold most of its non-NetWare OS properties to Caldera in the
49: late 1990s, and Novell DOS became Caldera OpenDOS.</P>
50:
51: <P>CP/M still enjoys wide use among retrocomputing hobbyists.</P>
52:
53: <H2>MS-DOS</H2>
54:
55: <P>MS-DOS was originally developed in 1980 as <STRONG>QDOS</STRONG> (the Quick and Dirty OS) by Tim Paterson of Seattle Computer Products,
56: 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
57: machine to be rebooted if a new disk was inserted into the floppy drive, QDOS did not. Also, QDOS implemented the FAT12 filesystem
58: used by Microsoft's Disk BASIC instead of the CP/M filesystem, and also had more intuitive commands (such as COPY instead of PIP).</P>
59:
60: <P>QDOS was sold with SCP's 8086 computer kits, and was eventually renamed <STRONG>86-DOS</STRONG>. Microsoft purchased 86-DOS from SCP
61: 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)
62: for its own machines.</P>
63:
64: <P>IBM PC-DOS continued as a distinct IBM product until the late 1990s release of PC-DOS 2000.</P>
65:
66: <P>MS-DOS 2.0 introduced UNIX-style pipelines, installable device drivers, and hierarchical directory support in the FAT filesystem. It also
67: added support for accessing files through file handles rather than the clumsier CP/M approach of FCBs, or File Control Blocks.</P>
68:
69: <P>MS-DOS 5.0 was a full re-write of the operating system, largely performed by Microsoft star programmer Charles Simonyi, the original
70: implementer of Microsoft Word and Excel.</P>
71:
72: <P>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)
73: CPUs added support for memory above 1MB. Very large programs could eventually use EMS memory. EMS is a standard developed by Lotus Development Corp.,
74: Intel, and Microsoft (the LIM Expanded Memory Specification) for access of bank-switched memory mapped into free areas of the UMA, which was memory
75: between 640KB and 1MB.</P>
76:
77: <P>EMS memory was originally supplied via expansion boards, but expanded memory support was later supplied most often by a software package (such as
78: Microsoft's EMM386, Qualitas 386MAX, and Quarterdeck QEMM) which used XMS memory to simulate EMS memory. XMS memory (eXtended Memory Specification)
79: 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
80: manager), by equivalent drivers provided by the above memory management products.</P>
81:
82: <P>Many MS-DOS programs implemented later in the operating system's lifetime actually ran in 386 protected mode, using what is
83: called a "DOS Extender", which is a program often conforming to the DPMI (or DOS Protected Mode Interface) specification, using the
84: 80386 Virtual 8086 mode to allow DOS programs running in protected mode to make calls to DOS and BIOS APIs.</P>
85:
86: <P>It can be argued that early versions of Microsoft Windows were themselves a type of DOS extender. The degree to which any given
87: 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,
88: involving various modes of operation in which Windows can be run, as well as the engagement of various, optional Windows components.</P>
89:
90: <H2>Microsoft Windows (non-NT)</H2>
91:
92: <P>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
93: for GUI application development. It used a GUI file manager application called the <STRONG>MS-DOS Executive</STRONG> to manage and launch
94: 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
95: 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
96: screen, and used the terms <EM>iconify</EM> and <EM>zoom</EM>, instead of the now-familiar <EM>minimize</EM> and <EM>maximize</EM>.</P>
97:
98: <P>Windows 1.01 strictly relied upon DOS and BIOS APIs to access the hardware of the computer.</P>
99:
100: <P>Windows 2.0 introduced overlapping windows, prompting a lawsuit from Apple Computer, which claimed to own the technology for overlapping windows.
101: Architecturally, Windows 2.x eventually added 80286- and 80386-specific versions (Windows/286 and Windows/386), which began to blur the distinction
102: between graphical shell and operating system, providing native Windows drivers for increasingly more hardware.</P>
103:
104: <P>Windows 3.0 was the first truly successful release of Windows, replacing the MS-DOS Executive with <STRONG>Program Manager</STRONG> and
105: <STRONG>File Manager</STRONG>. It ran in <STRONG>Real Mode</STRONG> (corresponding to the 8086 real address mode), <STRONG>Standard Mode</STRONG>
106: (corresponding to 80286 protected mode), and <STRONG>386 Enhanced Mode</STRONG> (corresponding to 80386 protected mode). Individual applications
107: in any of these modes were cooperatively multitasked, but still themselves 16-bit applications. DOS and BIOS were still used to access the filesystem
108: 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
109: 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
110: run, each in its own window.</P>
111:
112: <P>Windows 3.1 eliminated Real Mode and improved stability, as well as adding multimedia device support (previously limited to the Microsoft Multimedia
113: Extensions, a set of extensions for Windows 3.0 only available to hardware OEMs) to Windows itself.</P>
114:
115: <P>Windows for Workgroups eliminated standard mode, and provided optional 32-bit disk access and 32-bit file access. When these two components were enabled,
116: 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
117: APIs were no longer needed for access to media. Windows for Workgroups also added networking support, and the Win32s extensions allowed a small subset
118: of 32-bit applications designed for a subset of the Windows NT API to run.</P>
119:
120: <P>Windows 95, released on August 24, 1995, added 32-bit application support, support for 255-character filenames, an improved GUI, preemptive multitasking,
121: and multithreading. It implemented a subset of the Windows NT API (excluding Unicode and security APIs), and retained full support for MS-DOS applications.
122: 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
123: 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
124: 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
125: inheriting the base VM's environment and configuration.</P>
126:
127: <P>Note that LFN support in Win95 was still FAT16-based, but used reserved header areas to support this, through a system called <STRONG>VFAT</STRONG>. The
128: 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
129: 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
130: as a standalone product, but these plans were eventually scrapped.</P>
131:
132: <P>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,
133: see <A HREF="https://youngmumpster.wordpress.com/2013/10/13/windows-multitasking-a-historical-aside/">Windows Multitasking: A Historical Aside</A> on my tech blog.</P>
134:
135: <P>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.</P>
136:
137: <H2>OS/2 (Operating System/2)</H2>
138:
139: <P>The result of a Joint Development Agreement between Microsoft and IBM, OS/2 was designed alongside the IBM PS/2 line of microcomputers, and
140: was intended to provide a modern replacement for MS-DOS and PC-DOS, breaking the 640KB memory barrier of the latter operating systems.</P>
141:
142: <P>OS/2 was originally implemented as a multitasking, 16-bit, 80286 protected mode operating system. The original 1987 release did not have a graphical
143: 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
144: similar to the Microsoft Windows API, but with somewhat more consistent API names, and the Presentation Manager coordinate system used a different
145: point of origin, i.e., the location of (0, 0) was different.</P>
146:
147: <P>OS/2 1.3 changed the Presentation Manager UI to match Windows 3.0.</P>
148:
149: <P>Following the release of Microsoft Windows 3.0, Microsoft abandoned its joint development agreement with IBM in order to focus on its Windows
150: product line exclusively.</P>
151:
152: <P>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
153: 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
154: Common User Access) standards, and implemented using IBM's System Object Model (or SOM) ABI and API. SOM is conceptually similar to Microsoft's
155: Component Object Model (COM, not to be confused with .COM executables in MS-DOS and CP/M), and Netscape/Mozilla's XPCOM.</P>
156:
157: <P>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
158: shared virtual machine, or in dedicated, protected virtual machines. It could also run MS-DOS applications, providing far better compatibility for
159: said applications than any Windows version ever could, including games.</P>
160:
161: <P>OS/2 Warp v3 reduced hardware requirements, improved the installation experience, added multimedia device support, added the LaunchPad application launcher, and introduced the
162: BonusPak, which contained a suite of productivity applications such as a word processor and a spreadsheet, multimedia applications for video production
163: 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,
164: 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
165: 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
166: until Windows 95 was released, and was the high point of OS/2's success.</P>
167:
168: <P>OS/2 Warp Connect v3 added support for TCP/IP over non-dialup connections, including Ethernet, ATM, Token Ring, and others, bundling IBM's
169: Multi-Protocol Transport Services (MPTS), IBM Peer (for SMB-based networking), and IBM LAN Server domain support into the base product.</P>
170:
171: <P>IBM PSP invested billions of dollars attempting to port OS/2 to the PowerPC platform, in an attempt to disrupt the Intel/Microsoft desktop
172: hegemony, as part of the AIM (Apple, IBM, Motorola) Alliance, a collaboration which also produced the PReP (PowerPC Reference Platform). The
173: failure of this project contributed greatly to the dissolution of the IBM Personal Systems Products division, as CEO Lou Gerstner began to
174: eviscerate IBM's less-profitable divisions, conceding the desktop OS war to Microsoft.</P>
175:
176: <P>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
177: the Windows "Start" menu metaphor, enhanced the online help facility, and added voice command support (VoiceType) to the base product, allowing a user to
178: open programs and perform other operations by speaking commands into a microphone.</P>
179:
180: <P>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
181: were only available to IBM's commercial customers, or those with a Software Subscription.</P>
182:
183: <P>OS/2 became the basis for IBM's ill-fated WorkSpace On-Demand (WSOD) product, and ceased commercial availability in 2006. A third-party
184: company called Serenity Systems eventually acquired a license from IBM to sell a modernized and enhanced OS/2-based operating system under the name
185: "eComStation", which produced roughly three major releases, before entering an uncertain ownership and development status. It is widely assumed that
186: 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
187: is still supported, and under continuous development and enhancement.</P>
188:
189: <P>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
190: 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
191: spite of IBM's wholesale withdrawal of sales and support.</P>
192:
193: <P>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
194: Lenovo.</P>
195:
196:
197: <H2>Windows NT</H2>
198:
199: <P>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,
200: fully 32-bit, protected-mode, preemptive multitasking microkernel developed by Dave Cutler, the original engineer for Digital Equipment Corporation's VMS
201: operating system, an OS from which Windows NT derives many of its architectural features.</P>
202:
203: <P>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
204: Agreement for OS/2, instead choosing to put all of its efforts behind its own Windows product.</P>
205:
206: <P>While Windows 1.01 through Windows Me were written in highly platform-specific assembly language and C code, the majority of Windows NT, outside
207: of its Hardware Abstraction Layer, is written in portable C++ code. It was conceived with portability, security, and stability as its major design goals.</P>
208:
209: <P>Windows NT (and all Windows versions derived from it) have much more demanding hardware requirements, and implement NTFS as their native filesystem. NTFS
210: provides support for compound files consisting of multiple data streams, advanced permissions, access control lists, long filenames, and less susceptibility to
211: fragmentation.</P>
212:
213: <P>Windows NT provides multiple APIs atop its microkernel. They are:
214:
215: <UL>
216: <LI>Win32 - the native Windows API</LI>
217: <LI>POSIX</LI>
218: <LI>OS/2 - providing support for non-graphical, 16-bit OS/2 1.x programs</LI>
219: </UL>
220:
221: </P>
222:
223: <P>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
224: other APIs, but Microsoft documentation generally counts these two subsystems as backwards compatibility mechanisms, rather than first-class API
225: "personalities".</P>
226:
227: <P>Windows NT has, over the course of its lifetime, been ported to 80386, x86-64, Itanium, MIPS, Alpha, PowerPC, and ARM processors, and eventually
228: replaced the non-NT-based Windows operating systems when the product lines were merged in the release of Windows XP.</P>
229:
230:
231: <HR>
232: <UL>
233: <LI><A NAME="footnote1"></A><SUPER>1</SUPER> ROM BIOS on IBM PC compatibles has largely been supplanted by the Unified Extensible Firmware Interface.</LI>
234: </UL>
235: </TD>
236: </TR>
237: </TABLE>
238: <EM>Revision History</EM>
239: <PRE>
240: $Log: index.shtml,v $
241: Revision 1.1 2025/02/20 01:30:51 snw
242: initial commit
243:
244: Revision 1.7 2019/09/03 15:51:40 jpw
245: Remove redundant horizontal rule
246:
247: Revision 1.6 2019/09/03 15:48:44 jpw
248: Fix sidebar include
249:
250: Revision 1.5 2019/09/03 15:48:28 jpw
251: Add sidebar
252:
253: Revision 1.4 2018/12/17 15:50:19 jpw
254: Fix some wording, add references to OS/2 Warp 4.51 and 4.52
255:
256: Revision 1.3 2018/12/15 18:03:23 jpw
257: Add reference to Windows Multitasking article on YOUNGMUMPSTER.
258:
259: Revision 1.2 2018/12/15 17:58:14 jpw
260: Apply some fixes from DrScriptt
261:
262: Revision 1.1 2018/12/14 17:38:40 jpw
263: Initial revision
264:
265: </PRE>
266: <P>Thanks to DrScriptt for his invaluable feedback in the production of this article.</P>
267: <HR>
268: <CENTER>
269: Copyright © 2025 Serena Willis<BR>
270: Last modified $Date: 2025/02/20 01:30:51 $<BR><BR>
271: <BR><BR>
272: <EM>$Id: index.shtml,v 1.1 2025/02/20 01:30:51 snw Exp $</EM>
273: <P>
274: <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-nd/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/">Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License</a>.
275: </P>
276: </CENTER>
277:
278: </BODY>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>