A number of years ago, I stumbled upon Ben Eater making an 8-bit CPU on a breadboard. I even started to replicate it myself, but only made a couple of the modules (project to come back to one day). I've had in the back of my mind for a while to replicate it in software.
I'm currently working with Flutter for work, and to help with getting stronger with it, I figured this would be a good project.
Still very much a work in progress, but I've got something basic going. The program is currently hardcoded and is a simple increment by 3 counter. But you can step through the process, clock by clock (actually edge by edge, so you can work with both the clock being active and deactive).
The program is a very basic assembly program being
LDA 15 ; Load memory address 15 into register A ADD 14 ; Add memory address 14 to what is already loaded OUT ; Output databus JMP 1 ; Go to line 1 (ADD 14) ; Data in memory ; 14 = 3 ; 15 = 0
You can see it running at https://eater.sdickinson.dev
Next up is to write a small assembler and have on the page to upload your own programs, then write tests, etc.
Ultimately I'd like to be able to zoom in to each module and see it working at a gate level (ie. the AND, OR, NOT, NAND, NOR, XOR, XNOR gates). And also show the interconnects (which is why there are lines coming down for each bit of the databus.