Tracing the Evolution of CP/M-80 - CP/M

This is a discussion on Tracing the Evolution of CP/M-80 - CP/M ; 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 ...

+ Reply to Thread
Page 1 of 2 1 2 LastLast
Results 1 to 20 of 35

Thread: Tracing the Evolution of CP/M-80

  1. Tracing the Evolution of CP/M-80

    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


  2. Re: Tracing the Evolution of CP/M-80

    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, "hharte@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.
    >
    >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



  3. Re: Tracing the Evolution of CP/M-80


    hharte@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.

    > 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



  4. Re: Tracing the Evolution of CP/M-80


    s_dubrovich@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


  5. Re: Tracing the Evolution of CP/M-80

    > s_dubrovich@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


  6. Re: Tracing the Evolution of CP/M-80

    On 4 Jun 2006 21:30:05 -0700, "hharte@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.


  7. Re: Tracing the Evolution of CP/M-80

    On 4 Jun 2006 21:24:01 -0700, "hharte@hartetec.com"
    wrote:

    >
    >s_dubrovich@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


  8. Re: Tracing the Evolution of CP/M-80

    On 4 Jun 2006 21:30:05 -0700, "hharte@hartetec.com"
    wrote:

    >> s_dubrovich@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?


    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

  9. Re: Tracing the Evolution of CP/M-80

    hharte@hartetec.com wrote:
    > s_dubrovich@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



  10. Re: Tracing the Evolution of CP/M-80

    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"




  11. Re: Tracing the Evolution of CP/M-80

    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?

    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"




  12. Re: Tracing the Evolution of CP/M-80

    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_h...-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
    web site
    domain mirror
    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"


  13. Re: Tracing the Evolution of CP/M-80

    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.

    Herb Johnson wrote:

    > 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_h...-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
    > web site
    > domain mirror
    > 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"
    >


  14. Re: Tracing the Evolution of CP/M-80

    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.

    --
    ------------- 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
    :-------------------------------------------------------------------------)

  15. Re: Tracing the Evolution of CP/M-80

    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.)

    Herb Johnson

    Herbert R. Johnson, New Jersey USA
    web site
    domain mirror
    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"


  16. Re: Tracing the Evolution of CP/M-80


    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


  17. Re: Tracing the Evolution of CP/M-80

    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.


    Herb Johnson wrote:
    > 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.)
    >
    > Herb Johnson
    >
    > Herbert R. Johnson, New Jersey USA
    > web site
    > domain mirror
    > 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"
    >


  18. Re: Tracing the Evolution of CP/M-80

    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"




  19. Re: Tracing the Evolution of CP/M-80

    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"




  20. Re: Tracing the Evolution of CP/M-80

    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


+ Reply to Thread
Page 1 of 2 1 2 LastLast