Jump to content

ZOAZ

From Alfawiki
Adapted from the English Wikipedia article ZOAZ, available under CC BY-SA 4.0Updated 9 August 202510 sources
Digital Research, Inc.
Company typePrivate
IndustrySoftware
Founded1974
FounderGary Kildall
Headquarters
United States
Key people
Gary Kildall, John Pierce, Kathryn Strutynski, Robert Silberstein, David K. Brown, Dorothy McEwen
ProductsCP/M operating system, PL/M programming language

CP/M, initially known as Control Program/Monitor and subsequently as Control Program for Microcomputers, is a widely adopted operating system created in 1974 by Gary Kildall of Digital Research, Inc for microcomputers built around the Intel 8080 and Intel 8085 processors. Functioning as a disk operating system, CP/M manages file organization on magnetic storage devices and facilitates program loading from disk. While its early iterations were confined to single-task operation on 8-bit CPUs with a maximum of 64 KB memory, subsequent releases introduced multi-user support and compatibility with 16-bit processors.

The fundamental elements of CP/M consist of the Basic Input/Output System (BIOS), which contains hardware-specific drivers; the Basic Disk Operating System (BDOS), responsible for file system management and core system functions; and the Console Command Processor (CCP), a command-line interface featuring built-in commands.

CP/M established itself as the de facto standard and leading operating system for microcomputers, particularly on S-100 bus systems prevalent in business environments from the late 1970s through the mid-1980s. It broadened both hardware and software markets by enabling easier application portability across different manufacturers. The availability of cost-effective CP/M-based microcomputers encouraged software development by independent programmers and user communities. However, CP/M's dominance waned following the arrival of DOS with the launch of the IBM PC in 1981.

Early history

In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, utilizing an 8-inch floppy-disk drive from Shugart Associates along with a custom-built controller. The system was coded in Kildall's proprietary programming language, PL/M (Programming Language for Microcomputers). CP/M's design was influenced by the TOPS-10 operating system used on the DECsystem-10 mainframe, which Kildall had experience with.

CP/M became compatible with numerous computers powered by the 8080 and Z80 processors. One of its earliest licensees, Gnat Computers, acquired rights to use CP/M version 1.0 for $90 in 1977. Rapidly increasing demand enabled Digital Research to escalate licensing fees into the tens of thousands.

Development of CP/M 2.0 occurred primarily under John Pierce’s direction in 1978, with Kathryn Strutynski joining Digital Research in 1979 to debug this version and later playing a key role in developing CP/M 2.2 and CP/M Plus. Other notable early contributors included Robert Silberstein and David K. Brown.

Originally abbreviated as "Control Program/Monitor," CP/M was officially registered as "Control Program for Microcomputers" in 1977. This naming mirrored conventions such as Kildall’s PL/M language and IBM’s CP/CMS operating system, emphasizing their focus on microcomputer platforms. Alongside his wife and business associate Dorothy McEwen, Kildall pursued commercialization of CP/M and PL/M under the Digital Research name, aiming to make it synonymous with "microcomputer," akin to how IBM and Microsoft later popularized "personal computer." The company Intergalactic Digital Research, Inc. was subsequently renamed Digital Research, Inc.

Early achievements

By September 1981, Digital Research had distributed more than CP/M licenses; according to InfoWorld, the true market size was probably greater due to sublicensing arrangements. A wide array of manufacturers produced CP/M-compatible computers across different sectors, cementing CP/M’s status as the definitive operating system for small computers. Even companies with their own proprietary operating systems, such as Heath/Zenith (HDOS), provided CP/M for their 8080/Z80-based machines—a contrast to the absence of a common OS for 6502 CPU platforms.[1] The appeal of CP/M lay in its vast software ecosystem. For example, the Xerox 820 utilized CP/M to access thousands of existing applications.[2] To compensate for Digital Research’s inadequate and poorly organized documentation, Xerox included a Howard W. Sams CP/M manual, which InfoWorld criticized as incomplete and lacking proper indexing.[3]

By 1984, Columbia University had compiled versions of Kermit for over a dozen CP/M variants along with generic releases.[4] CP/M was often described as a "software bus",[5][6] facilitating standardized communication among diverse programs and hardware platforms.[7] Software generally remained portable between machines, primarily requiring configuration adjustments for terminal and printer control codes. This portability contributed significantly to CP/M’s widespread adoption and richer software availability compared to OSs limited to single hardware brands. However, some limitations existed: certain applications exploited the Z80’s extended instruction set, making them incompatible with 8080/8085 CPUs, and some games incorporated machine-specific graphics routines that bypassed the OS to optimize performance.[8]

Bill Gates pointed out that the combination of the Apple II with a Z-80 SoftCard represented the most prevalent CP/M hardware setup.[9] By 1982, Digital Research reported licensing agreements covering more than 450 computer models.[10] Prominent CP/M systems encompassed the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX platforms. The best-selling machine supporting CP/M was likely the Amstrad PCW. In the United Kingdom, CP/M operated on Research Machines educational computers (with source code released for instructional use) and on the BBC Micro equipped with a Z80 co-processor. Additionally, it was available on systems such as the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. The NIAT handheld computer designed for A. C. Nielsen ran CP/M 3 and featured 1 MB of SSD storage.

Multi-user capabilities

Digital Research introduced MP/M in 1979, a multi-user adaptation of CP/M that enabled multiple terminals to connect simultaneously to one computer, granting each user an independent screen and keyboard interface. Subsequent versions of MP/M expanded support to include 16-bit processors.

CP/M Plus

Released in 1983, CP/M 3—also known as CP/M Plus—was the final iteration for 8-bit systems and featured a BDOS designed by David K. Brown. It incorporated MP/M’s bank switching memory management within a single-user operating system compatible with CP/M 2.2 applications, allowing utilization of memory beyond 64 KB on 8080 or Z80 processors. Enhancements included file date stamping and integrated development utilities such as a relocating assembler and linker. CP/M 3 was aimed at advanced late-generation 8-bit computers like the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX devices, and TRS-80 Model 4.

16-bit iterations

Digital Research extended the CP/M operating system to support 16-bit processors, beginning with CP/M-86 designed for the Intel 8086, released in November 1981. Kathryn Strutynski oversaw the development of the CP/M-86 series. To differentiate it from the original 8-bit version, the earlier CP/M was renamed CP/M-80.

CP/M-86 was initially anticipated to become the default operating system for the IBM PC. However, disagreements over licensing terms prompted IBM to collaborate with Microsoft, which supplied PC DOS derived from 86-DOS. Although CP/M-86 was later offered as an option on IBM PCs following legal intervention, it never achieved greater adoption than PC DOS, largely due to IBM pricing CP/M-86 at $240 compared to $40 for PC DOS.

The DEC Rainbow 100 served as a competitor to IBM by supporting multiple operating systems: CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, and even both simultaneously by executing the two processors concurrently. This dual-processor design enabled users to maintain their existing 8-bit software investments while transitioning to a 16-bit environment. Comparable multiprocessor configurations were found in systems such as the CompuPro System 816 (CP/M 8-16) and Zenith Z-100.

Following CP/M-86, Digital Research introduced CP/M-68K in 1982 for the Motorola 68000 CPU. Originally developed in Pascal/MT+68k and subsequently ported to C, it operated on EXORmacs hardware and was considered for use on Atari ST machines before Atari selected GEMDOS instead. CP/M-68K was also implemented on SORD M68 and M68MX computers.

The same year saw the release of CP/M-8000 for the Zilog Z8000 processor, utilized by Olivetti M20 systems and written in C.

These advanced 16-bit versions necessitated recompiling applications. Assembly language programs could be converted using tools like Digital Research’s XLT86, which translated Intel 8080 .ASM source code into optimized Intel 8086 .A86 code compatible with CP/M-86 environments. XLT86 was developed using PL/I-80 and made available on both CP/M-80 and VAX/VMS platforms.

Replacement by MS-DOS

By the early 1980s, approximately 2,000 applications were available for CP/M, leading many to expect it would become the predominant OS for 16-bit machines. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license a version of CP/M for its upcoming PC. However, negotiations faltered when Digital Research declined to sign a non-disclosure agreement requested by IBM, resulting in IBM turning to Microsoft to provide an operating system.

MS-DOS adopted numerous design elements from CP/M, such as file management conventions and drive letter assignments. Its key advancement was the introduction of the FAT file system, which facilitated porting popular CP/M applications like WordStar and dBase. MS-DOS also allowed access to larger memory segments (typically exceeding 64 KB), supporting a richer set of built-in commands within its command-line interface and improving performance on floppy disk-based PCs.

Although early IBM PC peripherals like the Baby Blue expansion card enabled running legacy 8-bit CP/M programs, MS-DOS rapidly gained dominance. BYTE magazine in 1982 characterized MS-DOS as "more user-friendly and faster," highlighting its numerous advantages. By 1984, CP/M's presence in the home computer market diminished due to costly software prices. By 1986, manufacturers such as Kaypro discontinued producing CP/M-compatible hardware to concentrate exclusively on MS-DOS systems. As IBM PC compatibles became widespread, CP/M's market share declined swiftly; major technology publications like Byte gradually ceased coverage of CP/M by the late 1980s.

Subsequent releases of CP/M-86 enhanced both performance and compatibility with MS-DOS software, rebranded 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). The initial development was undertaken by "The CCP Group," a collective of enthusiasts headed by Richard Conn, which included members such as Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, and Bob Mathias.

The first version, ZCPR1, was distributed on a disk through SIG/M (Special Interest Group/Microcomputers) associated with the Amateur Computer Club of New Jersey. Subsequently, on 14 February 1983, ZCPR2 was released as a set of ten disks from SIG/M. This version evolved into 2.3 and was rewritten in 8080 assembly language to facilitate compatibility with 8080 and 8085 processors.

To commercialize further advancements while continuing free distribution, Conn partnered with Frank Gaude to establish Echelon Inc. On 14 July 1984, ZCPR3 was introduced via nine disks from SIG/M. Its code could be compiled for the 8080 processor—albeit with limited features—allowing it to operate on non-Z80 platforms. Notable enhancements in ZCPR3 included support for shells, aliases, input/output redirection, flow control mechanisms, named directories, search path functionality, customizable menus, password protection, and integrated online help. After Conn ended his involvement in January 1987, Jay Sage took over development and issued ZCPR 3.3. This iteration added new features and utilities but discontinued support for the 8080 family. Despite widespread adoption among CP/M users, ZCPR was unable to prevent the overall decline of the CP/M operating system.

Hardware model

A basic CP/M setup on an 8-bit system typically consisted of:

  • An ASCII-compatible computer terminal
  • A microprocessor such as the Intel 8080/8085 or Zilog Z80
    • NEC’s V20 and V30 processors offered 8080 emulation capabilities that enabled CP/M operation on PC-DOS/MS-DOS hardware; similarly, PC clones could run CP/M-86
  • A minimum of 16 KB RAM beginning at memory address zero
  • A bootstrap mechanism to load the initial sector from disk
  • At least one floppy disk drive

Although Digital Research officially supported only the Intel 8080 Development System, numerous manufacturers adapted CP/M to suit their specific hardware designs. CP/M functioned on systems powered by the Z80 processor due to its backward compatibility with 8080 instructions. While Digital Research’s core components avoided Z80-specific commands, many BIOS implementations and applications were optimized for Z80-based machines.

Digital Research collaborated with Zilog and American Microsystems to develop Personal CP/M—a ROM-resident operating system aimed at cost-effective systems that might lack disk drives. This OS first appeared in Sharp’s MZ-800 series using cassette storage with optional disk support and utilized enhanced instructions unique to the Z80 rather than retaining full compatibility with the 8080 architecture. American Microsystems released the S83 microprocessor compatible with the Z80 instruction set; it integrated ROM containing both OS and BIOS alongside circuitry for dynamic RAM interfacing. The unit price was approximately $32 in volume quantities.

Most CP/M systems employed a minimal bootloader stored in ROM combined with bank switching or bus injection techniques to load CP/M at address zero. In certain cases, users had to manually initiate the bootstrap process through front-panel switches during startup.

CP/M utilized a 7-bit ASCII character encoding scheme; however, extended 8-bit character sets varied depending on manufacturer implementations. For example, Kaypro machines used extended characters for Greek symbols; Osborne systems employed the eighth bit to indicate underlining; WordStar used it to mark word boundaries. International editions frequently adopted ISO 646 standards by substituting localized characters within the standard 7-bit range instead of extending beyond it.

Components

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

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

The BIOS and BDOS remain resident in memory continuously, whereas the CCP stays resident until replaced by an application; it then automatically reloads afterward. Standard utility commands, known as transient commands, are stored as .COM files on the disk.

The BIOS manages hardware elements outside of the CPU and main memory, overseeing tasks such as character input/output and reading or writing disk sectors. The BDOS provides the CP/M file system implementation along with input/output abstractions like redirection, built on top of the BIOS. The CCP interprets user commands, executing internal commands (for instance, DIR to list directories or ERA to delete files) or loading transient executable commands from disk (such as PIP.COM for copying files). Third-party applications for CP/M also function as transient commands.

While BDOS, CCP, and standard transient utilities remain largely unchanged across different CP/M versions, the BIOS is tailored specifically for each hardware platform.

Increasing available memory necessitates reinstalling CP/M so transient programs can utilize the expanded space. The MOVCPM tool modifies object code by adjusting jump and call instruction addresses to relocate it within memory, enabling a customized OS version to take advantage of additional RAM. The OS components reside in reserved disk sectors dedicated to booting; a ROM-based bootloader loads the operating system from drive A: during startup.

By contemporary measures, CP/M is quite basic due to its strict size limitations. Early releases lacked detection of disk changes, which could cause data corruption if disks were swapped without refreshing directory information. Subsequent versions introduced error notifications to prevent overwriting but still required system reboots after disk swaps.

Most of the system’s complexity lies within BDOS and, to a lesser degree, the CCP and transient commands. Porting BIOS routines to new hardware allowed the entire OS to operate seamlessly on different machines, significantly cutting development time and contributing to CP/M’s broad adoption. This method of hardware abstraction was pioneering at that time and anticipated design principles common in modern operating systems.

Console Command Processor

The Console Command Processor (CCP) is responsible for managing keyboard input and terminal display output. CP/M supports either printing or video terminals, requiring users to input all commands via the command line. The prompt—commonly A>—indicates the active default disk drive. Users can switch drives by typing a drive letter followed by a colon (e.g., B:), which updates the prompt accordingly.

CP/M’s command-line interface was inspired by Digital Equipment Corporation’s Concise Command Language found in systems such as RT-11 and OS/8. Commands consist of keywords followed by parameters separated by spaces or special delimiters. Internal commands are processed directly by the CCP; if not internal, it loads executable "transient" programs from disk and passes along any parameters. Once execution finishes, BDOS reloads the CCP if necessary to free memory for transient applications.

Some command names reflect their origins from legacy utilities—for example, PIP (Peripheral-Interchange-Program) derives from DEC terminology used for file copying. Parameter syntax varies among programs without a unified option character.

Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands encompass utilities like ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.

In CP/M Plus (Version 3), built-in commands expanded to include DIRSYS/DIRS for system file management, ERASE/ERASE for file removal, RENAME/REN for renaming files, TYPE/TYP for displaying ASCII contents, and USER/USE to switch user numbers. This version also supports abbreviating commands. Transient commands available in CP/M 3 include SYSGEN/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) is responsible for managing tasks such as file manipulation, console output, and printing operations. Programs access BDOS services by loading specific operation codes and parameters into processor registers, then executing a call to a designated memory location. This uniform method ensures software compatibility across various hardware platforms.

Basic Input Output System

The Basic Input Output System (BIOS) delivers fundamental hardware-level functions required by the operating system, including character input/output and disk sector reading and writing. Before CP/M version 3.0, BIOS was designed around a fixed 128-byte sector size typical of 8-inch floppy disks. Since many 5.25-inch disks utilize larger sector sizes, BIOS incorporates device-specific routines to manage disk buffering and formatting.

Due to the wide variety of hardware configurations—such as integrated video versus terminal displays, different UART chips for serial communication, and diverse I/O address schemes—BIOS customization is necessary. It provides a standardized set of entry points for services like character I/O and disk operations, allowing CP/M to operate on numerous machine types. Serial port support within BIOS is minimal or sometimes absent; therefore, modem-related applications frequently include user-installed overlays to handle specific serial port interactions.

Applications

CP/M served as the initial environment for many significant business software titles: WordStar (an early word processor), dBase (a database system), KAMAS and Out-Think (outlining tools), Turbo Pascal (a precursor to Borland Delphi), Multiplan (a forerunner to Microsoft Excel), and VisiCalc (the first spreadsheet program). Sorcim’s SuperCalc gained prominence as the leading spreadsheet on CP/M before entering the MS-DOS marketplace. Autodesk’s AutoCAD also originated on this platform. A broad range of compilers and interpreters were available for languages including BASIC, Turbo Pascal, FORTRAN, and PL/I, featuring early offerings from Microsoft.

Many CP/M applications included installers capable of adapting software to different hardware formats; for instance, Kaypro II users could convert programs from Xerox 820 disk formats to their native system. BASIC source code was often provided openly, and most copy protection methods were ineffective due to CP/M’s reliance on standardized disk formats—disks that could not be read were simply considered non-CP/M compliant.

Although limited graphical capabilities restricted video game development, text-based titles such as Telengard, Gorillas, Hamurabi, Lunar Lander, along with interactive fiction like the Zork series and Colossal Cave Adventure, were ported to CP/M. Infocom regularly released their text adventures for this platform. Lifeboat Associates distributed user-created freeware including XMODEM, which facilitated dependable file transfers over modems. The outlining tool KAMAS also debuted on CP/M.

Transient Program Area

In the original CP/M implementations for the 8080, 8085, and Z80 processors, the read/write memory region 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 could address up to 64 KB of memory, the actual TPA size depended on system architecture. Certain machines allocated substantial address space to BIOS ROM or video memory, thereby reducing available TPA size. To increase TPA capacity, bank switching was often employed to swap out ROM or video memory when necessary. Additionally, CP/M 3.0 introduced support for placing portions of BDOS in 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 Software

At its inception, CP/M did not offer native support for terminate and stay resident (TSR) utilities similar to those found in DOS. Nevertheless, developers were able to intercept operating system calls to enhance functionality, resulting in auxiliary utilities like SmartKey, a keyboard macro program assigning strings to specific keys. With the release of CP/M 3, support for dynamically loadable Resident System Extensions (RSX) was introduced, enabling extensions without relying on transient programs. Additionally, third-party solutions such as RSMs (Resident System Modules) were retrofitted to CP/M 2.2 to provide comparable capabilities.

Installation of Software

Although CP/M standardized disk and console input/output through hardware abstraction layers, applications still required installation procedures to fully leverage peripherals like printers and terminals. Device control frequently depended on manufacturer-specific escape sequences—for example, those used for bold text—that varied between models. Installation utilities permitted users to specify devices or tailor escape codes for particular features. Since no centralized operating system service managed these devices, this configuration process had to be repeated individually for each application.

Printer initialization codes were typically embedded within the software itself. For instance, when using Wordstar with multiple printers—such as a rapid dot-matrix printer alongside a slower daisy wheel model—distinct versions of the program were necessary, each customized for a particular printer type. Users needed to load the version matching the printer in use.

Disk Formats

The 128-byte sector, single-density, single-sided format employed by the IBM System/34 and IBM 3740 became the de facto standard 8-inch floppy disk format for CP/M systems. In contrast, no uniform 5.25-inch CP/M disk format existed; manufacturers including Kaypro, Morrow Designs, and Osborne implemented proprietary formats. Most software distribution utilized the Xerox 820 format compatible with systems such as the Kaypro II; however, InfoWorld reported in 1981 that roughly two dozen formats were prevalent enough that software developers had to accommodate multiple disk types. For example, JRT Pascal was available on various 5.25-inch disks tailored for North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), and Superbrain platforms, along with an 8-inch version. Ellis Computing supported Heath formats plus sixteen other 5.25-inch variants including TRS-80 CP/M adaptations. Lifetree and other distributors also converted CP/M applications across different platforms.

Disk formats varied according to system architecture and hardware design. While CP/M allowed customization of reserved areas, directory structures, and logical-to-physical sector mappings, there was no standardized method for loading these parameters from disks formatted on disparate systems.

Although most CP/M machines equipped with 8-inch drives could read the IBM single-sided, single-density format, cross-machine compatibility depended heavily on drive and controller types due to variations in floppy disk characteristics—such as hard versus soft sectoring, single or double density/sidedness, track counts ranging from 35 to 80, and diverse sector layouts. Translation utilities facilitated reading disks from related formats; for instance, the Kaypro II could access disks from TRS-80, Osborne 1, IBM PC, and Epson QX-10 systems. However, certain disk types like 80-track or hard-sectored disks remained unreadable. Apple II users faced challenges because Apple's proprietary GCR format required either CP/M software on Apple-formatted disks or serial data transfers.

This fragmented landscape of CP/M disk formats compelled distributors to maintain inventories of multiple disk types or invest in duplication equipment capable of handling various formats. Compared with the more standardized IBM PC disk formats emerging at the time, this complexity contributed significantly to CP/M’s swift decline following 1981.

Among the last notable computers supporting CP/M was the Commodore 128 (released in 1985), which incorporated a Z80 processor specifically for running CP/M alongside its primary CPU. This system required either a 1571 or 1581 disk drive to read soft-sectored 40-track MFM-formatted floppy disks.

The earliest computer equipped with a 3.5-inch floppy drive was the Sony SMC-70, running CP/M 2.2. Other machines supporting CP/M on 3.5-inch media included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (utilizing Montezuma CP/M 2.2). Applied Engineering's CP/AM for Apple II also accommodated 3.5-inch disks and RAM disks via memory expansion cards. The Amstrad PCW initially employed 3-inch floppies before transitioning to 3.5-inch drives.

File system

File names adhered to the 8.3 naming convention, consisting of a maximum of eight characters, followed by a period and a three-character extension denoting the file type (for example, .COM for executable files and .TXT for text documents). When entered at the command line, filenames were automatically converted to uppercase, although certain applications, particularly MBASIC, could generate lowercase filenames, which complicated command-line operations.

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

File size was recorded in units called 128-byte records, matching disk sector size; precise byte counts were not standard practice. This size information was maintained within the file's File Control Block (FCB). Text files traditionally ended with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file, affecting how text editors interpreted file contents.

The introduction of larger disk drives brought disk de-blocking, which increased the minimum file allocation unit from 1 KB on single-density disks up to 32 KB on larger drives, thereby decreasing storage efficiency for numerous small files.

CP/M version 2.2 did not support file modification timestamps; these were introduced as optional features in MP/M and CP/M 3.0.

The file system lacked subdirectories but implemented 16 numbered user areas to help organize files. Users could switch between these areas using the "User X" command. Although security was limited, user areas enabled separation of files by user or task—particularly beneficial on systems equipped with hard drives. Files stored in USER 0 were accessible to all users but required explicit path designation; other user areas isolated files per individual user. This structure facilitated multi-tasking workflows, such as dividing data entry and billing processes on the same machine.

Graphics

Despite the existence of graphics-capable S-100 systems since the introduction of the S-100 bus, CP/M did not offer standardized graphics support until 1982 with the release of GSX. Due to limited memory resources, graphics were rarely utilized on 8-bit CP/M machines. Most systems could only render simple ASCII art charts and diagrams within text mode or through custom character sets. Certain models, including the Kaypro series and the TRS-80 Model 4, incorporated video hardware supporting block graphics characters accessible via assembler and BASIC programming languages. The Model 4 was capable of displaying graphics at a resolution of 640×240 pixels when equipped with an optional high-resolution expansion board.

Official

Various companies produced official CP/M enhancements derived from Digital Research’s source code, such as IMDOS for the IMSAI 8080, which was a clone of the Altair 8800.

Compatible

Numerous independent operating systems compatible with CP/M but developed without using Digital Research’s codebase appeared, including:

  • Cromemco CDOS by Cromemco
  • MSX-DOS for MSX computers, supporting CP/M applications
  • The Epson QX-10, offering either CP/M or TPM-II/III
  • The British ZX Spectrum-compatible SAM Coupé, featuring optional Pro-DOS (compatible with CP/M-2.2)
  • Amstrad/Schneider CPC series 6xx and PCW machines bundled with CP/M disk packages
  • The Husky (computer) running DEMOS, a ROM-based loader for many CP/M programs
  • ZSDOS, an alternative BDOS for CP/M-80 2.2 developed by Harold F. Bower and Cameron W. Cotrill
  • CPMish, a free and open-source OS compatible with CP/M 2.2 originally lacking DR code; it integrated ZSDOS as BDOS and ZCPR as its command processor; since 2022 it has incorporated original DR CP/M code under authorization from Lineo’s president Bryan Sparks
  • LokiOS, launched in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2-compatible OS including BIOS, BDOS, CLI source code, original DR source code, and tools enabling hot-swapping OS components
  • IS-DOS for the Enterprise, created by Intelligent Software
  • VT-DOS for the Videoton TV Computer, also developed by Intelligent Software

Improvements

Certain CP/M-compatible operating systems significantly expanded upon the original capabilities, exemplified by TurboDOS, which supported multiprocessing environments.

Eastern Bloc Developments

Within the former Eastern Bloc, numerous CP/M-80 variants were developed under a variety of names, 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. Variants of CP/M-86 such as SCP1700, CP/K, and K8918-OS were also produced. These operating systems were manufactured by entities like the East German VEB Robotron and other regional producers.

Impact and Legacy

Microsoft Windows adopted numerous features from MS-DOS, which itself was designed with backward compatibility to CP/M in mind. Fundamental elements such as the use of drive letter assignments and the 8.3 filename convention originated with CP/M. The employment of wildcard symbols (? and *), reserved device names like "PRN:" and "CON:", along with the standard assignment of drives A and B to floppy disks (and C to hard disks), all derive from CP/M conventions. Additionally, the ^Z control character indicating end-of-file in text documents is a legacy from CP/M. Several DOS commands—such as DIR, REN/RENAME, and TYPE—were modeled after their CP/M equivalents. File extensions including .TXT and .COM continue to be widely utilized across various operating systems.

Between 1997 and 1998, Caldera made CP/M 2.2 binaries and source code available under an open source license, facilitating redistribution and modification through Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, the licensing terms were revised by Lineo, who then held ownership of these assets. To celebrate CP/M’s 40th anniversary in October 2014, the Computer History Museum released early versions of its source code.

As of 2018, a community of vintage computing enthusiasts alongside some small enterprises continue to develop and maintain platforms operating primarily on CP/M version 2.2.

See also

Further reading

  • Rodnay Zaks, The CP/M Handbook With MP/M, SYBEX Inc., 1980, ISBN 0-89588-048-2
  • Richard Conn, ZCPR3 - The Manual, New York Zoetrope, 1985, ISBN 0-918432-59-6
  • "Z-System Corner: Tenth Anniversary of ZCPR", The Computer Journal, Issue 54
  • "The origin of CP/M's name"
  • 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)
  • "CP/M FAQ", comp.os.cpm

External links

  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 Infoworld 1981
  4. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named dacruz19840427
  5. ↑ ...
  6. ↑ ...
  7. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Swaine_1997_Entrepreneurship
  8. ↑ Template:Fix/category[citation needed]
  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