Portable CP/M in C, CP/M-68K in Pascal

This Web page last updated date Sept 11 2015

To email me, see see my ordering Web page for my email addresses.

For more CP/M information, please check the HTML document I have on other CP/M versions. This document created Feb 27 2010 by Herb Johnson, updated Sept 11 2015. (c) 2015 Herbert R Johnson

In Feb 2010 in comp.os.cpm, Miguel Garcia AKA "floppy software" AKA "MikePcw" asked about "Portable CP/M", a C language based version of CP/M. Various persons responded with some skeptcism as to what this person was talking about.

It emerged that Digital Research developed a Z8000 version of CP/M with the help of Zilog in 1982 and 1983. The z8000 version was developed to run on the Olivetti M20 system. This version was written in C, likely due to a lack of a PL/M for the Zilog Z-8000, a 32-bit version of their Z80 processor family. The C version of CP/M has a close relationship to the 68000 version of CP/M, which apparently still uses CP/M utility programs written in PL/M.

The first Web archive where I found these C sources, was in the "CP/M unofficial archive" at: http://www.cpm.z80.de/source.html. Sources for many versions of CP/M are there, by permission of the current owners of that Digital Research intellectual property. See the "CP/M-8000" section for what they call "P-CP/M-Z8K SOURCES". There are versions for 1.1 and 1.3, and something which apparently is 1.0 . There is another section on that Web page, for CP/M-68K. All these were apparently put in the archive in 2002. The comments below about Personal CP/M are based on sources from this site obtained in Jan 2010.

I have more PCP/M information on another Web page.

Thanks to Miguel Garcia for informing me of another archive of CP/M software, at retroarchive.org. As of 2010, the file "DRIPAK.ZIP" on that site, has Personal CP/M and other sources and executables. Miguel contacted me again in Sept 2015, about information uncovered on P-CP/M and CP/M-68K development in Pascal: I've added that content here.

Downloading P-CP/M-Z8K 1.3 and inspecting the sources:

These files are from the CP/m unofficial archive at z80.de. P-CP/M-Z8k is a collection of .C and .H files for BIOS, BDOS, CCP, ED, PIP, and more. Not too many .Z8K (assembly) files. Headers for the files include references to "the portable CP/M environment", "P-CP/M" The BIOS.C file refers to the OLIVETTI M20 (Z8000 system) and has dated entries from 1982 and 1983 by S. Savitzky (Zilog) and F. Zlotnick (Zilog). There are references to "Language: Standard C" in some modules.

CCP.C has a header which says "P- CP/M: A CP/M derived operating system". Creation dates are 1982, copyright is by Digital Research. A few Digital Research personnel are listed; Tom Saulpaugh 7/13/82; David Heintz 10/26/82;. Modules you would expect to be CPU independent (ED.C) have DRI copyrights from 1981 and 1982, an DRI personnel including Bill Fitler Doug Huskey.

The PIP.C program has a long header with a description of the program's features, and the following history:

/*       Revised:							    */
/*            17 Jan 80  by  Thomas Rolander (MP/M 1.1)		    */
/*            05 Oct 81  by  Ray Pedrizetti  (MP/M-86 2.0)		    */
/*            18 Dec 81  by  Ray Pedrizetti  (CP/M-86 1.1)		    */
/*            29 Jun 82  by  Ray Pedrizetti  (CCP/M-86 3.0)		    */
/*	      24 Aug 82  by  Dave Sallume    (Translate to C)	    */
/*	      20 Sep 82  by  Dominic Dunlop  (PCP/M 2.2)		    */

STAT.C shows similar dates. It also has these statements:

/*	Common module for MP/M 2.0, MP/M-86 2.0, CP/M-80 2.2, CP/M-86 1.1   */
/*		    and Portable CP/M implementation (P-CP/M)		    */
/*									    */
/*            Copyright(C) 1975, 1976, 1977, 1978, 1979, 1980, 1981	    */
/*            Digital Research						    */
/*            Box 579							    */
/*            Pacific Grove, Ca					   */
/*            93950							    */
/*									          */
/*            Revised:							          */
/*              20 Jan  80  by Thomas Rolander				    */
/*              29 July 81  by Doug Huskey (for MP/M 2.0)		    */
/*              02 Sept 81  (for MP/M-86)				          */
/*              14 Nov  81  by Doug Huskey (for CP/M-86)		    */
/*	          21 Sept 82  by Zilog (translate to C)			    */
/*									    */
/*									    */
/* Modified 10/30/78 to fix the space computation			    */
/* Modified 01/28/79 to remove despool dependencies			    */
/* Modified 07/26/79 to operate under CP/M 2.0			
[more comments]
/*					Dominic Dunlop, Zilog Inc.  10/20/82    */

MAKEFI. file is the make file. It's headed with "Makefile for Portable CP/M Peripheral Interchange Program, PIP" and "Author: D Dunlop, Zilog Inc. 11/19/82".

Downloading CP/M-68K 1.2 and inspecting the sources:

These files are from the CP/m unofficial archive at z80.de. Some of the C programs are dated 1982, but have "mods" dated 1983 and 1984. But comments are dated as early as Jan 1980. A few sources note "Configured for Alcyon C on the VAX". A CP/M version number of 2.2 was used. A doc file has notes: "Also in user 15 are the sources for ED, PIP, and STAT. These require the Hitachi Super PL/H compiler, which we also can't distribute. The port to the Z-8000 involved re-coding these in C. We will try to incorporate the C versions into the next release." This information seems to confirm the CP/M Z8000 version came after the 68K version.

A general Google search for "Portable CP/M" was not very fruitful. It may be that the name "Portable CP/M" was an internal reference at DRI. Possibly, after DRI generated a product for a specific processor or system, customers and OEM's would simply have their own named versions. This is conjecture on my part.

Herb Johnson, Feb 2010

Additional information, Sept 2015

Garcia wrote to me Sept 11th 2015 with more information as follows:

"There is a little post in comp.os.cpm, about the CP/M-68K in Pascal, that could be of interest for you, and your very interesting pages about the CP/M and DRI history. I contacted recently with Mr. Lehman, the author of the CP/M-68K written in Pascal, [also] of Pascal/MT, Digital Research C, and a lot more. Thanks and regards, Miguel Garcia,
aka FloppySoftware and MikePcw.
from Spain

In his comp.os.cpm post, Miguel Garcia reviewed some DRI documents from the "Unofficial CP/M" archive and reported on them in the Usenet comp.os.cpm. With his permission here's a copy of his post with minor edits. - Herb Johnson

notes on CP/M 68K and PCP/M development by Miguel Garcia

While searching information on TEX from DR, I have found a CP/M-68K internal doc. with interesting information. It is a memo called cpm0706.nro regarding the development of CP/M-68K. This file is in the v101 directory of cpm68k1.zip file, downloaded time ago from the Unofficial CP/M Website [at cpm.z80.de]".

In the memo, there are two interesting things:

- There was a CP/M written in Pascal.
- Portable CP/M (CP/M coded in C) was a DR product...

[an edited copy of the memo is after Miguel's comments]

[Also:] while surfing the net searching for a CP/M thing, I found [a resume for Michael G Lehman] as follows:

From:   1981                 Digital Research, Inc. (DRI)
To:     1984                 Pacific Grove, CA
Title:                 Director of Research and Development/VP Languages

*       Wrote a version of CP/M in Pascal/MT+68k for the Motorola 68000 processor.

Then, it's seems confirmed: there was a CP/M-68K written in Pascal!

... I found another reference:

Michael Lehman  23 Aug 2004 10:40 AM
Pascal/MT+ was used to create many successful products as well as the first version of CP/M 68K (in 1982).

Maybe it has been discovered another forgotten CP/M history page!

[In early Sept 2015] Mr. Lehman replied to [my recent query to him,] that he did write a prototype for CP/M-68K in early 1982. It was written in Pascal/MT+68K which was also a prototype at that time. He wrote the file system with the CCP commands DIR, ERA, REN, TYPE, etc. Later, there was a debate about if they would go to a complete Pascal version, or to a new version in the C language. We already know what happened (from the DR memor ndum). Unfortunately, it seems that sources and binaries are lost.

- Miguel Garcia

[Miguel added in correspondence with me personally:]

Mr. Lehman is the author of Pascal/MT, Digital Research C, and a lot more. ...he later went to DR as a director, as confirmed by him to me. Then he wrote the CP/M-68K prototipe in Pascal, and the Digital Research C for CP/M-86. He was there for 4 or 5 years. You can found his CV in his own website." - Miguel Garcia

DRI memo on CP/M-68K

This is a memo called cpm0706.nro, regarding the development of CP/M-68K. This file is in the v101 directory of cpm68k1.zip file, downloaded time ago from [the sources directory of the] Unofficial CP/M Website [at cpm.z80.de]". The text was found and edited by Miguel Garcia and provided in comp.os.cpm. It is here with permission from Miguel. - Herb Johnson

Memo: Vincent Alia
        Ruth Driscoll
        Bill Fitler
        Bob Herlien
        Tim McCormick
        Bill  Tyler xc: Tom Rolander 
Re: Minutes of CP/M-68K Status Meeting 07/06 
From: Steve Williams

As we discussed this morning, the status of the CP/M-68K project is as follows:

BDOS -- The BDOS is 99% coded, lacking only the Set exception vector, program chain and flush buffers functions. Approximately 60% of this code is tested. Bob has committed to a working BDOS by 7/16.

CCP -- The CCP lacks BATCH processing. It is felt that this is a desirable feature, but that the system would be usable without it. BATCH processing is therefore a candidate for featurectomy if need be.

Bootstrap -- No progress has been made on a bootstrap loader for CP/M on the EXORmacs. DDT --- DDT lacks File I/O and program load functions. It is not usable without program load. Bill has promised program load by 7/12. File I/O is another candidate for featurectomy.

Diskette Format Utility -- Nothing has been done about a diskette format utility for the EXORmacs.

Utilities -- A problem exists somewhere between XLINK and the Motorola linker. Initialized data areas in the utilities do not have the right values in the right places after the link process. Chaki will attempt to use the Alcyon linker to correct this problem. ED and STAT work completely when linked into the system. Debugging is starting on the PIP utility. There is some problem with random I/O which needs to be fixed to complete this debugging. Bob will coordinate with Chaki to resolve the problem.

Assembler / Linker -- No further work has been done on the Alcyon assembler / linker since getting these to work on the VAX under VMS. Work will begin this week on re-hosting this software to run under CP/M-68K.

C Runtime Library -- Bill Fitler joined the project team today as the C runtime library person. A specification for this library now exists, and work will begin immediately. Bill has promised a schedule by the end of the week.

C Compiler -- Barring unforeseen problems, we will receive the source code to the Alcyon compiler 7/12. This will be put up on the VAX using the same interface library used to port the assembler and linker.

Documentation -- Ruth has promised an outline for the Programmer's Manual by 7/8, and also to begin writing this manual on that date. We will be using the Motorola 68000 book plus Bill Allen's documentation for the assembler and linker, at least for B-testing purposes.

Quality Assurance -- Vincent distributed the attached assurance plan. Bob, Bill and Chaki must coordinate with him on getting time on the EXORmacs. I will be assuming the role of Q/A interface person.

Other Issues -- The following decisions were reached by myself and Tom Rolander 7/6: The Pascal version of CP/M-68K must be translated into C and shipped as a product as soon as possible following the preliminary release. This will entail a second field test. Portable CP/M will have to wait. I will manage this conversion project. pricing is in line with CP/M-86.

From Last Week -- No minutes were distributed from last week's meeting. Here are the key decisions that were made: portions of the code. serialization utilities. (Serialization does not have to be ready 7/31). work under CP/M-68k. a Programmer's Guide, a User's Guide, and a Quick Reference. For the 7/31 shipment, the following items have priority: Programmer's Guide. The Alcyon documentation on the assembler and linker plus the Motorola book on the 68000 must serve for documentation on the assembler / linker programs. The CP/M-86 User's guide must serve as documentation for user commands. It was also decided that the ".COM" file equivalent for CP/M-68K would be ".68K". Submit files would have the extension ".SUB". The "SUBMIT " command prefix will be optional. The ability to retrieve ALL directory entries in SEARCH functions by coding a "?" in the drive field of the FCB under CP/M 2.2 will be preserved under CP/M-68K.

--end of memo--

Copyright © 2015 Herb Johnson, other copyrights from producers of content here

Herb Johnson
New Jersey, USA
to email @ me follow this link