
Every program in the assembly course ended the same way: it returned, and something took over. A row of register values filled the screen and a > appeared. Every character it printed went through RST 8 and call 158, every key it read through 156 or 181. What answered was the MOS, the Machine Operating System: 8,192 bytes of program in a ROM chip inside the Einstein. This course opens it up.
It follows on from our Z80 assembly course. It assumes registers, the stack, RST 8 calls and hex, and does not explain them again.
Fifteen sections and six appendices on MOS 1.2, the Einstein TC-01's MOS that starts up saying version 1.2: why a computer needs a program like this at all; how the Einstein fits 64K of RAM and an 8K ROM into one 64K address space; what the MOS does between power on and Ready; exactly what happens between your RST 8 and the routine that answers it, even when the ROM is switched out of sight; the one table of 85 addresses that serves both the calls and the monitor's commands; how it prints, reads the keyboard through the sound chip, and keeps the time with an interrupt.
You read it as source code: a listing of the whole ROM, every instruction at its address, which reassembles to the original ROM byte for byte, so what you read is what the machine runs. Where Crystal Research's own names for routines are known, the source uses them. The source's own header records where the MOS came from: version 1.2, updated 20/10/84, modified from Xtal MOS 1.13 by Nigel Deakin. One section shows exactly what changed in MOS 1.21, and why a change of thirteen bytes alters thousands.
Every section gives you something to run: a small program that pokes at the MOS from outside, a monitor command, or a changed ROM. The last two sections have you build your own MOS, with a new start up banner, a new prompt and a monitor command that was never there, and boot it.
The tools from the assembly course: VS Code with our Tatung Einstein development extension, z80asm, and MAME with the Einstein ROM set (Einstein System ROM). The source of MOS 1.2 and MOS 1.21 is one download, Inside the Einstein: The MOS Source.
The same way as our other courses. What the course says the MOS does was checked against the ROM itself: by tracing it in MAME, by running a program against it, or by changing it and booting the result. The map of the ROM in Appendix IV marks every region with how it is known: shown by running it, read from the code but not shown, or not yet described. Every listing and every changed ROM was built and run before it was written down, and the pictures are the screens they produced.
Everything was done under emulation. The last appendix explains what is involved in putting your own MOS into an EPROM for a real Einstein; we have not yet done that ourselves, and if you do, we would like to hear how it went.
This course was written with Claude Code, directed by Gavin Watson. We say so openly because we think it is the right way to use these tools, and because you deserve to know how the thing you are learning from was built.
This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.