stevekemp
2 days ago
There's a simpler way now, I wrote a golang based CP/M emulator which uses the local filesystem, instead of "disks".
You can clone the repository, or run the docker image, and be playing zork in minutes - I even put together a repository containing a collection of vintage CP/M software (which includes Turbo Pascal, and Zork 1, 2, & 3).
Quick start:
docker run --pull=always -t -i ghcr.io/skx/cpmulator:master
..
A>
A>G:
G>ZORK1
The emulator lives here https://github.com/skx/cpmulatorCollection of software, grouped by theme, here: https://github.com/skx/cpm-dist
musicale
8 hours ago
What is the rationale for packaging it as a container? Isn't the point of golang that you can have a static executable that just works, so you could just distribute a zip archive with the executable and software folders? Or is it to provide some degree of isolation from possibly malicious CP/M software?
stevekemp
8 hours ago
The source is available, and you can "go get", and "go install" it in the standard way.
I've merely configured a docker container to be generated on every push as an optional additional installation method - that way I can paste in instructions for those who have docker available, but don't necessarily have a go compiler installed.
Use the container if you like, use the repository source in the typical way if you prefer.
musicale
2 days ago
Reminds me of RunCPM, which also uses folders rather than disk images:
https://github.com/MockbaTheBorg/RunCPM/
RunCPM also provides a link to the author's CP/M software archive.
anthk
a day ago
RunCPM will bog the CPU like crazy, it emulates the machine at 100% with no throttling at all.
musicale
8 hours ago
That sounds like something that would be completely impossible to fix, I am sure.
It's too bad, because most modern machines only have single-core CPUs, and I've never heard of any operating system that has the ability to throttle a process by lowering its priority or reducing its timeslice. Someone should implement that, maybe calling it "process control groups" or something.