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.
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.
NEW 08/17/2002
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.
NEW 08/17/2002
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).
Important note
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.
NEW 08/17/2002
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
commented.
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.
NEW 04/10/2005
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
Roger Ivie.
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...)
He writes:
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.
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 Andy Johnson-Laird, 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:
z80em86 sources
z80em86 binary
CP/M-M3: A port of CP/M-68K to the ARM
Cortex-M3, by Roger Ivie.
This is a port of CP/M-68K to the ARM Cortex-M3, specifically the LM3S9D92.
It builds under windows. It is not quite ready for prime time in that there
are few applications and no documentation.
Altair 8800 Monitor (MOS Ver 2.2) Source Code, 10M, thanks to Larry Kraemer.