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.
HP-1973 is a simulator which runs the (included) ROM code of the HP-35, HP-45 and HP-80 RPN calculators. It includes everything necessary to follow the internal workings of those calculators: ROM maps, execution listings, internal variables, etc. Plus! it comes with pages of help screens which explain the simulator and calculators and! it includes seven different colour themes. Although written in Python, standalone versions are included so you don't need an existing Python installation to run it on MacOS or Windows. It will also run on Linux/FreeBSD and probably anything else with a 1920x1080 screen and Python 3.10.10+. It looks like this:
You probably don't want to use HP45TERM. It works perfectly well — and is your only option if you're using a Z80-MBC2 — but HP-1973 (above) includes more calculators, provides much more information about them, and uses internal code which more closely duplicates the hardware implementation of the original calculators.
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. (Now with bonus 'Model 100 Internals' desktop wallpaper!) Here's my Model 100:
RetroArch is a frontend for emulators, game engines and media players. Read more about it, here. One of the available emulation cores is MojoZork by Ryan C. Gordon (icculus), which implements Infocom's Z-Machine. I made a RetroArch overlay of the DEC VT100 terminal, which can be used with this (or any other core). Click here or on the image to download it.