Hubbry Logo
CP/M-86CP/M-86Main
Open search
CP/M-86
Community hub
CP/M-86
logo
8 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
CP/M-86
CP/M-86
from Wikipedia

CP/M-86
A screenshot of CP/M-86 for the IBM PC/XT/AT Version 1.1
DeveloperDigital Research, Inc. / Gary Kildall / Kathryn Strutynski
OS familyCP/M
Working stateHistoric
Source modelOriginally closed source, now open source[1]
Initial releaseNovember 1981; 44 years ago (1981-11)[2]
Available inEnglish
Supported platformsIntel 8086
Kernel typeMonolithic kernel
Default
user interface
Command-line interface
LicenseOriginally proprietary, now BSD-like[citation needed]
Preceded by(CP/M-80 2.2)
Succeeded byConcurrent CP/M-86 3.0

CP/M-86 is a discontinued version of the CP/M operating system that Digital Research (DR) made for the Intel 8086 and Intel 8088. The system commands are the same as in CP/M-80. Executable files used the relocatable .CMD file format.[nb 1] Digital Research also produced a multi-user multitasking operating system compatible with CP/M-86, MP/M-86, which later evolved into Concurrent CP/M-86. When an emulator was added to provide PC DOS compatibility, the system was renamed Concurrent DOS, which later became Multiuser DOS, of which REAL/32 is the latest incarnation. The FlexOS, DOS Plus, and DR DOS families of operating systems started as derivations of Concurrent DOS as well.

History

[edit]

Digital Research's CP/M-86 was originally announced to be released in November 1979, but was delayed repeatedly.[3] When IBM contacted other companies to obtain components for the IBM PC, the as-yet unreleased CP/M-86 was its first choice for an operating system because CP/M had the most applications at the time. Negotiations between Digital Research and IBM quickly deteriorated over IBM's non-disclosure agreement and its insistence on a one-time fee rather than DRI's usual royalty licensing plan.[4] After discussions with Microsoft, IBM decided to use 86-DOS (QDOS), a CP/M-like operating system that Microsoft bought from Seattle Computer Products renaming it MS-DOS. Microsoft adapted it for the PC and licensed it to IBM. It was sold by IBM under the name of PC DOS. After learning about the deal, Digital Research founder Gary Kildall threatened to sue IBM for infringing DRI's intellectual property, and IBM agreed to offer CP/M-86 as an alternative operating system on the PC to settle the claim. Most of the BIOS drivers for CP/M-86 for the IBM PC were written by Andy Johnson-Laird.

Digital Research CP/M-86 for the IBM Personal Computer Version 1.0

The IBM PC was announced on 12 August 1981, and the first machines began shipping in October the same year, ahead of schedule. CP/M-86 was one of three operating systems available from IBM, with PC DOS and UCSD p-System.[5] Digital Research's adaptation of CP/M-86 for the IBM PC was released six months after PC DOS in spring 1982, and porting applications from CP/M-80 to either operating system was about equally difficult.[6] In November 1981, Digital Research also released a version for the proprietary IBM Displaywriter.[2][7]

On some dual-processor 8-bit/16-bit computers, special versions of CP/M-86 could natively run CP/M-86 and CP/M-80 applications.[8] A version for the DEC Rainbow was named CP/M-86/80, whereas the version for the CompuPro System 816 [sr] was named CP/M 8-16 (see also: MP/M 8-16).[9][10] The version of CP/M-86 for the 8085/8088-based Zenith Z-100 supported running programs for both processors as well.

When PC clones came about, Microsoft licensed MS-DOS to other companies as well. Experts found that the two operating systems were technically comparable, with CP/M-86 having better memory management but DOS being faster. BYTE speculated that Microsoft reserving multitasking for Xenix "appears to leave a big opening" for Concurrent CP/M-86.[11]

On the IBM PC, however, at US$240 per copy for IBM's version, CP/M-86 sold poorly compared to the US$40 PC DOS; one survey found that 96.3% of IBM PCs were ordered with DOS, compared to 3.4% with CP/M-86 or Concurrent CP/M-86.[12] In mid-1982 Lifeboat Associates, perhaps the largest CP/M software vendor, announced its support for DOS over CP/M-86 on the IBM PC.[13] BYTE warned that IBM, Microsoft, and Lifeboat's support for DOS "poses a serious threat to" CP/M-86,[5] and Jerry Pournelle stated in the magazine that "it is clear that Digital Research made some terrible mistakes in the marketing".[14]

By early 1983 DRI began selling CP/M-86 1.1 to end users for US$60.[12] Advertisements called CP/M-86 a "terrific value", with "instant access to the largest collection of applications software in existence … hundreds of proven, professional software programs for every business and education need"; it also included Graphics System Extension (GSX), formerly US$75.[15] The company began using distributors to sell CP/M-86 applications in retail stores.[16] In May 1983 DRI announced that it would offer DOS versions of all of its languages and utilities. It stated that "obviously, PC DOS has made great market penetration on the IBM PC; we have to admit that", but claimed that "the fact that CP/M-86 has not done as well as DRI had hoped has nothing to do with our decision".[17] By early 1984 DRI gave free copies of Concurrent CP/M-86 to those who purchased two CP/M-86 applications as a limited time offer, and advertisements stated that the applications were self-booting disks, which did not require loading CP/M-86 first.[18] In January 1984, DRI also announced Kanji CP/M-86, a Japanese version of CP/M-86, for nine Japanese companies including Mitsubishi Electric Corporation, Sanyo Electric Co. Ltd., Sord Computer Corp.[19][20][21] In December 1984 Fujitsu announced a number of FM-16-based machines using Kanji CP/M-86.[22][23]

CP/M-86 and DOS had very similar functionality, but were not compatible because the system calls for the same functions and program file formats were different, so two versions of the same software had to be produced and marketed to run under both operating systems. The command interface again had similar functionality but different syntax; where CP/M-86 (and CP/M) copied file SOURCE to TARGET with the command PIP TARGET=SOURCE, DOS used COPY SOURCE TARGET.

Initially MS-DOS and CP/M-86 also ran on computers not necessarily hardware-compatible with the IBM PC such as the Apricot and Sirius, the intention being that software would be independent of hardware by making standardised operating system calls to a version of the operating system custom tailored to the particular hardware. However, writers of software which required fast performance accessed the IBM PC hardware directly instead of going through the operating system, resulting in PC-specific software which performed better than other MS-DOS and CP/M-86 versions; for example, games would display fast by writing to video memory directly instead of suffering the delay of making a call to the operating system, which would then write to a hardware-dependent memory location. Non-PC-compatible computers were soon replaced by models with hardware which behaved identically to the PC's. A consequence of the universal adoption of detailed PC architecture was that no more than 640 kilobytes of memory were supported; early machines running MS-DOS and CP/M-86 did not suffer from this restriction, and some could make use of nearly one megabyte of RAM.

Reception

[edit]

PC Magazine wrote that CP/M-86 "in several ways seems better fitted to the PC" than DOS; however, for those who did not plan to program in assembly language, because it cost six times more "CP/M seems a less compelling purchase". It stated that CP/M-86 was strong in areas where DOS was weak, and vice versa, and that the level of application support for each operating system would be most important, although CP/M-86's lack of a run-time version for applications was a weakness.[6]

Versions

[edit]

A given version of CP/M-86 has two version numbers. One applies to the whole system and is usually displayed at startup; the other applies to the BDOS kernel. Versions known to exist include:

OS BDOS Date Notes
CP/M-86 1.0 for AST[24] 2.2? 1981?
CP/M-86 1.0 for the Altos ACS 16000/8600[24] 2.2? November 1981[25]
CP/M-86 Version 1.1 for IBM Displaywriter 2.2 November 1981[2]
CP/M-86 1.0 for the Sirius 1/Victor 9000 2.2a 1981/1982
CompuView CP/M-86 2.x? 1982 196 KB disk capacity, compatible with IBM PC hardware[6]
IBM CP/M-86 for the IBM Personal Computer Version 1.0 2.2 1982-04-05[6] Initial release for the IBM PC. 141 KB disk capacity (Initial date defaults to 1982-02-10.)[6]
IBM CP/M-86 for the IBM Personal Computer Version 1.1 2.2 March 1983 Hard drive support was added.
CP/M-86 Plus Version 3.1 3.1 October 1983 Released for the Apricot PC. Based on the multitasking Concurrent CP/M-86 kernel, it could run up to four tasks at once.
Personal CP/M-86 Version 1.0 3.1 November 1983 Released for the Siemens PG685.
Personal CP/M-86 Version 3.1 3.3 January 1985 A version for the Apricot F-Series computers. This version gained the ability to use FAT formatted disks as used by DOS.
Personal CP/M-86 Version 2.0 4.1 1986 or later Released for the Siemens PC16-20. This is the same BDOS used in DOS Plus 1.2.
Personal CP/M-86 Version 2.11 4.1 1986 or later Released for the Siemens PG685.

All known Personal CP/M-86 versions contain references to CP/M-86 Plus, suggesting that they are derived from the CP/M-86 Plus codebase.

A number of 16-bit CP/M-86 derivatives existed in the former East-bloc under the names SCP1700 (Single User Control Program [de]), CP/K, and K8918-OS.[26] They were produced by the East-German VEB Robotron Dresden and Energiekombinat [de] Berlin.[27][26]

Legacy

[edit]

Caldera permitted the redistribution and modification of all original Digital Research files, including source code, related to the CP/M family through Tim Olmstead's "The Unofficial CP/M Web site" since 1997.[28][29][30] After Olmstead's death on 12 September 2001,[31] the free distribution license was refreshed and expanded by Lineo, who had meanwhile become the owner of those Digital Research assets, on 19 October 2001.[32][33][34][35]

See also

[edit]

Notes

[edit]

References

[edit]

Further reading

[edit]
[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
CP/M-86 was a 16-bit operating system developed by , Inc. () for and microprocessors, functioning as a direct port of the company's earlier 8-bit CP/M operating system to support the transition to 16-bit computing in the early 1980s. It maintained core compatibility with CP/M 2.2 software from 8080/Z80 systems through conversion tools like the XLT86 assembler, enabling developers to adapt existing applications for the new architecture while introducing enhanced capabilities such as hard disk support, with multi-tasking added in variants. Development of CP/M-86 began in 1980 under engineer Kathryn Strutynski, with the goal of extending the widespread success of CP/M—which powered numerous manufacturers' systems in the 8-bit era—to the burgeoning 16-bit market dominated by Intel's 8086 family. The system was released in 1981, prior to the 's launch, and by late that year, it ran on approximately 25% of 8086/8088 installations. Key variants included MP/M-86 version 2.0 in November 1981 for multi-user and multi-tasking environments, Concurrent CP/M-86 in late 1982, and later enhancements like CP/M-86 Plus 3.1 in October 1983, which added features such as GSX graphics support and improved networking. In the competitive landscape of early personal computing, CP/M-86 positioned as a direct rival to Microsoft's , which ultimately powered the 1981 IBM PC after 's negotiations with IBM faltered. By 1983, shifted focus toward consumer-oriented products like Concurrent CP/M-86 and Concurrent DOS, which offered partial compatibility with PC-DOS applications and a real-time kernel for advanced multitasking. Despite its technical merits and initial market traction, CP/M-86's adoption waned as MS-DOS gained dominance through IBM's endorsement, though it influenced subsequent operating systems and remained in use on specialized 16-bit hardware into the mid-1980s.

History

Origins and Announcement

Gary Kildall, founder of , in 1974, created the original CP/M operating system to provide a standardized environment for 8-bit microprocessors like the Intel 8080, enabling efficient floppy disk operations and program execution on early microcomputers. With the introduction of Intel's Intel 8086|8086 16-bit processor in 1978, Kildall recognized the need to extend CP/M's architecture to support this new generation of hardware, addressing key limitations of the 8-bit CP/M-80 such as its 64 KB memory addressing constraint. His vision was to maintain CP/M's portability and software ecosystem while adapting it for 16-bit systems, targeting emerging microcomputers that promised greater performance and expanded capabilities. Building on CP/M-80's widespread adoption in the 8-bit market, announced CP/M-86 in 1979 as a direct 16-bit successor, initially slated for release in November of that year. The announcement emphasized CP/M-86's ability to support up to 1 MB of memory through dynamic relocation techniques, allowing it to accommodate larger programs and data sets compared to its predecessor. This positioned CP/M-86 to leverage the growing availability of 8086-based systems and sustain 's leadership in microcomputer operating systems. To advance the project, Kildall recruited Kathryn Strutynski in early 1979 as the fourth employee at ; she took on the role of project manager for CP/M-86 and led a team in developing initial prototypes starting that year. Strutynski's expertise from prior work at the Naval Postgraduate School contributed to the foundational porting efforts, focusing on adapting CP/M's core structure to the 8086's segmented memory model.

Development Process

The development of CP/M-86 occurred primarily between 1979 and 1981 at , centering on the porting of key components from CP/M-80, including the Basic Disk Operating System (BDOS) and Console Command Processor (CCP), to the Intel 8086's 16-bit architecture. This effort involved rewriting these modules in PL/M-86 to accommodate the processor's segmented memory model, which allowed for a larger address space up to 1 MB but required explicit management of segment registers to avoid overlap and ensure efficient code execution. A major technical challenge was adapting to the 8086's real-mode addressing, which differed significantly from the flat 64 KB memory model of the Zilog Z80|Z80-based CP/M-80 systems; this segmentation introduced complexities in pointer arithmetic and data access, potentially increasing development costs due to the need for additional memory mapping logic. Interrupt handling also posed difficulties, as the 8086's vector-based interrupt system contrasted with the Z80's simpler I/O port instructions, necessitating custom service routines to interface with hardware peripherals while preserving system responsiveness. To address backward compatibility with existing CP/M-80 applications, created the XLT86 utility, which translated 8080 assembly code to 8086 equivalents, enabling many 8-bit programs to run with minimal modifications after recompilation. Kathryn Strutynski served as project manager for CP/M-86, leading the team in rewriting core routines and coordinating testing on prototype 8086 development systems to validate functionality across early hardware configurations. Her role built on her earlier contributions to CP/M versions and involved close collaboration with founder Gary Kildall. The project drew on multi-tasking concepts from concurrent efforts like MP/M, incorporating a real-time nucleus and process queues as foundational elements, though full multi-user capabilities were deferred to subsequent variants such as Concurrent CP/M-86.

Release and IBM Partnership Attempts

CP/M-86 was officially released by in early 1981, with shipments beginning in January of that year for general Intel 8086 and 8088-based systems. The operating system was designed to provide compatibility with existing CP/M-80 applications through its retained file format and interface, targeting the emerging 16-bit microprocessor market beyond the 8-bit Z80 ecosystem. In 1980, IBM initially selected CP/M-86 as the operating system for its upcoming IBM Personal Computer|IBM PC (model 5150), announced in August 1981, following negotiations with . However, the partnership faltered due to licensing disputes during a key meeting on August 22, 1980, where founder Gary Kildall was reportedly absent in the morning—allegedly flying his airplane—leaving his wife Dorothy and company lawyer Gerry Davis to handle discussions with IBM representatives. This led to disagreements over a non-disclosure agreement and royalty terms, prompting IBM to pivot to Microsoft, which adapted 86-DOS into PC-DOS for the IBM PC launch. later agreed in July 1981 not to pursue copyright infringement claims against IBM, allowing CP/M-86 to be offered as an option. Despite the setback, adapted CP/M-86 specifically for the IBM PC in spring 1982, with version 1.1 released on April 5 by IBM, featuring BIOS customizations to support the PC's hardware, including floppy disk controllers, display adapters, and eventual hard disk drives. This version launched at a higher price of $240 per copy, six times the cost of PC-DOS at $40, which hindered its competitiveness. Early adopters of CP/M-86 included systems like the DEC Rainbow 100, introduced in May 1982, which supported dual CP/M-80 and CP/M-86 modes via its Z80 and 8088 processors for 8-bit and 16-bit compatibility. Similarly, the Zenith Z-100, released in 1982, incorporated support for CP/M-86 alongside CP/M-80 and Z-DOS, leveraging its dual 8085 and 8088 processors to run 16-bit software packages.

Architecture

Core System Components

CP/M-86 features a monolithic kernel structure comprising three primary components: the Console Command Processor (CCP) for handling user input and command execution, the BDOS for managing file input/output and system calls, and the BIOS (firmware) for hardware abstraction and device interaction. The CCP processes built-in commands such as DIR and ERA, as well as transient commands loaded from .CMD files, operating within a dedicated memory region with a 96-byte stack for program execution. The BDOS serves as the intermediary layer, providing standardized interfaces for applications to access system resources, while the BIOS, located at the end of the operating system image in low memory, includes a jump vector table starting at offset 2500H from the OS base to facilitate calls for I/O operations. Adapted from the 8-bit CP/M-80 architecture, CP/M-86 incorporates 16-bit enhancements for the Intel 8086 processor, including expanded addressing capabilities up to 1 MB and support for relocatable program overlays across multiple memory segments. BDOS calls utilize software interrupt #224 (INT E0h), with parameters passed via 8086 registers such as CL for the function code and DX for address offsets; for instance, function 0Ch (return version number) yields a 16-bit value of 0022h in BX for version 1.1, where the high byte indicates the system type and the low byte the version. These adaptations enable efficient handling of larger memory spaces through models like the 8080-compatible overlapping code/data segments or separate small-model segments for code and data. The command-line interface relies on a text-based prompt, typically "A>", to solicit user input, extended from CP/M-80 conventions to accommodate the 16-bit environment while maintaining compatibility for command parsing and execution of .CMD files generated by utilities like GENCMD. Transient programs load into the Transient Program Area, initially sized at approximately 56 KB and relocatable to upper memory regions via a memory region table that excludes reserved areas for interrupts and the operating system. Interrupt-driven I/O is implemented through BIOS subroutines and the 8259 Programmable Interrupt Controller, allowing asynchronous handling of console and peripheral events without blocking the main execution flow.

Memory Management and File System

CP/M-86 utilizes the Intel 8086's real-mode segmentation to address up to 1 MB of physical memory, structured as a 20-bit address space divided into 64 KB segments. The operating system components are loaded contiguously into low memory starting at address 0x0400, with the Console Command Processor (CCP) and Basic Disk Operating System (BDOS) at the beginning and the Basic Input/Output System (BIOS) at the end of the image, collectively occupying approximately 10 KB plus a variable BIOS size depending on hardware configuration. The remaining memory forms the Transient Program Area (TPA), a dynamically allocatable region for user programs that can extend up to nearly 1 MB in total, though practical limits often capped the TPA at around 640 KB in early IBM PC-compatible setups due to video and adapter reservations; later configurations supported dynamic relocation of programs into non-contiguous regions above 640 KB via a Memory Region Table (MRT) that defines up to eight allocatable segments. This segmentation allows segment registers (CS for code, DS for data, SS for stack, and ES for extra) to be initialized based on selected memory models—such as 8080-compatible, small, or compact—to enable loading of transient programs into the best-fit available regions without overlap. A key limitation of CP/M-86's memory management is the absence of built-in virtual memory or paging mechanisms, relying instead on direct physical addressing within the real-mode constraints, which prevents swapping or overlaying of code beyond simple dynamic loading. This design leads to potential fragmentation in the TPA, as loaded programs occupy fixed contiguous or segmented blocks that cannot be automatically compacted, resulting in wasted space between allocations and restricting larger applications on systems with constrained RAM. Program relocation is handled by the loader, which adjusts segment bases during execution, but external fragmentation remains an issue without advanced compaction routines. The file system in CP/M-86 extends the structure from CP/M-80, maintaining compatibility while adapting to 16-bit operations, and organizes data on fixed or floppy disks using a flat directory with extent-based allocation. Filenames follow an 8.3 format, consisting of an 8-character name and 3-character extension in uppercase ASCII, with the high bit set to zero for all characters. Storage is managed in 128-byte logical records, grouped into variable-sized blocks (typically 1 KB to 16 KB via the Block Shift and Block Mask parameters in the Disk Parameter Block), and files are allocated in extents of up to 128 records each to minimize overhead on large disks. The directory supports up to 512 entries per disk, scanned sequentially for file operations, with each entry consuming 32 bytes to store metadata such as the filename, extent numbers, record counts, allocation blocks, and file attributes. Directory entries incorporate user area separation to logically partition files, supporting up to 16 user numbers (0-15) despite CP/M-86's primary single-user orientation, where the current user code in the File Control Block (FCB) filters access to user-specific files without physical isolation on disk. Allocation occurs via a bitmap-like allocation vector in memory for each online drive, marking used blocks during file creation or extension, with extents allowing files to span non-contiguous blocks up to a maximum of 128 extents (approximately 2 MB per file, though disk limits apply). This extent mechanism, handled transparently by the BDOS during sequential or random I/O, supports both fixed and removable media but lacks hierarchical subdirectories, enforcing a simple, flat namespace per user area.

Programming Interface

The programming interface of CP/M-86 centered on the Basic Disk Operating System (BDOS), which provided over 50 system calls accessible via a software interrupt for handling core operations. Developers invoked BDOS functions using interrupt 224 (INT 0xE0), with the function code placed in the CL register (corresponding to the 8080's C register for compatibility), byte parameters in DL, word parameters in DX, and the data segment specified in DS. Return values included byte results in AL, word results in AX or BX, and double-word results with offset in BX and segment in ES; all segment registers except ES were preserved across calls. These functions encompassed categories such as console I/O (e.g., function 01h for console input, returning a character in AL or FFh for no input), auxiliary and printer I/O, file and directory operations (e.g., 0Fh for random read, using DX for the DMA address), drive selection, date/time handling, error processing, memory management (e.g., 30h for allocate, returning a handle in AL), and miscellaneous utilities like program loading (3Bh). CP/M-86 supported relocatable object code through its .CMD executable format, which featured a 128-byte header with up to eight group descriptors defining code, data, extra, and stack segments, enabling base relocations at load time. Relocatable modules, produced by assemblers like RMAC-86, were combined using the LINK-86 utility to generate .CMD files with fixup records for segment offsets, allowing programs to load at arbitrary memory locations without recompilation. The LOAD utility (or equivalents like R.COM for version 1.1) handled binding and execution, converting hex intermediates via GENCMD into memory images, but this loader was incompatible with MS-DOS's .EXE format due to differing headers, segment structures, and relocation mechanisms. Backward compatibility with CP/M-80 applications was facilitated on 16-bit hardware through processors like the NEC V20 or V30, which included a native 8080 emulation mode to interpret 8-bit 8080/8085 instructions directly, allowing unmodified .COM files to run without software overhead. This hardware-level support extended the large CP/M-80 software library to CP/M-86 systems equipped with such CPUs, though file formats and disk structures remained largely compatible. Development tools for CP/M-86 included the ASM-86 macro assembler, which generated relocatable hex object files (.H86) using Intel mnemonics and supported symbolic debugging output; the PL/M-86 compiler for high-level programming, producing object modules linkable with runtime support via BIOS function 50h for interfacing; and the DDT-86 dynamic debugger for interactive examination of 8086 code, including memory inspection, breakpoints, and register modification during execution. These utilities formed a complete environment for assembly and debugging, with PL/M-86 providing runtime libraries for standard I/O and BDOS interactions from the outset.

Versions

Initial Releases (1.0 and 1.1)

CP/M-86 version 1.0, released in November 1981, represented 's initial 16-bit adaptation of the CP/M operating system for Intel 8086 and 8088 processors, incorporating BDOS version 2.2 to handle core file and device operations. This release supported up to 1 MB of RAM and emphasized hardware independence through a modular BIOS layer, enabling porting to various 8086-based systems. In April 1982, an adapted version targeted the , fitting within its 64 KB memory constraint by allocating approximately 56 KB to the Transient Program Area (TPA) for user programs. The IBM PC version was distributed on two 5.25-inch single-sided double-density (160 KB) floppy disks, bundled with essential utilities such as PIP for file transfers between drives. Pricing varied by bundle, typically ranging from $150 for basic CP/M users to $240 for standalone versions. However, version 1.0 exhibited limitations, including slower disk access due to the absence of track buffering and restricted driver support tailored to emerging PC hardware, which impacted boot times and compatibility. Version 1.1, issued in 1983, built on this foundation with BDOS 2.2 enhancements that refined the programming interface for better stability. Key updates included improved error handling, such as recovery mechanisms in utilities like the ED editor for disk full conditions, and expanded floppy disk support through track buffering that reduced read times to about 0.25 seconds—yielding up to fourfold performance gains. Minor optimizations further streamlined utility execution and program chaining via new BDOS function 47, partially mitigating 1.0's boot delays and driver constraints for PC environments. The IBM PC version was distributed on 5.25-inch floppy disks with PIP, maintaining the $150–$240 price range depending on configuration.

Later Variants and Extensions

MP/M-86 version 2.0, released in November 1981, was an early multi-user and multi-tasking extension of CP/M-86, supporting multiple concurrent users on shared hardware through priority-based scheduling and resource locking. Following the initial releases of CP/M-86, developed Concurrent CP/M-86 in 1982 as a merger of the multi-programming MP/M-86 system with features from CP/M-86 version 1.1. This variant introduced multi-tasking capabilities through support for up to four virtual consoles, each capable of running an independent CP/M-86 program concurrently. It employed non-preemptive, priority-based scheduling with round-robin dispatching among processes of equal priority, allowing up to four concurrent users via shared terminals while managing resource access through a system lock list for files and memory. Shared memory regions were facilitated by a fixed-partition memory management module, enabling processes to allocate and share segments via memory control blocks for efficient data exchange. CP/M-86 Plus version 3.1, released in October 1983, enhanced the single-user system with BDOS 3.1, adding support for GSX graphics and improved networking features. In 1985, released Personal CP/M-86 version 3.1, an enhanced single-user variant targeted at specific hardware like the Apricot F-Series computers. This version incorporated FAT file system support to enable compatibility with MS-DOS formatted disks, allowing seamless access to DOS media without reformatting. It also extended memory banking mechanisms to utilize larger RAM configurations beyond the standard 64 KB limits, improving performance for applications on systems with expanded memory. Additionally, it introduced precursors to windowing functionality, such as basic screen splitting and multi-task visibility, building on the virtual console concepts from Concurrent CP/M-86. Other extensions included hybrid implementations like the CP/M-86/80 variant for dual-processor systems such as the Zenith Z-100, which featured both an 8-bit Intel 8085 and a 16-bit Intel 8088. This setup allowed seamless switching between 8-bit CP/M-80 and 16-bit CP/M-86 environments via software control of the processor swap port (FEH), with hardware logic ensuring glitch-free transitions through clock suppression and memory mapping. The Z-100's design supported running programs for either processor without rebooting, leveraging a shared memory architecture configurable up to 192 KB RAM. No major updates to CP/M-86 occurred after 1985, as shifted focus toward MS-DOS-compatible systems, culminating in the transition to DR-DOS in 1988.

Reception and Adoption

Market Entry and Sales

CP/M-86 was commercially released in early 1982, approximately six months after the 's debut in August 1981, marking Digital Research's entry into the 16-bit personal computer operating system market. The operating system was made available through IBM's distribution channels as an optional purchase for the , alongside PC DOS and UCSD p-System, but its rollout was hampered by the high licensing fees set by Digital Research. Priced at $240 per copy—six times the $40 cost of PC DOS—CP/M-86 struggled to compete in a price-sensitive market dominated by IBM's endorsement of the cheaper alternative. This pricing disparity contributed to modest initial sales amid IBM's shipment of 175,000 to 200,000 PCs that year, representing less than 5% market penetration among users. By 1983, with 96% of shipping with PC DOS, CP/M-86's share remained marginal, prompting Digital Research to slash its price to $60 in February of that year in a bid to boost adoption. Prior to the 's dominance, CP/M-86 had achieved adoption on approximately 25% of 8086/8088 installations by late 1981. Distribution relied heavily on OEM bundling rather than broad retail availability, with CP/M-86 pre-installed on select hardware such as the Olivetti M20 personal computer, which supported it via an optional Intel 8086 processor board and sold over 50,000 units following its 1982 launch. It also saw limited uptake in niche segments like engineering workstations from vendors such as Altos and Sirius Systems, where prior OEM licenses from 1980-1981 had established some foothold before IBM's market dominance took hold. However, the combination of delayed availability, elevated costs, and IBM's preferential promotion of PC DOS ultimately confined CP/M-86 to a small fraction of the burgeoning PC ecosystem.

Criticisms and Comparisons to Competitors

Contemporary reviews highlighted performance shortcomings in CP/M-86 relative to , primarily stemming from overhead in its relocatable code loading mechanism and less optimized disk I/O handling. A comprehensive benchmark in BYTE magazine demonstrated outperforming CP/M-86 in key operations, such as completing a full disk write in 50.3 seconds compared to 60.8 seconds for CP/M-86, and loading the BASIC-86 interpreter in 2.7 seconds versus 5.7 seconds. These differences resulted in CP/M-86 exhibiting a 20-30% speed deficit in typical tasks like file copying (9.9 seconds with PIP versus 5.75 seconds with COPY) and program execution, though performance gaps narrowed on hard disks or with added track buffering. While reviewers commended CP/M-86's stability, this sluggishness on floppy-based systems like the contributed to user frustration and preference for the nimbler . Compatibility challenges further eroded CP/M-86's market position, as its .CMD executable format—featuring a distinct 128-byte header—prevented direct porting of applications without recompilation or translation tools. Although CP/M-86 maintained strong backward compatibility with over 2,000 CP/M-80 programs via emulators like EMU-86, it struggled with runtime libraries for languages such as Microsoft BASIC, FORTRAN, and Pascal, which were better integrated into . This fragmentation forced developers to maintain dual versions, increasing costs and slowing software ecosystem growth around CP/M-86 compared to the unified environment tailored for the . Cost and support infrastructure drew significant criticism, with CP/M-86's initial $240 retail price viewed as exorbitant against 's $40-60 bundling with hardware or software packages, deterring widespread adoption among budget-conscious users. By February 1983, Digital Research responded by slashing the price to $60, but this came too late to counter the momentum of Microsoft's more affordable, integrated offerings. Documentation for CP/M-86 was detailed and programmer-oriented, yet the overall ecosystem lagged in driver availability and bundled utilities, contrasting with Microsoft's comprehensive tools and rapid updates that fostered a more supportive developer community. Notwithstanding these drawbacks, CP/M-86 earned praise for its advanced memory management, employing a System Memory Segment Table to efficiently allocate 64 KB segments and support larger programs in the 8086's segmented architecture—capabilities that outshone in multi-user scenarios like MP/M-86. However, these strengths remained underutilized on the , constrained by the system's 640 KB RAM ceiling and limited demand for such features in single-user applications.

Legacy

Influence on Successor Operating Systems

CP/M-86 directly influenced Digital Research's later operating systems, most notably through its evolution into DR-DOS, released in 1988. DR-DOS incorporated the Basic Disk Operating System (BDOS) kernel from CP/M-86, reimplemented as DRBDOS.SYS, while adding compatibility with MS-DOS file formats and applications. This kernel was derived from Concurrent DOS 6.0, which itself built on CP/M-86's architecture to enable multi-tasking capabilities, such as task switching between DOS and CP/M-86 programs. These features allowed DR-DOS to serve as a bridge between the CP/M ecosystem and the dominant PC-DOS/MS-DOS environment, supporting both legacy CP/M-86 software and emerging DOS standards. In the 1990s, elements of CP/M-86 further evolved into Multiuser DOS, a real-time multi-user, multi-tasking system developed by Digital Research and later maintained by Novell following its 1991 acquisition of the company. Multiuser DOS was built on the foundations of Concurrent CP/M-86 and Concurrent DOS 386, incorporating server-oriented features like support for up to 64 simultaneous users accessing DOS applications via terminals. This design extended CP/M-86's multi-user concepts—originally from MP/M-86 integrations—into networked and embedded environments, influencing real-time systems for industrial and server applications. Beyond Digital Research's lineage, CP/M-86's command-line paradigms, including its Console Command Processor for executing utilities and file operations, contributed to the development of text-based interfaces in subsequent PC operating systems. In the Eastern Bloc, CP/M-86 inspired derivatives such as the SCP 1700 operating system, adapted for Soviet hardware like the A 7100 and A 7150 personal computers in the 1980s to support local 8086-compatible systems amid restricted access to Western technology.

Preservation and Modern Emulation

In 2001, Lineo—formed from Caldera's thin-client division—updated and clarified licensing for Digital Research materials, including CP/M family sources, under a permissive open-source license facilitating study and modification by enthusiasts. In 2022, the CP/M license was further updated to a fully permissive open-source one. These efforts have enabled the disassembly and reassembly of CP/M-86 version 1.1 sources in assembly language, including BIOS and bootstrap code originally developed for hardware like the iSBC 86/12 board. Emulation has played a central role in reviving CP/M-86, allowing execution of original disk images on contemporary hardware. Similarly, PCem (and its successor 86Box) emulates IBM PC/XT configurations to boot and run CP/M-86 binaries, handling period-specific peripherals like MDA video adapters and 360KB floppy drives. As of 2025, 86Box continues to evolve with better support for 1980s peripherals and OEM variants. CP/M-86 persists in retro computing communities for educational purposes, where virtual machines simulate 1980s workflows to demonstrate early file systems and command-line interfaces. Preservation sites like WinWorldPC archive bootable disk images of CP/M-86 versions 1.0 through 3.x, enabling direct downloads for emulator use and ensuring long-term availability of OEM variants from vendors like Eagle Computer. These resources support hands-on exploration in academic settings, such as teaching operating system fundamentals through unmodified 8086 code execution. Key challenges in preservation include binary incompatibilities between CP/M-86's 16-bit 8086 architecture and modern x86-64 processors, necessitating full hardware emulation to replicate interrupt handling and memory segmentation accurately. Ongoing efforts involve digitizing original floppies using tools like KryoFlux for bit-precise images and scanning manuals—such as the CP/M-86 System Guide—for OCR conversion, with collections maintained on repositories like Bitsavers to combat media degradation.

References

Add your contribution
Related Hubs
User Avatar
No comments yet.