OS/M
| Company type | Private |
|---|---|
| Industry | Software development |
| Founded | 1974 |
| Founder | Gary Kildall, Dorothy McEwen |
| Headquarters | United States |
| Products | CP/M, PL/M compiler |
CP/M, an acronym initially for Control Program/Monitor and later redefined as Control Program for Microcomputers, is a widely distributed operating system introduced 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 disk storage and facilitate program loading from disks. While its original design supported single-tasking on 8-bit processors with memory capacities up to 64 kilobytes, subsequent releases incorporated multi-user functionality and extended compatibility to 16-bit processor architectures.
The fundamental elements of CP/M comprise the Basic Input/Output System (BIOS), responsible for hardware driver management; the Basic Disk Operating System (BDOS), which oversees the file system and core system services; and the Console Command Processor (CCP), a command-line interpreter featuring built-in commands.
During its peak, CP/M emerged as the de facto standard and predominant operating system for microcomputers, especially those utilizing the S-100 bus. It gained widespread adoption in commercial environments from the late 1970s through the mid-1980s. By enabling easier application portability among diverse manufacturers’ machines, CP/M expanded both hardware and software markets. The affordability of CP/M-based microcomputers stimulated software development, as independent programmers exchanged applications through user communities. Eventually, CP/M's prominence declined following the introduction of DOS with the 1981 debut of the IBM PC.
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 via a customized controller. The system was developed using Kildall’s own programming language, PL/M (Programming Language for Microcomputers). CP/M drew inspiration from the TOPS-10 operating system running on the DECsystem-10, which Kildall had utilized during its development phase.
CP/M was compatible with various microcomputers powered by the 8080 and Z80 processors. In 1977, early licensee Gnat Computers secured rights to version 1.0 of CP/M for $90, permitting deployment on any microcomputer. The rapidly increasing demand allowed Digital Research to escalate licensing fees substantially, reaching into the tens of thousands.
Under Kildall’s leadership, John Pierce spearheaded development of CP/M version 2.0 in 1978. Kathryn Strutynski joined Digital Research in 1979 as an early staff member, initially focusing on debugging CP/M 2.0 before contributing to later releases such as CP/M 2.2 and CP/M Plus. Other significant contributors included Robert Silberstein and David K. Brown.
Originally abbreviated as "Control Program/Monitor", CP/M was rebranded to "Control Program for Microcomputers" during its commercial rollout in November 1977. This renaming aligned with industry trends exemplified by names like Kildall’s PL/M and IBM’s CP/CMS, emphasizing its role as an operating system dedicated to microcomputers. The rebranding formed part of a strategic initiative by Kildall, his wife, and business partner Dorothy McEwen to commercialize both CP/M and the PL/M compiler. Their objective was to establish Digital Research as a leading software provider for microcomputers, paralleling the future dominance of companies such as IBM and Microsoft in personal computing. Subsequently, Intergalactic Digital Research, Inc. was 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 companies manufactured CP/M-based computers across diverse industries; InfoWorld highlighted CP/M as becoming the definitive operating system for small computers. Even manufacturers with their own proprietary OSs, such as Heath/Zenith (HDOS), offered CP/M as an alternative on their 8080/Z80 platforms—a contrast to the absence of a similar standard for 6502-based machines.[1] The driving force behind this was CP/M’s vast collection of compatible software. For instance, the Xerox 820 adopted CP/M to capitalize on its extensive program library.[2] Xerox supplemented Digital Research's inadequate documentation by providing a Howard W. Sams CP/M manual, which InfoWorld criticized as confusing and insufficient.[3][4]
By 1984, Columbia University had utilized CP/M source code to develop Kermit binaries compatible with over a dozen CP/M variants along with two generic versions.[5] The operating system functioned as a "software bus",[6][7] facilitating uniform hardware communication across applications.[8] Generally, CP/M software was portable among various machines, requiring adjustments only for terminal and printer escape sequences. This adaptability increased its appeal and expanded its software ecosystem beyond single-vendor operating systems. However, some constraints existed, such as dependence on the Z80 processor’s extended instruction set for certain applications and device-specific graphics routines that bypassed the OS and BIOS to enhance performance.[1]
Bill Gates recognized the Apple II equipped with a Z-80 SoftCard as the leading hardware platform running CP/M.[9] By 1982, Digital Research announced that CP/M had been licensed for more than 450 computer models.[10] Prominent systems utilizing CP/M included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX machines. The most commercially successful CP/M-capable computer was probably the Amstrad PCW. In the United Kingdom, CP/M was available on educational computers from Research Machines (with source code released for educational purposes) and on the BBC Micro when paired with a Z80 co-processor. Additionally, it supported platforms such as the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. CP/M 3 operated the NIAT handheld device developed for A. C. Nielsen, which featured 1 MB of solid-state storage.
Multi-user Versions
In 1979, Digital Research introduced MP/M, a multi-user variant of CP/M that allowed multiple terminals to connect simultaneously to a single computer system, each providing separate user sessions. Subsequent releases extended support to 16-bit processors.
CP/M Plus
Released in 1983, CP/M Plus (version 3) was the final iteration of the 8-bit CP/M series, featuring a BDOS engineered by David K. Brown. This version merged MP/M's bank-switching memory management into a single-user operating system compatible with CP/M 2.2 software. It enabled utilization of memory beyond 64 KB on 8080 or Z80 processors and introduced file date stamping capabilities. The package also included a relocating assembler and linker. CP/M Plus was primarily designed for advanced 8-bit platforms such as the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX machines, and the TRS-80 Model 4.
16-bit versions
Digital Research expanded CP/M to support 16-bit processors, commencing with CP/M-86 for the Intel 8086 in November 1981 under the leadership of Kathryn Strutynski. To differentiate it from the original, the 8-bit version was renamed CP/M-80.
Although anticipated to become the IBM PC’s default operating system, discussions between Digital Research and IBM did not reach an agreement. Instead, IBM collaborated with Microsoft to release PC DOS based on 86-DOS. Although CP/M-86 was later made available, it failed to capture significant market share owing largely to IBM’s substantially higher pricing ($240 compared to $40 for PC DOS).
The DEC Rainbow 100 presented competition by supporting CP/M-80 via a Z80 processor, alongside CP/M-86 or MS-DOS on an 8088 CPU, or both simultaneously—allowing users to preserve their existing 8-bit software investments while transitioning to 16-bit environments. Comparable dual-processor designs were implemented in systems like the CompuPro System 816 (running CP/M 8-16) and Zenith Z-100.
Following CP/M-86, Digital Research introduced CP/M-68K in 1982 for the Motorola 68000 processor. Initially developed using Pascal/MT+68k and later rewritten in C, this OS operated on EXORmacs hardware and was considered for Atari ST adoption before Atari selected GEMDOS. Additionally, CP/M-68K was deployed on SORD M68 and M68MX machines.
A C-based port of CP/M-68K for the Zilog Z8000 processor emerged in 1982 as well, known as CP/M-8000 and utilized by the Olivetti M20.
Applications had to be recompiled for these 16-bit variants. To facilitate this process, Digital Research created XLT86, a utility that automated conversion of Intel 8080 assembly source code into Intel 8086 instructions. It optimized code size and adjusted calling conventions to simplify migration from CP/M-80/MP/M-80 platforms to CP/M-86/MP/M-86 systems. Developed in PL/I-80, XLT86 was accessible on both CP/M-80 and VAX/VMS platforms.
Displacement by MS-DOS
By the early 1980s, approximately two thousand applications existed for CP/M, positioning it as a likely standard for 16-bit computing environments. In 1980, following Bill Gates' recommendation, IBM approached Digital Research to license a version of CP/M tailored for the IBM Personal Computer. After failing to secure a signed non-disclosure agreement from Digital Research, IBM turned to Microsoft for an operating system solution.
MS-DOS incorporated numerous design elements from CP/M, including file management structures and drive letter assignments (A:, B:, etc.). Its crucial advancement was introducing the FAT file system, which simplified porting widely-used CP/M software such as WordStar and dBase. MS-DOS supported greater memory capacity (IBM PCs typically featured at least 64 KB), allowing more built-in commands within its command-line interface and enhancing performance and user experience on floppy disk-based systems.
Although early hardware expansions like the Baby Blue card enabled IBM PCs to execute 8-bit CP/M programs, industry assessments favored MS-DOS for its superior usability and efficiency. By 1984, high software prices contributed to CP/M’s decline in home computing markets. By 1986, manufacturers such as Kaypro discontinued CP/M-based models in favor of MS-DOS-compatible machines. As microcomputer markets increasingly aligned with IBM compatibility standards, CP/M rapidly lost market presence and industry attention diminished sharply by the late 1980s.
Subsequent iterations of CP/M-86 enhanced performance and compatibility with MS-DOS applications, eventually leading to rebranding under names like DOS Plus and later DR-DOS.
ZCPR
ZCPR, which stands for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for the standard console command processor (CCP) provided by Digital Research. This project originated from a collective of enthusiasts called "The CCP Group," under the leadership of Richard Conn.
The initial version, ZCPR1, appeared on a SIG/M disk distributed by the Amateur Computer Club of New Jersey. Subsequently, ZCPR2 was released on 14 February 1983 as a set of ten SIG/M disks and later upgraded to version 2.3. This release included an 8080-compatible code variant, allowing it to operate on both 8080 and 8085 CPUs.
To commercialize ZCPR while preserving its free availability, Conn and Frank Gaude established Echelon Inc. The third iteration, ZCPR3, was introduced on 14 July 1984 via nine SIG/M disks and featured a compiled version for processors other than the Z80. Enhancements in version 3 encompassed command shells, aliasing, input/output redirection, flow control mechanisms, named directory support, search path capabilities, customizable menus, password protection, and integrated online help. After Conn ended active development in January 1987, Jay Sage took over and advanced the project to ZCPR 3.3. This update discontinued support for the 8080 CPU and incorporated numerous additional utilities and improvements. Although ZCPR enjoyed considerable popularity among CP/M users, it ultimately could not halt the operating system’s gradual decline.
Hardware model
A basic CP/M system built on an 8-bit architecture required the following components:
- An ASCII-compatible computer terminal
- A microprocessor such as Intel’s 8080 or 8085, or the Zilog Z80
- NEC’s V20 and V30 processors offered 8080 emulation capabilities that enabled CP/M operation on PC-DOS/MS-DOS hardware; similarly, any compatible PC clone could run CP/M-86
- A minimum of 16 KB of RAM starting at memory address zero
- The ability to bootstrap from the first sector of a floppy disk
- At least one floppy disk drive
Digital Research’s official CP/M distribution supported only the Intel 8080 Development System as standard; however, hardware manufacturers often modified portions of the operating system to fit their specific configurations. Thanks to binary compatibility with 8080 code, CP/M also functioned on systems powered by the Z80 processor. Although Digital Research’s core CP/M did not utilize instructions unique to the Z80, many systems based on the Z80 incorporated such instructions within their BIOS or application software.
In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based variant designed for affordable systems that might lack disk drives altogether. This version debuted in devices like the Sharp MZ-800, which used cassettes but also supported optional floppy drives. Personal CP/M took advantage of the extended instruction set of the Z80 rather than maintaining full compatibility with the original 8080 architecture. American Microsystems introduced the S83 microprocessor featuring an embedded 8 KB ROM containing both OS and BIOS code alongside logic for dynamic RAM interfacing; its price was approximately $32 per unit in batches of one thousand.
Most CP/M machines relied on a minimal ROM bootloader combined with techniques such as bank switching or bus injection to load executable code at address zero—a requirement imposed by both the CPU and CP/M itself. Some systems necessitated manual entry of bootstrap instructions through front-panel switches during startup.
The character encoding for CP/M was based on a 7-bit ASCII standard; however, how the eighth bit was used varied among manufacturers. For example, Kaypro employed this bit for Greek characters, Osborne machines used it to indicate underlining, and WordStar applied it to mark word boundaries. International editions typically followed ISO 646 standards by replacing certain ASCII characters to accommodate local alphabets rather than extending beyond seven bits.
Components
When CP/M is active in memory, it consists of three main parts:
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Console Command Processor (CCP).
The BIOS and BDOS remain loaded in memory continuously, whereas the CCP stays resident unless supplanted by an application, at which point it reloads automatically afterward. Utility commands that are transient exist as .COM files stored on disk.
The BIOS manages all hardware components except for the CPU and main memory, overseeing character input/output and disk sector access. The BDOS provides file system management and input/output abstractions such as redirection, built on top of the BIOS layer. The CCP interprets user commands by executing built-in commands like DIR or ERA, or by loading external transient programs such as PIP.COM or STAT.COM. Third-party applications operate as transient commands within this framework.
While the BDOS, CCP, and standard transient utilities remain consistent across a given CP/M version, the BIOS is tailored specifically to each hardware configuration.
To utilize additional memory for transient programs, CP/M must be reinstalled. The MOVCPM tool modifies object code to new memory locations by adjusting jump and call instructions accordingly. This patched version of the OS can then be saved to disk, enabling applications to take advantage of expanded memory. OS components reside in designated disk areas reserved for booting; a ROM-based bootloader loads the operating system from drive A: during startup.
By contemporary standards, CP/M appears rudimentary due to its stringent program size constraints. Early iterations lacked disk change detection, which could lead to data corruption if disks were swapped without refreshing directory information. Later releases introduced error signaling to prevent overwriting but required a system reboot.
The majority of CP/M’s complexity is contained within the BDOS, with additional functionality in the CCP and transient commands. Porting a minimal BIOS to new hardware allowed the entire operating system to function, significantly shortening development cycles and contributing to CP/M’s broad adoption. This early implementation of a hardware abstraction layer was innovative during an era when most operating systems were designed for single machine models without layered designs.
Console Command Processor
The Console Command Processor (CCP) manages user input from the keyboard and outputs responses to the terminal. CP/M supports both printing and video terminals, necessitating that all instructions be entered via the command line. The prompt—commonly A>—indicates the current default disk drive and is followed by a blinking cursor on video terminals. Internal CCP commands, such as entering B:, change the default drive and update the prompt accordingly.
CP/M’s command-line interface draws inspiration from Digital Equipment Corporation’s Concise Command Language used in systems like RT-11 and OS/8. Commands comprise a keyword followed by parameters separated by spaces or special delimiters. Built-in commands are executed directly by the CCP; if not recognized internally, CCP searches for executable "transient" programs on the current disk and user area, launching them with provided arguments. After these programs finish—and if they overwrite CCP—the BDOS reloads it to free memory for transient applications.
Certain command names reflect their heritage; for example, file copying uses PIP (Peripheral Interchange Program), adopted from DEC terminology. Parameter syntax varies per program without standardized option flags.
Internal CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands encompass utilities such as ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
With CP/M Plus (Version 3), additional built-in commands were introduced including DIR—which lists files excluding those marked with SYS attribute—DIRSYS / DIRS for displaying SYS files, ERASE / ERA, RENAME / REN, TYPE / TYP, and USER / USE featuring abbreviated forms. The set of transient commands expanded as well to include tools like COPYSYS, DATE, DEVICE, HELP, LINK, MAC, PIP, SET, SUBMIT, among others that enhanced system administration and development functions.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) oversees tasks such as file handling, console output, and printing functions. Applications interact with BDOS by invoking a predetermined memory address using specific function codes and parameters, which guarantees uniform operation across various hardware environments.
Basic Input Output System
The Basic Input Output System (BIOS) delivers fundamental low-level capabilities, including character input/output and reading or writing disk sectors. While BDOS manages some aspects of disk buffering, it depends on BIOS to perform device-specific operations due to hardware differences. Since sector sizes differ according to disk formats, BIOS must be tailored for each hardware model.
The wide range of hardware—ranging from built-in video displays and standalone terminals to multiple UART chip types and diverse I/O methods—required BIOS customization to unify CP/M services such as character I/O and disk management. Support for serial communication within BIOS was limited, prompting CP/M applications to often incorporate user-installed overlays to facilitate modem access customized for individual machines.
Applications
CP/M served as the platform for significant business software including WordStar (word processing), dBase (database management), Turbo Pascal (programming language), Multiplan (spreadsheet), and AutoCAD (computer-aided design). Early spreadsheet pioneers like VisiCalc and Sorcim’s SuperCalc initially launched on CP/M before migrating to MS-DOS. A broad spectrum of programming languages featured compilers and interpreters compatible with CP/M, including early Microsoft offerings.
To ensure compatibility across diverse hardware setups, CP/M software frequently included installation utilities. For instance, Kaypro II users converted programs from Xerox 820 disk formats to their native format. BASIC source code was commonly available, and copy protection mechanisms were generally ineffective. The use of standard disk formats in CP/M promoted file interoperability among different applications.
Due to limited graphical capabilities, video games were mostly restricted to text-based or character graphics formats, with titles such as Telengard, Gorillas, Hamurabi, Lunar Lander, and interactive fiction like Zork and Colossal Cave Adventure gaining popularity. Infocom consistently released its games in CP/M format. Lifeboat Associates distributed user-created freeware including XMODEM for dependable modem file transfers and the outline processor KAMAS.
Transient Program Area
In the original CP/M systems designed for the 8080, 8085, and Z80 processors, the read/write memory space between address 0100 hexadecimal and just below 0006H (the lowest BDOS address) was designated as the Transient Program Area (TPA), reserved for application execution. Although all these processors could address up to 64 KB of memory, the size of the TPA varied depending on system architecture. Some machines allocated portions of the address space to BIOS ROMs or video memory, thereby reducing available TPA size. Bank switching techniques allowed for expanded TPAs by substituting ROM or video memory segments. CP/M 3.0 further advanced this concept by enabling parts of BDOS to be loaded into bank-switched memory.
Debugging application
CP/M featured a Dynamic Debugging Tool known as DDT, which provided capabilities for inspecting and modifying memory contents and program modules, along with stepwise execution control useful for debugging software.
Resident programs
At its inception, CP/M did not provide native support for terminate-and-stay-resident (TSR) utilities as found in DOS. Developers extended the operating system's capabilities by intercepting system calls, which enabled auxiliary tools like SmartKey, a keyboard enhancement utility. With the arrival of CP/M 3, the platform introduced Resident System Extensions (RSX), which allowed extensions to be loaded dynamically without relying on transient programs. Additionally, third-party developers adapted similar mechanisms, such as Resident System Modules (RSMs), to function with CP/M 2.2.
Software installation
Although CP/M standardized interfaces for disk and console input/output, application software commonly required installation procedures to enable support for specific peripherals like printers and terminals. Many of these devices utilized proprietary escape codes to perform functions such as bold text printing. Installation utilities permitted users to select their hardware or customize escape sequences to ensure compatibility. Since no centralized operating system service managed these peripherals, this installation had to be repeated individually for each program.
Printer initialization routines were embedded directly within applications. Consequently, using software like WordStar across different printer types—such as dot-matrix versus daisy wheel—necessitated maintaining separate versions tailored to each device. Switching printers often required reloading the appropriate program variant.
Disk formats
The floppy disk format standardized by CP/M was derived from the IBM System/34 and IBM 3740 designs, featuring 128-byte sectors, single density, and single-sided 8-inch disks. In contrast, no universal 5.25-inch disk format existed for CP/M; manufacturers including Kaypro, Morrow Designs, and Osborne each implemented proprietary schemes. The Xerox 820 format was widely used for software distribution and compatible with systems like the Kaypro II. However, by 1981, InfoWorld reported that software vendors had to accommodate approximately two dozen popular disk formats to reach a broad audience. For instance, JRT Pascal was available in multiple 5.25-inch versions supporting North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), and Superbrain machines, alongside an 8-inch edition. Ellis Computing supported both Heath formats plus sixteen additional 5.25-inch variants including TRS-80 CP/M adaptations. Distributors such as Lifetree also converted CP/M applications across various platforms.
Disk format selection depended heavily on system architecture and physical disk properties. While CP/M allowed customization of reserved areas, directory sizes, and logical-to-physical sector mappings, there was no standardized mechanism for reading formatting parameters from disks prepared on other machines.
Most CP/M systems equipped with 8-inch drives could read the IBM single-sided, single-density format; however, compatibility across different systems varied due to variations in drive types and controllers amid diverse floppy disk technologies in both 8-inch and 5.25-inch sizes. Disks differed in several characteristics including sectoring method (hard or soft), recording density (single or double), number of sides (single or double), track count (ranging from 35 to 80), and sector organization. Conversion utilities facilitated reading disks from other machines when formats were sufficiently similar—for example, the Kaypro II could access disks from TRS-80, Osborne, IBM PC, and Epson systems—though certain formats like 80-track or hard sectored disks remained incompatible. Apple II users were restricted to Apple's GCR format, necessitating either CP/M software distributed in Apple-compatible form or file transfer via serial connections.
The fragmented nature of CP/M disk formats compelled software distributors to maintain inventories of multiple disk versions or invest in duplication equipment capable of handling various standards. This lack of uniformity compared to the IBM PC disk format ecosystem played a major role in CP/M’s swift market decline after 1981.
Among the final noteworthy CP/M-capable computers was the Commodore 128 released in 1985; it incorporated a Z80 processor dedicated to running CP/M alongside its native CPU. This machine required either a 1571 or 1581 floppy drive capable of reading soft-sector 40-track MFM disks.
The earliest computer featuring a 3.5-inch floppy drive was the Sony SMC-70, running CP/M 2.2. Other systems supporting CP/M on 3.5-inch media included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and the TRS-80 Model 4 (with Montezuma CP/M 2.2). Applied Engineering’s CP/AM for Apple II also enabled use of 3.5-inch disks as well as RAM disks through memory expansion cards. The Amstrad PCW initially employed 3-inch floppy drives before transitioning to the more common 3.5-inch format.
File system
File names adhered to the 8.3 naming convention, consisting of up to eight characters, followed by a period, and a three-letter extension denoting the file type (for example, .COM for executable files and .TXT for text documents). When entered at the command prompt, filenames were automatically converted to uppercase; however, certain applications such as MBASIC could generate lowercase filenames, complicating access via the command line.
Disk drives were designated by letters (e.g., A:, B:). Files were referenced by prefixing the filename with the drive letter and colon, like A:FILE.TXT. If no drive letter was specified, the system assumed the current default drive.
File length was measured in 128-byte records, corresponding to disk sectors on 8-inch disks, without a standard approach for exact byte counts. The operating system maintained file size information within the File Control Block (FCB). Text files typically concluded with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file, allowing programs to interpret files as sequences of characters. Inserting a control-Z character prematurely within a file resulted in truncation.
As disk capacities increased, disk de-blocking techniques enlarged logical allocation blocks, enabling larger files but increasing the minimum allocation unit from 1 KB (single-density) up to 32 KB. This led to inefficient storage utilization when handling numerous small files.
CP/M version 2.2 did not support file modification timestamps; these features were introduced optionally in MP/M and CP/M 3.0.
The file system lacked hierarchical directories but provided 16 numbered user areas for file organization. Users could switch between these areas using the "User X" command, where X ranged from 0 to 15. Each user area isolated files per user; USER 0 served as the default workspace and was accessible from other user areas through explicit path references. This mechanism facilitated multitasking on single machines by segregating workspaces—particularly advantageous on systems equipped with hard drives despite limited security controls.
Graphics
Although some early S-100 systems featured graphics capabilities, CP/M did not include standardized graphics support until 1982 with the introduction of GSX. Due to constrained memory resources, graphical applications were rare on 8-bit CP/M machines. Most displays relied on simple ASCII art or utilized custom character sets. Certain models like the Kaypro series and the TRS-80 Model 4 offered block graphics accessible through assembler programming or BASIC's CHR$ function. The TRS-80 Model 4 could achieve resolutions up to 640x240 pixels with an optional high-resolution graphics board.
Official
Some organizations produced official CP/M upgrades derived from Digital Research’s source code, such as IMDOS for the IMSAI 8080, which was a clone of the Altair 8800.
Compatible
A variety of independently developed CP/M-compatible operating systems emerged without incorporating Digital Research’s original codebase, including:
- Cromemco CDOS developed by Cromemco
- MSX-DOS designed for MSX computers, maintaining compatibility with CP/M software
- Epson QX-10 provided either CP/M or compatible TPM-II/III environments
- The British SAM Coupé featured an optional CP/M-2.2-compatible Pro-DOS
- Amstrad/Schneider CPC and PCW lines included CP/M disk packs
- The Husky (computer) utilized DEMOS, a ROM-based loader supporting numerous CP/M applications
- ZSDOS, an alternative BDOS for CP/M-80 version 2.2 created by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free and open-source CP/M 2.2-compatible OS initially developed without Digital Research code but now incorporating original components after permission granted by Lineo’s president in 2022
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2 compatible system including BIOS, BDOS, CLI source code, original Digital Research elements, and hot-swappable OS modules
- IS-DOS for the Enterprise (computer), developed by Intelligent Software
- VT-DOS for the Videoton TV-Computer, also created by Intelligent Software
Improvements
Certain CP/M-compatible operating systems significantly broadened the capabilities of the original, exemplified by the multi-processor enabled TurboDOS.
Eastern Bloc Variants
A variety of CP/M-80 adaptations were developed in the former Eastern Bloc, known under names such as SCP (), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, 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 versions were primarily manufactured by East German firms like VEB Robotron and other producers.
Enduring Influence
Numerous elements in Microsoft Windows trace their roots to MS-DOS compatibility layers, which themselves were heavily influenced by CP/M. The use of drive letters and the 8.3 filename format in early Windows and MS-DOS originates from CP/M conventions. Wildcard symbols such as ? and * along with reserved device filenames like "PRN:" and "CON:" also derive from CP/M standards. The assignment of floppy drives to A and B and hard drives to C at the C:\> prompt in MS-DOS reflects this heritage. Additionally, the ^Z control character indicating end-of-file in text documents is a legacy feature carried forward. DOS commands including DIR, REN/RENAME, TYPE, and ERA/ERASE closely parallel those found in CP/M. File extensions like .TXT and .COM remain widely used identifiers for file types across various operating systems.
Between 1997 and 1998, Caldera made available CP/M 2.2 executable files along with source code under an open source license. This allowed redistribution and modification of Digital Research's CP/M and MP/M-related software through Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead's passing in 2001, control was transferred to Lineo, who updated the licensing terms later that year. To commemorate its 40th anniversary in October 2014, the Computer History Museum published early versions of the CP/M source code.
As of 2018, both retro computing enthusiasts and select niche commercial entities continue to develop and maintain systems primarily running CP/M 2.2 as their operating environment.
See also
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an operating system derived from CP/M
- Eagle Computer
- IMDOS
- List of machines running CP/M
- MP/M
- MP/NET and MP/NOS
- Multiuser DOS
- Pascal/MT+
- SpeedStart CP/M
- 86-DOS
- Kenbak-1
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 (includes IBM’s choice of Microsoft DOS over Digital Research's CP/M for the IBM PC)
- CP/M FAQ at comp.os.cpm and digitalresearch.biz
External links
- The Unofficial CP/M Website (established by Tim Olmstead) – provides access to source code
- Gaby Chaudry's CP/M and Computing History Homepage – contains resources on ZCPR
- CP/M Central Page – John C. Elliott's technical reference
- MaxFrame's Digital Research CP/M resource
- ↑ 1.0 1.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedwilkinson19811019 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedwise19820510 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedmeyer19820614 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedInfoworld 1981 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs nameddacruz19840427 - ↑ Clarke, A.; Eaton, J. M.; David, D. Powys Lybbe (October 26, 1983). CP/M - the Software Bus: A Programmer's Companion. Sigma Press.
- ↑ Johnson, Herbert R. (July 30, 2014). "CP/M and Digital Research Inc. (DRI) History".
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedSwaine_1997_Entrepreneurship - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedbunnell19820203 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedlibes198206