In March 2014, Emmanuel Roche sent me email after he saw references to XYBASIC on my website. When I mentioned that I had a hard copy of CP/M 1.3 source in my office closet, Emmanuel convinced me to scan it for posterity (see below). This page describes the provenance and contents of that hard copy. As far as I know, it's the earliest surviving copy of CP/M source. I donated it to the Computer History Museum in Mountain View, CA in April 2014. Their Early CP/M Source Code page includes a link for downloading CP/M source code.
Bob Swartz, founder of Mark Williams Company, hired me in February 1977 to write a BASIC interpreter (eventually called XYBASIC) for 8080s. At that time, it was possible to get S-100 bus 8080 hardware, but there was a waiting list for 8" floppy drives. Bob already had a CP/M machine and knew Gary Kildall and John Torode, and he arranged for me to use Gary's hardware initially. I commuted from my apartment in Palo Alto to Pacific Grove for several months. On my first visits, I used machines in Gary's garage/toolshed (781 Bayview). Very soon after, Gary and Dorothy moved Digital Research to the top floor of 716 Lighthouse, and I worked there until I got my own machine, probably in May or June of 1977. I typically spent several days in PG before returning to Palo Alto, so I often slept in the tiny overlook at the top of the building. My PG commute ended before the rapid growth of DRI and their move across the street to 801 Lighthouse.
Gary Kildall gave me a hard copy of CP/M 1.3 source during that period (i.e., between 2/77 and 6/77). I remember a shelf of identical copies in the office; each customer who bought CP/M source received one, in addition to machine-readable source on floppies. The front label and yellow index tabs on my copy were added by me at that time.
Format: 8.5"x11", left edge Velo binding, blue plastic front/back cover. Spine: CP/M SOURCE (written by Steve Ness). Pages are single-sided xeroxes of lineprinted originals. A few pages are misaligned, losing a little information at the margin. Each original page was rubberstamped with version/cr/serial# block. Each section consists of 1 header page (portrait) followed by multiple source pages (2-up landscape), with sections separated by single gray unprinted page. Some sections (and subsections) have a handwritten ID on the first page, and in some cases have VERSION and SER.# filled in. Each separator page has yellow index tab added by Steve Ness. Page counts below are sheet counts; e.g., ASM source is 72 original pages printed 2-up on 36 sheets. The original does not have page numbers.
Contents (click on Description to load PDF):
Page | Description | Pages | Lang. | ID | VERSION | SER. # | Comments |
---|---|---|---|---|---|---|---|
000 | Front cover | blue plastic; label (by Steve Ness): CP/M SOURCE | |||||
001 | Dear Digital Research Customer | 1 | portrait | ||||
002 | SOFTWARE LICENSE AGREEMENT | 1 | portrait | ||||
004 | MDS COLD START LOADERS | 1 + 2 | .asm | ||||
008 | CONSOLE COMMAND PROCESSOR (CCP) | 1 + 7 | .asm | CCP | |||
017 | BASIC DISK OPERATING SYSTEM (BDOS) | 1 + 10 | .plm | 1.3 | BDOS | ||
029 | MDS BASIC I/O SYSTEM (BIOS) | 1 + 4 | .asm | BIOS | |||
035 | CP/M ASSEMBLER (ASM) | 1 + 36 | .asm | ASM 1.0 | 1.3 | ASM 1.0 | |
073 | SYSTEM GENERATION (SYSGEN) | 1 + 3 | .asm | SYSGEN | SYSGEN | ||
078 | CP/M CONTEXT EDITOR (ED) | 1 + 12 | .plm | ED 1.0 | missing lines 738 to 748, see patch | ||
092 | STATUS PROGRAM (STAT) | 1 + 5 | .plm | STAT | |||
098 | DYNAMIC DEBUGGING TOOL (DDT) | 1 + 24 | .asm | ||||
125 | DDT UTILITIES | 1 + 6 | .asm | ||||
133 | PERIPHERAL INTERCHANGE PROGRAM (PIP) | 1 + 13 | .plm | 1.3 | PIP 1.5 | ||
148 | BATCH PROCESSOR (SUBMIT) | 1 + 3 | .plm | SUBMIT | |||
152 | Back cover | blue plastic |
Here's a compressed tarball of PDFs of individual pages (before rotation), and here's the entire source as as single PDF (huge!).
Scanned to PDF 3/21/14 - 3/30/14 by Steve Ness using HP6700: 300 dpi, b+w (except color for covers and separator pages), quality high. PDF pages rotated and combined using ImageMagick.
This page is dedicated to the memory of Gary Kildall, who left us much too soon.