Jump to content

CP/M-80

From Alfawiki
Digital Research, Inc.
Company typePrivate
IndustrySoftware development
Founded1974
FounderGary Kildall
Headquarters
United States
Key people
Gary Kildall, Kathryn Strutynski, Dorothy McEwen, John Pierce, Robert Silberstein, David K. Brown
ProductsCP/M operating system and variants (CP/M-80, CP/M-86, CP/M Plus, MP/M)

CP/M, an acronym initially representing Control Program/Monitor and later redefined as Control Program for Microcomputers, is a widely-used 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 file organization on magnetic storage devices and facilitate program loading from disks. While early versions supported only single-tasking on 8-bit processors with a maximum of 64 kilobytes of memory, subsequent releases incorporated multi-user capabilities and transitioned to 16-bit processor architectures.

The fundamental elements of CP/M consist of the Basic Input/Output System (BIOS), the Basic Disk Operating System (BDOS), and the Console Command Processor (CCP). The BIOS is responsible for hardware driver management, BDOS oversees file system operations and system-level services, and CCP functions as the command-line interpreter, providing a suite of internal commands.

During its prime, CP/M established itself as the de facto standard operating system for microcomputers utilizing the S-100 bus, gaining widespread adoption in business environments from the late 1970s until the mid-1980s. Its ability to simplify application portability across various hardware manufacturers expanded both software and hardware markets. The accessibility of cost-effective CP/M-compatible microcomputers spurred software development, supported by independent programmers and user communities. However, CP/M’s dominance waned following the introduction of the IBM PC in 1981, which propelled the popularity of DOS.

Early history

In 1974, Gary Kildall created CP/M as an operating system tailored for an Intel Intellec-8 development platform equipped with a Shugart Associates 8-inch floppy-disk drive connected through a custom controller. Written in Kildall’s proprietary programming language, PL/M, CP/M drew inspiration from the TOPS-10 operating system used on the DECsystem-10 mainframe computers—a system Kildall had professional experience with.

CP/M was compatible with numerous computers based on the 8080 and later the Z80 processors. One of its earliest licensees, Gnat Computers, acquired rights to distribute CP/M version 1.0 in 1977 at a rate of $90 per unit. As demand escalated rapidly, Digital Research increased licensing fees substantially, reaching into tens of thousands of dollars.

John Pierce led the development of CP/M version 2.0 in 1978 under Kildall’s direction. Kathryn Strutynski joined Digital Research in 1979 and played a critical role in debugging CP/M 2.0 as well as contributing significantly to subsequent versions such as CP/M 2.2 and CP/M Plus. Other early contributors included Robert Silberstein and David K. Brown.

The original meaning of CP/M was "Control Program/Monitor," but during its commercialization phase, this was revised to "Control Program for Microcomputers" in trademark documentation filed in 1977. This change aligned with naming trends like Kildall’s own PL/M language and IBM’s CP/CMS system, reflecting efforts by Kildall, his wife, and business partner Dorothy McEwen to position Digital Research as a prominent microcomputer software company. The company initially named Intergalactic Digital Research, Inc., was subsequently renamed Digital Research, Inc.

Early Achievements

By September 1981, Digital Research had distributed more than CP/M licenses, with sublicensing arrangements indicating an even broader reach. A wide array of manufacturers developed CP/M-based computers across different industries; InfoWorld recognized CP/M as becoming the definitive operating system for small computers. Even companies that maintained their own proprietary operating systems, such as Heath/Zenith with HDOS, offered CP/M as an option for their 8080/Z80 machines, capitalizing on its vast software ecosystem—a level of software support unmatched by popular 6502-based platforms. Xerox’s implementation of CP/M in the Xerox 820 highlighted this trend, emphasizing the benefit of access to thousands of existing applications. Despite Digital Research’s inadequate documentation, Xerox supplemented this by providing a Howard W. Sams CP/M manual.

By 1984, Columbia University had utilized CP/M source code to create Kermit protocol binaries compatible with over a dozen CP/M variants and generic systems. CP/M served as a "software bus", facilitating uniform communication between software and diverse hardware configurations. Its adaptability across different machines—usually requiring only adjustments to terminal and printer control codes—enhanced its appeal and software availability compared to operating systems tied to a single hardware brand. Some drawbacks included incompatibilities where Z80-specific programs could not run on 8080/8085 processors, as well as graphics routines that bypassed the OS for performance reasons, thereby limiting portability.

Bill Gates identified the Apple II equipped with a Z-80 SoftCard as the leading hardware platform for CP/M use. By 1982, Digital Research reported that CP/M had been licensed for over 450 distinct computer models. Prominent systems running CP/M included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and MSX machines. The most widely sold CP/M-capable device was probably the Amstrad PCW. In the United Kingdom, CP/M was available on Research Machines educational computers—with source code released for instructional use—the BBC Micro (equipped with a Z80 co-processor), along with the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. Additionally, CP/M 3 powered the NIAT handheld computer designed for A. C. Nielsen, which featured 1 MB of solid-state storage.

Multi-user Versions

Digital Research introduced MP/M in 1979, a multi-user variant of CP/M that enabled multiple terminals to interface with a single computer system, each providing separate displays and keyboards for individual users. Subsequent editions expanded support to include 16-bit processors.

CP/M Plus

Released in 1983, CP/M Plus (also known as CP/M 3) was the last iteration of the 8-bit CP/M series, featuring a BDOS crafted by David K. Brown. This version incorporated MP/M’s bank-switching memory management technique into a single-user operating system that maintained compatibility with CP/M 2.2 software. It allowed systems based on 8080 or Z80 processors to utilize memory beyond the 64 KB limit. CP/M Plus introduced file date stamping and came bundled with relocating assembler and linker utilities. It found adoption in later-generation 8-bit computers including the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX platforms, and the TRS-80 Model 4.

16-bit Versions

Digital Research expanded CP/M to 16-bit processors starting with CP/M-86, designed for the Intel 8086 and launched in November 1981. The project was overseen by Kathryn Strutynski. To differentiate it from its predecessor, the original 8-bit system became known as CP/M-80.

Although CP/M-86 was intended to serve as the IBM PC’s primary operating system, licensing conflicts prompted IBM to collaborate with Microsoft instead, resulting in PC DOS built upon 86-DOS. While CP/M-86 was eventually offered as an alternative after legal intervention, its significantly higher cost—IBM priced it at $240 compared to $40 for PC DOS—prevented it from gaining substantial market traction.

The DEC Rainbow 100 targeted IBM’s user base by supporting multiple operating systems: CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or both simultaneously. This multi-processor design allowed users to preserve their existing 8-bit software investments while transitioning to newer 16-bit environments. Comparable dual-CPU configurations included CompuPro System 816’s CP/M 8-16 and Zenith Z-100’s variant of CP/M-86.

Following this, Digital Research introduced CP/M-68K for the Motorola 68000 processor in 1982. Initially developed using Pascal/MT+68k and subsequently ported to C, this version operated on Motorola EXORmacs machines and was considered for Atari ST systems prior to Atari adopting GEMDOS. CP/M-68K was also deployed on SORD M68 and M68MX computers.

In the same year, a C language port called CP/M-8000 was developed for the Zilog Z8000 CPU used in the Olivetti M20.

Applications needed recompilation to run on these 16-bit platforms. Assembly programs could be converted automatically using tools like Digital Research’s XLT86, which translated Intel 8080 .ASM source files into Intel 8086-compatible .A86 code—optimizing code size and adjusting calling conventions—thereby facilitating migration from CP/M-80/MP/M-80 environments to CP/M-86/MP/M-86 systems. XLT86 was accessible on both CP/M-80 and VAX/VMS platforms.

Displacement by MS-DOS

By the early 1980s, approximately two thousand applications were available for CP/M, positioning it as the anticipated standard OS for emerging 16-bit computers. In 1980, IBM approached Digital Research with a request—prompted by Bill Gates—to license a CP/M version tailored for the IBM PC. After negotiations faltered over a signed non-disclosure agreement, IBM turned to Microsoft for their operating system needs.

MS-DOS incorporated many fundamental elements from CP/M such as file management structures and drive letter assignments (like A: and B:). Its principal advancement was implementing the FAT file system, which simplified porting popular software titles like WordStar and dBase from CP/M. MS-DOS also provided access to larger memory spaces (64 KB or more) compared to CP/M’s minimum of 16 KB, allowing more extensive built-in commands within its command-line interface and enhancing performance and usability on floppy-based PCs.

Early IBM PC peripherals like the Baby Blue expansion card enabled running of 8-bit CP/M applications on the PC hardware. Nonetheless, industry reviews rapidly favored MS-DOS; BYTE magazine in 1982 described it as "far more user-friendly" and faster. By 1984, InfoWorld highlighted CP/M's failure in the consumer market largely due to expensive software availability. By 1986, companies such as Kaypro had discontinued producing CP/M-compatible machines in favor of MS-DOS systems. As IBM PC compatibles gained dominance, CP/M's market presence dwindled swiftly, with major publications like BYTE ceasing coverage of it by the late 1980s.

Subsequent releases of CP/M-86 improved both performance and compatibility with MS-DOS environments, rebranding under names such as DOS Plus before eventually evolving into DR-DOS.

ZCPR

ZCPR, standing for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for the default Digital Research console command processor (CCP). This project was created by "The CCP Group," a collective of enthusiasts led by Richard Conn.

The initial release, ZCPR1, appeared on a SIG/M disk affiliated with the Amateur Computer Club of New Jersey. Subsequently, ZCPR2 was introduced on 14 February 1983 via a set of ten disks from SIG/M. This version was later upgraded to 2.3 and rewritten in 8080 machine code, broadening compatibility to include 8080 and 8085 processors.

Richard Conn and Frank Gaude established Echelon Inc. to commercialize the next iteration, while still distributing it without charge. On 14 July 1984, ZCPR3 was released as nine disks through SIG/M, featuring a build option for non-Z80 CPUs. Its enhancements encompassed command shells, aliasing, input/output redirection, flow control mechanisms, named directory support, search paths, customizable menus, password protection, and integrated online help.

In January 1987, Richard Conn ended his involvement; thereafter, Echelon engaged Jay Sage to advance development with ZCPR 3.3. This update removed support for the 8080 processor and introduced a wide range of new features and utilities. Despite enthusiastic adoption among CP/M users, ZCPR was unable to prevent CP/M’s eventual decline.

Hardware model

A basic 8-bit CP/M setup required the following components:

  • A computer terminal utilizing ASCII character encoding
  • A microprocessor such as the Intel 8080/8085 or the Zilog Z80
    • NEC V20 and V30 processors provided 8080 emulation capabilities allowing CP/M to run on PC-DOS/MS-DOS hardware; any compatible PC clone could operate CP/M-86
  • A minimum of 16 KB of RAM starting at address zero
  • A bootstrap mechanism to load the initial disk sector
  • At least one floppy disk drive

Digital Research officially supported only the Intel 8080 Development System; however, hardware manufacturers adapted CP/M to their specific platforms. CP/M also functioned on machines with Z80 processors by incorporating BIOS code and applications tailored to the Z80 architecture.

Collaborations between Digital Research, Zilog, and American Microsystems led to Personal CP/M—a ROM-based operating system aimed at affordable systems lacking disk drives. The Sharp MZ-800 cassette-driven system with optional disk support was an early example implementing this OS. Personal CP/M leveraged enhanced Z80 instructions rather than preserving compatibility solely with the 8080. American Microsystems introduced the S83 microprocessor featuring embedded ROM containing both OS and BIOS along with dynamic RAM interface logic, offered at a bulk price of $32 per unit.

Most hardware configurations employed a minimal ROM bootstrap combined with techniques like bank switching or bus injection to load CP/M into RAM starting at address zero; some required manual input via front-panel switches.

CP/M utilized the standard 7-bit ASCII character set; manufacturers extended this set in various ways—Kaypro used extended characters for Greek letters; Osborne machines employed the eighth bit to indicate underlining; WordStar marked word boundaries. International editions typically implemented ISO 646 by substituting certain ASCII characters within the 7-bit range rather than expanding beyond it.

Components

When loaded into memory during operation, the CP/M operating system consists of three primary elements:

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

Both BIOS and BDOS remain resident in memory continuously; CCP also stays resident unless temporarily replaced by an application program, after which it is reloaded upon completion. Transient commands corresponding to standard utilities reside in .COM files stored on disk.

The BIOS manages hardware interactions aside from CPU and memory functions, including character input/output and disk sector operations. BDOS provides the file system management along with input/output abstractions such as redirection layered above BIOS functions. The CCP interprets user commands—executing internal commands like DIR or ERA—or loads executable transient commands such as PIP.COM or STAT.COM. Third-party software designed for CP/M operates as transient commands.

Across different CP/M versions, BDOS, CCP, and standard transient utilities remain consistent; only BIOS is customized according to specific hardware configurations.

Expanding system memory requires reinstalling CP/M so transient programs can utilize additional space. The MOVCPM utility relocates operating system object code into new memory regions by adjusting jump and call addresses accordingly. This patched version is saved onto disk, enabling applications access to increased memory capacity. The OS components are stored in dedicated disk areas reserved for booting and are loaded at startup from drive A: by a bootloader typically embedded in ROM firmware.

By contemporary standards, CP/M is relatively basic due to stringent program size constraints. Early versions lacked detection for disk changes during operation, risking data corruption if disks were swapped without refreshing directory information. Later releases implemented error signaling for such events to prevent overwriting but required rebooting afterward.

Most operational complexity resides within BDOS; CCP and transient commands contribute less overhead. Porting BIOS routines to new hardware platforms enabled full OS functionality with reduced development effort—this facilitated widespread adoption of CP/M. The implementation of this early hardware abstraction layer was innovative at a time when most operating systems were designed exclusively for single hardware platforms.

Console Command Processor

The Console Command Processor (CCP) interprets keyboard input and delivers output to either printing or video terminals. Users enter CP/M commands through the command line, which usually displays a prompt such as A> to indicate the active default disk drive. Changing the default drive is done by typing a drive letter followed by a colon (for example, B:), which also updates the command prompt accordingly.

CP/M’s command-line system was inspired by Digital Equipment Corporation’s Concise Command Language, utilized in operating systems like RT-11 and OS/8. Commands are structured with a keyword followed by parameters separated by spaces or special symbols. The CCP executes internal commands directly; if the command is not internal, it loads and runs executable "transient" programs from the current disk and user area. After transient program execution, BDOS reloads CCP if it has been overwritten, freeing additional memory for these programs.

Several CP/M commands retain historical names, such as PIP, used for copying files, which traces back to DEC utilities. Parameter syntax differs among programs and does not follow a unified option character convention.

Common built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Examples of transient commands are ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.

With CP/M Plus (Version 3), built-in commands expanded to include DIRSYS/DIRS for listing system files, ERASE/ERASE, RENAME/REN, TYPE/TYP, and USER/USE for switching user numbers. This version also introduced abbreviated forms for built-in commands. Additional transient commands found in CP/M 3 comprise COPYSYS, DATE, DEVICE, DUMP, ED, GET, HELP, HEXCOM, INITDIR, LINK, MAC, PIP, PUT, RMAC, SET, SETDEF, SHOW, SID, SUBMIT, and XREF.

Basic Disk Operating System

The Basic Disk Operating System (BDOS) oversees key functions such as file management, console output handling, and printing services. Applications interact with BDOS by placing function codes and relevant parameters into processor registers before invoking a fixed memory address. This standardized interface ensures software compatibility across different hardware platforms.

Basic Input Output System

The Basic Input Output System (BIOS) delivers fundamental low-level operations necessary for the operating system’s functionality, including character input/output and reading or writing disk sectors. While BDOS manages buffering of diskette data transfers, BIOS handles hardware-specific processes like controlling varying sector sizes and disk buffers.

Due to the wide variety of hardware designs—ranging from integrated displays to external terminals and different UART chips for serial communications—BIOS requires customization. It abstracts these hardware differences through standardized entry points that provide services such as character I/O and disk access. As BIOS typically offers limited or no support for modem serial communications, CP/M applications often rely on user-supplied overlays to access specific serial ports directly.

Applications

CP/M was the platform for groundbreaking software, including WordStar, one of the earliest widely adopted word processors, and dBase, a pioneering database application. Initial outliners such as KAMAS and Out-Think were developed on CP/M before migrating to MS-DOS. Programming environments like Turbo Pascal (the forerunner of Borland Delphi) and Multiplan (which preceded Microsoft Excel) first appeared on CP/M. The spreadsheet market saw its beginnings with VisiCalc and Sorcim's SuperCalc, which eventually became a leading product. Autodesk's AutoCAD also had its debut on this operating system. A variety of compilers and interpreters for languages like BASIC, Turbo Pascal, FORTRAN, and PL/I were available, including some of Microsoft's earliest software offerings.

To accommodate diverse hardware configurations, CP/M applications often included installers that adapted software across platforms. For instance, Kaypro II users could convert software formatted for Xerox 820 disks to work on their own drives. BASIC source code was frequently distributed openly, with most copy protection schemes proving ineffective under CP/M. Unlike other operating systems that used proprietary disk formats for protection, CP/M prioritized compatibility between files from different software.

The lack of a unified graphics standard limited the development of video games on CP/M; nevertheless, many text-based titles were ported to the platform. This included games such as Telengard, Gorillas, Hamurabi, Lunar Lander, as well as early interactive fiction like the Zork series and Colossal Cave Adventure. Infocom regularly released their games in CP/M-compatible versions. Lifeboat Associates distributed user-created freeware utilities such as XMODEM to facilitate reliable file transfers over modems. The outliner program KAMAS also originated on CP/M.

Transient Program Area

In the original CP/M implementations for the 8080, 8085, and Z80 processors, the memory region designated for application programs—known as the Transient Program Area (TPA)—spanned from address 0100H up to just before the BDOS entry point at 0006H. Although these CPUs could address up to 64 KB of memory, the size of the TPA varied depending on system design choices, with some reserving portions for BIOS ROMs or video memory. To increase available TPA space, bank switching techniques were often employed to swap out ROM or video memory segments. CP/M 3.0 further enhanced this capability by allowing sections of the BDOS itself to reside in bank-switched memory.

Debugging application

CP/M provided a built-in Dynamic Debugging Tool known as DDT, which allowed users to inspect and modify memory contents and program modules interactively, as well as execute programs stepwise for troubleshooting.

Resident programs

Unlike DOS, early versions of CP/M did not support terminate-and-stay-resident (TSR) programs. Nonetheless, developers devised utilities capable of intercepting OS calls to add extended functionality—for example, the keyboard enhancement utility SmartKey. With the arrival of CP/M 3, support was introduced for dynamically loadable Resident System Extensions (RSX), enabling the CCP to load RSXs independently from transient programs. Additionally, third-party solutions such as Resident System Modules (RSMs) were retrofitted into CP/M 2.2 to provide similar capabilities.

Software installation

Although CP/M standardized input/output operations for disks and consoles, applications generally required installation procedures to fully support peripherals like printers and terminals. Control over such devices often depended on manufacturer-specific escape sequences—for instance, commands for enabling bold text varied significantly between printer models. Installation utilities enabled users to select their hardware or customize escape sequences tailored to each feature. Because no centralized OS service managed peripheral devices, this configuration process had to be repeated individually for each application.

Since printer initialization codes were embedded directly within software packages, using applications like WordStar with multiple printers necessitated separate versions customized for each printer type. Changing printers therefore involved exiting the current program and launching a version configured for the new device.

Disk formats

The 128-byte per sector, single-density, single-sided disk format used by IBM System/34 and IBM 3740 became the standard 8-inch floppy disk format for CP/M systems. In contrast, there was no universal 5.25-inch disk format for CP/M; instead, manufacturers such as Kaypro, Morrow Designs, and Osborne each implemented their own proprietary disk layouts. While most software was distributed using the Xerox 820 format, which was compatible with machines like the Kaypro II, a 1981 InfoWorld article highlighted that software developers had to accommodate around twenty different popular formats to reach a wide audience. For instance, JRT Pascal released multiple versions on various 5.25-inch disks tailored for North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), and Superbrain platforms, along with a single 8-inch disk edition. Ellis Computing provided software compatible with Heath formats plus sixteen other 5.25-inch variants including TRS-80 CP/M models. Distributors such as Lifetree also specialized in converting CP/M applications across different systems.

The choice of disk format largely depended on the hardware design and specific disk features. Although CP/M allowed users to customize reserved areas, directory sizes, and logical-to-physical sector mappings, there was no standardized mechanism for automatically loading these parameters from disks formatted on different machines.

Almost every CP/M system equipped with 8-inch drives could read the IBM single-sided, single-density layout. However, interoperability between various CP/M computers was inconsistent due to differences in disk drive technology and controllers—disks varied by sectoring method (hard or soft), density (single or double), number of sides, track count ranging from 35 to 80, sector arrangement, size, and interleave patterns. Software utilities existed to translate between disk formats when compatible drives and controllers were present. By 1982, the dominant distribution medium for CP/M software shifted to soft-sector, single-sided, 40-track 5.25-inch disks, which were common in popular consumer systems such as Apple II, TRS-80, Osborne 1, Kaypro II, and IBM PC. For example, the Kaypro II could read disks formatted for TRS-80, Osborne, IBM PC, and Epson QX-10 computers. Certain disk types like 80-track or hard-sectored disks remained unreadable on many other platforms. Apple II users were limited to Apple's GCR format for CP/M software or had to rely on serial data transfers.

This lack of uniformity in CP/M disk formats compelled distributors to maintain inventories of multiple disk types or invest in duplication equipment capable of handling various formats—an operational challenge compared to the more standardized IBM PC disk ecosystem—and contributed to CP/M’s decline following 1981.

Among the last significant computers supporting CP/M was the Commodore 128 released in 1985; it featured a Z80 processor dedicated to running CP/M alongside its native CPU. This machine required either a 1571 or 1581 drive capable of reading soft-sector 40-track MFM formatted disks.

The initial computer to incorporate a 3.5-inch floppy drive running CP/M was the Sony SMC-70. Other CP/M-compatible systems utilizing 3.5-inch disks included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (with Montezuma CP/M 2.2). Applied Engineering’s CP/AM expansion for Apple II supported both 3.5-inch floppy disks and RAM disks through add-on cards. The Amstrad PCW originally employed 3-inch floppy drives before switching to the more common 3.5-inch format.

File system

File names adhered to the 8.3 convention, allowing up to eight characters before a period, followed by a three-character extension that indicated the file type (for instance, .COM for executable files and .TXT for text documents). When entered at the command line, filenames were automatically converted to uppercase; however, certain applications, such as MBASIC, could generate lowercase filenames, which complicated command-line operations.

Disk drives were denoted by letters (e.g., A:, B:). To specify files on a particular drive, the drive letter and colon were prefixed to the filename (e.g., A:FILE.TXT). If no drive was specified, commands executed on the current default drive.

File size was recorded in 128-byte records, which corresponded to disk sectors; exact byte counts were not supported. The File Control Block (FCB) maintained file size information within the operating system. Text files traditionally ended with a control-Z character (ASCII SUB, hex 1A) marking the end-of-file; placing this character within a file resulted in truncation of any data following it.

With the advent of larger removable and fixed storage devices, disk blocking increased the number of blocks per file allocation unit, allowing for bigger files but also increasing minimum allocation sizes—from 1 KB on single-density disks up to 32 KB for very small files—leading to inefficient disk space usage when storing numerous small files.

Up through CP/M 2.2, file modification timestamps were not supported; these were later introduced optionally in MP/M and CP/M 3.0.

CP/M 2.2 did not include subdirectories but provided 16 numbered user areas to help organize files. Users could switch between these areas using the "USER X" command, isolating files by user number. The default user area was user 0 and was accessible to all users; other user areas restricted access accordingly. This functionality was beneficial for organizing files on systems equipped with hard drives and facilitated multitasking scenarios—for example, separating data entry from billing operations—though it offered limited advantages on small floppy disks.

Graphics

Although some S-100 bus systems supported graphics capabilities from early commercialization stages, CP/M itself lacked a standardized graphics interface until the introduction of GSX in 1982. Due to limited memory resources, graphics were rare on 8-bit CP/M machines, which mostly rendered simple ASCII art charts in text mode or employed custom character sets. Certain models like the Kaypro series and the TRS-80 Model 4 included video hardware supporting block graphics accessible via assembler and BASIC programming. The Model 4 could achieve resolutions up to 640×240 pixels with an optional high-resolution graphics board.

Official

Several companies created official CP/M variants by utilizing source code licensed from Digital Research. For instance, IMDOS for the IMSAI 8080, a clone of the Altair 8800, represented an authorized derivative.

Compatible

A number of independent operating systems compatible with CP/M appeared without incorporating Digital Research's source code, including:

  • Cromemco CDOS developed by Cromemco
  • MSX-DOS, designed for MSX computers and compatible with many CP/M applications
  • The Epson QX-10, which supported CP/M or compatible TPM-II/TPM-III environments
  • The British ZX Spectrum-compatible SAM Coupé, offering optional Pro-DOS (compatible with CP/M-2.2)
  • Amstrad/Schneider CPC and PCW series distributed with CP/M disk packs
  • The ROM-based DEMOS loader on the Husky (computer), capable of running numerous CP/M programs
  • ZSDOS, a BDOS replacement for CP/M-80 version 2.2 created by Harold F. Bower and Cameron W. Cotrill
  • CPMish, a free OS compatible with CP/M 2.2 initially developed without Digital Research code; since 2022 it has incorporated original DR components following authorization from Lineo's president
  • LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, providing CP/M 2.2 compatibility along with source code for BIOS, BDOS, CLI, original DR source code, and utilities enabling hot-swapping of OS components
  • IS-DOS for the Enterprise, developed by Intelligent Software
  • VT-DOS for the Videoton TV Computer, also produced by Intelligent Software

Improvements

Certain CP/M-compatible operating systems introduced substantial enhancements, such as TurboDOS, which supported multi-processor configurations.

Eastern Bloc Variants

In the former Eastern Bloc, numerous CP/M-80 variants were developed under different designations, including 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. For CP/M-86 derivatives, examples include SCP1700, CP/K, and K8918-OS. These operating systems were manufactured by East German companies such as VEB Robotron and other producers.

Impact and Legacy

Several features in Microsoft Windows trace their origins back to MS-DOS and ultimately to CP/M for compatibility reasons. The use of drive letters and the 8.3 filename format in MS-DOS and early Windows versions stem from conventions established by CP/M. Wildcard characters like ? and * in Windows command-line operations follow the same rules as CP/M. Additionally, reserved device filenames such as "PRN:" and "CON:" for redirection are inherited from CP/M. Initially, floppy drives were assigned letters A and B in CP/M; hard drives received C:, a practice that has continued. The control character ^Z, used to signify end-of-file in specific text files, also originates from CP/M. Many commands in DOS—for instance DIR, REN/RENAME, and TYPE—are modeled after those found in CP/M. Common file extensions like .TXT and .COM remain standard identifiers for file types.

Between 1997 and 1998, Caldera made available CP/M 2.2 binaries along with source code under an open-source license. This allowed redistribution and modification of Digital Research’s CP/M and MP/M related files through Tim Olmstead’s “The Unofficial CP/M Web site.” Following Olmstead’s passing in 2001, Lineo—then the proprietor of these Digital Research assets—revised the licensing terms. In October 2014, to mark the 40th anniversary of CP/M, the Computer History Museum published early versions of its source code.

As of 2018, enthusiasts of vintage computing alongside some niche businesses continue to maintain and develop systems primarily running CP/M 2.2 as their core operating system.

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
  • Mustafa A. Katie, Intel iPDS-100 Using CP/M-Video, 2013
  • IEEE Milestone in Electrical Engineering and Computing - CP/M - Microcomputer Operating System, 1974, Computer History Museum, 2014
  • Triumph of the Nerds, PBS (details IBM’s choice of Microsoft DOS over Digital Research's CP/M for the IBM PC)
  • CP/M FAQ, comp.os.cpm

External links