These pages contain a few projects which I've done for fun and which may (or may not) be of interest to others. They're here with no guarantees that they work, and with no warranties for suitability for purpose, etc. I've included source code, which I definitely wouldn't use to teach coding. Still, I've tried to make sure the code comments are reasonably clear and useful.
You're free to do as you please with the code, under a "don't be unpleasant" licence: don't pass it off as all your own work; don't host the files elsewhere (because keeping them here means I can control updates); and so on.
If you find an issue with some of the code, do let me know. I can't promise I'll fix it, but I'll at least update these pages with a note, so other people are aware of the problem. You can reach me at Z80Sarah at the well-known provider which also has a very successful search engine starting with the seventh letter of the alphabet.
These retrocomputing projects fall into four categories.
HP45TERM is a simulator which runs the ROM code of the HP-45 RPN calculator in a terminal. You can read more about the HP-45 here. Probably the most hauntologically retro calculator you can get. The emulator works on MacOS, Windows, Linux, Raspberry Pi OS (32 bit), and under CP/M on the Z80-MBC2. It looks like this:
This is code written for the Z80-MBC2, a Z80-based computer which uses an ATMega32 microcontroller to mediate IO, memory access, etc. It runs CP/M (amongst other things). You can read more about the Z80-MBC2 here.
This is code written for the TRS-80 Model 100, a portable computer running an 8085 CPU. You can read more about the Model 100 here. I bought one recently but found that the UK model not only lacks the built-in modem of its American cousin but also has a reorganized ROM. This means that a large proportion of available software doesn't work, because all the ROM calls fail on non-American machines. So, I edited the American ROM code for use in non-US machines, removing modem functionality, implementing bug fixes and adding new functionality. Here's my Model 100: