I haven't made much progress since I found a way to continue on this. I've been stuck horizontal, my body writhing. But it's still so much fun to know I found a way forward :) It's just nice to think about. When my setup stopped working it was so frustrating, and now I can continue again! While I was working recently I accidentally put my last flash chip in backward and powered the system up. When you do this the chip begins bheating up rapidly and then burns out. I walked away, not realising, and then turned around and pulled it out before it burned out. It was a big relief. I had identifying tape on the chip that partially melted. It still works though! I wrote some assembler code to boot up the serial port before the ram was initialised, to debug early boot, and after using the setup to verify it worked I shared it with the devs, but just casually not with a pull request yet. I've realised while daydreaming and such that the code has a bug that doesn't express: it checks for the serial data port being ready using the 8-bit port command rather than the 16-bit one. So it's actually reading from the wrong io port (8-bit truncated) and waiting for timeout rather than detecting readiness. I don't know why I didn't notice a compiler error, passing a 16-bit port number for an 8-bit operand. Today I'm expecting a cheap breadboard in the mail to replace the ones that might be broken, and tomorrow a set of round pin headers to use as buffers to prevent breaking the new breadboard with square pins.