Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Tracing the Evolution of CP/M-80

160 views
Skip to first unread message

hha...@hartetec.com

unread,
Jun 4, 2006, 2:55:48 AM6/4/06
to
Recently, I was wondering how different the various released versions
of CP/M were, relative to each other. I was wondering if CP/M evolved
in an organized fashion, or if each release was put together in a
haphazard way. I've looked at various parts of CP/M source code from
The Unofficial CP/M Web Site and I got the feeling, from looking at the
contents of each archive, at separate times, that these were
"snapshots" of someone's development directory.

In order to trace the evolution of CP/M-80, I started with the CP/M-80
2.0 sources, and checked them into a fresh Subversion repository. Next,
I made a Tag for the CP/M 2.0 sources, so that I could easily return
back to those files in the future. Then, I put the CP/M 2.2 sources in
my Subversion workspace, and did a file-by-file 'diff' comparison
using the TortoiseSVN client for Windows. Then, on files that matched
between CP/M 2.0 and 2.2, I reverted the workspace copy back to the
CP/M 2.0 copy, so that when I checked the CP/M 2.2 files in, I would
only update the changed files. I repeated this process for the CP/M
3.0, and for the CP/M 3.0 with Y2K fixes and DRI patches applied. What
I ended up with was a history of CP/M-80 from v2.0 through 3.0 (Y2K),
and it is interesting to trace the history of CP/M this way, and see
how the operating system evolved.

(download links are on my BLOG here:
http://hartetechnologies.com/Happenings/nfblog/)

For your hacking enjoyment, I'm providing a ZIP'd copy of the CP/M
Subversion Repository (1.25MB) as well as the version of the Subversion
for Windows that I used (3.18MB) to create this Repository, and the
TortoiseSVN for Windows (7.43MB) that I used.

If you install TortoiseSVN and Subversion (may require a reboot,) and
then download and un-ZIP the CP/M Subversion Repository (1.25MB) , and
then use the TortoiseSVN extensions to Windows Explorer to browse the
repository, this makes seeing the difference between versions of CP/M
much easier. In addition, tags are provided for each release of CP/M
from 2.0 to 3.0 (Y2K).

I was not able to find much in the way of source for CP/M 1.4, but it
would be very interesting to see how CP/M evolved from 1.4 to 2.0. It
appears that from 2.0 to 2.2, the primary changes were bugfixes. From
2.2 to 3.0, many new utilities were added. I did do a binary comparison
between some of the .COM files provided with CP/M 1.4 and CP/M 2.2, and
it appears that a lot changed.

I will leave it as an exercise to the reader, and a challenge to CP/M
enthusiasts, to dig up the 1.4 code (or disassemble it based on the
binaries, and use the code from 2.0 to try to reconstruct the source as
closely as possible.) If more of the CP/M 1.4 source is found, I'd
greatly appreciate if this code would be made public, and posted on the
The Unofficial CP/M Web Site.

Another interesting exercise would be to try and see where MP/M-I and
MP/M-II branched from CP/M, and what files are common between them.

-Howard

nos...@nouce.bellatlantic.net

unread,
Jun 4, 2006, 11:04:25 AM6/4/06
to
Briefely:

CP/M 1.x was really the beginning but from 1.2 though 1.4 the were
some significant internal work. V1.4 was the common and first really
wide ranging version. It was coded in PL/M though you can find asm
sources (by disassembly or compiled PLM source). The BIOS lacked
the ease of disk reconfiguration that later versions had. The
assumptions of disk structure were in the BDOS and they were sectors
128bytes, tracks 77 and sectors per track being 26 (standard 241kb
SSSD 8" floppy). To fit 1.4 to another smaller disk system like NS*
(5.25" 82kb) required getting inside the bdos, find and alter the
internal disk size constants.

CP/M 2.x 2.0 was first release new version, 2.2 is the common version
and was only bugfixes. It was PL/M source but I suspect the ASM
result was hand tuned. Big change was moving the disk interface out
of the BDOS into the BIOS. That changed the BIOS both in data
structures and call list. The calls added were sectran, and liststat
but the data provided to the diskIO calls also signaled the needed
inforamtion for easier disk deblocking. The bios changes allow for
disk easier configuration and adds the data tables DPH/DPB so any
disk can be interfaced. The result was that 2.x was easily ported
to any 8080/8085/z80 hardware.

CP/M 3.0 is a new release. Extends the 2.0 to includes some of the
MPM bank features. 3.0 also breaks the 8mb logical disk barrier
increasing it to 32Mb. Adds a number of system calls of the MPM
flavor.


Allison

On 3 Jun 2006 23:55:48 -0700, "hha...@hartetec.com"

s_dub...@yahoo.com

unread,
Jun 4, 2006, 11:21:06 PM6/4/06
to

hha...@hartetec.com wrote:
> Recently, I was wondering how different the various released versions
> of CP/M were, relative to each other. I was wondering if CP/M evolved
> in an organized fashion, or if each release was put together in a
> haphazard way. I've looked at various parts of CP/M source code from
> The Unofficial CP/M Web Site and I got the feeling, from looking at the
> contents of each archive, at separate times, that these were
> "snapshots" of someone's development directory.
>
I've the same feeling, not only of cp/m-80 but cp/m-86 as well. One
point is that all of the sources should be taken in aggregate. From a
version of source collections of MP/M-86 [compupro], for example, was
the source for the BDOS portion of the _Loader_ program, meaning the
secondary bootstrap found on the system tracks, and at that time, those
loader programs were a lite version of the OS itself, [ex. read
functions, but not the writes]. In the source file, LDBDOS.A86, are
the comments, " 5 september, 1980 smaller version of BDOS for CP/M-86
Loader". Reviewing the BDOS entry module, LBDOSENT.A86, it starts out
identically to cp/m-80 with the 6 byte s/n, the a jmp instruction which
jumps over the next 4 error subroutine addresses. As an exercise, I've
taken the cp/m-80 v2.2 code and run it thru the 8080->8086 translator
XLT-86, and what you get is something very close and recognizable to
the cp/m-86 source, such as it is, in the stripped down _Loader_
source. The same module's comments delineate between the 'old' 8080
bdos calls and the 'new' 8086 functions.

> In order to trace the evolution of CP/M-80, I started with the CP/M-80
> 2.0 sources, and checked them into a fresh Subversion repository. Next,
> I made a Tag for the CP/M 2.0 sources, so that I could easily return
> back to those files in the future. Then, I put the CP/M 2.2 sources in
> my Subversion workspace, and did a file-by-file 'diff' comparison
> using the TortoiseSVN client for Windows. Then, on files that matched
> between CP/M 2.0 and 2.2, I reverted the workspace copy back to the
> CP/M 2.0 copy, so that when I checked the CP/M 2.2 files in, I would
> only update the changed files. I repeated this process for the CP/M
> 3.0, and for the CP/M 3.0 with Y2K fixes and DRI patches applied. What
> I ended up with was a history of CP/M-80 from v2.0 through 3.0 (Y2K),
> and it is interesting to trace the history of CP/M this way, and see
> how the operating system evolved.
>

Excellent idea for software archeology!

> (download links are on my BLOG here:
> http://hartetechnologies.com/Happenings/nfblog/)
>
> For your hacking enjoyment, I'm providing a ZIP'd copy of the CP/M
> Subversion Repository (1.25MB) as well as the version of the Subversion
> for Windows that I used (3.18MB) to create this Repository, and the
> TortoiseSVN for Windows (7.43MB) that I used.
>
> If you install TortoiseSVN and Subversion (may require a reboot,) and
> then download and un-ZIP the CP/M Subversion Repository (1.25MB) , and
> then use the TortoiseSVN extensions to Windows Explorer to browse the
> repository, this makes seeing the difference between versions of CP/M
> much easier. In addition, tags are provided for each release of CP/M
> from 2.0 to 3.0 (Y2K).
>
> I was not able to find much in the way of source for CP/M 1.4, but it
> would be very interesting to see how CP/M evolved from 1.4 to 2.0. It
> appears that from 2.0 to 2.2, the primary changes were bugfixes. From
> 2.2 to 3.0, many new utilities were added. I did do a binary comparison
> between some of the .COM files provided with CP/M 1.4 and CP/M 2.2, and
> it appears that a lot changed.
>

> I will leave it as an exercise to the reader, and a challenge to CP/M
> enthusiasts, to dig up the 1.4 code (or disassemble it based on the
> binaries, and use the code from 2.0 to try to reconstruct the source as
> closely as possible.) If more of the CP/M 1.4 source is found, I'd
> greatly appreciate if this code would be made public, and posted on the
> The Unofficial CP/M Web Site.
>

I'm presuming the v1.4 is the June 1975 version? If so, the pl/m
source is already there:

http://www.cpm.z80.de/download/cpm_plm.zip

It has the separate BIOS and BDOS refered to as the FDOS in the same
BDOS.PLM file, and a separate CCP.PLM file.

I don't know what dialect of pl/m that source is, I can't get very far
with the DRI pl/m nor the intel-86 pl/m. But it fits Allison's
description for 8" diskettes & v1.4.

hha...@hartetec.com

unread,
Jun 5, 2006, 12:24:01 AM6/5/06
to

s_dub...@yahoo.com wrote:
> I'm presuming the v1.4 is the June 1975 version? If so, the pl/m
> source is already there:
>
> http://www.cpm.z80.de/download/cpm_plm.zip
>
> It has the separate BIOS and BDOS refered to as the FDOS in the same
> BDOS.PLM file, and a separate CCP.PLM file.
>
> I don't know what dialect of pl/m that source is, I can't get very far
> with the DRI pl/m nor the intel-86 pl/m. But it fits Allison's
> description for 8" diskettes & v1.4.
>

Interesting that CP/M 1.4 has the BDOS and CCP written in PL/M. The
later CP/M versions have these as assembly language files. Do you
think the CP/M 1.4 .ASM files generated by the PL/M compiler were used
to create the foundation of the later CP/M 2.0, 2.2, ... BDOS and CCP?
Maybe DRI felt that hand optimizing the PL/M-generated assembly, and
extending that yielded better results than moving forward with PL/M as
the source for those critical parts of the OS.

What about the 1.4 utilities? Is the PL/M for those available
somewhere? Doing a binary comparison between the 1.4 and 2.0 utilities
indicates that the 2.0 utilities were extended quite a bit, not just
patched with bugfixes.

-Howard

hha...@hartetec.com

unread,
Jun 5, 2006, 12:30:05 AM6/5/06
to
> s_dub...@yahoo.com wrote:
> > I'm presuming the v1.4 is the June 1975 version? If so, the pl/m
> > source is already there:
> >
> > http://www.cpm.z80.de/download/cpm_plm.zip
> >
> > It has the separate BIOS and BDOS refered to as the FDOS in the same
> > BDOS.PLM file, and a separate CCP.PLM file.
> >
> > I don't know what dialect of pl/m that source is, I can't get very far
> > with the DRI pl/m nor the intel-86 pl/m. But it fits Allison's
> > description for 8" diskettes & v1.4.
> >

It seems that CP/M is similar to some of the DEC PDP operating systems,
like RT-11, from a user interface perspective. (ie, PIP is a dead
giveaway, as is are the format of command line options, and the CP/M 3
HELP utility is much like that of RT-11 and even VMS.) Since later
CP/M sources were compiled with a VAX, it seems plausable that DRI
could have used a PDP-11 to compile the earlier versions of CP/M. Are
there any PL/M compilers for the PDP-11?

-Howard

primo

unread,
Jun 5, 2006, 1:46:56 AM6/5/06
to
On 4 Jun 2006 21:30:05 -0700, "hha...@hartetec.com"
<hha...@hartetec.com> wrote:


>It seems that CP/M is similar to some of the DEC PDP operating systems,
>like RT-11, from a user interface perspective. (ie, PIP is a dead
>giveaway, as is are the format of command line options, and the CP/M 3
>HELP utility is much like that of RT-11 and even VMS.) Since later
>CP/M sources were compiled with a VAX, it seems plausable that DRI
>could have used a PDP-11 to compile the earlier versions of CP/M. Are
>there any PL/M compilers for the PDP-11?

I have it in the back of my mind that the early work on cp/m was done
on a pdp-10.

I don't know if the compiler is still available, but there are
emulators for the early Dec pdp models as well as full operating
system images so that someone could emulate a pdp-10 if they wanted
to.

nos...@nouce.bellatlantic.net

unread,
Jun 5, 2006, 7:29:07 AM6/5/06
to
On 4 Jun 2006 21:24:01 -0700, "hha...@hartetec.com"
<hha...@hartetec.com> wrote:

>
>s_dub...@yahoo.com wrote:
>> I'm presuming the v1.4 is the June 1975 version? If so, the pl/m
>> source is already there:
>>
>> http://www.cpm.z80.de/download/cpm_plm.zip
>>
>> It has the separate BIOS and BDOS refered to as the FDOS in the same
>> BDOS.PLM file, and a separate CCP.PLM file.
>>
>> I don't know what dialect of pl/m that source is, I can't get very far
>> with the DRI pl/m nor the intel-86 pl/m. But it fits Allison's
>> description for 8" diskettes & v1.4.
>>
>
>Interesting that CP/M 1.4 has the BDOS and CCP written in PL/M. The
>later CP/M versions have these as assembly language files. Do you
>think the CP/M 1.4 .ASM files generated by the PL/M compiler were used
>to create the foundation of the later CP/M 2.0, 2.2, ... BDOS and CCP?

Yes, though from what I can tell the 2.x sources are originally pl/m.

>Maybe DRI felt that hand optimizing the PL/M-generated assembly, and
>extending that yielded better results than moving forward with PL/M as
>the source for those critical parts of the OS.

PL/M is pretty optimal for 8080. However it does do redundant pushes
and pops as part of it's parameter passing.

>What about the 1.4 utilities? Is the PL/M for those available
>somewhere?

Yes.

> Doing a binary comparison between the 1.4 and 2.0 utilities
>indicates that the 2.0 utilities were extended quite a bit, not just
>patched with bugfixes.

Yes, the OS had a richer set of calls and the utilities had to do
things like USR.

Allison

nos...@nouce.bellatlantic.net

unread,
Jun 5, 2006, 7:58:58 AM6/5/06
to
On 4 Jun 2006 21:30:05 -0700, "hha...@hartetec.com"
<hha...@hartetec.com> wrote:

PiP goes back to PDP10 and OS/8. PDP11 and RT11 were never
associated with CP/M. The Command line language is very similar for
all DEC OSs.

The CP/M 3 help is decidely VMS and even RT-11 aquired that from VMS.

The early CP/M were cross compiled on a PDP10 timeshare system.
Later indicators suggest a INTEL MDS running PL/M was used. VAX
(Actually a VAX 11/750 running VMS) wasnt until around 81 or 82 maybe
later as the 11/750 didnt exist before that.

One of the oddities from a historical perspective is managing the time
compression thats perceived when looking back. There is a long window
of nearly 7+ years from first versions of CP/M (1975) to CP/M 3.

The other oddity is that CP/M was most commonly purchased (not stolen)
and also most frequently disassembled (for mods and understanding).
As a result there are more preserved copies of the disassembly than
the originating sources. Added to this the archives are often impure
as they may contained patched (publicly known improvements) or even
back/forward copied utilities.

The best archives are those that Gaby has and likely the most
complete. Those were started as the Tim Olmstead "unofficial CP/M
Archive" under the agreement with Lineo (heirs to DRI). That torch
was later passed to Gaby by prior arrangement when Tim passed. I
know much if this as I have a copy (on CD) of Tim's original as part
of his effort to insure it stayed on the net "unofficial CP/M
archive" and had helped him with others contributing to build and
assemble it. This is documented on Gaby's site.

It doesnt hurt that I was an early adoptor and continued with it from
there on. Also from '75 through '79 there were a number of east
coast (NJ and Philly) computer shows (PCC and TCF) I'd made a
point to attend and hit the various OS seminars at. I was able to
watch CP/M develop and hear about it from Gary Killdal and other
developers they made the shows.


Allison

s_dub...@yahoo.com

unread,
Jun 5, 2006, 8:04:02 PM6/5/06
to
hha...@hartetec.com wrote:
> s_dub...@yahoo.com wrote:
> > I'm presuming the v1.4 is the June 1975 version? If so, the pl/m
> > source is already there:
> >
> > http://www.cpm.z80.de/download/cpm_plm.zip
> >
> > It has the separate BIOS and BDOS refered to as the FDOS in the same
> > BDOS.PLM file, and a separate CCP.PLM file.
> >
> > I don't know what dialect of pl/m that source is, I can't get very far
> > with the DRI pl/m nor the intel-86 pl/m. But it fits Allison's
> > description for 8" diskettes & v1.4.
> >
>
> Interesting that CP/M 1.4 has the BDOS and CCP written in PL/M.

Well, Gary wrote PL/M for Intel. And CP/M was the demonstration of
PL/M's use. As the story goes, Intel wanted the PL/M for its
development system and wasn't interested in CP/M so it ended up back in
Gary's lap and henceforth DRI [perhaps it is more correct to say the
Disk Monitor rather than call it CP/M at that point in time]. PL/M was
a very good optimizing compiler. IIRC, according to the French Luser,
some 300 code generation patterns are optimized. Gary wrote a thesis
on code optimization technique and, more amazing to me, a mathematical
proof of its correctness!

> The
> later CP/M versions have these as assembly language files. Do you
> think the CP/M 1.4 .ASM files generated by the PL/M compiler were used
> to create the foundation of the later CP/M 2.0, 2.2, ... BDOS and CCP?

I thought the output of the PL/M was intel .HEX, although the later
intel product, PL/M-86 has a directive to generate pseudo assembly in
the listing file. Frankly, I'm not too familiar with those tools.

But nonetheless, CP/M 1.4 is the foundation for 2.0 & 2.2, instead of
the static 8" IBM Standard diskette layout, 2.0 opened up the Tables to
other formats. But the basic form of separate logical BDOS and
physical BIOS was already established. It's just that v2.0 added USER
numbers and a flexible method for diskette media variety. Was it then
that PRL support was added?

> Maybe DRI felt that hand optimizing the PL/M-generated assembly, and
> extending that yielded better results than moving forward with PL/M as
> the source for those critical parts of the OS.
>

Perhaps, but there are public comments by Gary for the preference of
PL/M over assembly. And, on into CP/M-86, some of the utilities are
written in PL/M. But perhaps more to the point, is it that block
structured languages, such as PL/M, are more suited to applications,
than OS parts which don't tend to be block structured?? IMO, strictly
speaking, CP/M isn't block structured because on program termination it
resets state when it reloads the CCP.

> What about the 1.4 utilities? Is the PL/M for those available
> somewhere? Doing a binary comparison between the 1.4 and 2.0 utilities
> indicates that the 2.0 utilities were extended quite a bit, not just
> patched with bugfixes.
>

Well, there is LOAD.PLM, a utility to load from paper tape connected to
the aux port, in with the CCP.PLM and BDOS.PLM, but ED.PLM and PIP.PLM
are not there. But in the cpm80 v2.0 source there is ED.PLM, STAT.PLM,
SUBMIT.PLM and PIP.PLM modified for v2.0.

Steve

> -Howard

French Luser

unread,
Jun 6, 2006, 4:05:20 AM6/6/06
to
Hello, Howard!

> Recently, I was wondering how different the various released versions
> of CP/M were, relative to each other. I was wondering if CP/M evolved
> in an organized fashion, or if each release was put together in a
> haphazard way.

I am afraid that you are forgetting the obvious: the BDOS system calls...

In my humble opinion, you could have some answers just by looking to the list
of system calls for each of the versions of the BDOS. (As far as I know, there
were 3 versions of BDOS (BDOS 1 (the ancestor of BASIC-E was for CP/M 1.2),
BDOS 2 wich is the best known to Americans (CP/M 2.2), and BDOS 3 (CP/M Plus,
more familiar to Europeans)).

This was for single-users.

I am not sure for MP/M, but CP/M Plus is a single-user single-tasking version
of MP/M II, so I think that MP/M (1) was already using BDOS 3.

Graphics were using BDOS call #115.

CP/Net system calls are much older than that, since they were in the 60s.

By the way, this remainds me: John Elliott has listed all the system calls,
with the names of the DOSes using them. You should have a look to his Web
site.

Also, don't forget "Personal CP/M", that is to say: CP/M 2.8 booting from ROM.
I seem to remember that is is using some high numbers.

Then, there are the 16-bits version and it is a mess, since the first version
was returning 0022h, just like 8-bit CP/M 2.2! However, later on, a more
logical 16-bit numbering scheme for "BDOS Version Numbers" was introduced (I
pubished it on the comp.os.cpm Newsgroup several years ago).

It is also interesting to list the system calls numbers used by multi-tasking
versions of CP/M.

As far as I know, there was never a BDOS 4.

As for your question:
> (...) I was wondering if CP/M evolved


> in an organized fashion, or if each release was put together in a
> haphazard way.

I am afraid, from memory, that the BDOS system calls numbers indicate that
CP/M evolved "in a haphazard way", since some BDOS system calls dealing with
one subject are not in sequence...

However, who would have believed that such a simple DOS, with less than 40
system calls, would be able to grow enough to become a multi-tasking,
multi-user DOS (MP/M II on a mere Z-80 running at 4-MHz), then would be able
to support Networks (CP/Net: by the way, Howard, Gaby has now CP/Net 1.2...)?

You or someone else also raised a question dealing with PL/M that I have
forgotten. The definite reference is the "8008 and 8080 PL/M User's Guide".
Herb Johnson sells photocopies of it. Inside it, you will find the names of
the mainframe computers that were running PL/M. To repeat what I have already
said many, many times: Gary Kildall was using an IBM S/360 at the NPS, and a
DEC PDP-10 at Intel. It is only 2 years after he left Intel that the MDS
version of PL/M appeared. During his Intel days, he made all his work on
Mainframes. That's why all the (old) PL/M programs that I know were generating
Intel HEX files: to transfer them from the Mainframe to the 8-bit Intellec 8
then MDS.

I hope not to have forgotten anything.

Yours Sincerely,
"French Luser"

French Luser

unread,
Jun 6, 2006, 4:34:11 AM6/6/06
to
Steve Dubrovich wrote:

> Well, Gary wrote PL/M for Intel. And CP/M was the demonstration of
> PL/M's use. As the story goes, Intel wanted the PL/M for its
> development system and wasn't interested in CP/M so it ended up back in
> Gary's lap and henceforth DRI [perhaps it is more correct to say the
> Disk Monitor rather than call it CP/M at that point in time]. PL/M was
> a very good optimizing compiler. IIRC, according to the French Luser,
> some 300 code generation patterns are optimized. Gary wrote a thesis
> on code optimization technique and, more amazing to me, a mathematical
> proof of its correctness!

Ho, boy! Steve, how can you mix so many things? Haven't read all my posts over
the years?

<Sigh!> Ok. Let us try to set straight a few things.

- "Gary wrote PL/M for Intel". Yes.

- "And CP/M was the demonstration of PL/M's use." According to Gary Kildall in
his DDJ article, once he had PL/M running on Mainframes, he wanted to have it
on the Intellec 8, so that turnaround times would be smaller. But, to run a
compiler, you need some sort of cassette tape Operating System or Disk
Operating System. At the time, 8" floppy diskettes were the great novelty, and
he was using them on his IBM S/360 at the NPS... so, why not try to fit a
floppy disk drive to his Intellec 8? As he wrote, he was unable to make the
electronic card, and the hardware project was stopped one year, during which
he improved and improved PL/M and CP/M so much that he was convinced that it
was working correctly, as he could see on his simulator. Then he met John
Torode... and the rest is history!

- "As the story goes... point in time]." The 8080 CPU was so successful that
Intel decided to put all his resources to production of the hardware, and
jettisoned the "Intel Software Group" made of 3 persons (whose names are given
in an old issue of DDJ, one of the 3 being, of course, Gary Kildall).

- "PL/M was a very good optimizing compiler." AAArrrggghhh!!! Steve! You!
NO!!! Not PL/M (my disassemblies of old PL/M programs show that PL/M was
surrounding procedures with jumps), but PL/I-80!

- "IIRC, according to the French Luser, some 300 code generation patterns are
optimized." NO: in several articles explaining PL/I-80, Gary Kildall spend a
lot of time explaining to the people using CP/M at this time that PL/I-80 was
the only one optimizing compiler ever written for CP/M (since it was to become
the official PL used by DRI over its family of DOSes). In several of his
articles, Gary explains what PL/I does to produce such a good code and, in one
of those articles, he mentions that more than 300 patterns are optimized by
the 3rd pass.

- " Gary wrote a thesis on code optimization technique and, more amazing to
me, a mathematical proof of its correctness!" Yes. If you have any interest in
compilers, the standard text is nicknamed the "dragon book". Every compiler
writer under Unix has read it. The reference of this book lists several papers
by Gary Kildall on the subject of code optimisation, for which he got a Ph.D.

> (...) It's just that v2.0 added USER


> numbers and a flexible method for diskette media variety. Was it then
> that PRL support was added?

PRL are used by MP/M to relocate programs in memory.

> Perhaps, but there are public comments by Gary for the preference of
> PL/M over assembly. And, on into CP/M-86, some of the utilities are
> written in PL/M.

In CP/M-86 Plus, only 3 programs are written in 8086 assembly language:
everything else is in PL/M.

Must leave: the cybercafe is closing.

Yours Sincerely,
"French Luser"

Herb Johnson

unread,
Jun 6, 2006, 12:28:33 PM6/6/06
to
1) "French Luser" is posting about the history of Gary Kildall as
regards the development of CP/M. There are a number of Web sites which
provide either that history directly, or have copies of articles
written by Kildall. To my knowledge they will confirm all of what
"Luser" has posted. I think it's informative to know that history in
any review of CP/M before V2.2. It's interesting in any case, at least
to me.

2) A history of early CP/M should include the release of IMDOS by
IMSAI, as that represents one of the earliest versions of what became
CP/M. This statement is confirmed by accounts at:

http://www.imsai.net/history/imsai_history/cp-m_history.htm

where IMSAI staffer Todd Fischer states outright that he worked with
Kildall on "various permutations of rev. 1.2 and 1.3 on the IMSAI FDC
and DIO floppy systems". According
to information posted by Todd from IMSAI staffer Joe Killian, Glenn
Ewing (a colleague of Kildall at the Naval school) worked closely with
Kildall to develop IMDOS. The discussion posted at imsai.net dovetails
nicely with the history posted in this thread by "Luser".

3) An early version of IMDOS should be available at the "unofficial"
CP/M Web site at:

http://www.cpm.z80.de/binary.html

as "early CP/M" under "CP/M 1.x". Text inspection of the object files
suggest dates of 1976 and 1977 and 1978, consistent with the info
referenced on Fischer's site. A Web search for IMDOS may also be
informative and find other files.

Note: I've used the word "staffer" or "colleague" to establish a strong
association between persons or with an organization; not to argue about
the specifics of that linkage. Refer to sources referenced for
specifics.

Herb Johnson

Herbert R. Johnson, New Jersey USA
<a href="http://retrotechnology.com/herbs_stuff/"> web site</a>
<a href="http://retrotechnology.net/herbs_stuff/"> domain mirror</a>
my email address: hjohnson AAT retrotechnology DOTT com
if no reply, try in a few days: herbjohnson ATT comcast DOTT net
"Herb's Stuff": old Mac, SGI, 8-inch floppy drives
S-100 IMSAI Altair computers, docs, by "Dr. S-100"

Barry Watzman

unread,
Jun 6, 2006, 12:59:11 PM6/6/06
to
Herb,

IMDOS, at least as a public release, came after CP/M 1.3 and very close
to 1.4, but well before 2.x. In fact, I have a copy of IMSAI CP/M 1.33
here, which predated IMDOS.

John Elliott

unread,
Jun 6, 2006, 2:12:37 PM6/6/06
to
French Luser <Bill....@microsoft.com> wrote:
: As far as I know, there was never a BDOS 4.

I hope you meant to qualify that with "8-bit". There was a 16-bit BDOS 4,
and indeed a nearly identical BDOS 5.

--
------------- http://www.seasip.demon.co.uk/index.html --------------------
John Elliott |BLOODNOK: "But why have you got such a long face?"
|SEAGOON: "Heavy dentures, Sir!" - The Goon Show
:-------------------------------------------------------------------------)

Herb Johnson

unread,
Jun 6, 2006, 3:32:17 PM6/6/06
to
Barry Watzman wrote:
> Herb,
>
> IMDOS, at least as a public release, came after CP/M 1.3 and very close
> to 1.4, but well before 2.x. In fact, I have a copy of IMSAI CP/M 1.33
> here, which predated IMDOS.

Thanks for this info. Certainly the first IMDOS was before CP/M 2.2. I
assumed that IMSAI's earliest Kildall-based OS's were called IMDOS and
not called CP/M. But they may have been casual about what they called
it, when. I don't recall at the moment any non-IMSAI distributions or
uses of a version 1.3. Version 1.4 became a general distribution of
CP/M and it became much more well-known about that time because it was
easily ported and it provided all the tools and docs needed to do so.
That, and the modest price, was Kildall's great achivement.

Fischer's site has some date info for IMDOS and CP/M development.I
don't know what version of IMDOS is on the "unofficial CP/M Web site".
Barry, it would be informative if you did the courtesy of (hex/text
dump) comparison of those files on that Web site versus whatever files
you can pull from your original labled (or copy?) IMDOS disks. (Reading
old IMDOS disks may not be trivial as the earliest IMSAI drive
controller was not built around a single chip FDC. Also some early
floppy drives were notorious for alignment problems.)

s_dub...@yahoo.com

unread,
Jun 6, 2006, 6:19:25 PM6/6/06
to

French Luser wrote:
> - "PL/M was a very good optimizing compiler." AAArrrggghhh!!! Steve! You!
> NO!!! Not PL/M (my disassemblies of old PL/M programs show that PL/M was
> surrounding procedures with jumps), but PL/I-80!
>
Very well, thanks for setting things straight. I should've stopped at
'Gary wrote PL/M for Intel', sorry for stepping on the Historians'
toes.

Now I've a few software questions of my own. Is not PL/M a subset G of
PL/I? Is there a version of CP/M written in PL/I? Did Intel ever
offer PL/I as one of its language tools? What DRI code is written in
PL/I? Will the PL/I Compiler compile the PL/M code? Since PL/M-80 was
developed first and good enough to write CP/M in, why did DRI develop a
separate PL/I-80 later?

Thanks,

Steve

Barry Watzman

unread,
Jun 6, 2006, 8:57:54 PM6/6/06
to
Herb,

No, Imsai was not casual about naming the OS' at all. When IMSAI did
their first disk system (I had several of them at the time), it was the
FDC2-2 dual 8" system with the white dual Calcomp drives (140's
initially, then later 142's). The original disk controller was the
IFM/FIB 2-board set (the IFM was a full 8080 system in and of itself
with ROM and RAM and a separate 8080 CPU on board). This system came
out with CP/M (NOT IMDOS) version 1.3. They worked up through 1.33, I
believe. I still have those original diskettes (IMSAI CP/M 1.33 ... it
was generic CP/M although there were some IMSAI proprietary utilities
shipped on the disk as well). I also have an IMDOS 2.02 diskette.

At this point, my recollection gets a bit fuzzy, but I'm thinking that
IMSAI came out with IMDOS about the same time as -- and I think instead
of -- CP/M 1.4. When IMSAI introduced the VDP series of products (the
VDP-80 was first), they also introduced the DIO/PDS 2-card disk
controller set. This was the first IMSAI disk controller that could do
anything other than single density 8", and IMDOS was introduced with it,
or perhaps slightly before it, to support double density and also 5"
diskettes.

By the way, both of these controllers (the IFM/FIB and the DIO/PDS) and
all of the IMSAI 8" single density media were fully IBM compatible and
also CP/M compatible, so reading the media was not (would not be) a problem.

However, IMDOS was IMDOS and CP/M was CP/M. There was no confusion at
the time, although it was acknowledged that IMDOS was an IMSAI
development derived from CP/M (and IMSAI had a CP/M license to cover
them legally).

I do believe that there was limited non-Imsai use of CP/M 1.3. I went
to high school with Dale Heatherington (a partner in and the technical
brains of DC Hayes, the modem maker, and the namesake of the
"Heatherington patents"), and when Dale and I both lived in Atlanta in
1975 (?), Dale bought a copy of CP/M directly from Digital Research for
$70 and got it working on an early 8-inch floppy. It was the first disk
system that I ever saw other than an actual IBM floppy disk based data
entry station.

French Luser

unread,
Jun 7, 2006, 8:19:56 AM6/7/06
to
Steve Dubrovich asked the following questions:

> Now I've a few software questions of my own. Is not PL/M a subset G of
> PL/I? Is there a version of CP/M written in PL/I? Did Intel ever
> offer PL/I as one of its language tools? What DRI code is written in
> PL/I? Will the PL/I Compiler compile the PL/M code? Since PL/M-80 was
> developed first and good enough to write CP/M in, why did DRI develop a
> separate PL/I-80 later?

(Wow, Steve! Are you becoming a philosopher, to ask so many questions?)

> Is not PL/M a subset G of PL/I?

READ THE F*** MANUAL! At the beginning of the PL/M Programmer's Manual, there
is a sentence like (I cite from memory, since I am at the cybercafe): "PL/M is
a subset of XPL". So, no, PL/M is not PL/I Subset-G (G meaning
"general-purpose"). PL/I is a general-purpose high-level Programming Language,
with the best features of the most successful commercial PLs of its time. PL/M
is a systems language (if you prefer, an assembler with a high-level syntax).

> Is there a version of CP/M written in PL/I?

? What do you mean by "CP/M"? The BDOS? There are several advertisements
(dated from the 1982-1983) saying that "Portable CP/M" existed, and that it
was written in the C language. Note that CP/M-68K has, indeed, its source code
in C... But no, PL/I was never used for system programming. However, since
PL/I was to be the standard in-house PL of DRI, some utilities were written
for it (I am thinking about SERIAL, which was running under CP/M Plus and
CP/M-86 Plus). (I think that the A and L commands of SID-86 are also PL/I
code.)

> Did Intel ever offer PL/I as one of its language tools?

Hum... I don't think so. In all the Intel manuals I have they mention only 2
PLs: PL/M and FORTRAN.

> What DRI code is written in PL/I?

Hahaha!!! Re-read all the articles written by Gary! PL/I is written in PL/M.

> Will the PL/I Compiler compile the PL/M code?

Hum... PL/I is so complete and a powerful PL that I am sure that one could
translate PL/M code into PL/I. But I don't think that PL/I would compile
without complaining a PL/M program. (In this case, PL/M would be a subset of
PL/I, so it would be simpler to use PL/M directly.)

> Since PL/M-80 was developed first and good enough to write CP/M in, why did
> DRI develop a separate PL/I-80 later?

Because they serve 2 very different purposes: that's why Programming Languages
have been invented: to solve problems in some specific domains
(word-processing, data-base, spread-sheet, comms, graphics, and programming).
PL/M is a system language, intended to replace assembly language, while PL/I
is a general-purpose high-level Programming Language, intended to replace
COBOL (commercial programs like general ledger, accounting, stock management,
etc, etc) and FORTRAN (hence its very, very complete collection of subroutines
dealing with Floating-Point and all its possible conversions. If you have ever
programmed a FP package, so would understand how much work it can be, and how
nice it is to have a compiler use the right subroutine to convert from one
numeric format to another numeric format, and all that automatically).

Whew! Hope it helps...

Yours Sincerely,
"French Luser"

French Luser

unread,
Jun 7, 2006, 8:32:55 AM6/7/06
to
Hello, John!

> French Luser wrote:
> : As far as I know, there was never a BDOS 4.
>
> I hope you meant to qualify that with "8-bit". There was a 16-bit BDOS 4,
> and indeed a nearly identical BDOS 5.

I am happy that you reacted to my message, because I have wondered many times
if there is/are Digital Research paper documentation mentioning any "BDOS 4"
and "BDOS 5"? (I know, of course, that some "Return Version Number" produce
1041 and 1050 but, personally, I think that they were used because they no
longer had any other number available. And, anyway, they don't seem to have
produced any offspring.)

In other words: because one little-known computer was using 1041 does not mean
that there was a BDOS 4. (Else, I would be VERY interested to read its paper
doc!)

Any comments on the history of the BDOS welcomed.

Yours Sincerely,
"French Luser"

glen herrmannsfeldt

unread,
Jun 7, 2006, 1:31:20 PM6/7/06
to
French Luser wrote:

(snip)


> PL/M is a systems language (if you prefer, an assembler
> with a high-level syntax).

PL/360 is, as I understand it, an assembler with a high level
syntax. Consider the statement:

R1 = R1 + R1 + R1;

Where R1 represents register 1 on S/360. The assembler code, then,
would be:

LR R1,R1
AR R1,R1
AR R1,R1

such that R1 has four times its previous value, not three as would
be expected for a normal high level language.

Does PL/M do that, too?

-- glen

John Elliott

unread,
Jun 7, 2006, 2:34:47 PM6/7/06
to
French Luser <Bill....@microsoft.com> wrote:
: In other words: because one little-known computer was using 1041 does not

: mean that there was a BDOS 4.

Beg to differ. If the BDOS calls itself version 4, then that's what it is,
pretty much by definition. If DR hadn't wanted to go to version 4, they
could have returned 1034 or 1035 or 1036...
For that matter, the PC1512 wasn't little-known.

Herb Johnson

unread,
Jun 7, 2006, 3:10:03 PM6/7/06
to
Barry, thanks for the informative reply on IMSAI hardware and IMDOS.
It's good to work this history out on comp.os.cpm, so others can add
their accounts and refer to any original documents or disks. Barry,
with your permission and other posters in this thread, when this thread
runs its course I'll add our remarks to my Web site on my DRI Web page.

I did not use the earliest IMSAI equipment at the time but I have some
of it around now, and some docs and disks. From those, I've determined
that IMSAI offered or intended to offer IMDOS as early as Nov 1977. The
earliest IMDOS manuals and disks I have are Version 2.02 from late 1977
or early 1978. in one of those, IMSAI clearly states that IMDOS is an
"enhanced version" of CP/M from Digital Research.

Barry, your CP/M 1.3 diskette from IMSAI is therefore very
interesting, and it would be worth providing to others. If you can
determine a date for it or the files on it and confirm its IMSAI and
DRI origins, please post details.

The following details my determinations:

1) In my hands right now, I have 5.25" diskettes labled "IMDOS VERSION
2.05 (c)1978 IMSAI MFG CORP". The lables are pasted on but they have
serial numbers so I assume these are original IMSAI diskettes or copied
from same. I also have one IMDOS V2.02 (c)1977 labled diskette. All
these appear to have been associated with a VDP-40. I also have some
manuals for IMDOS which state "IMDOS...is CP/M compatible." One IMDOS
document I'm looking at now is from May 1978; in brief the IMDOS it
describes seems by features and programs to be a superset of CP/M.

2) In my hands is an original IMDOS User Manual for IMDOS 2.01 / 2.02
dated 2/14/78, the earliest one I may have. It has the following
preface: quote

"The IMSAI IMDOS floppy Disk Operating System is an ehnanced version of
the Control Program Monitor (CP/M) originally developed by the Digital
Research Corporation. IMDOS contains extensive enhancements regarding
number and variety of floppy disk drives supported, user control of
diskette date format, and additional features in system calls available
to user programs. IMDOS is program compatible and file compatible with
CP/M; IMDOS's Console Commands contain several additions and
variations. CP/M is a trademark of Digital Research" This page is
dated 1/8/78.

3) I have a manual for "IMDOS - II version 1.0" dated 1979. I did not
examine it further.

4) My original "DIO Conroller user manual" is dated Nov 1977. It refers
to the 2-card controller set Barry described. It supported Shugart
SA800's, GSI 110's and Persci 270's (single or double density 8-inch)
and also SA400 (single density only 5.25").Barry, I mentioned
readability issues because the Persci's were notrorious for alignment
and cross compatibility problems. Also, some floppy controller
manufacturers did not properly implement the IBM 3740 format in that
era. In any event, this manual refers only in passing to operating
systems, and then only the "IMSAI IMDOS System diskette" and a PCS-80
or VDP-80.

5) The IMSAI "Diskette System Reference Manual" for Nov 1978 is a
hardware reference, and refers to the "IMDOS User's Manual" for
operating system software. the hardware described in this manual is the
FIF controller (the IFM and the FIB card set), the MDIO controller (one
board with a 1771 chip), and the DIO controller (two board set as
previously described).

Again speaking of formats, the brief description of the DIO in the
above manual, says the DIO-A original version supported IBM 3740 AND
"format V, a 128 byte/sector double density format". It continues to
say the DIO-B supports these and also supports a different head step
rfate; and it mentions the DIO-C replaced the previous versions and
supports yet other formats.

I did not check my archives for CP/M 1.4 and 1.3 diskettes. This post
is already rather long. But a Web search of "CP/M 1.4" suggests that
CP/M 1.3 had a very limited distribution.

Herb Johnson

Herb Johnson

unread,
Jun 7, 2006, 4:22:09 PM6/7/06
to
But wait! there's more...

6) My "IMSAI Floppy Disk System User Manual" copyright 1976 (erata page
4/77). Test code is dated 10/75; firmware dated Oct 1976.This manual
only covers the IFM (rev 6) and FIB (rev 3) floppy controller card set,
so I assume it's the earliest IMSAI disk controller manual. It's all
about hardware and firmware for those two cards and associated floppy
drives. It has a few references to operating systems, but ALL of those
references are to CP/M - no mention of "IMDOS". Phrases are "...now
configured as required for ...CP/M operation" or "..[to] bring up
IMSAI CP/M, refer to the IMSAI CP/M USER MANUAL". The 1977 section on
"System User Guide" mentions "IMSAI CP/M documentation".

So for some period in late 1976 through early 1977, IMSAI apparently
offered some version of CP/M and not "IMDOS" by name. This might
account for Barry's IMSAI CP/M 1.3 diskette.

Barry Watzman

unread,
Jun 7, 2006, 6:30:56 PM6/7/06
to
IMSAI's motivation for IMDOS was largely a consequence of the fact that
CP/M 1.3 and even (equally) 1.4 only supported one single format ....
IBM 3740 eight-inch single density (77 tracks of 26 sectors of 128 bytes
per sector). That was, also, all that the IFM/FIB controller set
supported. However, the DIO/PDS set could support many (almost an
arbitrary number of) formats, including 5.25" and double density
eight-inch. But CP/M (until 2.x) could not, so I believe that was the
primary motivation for IMDOS.

[I think that a secondary motivation was that they could offer product
like Microsoft Fortran and lock it to what was then an IMSAI operating
system, thus preventing use of a copy of Microsoft Fortran bought from
IMSAI on non-IMSAI systems.]

The Persci drives were, when used with a soft-sector configuration,
totally standard eight-inch floppy disk drives. Of course any given
drive could be out of radial alignment, but that is true of any model of
any brand of drive, and has little to do with anything else.

nos...@nouce.bellatlantic.net

unread,
Jun 7, 2006, 10:56:09 PM6/7/06
to
On Wed, 07 Jun 2006 22:30:56 GMT, Barry Watzman
<Watzma...@neo.rr.com> wrote:

>IMSAI's motivation for IMDOS was largely a consequence of the fact that
>CP/M 1.3 and even (equally) 1.4 only supported one single format ....
>IBM 3740 eight-inch single density (77 tracks of 26 sectors of 128 bytes
>per sector). That was, also, all that the IFM/FIB controller set
>supported. However, the DIO/PDS set could support many (almost an
>arbitrary number of) formats, including 5.25" and double density
>eight-inch. But CP/M (until 2.x) could not, so I believe that was the
>primary motivation for IMDOS.

Make that easily supports only one format. I have CP/M V1.4 for NS*
MDS (single density) both the Lifeboat version and NS* versions.

So everyone knows/remember the single density NS* MDS was
35tracks, 10sectors of 256bytes single sided and only 3 drives
possible. Around 82k useable space (cpm formatted).

CP/M1.4 was the first commercially useful version and while
it was difficult to set up for other than SSSD 8" it was doable if
you were willing to dig inside the BDOS. Apparently DRI
was willing to help major vendors do it.

Allison

Barry Watzman

unread,
Jun 8, 2006, 1:02:02 AM6/8/06
to
Yes, CP/M could be modified for other disk formats, but it meant changes
in the BDOS in versions 1.3 and 1.4, rather than in the BIOS. I worked
with Larry Alkoff (Lifeboat) on such a modification for the Lifeboat
CP/M on the Heathkit systems (hard sector 5.25" single density).

However, that still misses the point regarding IMSAI's implementation
for IMDOS.

The Imsai systems that were the motivation for IMDOS needed to support
multiple formats concurrently in the same system .... single and double
desnity / sided eight-inch AND 5.25" media, all intermixed concurrently.
And THAT was simply not possible reasonably possible with CP/M 1.3 or
1.4, even IF you had source code and were willing to patch the BDOS. It
was simply a too-radical departure from what those versions of CP/M were
intended to support. It wasn't until CP/M 2.x became available that
such versatility would be possible, but IMSAI needed those capabilities
more than 2 years before CP/M 2 would appear.

Herb Johnson

unread,
Jun 8, 2006, 1:22:31 PM6/8/06
to
1) A correction to my previous post:

"6) My "IMSAI Floppy Disk System User Manual" copyright 1976 (erata
page 4/77). Test code is dated 10/75; firmware dated Oct 1976. "

The test code was dated 10/76.

2) Barry's comments about the shift to multiple floppy formats are
consistent with my brief read of IMSAI manuals I described. The
earliest IMSAI floppy controller supported only one format and were
supported by some version of CP/M; later controllers supported multiple
formats as supported by IMDOS. IMSAI moved from a controller with its
own processor (and code) to a single chip FDC; each new controller
provided more format options. Likewise, outside of IMSAI (as Barry
pointed out), other S-100 manufacturers were developing their own
floppy disk hardware and following similar hardware trends. Their OS's
likely have similar relationships to early DRI's CP/M.

This IMSAI discussion dovetails nicely with the interview notes of
"Chief IMSAI Engineer" Joe Killian on the IMSAI Web site:

http://www.imsai.net/history/imsai_history/cp-m_history.htm

..which discuss the strong collaboration between IMSAI and DRI in 1977.
Killian says there that Glenn Ewing, who was then Gary Kildall's
colleague at the Naval school and who later became an IMSAI engineer,
"talked Gary into just separating the I/O from the rest of [CP/M], with
Glenn promising to re-write the I/O module for the IMSAI 8080 (which he
did)".

Let's bring this back to Howard Harte's original posts on tracing the
evolution of CP/M.

It's clear from IMSAI documents of the era, and from first and
second-person accounts, that IMSAI developers worked with Gary Kildall
on CP/M before or during version 1.3, to create IMDOS (probably version
2.0) as licensed from Digital Research. Therefore, a code review of
IMDOS will likely show common code with CP/M 1.4 and with the earlier
and much rarer CP/M 1.3. In addition, a likely and major code change
from CP/M 1.3 to 1.4 (and IMDOS) to 2.0 should be an increased
isolation of floppy I/O from the operating system code.

The isolation of I/O from the OS provided multiple dividends to
developers and to users, to say the least. The flexible CP/M operating
system, and the flexible S-100 hardware bus, were in my opinion
essential to growth and development during the 1970's of what we now
call personal computing. (Other computing OS's and hardware
architectures were also important of course.)

I hope those with original OS disks for CP/M 1.3 and IMDOS 2.X will
make the files available as appropriate. I'll see what I can do with
mine. Of course I've made IMSAI documents available via my Web site for
many many years.

Herb Johnson

(note: do not send emails to the gmail address for this post. My email
address is below.)

Herbert R. Johnson, phone 609-771-1417, New Jersey USA

Barry Watzman

unread,
Jun 8, 2006, 5:26:32 PM6/8/06
to
Herb,

Imsai really never moved to a single disk FDC using a WD chip. They
ultimately did offer such a product, but not until very close the end of
IMSAI, and I've never seen that board. The primary move was from the
IFM/FIB 2-board set to the DIO/PDS 2-board set. The former was 8-inch
SSSD only, the latter was quite versatile in terms of formats.

Regarding CP/M 1.3 and 1.4, there is less difference than you seem to
think, and it's not where you think. The BIOS/BDOS architecture was
virtually unchanged. The big difference was that CP/M 1.3 was very,
very bad about trashing your diskettes if you changed them without doing
a warm start (control-C). In CP/M 1.4, DR began checksumming the
directory to detect that the disk had been changed. This greatly
reduced (but did not totally eliminate in all cases) the incidence of a
disketts contents (actually the directory) being destroyed if the user
changed disks at an inappropriate time and did not do a control-C. That
was the largest single difference between 1.3 and 1.4, as I recall (in
2.0, the checksum vector area was moved to the bios, along with the
other disk parameters).

Herb Johnson

unread,
Jun 8, 2006, 7:20:30 PM6/8/06
to
Barry Watzman wrote:
> Herb,
>
> Imsai really never moved to a single disk FDC using a WD chip. They
> ultimately did offer such a product, but not until very close the end of
> IMSAI, and I've never seen that board. The primary move was from the
> IFM/FIB 2-board set to the DIO/PDS 2-board set. The former was 8-inch
> SSSD only, the latter was quite versatile in terms of formats.

A FDC board was mentioned, with a 1771 controller, in the manual noted.
I guess they did not produce it. And the manual went on at length about
formats for the DIO/PDS set., as you've said. It was a stretch on my
part to include a 1771 based board in my IMSAI remarks. But other
companies went on to use such chips on their boards. The fact that CP/M
could be supportted on boards with that and other FDC chips is notible
overall.

> Regarding CP/M 1.3 and 1.4, there is less difference than you seem to
> think, and it's not where you think.

Actually I'm just quoting the IMSAI interview. I've not looked at the
IMSAI code myself or the IMSAI docs in any detail this week beyond what
I've reported. Don't think I've ever seen CP/M 1.3 as such. I may have
poked at IMDOS in my lifetime, on some PDS system decades ago.

But it's possible the collaberation described between "IMSAI" and
Kildall occurred before CP/M 1.3. That email interview did not mention
specific versions, nor did the IMSAI docs I have reviewed mention CP/M
versions. The interview did give dates, although they are from memory
and even Todd Fischer suggests those dates may be inconsistent. The
dates I gave are printed in the IMSAI docs I referenced. What dates can
you glean, Barry, from your IMSAI CP/M 1.3 and any related docs for it?

My point was to make a case as to why a review of early CP/M code
should include IMDOS code. Along the way, I've confirmed most or all of
Barry's remarks from memory - that's pretty good for 30-year-old
recollections! Between you, Barry, myself (from the IMSAI docs) and
Todd's interview notes I think the case is made.

The next step is to look at some code, seems to me, and dig up some
more docs and disk of the period.

Barry Watzman

unread,
Jun 8, 2006, 7:53:22 PM6/8/06
to
Re: "A FDC board was mentioned, with a 1771 controller, in the manual
noted. I guess they did not produce it."

I think it was produced in very low volume for only a few months at the
very end of Imsai's existence. The 1771 was VERY popular and Imsai
should have gone with it much earlier. However, Imsai and Processor
Technology both had a penchant for doing things in their own proprietary
way, very much to their own detriment. Very bad cases of "not invented
here" syndrome. Tarbell, Cromemco, Vector Grahics and many other firms
used the 1771, and ended up with better, faster, more reliable and lower
cost products as a result.

French Luser

unread,
Jun 9, 2006, 7:55:40 AM6/9/06
to
GKBYTE.WS4
----------

- "CP/M: A Family of 8- and 16-Bit Operating Systems"
Gary Kildall
BYTE, June 1981, p.216

(Retyped by Emmanuel ROCHE.)

(...)

System Languages
----------------

A system language is a high-level machine-dependent programming
language used to implement so-called "system software,"
including operating systems, text editors, debuggers,
interpreters, and compilers. In the early days of computing,
virtually all system software was implemented in assembly
language. One revolutionary machine, the Burroughs B5500, used a
variant of ALGOL-60 as its only system programming tool, and
appeared in the early 1960s. The machine was a commercial
success against the other major mainframes, proving that
assemblers were no longer necessary. Many successful system
languages followed Burroughs' ALGOL, including the C language,
produced at Bell Laboratories in the late 1960s, which served as
the basis for the UNIX operating system.

A system language, by definition, matches the architecture of a
particular machine or class of machines; all facilities of the
machine are accessible in the language, and the language
contains no nontrivial extensions beyond the basic machine
capabilities. The benefit is that a compiler for the system
language is easy to implement and transport from machine to
machine, as long as the architecture of each machine is similar.
Further, a system language requires little runtime support since
application facilities, such as extensive I/O (input/output)
processing, are not generally embodied in the language.

Refinements in system languages are made by increasing their
usability. Their acceptance as replacements for assembly
languages is encouraging. Today, one can publicly admit that
system software is implemented in a high-level language without
implying that it must be rewritten in assembly language to be
effective.


PL/M: The Base for CP/M
-----------------------

In 1972, MAA (Microcomputer Applications Associates), the
predecessor of Digital Research, consulted with the small,
aspiring microprocessor division of a semiconductor memory
company called Intel Corporation. MAA defined and implemented a
new systems-programming language, called PL/M (Programming
Language for Microcomputers), to replace assembly-language
programming for Intel's 8-bit microprocessor. PL/M is a
refinement of the XPL compiler-writing language which is, in
turn, a language with elements from Burroughs Corporation's
ALGOL and the full set of PL/1.

The first substantial program written by MAA using PL/M was a
paper-tape editor for the 8008 microprocessor, which later
became the CP/M program editor, called ED. PL/M is a commercial
success for Intel Corporation and, although licensing policies
have limited its general accessibility, it has become the
standard language of the Intel microprocessor world, with
implementations for the 8080, 8085, and 8086 families.

MAA also proposed a companion operating system, called CP/M
(Control Program for Microcomputers), which would form the basis
for resident PL/M programming. The need for CP/M was obvious;
8080-based computers with 16 K bytes of main memory could be
combined with Shugart's new (at that time) floppy disk drives to
serve as development systems. For the first time, it was
feasible to dedicate a reasonably powerful computer to the
support of a single engineer. But the use of PL/M on larger
timesharing computers was considered sufficient, and the CP/M
idea was rejected.


(...)

PL/1: The Application Language
------------------------------

In 1978, Digital Research investigated the final level of
software support: application languages. One such language was
to be supported throughout the operating system product line,
and the choice would have to be a multipurpose language.
Further, the language would have to be an international
standard, to promote the generation of software by independent
vendors. Standard Pascal seemed a logical choice, but was
rejected for several reasons. First, Pascal is an ALGOL
derivative with scientific orientation. Commercial facilities in
the standard language are absent: decimal arithmetic, file
processing, string operations, and error exception handling were
essential. Further, separate compilation and initialization of
tables were not in the language. There was a temptation to
extend Pascal in order to include these features, but these
extensions would have defeated the benefits of standardization.

PL/1 Subset G was the obvious choice. It satisfied scientific
and commercial needs and, because of subset restrictions, was
consistent and easy to use. The project was a bit daring,
however, because Subset G was unknown in the computer community.
PL/1 was viewed as a large IBM-oriented language with huge,
inefficient compilers that required tremendous runtime support.

The Digital Research implementation of Subset G was started in
mid-1978 and completed two years later. The compiler is a three-
pass system written in PL/M. The first two passes are machine-
independent, and produce symbol tables and intermediate language
suitable for any target machine. The third pass is largely
machine-dependent, and is dedicated to code optimization and
final machine-code production. The compiler is accompanied by a
linkage editor (compatible with the Microsoft format), a program
librarian, a set of runtime subroutines, and a relocating macro
assembler.

Thus, PL/1 completes the final level of the inverted pyramid of
support tools. The message should be clear to the application
programmer: it is not the system language or the operating
system which is important in the production of a final
application. Rather, it is the availability of a standard,
widely accepted application language that can provide program
longevity. Once expressed in PL/1 Subset G, the program can be
transported through the CP/M family of operating systems to a
variety of minicomputer systems. Digital Research has a long-
term commitment to PL/1 support for popular operating systems
and processors.


EOF

French Luser

unread,
Jun 9, 2006, 7:57:38 AM6/9/06
to

s_dub...@yahoo.com

unread,
Jun 10, 2006, 5:26:40 PM6/10/06
to
French Luser wrote:
> Steve Dubrovich asked the following questions:
>
> > Now I've a few software questions of my own. Is not PL/M a subset G of
> > PL/I? Is there a version of CP/M written in PL/I? Did Intel ever
> > offer PL/I as one of its language tools? What DRI code is written in
> > PL/I? Will the PL/I Compiler compile the PL/M code? Since PL/M-80 was
> > developed first and good enough to write CP/M in, why did DRI develop a
> > separate PL/I-80 later?
>
> (Wow, Steve! Are you becoming a philosopher, to ask so many questions?)
Heh, I am therefore I is??
No, I have a misconception so I ask alot of questions to corral the
error.

>
> > Is not PL/M a subset G of PL/I?
>
No it isn't, as you say, and my main error. In searching where I
might've been confused, I found this from PLMLANG.DOC, from PLM80S.ZIP
"
PL/M-80 is a programming language for i8080 systems. It is based most
notable on PL/I. It has the type of block structure and scope rules
most programmers now expect despite the fact it is a fairly small
language.

The one thing that may "trip-up" may Pascal programmers is that PL/M
(and its PL/I big brother) use semicolon as a terminator, not as a
statement separator. Semicolons mark the end of every statement.
"
The files in this zip are:
-README PLM You are reading it now.
PLM81 FOR Source for Pass 1 of the compiler.
PLM82 FOR Source for Pass 2 of the compiler.
PLMLANG DOC Summary of the PL/M language.
PLMCOMP DOC Description of compiler switches.
PLMSAMP PLM Sample PL/M program.
PLMSAMP HEX Compiler output for the sample.
PLMSAMP PRN Compiler listing for the sample.

However, it was I who equated PL/M with PL/I subset G, in error.

In my searching I also found this information:

According to the Intel 'MCS-8 A Guide to PL/M Programming' Sept 1973 ;
'The language is structurally similar to PL/I (in particular,
PL/M closely resembles XPL), ...'
And according to the cover sheet, 'The PL/M compiler is written
in ANSI Standard Fortran IV...' That Guide also states on pg. 52,
the Fortran unit number assignments for PDP-10 and also the IBM 360.
Those are the machines you indicated Gary programmed on.

Wikipedia gives a nice overview of PL/I:
http://en.wikipedia.org/wiki/PL/I

http://www.cs.toronto.edu/XPL/ld010.html
- The home of XPL, states:
"The XPL language is similar to PL/I, but is not PL/I."

Here I quote your posting of the Article by Gary:


" PL/M is a refinement of the XPL compiler-writing language which
is, in turn, a language with elements from Burroughs Corporation's
ALGOL and the full set of PL/1. "

In looking over the examples of XPL I notice there is no DO: identifier
at the begining of their code examples, and neither is there for
BDOS.PLM, which is required for the later PL/M Compilers from DRI and
Intel. Would a XPL compiler parse BDOS.PLM without complaint?
Reviewing XCOM source, a XPL compiler written in XPL, makes me wonder,
looks like it would to me.

In looking around, besides Gaby's, for the CP/M PLM code, I find this
in DRIPAK.ZIP :
Volume5.doc :
*** "
This is the original .doc file on the cpm user's group
Volume 5 - this originally contained the source of the
public domain version of CPM, and the tape was later
ERASED......

------------- start of original ----------

BASIC-E

THIS DISKETTE CONTAINS 2 VERSIONS OF THE BASIC-E COMPILER
BAS2-0 AND BAS2-1, AND THREE VERSIONS OF THE RUN-TIME
INTERPRETER RUNK2-0, RUN2-2 AND RUN2-3. THE BUGS AND
RELATIVE MERITS ARE UNKNOWN. TRY THEM. NOTE THAT IN
THESE VERSIONS, THE COMPILE TIME OPTIONS ARE PLACED IN
THE COMMAND NOT IN THE FILE - EG "BAS2-1 WUMPUS $B"

OTHELLO IS OVERFLOW BASIC-E PROGRAM FROM VOLUME 5

MICROSOFT BASIC (AND SIMILAR)

THE FILES ???????.ASC ARE ASCII SOURCES OF PROGRAMS WRITTEN
IN MICROSOFT - TYPE BASIC. PROBABLY NEEDS LITTLE PATCHING
FOR DEC PDP11 EXTENDED BASIC, TDL AND OTHERS. THE SUFFIX
ASC IS USED TO DISTINGUISH THEM FROM THE TOKEN FILES WITH
BINARY LINE NUMBERS, WHICH HAVE .BAS SUFFICES.

CP/M SOURCE FILES

THE JUNE 1975 RELEASE OF CP/M IS IN PUBLIC DOMAIN. THE PLM
AND ASSEMBLY FILES HERE ARE PART OF THAT RELEASE.

THE FULL RELEASE WAS:

CCP.PLM
BDOS.PLM
PIP.PLM
LOAD.PLM
DUMP.ASM
IOLIB.PLM

THESE ARE CERTIFIED BY GARY KILDALL TO BE AVAILABLE FOR
PUBLIC DISTRIBUTION FOR ANY PURPOSE WITHOUT RESTRICTION
" ***
However only CCP.PLM, BDOS.PLM and LOAD.PLM are found on Gaby's site
and also in the DRIPAK.ZIP, the others in the above list are absent. A
noteworthy thing about the DRIPAK.ZIP is that those PLM files are
listed in cpm_v1-3 Directory, so perhaps those are that version?
http://www.retroarchive.org has the DRIPAK.ZIP ;
http://www.retroarchive.org/cpm/os/os.htm

There is also a \cpm_v1-4\ and in it a file: IO4OS32.ASM which reads in
part:
"
; CP/M BASIC INPUT/OUTPUT OPERATING SYSTEM (BIOS)
;( TARBELL ELECTRONICS) CVE MOD OF 9-5-81
; 1.4 VERSION OF 7-20-79
; THIS BIOS CAN ALSO BE USED WITH 1.3 VERSIONS BY
; CHANGING BDOS EQU FROM CBASE+3106H TO CBASE+3206H.
; (NOTE THAT CP/M VERSION 1.3 ONLY SUPPORTS 2 DRIVES,
; WHILE CP/M VERSION 1.4 WILL SUPPORT 4 DRIVES.)
;
"
This indicates a V1.4 date of 7-20-79, although this is a quote from
the BIOS source, so is it accurate also for the BDOS version date? It
seems like a long streatch of time from v1.3 of 06/1975 to v1.4 of
7/1979.

The v2.2 source typically carries the date:
title 'Bdos Interface, Bdos, Version 2.2 Feb, 1980'

>
> Whew! Hope it helps...

Yes, it did, thanks,

Steve

> Yours Sincerely,
> "French Luser"

Thomas "Todd" Fischer

unread,
Jun 10, 2006, 5:44:52 PM6/10/06
to
Herb and Barry have many of the "facts" correctly interpreted or assumed,
but we (IMSAI) DID have a 1771-based controller; the IMSAI MDIO, that was a
single-board solution to a 5.25", 35-track controller intended for the lower
end market. We offered the Shugart 35-track 5.25" drives as standard for
this system which could support up to four of same.

The (sub)systems which featured the MDIO included the PCS (Personal Computer
System) line and VDP-40 (Video Data Processor) system. We sold quite a few
i.e. perhaps a few thousand between their introduction during IMSAI's second
phase (early 1977), and 1979 when the original company closed down in
October of that year. Most serious business and educational users opted for
the higher capacity DIO/PDS board set which relied on an software supported
8085-based controller with a very temperamental analog data separator board
(the Programmable Data Separator). Late 1977 brought out a much more stable
PDS board that really tightened up reliability in the form of the IMSAI
PDS-II; developed by a very gifted engineer who worked under Glen Ewing (who
was now our new Chief Engineer, having replace Jan Vath). This same
engineer also designed the equally improved RAM-III memory boards that added
much improved reliability and helped ease the burden of our overworked and
underpaid Customer Support Department.

IMSAI never entertained the thought of a hard-sectored disk format, aiming
instead for the greater data storage capacity of soft-sector ala IBM 3740,
even though we strayed from the original single sided/single density 8" spec
when we went for double and even quad density toward the end with variants
of the DIO/PDS disc controller board set.

As for CP/M 1.3 and IMDOS, we offered CP/M 1.3 with the original IMSAI
IFM/FIB controller from very late 1976 until around the middle of 1977 when
Rob Barnaby (our Chief Programmer) created the much enhanced IMDOS; a direct
variant of the original CP/M 1.2/1.3. I still have the original hard copy
source code initialed and serial numbered by Gary Kildall. We had license
number 3 and were the first and only entity to have unlimited rights to
source code and distribution at that time.

All of the module listings in my listing copy are in assembly language, and
it is my understanding that all development work in version 1.2 and 1.3 was
done on an Intel MDS system, which both Gary and IMSAI had at their
respective facilities. Gary would cruise up to our offices in San Leandro
in his white 1975 Corvette coupe, bring in an armload of greenbar listing
dumps and a box of Dysan 8" disks, then proceed to the programmer's office
to work his magic with our hardware, seldom spending even a full day at our
location.

In contrast, when Rob Barnaby joined us in 1977, he'd lock himself in his
office for two or three days at a stretch, programming like a demon and
sometimes ranting about "some flakiness with his computer", at which point
myself or my counterpart, John Coons, would work our own brand of magic to
get him back online and in a better mood. He was difficult to work with and
understand, but his brilliance and talent outweighed his shortcomings. This
was the guy who later brought you WordStar, a direct descendent of IMSAI's
NED (New Editor), and John Coon's "DAISY" and "JUSTINE" proportional print
drivers that formed the first successful document entry and formatting
environment, and was used starting in 1977 for in-house document and manual
preparation.

But that's another long intrigue, better suited for a later discussion.

Regards to all,

-Thomas "Todd" Fischer


"Herb Johnson" <herbrj...@gmail.com> wrote in message
news:1149808830....@c74g2000cwc.googlegroups.com...

bud

unread,
Jun 16, 2006, 1:00:27 AM6/16/06
to

Group: comp.os.cpm Date: Wed, Jun 7, 2006, 7:34pm (CDT+6) From:
j...@seasip.demon.co.uk (John Elliott)

script:

>French Luser <Bill....@microsoft.com> wrote:
>
>>In other words: because one little-known >>computer was using 1041
does not mean that >>there was a BDOS 4.
>
>    Beg to differ. If the BDOS calls itself
>version 4, then that's what it is, pretty
>much by definition. If DR hadn't wanted
>to go to version 4, they could have
>returned 1034 or 1035 or 1036...
>
>    For that matter, the PC1512 wasn't little-known.

:-)) Thank you John! ((-:

dowcom

To e-mail me, add the character zero to "dowcom". i.e.:
dowcom(zero)(at)webtv(dot)net.

--
http://community.webtv.net/dowcom/DOWCOMSAMSTRADGUIDE

MSWindows is television,… Linux is radar.

0 new messages