Jump to content

TOS/M

From Alfawiki
Adapted from the English Wikipedia article TOS/M, available under CC BY-SA 4.0Updated 9 August 2025
Digital Research, Inc.
Company typePrivate
IndustrySoftware
Founded1974
FounderGary Kildall, Dorothy McEwen
Headquarters
United States
ProductsCP/M operating system, PL/M compiler

CP/M, an acronym initially meaning Control Program/Monitor and later reinterpreted as Control Program for Microcomputers, is a widely distributed operating system developed in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080 and 85-based microcomputer platforms. This disk operating system was engineered to manage files on magnetic disk storage and execute software from these disks. Originally designed for single-task operations on 8-bit processor systems with memory capacities up to 64 kilobytes, subsequent iterations introduced multi-user capabilities and support for 16-bit processor architectures.

The fundamental elements of CP/M include the Basic Input/Output System (BIOS), responsible for hardware interface management; the Basic Disk Operating System (BDOS), which oversees file handling and system services; and the Console Command Processor (CCP), functioning as the command-line shell with integrated commands.

During its peak, CP/M established itself as the de facto standard operating system for microcomputers utilizing the S-100 bus, enjoying widespread adoption in commercial environments from the late 1970s through the mid-1980s. It played a pivotal role in expanding both hardware and software markets by facilitating easier application portability across different manufacturers. The accessibility of cost-effective CP/M-compatible microcomputers encouraged software development by independent programmers and user communities. However, CP/M's dominance waned following the introduction of DOS alongside the 1981 debut of the IBM PC.

Early history

In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, utilizing a Shugart Associates 8-inch floppy-disk drive equipped with a customized controller. The OS was programmed in Kildall’s proprietary language, PL/M. Its design drew inspiration from the TOPS-10 system running on the DECsystem-10 mainframe, which Kildall had experience with.

CP/M was compatible with numerous microcomputers powered by the 8080 and Z80 processors. One of its early licensees, Gnat Computers, acquired rights to CP/M 1.0 in 1977 for $90, permitting use on any microcomputer platform. As demand surged rapidly, Digital Research increased licensing fees substantially, reaching into the tens of thousands.

With Kildall at the helm, John Pierce spearheaded the release of CP/M 2.0 in 1978. Kathryn Strutynski joined Digital Research in early 1979, initially focusing on debugging CP/M 2.0 before making major contributions to CP/M 2.2 and CP/M Plus. Other significant contributors during this period included Robert Silberstein and David K. Brown.

The acronym originally stood for "Control Program/Monitor," but by 1977 it was officially registered as "Control Program for Microcomputers," reflecting its targeted application domain. This naming approach aligned with contemporaneous trends exemplified by Kildall's PL/M language and IBM's CP/CMS operating system, emphasizing microcomputer relevance. Together with his wife and business associate Dorothy McEwen, Kildall sought to commercialize both CP/M and the PL/M compiler under the Digital Research brand, aiming to make it synonymous with "microcomputer" much like IBM’s and Microsoft’s later association with "personal computer." The company initially known as Intergalactic Digital Research, Inc. was eventually renamed Digital Research, Inc.

Early Achievements

By September 1981, Digital Research had distributed more than 250,000 licenses for CP/M, with the actual user base likely larger due to sublicensing agreements. A wide array of manufacturers developed CP/M-compatible computers aimed at diverse market segments; InfoWorld highlighted that CP/M was becoming the definitive operating system for small computers. Even companies that offered their own proprietary operating systems, such as Heath/Zenith with HDOS, provided CP/M as an alternative on their 8080/Z80 platforms—something not seen with machines based on the 6502 processor. This support stemmed from CP/M’s vast software ecosystem. For instance, the Xerox 820 adopted CP/M to access its extensive library of applications, and Xerox supplemented Digital Research’s inadequate documentation by including a Howard W. Sams CP/M manual. By 1984, Columbia University utilized the same source code to compile Kermit binaries for over a dozen CP/M variants alongside two generic builds.

CP/M was characterized as a "software bus", facilitating communication between multiple programs and different hardware components through a uniform interface. Applications developed for CP/M were generally portable across different machines, requiring only adjustments to terminal and printer control codes. This adaptability contributed significantly to CP/M’s widespread adoption and software availability, especially when compared to operating systems confined to specific hardware brands. Nevertheless, some limitations existed: certain programs depended on the Z80’s expanded instruction set, which limited compatibility with 8080 or 8085 processors; additionally, many games employed machine-specific graphics routines that bypassed the OS/BIOS layer to enhance performance.

Bill Gates recognized the Apple II equipped with a Z-80 SoftCard as the leading hardware platform running CP/M. By 1982, Digital Research reported that CP/M had been licensed for over 450 distinct computer models. Prominent systems supporting CP/M included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and various MSX machines. The most commercially successful CP/M-capable device was probably the Amstrad PCW. In the United Kingdom, CP/M was accessible on educational computers from Research Machines (with source code released for instructional purposes), the BBC Micro enhanced by a Z80 co-processor, as well as on the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. Additionally, CP/M 3 served as the operating system for the NIAT handheld computer developed for internal use by A. C. Nielsen, featuring 1 MB of solid-state disk memory.

Multi-user

In 1979, Digital Research introduced MP/M, a multi-user adaptation of CP/M that enabled multiple terminals to connect simultaneously to a single computer, each offering an independent user environment. Subsequent iterations of MP/M extended support to 16-bit processors.

CP/M Plus

The last iteration of the 8-bit CP/M series was version 3, commonly referred to as CP/M Plus, which debuted in 1983. Created by David K. Brown, its BDOS integrated MP/M’s bank switching memory management into a single-user operating system compatible with CP/M 2.2 software. This allowed the utilization of memory exceeding 64 KB on 8080 or Z80 CPUs and introduced file date stamping capabilities. The package also included a relocating assembler and linker. CP/M Plus was aimed at advanced 8-bit hardware such as the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and the TRS-80 Model 4.

16-bit versions

Digital Research developed several CP/M variants tailored for 16-bit processors.

The earliest was CP/M-86 for the Intel 8086 processor, launched in November 1981 under the management of Kathryn Strutynski. To differentiate it from the original CP/M, the latter became known as CP/M-80.

CP/M-86 was initially anticipated to be the IBM PC’s default operating system; however, licensing conflicts led IBM to choose Microsoft’s PC DOS instead. Although CP/M-86 was later offered as an option on IBM PCs following legal pressure, its significantly higher price—$240 versus $40 for PC DOS—restricted widespread adoption.

The Digital Equipment Corporation Rainbow 100 supported CP/M-80 on a Z80 processor and either CP/M-86 or MS-DOS on an 8088 CPU, or both simultaneously via CP/M-86/80. This dual-processor configuration allowed users to maintain their existing 8-bit CP/M software investments while transitioning to 16-bit MS-DOS environments. Comparable dual-CPU architectures were also found in systems like the CompuPro System 816 (CP/M 8-16) and Zenith Z-100.

Following CP/M-86, Digital Research released CP/M-68K for the Motorola 68000 in 1982. Originally developed using Pascal/MT+68k and later ported to C, CP/M-68K operated on EXORmacs machines and was considered for Atari ST before Atari selected GEMDOS. It was also deployed on SORD M68 and M68MX models.

In the same year, a Zilog Z8000 port named CP/M-8000 was created for the Olivetti M20 platform, written in C.

Applications required recompilation for these 16-bit versions. To facilitate migration from 8-bit assembly code, Digital Research provided XLT86—a utility that converted Intel 8080 assembly (.ASM) into Intel 8086 assembly (.A86), optimizing code size and managing calling conventions. XLT86 ran on both CP/M-80 systems and VAX/VMS platforms.

Displacement by MS-DOS

By the early 1980s, approximately 2000 applications existed for CP/M, positioning it as the anticipated standard OS for 16-bit machines. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license a version of CP/M for the IBM PC. After negotiations faltered due to the absence of a signed non-disclosure agreement, IBM turned to Microsoft for an operating system solution.

Early releases of MS-DOS borrowed heavily from CP/M concepts, including file management approaches and drive letter assignments (such as A: and B:). MS-DOS introduced the FAT file system, simplifying porting popular CP/M applications like WordStar and dBase. Unlike CP/M’s use of separate user areas for files, MS-DOS leveraged increased memory availability (commonly over 64 KB) to incorporate more commands within its command-line interface, improving performance and ease of use on floppy disk-based PCs.

Although early hardware like the Baby Blue expansion card enabled running CP/M software on IBM PCs, industry reviews favored MS-DOS due to its superior speed and user experience. By the mid-1980s, high software prices contributed to CP/M’s decline in the consumer market; vendors such as Kaypro ceased production of 8-bit CP/M machines in favor of MS-DOS-based systems. As microcomputing gravitated toward IBM-compatible platforms, CP/M rapidly lost market presence and media attention.

Subsequent versions of CP/M-86 enhanced compatibility and performance relative to MS-DOS, eventually being rebranded as DOS Plus before evolving into DR-DOS.

ZCPR

ZCPR, standing for Z80 Command Processor Replacement, was introduced on 2 February 1982 as a direct substitute for Digital Research's default console command processor (CCP). The project was developed by "The CCP Group," which included Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, Bob Mathias, and was led by Richard Conn.

The initial version, ZCPR1, appeared on a SIG/M disk distributed by the Amateur Computer Club of New Jersey. Its successor, ZCPR2, was released on 14 February 1983 across ten SIG/M disks and later evolved into version 2.3 featuring an 8080-compatible codebase, allowing it to run on both 8080 and 8085 processors.

To commercialize the subsequent iteration while keeping it freely available, Conn partnered with Frank Gaude to establish Echelon Inc. The launch of ZCPR3 occurred on 14 July 1984 via nine SIG/M disks and included an optional compilation process for non-Z80 hardware. This version introduced numerous enhancements such as command shells, aliases, input/output redirection, flow control mechanisms, named directories, search paths, customizable menus, password protection, and built-in online assistance. After Conn ended his involvement in January 1987, Jay Sage took over development, advancing ZCPR to version 3.3. This update eliminated support for the 8080 but incorporated a wide range of new features and utilities. Although ZCPR enjoyed significant popularity among CP/M users, it could not reverse the overall decline of the CP/M platform.

Hardware model

A basic CP/M system based on an 8-bit architecture required the following components:

  • A computer terminal using ASCII characters
  • A microprocessor such as the Intel 8080/8085 or Zilog Z80
    • NEC V20 and V30 processors supported emulation of the 8080 instruction set to enable CP/M operation on PC-DOS/MS-DOS machines; PC clones were capable of running CP/M-86
  • A minimum of 16 KB RAM beginning at address zero
  • A bootstrapping method to load the initial disk sector
  • At least one floppy disk drive

Official CP/M releases from Digital Research were designed primarily for Intel’s 8080 Development System hardware; hardware manufacturers typically adapted CP/M to suit their unique memory configurations, drives, and console interfaces. Compatibility with the Z80 processor allowed numerous systems to execute CP/M with BIOS and software optimized specifically for Z80 instructions.

Digital Research collaborated with Zilog and American Microsystems to create Personal CP/M—a ROM-based operating system variant targeted at lower-cost machines lacking disk drives. This version was implemented in devices like the Sharp MZ-800 cassette-based system with optional disk support and utilized enhanced Z80 instructions rather than maintaining full portability. American Microsystems offered the S83 microprocessor combining Z80 compatibility with embedded ROM containing OS/BIOS firmware and integrated DRAM interface logic; volume pricing was approximately $32 per unit.

Most systems employed a simple ROM-based bootloader alongside bank switching or bus injection techniques to load code at address zero; some required manual memory input via front-panel switches.

CP/M used a 7-bit ASCII character set; however, extended 8-bit characters were not standardized and varied depending on manufacturer—for example, Kaypro utilized them for Greek characters, Osborne applied them for underlining text, and WordStar used them as word delimiters. Localized international versions commonly followed ISO 646 standards by substituting certain ASCII characters instead of extending beyond the standard 7-bit range.

Components

When running in memory, the CP/M operating system consists of three primary components:

  • Basic Input/Output System (BIOS),
  • Basic Disk Operating System (BDOS),
  • Console Command Processor (CCP).

Of these, BIOS and BDOS remain resident in memory continuously, while CCP stays resident unless replaced temporarily by an application program—after which it reloads automatically. Transient commands corresponding to standard utilities are stored as .COM files on disk.

The BIOS manages hardware peripherals except for the CPU and main memory; it handles character input/output and disk sector access operations. BDOS oversees file system management within CP/M and provides I/O abstractions such as redirection built atop BIOS services. CCP interprets user commands by executing internal commands (e.g., DIR for directory listing or ERA for file deletion) or loading transient executables like PIP.COM (for file copying) or STAT.COM (for displaying system information). Third-party software typically functions as transient commands.

While BDOS, CCP, and standard transient utilities remain consistent across various CP/M versions, only the BIOS is customized per hardware platform.

Expanding system memory requires reinstalling CP/M to utilize additional space effectively. The MOVCPM utility facilitates this by relocating system code through adjusting absolute memory addresses to new locations. The modified OS image is saved back to disk so that applications can access the increased memory area. The OS components reside in reserved disk sectors used during booting; a ROM-based bootloader loads these from drive A: at startup.

Viewed from a modern perspective, CP/M offers limited functionality due to constraints on program size. Early releases lacked detection for disk changes during operation, risking data corruption if disks were swapped without reloading directory information. Later iterations introduced error notifications to prevent accidental overwriting but still required rebooting afterward.

Most of CP/M’s complexity is contained within BDOS and—less extensively—in CCP and transient commands. Porting only the BIOS layer to new hardware enabled full OS functionality without rewriting core components, significantly reducing development effort and contributing to CP/M’s widespread adoption. This early implementation of a hardware abstraction layer was innovative at a time when most operating systems were designed exclusively for single platforms without layered architectures.

Console Command Processor

The Console Command Processor (CCP) is responsible for managing keyboard inputs and displaying output on the terminal. CP/M supports both printing and video terminals, presenting the A> prompt to signify the active default disk drive. Users can switch drives by entering the drive letter followed by a colon (for example, B:), which updates the prompt accordingly.

The command-line interface in CP/M draws inspiration from Digital Equipment Corporation’s Concise Command Language, as seen in systems like RT-11 and OS/8. Commands are constructed from keywords followed by parameters separated by spaces or special symbols. Internal commands run directly within the CCP, whereas others invoke executable "transient" programs stored on disk, allowing more memory availability by reloading the CCP after these programs finish.

Certain commands maintain traditional names, such as PIP (Peripheral Interchange Program), used for copying files. Parameter conventions differ between utilities, with no unified option character standard.

Core CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Among transient commands are ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.

With CP/M Plus (Version 3), the set of built-in commands expands to include DIRSYS/DIRS for system file management, ERASE/ERASE for file removal, RENAME/REN, TYPE/TYP, and USER/USE for modifying user numbers. This version also supports abbreviated command entry. Additional transient utilities encompass COPYSYS, DATE, DEVICE, HELP, LINK, MAC, PUT, SET, SHOW, SUBMIT, among others that enhance system administration and development capabilities.

Basic Disk Operating System

The Basic Disk Operating System (BDOS) oversees critical functions such as file handling, console output, and printer control. Applications invoke BDOS services through function codes and parameter pointers directed at a fixed memory address, ensuring uniform behavior across various hardware platforms.

Basic Input Output System

At the lowest level of CP/M lies the Basic Input Output System (BIOS), which manages fundamental tasks like character input/output and reading or writing disk sectors. While BDOS manages some disk buffering responsibilities, it assumes a constant sector size of 128 bytes prior to CP/M 3.0. Given that most 5.25-inch floppy disks use larger sector sizes, BIOS incorporates device-specific routines to handle buffering and sector operations accordingly.

Because of the wide range of hardware designs—ranging from integrated video displays to terminal interfaces, diverse UART chips for serial communications, and differing I/O address schemes—customizing the BIOS is crucial. The BIOS standardizes entry points for core services such as character I/O and disk access to abstract hardware variations from higher-level system components. Support for serial communications within BIOS is limited or nonexistent; therefore, many CP/M applications requiring modem connectivity rely on user-supplied overlays tailored to manage machine-specific serial ports.

Applications

CP/M supported several foundational business software titles, including WordStar for word processing, dBase for database management, Turbo Pascal as a programming language, Multiplan as a precursor to Excel spreadsheets, and VisiCalc, the pioneering spreadsheet application. Sorcim's SuperCalc gained prominence as the leading spreadsheet on CP/M before entering the MS-DOS arena. AutoCAD by Autodesk also made its initial appearance on CP/M. A wide range of compilers and interpreters were accessible for languages such as BASIC, FORTRAN, and PL/I, encompassing early offerings from Microsoft.

Software designed for CP/M often came with installers that adapted programs to different hardware configurations. For instance, users of the Kaypro II could convert software from Xerox 820 disk formats onto their own system’s disks. BASIC source code was generally available to users, and copy protection mechanisms were typically ineffective. Unlike other operating systems that relied on unconventional disk formats for protection, CP/M prioritized compatibility across software by standardizing file formats; disks that could not be read were simply considered non-CP/M.

Due to limited graphical capabilities, video games on CP/M were mostly text-based or character-driven. Nonetheless, many popular titles such as Telengard, Gorillas, Hamurabi, Lunar Lander, and interactive fiction classics like the Zork series and Colossal Cave Adventure were ported to the platform. Infocom consistently released their games in CP/M versions. Lifeboat Associates distributed user-developed utilities including XMODEM, which facilitated dependable file transfers via modem connections. The outline processor KAMAS also originated within the CP/M ecosystem.

Transient Program Area

In the initial versions of CP/M designed for 8080, 8085, and Z80 processors, the read/write memory segment between address 0100 hexadecimal and just before the BDOS starting address stored at 0006H was designated as the Transient Program Area (TPA), reserved for application execution. Although these CPUs could address up to 64 KB of memory, the actual TPA size was dependent on system architecture. Some configurations allocated significant portions of address space to BIOS ROMs or video memory buffers, thereby reducing available TPA. To mitigate this limitation, bank switching was frequently employed to swap out ROM or video memory segments when necessary to expand usable TPA. With CP/M 3.0, parts of BDOS itself could be placed in bank-switched memory regions.

Debugging application

CP/M offered a Dynamic Debugging Tool (DDT) that provided capabilities to inspect and modify memory contents and program code modules interactively. This tool also supported single-step execution to facilitate detailed program analysis.

Resident programs

Originally lacking built-in support for terminate-and-stay-resident (TSR) utilities like those found in DOS, CP/M nonetheless saw developers create software intercepting operating system calls to extend functionality. This approach gave rise to supplementary desk accessory programs such as SmartKey, a keyboard enhancement utility that mapped predefined strings to keys. CP/M 3 introduced native support for dynamically loadable Resident System Extensions (RSX), enabling system extensions without occupying transient program space. Additionally, third-party developers adapted similar concepts—termed Resident System Modules—for use with CP/M 2.2 systems.

Software installation

Although CP/M defined consistent interfaces for disk operations and console input/output, most applications required installation procedures to configure device-specific features like printers and terminals. Such devices depended on escape sequences that varied widely across different manufacturers and models—for example, commands for enabling bold text differed significantly between printers. Installation routines allowed users to select target devices or customize escape sequences on a feature-by-feature basis. Because CP/M did not provide centralized device management services, this configuration process needed to be performed separately for each application.

Printer initialization codes were embedded directly within software packages. Consequently, using an application like WordStar with multiple printer types—such as a high-speed dot-matrix printer alongside a slower daisy wheel model—necessitated maintaining distinct versions tailored to each printer’s control codes. Switching between printers required reloading the appropriate program version accordingly.

Disk formats

The 128-byte-per-sector, single-density, single-sided disk format from the IBM System/34 and IBM 3740 became the de facto standard for CP/M's 8-inch floppy disks. In contrast, there was no universally adopted 5.25-inch CP/M disk format; companies such as Kaypro, Morrow Designs, and Osborne each implemented their own unique versions. The Xerox 820 disk format gained popularity and was compatible with systems like the Kaypro II, yet a 1981 InfoWorld article highlighted that approximately two dozen formats were widespread enough that software developers needed to support multiple formats to maximize market reach. For example, JRT Pascal was distributed on several 5.25-inch disks tailored for North Star, Osborne, Apple, Heath/Zenith (both hard- and soft-sector), and Superbrain platforms, in addition to an 8-inch disk version. Ellis Computing accommodated Heath formats as well as sixteen other 5.25-inch variants, including those used by TRS-80 CP/M systems. Companies like Lifetree facilitated cross-system conversion of CP/M applications.

CP/M permits customization of reserved areas, directory structures, and sector mapping depending on the hardware platform; however, there is no standardized mechanism for transferring formatting parameters between different machines via disks.

Almost all CP/M systems equipped with 8-inch drives can access the IBM single-sided, single-density disk format. Beyond this commonality, compatibility varies significantly due to differences in drive types and controllers—encompassing 8-inch or 5.25-inch media; hard- or soft-sectoring; single- or double-density and sidedness; as well as track counts ranging from 35 to 80 tracks. Sector organization and interleave patterns also differ among systems. Software tools can assist in translating between formats if the hardware supports the necessary disk types. By 1982, soft-sectored, single-sided, 40-track 5.25-inch disks had become the predominant medium for distributing CP/M software, utilized by platforms such as Apple II, TRS-80, Osborne 1, Kaypro II, and IBM PC. For instance, the Kaypro II was capable of reading disks created for TRS-80, Osborne, IBM PC, and Epson QX-10 systems. Nevertheless, certain formats—like 80-track or hard-sectored disks—were incompatible with many devices. Double-sided disks were only partially accessible since CP/M typically processes tracks sequentially. Apple II users were confined to Apple's GCR format and thus needed to acquire CP/M software in that format or transfer it through serial connections.

The fragmented nature of CP/M disk formats forced distributors either to maintain inventories of multiple formats or invest in duplication equipment supporting several standards. This complexity contributed significantly to CP/M's swift decline after 1981 when compared to the more uniform disk formats established by IBM PC.

Among the last prominent computers supporting CP/M was the Commodore 128 (released in 1985), which included a Z80 processor dedicated to running CP/M alongside its primary CPU. This system required either a 1571 or 1581 disk drive capable of handling soft-sectored 40-track MFM formatted disks.

The earliest computer to feature a 3.5-inch floppy drive was the Sony SMC-70, which operated under CP/M 2.2. Other CP/M-compatible machines with support for 3.5-inch disks included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (through Montezuma CP/M 2.2). Applied Engineering’s CP/AM extension for Apple II also provided compatibility with both 3.5-inch floppy disks and RAM disks. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to use of 3.5-inch media.

File system

File names adhered to the 8.3 naming convention, allowing up to eight characters, followed by a dot and a three-character extension that indicated the file type (for instance, .COM denoted executables, while .TXT identified text files). When entered at the command prompt, filenames were automatically converted to uppercase; however, certain applications (notably MBASIC) generated lowercase filenames, which complicated command-line referencing.

Disk drives were designated by letters such as A or B, and files were accessed by prefixing the drive letter and a colon (e.g., A:FILE.TXT). If no drive letter was specified, the system defaulted to the current drive.

File size was expressed in units called records, each consisting of 128 bytes corresponding to disk sectors. Precise byte counts were not supported; instead, file size was stored within the File Control Block (FCB). Text files typically ended with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file; inserting this character mid-file resulted in truncation of subsequent content.

With the advent of larger removable and fixed disks, disk de-blocking techniques were introduced to increase the number of disk blocks per allocation unit, enabling support for larger files. This improvement came with a trade-off: minimum allocation unit sizes increased—from 1 KB on single-density disks up to 32 KB on higher-density media—leading to inefficient storage utilization for many small files.

CP/M 2.2 did not include file modification timestamps; however, these were optionally supported in MP/M and CP/M 3.0.

Instead of subdirectories, CP/M 2.2 organized files using sixteen numbered user areas. Users switched between these areas with the "User X" command at the prompt, effectively isolating files within each user space. USER 0 served as the default area accessible by all users, while other user areas kept files separate. This mechanism supported multi-tasking on systems equipped with hard drives by segregating work environments—for example, allowing a secretary and billing clerk to operate on one machine without file interference. Security measures were minimal, reflecting typical personal computer usage standards of that era.

Graphics

While early S-100 systems had graphics capabilities, CP/M itself did not offer standardized graphics support until 1982 with the introduction of the GSX. Due to limited memory resources, graphical applications were rare on 8-bit CP/M machines, which primarily displayed simple ASCII art or utilized customized character sets. Certain models like the Kaypro series and the TRS-80 Model 4 provided block graphics accessible through assembler programming or BASIC's CHR$ function. The TRS-80 Model 4 could deliver graphics at resolutions up to 640×240 pixels when equipped with an optional high-resolution graphics board.

Official

Some organizations developed sanctioned enhancements of CP/M using Digital Research's source code, such as IMDOS tailored for the IMSAI 8080, a clone of the Altair 8800.

Compatible

A variety of independent operating systems compatible with CP/M emerged without incorporating Digital Research code. Examples include:

  • Cromemco CDOS from Cromemco
  • MSX-DOS, designed for MSX computers and capable of running CP/M applications
  • The Epson QX-10, which provided either CP/M or compatible TPM-II/III environments
  • The British ZX Spectrum-compatible SAM Coupé, featuring optional Pro-DOS (compatible with CP/M-2.2)
  • Amstrad/Schneider CPC and PCW product lines bundled with CP/M disk software
  • The Husky (computer), offering DEMOS—a ROM-based loader supporting numerous CP/M programs
  • ZSDOS, an alternative BDOS implementation for CP/M-80 version 2.2 developed by Harold F. Bower and Cameron W. Cotrill
  • CPMish, a free and open-source OS compatible with CP/M 2.2 originally lacking DR code; since 2022 it has incorporated original Digital Research components under authorization from Lineo's president
  • LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2-compatible OS including original DR source code and utilities enabling hot-swapping of OS modules
  • IS-DOS for the Enterprise, developed by Intelligent Software
  • VT-DOS for the Videoton TV Computer, also created by Intelligent Software

Improvements

Certain CP/M-compatible operating systems greatly expanded the original capabilities, with examples including the multi-processor-supporting TurboDOS.

Eastern Bloc Variants

Within the former Eastern Bloc, numerous CP/M-80 derivatives were developed under various titles such as SCP (), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, CP/Z, MICRODOS, BCU880, ZOAZ, OS/M, TOS/M, ZSDOS, M/OS, COS-PSA, DOS-PSA, CSOC, CSOS, CZ-CPM, DAC, HC, among others. Variations of CP/M-86 included SCP1700, CP/K, and K8918-OS. These systems were manufactured by East German companies like VEB Robotron. The precise nature of their development—whether they were modified binaries, source code adaptations, or entirely independent reimplementations—differs across these versions.

Enduring Influence

Several elements of Microsoft Windows trace their roots to compatibility with MS-DOS, which itself was designed to be compatible with CP/M. For instance, the system of drive letters and the 8.3 filename format originated from CP/M conventions. The use of wildcard symbols (?, *) in Windows also derives from CP/M practice. Reserved device names such as "PRN:" and "CON:" can be traced back to CP/M standards. Assigning floppy drives as A and B and hard drives as C began with CP/M and continues in Windows' C:\> command prompt. The control character ^Z, used to indicate the end-of-file in text documents, is another legacy inherited from CP/M. Numerous DOS commands (including DIR, REN/RENAME, TYPE) were modeled after those found in CP/M. File extensions like .TXT and .COM remain widely used across multiple operating systems.

Between 1997 and 1998, Caldera made available some CP/M 2.2 executables and source code under an open-source license. This allowed for redistribution and modification of Digital Research's files associated with CP/M and MP/M via Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead's passing in 2001, Lineo, which owned these assets at the time, updated and broadened the licensing terms later that year.

In October 2014, the Computer History Museum commemorated the 40th anniversary of CP/M's initial unveiling by publishing early versions of its source code.

As of 2018, a committed community of retrocomputing enthusiasts alongside a few small enterprises continue to maintain and develop platforms primarily running CP/M 2.2.

See also

Further reading

  • Rodnay Zaks, The CP/M Handbook With MP/M, SYBEX Inc., 1980, ISBN 0-89588-048-2
  • Richard Conn, ZCPR3 - The Manual, New York Zoetrope, 1985, ISBN 0-918432-59-6
  • "Z-System Corner: Tenth Anniversary of ZCPR," The Computer Journal, Issue 54
  • "The origin of CP/M's name" (archived)
  • Mustafa A. Katie, "Intel iPDS-100 Using CP/M-Video," 2013 (archived)
  • "IEEE Milestone in Electrical Engineering and Computing - CP/M - Microcomputer Operating System, 1974," Computer History Museum, 2014
  • "Triumph of the Nerds," PBS — includes IBM's selection of Microsoft DOS over Digital Research's CP/M for the IBM PC
  • CP/M FAQ at comp.os.cpm and Digital Research resources

External links