
CP/Mish: open-source sort-of-CP/M distribution - ingve
http://cowlark.com/cpmish/
======
david-given
Hello, author here.

The big missing bit so far is a text editor --- I haven't found an open source
one which will work with my tools yet. (I have found te, which is GPLd, but I
need to do some C compiler work first. CP/M is hell on stdio.)

I'm also completely willing to add more tools which are cool/interesting/etc
if anyone can suggest any --- the only requirements are source and DSFG
licensing; although what I'd _really_ love some more BIOSes if anyone has
them, so as to support more platforms.

~~~
mechagodzilla
I've done a fair amount of playing around with CP/M, and really enjoy it for
providing all of the close-to-the-metal fun of microcontroller programming
while being self-hosting with real development tools. Are you familiar with
CP/NET at all? It was basically a 'server' that ran on an MPM/II machine
(usually) and a number of CP/M or CP/NOS (diskless!) clients that could talk
to it and share disk drives and such.

With the availability of large/cheap FPGAs, I've been thinking it would be fun
to build a multi-core Z80 system with 1 CPU running a 'kernel' and multi-
tasking provided by running CP/NOS clients on the other CPUs - Imagine a
multi-tasking OS where each program gets a dedicated CPU instead of having to
timeslice!

~~~
david-given
I've never touched CP/NET or MP/M, but I've read up a bit on them, and on CP/M
3 which shares a number of features --- I have to say that I'm not really a
fan of it; there's a lot of extra complexity for a debatable set of
improvements, which is why I stuck with CP/M 2.2. (Also I couldn't find a open
source CP/M 3 compatible BDOS.)

I do like the FPGA idea --- it feels like a better GA-144. But I'd probably
implement it using something based on CP/M 2.2: it would need a BIOS with a
remote console and communication channel system, with a switching fabric in
the FPGA tying nodes together. I'd also have to rip the filesystem out of the
BDOS in favour of something NFS-like over the communication channels, but as
that wouldn't really leave anything left, I suspect this would rapidly turn
into a combined BIOS/BDOS with most of the actual work done on the file
server.

I'm not convinced the end result would be useful... but it'd certainly be
cool.

~~~
mechagodzilla
I think CP/NET is actually pretty close to what you're describing - what the
'server' runs on is actually arbitrary (it just needs to implement the
protocol and allow file access), and there is an implementation for unix
computers floating around somewhere. The clients were running CP/M 2.2 but
with a kind of stub BIOS/BDOS (it sounds like it fit in a 4KB ROM of what's
basically a thin client) that mostly just had the network interface code.

On an FPGA, just tying together a bunch of cores with 8-bit FIFOs to
communicate would be both very cheap and very high performance. I have a
simple setup with a Z80 running CP/M at ~80 MHz on a Digilent "Arty" Artix-7
board, and you could probably cram 8 of them on the chip if each core only had
a cache backed by DRAM.

~~~
david-given
Oh, huh. I thought it was more heavyweight than that. I'll go take a look.

Sadly I don't know enough about FPGAs to know whether the Artix-7 is
particularly big or not. But you know what would be _really_ cool, though? If
your Z80 cores were all implemented using asynchronous logic...

------
phaedrus
My first computing and programming was on a CP/M machine. It was the 90s,
Windows 95 was just coming out and I was just 12, but my family was too poor
to afford a contemporary computer. The mother of one of my classmates gave me
an old Epson QX-10. Even figuring out how to boot the computer was a learning
experience. Among the disks I also found dBASE II, and a book on programming
it. I also had a lot of fun duplicating disks and sending files with PIP. Many
of the commands and concepts of CP/M were similar to but more orthogonal than
MSDOS.

~~~
david-given
I have an Epson PX-8 (with integrated microcassette drive!). It's terrible,
but in a completely awesome way.
[https://www.youtube.com/watch?v=S3MARL-F8NI](https://www.youtube.com/watch?v=S3MARL-F8NI)

------
_Codemonkeyism
Hurray! CP/M on an Amstrad 464 in the 80s was my first contact with an
operating system that back then felt to me professional - like those in the
movies. And it brought compilers.

~~~
ninjaoxygen
Me too, I used CP/M on an Amstrad CPC 6128.

It was the only environment I could find compilers and an assembler for, along
with a book in a local library. It ended up teaching me Z80 assembler, but
with Motorola style syntax!

I remember writing an invaders style game and a disk sector editor with it.
Fun times and the beginning of a long journey that still continues to this
day.

------
chipotle_coyote
This is pretty neat!

One nerdy question, from someone who actually used to run Z-System (on a
TRS-80 Model 4 and an Intertec Superbrain, for the record) -- why ZCPR version
1, instead of a later release? Is version 1 the only one with available source
and/or a compatible license?

~~~
david-given
ZCPR2 has a no-commercial-use license encumbrance, while ZCPR1 is genuinely
public domain.

------
cicero
My first job was programming a Sony SMC-70 Z-80 based computer that ran CP/M
using the BDS C compiler. (BDS stands for Brain Damaged Software. It was an
integer-only version of C.) The SMC-70 was connected to a Sony Laser Videodisc
player. It controlled the videodisc over an RS-232 connection and put the
video out from the videodisc into an overlay circuit that allowed use to
overlay computer graphics onto the video. We used this to create interactive
training programs for the US Air Force.

------
nineteen999
Ha! I'd love to port this to my Z80-emulator-in-Unreal-Engine project:

[https://i.imgur.com/Q6307w3.jpg](https://i.imgur.com/Q6307w3.jpg)

[https://i.imgur.com/OfGXFeO.png](https://i.imgur.com/OfGXFeO.png)

The BIOS is compatible with Z80Pack, so it wouldn't be terribly hard to modify
your BIOS to work with that.

If I can this to work, I might get back to work on my project. It stalled due
to the complications around the original Digital Research license, among other
reasons.

------
cmrdporcupine
I'm confused -- other sources from DR were GPL'd -- GEM, for example -- was
CP/M not included in that dump?

I've definitely seen the CP/M 68k sources floating around, and GPL I believe?

~~~
Someone
The computer history museum has the sources for early versions
([https://www.computerhistory.org/atchm/early-digital-
research...](https://www.computerhistory.org/atchm/early-digital-research-cpm-
source-code/)).

According to that page _“This material is provided for non-commercial use
only.”_. The source code archive may be more specific.

~~~
cmrdporcupine
Yeah, I did see that I'm just confused how a whole bunch of other valuable DR
stuff got GPL'd, but not CP/M.

Also, from past perusing, the GEMDOS sources for the Atari ST were basically a
fork of CP/M 68k. There's source in there with comments that go back to CP/M.
The relocatable binary format loader, for example. I would be surprised if
there weren't pieces that that could be scavenged for this project.

------
AstroJetson
Cool that you are keeping this alive. I had the Zorba, it was very interesting
there was a program that would let you swap disk parameters around so it could
read a variety of different disk formats. It made program/data sharing with
other people simple.

I see you are looking for an editor, have you considered stripping down the
Borland Turbo Editor and using that for your baseline?

~~~
david-given
Was it ever open sourced? I can't find a reference.

------
gerbilly
I used to run CP/M on an Apple ][e with a Zilog Z80 card.¹

I learned pascal on it (Turbo pascal) and C as well.

[https://en.wikipedia.org/wiki/Z-80_SoftCard](https://en.wikipedia.org/wiki/Z-80_SoftCard)

------
rhizome
This is all well and good, but I can't find the answer to the most important
question to me: does it have 'ladders?'

