CP/M Source Code Released

To celebrate the 40th anniversary of CP/M, the Computer History Museum has released a package containing early source code for several versions of CP/M. Originally designed by [Gary Kildall] in 1973, Control Program for Microcomputers (CP/M) is an early operating system for microprocessor based computers. The OS was originally written for the Intel Intellec 8, an Intel 8008 based computer. Since it was on an Intel machine, CP/M was written in PL/M (Programming Language for Microcomputers), a language [Kildall] had previously developed for Intel .

CP/M pioneered the idea of a ROM based Basic Input Output/System (BIOS) for commonly used routines on a given computer. The use of BIOS made CP/M easy to port. Eventually it was ported to thousands of different machines and architectures, including the Altair, IMSAI 8080, C-64, and C-128 and Apple II systems.

Gary and his company Digital Research, were one of the top contenders for the operating system on IBM’s new personal computer. Ultimately, Microsoft got the job by purchasing 86-DOS from Seattle Computer Products. Somewhat ironically, 86-DOS itself was written based on the CP/M Application Programming interface (API).

The source itself is an amazing trip back in time. Included are portions of CP/M 1.1, 1.3, 1.4, and 2.0. Portions of CP/M have been released previously. As with the previous files, this version includes modifications performed by z80-pack author [Udo Munk] in 2007. Version 1.3 is especially interesting as it is primarily scanned copies of the CP/M source code.

If you’re into vintage computing, and know how important CP/M was to the early days of personal computers, check out the CP/M source. If you find any interesting or clever bits of code, be sure let us know about it in the comments.

[Image Source: CulturaInformatica]

51 thoughts on “CP/M Source Code Released

  1. Wow this brings back memories. My first DIY computer was an 8008 I designed and built myself. Then I got a Z80 and put on CPM as my first real operating system. It was a good step for all of us in those days, today’s computers are so much more powerful.

    1. and yet some where along the way user understanding of how the system works was lost causing the IT field to emerge.

      back then computers were operated by computer engineers.
      now computers are operated by anything/one that can press the on button.

      sad sad world.

      1. So you’re saying that the world would be a better place if instead of using a computer, the clerk at the registry of motor vehicles had to go find your file in a giant warehouse of filing cabinets?

      2. I could not agree more. People use these devices called computers and have little to no idea of what they are using. Gone are the days of peek and poke and asm language. Now you just need to know how to point and click.

  2. Yeah memories… I remember wanting a Morrow MD11 with CPM (school had an RT11 based vax or something which we played star trek on), but all this faded when the IBMPC came out followed by the was it challenger clones? Halcyon days. It got me googling and i remember too the victor 9000/apricot as a big deal at the time..

  3. 86-DOS? Microsoft bought Q-DOS (Quick and Dirty Operating System) for $50K from a guy who was developing a clone of CP/M for an 8088 S-100 CPU board.

    IBM went with Microsoft because when they went to meet their first choice, Gary Kildall was too busy flying his airplane so the IBM guys got pissed and went to meet Bill Gates.

    1. Nope. The “too busy flying his plane” crap was microsoft doing what China and Russia call ‘official information’. It was spun by microsoft to make Gary look bad, but never really happened. As it was, IBM took microsofts quick and dirty operating system, which was 8000 lines of assembly, and then fixed 5000 bugs, and gave it back to microsoft. All IBM needed was someone to avoid anti-combine legislation. Too bad the feds never went after microsoft like that.

    2. The way I understand it, is that the IBM people went on a mission to talk to Kildall about getting an OS and to Microsoft to get Basic, all in the same day (or in a few short days) some time in 1980 or so.

      When they arrived at the Digital Research office (house?) they found him not there. Whether he forgot about the meeting, or couldn’t make it because of circumstances out of his control, or whether it was just utter contempt for IBM is not clear. IBM certainly didn’t tell DR what the meeting was all about, no-one had any idea that they were working on a PC and IBM had always made their own hardware and software so far (the PC was the first project to use off-the-shelf components), so maybe the folks at DR thought that IBM was just there to spy on them and see how things were done, and then take them out of business.

      One of the first things they did when they arrived was ask for DR to sign a non-disclosure waiver to make sure that what they would discuss during the meeting wouldn’t get out, and Kildall’s wife didn’t want to sign anything without Kildall or a lawyer present.

      The bottom line was that everyone apparently disliked each other on first sight: DR in their T-shirts and jeans and IBM folks in their suits with IBM 1970s “we own the computer industry” attitude and reputation.

      So they went to Microsoft and of course Bill Gates, being the entrepreneur that he was, and having experience with non-disclosure agreements and licensing, had no problem with the IBM people and their NDA. Microsoft’s main product was Basic and they also sold compilers for other languages, and all they saw was an important potential new customer. IBM told Gates about the meeting at DR, and Gates quickly told them that in addition to a Basic interpreter in ROM, he could deliver an operating system. So they signed a contract.

      Of course Microsoft really had nothing, so they had to come up with a quick solution, and there was this company SCP in Seattle who had made a CP/M clone for the 8086 processor called 86-DOS, intended for hobbyists. They way I understand it, sales weren’t going very well because everyone who was simply building their computers with 8080 and Z80 so they could use the “real” CP/M. Also, there were incompatibilities between CP/M and 86-DOS, it wasn’t really a “port”, but more something like a re-implementation. Anyway, when Microsoft contacted them and said they wanted to become a dealer for 86-DOS, they were eager to sign the contract. But Microsoft worded the license with SCP in such a way that they would owe a flat fee, plus a small amount per customer, or something. And they didn’t tell SCP that there was only one customer: IBM.

      So MS created what was first called QDOS (Quick and Dirty OS), but renamed it to IBM PC-DOS, with all the references to SCP removed and replaced by “Microsoft” or “IBM”. Obviously SCP was pretty pissed about MS cheating them out of a whole amount of money, and there was a lawsuit that they won. 86-DOS was actually sold for the IBM PC too but it wasn’t very successful, mainly because it was much more expensive than PC-DOS.

      You may not like everything that Microsoft has ever done to monopolize the market and destroy competition, but you have to admire them for seizing the opportunity, and especially for being bold enough to keep ownership of DOS. Gates figured out immediately that if there would be an IBM PC, there would be clones (just like what had happened to the Altair and Apple II), and that way he knew he would be able to create MS-DOS later on for those clone machines. I don’t know how easy it was to get IBM to let MS do this, but it’s been said that IBM didn’t quite understand the personal computer market, and didn’t really take the PC project seriously in the first place.

      Again, this is my understanding of what happened; I may still have details wrong and I don’t think anyone knows for sure what happened at the DR office when IBM visited.

      1. The first IBM-PC it’s self was a bit of a quick and dirty project by IBM as they were not sure if this personal computer thing would be profitable for them.
        If IBM was investing a lot in R&D money in the project they probably would have wrote the OS in house.
        An interesting fact they almost choose the MC68000 over the 8088 as the processor for the IBM PC.
        But the 8088 was similar to the 8086 in the IBM datamaster and use of an 8bit data bus was cheaper.

        1. Intel’s IA-32 manuals still to this day complain about how stupid some of the design choices in the original PC was. In particular the act of putting the x87 FPU interrupt on an externally masked implementation of the Non-Maskable-Interupt line.

          The NMI line was intended as an emergency call in case of things like power failure. The idea was to have the NMI secure essential data before the capacitors in the power supply ran empty.

        2. You may recall that IBM already had a “tabletop” computer that did use the Motorola chips. This product was sold to companies for use in laboratories, and had a pretty high price tag (for the time). For the Personal Computer, though, IBM wanted really cheap, and the 8-bit bus let them keep the cost down. Much of the original PC development was outsourced.

          1. Not so much outsourced as skunkworks-style. Unofficial project is an understatement, as I was told. Money for the project had been denied. IBM was quite sure they did not want to risk the PC market.

            The dev work was entirely unpaid time.

            There were many of IBM’s upper management who wanted the project to burn out famously, taking the PC market with it, thus the willingness to go with Microsoft.

    3. Well *I* heard that Microsoft used ancient Chinese magic to reanimate the corpse of Alan Turing and used his wizard-powers to make Windows and send it forward in time.

      Why no, I DON’T have anything resembling a source for this info. This is the internet. How can you expect me to back up my huge post of dubious assertions?

  4. “Control Program for Microcomputers” is a backronym, the actual name is “Control Program/Monitor”. Little bit of research before posting please guys? This is mentioned in the article summary on WP…

    1. Not that it matters much, it seems that the M was used commonly for Microcomputer, that is certainly the way I used it in those days. Wikipedia does say it was a backronym, to me both seem legit to use.

  5. I have a Nicolet Logic Analyzer at home that runs CP/M, well it did the last time I powered it up around 12 years ago… But it needs a clothespin to hold the floppy drive door closed.

  6. Hey, this is cool. I bought a complete Intellic computer (8080 processor, iirc) back about 15 years ago. I came with dual 8″ floppy drives (for running the the OS itself), a hard drive (it has a storage capacity of about 1 billion bits for each removable disk unit), an 8080 in-circuit emulator, and a PROM programmer. It also came with documentation for everything (documentation for computers of this era aren’t really complete unless they include schematics).

    I should dig that monster out of storage, and see if I can’t get it running.

  7. CP/M never ran on a native Apple II. The Apple II is 6502 and CP/M was 8080 / Z-80 code. What happened was three separate manufacturers (including Microsoft in a rare early hardware product) made Z-80 co-processor boards which plugged into an Apple II expansion slot. These boards had the Z-80 processor, crystal, and support chips. They used the Apple motherboard for memory, I/O, and accessories (keyboard, display, drives, etc.). It was about half the price of purchasing a separate CP/M computer.

    There was one key issue – the Apple II’s unique floppy drives could not read the standard hard sector formatted 5.25″ disks used on most computers in the CP/M world. At least one manufacturer came out with a specialized controller card for the Apple II which would let you connect a conventional 5.25 or 8″ floppy drive and read standard CP/M disks, but it didn’t sell well because most CP/M software publishers quickly ported their software on to Apple II formatted floppies.

    Applied Engineering tried the same technique for IBM PC compatibility. They made a card with an 8088 processor which emulated an early IBM PC. The problem was there were just too many compatibility issues (different floppy format, different keyboards, etc.) and the emerging PC clones made it easier to just buy a PC clone.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.