How to start with CP/M

This document copyright Herbert R. Johnson updated Mar 12 2023. Some links may be broken.
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.

Introduction

As of year 2004, Dr. Gary Kildall's operating system called CP/M was approaching 30 years old. I decided then to describe that history on my Web site, before it was lost. I worked on that through 2008; and updated my notes since. 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:

  • What is CP/M?
  • How do I run CP/M on my computer?
  • CP/M boot disk archives
  • Dave Dunfield's boot disk archives
  • How do I run "the Internet" on my CP/M computer?
  • Where do I get a CP/M computer?
  • How do I write my own version of CP/M for my own hardware or computer or emulator?
  • What books tell me about CP/M?
  • CP/M 86
  • Where can I get CP/M and its software?
  • How do I assemble CP/M programs?
  • How do I "decompress" and "unlibrary" CP/M files?
  • How do I read old CP/M or old 8-inch diskettes?
  • CP/M emulators under MS-DOS, Windows, Linux
  • what are the alternative CP/M compatible OS's?
  • UNIX versus CP/M?

    Details CP/M history and Digital Research, are on my Digital Research Web page.



    What is CP/M?

    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.

    How do I run CP/M on my computer?

    People who want to run CP/M today have several options. They can run CP/M on 8080 and Z80 based hardware (old systems or new). Or, they can run CP/M on an 8080 or Z80 emulator, typically on a older Windows/Intel PC. (A few work with CP/M-68K on 68000 based computers.) 8080/8085/Z80 computers of the 1970's and 80's can be found; check this part of my document about old and new CP/M computers.

    A popular 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 is to run CP/M "native" on an old computer which was originally 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, or "port" CP/M to it yourself. 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. Check Dave Dunfield's archive as discussed below. Or post in Usenet newsgroup "comp.os.cpm" to request a CP/M boot disk for your specific computer.

    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. There are various archives of CP/M software, once distributed on CD-ROMS or as diskette libraries. I describe some of those archives on my S-100 Web links page.

    CP/M boot disk archives

    In most cases, when someone requests "a copy of CP/M", they mean a boot disk for their old CP/M computer. CP/M requires a "BIOS" section which is tailored to specific hardware; it was designed to allow individuals to do so. One person who provided many CP/M boot disks in the 1990's was Don Maslin. As of 2003 there is a on Gaby's CP/M Web site, a list of what were maslin's available system disks..

    Don Maslin's and Rlee Peter's and other archives

    Don Maslin passed away on Sept 10 2004. There was discussion in comp.os.cpm through the end of 2005, but No one was able to take over his work, or to obtain his physical archives, for many years. But in 2012, Al Kossow of bitsavers.org and the Computer History Museum, acquired and distributed a copy of two tape backups of Don Maslin's former computer. Here's a Web page with a 200MB copy of Don Maslin's files, which include Teledisk images of many vintage system disks.

    Rlee Peters accumulated a huge archive of CP/M and related commercial diskettes, which he imaged decades ago. After he passed, his archives spread to several Web archive sites. classiccmp.org has one Rlee Peters archive.

    In 2011, I found that Al Kossow's "bitsavers.org" archive of documents and software also contains a substantial number of CP/M and other diskette image files. A Google search string ".IMD" for that site, yields 104 "hits", almost all to directories which contain multiple *.IMG files. Other disk images there include .TD0 (Teledisk format) and .IMG (not photos but disk bit images from versions of Catweasel). See my note above about Catweasel and other formats for details.

    Over time, the megasite "classcmp.org" consolidated a number of other CP/M Web site archive into The Humongous CP/M Software Archive. Sites not copied, are at least linked to from there.

    In early 2018, Jon Chapman AKA System Glitch set up a supplemental list, of floppy controllers and MS-DOS systems which passed portions of Dave Dunfield's tests for use of IMAGEDSK. Jon says Dave apparently is not updating his list. - Herb

    Dave Dunfield's boot disk archives

    Please read this entire paragraph before using the following Web link. Meanwhile, in 2005 or 2006, there were references in comp.os.cpm to Dave Dunfield's disk imaging Web site for system boot disks, disk images, and for tools to create and manipulate them. In 2006 he moved much of that information to the linked "classiccmp" Web site from his own Web domain. Unfortunately, in 2019 Dave suffered serious injury and as a result has liquidated his vintage computers and it's impacted much of his activities. Details are on his Web site. However, it's now more difficult to access his "imagedisk" files, and to contact him. I suggest you do a Web search for "dunfield imagedisk testfdc", to figure out the most-current (and only) links to his great imagedisk products. Consider a donation for his decades of service to the vintage computing community.

    For several years, Dave had done a lot of work on CP/M and other DRI operating systems; working with or CREATING 8-bit 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. Check his Web pages on the classiccmp site for all these activities. (There's also versions of Teledisk there, and I believe Dave's utilities can handle Teledisk images too.)

    For most old CP/M systems, you will likely find someone with a bootable diskette, or obtain a disk image using the Dunfield tools and archives described on this Web page. I discuss the Catweasel floppy controller product, and a variety of issues about diskette formats, on a technical Web page about diskette data recovery and copying.

    Dunfield's Imagedisk

    As of August 2006 I counted about 75 different disk images there; including images for non-CP/M systems with 6800 and 68K processors. (by 2011 there were about 100 image files.) Here's what Dave had to say at in 2006, about his work and where to access it, from a public post in comp.os.cpm:

    "... For backing up and restoring disks, as well as finding boot disks for known configurations, I urge people to check out the imaging tools and disk image archive on my [archive] site [now at classiccmp.org]."

    "ImageDisk is a program that runs on a PC and can backup and restore complete [*.IMD files of disk] images of most soft-sector formats, including mixed density, odd sector numbering, differently formatter tracks etc. I have a page with details on how to connect 8" drives which work well in this configuration on a PC - this is my prime soft-sector disk manipulation tool."

    "North Star Transfer (NST) is a program specifically for backing up and restoring NorthStar hard-sectored disks. It handles both single and double density formats and works with either controller (obviously it can't backup DD on the SD controller) - It uses a small client running under NorthStar DOS and a serial link to the PC."

    "CPM Transfer (CPT) is a program which uses a small stub resident under CP/M to backup and restore complete disk images from most CP/M systems. There are other transfer utilities for other systems available on that page as well."

    "I also have a growing collection of system disk images for various machines and configurations available on the same page. I'd like to ask that anyone with boot disks not already in the archive to please if you could, make images and send them to me for inclusion in the archive. What I am trying to do is to build a shareable and archivable resource of boot disks, and the means to recreate them so that classic treasures won't have to sit idle waiting for the right disk to come along...Regards, Dave"

    Don't contact ME, Herb Johnson, about this archive or program set. Go to the classiccmp site for Dave Dunfield's work.

    How do I run "the Internet" on my CP/M computer?

    A common question is "how do I run the Internet on CP/M?". Or, how do I network a CP/M machine, or "run the Web", etc. It ain't that easy. Mostly, CP/M systems lack the processor speed and memory, and the programs like browsers and email clients, and an Ethernet hardware interface, and the "TCP/IP" networking software....all that stuff. But, through the years, and even recently, some people have or are providing some of these capabilities. First and foremost, you need TCP/IP and utilities which run above them; and a physical connection to some kind of network or to a computer which has that connection to "the Internet".

    Check this Web page for past work done by amateur radio with KA9Q, some recent work with modern Ethernet hardware and TCP/IP stacks, older work done on other computers, and discussions from comp.os.cpm. However, by year 2011 or so, most prior hardware and software work is moot: obtain a $50 microcontroller which supports both a serial port and Ethernet and a "TCP/IP stack" . Then "run" your CP/M system "on the Internet", whatever the hex that means. There's some clues in the referenced discussion.

    Where do I get a CP/M computer?

    Running CP/M "native" on a computer, means you need a computer with an 8080, 8085 or Z80 or compatible processor - to run CP/M-80 and other 8080 versions. Or, you can run CP/M-86 on an Intel-based PC - check the Web and elsewhere in this document about how to do that.

    Used Z80-compatible computers are still available, decades after they were first sold and built. They are available from individuals, for sale or give-away; they are bought and sold on eBay and other general auction Web sites; and some Web sites for specific old computers also offer hardware for sale. Check the Web, or personal for-sale Web sites, accordingly, there are too many venues to list. For example, the S-100 systems I support to this day. If the computer you get does not have a CP/M diskette, read elsewhere in this document about "How do I run CP/M on my computer?"

    New Z80-compatible computers are generally not in commercial production. There are companies which produce computer "hobby kits" of various sorts, but few of them are 8085 or Z80 based, and most don't support any kind of file storage device. (But see my notes below.) But there are private or "home brew" efforts which provide new CP/M-compatible computers, in kit form or as circuit-boards and you-buy-parts. And, some people or collections of people are making copies of old CP/M based systems; or offering their own design. Look for discussions and Web sites organized around signifigant vintage computers which ran CP/M.

    For example, consider the Heath Zenith H89 and H8. Les Bird of the Society of Eight-Bit Heathkit Computerists (SEBHC) alerted me to his organization and their discussion group. He and others developed some new Heath H8 cards, similar or better than the original cards. I try to keep current Web pointers for these and similar Web sites, on my S-100 Web pointers page.

    Lee Hart at sunris-ev.com has a complete Z80 kit that runs CP/M on an SDcard as a trio of Altoid-sized cards. s100computers.com is an organized group that includes former N8VEM participants. They often offer new-design S-100 cards or other CP/M compatible cards as PC boards.

    Jon Chapman of The Glitch Works has an 8085 complete kit with CP/M on flash drive. He has a tindie site for sales; he has other 8-bit computer project kits.

    Web search will find many individual vintage-computing projects that come and go in the 21st century.

    How do I write my own version of CP/M for my own hardware or computer or emulator?

    The CP/M OS consists of an operating system with 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 sets up its boot tracks, the directory sectors, and the arrangment of data sectors on a track. The BIOS starts with a series of JUMP instructions to specific hardware tasks, performed by the BIOS. That "jump table" is standardized so that the CP/M OS knows what to expect.

    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.

    Smething has to load the "boot", and often that is a program in ROM called a "monitor", which runs when the computer is powered up. I have some versions of ROM monitors on my Web site, most in my section on S-100 computers.

    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 original DRI 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 equipment. Remember: CP/M was originally ported by persons with no other available personal computer.

    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.

    But in the 21st century, people often port CP/M by finding the source files and reassembly. Or they assemble some of the CP/M alternative OS's. Web search will find these old or recent projects, and the CP/M sources (or good disassemblies of CP/M).

    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.

    Refer to other parts of this document to other Web sites which may have BIOS code or specific hardware code. But notible among them, is Rodger Hascoms's BIOS collection Web page. He has BIOS code from several systems available there, as well as some tools like assemblers, and also FORMAT programs.

    What books tell me about CP/M?

    Many books were written about how to use CP/M, and how to create or modify a CP/M yourself for some computer. This section has a sampling of suggested book titles, by members of comp.os.cpm. Check your local public or campus library, or Web booksellers and auction sites, for these and other books. Or ask me, I have some on hand too. Also, some Web archive sites have PDF scanned copies of these books, no comment about "copyright".

    Udo Munk suggested the following book. Used copies, library copies, and PDF's of it can be found with Web search.

    The CP/M Handbook with MP/M
    By Rodnay Zaks
    Published by SYBEX, 1980
    ISBN 0895880482, 9780895880482

    Allison Parent says "One of the best was Andy Johnson-Lairds The Programmer CP/M handbook. published by Osborn-McGraw-Hill." Hersch agrees.

    Jack Crenshaw: "Yep, I agree. I think it was Johnson-Laird, Miller, and Barbier that I used most often. My favorite author was Ken Barbier. I also saw Alan Miller, Andy Johnson-Laird, David Cortesi, and Mitchell Waite." Regarding assembly language programming, since he mentioned the Z-80 CPU, the "standard" book was "Programming the Z80" by Rodney Zaks.

    Emmanuel Roche, France, said in previous discussions in comp.os.cpm:

    "Z80 Assembly Language Programming" - Lance A. Leventhal
    "Z80 Assembly Language Subroutines" - Lance A. Leventhal 
    Rodney Zaks' "The Programmer's CP/M Handbook" 
    "Programming the Z80" by Rodney Zaks
    "The Programmer's CP/M Handbook", (c) 1983 Andy Johnson-Laird Inc.
    "A CP/M Programmer's Notebook" by David E. Cortesi
    "Inside CP/M" by David E. Cortesi
    "Dr. Dobbs Z80 Toolbook" by David E. Cortesi
    
    "Osborne CP/M User Guide" by Thom Hogan 
    Soul of CP/M by Mitchell Waite and Robert Lafore
    CP/M Bible by Mitchell Waite and John Angermeyer 

    Mentioned on prominant Web sites: "CP/M Bible" as above; "CP/M and the Personal Computer", Dwyer and Critchfield

    CP/M 86

    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 patching CP/M 86 to run on "IBM compatibles".

    Where can I get CP/M, its software, and manuals?

    There are various Web links throughout this Web page and in my other DRI documents.

    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 Web site also has a CP/M and hardware discussion forum (mostly in German). By the way, as of 2022 or so, the "license" to distribute CP/M was updated to include everyone, not just that "unofficial" Web site.

    Udo Munk's Z80PACK Z80 emulator runs under Linux, follow the link for details. Udo has accumulated a number of working CP/M and related OS's, including sources and tools to assemble and compile them. Also, popular programs used with those OS's. CP/M wasn't the only 8080 and Z80 operating system.

    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. Copies of it may be found at at katzy mirror site and at the "humongeous" Web site.

    Archives of CP/M software

    The first go-to for CP/M software, are archives of the "Walnut Creek CP/M CD-ROM". Archives of archives are at the humongous CP/M archive. Among those the Walnut Creek CP/M CD-ROM is first, the OAK repository CD-ROM is third there. There's also the Simtel-20 CD. In the 20th century, CD-ROMs were the means of mass distribution of MS-DOS and CP/M programs and files. all of these have overlapping CPMUG and SIG/M archives, plus their own archives. Some of them are compressed with old compression tools like ARK; some compressed with ZIP that can be opened in the MS-DOS/Windows world.

    In most cases, these CD-ROM archives have a "allfiles.txt" of some sort, which lists every program and a brief description. Text-search that to find programs.

    There's many other archives, some are in the "humengous" archive some not. First Osborne Group (FOG). C User's Group (CUG) of C-sourced programs. Some of the archives described below, are mirrored (copied) there.

    Gene Buckle's retroarchive.org has a lot of CP/M stuff, among other things.

    Roger Hanscom's Web site has a section where he's collected a number of CBIOS sources.

    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.

    There's the CP/M 86 and CP/M 80 Museum Web site of Bill Buckels. He has a growing accumulation of software tools for CP/M, including Mix C, and links to sites with other tools and with CP/M information. It's noteworthy that he's asked former developers for permission to provide their CP/M products on his site.

    Pascal in the form of various simulated interpreters, were produced by Niklaus Wirth and others. Here's a Web site that has a history of Wirth and products produced by him and associates.

    A tribute site to Gary Kildall and to Digital Research Inc. and its employees and products, was constructed some time around year 2000 Check digitalresearch.biz for some history and background about DRI, early CP/M, and what happened to some of the people and employees of DRI. However, the site does not appear to have been updated since that time; information about Caldera and ownership of CP/M is obsolete, so verify any date-sensitive information you find there.

    Email lists for CP/M:

    Years ago, there was the Usenet Newsgroup "comp.os.cpm". It was an old email discussion group which talked about CP/M for decades. Sometime late in the 20th century, Google took over the Usenet email lists, so you'll find archived and current emails among Google Groups.

    There's other CP/M-80 email discussion lists on the Web, Web search will find them. There's also discussion groups within the various social-media Web sites.

    My S-100 Web links page has descriptions of dozens of Web sites which have useful CP/M programs and products written to support CP/M.

    How do I "decompress" and "unlibrary" CP/M files?

    Most archives and old diskettes with CP/M programs on them, will have files that appear to be corrupted or broken. The file name extensions will look odd: .lbr, .aqm, .cqm, .arc, .ark, etc. These files have been compacted with two kinds of programs. One kind takes several small files and puts them into one big file - "library" or "zipped" or "arc" and so on. The other kind compresses big files by removing bits - .zip, .arc, and so on. Also file extensions with a "q" as the second letter are "squeezed", the "unsqueezer" program restores the proper letter. Sometimes one has to try a number of programs, as there were some variations among the versions of these. "ZIP" standards appeared eventually, but that was late to the CP/M world.

    There were various CP/M utilities to restore these files. There were MS-DOS utility programs to do the same thing. The "Walnut Creek CP/M CD-ROM", archived on a number of CP/M archive Web sites, has a number of CP/M and MS-DOS utilities for decompressing the various compressed and libraried, etc. files. In the "humengous CP/M archive of this CD-ROM, here's a link to many MS-DOS compression and decompression utilities Other archives on that site, also have sections devoted to MS-DOS decompression programs.

    In those same archives, there's of course the CP/M programs used "native" to compress and decompress. If you can't run the MS-DOS programs, run the CP/M programs in MS-DOS with MS-DOS based CP/M emulators, in the "DOS window" of most Windows systems. Or - run an old computer with MS-DOS or an old Windows that supports MS-DOS!

    My S-100 Web links page has descriptions and links to Web sites which have some of these CP/M and MS-DOS archives, or to some programs for Windows and Linux. Search for "libary" or "compress" to find the links.

    How do I assemble CP/M programs?

    You can either assemble 8080 or 8086 or Z80 programs, "native" in CP/M; or cross-assemble them on your MS-DOS or Windows or Linux system. If you are building a CP/M system, and don't have a working CP/M system - either you emulate it to run native CP/M assemblers; or you run cross-assemblers on an MS-DOS or Windows or Linux boxes. Yeah, and "virtual machines", but that's not why you are reading this Web page.

    Native assembers are written in 8080 or Z80 code (or written in C or PASCAL or BASIC that runs on an 8080 or Z80 system). Of course Digital Research's ASM is native to CP/M-80 or -86. Look for CP/M native assemblers in the various CP/M archives described on this Web page. Some of them will be in 8080 or 8086 or Z80 code. (There was TDL Z80 mnemonics as well as Zilog Z80 mnemonics, keep that in mind. YOu'll need TDL's assembler and linker to assemble those, running in an emulator or native on CP/M-80. )

    At some point, MS-DOS systems became faster than CP/M systems. Even emulated CP/M became faster than native CP/M systems! So a lot of CP/M, 8080 and Z80 utilities "migrated" to the MS-DOS world. Those tools are entirely adequate if not superior to Windows and Linux cross-assemblers. And with programs written in C, Pascal, etc, they are the same tools! I've recompiled some old CP/M assemblers in C, and list them on this Web page. I also have a copy of Bruce Tomlin's ASMX with some modifications. ASMX supports many processors and supports macros.

    How do I read old CP/M or old 8-inch diskettes?

    Often, people interested in CP/M today, used it in the past. They have old disks they want to read - from CP/M or other old systems - and they want to run old software or to recover old files. Because I also support old floppy drives as well as CP/M and S-100 systems, such people often contact me.

    To be very very brief, in the 21st century there are many problems in reading old diskettes. If they are 3.5-inch or 5.25-inch diskettes, you may be able to obtain and use old MS-DOS based software to interpret their "format" and read them. In 2009, you'll likely have to find an older PC, with a 5.25-inch drive or which can accomodate such a drive. On this Web page, Dave Dunfield's boot disk image archives includes tools and means to read old CP/M diskettes on old PC's with their native hardware. Those tools and more are are discussed in a section of my Web page about floppy disk drives.

    For 8-inch drives, it's harder to connect them to modern computers, and you still have the "format" reading problem. There is no simple and straightforward way to connect 8-inch floppy drives to a modern PC or even an older PC. At the linked Web page, I discuss modern hardware that some technical people use with modern Windows/Linux PC's to operate 8-inch drives.

    Even if you can "connect" older drives to your PC, and obtain software to interpret old diskettes, those diskettes CAN be fragile and have mold on them - if you try to read them, the heads may scrape off the oxide and permanently destroy that data. We talk about that on this Web page.

    I generally don't offer to read or convert other people's disks. For many reasons, it's too much risk and too little gain for me (please don't argue with me about economics or "profit"). Frankly, people often find some guy/gal with an old old computer who will read it for almost "free". Or they say "it's too complicated and not worth the cost and effort". Or they find a professional data recovery service and pay them accordingly - it ain't cheap. I do not offer referrals to data recover services or individuals.

    You are welcome to contact me but PLEASE tell me as much information as possible about 1) how many disks of what size, 2) what computer and operating system and programs "wrote" the files, and 3) your city/country. If you don't tell me I will ask, and it's amazing how often I have to beg for this information. I may change my policies and services at any time.

    I discuss these issues on several S-100 microcomuter support Web pages on my Web site. Links are below.

    My S-100 FAQ has questions and answers about hooking up and using 8-inch drives to PC's.. I have a technical Web page about floppy drives, floppy diskettes, and many kind of floppy controllers.. I discuss how to read old floppy diskettes on modern computers on this Web page One software product to read old CP/M diskettes was provided by Sydex and called "Anadisk" and "22disk"..

    This linked page consists of years of links to sites supporting S-100 and CP/M hardware and software.

    CP/M emulators under MS-DOS, Windows, Linux

    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 there has been a "revival" of some 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. Also look for SIMTEL archives, or Walnut Creek CP/M CD-ROM archives.

    Dave Dunfield continues to offer, through 2008, his own Z80 emulators and a growing archive of CP/M "boot disks" images. Follow the link for details.

    Thomas Scherrer's Z80 site z80.info has a section of Z80 emulators, and Z80 system emulators. Check the site for details.

    emulators

    MYZ80 by Siemon Cran is a popular Z80 emulator under MS-DOS. Cran no longer supports it but it's available from many archives.

    The Altair32 is a Z80 and CP/M simulator for the MITS Altair which runs under Windows. Previously developed by Claus Giloi, for several years to 2013 it's been maintained by Rich Cini. Rich previously hosted his Altair32 site at the Altair32 domain-name site but Rich no longer has access to update that site's versions.

    The AltairZ80 SIMH emulator of Peter Schorn et al also supports the MITS/Altair 8800 series with 8080 and Z80 processors, and other S-100 computers with "devices" for NorthStar, Vector Graphics, and Compupro; as well as the 8088 processor. It's based on the SIMH family of emulators for minicomputers and older mainframes.

    SIMH is also a general computer simulator for a variety of mainframe and minicomputers. SIMH in that context is supported by Bill Supnik et al, and appears to have a support site on the trailing-edge.com Web site. There's a SIMH sourceforge site at this link.

    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.

    Z80MU from Computerwise Consulting Services in the 1990's, or from Joan Riff's "Z80MU PROFESSIONAL", is another old Z80 emulator under MS-DOS. Version 3.1 was a kind of "shareware" version, version 5.2 a kind of "try before buy" version. Look for "z80mu310.zip" or "z80mu52b.zip" in various CP/M archives. In early 2013, I attemped to contact the distributor of the "5.2 professional" version through a third party; I don't have a response from the developer as to their current interest.

    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.

    At the mess.org site, you can get MESS, an emulator for various old computers, including a lot of S-100 and CP/M type systems.

    Linux

    Udo Munk's Z80PACK runs under Linux, follow the link for details. Also under Linux are a set of disk tools called "cpmtools", available from such sources as the author Michale Haardt at moria.de and a Win32 version by John Elliot, among other sites. A popular set of Linux floppy disk utilities is "fdutils", which is described on this Web site.(Thanks to Alexander Voropay for these suggestions.)

    Linux has some means to manipulate disk images, I'm told. "Fortunately, Linux has a nice utility to change floppy disk parameters i.e.:
    $ setfdprm /dev/fd1 dd ssize=256 cyl=40 sect=16 head=2
    So, it is possible to create images of various floppy formats. "

    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 Windows, like QEMU, under which you can run a Linux operating system. Or, many Linux programs can be re-compiled under Cygwin, a library which supports such a thing. Details are too complicated for me to discuss - a Web search will find more information. Or, you can find some old computer and install Linux on it.

    Udo Munk Z80PACK and CP/M OS archive

    In Usenet newsgroup comp.os.cpm on Oct 2006 through April 2007, Udo Munk announced and discussed his updates to his classic Z80pack CP/M emulator for UNIX systems, as provided on his unix4fun.org Web pages He says the I/O is "well abstracted" and so any Z80 system can be emulated. It supports CP/M 2, CP/M 3, MP/M and CP/NET; and is written in ANSI C. Sources are included and the license is a BSD-style license. The CP/Net protocol runs under TCP/IP; Udo won't offer support to a Unix serial port driver, you need to use Telnet to connect two CP/NET "systems", real or emulated. In subsequent work, Udo migrated his emulator to Windows systems.

    Also on his site are a number of pre-packaged versions of CP/M, ISIS, PL/M and other CP/M-80 and Intel 8080 era software packages, with sources compiled through the Z80PACK toolchain. His site provides a WORKING archive of these 1970's software products for the 8080 and Z80. Udo's site is unique in providing both tools and archives of COMPLETE AND WORKING 8080 and Z80 systems software, ready for use.

    Udo has gathered 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 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 an ISIS Web page.)

    Late in 2007, Udo announced he modified his code to run under Cygwin, a POSIX (Linux) application layer for Windows to run Linux programs. SInce then, he's added other packages and other hardware emulations. Udo noted in 2009: "z80pack was not written to emulate CP/M systems, it was written to emulate any Z80 based system. An emulation of a CP/M system or the frontpanel based machines just are example implementations, that can be distributed and shared without legal issues." FOr more information on what is available under Z80PACK, check Udo's Web pages as linked above.

    DRI manuals and disks

    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.

    what are the alternative CP/M compatible OS's?

    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. These were developed by Jay Sage in the 1980's as commercial products. He released them for general use via Gaby's CP/M Web site. Jay told me in Aug 2008: "I keep the messages generated when people download the software, and there have been close to a thousand messages over these two years [the Web page has existed]."

    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.

    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." Chuck also has available a DDT replacement, compression utilities and a Pascal compiler.

    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.

    UNIX and Linux versus CP/M?

    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. Hal's Web site has a 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. Software for the P112, including an updated UZI180, is available at this linked Sourceforge Web site.

    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:

    Herb Johnson
    New Jersey, USA
    To email @ me, see see my ordering Web page

    Copyright © 2023 Herb Johnson