Jump to content

SCP (operating system)

From Alfawiki
Digital Research, Inc
Company typePrivate
IndustrySoftware
Founded1974
FounderGary Kildall
Headquarters
United States
ProductsCP/M operating system

CP/M, an acronym initially representing Control Program/Monitor and subsequently Control Program for Microcomputers, is a widely distributed operating system created in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080/85-based microcomputer platforms. As a disk operating system, CP/M managed file organization on magnetic disks and facilitated program loading from these storage devices. While its early iterations supported single-tasking on 8-bit processors with memory capacities up to 64 kilobytes, later releases introduced multi-user functionality and compatibility with 16-bit processor architectures.

The design of CP/M is composed of several key components: the Basic Input/Output System (BIOS), responsible for interfacing with hardware drivers; the Basic Disk Operating System (BDOS), which oversees file management and system-level services; and the Console Command Processor (CCP), a command-line shell that interprets user commands and provides built-in functions.

CP/M established itself as the de facto operating system standard for microcomputers, especially those utilizing the S-100 bus, gaining widespread adoption in commercial environments throughout the late 1970s into the mid-1980s. By enabling easier application portability across diverse hardware platforms, CP/M broadened both hardware and software markets. The affordability of CP/M-based microcomputers encouraged innovation among independent developers and user communities. However, its dominance diminished following the introduction of the IBM PC in 1981, which popularized DOS.

Early history

In 1974, Gary Kildall created CP/M to serve as an operating system for the Intel Intellec-8 development platform, utilizing an 8-inch floppy-disk drive from Shugart Associates alongside a custom disk controller. It was developed using Kildall’s proprietary programming language, PL/M. The design drew inspiration from the TOPS-10 operating system used on the DECsystem-10, which Kildall had experience with.

CP/M was compatible with numerous machines powered by the 8080 and Z80 processors. An early licensee, Gnat Computers, acquired rights to CP/M version 1.0 in 1977 for $90, but growing demand soon allowed Digital Research to increase licensing fees into the tens of thousands.

Under Kildall’s guidance, John Pierce spearheaded the development of CP/M 2.0 in 1978. Hired in early 1979, Kathryn Strutynski played a crucial role in debugging CP/M 2.0 and contributed extensively to subsequent versions including CP/M 2.2 and CP/M Plus. Other notable contributors were Robert Silberstein and David K. Brown.

Originally abbreviated as "Control Program/Monitor", CP/M’s name was altered during its commercialization phase to "Control Program for Microcomputers" in a trademark application filed in 1977. This change aligned with contemporary naming conventions such as Kildall’s PL/M and Prime Computer’s PL/P, both influenced by IBM’s PL/I language. The renaming supported business objectives pursued by Kildall, his wife, and partner Dorothy McEwen to position Digital Research as a prominent microcomputer software provider. The company later transitioned from Intergalactic Digital Research to Digital Research, Inc.

Early Achievements

By September 1981, Digital Research had distributed more than CP/M licenses, with the actual market reach presumably higher due to sublicensing agreements. A variety of manufacturers developed CP/M-based machines aimed at diverse sectors; InfoWorld highlighted CP/M’s emergence as the definitive operating system for small computers. Even companies that offered their own proprietary OS, such as Heath/Zenith with HDOS, provided CP/M support on their 8080/Z80 hardware, in contrast to the widely used 6502 CPU platforms, which lacked an equivalent standard.[1] This widespread adoption was largely fueled by CP/M’s rich software ecosystem. For instance, the Xerox 820 incorporated CP/M to take advantage of the extensive library of available applications.[2] Xerox supplemented Digital Research’s often criticized, incomplete documentation with a Howard W. Sams CP/M manual.[3][4]

By 1984, Columbia University utilized the same source code to generate Kermit binaries compatible with over a dozen CP/M variants, in addition to two generic versions.[5] CP/M was characterized as a "software bus",[6][7] facilitating standardized communication between software and hardware components.[8] Applications were generally portable across different hardware platforms, requiring only adaptations for terminal and printer controls. This cross-platform capability significantly enhanced CP/M’s acceptance and software availability compared to operating systems confined to specific hardware brands. However, some challenges persisted: certain programs leveraged the Z80’s extended instruction set, incompatible with 8080/8085 CPUs, and graphical functions were often tailored to particular machines due to direct hardware manipulation aimed at optimizing performance.[1]

Bill Gates recognized the Apple II equipped with a Z-80 SoftCard as the leading CP/M hardware environment.[9] By 1982, Digital Research announced that CP/M had been licensed for use on more than 450 computer models.[10] Prominent platforms included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and MSX systems. The highest-selling CP/M-compatible machine was probably the Amstrad PCW. Within the UK market, CP/M was accessible on educational machines from Research Machines (with source code released for educational purposes), the BBC Micro outfitted with 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 operated on the NIAT handheld device created for internal use by A. C. Nielsen, which featured 1 MB of solid-state storage.

Multi-user

In 1979, Digital Research introduced MP/M, a multi-user iteration of CP/M that allowed multiple terminals to connect to a single machine, each terminal providing individual screens and keyboards for users. Subsequent releases expanded support to include 16-bit processors.

CP/M Plus

The last 8-bit version of CP/M, known as version 3 or CP/M Plus, was launched in 1983. Conceived by David K. Brown, this edition incorporated MP/M’s bank switching memory management into a single-user operating system compatible with CP/M 2.2 software, enabling the utilization of memory beyond 64 KB on 8080 or Z80 CPUs. It introduced features such as file date stamping and came with a relocatable assembler and linker. CP/M 3 was aimed at advanced 8-bit systems like the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX platforms, and the TRS-80 Model 4.

16-bit versions

CP/M was extended to support various 16-bit processors.

The initial version was CP/M-86, designed for the Intel 8086 processor and released in November 1981. Kathryn Strutynski oversaw the development of the CP/M-86 series. To differentiate it from its predecessor, the original 8-bit CP/M became known as CP/M-80.

Although anticipated to be the default operating system for the IBM PC, Digital Research and IBM were unable to finalize licensing agreements. Consequently, IBM opted for Microsoft’s PC DOS, which was based on 86-DOS. While CP/M-86 was eventually offered following legal pressure, it never achieved the market penetration of PC DOS, partly due to its higher pricing on IBM hardware compared to PC DOS.

The Digital Equipment Corporation Rainbow 100 featured support for CP/M-80 running on a Z80 processor, as well as CP/M-86 or MS-DOS on an 8088 CPU, either separately or simultaneously. This design safeguarded users’ existing software investments by allowing continued use of 8-bit CP/M applications during the transition period to 16-bit MS-DOS. A comparable dual-processor solution named CP/M 8-16 was available for the CompuPro System 816, while the Zenith Z-100 also supported both CPUs through its adaptation of CP/M-86.

Following CP/M-86’s release, CP/M-68K was developed in 1982 for the Motorola 68000 processor. Originally implemented in Pascal/MT+68k and later ported to C, it operated on Motorola EXORmacs systems and was evaluated for use on the Atari ST before Atari selected GEMDOS instead. It also ran on SORD M68 and M68MX machines.

In the same year, CP/M-8000 emerged as a port of CP/M-68K to the Zilog Z8000 processor for the Olivetti M20 platform, with its codebase written in C.

These 16-bit variants necessitated recompilation of applications to run on their respective CPUs. Some assembly language software could be automatically translated using tools such as Digital Research’s XLT86 utility, which converted Intel 8080 .ASM files into Intel 8086 .A86 format while optimizing code size and adjusting calling conventions. XLT86 operated under both CP/M-80 environments and VAX/VMS systems.

Supplanting by MS-DOS

By the early 1980s, approximately 2,000 applications were available for CP/M, positioning it as the anticipated standard operating system for 16-bit machines. In 1980, IBM approached Digital Research, influenced by Bill Gates, to obtain a CP/M license for the IBM Personal Computer. When Digital Research declined to sign a non-disclosure agreement, IBM instead contracted Microsoft to supply an operating system.

MS-DOS incorporated many foundational elements from CP/M, such as file management structures and drive letter assignments (A:, B:). Its primary advancement was the introduction of the FAT file system, which simplified porting widely-used CP/M applications like WordStar and dBase. Additionally, MS-DOS utilized greater memory capacity (commonly exceeding 64 KB), allowing it to include more built-in commands within its command-line interface, resulting in improved speed and user experience compared to CP/M.

Early IBM PC peripherals, including the Baby Blue card, enabled execution of 8-bit CP/M software on the PC platform. Nevertheless, by 1982, publications such as BYTE recognized MS-DOS as more accessible and efficient. InfoWorld highlighted in 1984 that CP/M failed to gain traction in the home user market due to expensive software prices. By 1986, manufacturers like Kaypro transitioned from 8-bit CP/M systems to MS-DOS compatible hardware, signaling a sharp decline in CP/M's market presence as IBM-compatible systems prevailed. Prominent microcomputer magazines gradually ceased coverage of CP/M by the late 1980s.

Subsequent releases of CP/M-86 enhanced performance and compatibility with MS-DOS, rebranded as DOS Plus, which eventually evolved into DR-DOS.

ZCPR

ZCPR (Z80 Command Processor Replacement) was launched on 2 February 1982 as a direct substitute for Digital Research’s console command processor (CCP). The project was undertaken by "The CCP Group," a collective of enthusiasts led by Richard Conn. The initial version, ZCPR1, was distributed on a disk from SIG/M associated with the Amateur Computer Club of New Jersey.

ZCPR2 followed on 14 February 1983, issued as ten disks from SIG/M and later updated to version 2.3. It was also made available in 8080 machine code, allowing operation on both 8080 and 8085 processors. Conn and Frank Gaude established Echelon Inc. to commercialize subsequent versions while maintaining free distribution.

The release of ZCPR3 occurred on 14 July 1984 via nine SIG/M disks. This version could be compiled with limited features for use on non-Z80 processors. Major enhancements introduced by version 3 included command shells, aliases, input/output redirection, flow control mechanisms, named directories, search path functionality, customizable menus, password protection, and integrated online help. In January 1987, Jay Sage took over development with ZCPR 3.3, which discontinued support for the 8080 processor and incorporated numerous new utilities and capabilities. Despite strong endorsement from CP/M users, ZCPR was unable to halt the overall decline of CP/M’s market share.

Hardware model

A basic 8-bit CP/M setup required:

  • A computer terminal compatible with ASCII
  • A microprocessor such as Intel 8080/8085 or Zilog Z80
    • NEC V20/V30 CPUs supported emulation of the 8080 instruction set to run CP/M under PC-DOS/MS-DOS; PC clones were capable of running CP/M-86
  • Minimum of 16 KB RAM beginning at memory address zero
  • A bootstrapping mechanism for loading the initial disk sector
  • At least one floppy disk drive

Digital Research officially endorsed only the Intel 8080 Development System; other hardware vendors adapted CP/M to fit their specific platforms. While CP/M operated on Z80-based machines due to CPU compatibility, its core components avoided Z80-exclusive instructions. Many Z80 systems included Z80-specific code within their BIOS and specialized applications.

In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based variant designed for low-cost systems lacking disk drives. Initially deployed in cassette-driven devices like the Sharp MZ-800 with optional disk support, Personal CP/M utilized enhanced Z80 instructions at the expense of portability with the original 8080 architecture. American Microsystems introduced the S83 microprocessor featuring embedded ROM containing OS and BIOS code alongside logic for dynamic RAM interfacing; this chip was priced at $32 per unit in volume production.

Most computers employed a minimal ROM bootloader combined with techniques such as bank switching or bus injection to supply startup code at address zero required by the 8080 processor; some systems necessitated manual bootstrap via front-panel controls.

CP/M employed the standard 7-bit ASCII character set; however, extended 8-bit characters lacked standardization and varied among manufacturers—for instance, Kaypro used them for Greek letters, Osborne applied them for underlining purposes, and WordStar designated them as end-of-word markers. International editions typically replaced certain ASCII characters with localized symbols following ISO 646 standards rather than extending beyond seven bits.

Components

When CP/M is operational, the loaded operating system in memory consists of three main parts:

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

Both the BIOS and BDOS remain resident in memory, whereas the CCP stays loaded until an application overwrites it, after which it automatically reloads. Standard utility commands that are transient reside on disk as files with the .COM extension.

The BIOS is responsible for managing hardware devices other than the CPU and main memory, including functions such as character input/output and handling disk sectors. The BDOS oversees the file system within CP/M and manages input/output abstractions like redirection. The CCP interprets user commands, executing built-in commands (such as DIR for directory listing or ERA for file deletion) or launching executable transient programs (for example, PIP.COM for copying files or STAT.COM for displaying system information). Third-party software designed for CP/M operates as transient commands.

While the BDOS, CCP, and standard transient utilities remain consistent across different CP/M versions, the BIOS is tailored to match specific hardware configurations.

Expanding available memory necessitates reinstalling CP/M to allow transient applications to utilize the additional space. The MOVCPM utility facilitates relocating object code within memory by modifying jump and call instruction addresses. The modified operating system version can then be saved onto a new disk, enabling software to access increased memory capacity. The OS components reside in reserved disk sectors to enable system booting, with a bootloader—often stored in ROM—loading the OS from drive A:.

From a contemporary perspective, CP/M appears rudimentary due to its stringent program size restrictions. Earlier iterations lacked mechanisms for detecting disk changes, which could lead to data corruption if disks were swapped without refreshing directory information. Subsequent versions introduced fatal error alerts when write operations were attempted before reading a new disk's directory, preventing accidental overwrites but requiring a system reboot.

The bulk of CP/M’s complexity lies within BDOS, with lesser portions in CCP and transient utilities. By adapting straightforward BIOS routines to new hardware platforms, the entire operating system could function effectively, significantly reducing development time and contributing to CP/M’s widespread adoption. This method of hardware abstraction was pioneering at a time when most operating systems were designed exclusively for single hardware environments.

Console Command Processor

The Console Command Processor (CCP) manages keyboard input and displays output on terminals, supporting both printing devices and video terminals. All user commands are entered through the command line, which typically begins with the A> prompt indicating the default disk drive. Users can switch drives by typing the drive letter followed by a colon (e.g., B:), which updates the prompt accordingly.

CP/M’s command-line interface drew inspiration from Digital Equipment’s Concise Command Language found in systems like RT-11 and OS/8. Commands consist of a keyword followed by parameters separated by spaces or special delimiters. Internal commands are processed directly by the CCP; if not recognized internally, CP/M searches for executable transient programs on the current disk and user area, loads them into memory, and passes along any parameters. After these transient programs run, BDOS reloads the CCP if necessary to maximize available memory for subsequent executions.

Several command names reflect their origins from legacy utilities—for instance, file duplication employs PIP (Peripheral Interchange Program), a term borrowed from DEC systems. Parameter syntax varies among programs without standardized option characters.

Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands encompass tools such as ASM, DDT, DUMP, ED, LOAD, and PIP among others.

With CP/M Plus (Version 3), built-in commands were enhanced to include DIR (excluding files with SYS attributes), DIRSYS / DIRS for listing SYS files, ERASE / ERA, RENAME / REN, TYPE / TYP, and USER / USE. This version also introduced abbreviated built-in commands to improve efficiency. The collection of transient commands expanded to feature utilities such as COPYSYS, DATE, DEVICE, HELP, LINK, PIP, and others—broadening functionality tailored for business applications.

Basic Disk Operating System

The Basic Disk Operating System (BDOS) is responsible for managing tasks such as file handling, console output, and printing functions. Applications interact with BDOS by placing function identifiers and arguments into processor registers before invoking a predetermined memory location. This standardized method ensures that software operates uniformly across various hardware platforms.

Basic Input Output System

The Basic Input Output System (BIOS) delivers fundamental hardware-level services required by the operating system, including character input/output and reading or writing disk sectors. While BDOS performs some disk data buffering, it depends on BIOS for device-specific duties like handling disk sector dimensions, which differ among hardware.

Due to the wide range of hardware configurations—spanning built-in video displays versus separate terminals, assorted UART chips for serial interfaces, and diverse I/O address mappings—customizing BIOS is crucial. BIOS conceals these variations behind consistent service calls, allowing CP/M to function on multiple systems. Given BIOS often provides minimal modem functionalities, CP/M applications commonly incorporate user-added overlays tailored for serial communication on particular devices.

Applications

CP/M served as the foundation for numerous early business software titles. WordStar, one of the first widely embraced word processors, and dBase, a well-known database application, both originated on CP/M. Early outlining tools such as KAMAS and Out-Think were initially developed for CP/M before migrating to MS-DOS. Turbo Pascal (which later evolved into Borland Delphi) and Multiplan (the forerunner of Microsoft Excel) also made their debut on this platform.

VisiCalc, recognized as the inaugural spreadsheet program, along with Sorcim’s SuperCalc—the dominant spreadsheet on CP/M—were influential business applications that later competed in the MS-DOS environment. Autodesk’s AutoCAD was originally released on CP/M as well. A variety of compilers and interpreters for languages like BASIC, Turbo Pascal, FORTRAN, and PL/I were accessible, including early offerings from Microsoft.

Software distributed for CP/M often featured installers designed to adapt programs to different hardware variants. For instance, Kaypro II users could convert software formatted for the Xerox 820 to run on their own machines. BASIC source code was generally available, and most copy protection schemes failed due to CP/M’s open file system compatibility; disks that could not be read typically indicated non-CP/M formats.

The limited graphical capabilities restricted video game development on CP/M; however, numerous text-based games such as Telengard, Gorillas, Hamurabi, Lunar Lander, along with interactive fiction titles like the Zork series and Colossal Cave Adventure, were ported to the platform. Infocom consistently released their games in CP/M format. Lifeboat Associates distributed user-created freeware including XMODEM, which enhanced reliable file transfers over modems. The outlining program KAMAS also originated within the CP/M ecosystem.

Transient Program Area

In the initial versions of CP/M running on 8080, 8085, and Z80 processors, the area of read/write memory starting at address 0100 hexadecimal up to just before the BDOS entry point at 0006H was designated as the Transient Program Area (TPA), reserved for application execution. Although these CPUs supported addressing up to 64 KB of memory, the size of the TPA varied depending on system architecture due to portions of address space being occupied by BIOS ROM or video memory. Techniques such as bank switching allowed systems to expand available TPA by swapping out ROM or video memory segments when necessary. Additionally, CP/M 3.0 introduced the capability for sections of BDOS to reside within bank-switched memory areas.

Application debugging

CP/M featured a Dynamic Debugging Tool known as DDT, which allowed users to inspect and modify memory and program components, as well as execute programs one instruction at a time.

Resident utilities

Originally, CP/M did not support terminate-and-stay-resident (TSR) programs similar to those in DOS. Nevertheless, developers could intercept operating system calls to enhance functionality, resulting in accessory programs like SmartKey, a keyboard utility that assigned predefined strings to keys. With the release of CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced, along with a null command file that permitted loading RSXs without requiring transient programs. Additionally, third-party solutions such as Resident System Modules (RSMs) were backported to CP/M 2.2 to provide comparable capabilities.

Installing software

Though CP/M established standardized interfaces for disk and console input/output, most applications demanded installation procedures to fully support hardware peripherals like printers and terminals. Control of such devices depended on manufacturer-specific escape sequences, often requiring users to run installation utilities to select or customize these codes. Because no centralized operating system service managed device features, this setup process had to be repeated individually for each program.

Printer initialization sequences were hardcoded within applications; thus, using software like Wordstar with multiple printers necessitated distinct versions customized for each printer model. Users needed to launch the appropriate version matching their printer and exit and reload the software when switching devices.

Disk formats

The standard 8-inch floppy disk format for CP/M is based on the IBM System/34 and IBM 3740’s single-density, single-sided layout with 128-byte sectors. No universal 5.25-inch disk format existed for CP/M; manufacturers such as Kaypro, Morrow Designs, Osborne, and others implemented their own unique formats. Among these, some gained popularity—most commercial software was distributed using the Xerox 820 format compatible with systems like the Kaypro II—but InfoWorld estimated in 1981 that around two dozen formats were common enough for software vendors to support. For instance, JRT Pascal provided versions across several 5.25-inch formats plus one 8-inch variant. Ellis Computing and Lifetree also released software compatible with multiple 5.25-inch formats including Heath/Zenith and TRS-80 CP/M variants.

CP/M allows customization of reserved sectors, directory areas, and logical-to-physical sector mappings; however, there is no standardized approach for loading configuration parameters from disks formatted under different systems. While nearly all CP/M implementations equipped with 8-inch drives can read the IBM single-sided, single-density disk format, compatibility among other formats depends on the specific floppy drive and controller due to the wide variety of floppy types used in both 8-inch and 5.25-inch disks. These disks vary significantly—being hard or soft sectored, single or double density/sided—with track counts ranging from 35 up to 80 and diverse sector arrangements.

By 1982, the predominant format for CP/M software distribution became soft-sector, single-sided, 40-track 5.25-inch disks utilized by consumer machines such as Apple II, TRS-80, Osborne 1, Kaypro II, and IBM PC. Conversion utilities allowed reading disks formatted similarly across different platforms; for example, the Kaypro II could access TRS-80, Osborne, IBM PC, and Epson disk formats. Nonetheless, certain disk types like those with 80 tracks or hard sectored layouts remained incompatible between systems. Apple II users were confined to Apple’s GCR format for CP/M software or had to transfer data via serial connections.

This fragmented landscape of CP/M disk formats compelled distributors to maintain inventories of multiple disk types or invest in multiformat duplication hardware—contrasting sharply with the more uniform IBM PC disk standards—and contributed significantly to CP/M’s swift decline after 1981.

Among the last notable machines supporting CP/M was the Commodore 128 (released in 1985), which incorporated a Z80 processor dedicated to running CP/M alongside its native CPU. It required either a 1571 or 1581 drive capable of reading soft-sector 40-track MFM disks.

The earliest computer equipped with a 3.5-inch floppy drive was the Sony SMC-70, running CP/M 2.2. Other systems compatible with CP/M on 3.5-inch disks included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4. Applied Engineering’s CP/AM for Apple II also supported both 3.5-inch floppy disks and RAM disks. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to 3.5-inch media.

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 example, .COM denoted executables and .TXT represented text files). When typed at the command prompt, filenames were automatically converted to uppercase; however, certain applications such as MBASIC could generate lowercase filenames, which complicated access from the command line.

Disk drives were assigned letters (e.g., A, B), and files were specified by prefixing the drive letter and colon (e.g., A:FILE.TXT). If no drive letter was provided, the system defaulted to the current drive.

File size was expressed in units of 128-byte records, corresponding to disk sectors, rather than exact byte counts. The operating system maintained file size information within the File Control Block (FCB). Text files traditionally ended with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file; inserting a control-Z within the content caused truncation at that point.

With the advent of larger disk drives, disk de-blocking algorithms were introduced to increase the number of disk blocks per allocation unit, allowing for bigger files. This improvement also led to a rise in minimum allocation sizes—from 1 KB on single-density disks up to 32 KB on later drives—resulting in inefficient storage when handling numerous small files.

Up through CP/M 2.2, there was no support for file modification timestamps; this feature was optionally available in MP/M and CP/M 3.0.

CP/M 2.2 did not support subdirectories but provided 16 numbered user areas for organizing files. Users could switch between these areas using "User X" commands (where X ranged from 0 to 15). User area 0 was the default and accessible universally, while other areas isolated files for different users. This mechanism aimed to emulate multi-user MP/M systems and assist with task separation on machines equipped with hard disks—for instance, dedicating separate user areas for data entry and billing tasks—although its usefulness was limited on smaller floppy disk systems.

Graphics

Despite early availability of graphics-capable S-100 hardware, CP/M did not include standardized graphics support until 1982 with the introduction of GSX. Due to constrained memory resources, graphics usage was rare on 8-bit CP/M machines, which primarily displayed basic ASCII art or employed custom character sets. Certain models such as the Kaypro line and the TRS-80 Model 4 featured video hardware capable of block graphics accessible through assembly language or BASIC's CHR$ function. The TRS-80 Model 4 supported a resolution of 640x240 pixels when equipped with an optional high-resolution graphics board.

Official

Some vendors developed official CP/M enhancements derived from Digital Research's source code. An example is IMDOS, created for the IMSAI 8080, itself a clone of the Altair 8800.

Compatible

A variety of independently developed CP/M-compatible operating systems appeared without incorporating Digital Research's codebase, including:

  • Cromemco CDOS by Cromemco
  • MSX-DOS, designed for MSX computers and capable of running CP/M applications
  • Epson QX-10 offering either CP/M or TPM-II/III compatible environments
  • The British ZX Spectrum-compatible SAM Coupé, which optionally included Pro-DOS (compatible with CP/M-2.2)
  • Amstrad/Schneider CPC and PCW series distributed CP/M disk packs
  • Husky (computer) running DEMOS, a ROM-based loader supporting numerous CP/M programs
  • ZSDOS, a replacement BDOS for CP/M-80 version 2.2 developed by Harold F. Bower and Cameron W. Cotrill
  • CPMish, an open-source CP/M 2.2-compatible OS initially created without Digital Research code; since 2022 it has incorporated original DR components under authorization from Lineo's president Bryan Sparks
  • LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2 compatible OS including source code for BIOS, BDOS, CLI, and utilities that allow hot-swapping OS components; it also contains original Digital Research source code
  • 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 greatly enhanced the original capabilities, with examples like the multi-processor supporting TurboDOS.

Eastern Bloc Variants

Within the former Eastern Bloc, numerous CP/M-80 variants appeared under diverse names 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. Additionally, there were CP/M-86 derivatives including SCP1700, CP/K, and K8918-OS. These versions were developed by entities like East German VEB Robotron and other manufacturers.

Enduring Impact

Several features of Microsoft Windows have origins in backward compatibility with MS-DOS, which itself was influenced by CP/M. For instance, the use of drive letter assignments and the 8.3 filename format in MS-DOS and early Windows systems derive directly from CP/M conventions. Wildcard symbols (?, *) employed by Windows trace back to CP/M's design principles. Reserved filenames utilized for output redirection such as "PRN:" (printer) and "CON:" (console) also originate from CP/M. The convention of assigning drive letters A and B to floppy drives and C to hard drives continued into MS-DOS’s C:\> prompt environment. The control character ^Z, signaling end-of-file in text documents, likewise has its roots in CP/M. Commands like DIR, REN/RENAME, and TYPE in DOS were modeled after their CP/M counterparts. File extensions including .TXT and .COM remain widely used for file type identification across multiple platforms.

Between 1997 and 1998, Caldera released the binaries and source code for CP/M 2.2 under an open source license. This permitted redistribution and modification of Digital Research’s files related to CP/M and MP/M via Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo—then holding these rights—broadened the licensing terms.

To commemorate its 40th anniversary in October 2014, the Computer History Museum published early versions of the CP/M source code.

As of today, communities focused on vintage computing along with 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 (covers IBM's selection 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

  1. ↑ 1.0 1.1 Cite error: Invalid <ref> tag; no text was provided for refs named wilkinson19811019
  2. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named wise19820510
  3. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named meyer19820614
  4. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Infoworld 1981
  5. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named dacruz19840427
  6. ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
  7. ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
  8. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Swaine_1997_Entrepreneurship
  9. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named bunnell19820203
  10. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named libes198206