text:
CP/M

CP/M, originally standing for Control Program/Monitor and later Control Program for Microcomputers,  is a mass-market operating system created in 1974 for Intel 8080/85-based microcomputers by Gary Kildall of Digital Research, Inc. CP/M is a disk operating system and its purpose is to organize files on a magnetic storage medium, and to load and run programs stored on a disk. Initially confined to single-tasking on 8-bit processors and no more than 64 kilobytes of memory, later versions of CP/M added multi-user variations and were migrated to 16-bit processors.

The combination of CP/M and S-100 bus computers became an early standard in the microcomputer industry. This computer platform was widely used in business through the late 1970s and into the mid-1980s. CP/M increased the market size for both hardware and software by greatly reducing the amount of programming required to port an application to a new manufacturer's computer. An important driver of software innovation was the advent of (comparatively) low-cost microcomputers running CP/M, as independent programmers and hackers bought them and shared their creations in user groups. CP/M was eventually displaced by DOS following the 1981 introduction of the IBM PC.

Early history
Gary Kildall originally developed CP/M during 1974, as an operating system to run on an Intel Intellec-8 development system, equipped with a Shugart Associates 8-inch floppy-disk drive interfaced via a custom floppy-disk controller. It was written in Kildall's own PL/M (Programming Language for Microcomputers). Various aspects of CP/M were influenced by the TOPS-10 operating system of the DECsystem-10 mainframe computer, which Kildall had used as a development environment. An early outside licensee of CP/M was Gnat Computers, an early microcomputer developer out of San Diego, California. In 1977, the company was granted the license to use CP/M 1.0 for any micro they desired for $90. Within the year, demand for CP/M was so high that Digital Research was able to increase the license to tens of thousands of dollars.

Under Kildall's direction, the development of CP/M 2.0 was mostly carried out by John Pierce in 1978. Kathryn Strutynski, a friend of Kildall from Naval Postgraduate School (NPS), became the fourth employee of Digital Research Inc. in early 1979. She started by debugging CP/M 2.0, and later became influential as key developer for CP/M 2.2 and CP/M Plus. Other early developers of the CP/M base included Robert "Bob" Silberstein and David "Dave" K. Brown.

CP/M originally stood for "Control Program/Monitor", a name which implies a resident monitor—a primitive precursor to the operating system. However, during the conversion of CP/M to a commercial product, trademark registration documents filed in November 1977 gave the product's name as "Control Program for Microcomputers". The CP/M name follows a prevailing naming scheme of the time, as in Kildall's PL/M language, and Prime Computer's PL/P (Programming Language for Prime), both suggesting IBM's PL/I; and IBM's CP/CMS operating system, which Kildall had used when working at the NPS. This renaming of CP/M was part of a larger effort by Kildall and his wife with business partner, Dorothy McEwen to convert Kildall's personal project of CP/M and the Intel-contracted PL/M compiler into a commercial enterprise. The Kildalls intended to establish the Digital Research brand and its product lines as synonymous with "microcomputer" in the consumer's mind, similar to what IBM and Microsoft together later successfully accomplished in making "personal computer" synonymous with their product offerings. Intergalactic Digital Research, Inc. was later renamed via a corporation change-of-name filing to Digital Research, Inc.

Initial success

By September 1981, Digital Research had sold more than $260,000$ CP/M licenses; InfoWorld stated that the actual market was likely larger because of sublicenses. Many different companies produced CP/M-based computers for many different markets; the magazine stated that "CP/M is well on its way to establishing itself as the small-computer operating system". The companies chose to support CP/M because of its large library of software. The Xerox 820 ran the operating system because "where there are literally thousands of programs written for it, it would be unwise not to take advantage of it", Xerox said. (Xerox included a Howard W. Sams CP/M manual as compensation for Digital Research's documentation, which InfoWorld in 1982 described as atrocious. ) By 1984, Columbia University used the same source code to build Kermit binaries for more than a dozen different CP/M systems, plus a generic version. The operating system was described as a "software bus", allowing multiple programs to interact with different hardware in a standardized way. Programs written for CP/M were typically portable among different machines, usually requiring only the specification of the escape sequences for control of the screen and printer. This portability made CP/M popular, and much more software was written for CP/M than for operating systems that ran on only one brand of hardware. One restriction on portability was that certain programs used the extended instruction set of the Z80 processor and would not operate on an 8080 or 8085 processor. Another was graphics routines, especially in games and graphics programs, which were generally machine-specific as they used direct hardware access for speed, bypassing the OS and BIOS (this was also a common problem in early DOS machines).

Bill Gates claimed that the Apple II with a Z-80 SoftCard was the single most-popular CP/M hardware platform. Many different brands of machines ran the operating system, some notable examples being the Altair 8800, the IMSAI 8080, the Osborne 1 and Kaypro luggables, and MSX computers. The best-selling CP/M-capable system of all time was probably the Amstrad PCW. In the UK, CP/M was also available on Research Machines educational computers (with the CP/M source code published as an educational resource), and for the BBC Micro when equipped with a Z80 co-processor. Furthermore, it was available for the Amstrad CPC series, the Commodore 128, TRS-80, and later models of the ZX Spectrum. CP/M 3 was also used on the NIAT, a custom handheld computer designed for A. C. Nielsen's internal use with 1 MB of SSD memory.

Multi-user
In 1979, a multi-user compatible derivative of CP/M was released. MP/M allowed multiple users to connect to a single computer, using multiple terminals to provide each user with a screen and keyboard. Later versions ran on 16-bit processors.

CP/M Plus
The last 8-bit version of CP/M was version 3, often called CP/M Plus, released in 1983. Its BDOS was designed by Brown. It incorporated the bank switching memory management of MP/M in a single-user single-task operating system compatible with CP/M 2.2 applications. CP/M 3 could therefore use more than 64 KB of memory on an 8080 or Z80 processor. The system could be configured to support date stamping of files. The operating system distribution software also included a relocating assembler and linker. CP/M 3 was available for the last generation of 8-bit computers, notably the Amstrad PCW, the Amstrad CPC, the ZX Spectrum +3, the Commodore 128, MSX machines and the Radio Shack TRS-80 Model 4.

16-bit versions

There were versions of CP/M for some 16-bit CPUs as well.

The first version in the 16-bit family was CP/M-86 for the Intel 8086 in November 1981. Kathryn Strutynski was the project manager for the evolving CP/M-86 line of operating systems. At this point, the original 8-bit CP/M became known by the retronym CP/M-80 to avoid confusion.

CP/M-86 was expected to be the standard operating system of the new IBM PCs, but DRI and IBM were unable to negotiate development and licensing terms. IBM turned to Microsoft instead, and Microsoft delivered PC DOS based on 86-DOS. Although CP/M-86 became an option for the IBM PC after DRI threatened legal action, it never overtook Microsoft's system. Most customers were repelled by the significantly greater price IBM charged for CP/M-86 over PC DOS (US$240 and US$40, respectively).

When Digital Equipment Corporation (DEC) put out the Rainbow 100 to compete with IBM, it came with CP/M-80 using a Z80 chip, CP/M-86 or MS-DOS using an 8088 microprocessor, or CP/M-86/80 using both. The Z80 and 8088 CPUs ran concurrently. A benefit of the Rainbow was that it could continue to run 8-bit CP/M software, preserving a user's possibly sizable investment as they moved into the 16-bit world of MS-DOS. A similar dual-processor adaption for the CompuPro System 816 was named CP/M 8-16. The CP/M-86 adaptation for the 8085/8088-based Zenith Z-100 also supported running programs for both of its CPUs.

Soon following CP/M-86, another 16-bit version of CP/M was CP/M-68K for the Motorola 68000. The original version of CP/M-68K in 1982 was written in Pascal/MT+68k, but it was ported to C later on. CP/M-68K, already running on the Motorola EXORmacs systems, was initially to be used in the Atari ST computer, but Atari decided to go with a newer disk operating system called GEMDOS. CP/M-68K was also used on the SORD M68 and M68MX computers.

In 1982, there was also a port from CP/M-68K to the 16-bit Zilog Z8000 for the Olivetti M20, written in C, named CP/M-8000.

These 16-bit versions of CP/M required application programs to be re-compiled for the new CPUs. Some programs written in assembly language could be automatically translated for a new processor. One tool for this was Digital Research's XLT86, which translated .ASM source code for the Intel 8080 processor into .A86 source code for the Intel 8086. The translator would also optimize the output for code size and take care of calling conventions, so that CP/M-80 and MP/M-80 programs could be ported to the CP/M-86 and MP/M-86 platforms automatically. XLT86 itself was written in PL/I-80 and was available for CP/M-80 platforms as well as for VAX/VMS.

Displacement by MS-DOS
Many expected that CP/M would be the standard operating system for 16-bit computers. In 1980 IBM approached Digital Research, at Bill Gates' suggestion, to license a forthcoming version of CP/M for its new product, the IBM Personal Computer. Upon the failure to obtain a signed non-disclosure agreement, the talks failed, and IBM instead contracted with Microsoft to provide an operating system. The resulting product, MS-DOS, soon began outselling CP/M.

Many of the basic concepts and mechanisms of early versions of MS-DOS resembled those of CP/M. Internals like file-handling data structures were identical, and both referred to disk drives with a letter (, , etc.). MS-DOS's main innovation was its FAT file system. This similarity made it easier to port popular CP/M software like WordStar and dBase. However, CP/M's concept of separate user areas for files on the same disk was never ported to MS-DOS. Since MS-DOS had access to more memory (as few IBM PCs were sold with less than 64 KB of memory, while CP/M could run in 16 KB if necessary), more commands were built into the command-line shell, making MS-DOS somewhat faster and easier to use on floppy-based computers.

Although one of the first peripherals for the IBM PC was a SoftCard-like expansion card that let it run 8-bit CP/M software, InfoWorld stated in 1984 that efforts to introduce CP/M to the home market had been largely unsuccessful and most CP/M software was too expensive for home users. In 1986 the magazine stated that Kaypro had stopped production of 8-bit CP/M-based models to concentrate on sales of MS-DOS compatible systems, long after most other vendors had ceased production of new equipment and software for CP/M. CP/M rapidly lost market share as the microcomputing market moved to the IBM-compatible platform, and it never regained its former popularity. Byte magazine, at the time one of the leading industry magazines for microcomputers, essentially ceased covering CP/M products within a few years of the introduction of the IBM PC. For example, in 1983 there were still a few advertisements for S-100 boards and articles on CP/M software, but by 1987 these were no longer found in the magazine.

Later versions of CP/M-86 made significant strides in performance and usability and were made compatible with MS-DOS. To reflect this compatibility the name was changed, and CP/M-86 became DOS Plus, which in turn became DR-DOS.

ZCPR
ZCPR (the Z80 Command Processor Replacement) was introduced on 2 February 1982 as a drop-in replacement for the standard Digital Research console command processor (CCP) and was initially written by a group of computer hobbyists who called themselves "The CCP Group". They were Frank Wancho, Keith Petersen (the archivist behind Simtel at the time), Ron Fowler, Charlie Strom, Bob Mathias, and Richard Conn. Richard was, in fact, the driving force in this group (all of whom maintained contact through email).

ZCPR1 was released on a disk put out by SIG/M (Special Interest Group/Microcomputers), a part of the Amateur Computer Club of New Jersey.

ZCPR2 was released on 14 February 1983. It was released as a set of ten disks from SIG/M. ZCPR2 was upgraded to 2.3, and also was released in 8080 code, permitting the use of ZCPR2 on 8080 and 8085 systems.

ZCPR3 was released on 14 July 1984, as a set of nine disks from SIG/M. The code for ZCPR3 could also be compiled (with reduced features) for the 8080 and would run on systems that did not have the requisite Z80 microprocessor. Features of ZCPR as of version 3 included shells, aliases, I/O redirection, flow control, named directories, search paths, custom menus, passwords, and online help. In January 1987, Richard Conn stopped developing ZCPR, and Echelon asked Jay Sage (who already had a privately enhanced ZCPR 3.1) to continue work on it. Thus, ZCPR 3.3 was developed and released. ZCPR 3.3 no longer supported the 8080 series of microprocessors, and added the most features of any upgrade in the ZCPR line. ZCPR 3.3 also included a full complement of utilities with considerably extended capabilities. While enthusiastically supported by the CP/M user base of the time, ZCPR alone was insufficient to slow the demise of CP/M.

Hardware model

A minimal 8-bit CP/M system would contain the following components:
 * A computer terminal using the ASCII character set
 * An Intel 8080 (and later the 8085) or Zilog Z80 microprocessor
 * The NEC V20 and V30 processors support an 8080-emulation mode that can run 8-bit CP/M on a PC-DOS/MS-DOS computer so equipped, though any PC clone could run CP/M-86.
 * At least 16 kilobytes of RAM, beginning at address 0
 * A means to bootstrap the first sector of the diskette
 * At least one floppy-disk drive

The only hardware system that CP/M, as sold by Digital Research, would support was the Intel 8080 Development System. Manufacturers of CP/M-compatible systems customized portions of the operating system for their own combination of installed memory, disk drives, and console devices. CP/M would also run on systems based on the Zilog Z80 processor since the Z80 was compatible with 8080 code. While the Digital Research distributed core of CP/M (BDOS, CCP, core transient commands) did not use any of the Z80-specific instructions, many Z80-based systems used Z80 code in the system-specific BIOS, and many applications were dedicated to Z80-based CP/M machines.

Digital Research subsequently partnered with Zilog and American Microsystems to produce Personal CP/M, a ROM-based version of the operating system aimed at lower-cost systems that could potentially be equipped without disk drives. First featured in the Sharp MZ-800, a cassette-based system with optional disk drives, Personal CP/M was described as having been "rewritten to take advantage of the enhanced Z-80 instruction set" as opposed to preserving portability with the 8080. American Microsystems announced a Z80-compatible microprocessor, the S83, featuring 8 KB of in-package ROM for the operating system and BIOS, together with comprehensive logic for interfacing with 64-kilobit dynamic RAM devices. Unit pricing of the S83 was quoted as $32 in 1,000 unit quantities.

On most machines the bootstrap was a minimal bootloader in ROM combined with some means of minimal bank switching or a means of injecting code on the bus (since the 8080 needs to see boot code at Address 0 for start-up, while CP/M needs RAM there); for others, this bootstrap had to be entered into memory using front-panel controls each time the system was started.

CP/M used the 7-bit ASCII set. The other 128 characters made possible by the 8-bit byte were not standardized. For example, one Kaypro used them for Greek characters, and Osborne machines used the 8th bit set to indicate an underlined character. WordStar used the 8th bit as an end-of-word marker. International CP/M systems most commonly used the ISO 646 norm for localized character sets, replacing certain ASCII characters with localized characters rather than adding them beyond the 7-bit boundary.

Components
In the 8-bit versions, while running, the CP/M operating system loaded into memory had three components:

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

The BIOS and BDOS were memory-resident, while the CCP was memory-resident unless overwritten by an application, in which case it was automatically reloaded after the application finished running. A number of transient commands for standard utilities were also provided. The transient commands resided in files with the extension .COM on disk.

The BIOS directly controlled hardware components other than the CPU and main memory. It contained functions such as character input and output and the reading and writing of disk sectors. The BDOS implemented the CP/M file system and some input/output abstractions (such as redirection) on top of the BIOS. The CCP took user commands and either executed them directly (internal commands such as DIR to show a directory or ERA to delete a file) or loaded and started an executable file of the given name (transient commands such as PIP.COM to copy files or STAT.COM to show various file and system information). Third-party applications for CP/M were also essentially transient commands.

The BDOS, CCP and standard transient commands were the same in all installations of a particular revision of CP/M, but the BIOS portion was always adapted to the particular hardware.

Adding memory to a computer, for example, meant that the CP/M system had to be reinstalled to allow transient programs to use the additional memory space. A utility program (MOVCPM) was provided with system distribution that allowed relocating the object code to different memory areas. The utility program adjusted the addresses in absolute jump and subroutine call instructions to new addresses required by the new location of the operating system in processor memory. This newly patched version could then be saved on a new disk, allowing application programs to access the additional memory made available by moving the system components. Once installed, the operating system (BIOS, BDOS and CCP) was stored in reserved areas at the beginning of any disk which would be used to boot the system. On start-up, the bootloader (usually contained in a ROM firmware chip) would load the operating system from the disk in drive.

By modern standards CP/M was primitive, owing to the extreme constraints on program size. With version 1.0 there was no provision for detecting a changed disk. If a user changed disks without manually rereading the disk directory the system would write on the new disk using the old disk's directory information, ruining the data stored on the disk. From version 1.1 or 1.2 onwards, changing a disk then trying to write to it before its directory was read would cause a fatal error to be signalled. This avoided overwriting the disk but required a reboot and loss of the data that was to be stored on disk.

The majority of the complexity in CP/M was isolated in the BDOS, and to a lesser extent, the CCP and transient commands. This meant that by porting the limited number of simple routines in the BIOS to a particular hardware platform, the entire OS would work. This significantly reduced the development time needed to support new machines, and was one of the main reasons for CP/M's widespread use. Today this sort of abstraction is common to most OSs (a hardware abstraction layer), but at the time of CP/M's birth, OSs were typically intended to run on only one machine platform, and multilayer designs were considered unnecessary.

Console Command Processor

The Console Command Processor, or CCP, accepted input from the keyboard and conveyed results to the terminal. CP/M itself would work with either a printing terminal or a video terminal. All CP/M commands had to be typed in on the command line. The console would most often display the  prompt, to indicate the current default disk drive. When used with a video terminal, this would usually be followed by a blinking cursor supplied by the terminal. The CCP would await input from the user. A CCP internal command, of the form drive letter followed by a colon, could be used to select the default drive. For example, typing  and pressing enter at the command prompt would change the default drive to B, and the command prompt would then become   to indicate this change.

CP/M's command-line interface was patterned after the operating systems from Digital Equipment, such as RT-11 for the PDP-11 and OS/8 for the PDP-8. Commands took the form of a keyword followed by a list of parameters separated by spaces or special characters. Similar to a Unix shell builtin, if an internal command was recognized, it was carried out by the CCP itself. Otherwise it would attempt to find an executable file on the currently logged disk drive and (in later versions) user area, load it, and pass it any additional parameters from the command line. These were referred to as "transient" programs. On completion, CP/M would reload the part of the CCP that had been overwritten by application programs — this allowed transient programs a larger memory space.

The commands themselves could sometimes be obscure. For instance, the command to duplicate files was named  (Peripheral-Interchange-Program), the name of the old DEC utility used for that purpose. The format of parameters given to a program was not standardized, so that there was no single option character that differentiated options from file names. Different programs could and did use different characters.

The CP/M Console Command Processor includes DIR, ERA, REN, SAVE, TYPE, and USER as built-in commands. Transient commands in CP/M include ASM, DDT, DUMP, ED, LOAD, MOVCPM, PIP, STAT, SUBMIT, and SYSGEN.

CP/M Plus (CP/M Version 3) includes DIR (display list of files from a directory except those marked with the SYS attribute), DIRSYS / DIRS (list files marked with the SYS attribute in the directory), ERASE / ERA (delete a file), RENAME / REN (rename a file), TYPE / TYP (display contents of an ASCII character file), and USER / USE (change user number) as built-in commands: CP/M 3 allows the user to abbreviate the built-in commands. Transient commands in CP/M 3 include 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, or BDOS,  provided access to such operations as opening a file, output to the console, or printing. Application programs would load processor registers with a function code for the operation, and addresses for parameters or memory buffers, and call a fixed address in memory. Since the address was the same independent of the amount of memory in the system, application programs would run the same way for any type or configuration of hardware.

Basic Input Output System

The Basic Input Output System or BIOS, provided the lowest level functions required by the operating system.

These included reading or writing single characters to the system console and reading or writing a sector of data from the disk. The BDOS handled some of the buffering of data from the diskette, but before CP/M 3.0 it assumed a disk sector size fixed at 128 bytes, as used on single-density 8-inch floppy disks. Since most 5.25-inch disk formats used larger sectors, the blocking and deblocking and the management of a disk buffer area was handled by model-specific code in the BIOS.

Customization was required because hardware choices were not constrained by compatibility with any one popular standard. For example, some manufacturers used a separate computer terminal, while others designed a built-in integrated video display system. Serial ports for printers and modems could use different types of UART chips, and port addresses were not fixed. Some machines used memory-mapped I/O instead of the 8080 I/O address space. All of these variations in the hardware were concealed from other modules of the system by use of the BIOS, which used standard entry points for the services required to run CP/M such as character I/O or accessing a disk block. Since support for serial communication to a modem was very rudimentary in the BIOS or may have been absent altogether, it was common practice for CP/M programs that used modems to have a user-installed overlay containing all the code required to access a particular machine's serial port.

Applications
WordStar, one of the first widely used word processors, and dBase, an early and popular database program for microcomputers, were originally written for CP/M. Two early outliners, KAMAS (Knowledge and Mind Amplification System) and its cut-down successor Out-Think (without programming facilities and retooled for 8080/V20 compatibility) were also written for CP/M, though later rewritten for MS-DOS. Turbo Pascal, the ancestor of Borland Delphi, and Multiplan, the ancestor of Microsoft Excel, also debuted on CP/M before MS-DOS versions became available. VisiCalc, the first-ever spreadsheet program, was made available for CP/M. Another company, Sorcim, created its SuperCalc spreadsheet for CP/M, which would go on to become the market leader and de facto standard on CP/M. Supercalc would go on to be a competitor in the spreadsheet market in the MS-DOS world. AutoCAD, a CAD application from Autodesk debuted on CP/M. A host of compilers and interpreters for popular programming languages of the time (such as BASIC, Borland's Turbo Pascal, FORTRAN and even PL/I ) were available, among them several of the earliest Microsoft products.

CP/M software often came with installers that adapted it to a wide variety of computers. The source code for BASIC programs was easily accessible, and most forms of copy protection were ineffective on the operating system. A Kaypro II owner, for example, would obtain software on Xerox 820 format, then copy it to and run it from Kaypro-format disks.

The lack of standardized graphics support limited video games, but various character and text-based games were ported, such as Telengard, Gorillas, Hamurabi, Lunar Lander, along with early interactive fiction including the Zork series and Colossal Cave Adventure. Text adventure specialist Infocom was one of the few publishers to consistently release their games in CP/M format. Lifeboat Associates started collecting and distributing user-written "free" software. One of the first was XMODEM, which allowed reliable file transfers via modem and phone line. Another program native to CP/M was the outline processor KAMAS.

Transient Program Area
The read/write memory between address 0100 hexadecimal and the lowest address of the BDOS was the Transient Program Area (TPA) available for CP/M application programs. Although all Z80 and 8080 processors could address 64 kilobytes of memory, the amount available for application programs could vary, depending on the design of the particular computer. Some computers used large parts of the address space for such things as BIOS ROMs, or video display memory. As a result, some systems had more TPA memory available than others. Bank switching was a common technique that allowed systems to have a large TPA while switching out ROM or video memory space as needed. CP/M 3.0 allowed parts of the BDOS to be in bank-switched memory as well.

Debugging application
CP/M came with a Dynamic Debugging Tool, nicknamed DDT (after the insecticide, i.e. a bug-killer), which allowed memory and program modules to be examined and manipulated, and allowed a program to be executed one step at a time.

Resident programs
CP/M originally did not support the equivalent of terminate and stay resident (TSR) programs as under DOS. Programmers could write software that could intercept certain operating system calls and extend or alter their functionality. Using this capability, programmers developed and sold auxiliary desk accessory programs, such as SmartKey, a keyboard utility to assign any string of bytes to any key. CP/M 3, however, added support for dynamically loadable Resident System Extensions (RSX). A so-called null command file could be used to allow CCP to load an RSX without a transient program. Similar solutions like RSMs (for Resident System Modules) were also retrofitted to CP/M 2.2 systems by third-parties.

Software installation
Although CP/M provided some hardware abstraction to standardize the interface to disk I/O or console I/O, application programs still typically required installation to make use of all the features of such equipment as printers and terminals. Often these were controlled by escape sequences which had to be altered for different devices. For example, the escape sequence to select bold face on a printer would have differed among manufacturers, and sometimes among models within a manufacturer's range. This procedure was not defined by the operating system; a user would typically run an installation program that would either allow selection from a range of devices, or else allow feature-by-feature editing of the escape sequences required to access a function. This had to be repeated for each application program, since there was no central operating system service provided for these devices.

The initialization codes for each model of printer had to be written into the application. To use a program such as Wordstar with more than one printer (say, a fast dot-matrix printer or a slower but presentation-quality daisy wheel printer), a separate version of Wordstar had to be prepared, and one had to load the Wordstar version that corresponded to the printer selected (and exiting and reloading to change printers).

Disk formats
IBM System/34 and IBM 3740's single-density, single-sided format is CP/M's standard 8-inch floppy-disk format. No standard 5.25-inch CP/M disk format exists, with Kaypro, Morrow Designs, Osborne, and others each using their own. InfoWorld estimated in September 1981 that "about two dozen formats were popular enough that software creators had to consider them to reach the broadest possible market". JRT Pascal, for example, provided versions on 5.25-inch disk for North Star, Osborne, Apple, Heath hard sector and soft sector, and Superbrain, and one 8-inch version. Ellis Computing also offered its software for both Heath formats, and 16 other 5.25-inch formats including two different TRS-80 CP/M modifications.

Certain disk formats were more popular than others. Most software was available in the Xerox 820 format, and other computers such as the Kaypro II were compatible with it. No single manufacturer, however, prevailed in the 5.25-inch era of CP/M use, and disk formats were often not portable between hardware manufacturers. A software manufacturer had to prepare a separate version of the program for each brand of hardware on which it was to run. With some manufacturers (Kaypro is an example), there was not even standardization across the company's different models. Because of this situation, disk format translation programs, which allowed a machine to read many different formats, became popular and reduced the confusion, as did programs like Kermit, which allowed transfer of data and programs from one machine to another using the serial ports that most CP/M machines had.

Various formats were used depending on the characteristics of particular systems and to some degree the choices of the designers. CP/M supported options to control the size of reserved and directory areas on the disk, and the mapping between logical disk sectors (as seen by CP/M programs) and physical sectors as allocated on the disk. There were many ways to customize these parameters for every system but once they had been set, no standardized way existed for a system to load parameters from a disk formatted on another system.

The degree of portability between different CP/M machines depended on the type of disk drive and controller used since many different floppy types existed in the CP/M era in both 8-inch and 5.25-inch format. Disks could be hard or soft sectored, single or double density, single or double sided, 35 track, 40 track, 77 track, or 80 track, and the sector layout, size and interleave could vary widely as well. Although translation programs could allow the user to read disk types from different machines, the drive type and controller were also factors. By 1982, soft-sector, single-sided, 40-track 5.25-inch disks had become the most popular format to distribute CP/M software on as they were used by the most common consumer-level machines of that time, such as the Apple II, TRS-80, Osborne 1, Kaypro II, and IBM PC. A translation program allowed the user to read any disks on his machine that had a similar format—for example, the Kaypro II could read TRS-80, Osborne, IBM PC, and Epson disks. Other disk types such as 80 track or hard sectored were completely impossible to read. The first half of double-sided disks (like those of the Epson QX-10) could be read because CP/M accessed disk tracks sequentially with track 0 being the first (outermost) track of side 1 and track 79 (on a 40-track disk) being the last (innermost) track of side 2. Apple II users were unable to use anything but Apple's GCR format and so had to obtain CP/M software on Apple format disks or else transfer it via serial link.

The fragmented CP/M market, requiring distributors either to stock multiple formats of disks or to invest in multiformat duplication equipment, compared with the more standardized IBM PC disk formats, was a contributing factor to the rapid obsolescence of CP/M after 1981.

One of the last notable CP/M-capable machines to appear was the Commodore 128 in 1985, which had a Z80 for CP/M support in addition to its native mode using a 6502-derivative CPU. Using CP/M required either a 1571 or 1581 disk drive which could read soft-sector 40-track MFM-format disks.

The first computer to use a 3.5-inch floppy drive, the Sony SMC-70, ran CP/M 2.2. The Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX and TRS-80 Model 4 (running Montezuma CP/M 2.2) also supported the use of CP/M with 3.5-inch floppy disks. CP/AM, Applied Engineering's version of CP/M for the Apple II, also supported 3.5-inch disks (as well as RAM disks on RAM cards compatible with the Apple II Memory Expansion Card). The Amstrad PCW ran CP/M using 3-inch floppy drives at first, and later switched to the 3.5 inch drives.

File system
File names were specified as a string of up to eight characters, followed by a period, followed by a file name extension of up to three characters ("8.3" filename format). The extension usually identified the type of the file. For example,  indicated an executable program file, and   indicated a file containing ASCII text. Characters in filenames entered at the command prompt were converted to upper case, but this was not enforced by the operating system. Programs (MBASIC is a notable example) were able to create filenames containing lower-case letters, which then could not easily be referenced at the command line.

Each disk drive was identified by a drive letter, for example, drive  and drive. To refer to a file on a specific drive, the drive letter was prefixed to the file name, separated by a colon, e.g.,. With no drive letter prefixed, access was to files on the current default drive.

File size was specified as the number of 128-byte records (directly corresponding to disk sectors on 8-inch drives) occupied by a file on the disk. There was no generally supported way of specifying byte-exact file sizes. The current size of a file was maintained in the file's File Control Block (FCB) by the operating system. Since many application programs (such as text editors) prefer to deal with files as sequences of characters rather than as sequences of records, by convention text files were terminated with a control-Z character (ASCII SUB, hexadecimal 1A). Determining the end of a text file therefore involved examining the last record of the file to locate the terminating control-Z. This also meant that inserting a control-Z character into the middle of a file usually had the effect of truncating the text contents of the file.

With the advent of larger removable and fixed disk drives, disk de-blocking formulas were employed which resulted in more disk blocks per logical file allocation block. While this allowed for larger file sizes, it also meant that the smallest file which could be allocated increased in size from 1 KB (on single-density drives) to 2 KB (on double-density drives) and so on, up to 32 KB for a file containing only a single byte. This made for inefficient use of disk space if the disk contained a large number of small files.

File modification time stamps were not supported in releases up to CP/M 2.2, but were an optional feature in MP/M and CP/M 3.0.

CP/M 2.2 had no subdirectories in the file structure, but provided 16 numbered user areas to organize files on a disk. To change user one had to simply type "User X" at the command prompt, X being the user number. Security was non-existent and considered unnecessary on a personal computer. The user area concept was to make the single-user version of CP/M somewhat compatible with multi-user MP/M systems. A common patch for the CP/M and derivative operating systems was to make one user area accessible to the user independent of the currently set user area. A USER command allowed the user area to be changed to any area from 0 to 15. User 0 was the default. If one changed to another user, such as USER 1, the material saved on the disk for this user would only be available to USER 1; USER 2 would not be able to see it or access it. However, files stored in the USER 0 area were accessible to all other users; their location was specified with a prefatory path, since the files of USER 0 were only visible to someone logged in as USER 0. The user area feature arguably had little utility on small floppy disks, but it was useful for organizing files on machines with hard drives. The intent of the feature was to ease use of the same computer for different tasks. For example, a secretary could do data entry, then, after switching USER areas, another employee could use the machine to do billing without their files intermixing.

Graphics
Although graphics-capable S-100 systems existed from the commercialization of the S-100 bus, CP/M did not provide any standardized graphics support until 1982 with GSX (Graphics System Extension). Owing to the small amount of available memory, graphics was never a common feature associated with 8-bit CP/M operating systems. Most systems could only display rudimentary ASCII art charts and diagrams in text mode or by using a custom character set. Some computers in the Kaypro line and the TRS-80 Model 4 had video hardware supporting block graphics characters, and these were accessible to assembler programmers and BASIC programmers using the CHR$ command. The Model 4 could display 640 by 240 pixel graphics with an optional high resolution board.

Official
Some companies made official enhancements of CP/M based on Digital Research source code. An example is IMDOS for the IMSAI 8080 computer made by IMS Associates, Inc., a clone of the famous Altair 8800.

Compatible
Other CP/M compatible OSes were developed independently and made no use of Digital Research code. Some contemporary examples were:

 * Cromemco CDOS from Cromemco
 * MSX-DOS for the MSX range of computers is CP/M-compatible and can run CP/M programs.
 * The Epson QX-10 shipped with a choice of CP/M or the compatible TPM-II or TPM-III.
 * The British ZX Spectrum compatible SAM Coupé had an optional CP/M-2.2 compatible OS called Pro-DOS.
 * The Amstrad/Schneider CPC series 6xx (disk-based) and PCW series computers were bundled with an CP/M disk pack.
 * The Husky (computer) ran a ROM-based menu-driven program loader called DEMOS which could run many CP/M applications.
 * ZSDOS is a replacement BDOS for CP/M-80 2.2 written by Harold F. Bower and Cameron W. Cotrill.
 * CPMish is a new FOSS CP/M 2.2-compatible operating system which originally contained no DR code. It includes ZSDOS as its BDOS and ZCPR (see earlier) as the command processor. Since Bryan Sparks, the president of DR owners Lineo, granted permission in 2022 to modify and redistribute CP/M code, developer David Given is updating CPMish with some parts of the original DR CP/M.
 * LokiOS is a CP/M 2.2 compatible OS. Version 0.9 was publicly released in 2023 by David Kitson as a solo-written Operating System exercise, intended for the Open Spectrum Project and includes source code for the BIOS, BDOS and Command-line interface as well as other supporting applications and drivers. The distribution also includes original DR Source code and a utility to allow users to hot-swap OS components (e.g., BDOS, CCP) on the fly.

Enhancements
Some CP/M compatible operating systems extended the basic functionality so far that they far exceeded the original, for example the multi-processor capable TurboDOS.

Eastern bloc
A number of CP/M-80 derivatives existed in the former Eastern Bloc under various names, 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 and others. There were also CP/M-86 derivatives named SCP1700, CP/K and K8918-OS. They were produced by the East German VEB Robotron and others.

Legacy
A number of behaviors exhibited by Microsoft Windows are a result of backward compatibility with MS-DOS, which in turn attempted some backward compatibility with CP/M. The drive letter and 8.3 filename conventions in MS-DOS (and early Windows versions) were originally adopted from CP/M. The wildcard matching characters used by Windows (? and *) are based on those of CP/M, as are the reserved filenames used to redirect output to a printer ("PRN:"), and the console ("CON:"). The drive names A and B were used to designate the two floppy disk drives that CP/M systems typically used; when hard drives appeared, they were designated C, which survived into MS-DOS as the  command prompt. The control character  marking the end of some text files can also be attributed to CP/M. Various commands in DOS were modelled after CP/M commands; some of them even carried the same name, like DIR, REN/RENAME, or TYPE (and ERA/ERASE in DR-DOS). File extensions like  or   are still used to identify file types on many operating systems.

In 1997 and 1998, Caldera released some CP/M 2.2 binaries and source code under an open source license, also allowing the redistribution and modification of further collected Digital Research files related to the CP/M and MP/M families through Tim Olmstead's "The Unofficial CP/M Web site" since 1997. After Olmstead's death on 12 September 2001, the distribution license was refreshed and expanded by Lineo, who had meanwhile become the owner of those Digital Research assets, on 19 October 2001. In October 2014, to mark the 40th anniversary of the first presentation of CP/M, the Computer History Museum released early source code versions of CP/M.

, there are a number of active vintage, hobby and retro-computer people and groups, and some small commercial businesses, still developing and supporting computer platforms that use CP/M (mostly 2.2) as the host operating system.

title: CP/M


text:
Talk:CP/M

Graphics
I am not sure if this (from the "History" section) is correct: "There were no operating system support for graphics (images) with 8-bit versions of CP/M. While graphics-capable S100 systems existed from the commercialization of the S100 bus, CP/M did not provide any standardized graphics support until the release of CP/M 3.0 with GEM graphics extensions. Owing to the small memory available, graphics was never a common feature associated with 8-bit CP/M operating systems.". On the (8-bit) Amstrad PCW8256, there was something called GSX (Graphics Systems eXtension?), a library providing graphical drawing functions. I thought this was part of CP/M, but I am not sure, and did not find anything on the net about it. Ahy1 12:45, 23 April 2006 (UTC)

 * You are quite right. Graphical Environment Manager has a chapter on GSX. Though, I'm not sure about the actualy timeframe. See also http://www.seasip.demon.co.uk/Cpm/gsx.html. --Frodet 15:16, 23 April 2006 (UTC)

 * Well, CP/M 3.0 was still an 8-bit OS, so was CP/M Plus, as such the above statement that CP/M lacked graphic screen output only holds true for CP/M 2.2 and earlier. And even then this limitation only strictly applies to the OS core, a lot of manufacturers added their own interfaces to CP/M for system calls to their proprietary graphic routines (robotron and their PC1715 as well as A5105 come to mind). There is probably a need to distinguish between quasi-graphics using ASCII codes >127d and full graphics, allowing to access the video hardware through high-level routines for pixel set, circle, line draw, colours etc pp. Of the latter I know that the robotron A5105 was capable of, however, since the commando economy and the political system that made robotron possible in the first place, vanished in 1990, nothing I know of, has ever been implemented in application software what would otherwise have been a full-graphics capable CP/M 2.2 clone. --schubi42 1;55, 28 September 2011 (IST) — Preceding unsigned comment added by 109.78.127.110 (talk) 00:57, 28 September 2011 (UTC)

 * Contrary to popular belief, GSX was VERY widespread back in the day, almost every CP/M installation came with it. There was an article in a German computer magazine referring to its widespread use, and of its role in portability of graphics code. All the CP/M systems I've seen back in the day had GSX. 2003:C8:BF07:4293:A587:A8A0:E76A:80CB (talk) 10:10, 5 May 2024 (UTC)
 * I missed out on this "GSX" - none of the machines I used (Osborne, Kaypro, Ibex, Megatel Quark) had GSX. How useful would graphics even be with only 64 K of CPU address space? --Wtshymanski (talk) 02:33, 15 May 2024 (UTC)

Open-source Release unmentioned...
I notice that nobody has mentioned the fact that CP/M was released as Open Source software under a BSD-like licence in October 2001...

 * Was it? The FAQ says the source has been released, but alterations and commercial redistrubtution is denied. // Liftarn (talk)

File names and extensions
This is nitpicking, but the current article says "File names consisted of up to 8 characters, a period, then up to three characters as a file name extension." If I recall correctly, the name was eight characters (padded by spaces, not NUL terminated), and each file also had a three character extension (to the name). There was a convention that commands allowed you to write the name and extension together, separated by a period, but the period wasn't part of the name. In a way this was more like the Mac's hidden type and creator codes. Nowadays the period has literally become part of the name, and (alas) the information about the kind of information in a file has become conflated with what it's called. RPTB1 (talk) 15:18, 10 January 2008 (UTC)
 * Well, the directory on disk did not store the "." character in the file name but aside from that, there was practically no way to access a file without using the ., if the file had an extension. Andy Johnson-Laird in the "Programmer's CP/M Handbook" confirms that the file name stored on disk was 8+3 characters and that unused characters are filled with spaces, not NUL. I don't have a live cP/M system handy to test this but as I recall but if you wanted to run (or copy or move or delete) WS.COM, you could type WS or WS.COM but not WSCOM - so in that sense the period was a part of the file name even if it was not stored in the disk directory. --Wtshymanski (talk) 18:00, 10 January 2008 (UTC)
 * Yes, that's how I recall it, and how I see it.   D b f i r s   20:48, 2 March 2010 (UTC)

Software
Does a comprehensive list of CP/M software titles exist? 2fort5r (talk) 19:03, 22 January 2009 (UTC)

FAT vs Extents
MS DOS file allocation table is a linked list of disk "clusters" (bigger than a sector), stored in 12 (later, 16) bits) in a dedicated region of the disk. CP/M used "extents" which were a listing of allocation blocks in order, repeated in the directory as many times as needed until the entire file was mapped. These are conceptually quite different. I read somewhere that FAT was derived from the file-system used by Microsoft's free-standing disk BASICs - the kind where the BASIC language system *is* the operating system. These apparently used the FAT system, although I expect they weren't necessarily an MS DOS compatible disk format. In any case, saying that FAT is like CP/M's extents is a bit like saying a snowmobile is like a motorcycle. Some similarities, sure, but things are very different where the rubber meets the road.  --Wtshymanski (talk) 15:13, 2 March 2010 (UTC)
 * Perhaps the difference between a scooter and a motorbike? Is it just the linking that distinguishes FATs from extents?  (I'm not an expert in either bikes or filesystems.)    D b f i r s   20:39, 2 March 2010 (UTC)
 * The File Allocation Table article confirms that FAT comes from freestanding disk BASIC. My analogy was meant to indicate a difference in mechanics, not in scale. If you were to do a hex dump of a CP/M directory it would look like and be formatted quite differently from an MS DOS directory and FAT. It's solving the same problem in two very different ways. In any case, FATs didn't exist in CP/M 80 and so could not have been "borrowed" from CP/M for MS DOS. --Wtshymanski (talk) 22:25, 2 March 2010 (UTC)
 * But they're both just lists. I would guess that the FAT linking idea came from the usual BASIC line linking.  I've done a hex dump of a CP/M file table long ago. I can't remember now just what it looked like, but it was certainly simpler.  I was more familiar with DFS & ADFS.  The only patents that Microsoft have for FAT are for their way of implementing long filenames.  I would be surprised if they invented the linked-list file system, but they certainly made it popular.    D b f i r s   23:53, 2 March 2010 (UTC)

Transient Program Area
Im missing any mention of the concept of Transient Program Area size. The architectural differences between CP/M machines meant that some machines (even fully stocked with RAM) could only achieve a small TPA such as 48K, while others could have much larger TPA's almost up to the maximum of 64K. As CP/M machines often contrasted in little else, a smart, memory saving architecture was often a big distinguishing and thus selling point. Mahjongg (talk) 10:57, 27 May 2010 (UTC)

Obscure reference to person or company Echelon
In January 1987, Richard Conn decided to stop developing ZCPR, and Echelon asked Jay Sage (who already had a privately enhanced ZCPR 3.1) to continue work on ZCPR. Thus, ZCPR 3.3 was developed and released. ZCPR33 no longer supported the 8080 series of microprocessors, and added the most features of any upgrade in the ZCPR line.

Nowhere else in the article is "Echelon" mentioned. Who is "Echelon" ? —Preceding unsigned comment added by 91.215.166.4 (talk) 16:48, 19 November 2010 (UTC)
 * It was added with this edit: . According to the ZCPR 3.3 User Manual, Echelon was the company who owned ZCPR. Their address in 1987 was Echelon, Inc., 885 N San Antonio Road, Los Altos, CA 94022 USA. I don't know if this only applies to the 3.3 version or also to previous versions of ZCPR. --Matthiaspaul (talk) 20:01, 16 September 2011 (UTC)

3.1.2 Portability
"Furthermore, it powered the popular Amstrad PCW word-processing system..."

If I remember correctly, although these computers could (and did) run CP/M as well, the word processing software, Locoscript, was an operating system in itself. It did not "sit on top" of CP/M. You booted either Locoscript, or CP/M. Hundovir (talk) 19:23, 16 September 2011 (UTC)
 * Ah yes! See LocoScript. Hundovir (talk) 19:26, 16 September 2011 (UTC)

 * I've edited the article to avoid the implication that LocoScript ran on CP/M. Letdorf (talk) 22:56, 16 September 2011 (UTC).

"The best-selling CP/M-capable system of all time was probably the Amstrad PCW. In the UK, CP/M was also available on Research Machines educational computers (with the CP/M source code published as an educational resource), and for the BBC Micro when equipped with a Z80 co-processor. Furthermore, it was available for the Amstrad CPC series, the Commodore 128, TRS-80, and later models of the ZX Spectrum."

The current wording makes the list of CP/M computers sound comprehensive when of course it is not. --TrueBlueBlooded (talk) 21:00, 11 December 2016 (UTC)

Release date
When is the date that CP/M Plus was released? The cited INfo World article is from 1983, but doesn't say when the software was released; and a November 1982 article also in Info World talks about CP/M Plus as if it was released. --Wtshymanski (talk) 14:39, 17 October 2011 (UTC)
 * Only the announcement was 1982, the release was surely in the first quarter of 1983, the first edition of the CP/M Plus User Manual is from January 1983, and the second edition came in March 1983. An authentic reproduction of the manual can be found here.--93.82.14.214 (talk) 09:00, 18 October 2011 (UTC)
 * Which ones? 8-bit or 16-bit? Were releases for the 8080 and 8086 concurrent? Could you type in the citation for the user manual, which would be a more authoritative source than the Info World articles which seem to be inconsistent and non-specific on the release date. --Wtshymanski (talk) 13:35, 18 October 2011 (UTC)
 * Man, how ignorant are you? Again, read the stuff, we only talk about CP/M Plus, and if it is 8- or 16-bit is clearly described in the mentioned manual and this article! It would be better you first become familiar with the naming conventions of an OS, before you start a useless discussion like that! --93.82.9.10 (talk) 10:08, 19 October 2011 (UTC)
 * Given, that there also was a CP/M-86 Plus and that a lot of people follow a strange habit of abbreviating product names, instead of using the full official names (and even Digital Research changed names and spellings of some products over time), I find your tone highly inappropriate. There's not the slightest reason to be rude. --Matthiaspaul (talk) 14:53, 19 October 2011 (UTC)
 * I'm at least as ignorant as anyone who has the misfortune of trying to use a Wikipedia article to find out anything about CP/M. Not all of us are as cultured, civilized, well-read, and universally loved as you are. --Wtshymanski (talk) 13:17, 19 October 2011 (UTC)

Any help needed for CP/M article?
As someone who used the ORIGINAL CP/M so heavily as to have DISASSEMBLED IT (having written my own disassembler - "Resource" -- get it? Re-Source?). I was forced to transfer my PURCHASED copy by "modem beeping into an audio cassette" and the critical MAIN FILE was corrupt so I had to disassemble the 2nd copy on the disc which was there for relocation purposes.

From seeing the internals, I realize it was written on a TINY machine, using "jump tables" (an array of JMP instruction to various entry points) at the front of each "chunk". This allowed assembling CHANGES to a single part (say, the file system) while not changing anything else, UNLESS the changes exceeded the space laid out for it manually in the memory map.

I later REMOVED all the jump tables and dead space (after a module before the next one started on some well determined boundary) and thus my "version" became somewhat smaller, etc.

I also enhanced the assembler to sort of go back to being able to assemble something much larger than practical, by changing one unused op code to "link" which was a SOURCE TIME link to the next chunk of a huge assembly file (such as CBBS, the world's first microcomputer BBS, was).

I totally understood the memory organization, the use of the customized BIOS, the relocation program, the organization of the file system, etc.

Also, I could swear that its author told me it stood for "Control Program/Microcomputer", but if there are documented sources (which I've not sought) I gladly accept some better documented source than my failing memory.

'''is there anything about my significant experience and not-too-bad writing style that could or should be used to enhance this article? For that matter, is there a place in Wikipedia where people discuss what is appropriate, and to what extent there is interest in picking the brain of someone with as much early history in narrow aspects of microcomputers, as I have?'''

WardXmodem (talk) 17:39, 2 September 2012 (UTC)

 * The best places to discuss the matter are the corresponding talk pages and for more general stuff perhaps Wikipedia talk:WikiProject Computing as well. There's still a lot of information missing regarding CP/M and its relatives. And there are only a few editors with the corresponding knowledge to fill those gaps. So, if you have the time and dedication, I would like to encourage you to share your knowledge. Just go for it. --Matthiaspaul (talk) 19:29, 2 September 2012 (UTC)

March 2017
Good work do you want to improve the article further? —usernamekiran (talk ) 00:11, 25 March 2017 (UTC)
 * I only returned one picture... My experience with CP/M is rather limited (I was born in the MS-DOS era) - first time I used this OS was this year via WinUAE/VICE/C128 emulation. I may provide more OS/application screenshots for the Commons, if needed. I can also add references based on old magazines, but sourcing in this article seems to be good in comparison to other articles about old computers/OSs. Do you have anything particular in mind? Pavlor (talk) 08:53, 25 March 2017 (UTC)

Splitting out ZCPR section into separate article?
Hi, I propose to move the ZCPR section into a separate article, similar to 4DOS, a command line processor replacement for DOS. The article could also discuss Z-System, ZRDOS and Z3DOS.

I do consider the product to be notable enough to deserve a stand-alone article, but as such it would need more references to keep it from being deleted (which is not what I propose). However, since this was a third-party product, it does not really belong into this article about CP/M (and more closely related stuff like the East-bloc "clones"). --Matthiaspaul (talk) 04:05, 17 August 2021 (UTC)
 * I would recommend against splitting out ZCPR as a separate article; CP/M itself is barely notable in the Wikipedia sense, and minor third-party add-ins are not very significant to the outside world. It's not like there were millions of ZCPR users out there. Bt the time ZCPU came along, the IBM PC and MS DOS were the shape of things to come. --Wtshymanski (talk) 00:06, 20 August 2021 (UTC)
 * CP/M barely notable by Wikipedia standards, wot? It may not be important in real life any more today, but there are more than hundred books dedicated to it, not to speak of the many thousand magazine articles about CP/M-related topics, and the endless number of mentionings in all kinds of publications giving an overview on the history of computing / operating systems up to the present.
 * Regarding ZCPR, somewhere I read about more than 60.000 users in 1986. That was quite a high number back then. There were also magazine columns dedicated to it up into the 1990s and at least a couple of books. In my judgement, that's quite a bit above the threshold of notability per WP:GNG.
 * In my opinion, splitting out this topic would allow for a better organization of contents and improved linking to related topics.
 * --Matthiaspaul (talk) 00:37, 20 August 2021 (UTC)
 * Once you get rid of the "Users' Guides to CP/M..." type of book, the number of hits dwindles rapidly. It's a very limited circle of notability - nobody not a bleeding-edge early adopter had ever seen CP/M nor could tell you anything about it. Once we take off the nostalgia goggles, it just kind of disappers in the tall grass.60,000 people barely fills a stadium. --Wtshymanski (talk) 00:56, 20 August 2021 (UTC)
 * I bet there are more people (still alive) that have used CP/M than people that have used an ENIAC computer. CP/M is still relevant because it was a major stepping stone for other operating system to be based on or inspired by it. For the record, as late as 1997, I was still using CP/M inside an emulator on a PC, to cross-compile programs for the Z80 and then the Z180. And I wouldn't be surprised if I wasn't the last one doing that. Dhrm77 (talk) 11:31, 13 September 2023 (UTC)

Displacement by MS-DOS
Some of the text actually mention "I tested" and stuff in first person. This makes the article feel biased. Also, while I'm not an expert, I'm not too sure of the accuracy of the text in the section, because the command interpreter in MS-DOS wasn't cmd.exe, it was command.com. cmd started being used in OS/2 and Windows NT, not before. 2800:150:137:BFF:986D:10FD:2142:9227 (talk) 07:10, 13 September 2023 (UTC)

"DAC (operating system)" listed at Redirects for discussion
The redirect [//en.wikipedia.org/w/index.php?title=DAC_(operating_system)&redirect=no DAC (operating system)] has been listed at redirects for discussion to determine whether its use and function meets the redirect guidelines. Readers of this page are welcome to comment on this redirect at  until a consensus is reached. Shhhnotsoloud (talk) 12:04, 4 February 2024 (UTC)

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Talk:CP/M


text:
8-bit computing

In computer architecture, 8-bit integers or other data units are those that are 8 bits wide (1 octet). Also, 8-bit central processing unit (CPU) and arithmetic logic unit (ALU) architectures are those that are based on registers or data buses of that size. Memory addresses (and thus address buses) for 8-bit CPUs are generally larger than 8-bit, usually 16-bit. 8-bit microcomputers are microcomputers that use 8-bit microprocessors.

The term '8-bit' is also applied to the character sets that could be used on computers with 8-bit bytes, the best known being various forms of extended ASCII, including the ISO/IEC 8859 series of national character sets – especially Latin 1 for English and Western European languages.

The IBM System/360 introduced byte-addressable memory with 8-bit bytes, as opposed to bit-addressable or decimal digit-addressable or word-addressable memory, although its general-purpose registers were 32 bits wide, and addresses were contained in the lower 24 bits of those addresses. Different models of System/360 had different internal data path widths; the IBM System/360 Model 30 (1965) implemented the 32-bit System/360 architecture, but had an 8-bit native path width, and performed 32-bit arithmetic 8 bits at a time.

The first widely adopted 8-bit microprocessor was the Intel 8080, being used in many hobbyist computers of the late 1970s and early 1980s, often running the CP/M operating system; it had 8-bit data words and 16-bit addresses. The Zilog Z80 (compatible with the 8080) and the Motorola 6800 were also used in similar computers. The Z80 and the MOS Technology 6502 8-bit CPUs were widely used in home computers and second- and third-generation game consoles of the 1970s and 1980s. Many 8-bit CPUs or microcontrollers are the basis of today's ubiquitous embedded systems.

Historical context
8-bit microprocessors were the first widely used microprocessors in the computing industry, marking a major shift from mainframes and minicomputers to smaller, more affordable systems. The introduction of 8-bit processors in the 1970s enabled the production of personal computers, leading to the popularization of computing and setting the foundation for the modern computing landscape.

The 1976 Zilog Z80, one of the most popular 8-bit CPUs (though with 4-bit ALU, at least in the original), was discontinued in 2024 (its product line Z84C00), with Last Time Buy (LTB) orders by June 14, 2024.

Details
An 8-bit register can store 28 different values. The range of integer values that can be stored in 8 bits depends on the integer representation used. With the two most common representations, the range is 0 through 255 (28 − 1) for representation as an (unsigned) binary number, and −128 (−1 × 27) through 127 (27 − 1) for representation as two's complement.

8-bit CPUs use an 8-bit data bus and can therefore access 8 bits of data in a single machine instruction. The address bus is typically a double octet (16 bits) wide, due to practical and economical considerations. This implies a direct address space of 64 KB (65,536 bytes) on most 8-bit processors.

Most home computers from the 8-bit era fully exploited the address space, such as the BBC Micro (Model B) with 32 KB of RAM plus 32 KB of ROM. Others like the very popular Commodore 64 had full 64 KB RAM, plus 20 KB ROM, meaning with 16-bit addressing not all of the RAM could be used by default (e.g. from the included BASIC language interpreter in ROM); without exploiting bank switching, which allows for breaking the 64 KB (RAM) limit in some systems. Other computers would have as low as 1 KB (plus 4 KB ROM), such as the Sinclair ZX80 (while the later very popular ZX Spectrum had more memory), or even only 128 bytes of RAM (plus storage from a ROM cartridge), as in an early game console Atari 2600 and thus 8-bit addressing would have been enough for the RAM, if it would not have needed to cover ROM too). The Commodore 128, and other 8-bit systems, meaning still with 16-bit addressing, could use more than 64 KB, i.e. 128 KB RAM, also the BBC Master with it expandable to 512 KB of RAM.

While in general 8-bit CPUs have 16-bit addressing, in some architectures you have both, such as in the MOS Technology 6502 CPU, where the zero page is used extensively, saving one byte in the instructions accessing that page, and also having 16-bit addressing instructions that take 2 bytes for the address plus 1 for the opcode.

Some index registers are 8-bit such as the two in the 6502. This limits the size of the arrays addressed using indexed addressing instructions to objects of up to 256 bytes without requiring more complicated code. Other 8-bit CPUs, such as Motorola 6800 and Intel 8080, have 16-bit index registers.

Notable 8-bit CPUs
The first commercial 8-bit processor was the Intel 8008 (1972) which was originally intended for the Datapoint 2200 intelligent terminal. Most competitors to Intel started off with such character oriented 8-bit microprocessors. Modernized variants of these 8-bit machines are still one of the most common types of processor in embedded systems.

The MOS Technology 6502, and variants of it, were used in personal computers, such as the Apple I, Apple II, Atari 8-bit computers, BBC Micro, PET, VIC-20, and in home video game consoles such as the Atari 2600 and the Nintendo Entertainment System.

Use for training, prototyping, and general hardware education
8-bit processors continue to be designed today for general education about computer hardware, as well as for hobbyists' interests. One such CPU was designed and implemented using 7400-series integrated circuits on a breadboard. Designing 8-bit CPU's and their respective assemblers is a common training exercise for engineering students, engineers, and hobbyists. FPGA's are used for this purpose.

title: 8-bit computing


text:
Talk:Moonie (nickname)

Merge?
This article is not really about the word, which would be against WP:Not a dictionary anyway. (Although there are some exceptions to that.) It is really about the controversy in the US about the use of the word in the 70s and 80s. Unification Church of the United States already has a section on that. How about merge there? Steve Dufour (talk) 14:28, 9 January 2015 (UTC)
 * Hmmm...might be a good idea. Actually the word "Moonie" is used more often for other things now days, like Sailor Moon fans.Kitfoxxe (talk) 15:11, 9 January 2015 (UTC)
 * This article should not be merged as it is a record of attitudes pertaining at a particular time. It's contents are not adequately reflected in the target page. A rename would be more appropriate.Cathar66 (talk) 14:00, 2 February 2015 (UTC)

 * Don't merge While perhaps a little too much detail is given, this article can stand on its own. Clearly the topic is notable.Borock (talk) 14:27, 4 February 2015 (UTC)
 * Merge as suggested. People probably want to know about the people, the "Moonies", as well as about the word.  Why not have information on both in the same place? PopSci (talk) 15:26, 25 March 2020 (UTC)

title: Talk:Moonie (nickname)