This document copyright Herbert R. Johnson 2008. Updated June 08 2008.
Contact and email information can be found in this notice.
The Home page for all my Digital Research CP/M Web pages and information is at this link. The first CP/M systems and many others were S-100 bus based systems. To learn more about S-100check my S-100 home page.
As of year 2007, Dr. Gary Kildall's operating system called CP/M is at least 31 years old. In 2004, I decided to describe that history on my Web site. I've worked on that through 2008. See my DRI home page for links to Web pages about that event, and about about persons, companies and developments related to Digital Research and/or CP/M in the S-100 and microcomputer world of the 1970's.
This Web page provides some ideas about how to get and "run" CP/M today, or past alternatives to CP/M, in the 21st century.
Contents of this Web page:
Details CP/M history and Digital Research, are on my Digital Research Web page.
CP/M was one of a series of operating systems offered by Digital Research Inc, in th 1970's and '80's. More information is on my Digital Research Web page, and other pages on my Web site.
Early versions of CP/M consist of an operating system or OS; various tool programs for editing, assembling and debugging; and sample source code files. CP/M's OS was divided into a BDOS, a CCP and a BIOS as separate programs. BDOS is the core of the operating system, responding to system calls from running programs.. The CCP is the command-line processor with simple features like "dir", "type", and so forth. BIOS is the custom I/O software for each computer model, which accepts calls from the BDOS to perform disk and console and printer hardware access. Programs would be called through the CCP, loaded in, and run by calling BDOS routines, some of which would call the BIOS to access specific hardware. When a program finished, it would call the BDOS to reload the CCP, or reboot to reload the CCP, BDOS and BIOS. The user could then run another program. Later OS's from DRI had additional layers of software and supported much more hardware and OS features: you'll have to read the docs for specifics!
DRI's CP/M CCP and BDOS were distributed as binaries, assembled or compiled for the 8080 or 8086 processor. Also, the BIOS was specific to each computer design, and often users would construct their own BIOS versions. A description of the process of migrating CP/M is in this section. But the CCP and BDOS could be separated and replaced with alternatives, in effect a new OS. Many CP/M compatible OS's were written specifically for Z80 based systems: they took advantage of Z80 instructions not available offered by the 8080-only programs from DRI.
From time to time, someone asks some basic questions about CP/M like "what is standard CP/M?" or "what are alternatives to CP/M?" or "what is good or bad about CP/M?". There is no simple answer to these questions. This Web page has some of the answers. Frankly, a Web search (or the links on this page) will lead to plenty of information. But only a few sites have listed all or even some of DRI OS's, or all the alternative OS's that have some kind of CP/M compatibility. And there is no "standard" for CP/M, just various versions of Digital Research operating systems, and various other OS's which offer some compatiblitiy to SOME of those versions. If you want to compare them, download the docs and software and go right ahead! a comparison without some context or specifics is meaningless.
People who want to run CP/M have several options. They are divided between running CP/M-80 for 8080 and Z80 based programs and systems, or to run CP/M-86 typically on a older Windows/Intel PC.
One option is to emulate CP/M-80 on their Windows or Linux system or Mac under an emulator. Do a Web search for "CP/M emulator Windows" or "...Linux" or "...Mac" for more information. I discuss CP/M emulators under MS-DOS, Windows, Linux in this section.
The second option, for running CP/M "native" on an old computer which was sold with CP/M. If you don't have the CP/M disk for that computer, you have to FIND a CP/M specific to that hardware. Do a Web search using your computer's brand and model and "CP/M" to see if anyone is running it, and contact them to see about getting a copy. Or post in Usenet newsgroup "comp.os.cpm" to request a CP/M boot disk for your specific computer.
Some Web sites have CP/M or other OS boot disks as disk images, which you can download to recreate a CP/M boot disk. There has been a lot of discussion in comp.os.cpm from David Dunfield. Since at least 2004 he is doing a lot of work on CP/M and other DRI op systems; working with or CREATING 8-bt system emulators; saving CP/M disk images as MS-DOS files and archiving them; and discussing how to upgrade old systems to use 3.5" floppy drives. Here's a link to David Dunfield's computer museum. Check it out for all these activities! I have more to say on my S-100 Web pointers page about Dave's work.
Another option is to take a generic or distributed CP/M and write the new code necessary to run it on your 8080, Z80, or 8086-compatible system. The notes below discuss this option and what that means. (Of course, your computer has to have one of the processors listed. There is a CP/M 68000 but it's rarely used.)
I have some links here to the sites I've mentioned here. A page of Web pointers to sites related to CP/M is my S-100 Web links page.
The CP/M OS consists of an operating system a BIOS section; utility programs; a booting program; a FORMAT program. The CP/M operating system and utilities have no hardware dependencies other than the processor. CP/M will run on any system for which a BIOS is written and with the proper processor. The FORMAT, BIOS and BOOT MUST be written specifically to support specific hardware.
The fundamentals of CP/M are described on another Web page on this Web site. A description of CP/M programs and features is on this Web page.
CP/M has a BIOS section which is specific to manufacturer's hardware, namely the console/text I/O ports and the floppy controller. There is also some software logic in BIOS that converts the expected arrangement of tracks and sectors into what is expected by the rest of the CP/M OS. That's another way of saying that there are a variety of ways CP/M 86 sets up its boot tracks, the directory sectors, and the arrangment of data sectors on a track.
Also, there are various CP/M BOOT methods. Most of them use the very first sector on the first track as boot code. The hardware is able to read that boot sector and execute its contents. Most boot sector code reads the rest of the "system" tracks, usually the first few tracks, which contains CP/M and the BIOS code, and then starts it up. Some systems have sufficient hardware to read the system tracks directly without a boot sector. (Consequently a strategy of just trying any old CP/M boot disk on an unknown system, probably will not be successful.
Finally, CP/M systems (usually) have a FORMAT program, to format diskettes from scratch. There are various methods to set up sectors which require various FORMAT programs. Some proprietary systems do not distribute their FORMAT programs. Also, there are some MS-DOS, Windows and Linux programs which will format diskettes in ways you can specify. So you may be able to format diskettes on a Windows or Linux system. "Format" does not put the CP/M OS on a diskette however, it just sets up the sectors and tracks in a way a particular CP/M system expects to see.
So how can an ordinary programmer or tech "create" a specific CP/M for a specific system? Well, CP/M is designed to be ported to a new architecture. The manuals with it tell you how to do this. The tools provided with it are sufficient to aid you in doing this. It is not impossible, just a challenge like many other challenges presented by older computers or older equipment.
For an example of generating a CP/M system "from scratch", in Jan 2008 Rich Cini restored an IMSAI to operation and installed CP/M 2.2. While his system originally had an ancient (even by CP/M standards) iCOM floppy controller and FD 400 drives, he changed those to a Compupro Disk 1A controller and Teac FD-55GRF 5.25 inch drives. Read this document by Rich for details about how he generated a new CP/M for that system. I also discussed his iCOM hardware and docs on this Web page.
A number of people have provided me with source programs for a specific S-100 floppy controller. These include a complete CP/M BIOS and FORMAT program, with docs including the technical docs on that floppy disk controller. These are useful as an example.
Here's my Web page for that controller and that code.
CP/M 86, like CP/M 80, is available for free download for personal use. The "unofficial CP/M" site that has it will have copies of the manuals, the executables, and some source code. It and other sites have basic BIOS source code, or BIOSes for other CP/M systems. Other Web sites and other sources may have other CP/M's or other information which may help you in making over YOUR CP/M for YOUR system. To use CP/M to make a new CP/M, you can run CP/M 86 on most old and many recent Pentium/Windows systems by creating a bootable disk and booting it up; or you can run a CP/M 86 or CP/M 80 emulator which runs in the MS-DOS "box" under Windows; or run similar emulators under Linux.
For information on creating a bootable CP/M 86 disk for an old or recent
Pentium/Windows system, I suggest you search newsgroup comp.os.cpm for recent discussions of just that. That question comes up a couple of times a year. One discussion was in March 2006 named "Ready to setup CP/M 86". Sites mentioned in such
discussions include the "unofficial" site above and
this CP/M site for running CP/M 86 on "IBM compatibles".
There are various Web links throughout this Web page and in my other DRI documents.
Of course you should check out the Usenet Newsgroup "comp.os.cpm". It is an old discussion group which has talked about CP/M for decades. Usenet
newsgroups can be accessed from services of your Internet Service Provider (ISP); via Google Groups (which includes an archive); and other Web sites.
Gaby's "unofficial" CP/M Web site is
licensed from the owners of DRI assets, DR-DOS Inc.. The site provides early CP/M files and docs for personal use, as I described on another Web page. What's there? CP/M-80 in various versions, CP/M-86, CP/M 68K, CP/M 8000, CCP/M (concurrent CP/M), CP/net, and the early GSX extensions. Also, MP/M I, II, and MP/M-86; and Personal CP/M-86. Descriptions of these versions are on this page. The history of that site is discussed on another Web page.
The "CP/M-86 Software Repository", was a popular site for the IBM-PC version. It has patches to run it on recent Windows/Intel type machines. But in July 2007, this site went away. An apparent copy of it may be found at: at P. Betti's mirror site or at katzy mirror site
Gene Buckle's retroarchive.org has a lot of CP/M stuff, among other things.
Roger Hanscom's Computer Archaeology site has a section where he's collected a number of CBIOS sources. He also has a number of CP/M Web links. among other sites, on his home page.
John Elliot's extremely instructive early CP/M page. There are: several articles about
CP/M in the modern context; a lot of technical information about CP/M 1.X, 2.X and 3.X as well as CP/M 86 versions; file formats; and many Web links. Updated sometime up to 2005.
He has some recent (2007) work on GEM at this page on his site.
My S-100 Web links page has descriptions of some useful CP/M programs and products written to support CP/M; and many Web links to sites of CP/M interest.
Some popular CP/M-80 emulators run under MS-DOS; you can run them in a "DOS box" in most versions of Windows. Others run under Windows directly, or Linux, or both. What they all do is read 8080 or Z80 instructions and execute them in a SIMULATED 8080 or Z80. They can run actual CP/M-80 programs at speeds faster than any Z80 today! Some of them emulate the CP/M operating system; some of them are set up to execute actual CP/M OS code as well, or some version or work-alike CP/M.
Most of these emulators were written years or decades ago. But in many cases there has been a "revival" of them since the mid-millenium. I'll name a few below, but one way to find them is via the CP/M archive sites under "emulators", or a Web search. Also check the Usenet news group "comp.emulators.misc" for their frequent questions and any posts about specific emulators. Also check my list of S-100 Web links for the latest notes about these.
Dave Dunfield continues to do work through 2008 on emulators and on archiving CP/M "boot disks".
The Altair32 is a Z80 and CP/M simulator for the MITS Altair which runs under Windows. Check the Altair32 Web site for more info.
The AltairZ80 emulator of Peter Schorn also supports other S-100 computers with "devices" for NorthStar, Vector Graphics, and Compupro; as well as the Altair 8800. It's based on the SIMH family of emulators for minicomputers and older mainframes. Check Peter Schorn's Altair SIMH site for the latest verision of SIMH and for links back to the
SIMH Web site.
As of April 2008, Shorn's version of SIMH supports the 8080, Z80, and 8086; supports a number of OS's of the CP/M era including IMDOS, MDOS, and NorthStar DOS; and a number of hardware platforms of the era.
Also look at YAZE-AG - Yet Another Z80 Emulator by AG (V 2.20). Again, the Web site for YAZE-AG is at this link. It runs under several modern OS's, and supports memory management to run paged memory CP/M's like CP/M 3.0.
In 2008, someone suggested the CP/M-86 emulator for MS-DOS "AME86" would run under Windows XP (presumably in the DOS window). Source code is included for the emulator, which can be found at various Web archives (it's not under development currently). There may be some issues with Windows support for "FCB's" in recent versions of Windows.
In late 2006, programmer Udo Munk revived his Unix Z80 emulator Z80PACK and updated it for current Linux and Unix. He then proceeded to gather the Intel ISIS tools to run the native PL/M compiler (under an ISIS emulator), and gathered the various CP/M 2.2 and MP/M sources to compile and assemble them, and to run them under his emulator. He then did the same for CP/NET. By January 2007 he obtained the available FORTRAN PL/M compiler from the CP/M archive, and at Steve's request complied the CP/M 1.4 sources with it, as well as the so-called "publicly released CP/M" PL/M code as discussed above. Udo reported both "compiled cleanly". (ISIS is discussed by me on this page.) Late in 2007, Udo announced he modified his code to run under either Windows or Linux. Details are on his Web site.
To run Linux on a Windows-based system, search the Web for more info. Basically, you can either "dual boot" Linux or Windows; or you can run an EMULATOR program in which you can run a Linux operating system. Details are too complicated for me to discuss. Or, you can find some old computer and install Linux on it.
Linux has some means to manipulate disk images, I'm told. "Fortunately, Linux has a nice utility to change floppy disk parameters i.e.: We have a number of CP/M and S-100 Web links to software and discussions on my S-100 Web pointers page, and my S-100 home page is at this link. The "S-100 bus" was first developed in 1975 by MITS for the Altair 8800, followed by IMSAI's IMSAI 8080. Over 100 manufacturers used variations of the s-100 bus through the 1980's. MOst of those S-100 systems ran CP/M, so that's why I have many CP/M links among my S-100 links.
Gaby's "unofficial" CP/M Web site is
licensed from the owners of DRI assets, DR-DOS Inc. The site provides early CP/M files and docs for personal use, as I described on another Web page.
I have in my archives, ORIGINAL DRI documents. They are listed on my DRI Web page on my S-100 Web site at this link. Contact me to obtain copies via my manuals copy service. I also have
Morrow documentation including DRI's CP/M; and Compupro documentation including DRI's CP/M.
There are, or were, CP/M compatible operating systems from other companies. They were "compatible" with specific versions of CP/M; or were alternatives to the BDOS or CCP of CP/M. To understand what that means, you must know a bit of CP/M terminology. I describe CP/M internal parts above.
In the early days of CP/M, many computer companies produced their own version of CP/M. Early S-100 companies who did this include Cromemco, TDL, and so forth. Some of them obtained a licence from DRI (Cromemco), some eventually moved to DRI's CP/M (IMSAI). When time permits, I'll write more about these alternatives, but my
early DRI history Web page discusses a few of these.
Many CP/M compatible OS's were designed for Z80 based systems: they took advantage of Z80 instructions not available on the 8080 or later 8085. DRI's 8080-based
programs and OS's did not use Z80-specific instructions. So, people used CP/M alternatives either for additional features, or speed due to Z80 support; or because they were offered by their computer's manufacturer.
Mentioned in Usenet newsgroup comp.os.cpm as CP/M alternatives are: P2DOS,
SUPRBDOS, Novados, ZRDOS, DOSplus, TurboDOS. Some of these may be
commercial products (like TurboDOS), some are free (ZRDOS). Some are BDOS replacements, so you need a CCP from CP/M, or they include a CCP such as ZCPR. Again, search the Web for discussions and documents and mentions of these and other products.
QPM: A Web search suggests that QPM was sold by Emerald Software, a CP/M distributor of the 1980's, as an alternative to CP/M. In April 24 2006, the following was message posted in comp.os.cpm. "Hi all. In a moment of great timing -- or irony -- I just read a posting about QP/M and wondering where it was at. Wonder no more. As MICROCode Consulting has moved onto other turf, all of its Z-80 8-bit packages are available on-line -- free for personal use. It
took me over 100 hours to convert everything into something usable on a modern system. I sure *hope* it is worth it to somebody out there.
Visit [MicroCode Consulting's Legacy Z80 page]". Enjoy! -Mitch[Mitchell Milner]
Microcode's "Legacy Z80" page provides QPM and other related Z80 products, free for personal use only. Tools include a linker and a debugger product; ROM BIOS's and ROM subsititutes for BigBoard and Kaypro; and support for the WD 1002 hard disk controller. (We sell docs for that controller on this page. There is discussion of the history of QPM versus ZCPR. MYZ80 in its "original" form is provided to emulate a Z80 under MS-DOS.
From John Elliot's page, is a list of alternative free "BDOSes" or CP/M compatible OS's. Named and described
are Z80DOS, DOS+, P2DOS, NovaDOS, ZSDOS, ZPM3. Also listed are FreeDOS , an S-DOS alternative,
and a version of DR-DOS..
Here is Gaby's site to download NZCOM and Z3Plus, the "Z system" replacements for CP/M and CP/M-Plus, on Z80 systems.
This private site offers "ZCN ... a free operating system for the Amstrad NC100 (Notepad) and NC200 (Notebook). It's largely compatible with CP/M 2.2." - ZCN V1.3, June 2001
Hal Bower's ZsDOS and ZDDOS, released under GPL. It was a popular replacment for CP/M on Z80 systems.
An occasional question about Z80's is "can it run Unix (or Linux?)". Hal Bower created a modification of System 7 several years ago, and called it UZI. In 2006 UZI was revised and runs on a current Z180 computer, the P112. Here's Hal's Web page section for UZI for YASBEC & the "old" P112 and for the changes made by Hector Peraza to support the "new" P112 Z180 computer. The "new" P112, a single board Z180 from the 1990's available in 2006 as a kit, has a Web site (as of June 2007) at this link.
A thread in comp.os.cpm in late April 2006 discussed CP/M alternatives. One reply was
from Chuck Falconer, about DOSPLUS and CCPLUS, which are CP/M-80 replacements. "... I have similar biases for DOSPLUS 2.5, which the associated
CCPLUS. I wrote these because I was highly dissatisfied with the
methods of configuring ZCPR, and the features available. My system
is dynamically configurable, and does not require any reassemblies,
yet it fits in the exact space of the original BDOS/CCP, but
requires a Z80. You can find out all about it with various
downloads from [link given above], which gives you full binaries, source, auxiliaries, etc. It gives
you most of the features of CP/M 3, and much better security."
CP/M alternatives on non-Intel architectures
CP/M was run on some non-Z80 and non-Intel systems by use of a slave processor. The classic implementation was to offer a Z80 card for the Apple II, with CP/M from DRI. Interestingly enough, Microsoft offered one of these! DRI did not offer CP/M on any processors but the 8080, 8086 and derivatives, the Motorola 68000; and I believe on the National 16000(?) series processor.
In late Jan 2008, Peter Dassow announced that he's going to provide on his Web site, a 6502 processor-based CP/M work-alike called "DOS-65", written and initially sold by Richard Leary. It's on Peter's DOS/65 Web page and includes some source files, executables, and PDF'd manuals. A version of BASIC-E is also provided. Richard says these are offered from him as "shareware for non-profit, educational, or private use". The 6502 8-bit processor was developed by MOS Technologies and was used in the KIM, Apple II, the Commodore 64, and many other computers.
An occasional question about a Z80 system is "can it run Unix (or Linux?)". Also, some people who might be interested in CP/M are more interested in Unix and Linux, or older and smaller versions of these OS's.
Well, Cromemco created a Cromix which was a kind of Unix for their Z80 systems, which evolved into a System 7 Unix when they included a 68000 processor. Morrow developed an OS called Micronix which was based on System 7 Unix.
A more accessable "unix" for the Z80 was from Hal Bower and called UZI, a modification of System 7. The news in 2006 is that UZI was revised and runs on a current Z180 computer, the P112. Here's Hal's Web page section for UZI for YASBEC & the "old" P112 and for the changes made by Hector Peraza to support the "new" P112 Z180 computer. The "new" P112, a single board Z180 from the 1990's available in 2006 as a kit, has a Web site at this link.
another Web site for UZI is this Sourceforge UZIX project page. While the SourceForge project is for MS-DOS machines, there are links and references to USI, UZI180 (for the Z180), Minix and related efforts. But some links are dead in April 2008; the project does not look active after 2005. Look for UZI180
on this Web site for the P112.
The originator of UZI, Doug Brawn, is not working on UZI these days but still has
a Web page where you can get what he did; or check various CP/M or Z80 archive sites.
Another Unix look-alike for the Z80, from the 1980's, is Morrow's "Micronix" operating system, a licenced version of System 6.
HEre's my Web page about it.
Contact information:
Copyright © 2008 Herb JohnsonCP/M 86
Where can I get CP/M, its software, and manuals?
CP/M emulators under MS-DOS, Windows, Linux
$ setfdprm /dev/fd1 dd ssize=256 cyl=40 sect=16 head=2
So, it is possible to create an images of various floppy formats. " There are native Linux tools such as "YAZE" (Z80 emulator) and "cpmtools"; a Web search should find sites which offer or support these facilities. A popular set of Linux floppy disk utilities is "fdutils", which is described on this Web site.(Thanks to Alexander Voropay for these suggestions.)
DRI manuals and disks
what are the alternative CP/M compatible OS's?
UNIX and Linux versus CP/M?
New Jersey, USA
To email @ me, see see my ordering Web page