Show HN: A Golang CP/M emulator
github.com
github.com
You could also improve the debugging experience with full execution trace recording (record all executed instructions / memory accesses / … to a trace file) which would not only give you detailed information about what exactly went wrong if something goes wrong but also allow you to directly debug your own Z80 code on assembler level.
Isn't it best to use the switch already built into Go?
And I had to use stty to make it work better from the command line. At least from BASH on MacOS.
Minimally, you need to disable ^Z, or you send it into the background. ^Z is the EOF character for text files in CP/M.
The other is ^Y. Which is another suspend process command for BASH. ^Y is important for Turbo Pascal, it’s a key editing command.
I don’t think I’ve have to fix any others. Those two have let me do what I want so far.
So I have a plan, but it's a bit more annoying than I'd like to handle. At least the "conditional compilation" via build-tags is nice and straight-forward!
There is a trace of all CP/M syscalls made, available via the "-log-path" command-line option, but so far I've not needed to debug actual Z80 opcodes.
https://github.com/skx/gobasic/blob/master/examples/55-game....
I taught him how to divide the range in half to cut down on the number of guesses, and once he got the hang of that he was hooked.
We played a couple of simple text-based games together after that, but most of the classics were too hard, too long, and required too much typing for him. So the game I made was deliberately simple.
Even so the first time he played he had no idea that a rug could cover a trapdoor. That level of hiding things was too much for him to leap to himself, I had to direct him.
These kinda shared activities don't replace his love of Minecraft, or Super Mario Bros (original NES version!), but I'm still glad we can do them together.
Interesting to see the influence on DOS, and how people used to deal with ED to write assembly etc.
Really nice machine to play Zork and such on. The monochrome green is so clear and nice, and a really good size. Keyboard feels great.
I've been trying to get serial working with the odd pinout without success yet.
They tried transitioning to add DOS support with an addin card but it was too late to save them as PC and Apple became the defacto standards.
There was a little-known multiuser CP/M variant called MPM and we managed to sell a few of those, too. It was a cool if plain OS.
• Multiuser DOS (native 32-bit multiuser multitasking DOS-compatible).
• DR-DOS (DR's comeback, a better DOS than MS-DOS, available at retail, which spurred MS into creating MS-DOS 5, then 6, then Windows 95).
• DR FlexOS: realtime multitasking with a GUI, used widely in the embedded industry for ~40 years and still supported on some IBM point-of-sale terminals in the 4680 and 4690 range.
I wrote about the extended family:
https://www.theregister.com/2022/08/04/the_many_derivatives_...