To mark the 40th anniversary of the prototype demonstration in Kildall’s backyard tool shed in Pacific Grove in the fall of 1974, the Computer History Museum is pleased to make available, for non-commercial use, the source code of several of the early releases of CP/M.
The CHM is doing some amazing work in preserving ancient software for the ages.
For reference, the blog post where the announce its availability is here: http://www.computerhistory.org/_static/atchm/early-digital-research…
Edited 2014-10-02 16:22 UTC
… was on a Commodore 128 and I was in 7th grade. I didn’t do much with it and much preferred the “straight to BASIC” environments of the C64 and C128 (in non-CP/M mode, obviously). It was well out of popularity by the time I was in a position where it would have made more sense to me.
Edited 2014-10-02 17:07 UTC
“for non-commercial use”
It sucks, I wanted to compete with Windows 10 using 40 yo CLI-based OS source code.
And now I can’t.
Kochise
Edited 2014-10-02 21:06 UTC
CP/M-68K is written in C. With a bit of work, it’s possible to punch it through a modern compiler and make it run on, say, a Cortex-M3.
FreeRTOS is already ported to M3 and far better.
Kochise
Depends on the point of view. I’d prefer CP/M 🙂
CP/M – swoon.
My first operating system
The first is always the best.
Mine was Atari DOS. CP/M for me came later when my dad picked me up an Osborne 1 at a yard sale. I didn’t have the MS BASIC cart for my Atari so porting type-ins from other platforms was tough because Atari BASIC was a little non-standard. MS BASIC for CP/M was very standard.
Most CP/M machines had REALLY weak graphics and sound support if they had any at all most of the time and there wasn’t much in the way of standards in this regard. By the time they tried to fix this, the PC had already won in the business space and was invading homes too. With a shitty clone of CP/M running the show.
F**k I’m getting old.
Hence your nickname…
Kochise
It is worth nothing that the source for CP/M 1.0, 2.0, 2.2, 3.0, 86 and others is available at http://www.cpm.z80.de/source.html
So no memory management. What program did that job?
Memory management was not necessary because it’s not a multi task OS. There is only one program running and that program does not need to allocate or free memory because all memory is his. It can use it directly, write wherever it needs to write and read it where it stored it. The system itself is in ROM. When the program is terminated another one can start and use all the memory again.
Edited 2014-10-03 14:51 UTC
The Concurrent CP/M and FlexOS (loosely basedon CP/M)by DRI was really cool and full of multitasking goodness. Sadly it never gained any significant marketshare outside the eastern Balkan countries (Romania, Bulgaria and Moldavia)
Didn’t they have the MP/M I and II products at some point or did those evolve into Concurrent CP/M?
DRI was really innovative. Too bad Gary wasn’t as skilled at being a sleazy douche nozzle as Gates. He was a far better engineer and had more in-house talent.
GEM on the Atari STs that littered our house as a kid was a kickass product for it’s day too. The PC version was great before Apple sued and forced DRI to cripple it. Had that not happened it would have overtaken Windows.
DRI is a great example of a good company that tried to do everything right and got screwed out of the market by scared competitors with inferior products and lots of cash.
Well IBM’s first choice for the PC OS was CP/M but negociations failed over the price and it went to Microsoft instead. Microsoft sold them the DOS for 6 time less money. Of course it ended up costing IBM much more than money but they didn’t expect it at that time. It costed them their empire.
Edited 2014-10-03 15:45 UTC
Well the older CP/M ran on machines with like 8bit, 4Mhz and 64kb or RAM. You don’t want multitasking on that kind of machine.
Not quite true. Later CP/M machines supported bank-switched extended RAM. 128K and 256K configs weren’t uncommon.
Quite a few multitasking systems with decent performance were produced for Z80 based machines. Some even GUI-based (see SymbOS).
In fact, a 2MHz 6502 is capable of preemptive multitasking. Especially with bankswitched extended RAM on machines like the Atari 8-bit series. 64K base is the limit but 256K to 1MB RAM upgrades are commonplace on Atari XL/XE machines.
FTR, a 2MHz 6502 and a 4MHz Z80 actually perform about the same.
Why not? There were full blown UNIX systems with Z80 CPUs in them.
Well not full blown Unix. I believe you are are referring to UZI which was a clone of most of the v7 Unix kernel. v7 is pretty minimal by Unix standards. Useful, don’t get me wrong, but not what most people would call “full blown”
It achieved multitasking by completely swapping out 32K of RAM to disk — UZI gave 32K to the OS and 32K to running programs. I could be wrong about this, but I seem to recall that task swaps happened on the second.
Later versions of UZI (UZI180, UZI280) used memory management instead of swapping to disk.
But to address other people’s comments, not every embedded app needs or wants multitasking. A nice robust single tasking embedded OS has its place.
Also there is an ARM port of CP/M-68K: http://anachronda.homeunix.com:8000/~rivie/cpm-m3/
Probably referring to Cromemco’s Cromix. I’ve never used it, but I did drool over the ads in BYTE.
I haven’t gotten around to doing any documentation yet.
Oh Cromix, I had forgotten about that. I actually used one once. From what I remember it was also a v7 subset at the start, so I think my comments about UZI would apply here to.
But it is a fair point.
Also awesome to have the author here to comment. I had only taken a quick glance at your port, but it is cool.
Who needs documentation? It was hard to write it should be hard to use! At least that would feel in keeping with so much of the CP/M era
And on http://www.symbos.de/links.htm I found…
“Uzix (MSX 2) UZIX is an Unix implementation for the MSX with a very amazing compatibility. http://uzix.sourceforge.net/
MNBIOS (MSX 2) MNBIOS is a Linux like operating system for the MSX http://usuarios.arnet.com.ar/flyguille/Index2.htm “
http://en.wikipedia.org/wiki/SymbOS
http://www.cpcwiki.eu/index.php/SymbOS
https://www.youtube.com/watch?v=Ish4ReOjdIw
What kind of marketshare it had in those?
Personal curiosity, how little RAM could CP/M run in? I caught some of the later 64k machines in working condition, in production, but which were the first? Anyone remembers?
Edit: managed to answer it myself actually, the first CP/M machine was the IMSAI and it looks like it had 16 kbytes. Anyone seen less?
Edited 2014-10-07 12:42 UTC
I have been saying for a while that I would rather use CP/M than Windows 8…I guess now I can!