Finished all the 8-bit load and store operations, everything has proper unit tests and is working. While doing this it was starting to get hard to manage the single microcode definition file as it’s almost 650 lines long, and it’s only going to get worse from here. I reworked the single file into a directory of files organized by functional area (one for math instructions, one for stack instructions, etc.) and implemented support for includes in the microcode generator, so it builds the microcode from the separate files now.
There are only 17 words left in the microcode ROMs currently, so the next step will likely be to expand the microcode address space from 8 bits to 9 (I expected I’d have to do this at some point, just hadn’t needed to yet). This shouldn’t be too big a deal, as I’d always known this would be needed so the design has taken this into account. Once that’s done, I want to look at multiple-register operations (add/sub/xor/or/and/etc.) and start working on those. Over half the instructions are now implemented and have tests, just under 700 test cases get run now.