It had been over 10 years since I made my first processor, and I had the itch to make another. I wanted a processor that was closer to a "real" processor, whatever that means. My original processor was designed to be very simple, to give me a good chance of making a working processor, but it had some serious flaws.
The original processor had a single instruction format (4-bit opcode, 12-bit operand), and a 16-bit memory width so I could fetch instructions in one step from a 16-bit wide memory. It had only a 12-bit memory space (4K words). The ALU was 12-bits wide, but because of that I was unable to load instructions over a serial interface as two 8-bit words -- the processor could not assemble a 16-bit instruction from two 8-bit input bytes! I cobbled together a port that that would shift the first of two input bytes into the high-order byte of a 16-bit word, but it was a kludge. The processor worked, but it was far from elegant. It had a very small memory space, and an ALU that did not do subtract-with-borrow correctly.
However, I took from that success an important lesson -- I could make a processor! So, my next processor would be better, and a little more complex, and hopefully a step toward elegance in design.
I have recently finished my new computer processor. It works with the CPUville Z80 kit system. Here is a demo video:
I am thinking of offering this processor in a kit form, if there is enough interest in the hobbyist community. Please let me know if you are interested.
Here are links to pages with details of the design and construction of this processor: