Jump to content

BDOS

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

CP/M, initially an acronym for Control Program/Monitor and later redefined as Control Program for Microcomputers, is a widely adopted operating system launched in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080 and 85-based microcomputer platforms. This disk operating system was engineered to manage file organization on magnetic storage media and facilitate program execution from disk drives. While the earliest iterations supported only single-task operations on 8-bit processors with a maximum of 64 kilobytes of memory, subsequent releases introduced multi-user functionality and compatibility with 16-bit processor architectures.

The architecture of CP/M is composed of three principal modules: the Basic Input/Output System (BIOS), responsible for hardware control and device driver management; the Basic Disk Operating System (BDOS), which oversees file system operations and core system services; and the Console Command Processor (CCP), acting as the command-line shell that interprets user commands and provides built-in functionalities.

During its peak, CP/M established itself as the de facto operating system standard for microcomputers, especially those utilizing the S-100 bus, dominating business computing from the late 1970s through the mid-1980s. Its design facilitated cross-platform software compatibility, enabling applications to be easily ported among diverse hardware vendors. The widespread adoption of cost-effective CP/M-based machines catalyzed a surge in software development, driven by independent programmers and user communities. Eventually, CP/M's prominence diminished following the introduction of DOS alongside the 1981 debut of the IBM PC.

Early history

In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, utilizing an 8-inch floppy-disk drive from Shugart Associates paired with a custom-designed controller.[1] The system was programmed in Kildall’s proprietary language, PL/M.[2] CP/M drew inspiration from the TOPS-10 operating system running on the DECsystem-10, which Kildall had experience with.[3]

CP/M was compatible with numerous machines powered by the 8080 and later the Z80 processors. One of its earliest licensees, Gnat Computers, acquired rights to use CP/M version 1.0 for $90 in 1977. The rapid increase in demand soon enabled Digital Research to elevate licensing fees into the tens of thousands of dollars.[4]

Under Kildall’s guidance, John Pierce developed CP/M version 2.0 in 1978. When Kathryn Strutynski joined Digital Research in 1979, she focused on debugging CP/M 2.0 and contributed significantly to subsequent releases such as CP/M 2.2 and CP/M Plus. Other notable contributors included Robert Silberstein and David K. Brown.[5][6]

Originally coined as "Control Program/Monitor",[7] the acronym CP/M was officially redefined as "Control Program for Microcomputers" in trademark registrations filed in 1977.[8] This change aligned with naming patterns seen in products like Kildall’s own PL/M language and IBM’s CP/CMS systems. The renaming was part of an effort by Kildall and his business partner Dorothy McEwen to commercialize CP/M and position Digital Research as a premier microcomputer software provider. Their objective was to associate their brand closely with the term "microcomputer," much like how IBM and Microsoft later linked their names with "personal computer." During this period, Intergalactic Digital Research, Inc. was renamed Digital Research, Inc.[9]

Early Achievements

By September 1981, Digital Research had distributed more than CP/M licenses, with sublicensing activity indicating an even broader user base. A wide array of manufacturers developed CP/M-based machines targeting different sectors; InfoWorld recognized CP/M as becoming the definitive operating system for small computers. Even companies maintaining their own proprietary operating systems, such as Heath/Zenith with HDOS, provided CP/M as an option for their 8080/Z80 platforms, in contrast to the absence of a unified OS for 6502-based devices.[10] This success was largely attributable to CP/M’s vast software catalog. The Xerox 820 incorporated CP/M to take advantage of its extensive program availability.[11] Since Digital Research’s documentation was limited, Xerox supplemented it with a Howard W. Sams manual dedicated to CP/M.[12][13]

By 1984, Columbia University utilized the identical source code to compile Kermit binaries compatible with over a dozen CP/M variants as well as generic versions.[14] CP/M was characterized as a "software bus",[15][16] facilitating interaction between multiple applications and diverse hardware in a standardized manner.[17] Software was generally portable across different systems, requiring only adjustments for terminal and printer control codes. This cross-platform capability contributed significantly to CP/M’s widespread adoption and robust software library, contrasting with operating systems confined to single hardware lines. Some restrictions existed, such as programs leveraging the Z80’s extended instruction set that were incompatible with 8080/8085 CPUs, and graphics routines tailored for specific machines—especially in games—that bypassed the OS to enhance performance.

Bill Gates identified the Apple II equipped with a Z-80 SoftCard as the leading hardware platform running CP/M.[18] By 1982, Digital Research announced that CP/M had been licensed for more than 450 distinct computer models.[19] Prominent CP/M-compatible systems included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and MSX machines. The highest volume CP/M-enabled device was probably the Amstrad PCW. In the United Kingdom, CP/M operated on educational computers from Research Machines (with source code made available for instructional use), the BBC Micro featuring a Z80 co-processor, as well as on the Amstrad CPC, Commodore 128, TRS-80, and subsequent ZX Spectrum models. The NIAT handheld computer developed for A. C. Nielsen ran CP/M 3 and included 1 MB of solid-state memory.

Multi-user Capabilities

Digital Research introduced MP/M in 1979, a multi-user adaptation derived from CP/M. MP/M allowed several users to simultaneously access a single machine through multiple terminals, each equipped with its own display and keyboard. Subsequent releases extended support to 16-bit processor architectures.

CP/M Plus

Released in 1983, CP/M Plus (also known as CP/M 3) represented the last iteration of the 8-bit CP/M series, featuring a BDOS developed by David K. Brown. This version incorporated MP/M's bank switching memory management techniques into a single-user operating system that maintained compatibility with CP/M 2.2 applications. It allowed systems based on the 8080 or Z80 processors to utilize memory exceeding 64 KB. Enhancements in CP/M 3 included support for file date stamping and the addition of relocating assembler and linker utilities. This OS found adoption in later 8-bit machines such as the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and the TRS-80 Model 4.

16-bit versions

Digital Research expanded CP/M to accommodate 16-bit processors, beginning with CP/M-86 for the Intel 8086 CPU, which was introduced in November 1981 under the supervision of Kathryn Strutynski. To differentiate it from the original, the earlier 8-bit variant became known as CP/M-80.

Initially expected to become the primary operating system for IBM PCs, CP/M-86 lost favor due to licensing conflicts that led IBM to collaborate with Microsoft, resulting in PC DOS based on 86-DOS. Although Digital Research eventually made CP/M-86 available for IBM PCs following legal pressure, it failed to compete effectively with PC DOS because IBM priced it substantially higher ($240 compared to $40).

The Digital Equipment Corporation’s Rainbow 100 offered a competitive alternative by supporting CP/M-80 via a Z80 processor and either CP/M-86 or MS-DOS through an 8088 CPU—sometimes running both simultaneously. This dual-processor design enabled users to preserve their existing 8-bit software investments while transitioning toward 16-bit environments. Comparable dual-CPU configurations appeared in products like the CompuPro System 816 (CP/M 8-16) and Zenith Z-100.

Following CP/M-86, Digital Research developed CP/M-68K for the Motorola 68000 processor in 1982. Initially written in Pascal/MT+68k and later ported to C, this version was intended for Atari ST computers; however, Atari ultimately preferred GEMDOS. CP/M-68K found use in systems such as EXORmacs and SORD M68 models.

Also introduced in 1982 was CP/M-8000 for the Zilog Z8000 processor, implemented in C for the Olivetti M20.

These 16-bit variants necessitated recompilation of software; some assembly language programs could be converted automatically using tools like Digital Research’s XLT86. This utility translated Intel 8080 assembly into Intel 8086 code while optimizing size and managing calling conventions, thereby easing migration from CP/M-80/MP-M80 environments to their CP/M-86/MP-M86 counterparts. XLT86 was accessible on both CP/M-80 and VAX/VMS platforms.

Displacement by MS-DOS

By the early 1980s, the CP/M ecosystem comprised approximately 2,000 applications and was widely regarded as the anticipated standard operating system for emerging 16-bit personal computers. In 1980, at Bill Gates’ recommendation, IBM approached Digital Research to license an updated version of CP/M tailored for the IBM PC. After failing to secure a signed non-disclosure agreement from Digital Research, IBM instead contracted Microsoft to supply an operating system.

MS-DOS incorporated many fundamental principles from CP/M—including file management structures and drive letter assignments such as A: and B:. Its principal advancement was the introduction of the FAT file system, which facilitated easier porting of popular CP/M applications like WordStar and dBase. Unlike CP/M’s support for separate user areas on a single disk, MS-DOS capitalized on increased memory availability (typically beyond 64 KB) to embed more commands directly within its command-line interpreter, improving speed and usability on floppy-based PCs.

Early IBM PC add-ons such as the Baby Blue card enabled running legacy 8-bit CP/M software prior to native MS-DOS versions becoming widespread. Nonetheless, by 1982 industry reviews characterized MS-DOS as more intuitive and faster than CP/M. Attempts to penetrate the home computer market with CP/M largely failed by 1984 due to elevated software costs. By 1986, manufacturers like Kaypro had discontinued producing machines running CP/M in favor of MS-DOS compatible hardware. As microcomputing gravitated toward IBM-compatible platforms, CP/M rapidly lost market share and never regained significant influence. Major trade publications phased out coverage of CP/M within a few years following the IBM PC’s debut.

Subsequent iterations of CP/M-86 enhanced performance and improved compatibility with MS-DOS environments, prompting a rebranding as DOS Plus—an evolution that ultimately led to DR-DOS.

ZCPR

ZCPR, standing for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for the standard console command processor (CCP) from Digital Research. This project originated from a hobbyist collective called "The CCP Group," headed by Richard Conn.

The initial version, ZCPR1, was distributed on a disk through SIG/M (Special Interest Group/Microcomputers), affiliated with the Amateur Computer Club of New Jersey. Subsequently, on 14 February 1983, ZCPR2 was introduced via ten disks from SIG/M, featuring an upgrade to version 2.3 and an adaptation in 8080 code to support 8080/8085 processors.

To commercialize ZCPR while preserving its free availability, Conn partnered with Frank Gaude to establish Echelon Inc. The third iteration, ZCPR3, was released on 14 July 1984 as nine disks from SIG/M and included a compiled version for non-Z80 platforms. This release brought enhancements such as shell environments, command aliases, input/output redirection, flow control mechanisms, named directory shortcuts, search path configurations, customizable menus, password protection, and integrated online help. After Conn ended his involvement in January 1987, Jay Sage advanced the software to ZCPR 3.3, removing support for the 8080 but introducing a broad range of new features and utilities. Despite enthusiastic adoption among CP/M users, ZCPR was unable to halt the overall decline of the CP/M operating system.

Hardware model

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

  • A computer terminal utilizing ASCII character encoding
  • A microprocessor such as Intel’s 8080/8085 or the Zilog Z80
    • NEC’s V20 and V30 processors offered 8080 emulation capabilities allowing CP/M operation on PC-DOS/MS-DOS machines; any compatible PC clone could execute CP/M-86
  • A minimum of 16 KB RAM beginning at memory address zero
  • A bootstrap facility to load the initial disk sector into memory
  • At least one floppy disk drive

Although Digital Research officially supported only the Intel 8080 Development System, numerous hardware vendors adapted CP/M to fit their specific platforms. The operating system also ran effectively on Z80-based machines due to their compatibility with 8080 instructions. While Digital Research’s core OS components avoided Z80-exclusive commands to maintain portability, BIOS implementations and application software frequently leveraged those extended instructions.

In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based variant designed for cost-efficient systems without disk drives. This version debuted in the Sharp MZ-800 cassette-driven computer with optional disk support and prioritized exploiting advanced Z80 instructions rather than strict backward compatibility with the 8080. American Microsystems introduced the S83 microprocessor incorporating an 8 KB ROM containing OS and BIOS code along with integrated DRAM interface logic; this chip was priced at $32 per unit in volume quantities.

Most systems employed a minimal ROM bootstrap loader combined with bank switching or bus injection techniques to place code at address zero since the 8080 mandates boot code at this location but CP/M expects RAM there. Certain machines required manual bootstrap entry through front-panel switches during startup.

CP/M utilized a 7-bit ASCII character set; however, extended 8-bit character implementations lacked standardization and varied among manufacturers—for instance, Kaypro systems used them for Greek alphabet symbols, Osborne computers indicated underlining using the eighth bit, and WordStar marked word boundaries similarly. International editions frequently substituted specific ASCII characters following ISO 646 guidelines instead of expanding beyond seven bits.

Components

When CP/M is running, 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, whereas the CCP stays resident until replaced by an application, after which it automatically reloads. Files with the .COM extension on disk contain transient commands for standard utilities.

The BIOS manages hardware elements aside from the CPU and main memory, performing tasks such as character input/output and reading or writing disk sectors. The BDOS oversees the CP/M file system and input/output abstractions like redirection, operating above the BIOS layer. The CCP interprets user commands, executing internal commands (for example, DIR to display directory contents or ERA to remove files) or launching executable transient commands (such as PIP.COM for file copying or STAT.COM for system information). Third-party software operates as transient commands.

While the BDOS, CCP, and standard transient programs are consistent across different CP/M installations of the same version, the BIOS is tailored specifically for each hardware platform.

Expanding memory necessitates reinstalling CP/M to allow transient applications to utilize the additional space. The MOVCPM utility modifies object code to new memory locations by updating absolute jump and call addresses, enabling the operating system to take advantage of increased memory capacity. After installation, BIOS, BDOS, and CCP are stored in reserved disk sectors used during booting. At startup, a bootloader—usually embedded in ROM firmware—loads the OS from the disk in drive A:.

By contemporary standards, CP/M appears rudimentary due to strict limitations on program size. Early releases lacked disk-change detection, which posed risks of data corruption if disks were swapped without refreshing directory information. Later versions introduced error notifications when write operations were attempted before reading a new disk’s directory, preventing accidental overwrites but requiring a reboot.

Most of CP/M’s complexity resides within BDOS and, to a lesser degree, CCP and transient utilities. This architecture enabled porting only the BIOS routines for new hardware platforms, significantly reducing development effort and contributing to CP/M’s widespread adoption. This approach represented an early example of a hardware abstraction layer at a time when most operating systems targeted single machine types.

Console Command Processor

The Console Command Processor (CCP) manages keyboard inputs and terminal output. CP/M supports both printing and video terminals, with all commands entered at the command line. The prompt usually indicates the current default disk drive (for example, A>), accompanied by a blinking cursor on video terminals. Users can switch the default drive by entering its letter followed by a colon (e.g., B:), which updates the prompt accordingly.

CP/M’s command-line interface is inspired by Digital Equipment Corporation’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 characters. Internal commands are executed directly by the CCP; if not internal, it loads and runs executable "transient" programs from disk, passing parameters along. After execution completes, BDOS reloads the CCP to free memory for other applications.

Several command names originate from legacy utilities—for instance, PIP stands for Peripheral Interchange Program used for copying files. Parameter conventions differ among programs without a unified option character.

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

In CP/M Plus (Version 3), built-in commands were enhanced with additions like DIRSYS/DIRS (to list system files), ERASE/ERA, RENAME/REN, TYPE/TYP, and USER/USE; these also support abbreviated forms. Transient commands expanded to include COPYSYS, DATE, DEVICE, GET, HELP, HEXCOM, INITDIR, LINK, MAC, PUT, RMAC, SET, SETDEF, SHOW, SID, SUBMIT, and XREF.

Basic Disk Operating System

The Basic Disk Operating System (BDOS) is responsible for fundamental operations including file management, output to the console, and printing tasks. Programs interact with BDOS by placing function identifiers and parameters into processor registers and invoking a designated memory location. This approach guarantees uniform functionality across various hardware setups, independent of the system's memory capacity.

Basic Input Output System

The Basic Input Output System (BIOS) handles the most fundamental hardware-level services required by the operating system, such as character input/output and reading or writing disk sectors. Before the release of CP/M 3.0, BIOS was designed with the assumption that disk sectors were fixed at 128 bytes, reflecting the standard for single-density 8-inch floppy disks. Since many 5.25-inch disks utilized larger sector sizes, BIOS incorporated device-specific routines for buffering and disk control.

Customizing BIOS was necessary due to the wide range of hardware architectures—some systems used built-in video adapters while others relied on terminals; serial communication chips varied widely; port addresses differed; and certain machines employed memory-mapped I/O rather than the typical 8080 I/O address space. BIOS provided a uniform interface for hardware functions like character handling and disk operations, insulating higher-level software from these hardware discrepancies. Serial port support within BIOS was limited or nonexistent, so CP/M applications that communicated via modems often included user-supplied overlays containing tailored serial communication code.

Applications

CP/M served as a platform for groundbreaking software titles such as WordStar, one of the earliest widely used word processors, and dBase, an early database management system. The initial outliner programs like KAMAS and Out-Think were created on CP/M before migrating to MS-DOS environments. Development tools including Turbo Pascal (a forerunner to Borland Delphi) and Multiplan (a predecessor to Microsoft Excel) first appeared on CP/M prior to their MS-DOS releases. VisiCalc, recognized as the first spreadsheet application, was available on CP/M alongside Sorcim’s SuperCalc, which dominated the CP/M spreadsheet market and competed strongly in MS-DOS markets. Autodesk’s AutoCAD also debuted on CP/M. A variety of compilers and interpreters for languages such as BASIC, Turbo Pascal, FORTRAN, and PL/I were accessible, featuring early offerings from Microsoft.

Many CP/M programs included installation utilities that adapted software to different hardware platforms. For instance, users of the Kaypro II converted software originally formatted for Xerox 820 disks into Kaypro-compatible disk formats. The availability of BASIC source code combined with minimal copy protection facilitated software portability. Unlike other contemporary systems that employed proprietary disk formats for copy prevention, CP/M prioritized file compatibility across software; disks that could not be read typically indicated non-CP/M formats.

Due to limited standardized graphics capabilities, video gaming on CP/M was mostly text-based; however, titles like Telengard, Gorillas, Hamurabi, Lunar Lander, along with interactive fiction series such as Zork and Colossal Cave Adventure were successfully ported. Infocom consistently released games compatible with CP/M. Lifeboat Associates distributed user-developed freeware including XMODEM, which enabled dependable file transfers over modems. The outline processor KAMAS also originated within the CP/M environment.

Transient Program Area

Within CP/M systems designed for the 8080, 8085, and Z80 processors, the memory segment ranging from hexadecimal address 0100 up to just before the address held at 0006H (which marks the lowest BDOS address) is designated as the Transient Program Area (TPA), available for use by application software. Although these CPUs supported addressing up to 64 KB, the actual TPA size depended on system architecture since portions of the address space were frequently allocated to BIOS ROMs or video memory. To achieve larger TPAs, bank switching was employed to interchange ROM or video memory as necessary. CP/M 3.0 further enhanced this by permitting segments of BDOS to reside within bank-switched memory regions.

Debugging application

CP/M featured a Dynamic Debugging Tool known as DDT, which allowed users to inspect and modify memory contents and program components, as well as execute code incrementally for detailed analysis.

Resident programs

Originally, CP/M did not support terminate-and-stay-resident (TSR) utilities similar to those in DOS. Nevertheless, developers could extend system capabilities by intercepting operating system calls, resulting in auxiliary desk accessory programs like SmartKey, a keyboard enhancement that assigned strings to specific keys. With the release of CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced, enabling system enhancements without relying on transient programs. Additionally, third-party vendors retrofitted comparable solutions such as Resident System Modules (RSMs) for CP/M 2.2.

Software installation

Although CP/M standardized interfaces for disk and console input/output, individual applications still required installation procedures to leverage hardware peripherals like printers and terminals. Device control often depended on manufacturer-specific escape sequences—for instance, commands to activate bold text varied significantly across different printers. Installation utilities permitted users to choose devices or tailor escape sequences according to desired functions. Due to the absence of centralized device management within the OS, this setup process had to be repeated for each program.

Since printer initialization codes were embedded directly within applications, running software like WordStar on multiple printer models necessitated distinct versions customized for each device. Users were compelled to load the appropriate version corresponding to the printer in use, which introduced operational inefficiencies.

Disk formats

The IBM System/34 and IBM 3740 formats—characterized by 128-byte sectors, single-density recording, and single-sided disks—became the de facto standard for CP/M's 8-inch floppy disk format. Conversely, no uniform 5.25-inch disk format existed for CP/M; manufacturers such as Kaypro, Morrow Designs, Osborne, and others each implemented proprietary formats. Most software was distributed using the Xerox 820 format compatible with systems like the Kaypro II; however, a 1981 InfoWorld estimate noted approximately two dozen prevalent formats that software developers needed to accommodate to maximize market reach. JRT Pascal was available on multiple 5.25-inch disks formatted for North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), and Intertec Superbrain, in addition to an 8-inch version. Ellis Computing supported both Heath variants along with sixteen other 5.25-inch formats including two TRS-80 CP/M variants. Distributors such as Lifetree also adapted CP/M applications for various hardware platforms.

CP/M permitted customization of reserved areas and directory structures on disks and allowed mapping between logical and physical sectors; nevertheless, no universal standard existed for loading configuration parameters from disks formatted on different machines. While nearly all CP/M systems equipped with 8-inch drives could read IBM’s single-sided, single-density format, compatibility beyond that depended heavily on specific disk drives and controllers due to a wide array of floppy disk variations in size, density, sidedness, track count, and sector layouts. Translation utilities facilitated reading disks from other systems with similar formats—for example, the Kaypro II could access disks from TRS-80, Osborne, IBM PC, and Epson QX-10 machines—but certain disk types such as 80-track or hard-sectored disks remained unreadable. Apple II users were restricted to Apple’s GCR format and required Apple-formatted disks or serial transfer methods to obtain CP/M software.

The fragmented nature of the CP/M marketplace—forcing distributors either to stock multiple disk formats or invest in multi-format duplication equipment—stood in contrast to the more unified IBM PC disk standards and contributed significantly to CP/M’s swift decline after 1981.

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

The pioneering computer featuring a 3.5-inch floppy drive was the Sony SMC-70, which operated CP/M 2.2. Other devices supporting CP/M on 3.5-inch media included Commodore 128, Bondwell-2, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (via Montezuma CP/M 2.2). Applied Engineering’s CP/AM for Apple II also accommodated both 3.5-inch floppy disks and RAM disks. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to 3.5-inch models.

File system

File names adhered to the 8.3 convention, allowing up to eight characters, followed by a dot, and then 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; however, certain applications such as MBASIC could generate lowercase filenames that were not easily accessible through the command prompt.

Disk drives were designated by letters like A or B, with files referenced by prefixing the drive letter and colon (e.g., A:FILE.TXT). If no drive letter was specified, the system assumed the current default drive.

File size was expressed in 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 indicate end-of-file, influencing how text editors processed file data.

The introduction of larger removable and fixed disk drives brought disk de-blocking, which increased the number of blocks per allocation unit and enabled support for larger files. This improvement raised the minimum allocation unit from 1 KB on single-density disks to as much as 32 KB on newer drives, resulting in inefficiencies when handling numerous small files.

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

Instead of subdirectories, CP/M 2.2 organized files using sixteen numbered user areas. Users could switch between these areas with the "USER X" command (where X ranges from 0 to 15). User area 0 was the default and accessible by all users; other user areas segregated files on a per-user basis but did not provide true security. This system facilitated file organization on hard disks and enabled task separation—for example, isolating data entry from billing operations on a single machine—thereby improving workflow without implementing complex multi-user security mechanisms.

Graphics

While S-100 systems capable of graphics existed since the S-100 bus became commercially available, CP/M did not have standardized graphics support until 1982 with the advent of GSX. Due to memory constraints, graphics usage was rare on 8-bit CP/M machines, which primarily rendered simple ASCII art charts and diagrams in text mode or through custom character set implementations. Certain models, such as the Kaypro series and TRS-80 Model 4, offered block graphics characters accessible to programmers using assembler or BASIC. The TRS-80 Model 4 could also display graphics at 640×240 resolution when equipped with an optional high-resolution graphics board.

Official

Several companies released official CP/M enhancements derived from Digital Research's source code. An example is IMDOS for the IMSAI 8080, a clone of the Altair 8800.

Compatible

A variety of independently developed CP/M-compatible operating systems emerged without utilizing Digital Research code, including:

  • Cromemco CDOS by Cromemco
  • MSX-DOS for MSX computers, capable of running CP/M applications
  • Epson QX-10 offered either CP/M or compatible TPM-II/TPM-III
  • The British SAM Coupé featured an optional Pro-DOS compatible with CP/M-2.2
  • Amstrad/Schneider CPC 6xx and PCW series were bundled with CP/M disk sets
  • Husky (computer) ran DEMOS, a ROM-based loader supporting many CP/M programs
  • ZSDOS, created by Harold F. Bower and Cameron W. Cotrill, served as a replacement BDOS for CP/M-80 version 2.2
  • CPMish is a free and open-source CP/M 2.2-compatible OS initially developed without Digital Research code; since 2022 it has incorporated some original DR CP/M components under license from Lineo president Bryan Sparks
  • LokiOS, released 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 modular OS components that can be swapped dynamically
  • 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 introduced substantial enhancements, exemplified by TurboDOS, which supported multi-processor configurations.

Eastern Bloc Variants

In the former Eastern Bloc, numerous CP/M-80 derivatives were developed under various designations, including SCP (Single User Control Program), 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, CP/M-86 versions such as SCP1700, CP/K, and K8918-OS were produced. These variants were manufactured by entities like the East German VEB Robotron and other organizations.

Enduring Impact

Several elements of Microsoft Windows can be traced back to compatibility with MS-DOS, which itself was designed to align with CP/M. The drive letter assignment system and the 8.3 filename format have their roots in CP/M conventions. Windows' use of wildcard symbols (? and *) derives from CP/M's approach. Reserved device filenames for output redirection such as "PRN:" and "CON:" also originate from CP/M standards. The designation of floppy drives as A and B and hard drives as C is inherited from CP/M practices. The control character ^Z, used to signify end-of-file in text documents, is another legacy from CP/M. Commands like DIR, REN/RENAME, TYPE, and ERA/ERASE in DOS reflect this influence as well. File extensions such as .TXT and .COM continue to be prevalent.

Between 1997 and 1998, Caldera made available certain CP/M 2.2 executables and source code under an open source license. This allowed redistribution and modification of Digital Research files associated with CP/M and MP/M through Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo—then holding these rights—broadened the licensing terms later that year. To mark the 40th anniversary of CP/M in October 2014, the Computer History Museum published early versions of its source code.

As of 2018, both vintage computing hobbyists and select small enterprises continue to develop and maintain systems running CP/M (most commonly 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 (details IBM's choice of Microsoft DOS over Digital Research's CP/M for the IBM PC)
  • CP/M FAQ, comp.os.cpm

External links

  1. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Kildall_1980_CPM
  2. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Kildall_1975_BDOS
  3. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named johnson
  4. ↑ ...
  5. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Brown-Strutynski-Wharton_1983
  6. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Strutynski_2010
  7. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named CPM.NYT83
  8. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Kildall_1993
  9. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Kildall.NYT
  10. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named wilkinson19811019
  11. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named wise19820510
  12. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named meyer19820614
  13. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Infoworld 1981
  14. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named dacruz19840427
  15. ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
  16. ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
  17. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Swaine_1997_Entrepreneurship
  18. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named bunnell19820203
  19. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named libes198206