Here you will find all the source code that we have for Digital Research
software products. If there is something that you don't see the source for, and
you have it, please drop me a line,
and I will provide you an address where to send it.
It will then be posted here so everybody can enjoy it.
NEW: There is now a "contributed" section for DRI source code modified, optimized, or recompiled by users of The Unofficial CP/M Website. You will find it at the end of this page.
NEW 02/07/2020 BASIC-E : 90K Developed by Gordon Eubanks for his master's thesis, it was based on a BASIC compiler originally written by Gary Kildall. It's the predecessor of CBASIC.
PLM compiler source : 90K Here is the
source to the Intel PLM compiler. It is written in Fortran (66), and is supposed
to be pretty clean.
It compiles correctly with gcc's g77 on Linux. However, it is not the version required to compile CP/M 2.2 or 3.0. It works well, but lacks support for external definitions and some PLM constructs, as required by the DR source.
PLM to C translator : 406K Here is the source for a PLM to C translator. I believe it is written in C, and was targeted for unix type systems. It may be able to compile with Turbo C, but will need some work. There is a lot of text in with the source code that is not surrounded with "/* */" C comment delimiters. If someone gets it to compile, please send it back to me so I can post the fixed version. This package is GNU, so enjoy.
PLM to C translator : 56K This archive conitains the above PLM2C translator, cleaned up, and buildable on a unix system. It contains PLM2C.ZIP, which is the PLM to C translator, and PLM.ZIP, which is frontend parser for gcc.
PL/M VAX compiler : 210K
This archive contains the sources for a PL/M-VAX compiler and
the command files necessary to build the compiler from scratch.
I have been told that it looks like parts of the PL/M compiler are actually written in PL/M itself, so there's a bootstrap problem. If you have the missing executable, please let me know.
Another comment I recently received:
There is indeed one PL/M file, control.plm, that is a part of the compiler. However, there is also a file, control.tmp, that looks like control.plm translated to VAX assembly, possibly by the compiler itself. My guess is therefore that as long as there is a decent FORTRAN compiler and an assembler on the VAX, the PL/M compiler should build.
EARLY CP/M SOURCE : 12K This is a version of CP/M that is VERY early. It says "Copyright Gary Killdall". It may even be before he formed Digital Research. The source is in PLM. Text in the src call it FDOS.
LOAD for EARLY CP/M : 2K Here is PLM source for the LOAD command that goes with the early CP/M above. It reads a file from the reader, and saves it to disk.
NEW 08/17/2002 BDOS PL/M SOURCE : 38K PL/M source of a BDOS dating from 08/15/1978. CP/M version 1.4. Disk image in RAW format (IMG).
NEW 08/17/2002 CP/M 2.0 SOURCES : 146K CP/M 2.0 sources in PL/M and Assembly language. Includes BIOS for the MDS-800.
ASM80 Source : 26K This is the CP/M 2.2 assembler ASM. It has been disassembled, and presented in both 8080, and Z80, mnemonics.
CP/M 2.2 ASM SOURCE : 60K This ZIP file contains a disassembled source for CP/M 2.2 in both 8080, and Z80, mnemonics. This source is highly commented and claims to implement a fix for a problem with deblocking algorithms.
CP/M 2.2 ORIGINAL SOURCE : 242K *** UPDATED 05/26/02 *** This is the original source for CP/M 2.2. The source for CP/M 2.2 is in assembler, for an Intel MDS-800 development system. The only files that are in PLM are the Utilities such as PIP, STAT, etc.
NEW 08/17/2002 CP/M 2.2 SOURCES : 151K Sources for CP/M 2.2 in Assembly language. 2 disk images in RAW format (IMG).
PATCHES : 51K Here is a large collection of patches, and application notes, for CP/M 2.2 and its utilities.
Bring up CP/M 3 on your CP/M 2 BIOS : 92K This is a file of source code for CP/M 3 BIOS's that will help you bring up CP/M 3 with your existing CP/M 2.2 BIOS. There are no DOC files, but the ASM files are heavily commented. This should be a good resource to aid in bringing up CP/M 3 for the first time.
DEVELOPERS BUILD DIRECTORY for CP/M 3 : 601K Here is a clone of a developers build directory for CP/M 3.
CP/M 3 source The same as above to be built under Unix.
CP/M 3.0 SOURCE : 510K
CP/M 3.0 PLM SOURCE : 673K
YEAR 2000 FIX : 1K Here is a pair of patches for DATE.COM to fix the year 2000 problem for CP/M 3.
CP/M 3 Y2K Fixes : 82K Source for the CP/M 3 year 2000 fixes.
CP/M-68K 1.0x SOURCES : 4.46M A collection
of C sources for CP/M-68K, apparently for versions 1.01,
1.02, 1.02a, and 1.03.
A comment I recently received reveals:
There are some BIOS/BDOS/CCP sources in here, but all seem to be revisions of version 1.1 of the OS.
The bulk of the code looks like revisions of Alcyon C (compiler, assembler, linker and libraries). As far as I can see, this compiler emits 68K assembler and should run under CP/M-68K, REGULUS, VMS on a VAX and Unix on a PDP-11.
Reading v101/doc/ and v102a/doc/ makes interesting trivia:
- "The Pascal version of CP/M-68K..." (cpm0706.rno)
- "Allows up to 8Gb of on-line disk(ette) storage" (pdd.rno)
- "CP/M-68K Alpha Release III 2/15/84" (a3.rno)
CP/M-68K 1.2 SOURCE : 518K C source for CP/M-68K version 1.2.
NEW 08/17/2002 CP/M-68K 1.2 SOURCES : 719K CP/M-68K 1.2 from 03/20/1983 (C sources). Archive contains 12 disk images in RAW format (IMG).
NEW 08/17/2002 CP/M-68K programs : 157K Collection of programs and utilities for CP/M-68K (sources in C language).
If you like to port CP/M-8000 to another (non-Olivetti) machine, you must consider that you need to do the first build on an Olivetti M20 running CP/M-8000. Dwight Elvey is willing to assemble and link programs for those that want to bring up CPM-8000 on some other machine, with his Olivetti. He can except text source files for the bios over the net.
As for the contact address, please contact me (Gaby@gaby.de) first, I will then forward your mail to Dwight.
P-CP/M-Z8K SOURCES : 656K
These are the C sources for a CP/M-8000 version from May 5, 1983 and
October 20, 1983. Version number unknown, possibly 1.0. Some sources
contain the string "P-CP/M for the Olivetti M20 (Z8001)". Included is
the BIOS for the Olivetti M20 Z8001 and adaptions for the Kontron Z8002.
Also included is a set of manuals in TEX format.
Here are some comments I recently received regarding this and the two following archives:
Reading 'bdos/bdosmisc.c' reveals: "CPM-Z8000 Version 1.2 03/14/83". This file seems to be the usual place for version and copyright strings in CP/M's written in C.
In the same archive, 'newos/bdosmisc.c' says "CPM-Z8000 Version 1.3 06/14/83". Sad, really, that 'newos/bdosmain.c' is the cut-down 'loader' version of the BDOS. Sadder still that BDOSMA.C in cpm8k13.zip is also the loader BDOS.
Might as well dip into cpm8k11, then...
- The BIOS (source) is for the Olivetti M20.
- There's no source for BDOS and utils.
- There is a C compiler: "Zilog CP/M-Z8000 C Compiler v1.01e 12/26/84". In the readme on disk 4 it is claimed that the -D option is broken on this version. Clearly not good.
NEW 08/17/2002 P-CP/M-Z8K 1.3 : 202K These are the sources for a CP/M-8000 version from June 14, 1983. Some sources contain the version string "P-CP/M for the Olivetti M20 (Z8000) v. 1.3". Sources are in C language. Includes BIOS for the Olivetti M20 Z8000.
NEW 08/17/2002 CP/M-8000 1.1 : 814K Set of the 4 distribution disks of CP/M-8000 v. 1.1 from 1984 (for the Olivetti Z8001). Contains sources and binaries. Included are the 4 disk images in RAW format (IMG) and extracted files.
CP/M-86 SOURCE : 28K Here is the
source for CP/M-86, version # unknown. This is a disassembly, but well
The BDOS source (BDOS.A86) has the same date string ("12 january 82") as the CPM.SYS in cpm86-11.zip. I'd give this source a tentative ID as CP/M-86 v1.1, then.
CP/M-86 1.1 SOURCES : 112K This archive contains a couple of original DRI CP/M-86 1.1 sources in Assembly language, including the ROM bootstrap and BIOS for the iSBC86/12 with Intel SBC 204 floppy controller.
CPMDEV.ZIP : 75K contains some CP/M-86 sources and binaries, most notably the PC/XT disassembled CBIOS ala cpm86src.zip.
CPM86ANN.ZIP : 12K contains an annotated cpm.h86 from C8611.SRC, notes the Patches installed from CPM86BUG.zip, notes differences with: CP/M-86 for the IBM PC & XT v1.1 'as-built'.
CALBIOS 35K Components and source to generate CPM-86/80 for the CAL-PC
CALDOC 6K Some notes on the CAL-PC firmware (prom calls etc..)
CALUTILS 14K Some disk patching utilities for the CAL-PC
NEW 08/17/2002 SET and SHOW SOURCES : 35K Concurrent CP/M-86 1.0 SET and SHOW commands in PL/M language. Disk image in RAW format (IMG).
CCP/M-86 and CP/M-86 sources: 196K This archive contains sources for Concurrent CP/M-86 2.0, as well as various sources for ASM86 and DDT86, in both assembly and PL/M language.
NEW 08/17/2002 CCP/M-86 2.0 SOURCES : 1.74M This seems to be a complete distribution of Concurrent CP/M-86 v. 2.0 from July 5, 1983. Included are sources (mainly in PL/M) and compilation tools.
NEW 10/05/2003 CCP/M v. 3.1 SOURCES : 796K This 12 disk set contains the sources for CCP/M v. 3.1 from 1984 (including IBM PC & CompuPro XIOS).
Networking software for CP/M and MP/M computers.
CPNET-80 SOURCE : 44K Here is the source for CP/NET for the 8080/Z80. This is a disassembly, but looks well commented.
CP/NET-86 SOURCE : 42K Here is the source for CP/NET-86. This is a disassembly, but is well commented.
GSX-86 Driver source : 24K Driver source for GSX-86.
GSX-86 driver sources at John Elliott's homepage.
MP/M BDOS SOURCE : 16K Here is the source for the BDOS of MP/M v1.1. This is disassembled code, but is commented pretty well.
NEW 08/17/2002 MP/M I SOURCES : 909K MP/M I ASM sources and binaries. Includes a set of manuals in TEX format.
MP/M II SOURCE : 864K MP/M II source. While most of the utilities are in PLM, the OS code is in 8080 assembler. NOTE : There may be a PLM80 compiler in this package.
NEW 08/17/2002 MP/M II SOURCES : 637K Another package of MP/M II sources in PL/M and Assembly language. Also contains some programming tools.
NEW 03/22/2004 MP/M-86 2.0 SOURCES : 560K It contains the contents of 11 8" SSSD disks labeled 01 through 11. These are from Digital Research original disks. The first 6 disks are labeled as being able to compile on micro and the last 5 are to be compiled on "the VAX". All diskettes, though originally from DRI, have hand written labels, i.e. they are probably work disks. If you're curious, here's a scan of a disk label.
Miscellaneous DRI disks :
6.8M This archive is from in-house diskettes and has
snippets of MP/M-86 code from DRI development and includes some other code
unrelated to MP/M-86. It includes pieces of MP/M-86 code in the
process of being debugged never released before.
It comes with teledisk images and scans of labels since there are erased
files on them you may want to recover (previous versions of code being developed).
A short summary of the contents according to the disk lables (DRI stands for DRI labled but with handwritten information, not distribution diskettes):
disk 1: (DRI) CCPM/86 disk 2: (DRI) Altos MP/M86 disk 3: (DRI) C for CP/M 86 as shipped disk 4: C compiler for 8086 disk 5: Logo 16-bit disk 6: Digital Microsystems CP/M 2.2 7: (Gifford Computer Systems) MP/M 86, MPM 8/16 V 2.1EL 8: (DRI) MP/M 86 disk A, .MPM files 9: (DRI) Altos Single Density Lisp Files PLI Compiler 10: 0a: Misc *.com, etc 11: Hist. 12: (DRI) MP/M 86 2.0 Control Disk #1/2 8 october 1981 13: (DRI) MP/M 86 2.0 Control Disk #2/2 8 october 1981 14: DRI apparent distribution: MP/M 86 2.0 "in house Frank's copy" 15: (DRI) MP/M 86 2.0 "OEM Redistribution Disk, Altos, 8 October 1981" 16: (DRI) "MP/M 86 Kernel Source V2.0 except BDOS #1/2" 17: "Modem: Xmain, XFER, DIAL..." 18: "CCP.-86 Source Backup 7/16/82 TMP.A86" 19: "2/11 MP/M-86: source for shared code, belongs to: F.H 20: (DRI) "MP/M 86 V2.1, Test Site Release 05/07/82, Copyright (c) 1982 DRI, 1/2" 21: (DRI) "concurrent CP/M 86 DW Demo, Data Drive B (right" 22: "MP/M-86 test, CP/M-86 System Disk, Frank" 23: (DRI) CP/M 86 V1.0, SBC 86/12 w/CDC Hawk + SBC204, BOOTDISK" 24: (DRI) "MROOMS", "MDrive w/2 systracks @20000H, Regular boot of A drive, corrected gencmd" 25: "Xfer disk (temp backup)"
PCP/M SOURCE : 75K Source files of PCP/M-80 1.0.
PCP/M 1.0/5b: 571K This archive represents a German issue of Digital Research's Personal CP/M-86 1.0/5b for the Siemens Simatic S5 programming device PG685. Sources are in Assembler, and have been disassembled with Sourcer v. 7.00.
PCP/M 2.1/1: 458K This archive represents a German issue of Digital Research's Personal CP/M-86 2.1/1 for the Siemens Simatic S5 programming device PG685. Sources are in Assembler, and have been disassembled with Sourcer v. 7.00. Please check out the Binaries page of this site for the binaries for both versions.
BDOS 3.1 for PCP/M-86 1.05 81K
BDOS 3.3 for Apricot PCP/M-86 3.1 92K
BDOS 4.1 for PCP/M-86 2.x 106K
The source code successfully rebuilds to the original system files.
CP/M 2.2 Sample code : 4K This zip file contains a program that demonstrates how to handle various facets of programming for CP/M 2.2. Pure assembler.
PROGRAMMERS UTILITIES for PL/I : 91K Here are some sample programs, and utilities for PL/I for PC-DOS.
Exchange v. 0.1: 49K, by
Exchange is a utility that allows CP/M disk images to be manipulated under Unix. It supports disk images in either the standard 8" SSSD format or the P112 3.5" format. Disk images can be examined and files imported and exported from them.
The source is a slightly hacked over copy of CP/M-68K BDOS and CCP which has been worked over to allow compilation using GCC.
CP/M 2.2 for the eZ80F91, by Jean-Michel Howland (pre-alpha version...)
For storage I connected a 128MB MMC Flash card to the SPI port which works well. I've yet to add deblocking code to handle the 128 <--> 512 byte sector size issues but it'll come. :)
Reverse engineering / PL/M decompilation attempt at
Tex.com : 8K, by Mark Ogden. Outdated!
He writes: As I have done further work on this and other tools you may want to replace by a link to my GitHub site.
The CPM tools are under the cpmsrc directory and include full PLM source either modified or my decompilation. The builds match the binaries.
basice - includes modification to floating point source to match the binary
DR Lib 1.1
DR link 1.31
tex 1.0, 1.2, 2.1 and a modified version of 2.1 that fixes some bugs
ml80 (early high level assembler)
Note the last two have been translated into C and can be found in the repository https://github.com/ogdenpm/c-ports
The repository includes all the tools (except perl) to build the code under windows. This includes an enhanced ISIS emulator.
Note in the rest of the repository there are various decompilations of ISIS toolchain (PLM, ASM80, LIB, LINK, ASXREF, ISXREF) and ISIS itself.
Make CPM 1.4 v 0.1: 48K, by Ernie Price.
Make CPM 1.4 is a howto on reconstucting the CPM Version 1.4 CCP and BDOS from recovered and regenerated sources.
Source code examples from "The Programmers CP/M Handbook": 133K, by
copyright 1983 by Osborne/McGraw-Hill. Andy has given his permission to share this code for non-commercial use.
PL/M-80 compiler for DOS Box: 500K
PLM81.EXE and PLM82.EXE created by converting the original Fortran sources to C and recompiling with Borlands BCC. Sources included.
custom BIOS CP/M 3
ready to run under a Z80 emulator: 700K, by Stewart Kay.
For the 8086 based z80 emulator see:
Altair 8800 Monitor (MOS Ver 2.2) Source Code, 10M,
thanks to Larry Kraemer.
BACK to main page.