OS/2 Versions And History
This is a list, chronologically sorted, of OS/2 versions, related products, and historic dates.
IBM PC DOS 3.0 (1984)
The release of the IBM Personal Computer/AT in 1984 meant the introduction of the advanced Intel 80286 CPU to the PC market, along with 5.25-inch 1.2 MB diskette support (and later 3.5-inch diskette support). However, DOS 3.0 was only a minor improvement to DOS 2.x, featuring support for 1.2 MB diskettes and hard drives up to 32 MB.
Most importantly, DOS 3.x doesn't use the protected mode feature of the 80286, running in real mode instead, which was supposed to be there only for bootstrapping. This might have been due to Intel initially creating the 80286 (called iAXP 286 at the time of its release) to be used not in personal computers, but in multi-user multitasking systems. Thus, users of the PC AT ended up waiting until 1987 for a protected-mode successor of DOS, being left with real-mode DOS and Xenix until then.
Multitasking DOS 4
For more detailed information about this version of DOS, see Multitasking DOS 4.
Officially called just MS-DOS 4.00, Multitasking DOS 4 was the intended successor of DOS 2.x and later 3.x, initially developed between January 1983[1] and November 1985. Despite still running in real mode, it has many features later appearing in both OS/2 and Windows, including:
- the New Executable format
- an OS/2-style per-task data area (PTDA) replacing the MS-DOS program segment prefix (PSP)
- system calls using dynamically linked functions in a built-in module named DOSCALLS
- the concept of processes along with related system calls
- the use of a higher-level language (C) for writing parts of the operating system.
However, unlike any version of OS/2 released to the public, both earlier MS-DOS COM and MZ executables and MS-DOS interrupts are supported on Multitasking DOS 4, and there are even improvements to these APIs (some of which break compatibility with older DOS versions). New apps use both the legacy (int 21h
) and new dynamically linked APIs, perhaps suggesting the old API was deprecated or in the process of being replaced.
It was originally called DOS 3.0, which is referenced by older binaries checking for DOS 3.0 to 4.0; later the release number was pushed to 4.0 with the release of 3.0.
This version of DOS supports pre-emptive multitasking, but its usability is limited by the 640kB memory limit, with no swapping because of lack of necessary hardware support. For this reason, it was only released to certain OEMs, opting to wait with the public release for its protected mode successor[2].
Multitasking Support
Multitasking DOS 4 adds new system calls to manage a multiprocess system, namely for:
- shared memory
- semaphores
- sleep and wait on child
- signal handlers and sending signals
- process priority
In addition to the usual CON device for the screen, split devices SCREEN$ and KEYBD$ were introduced; the user can switch between multiple sessions, each having its own screen. The DETACH command was added to support running processes in the background; these are still allowed to write onto their attached screen, but can't read from STDIN.
New APIs
A module built into the kernel called DOSCALLS was introduced in Multitasking DOS 4, containing a limited number of functions implementing new features of the DOS kernel. If you know a little about OS/2 API, this will be familiar to you. Note that some of the functions being prefixed with DOS and some not. Here's a full list of DOSCALLS exports:
1 ALLOCSEG 2 REALLOCSEG 3 FREESEG 4 LOCKSEG 5 UNLOCKSEG 6 GETSEGSIZE 7 GETDSHANDLE 8 CRITENTER 9 CRITLEAVE 10 FCRITENTER 11 FCRITLEAVE 12 PBLOCK 13 PRUN 14 SUBSCREEN 15 GETPIDS 16 DOSDISCARDCODE .17 DOSGETHANDLE 18 DOSHANDLEJUMP
The rest of the new functions (e.g. semaphores) are only implemented as INT 21h calls. Some functionality is also implement as exported functions from SM.EXE (Session Manager) and POPUP.EXE.
OS/2 Pre-Betas
ADOS 5.0, internal revision 7.68
The first known version of protected-mode DOS is from October 1986, which is quite late compared to both the release of the PC AT and the development of Windows 1.0 and DOS 4.0. Using the same internal revision format as DOS 4.0, it identifies itself as internal revision 7.68, which is consistent with the known internal revision of DOS 4.0 being 6.7. There is no clear name; boot screen identifies the system as CP-DOS 1.0, while the command interpreter identifies the system as ADOS 5.00.
-
ADOS 5.0 session manager, captured on internal revision 7.68
-
ADOS 5.0 internal revision 7.68 command prompt (CMD.EXE)
-
ADOS 5.0 internal revision 7.68 booting in VirtualBox
Feature-wise, ADOS 5.0 is a continuation of DOS 4.0, keeping e.g. New Executable, the DOSCALLS in-kernel module, Session Manager, and SCREEN$ device (KEYBD$ seems to be missing from internal revision 7.68). A significant difference is the absence of any interrupt-based API in protected mode, all of which was moved to DOSCALLS or several userspace modules[3]:
- BKSCALLS.EXE - Base Keyboard Subsystem
- BMSCALLS.EXE - Base Mouse Handler
- BVSCALLS.EXE - Base Video Subsystem
- KBDCALLS.EXE - Keyboard Router
- MONCALLS.EXE - Monitor Calls
- MOUCALLS.EXE - Mouse Calls
- QUECALLS.EXE - Queue Calls
- VIOCALLS.EXE - Video Calls (VIO subsystem)
Session Manager (SM.EXE in DOS 4.0) was split into SESMGR.EXE and SHELL.EXE. SESMGR is a module linked by any program that wants to act as a session manager; internally it uses DOSCALLS, KBDCALLS, MOUCALLS, and VIOCALLS routines to handle that. This allows custom shells to be written; SHELL.EXE is the system-provided shell, in appearance very similar to SM.EXE.
IBM OS/2 1.0
MS OS/2 1.0
TODO: Document neozeed's and NCommander's exporation results