Because the first assembly language I learned was for my TI graphing calculator, I’ve have a soft spot for the Z80 CPU. It’s a nice 8 bit architecture and widely used in pre-MSDOS machines. The Apple II used a 6502 but more or less all the “business class” machines ran CP/M on a Z80.
It has a 16 bit address bus so it can address 64k of RAM, which is fine for an 8 bit machine. You can do bank switching to get access to more, which is what CP/M does.
I’ve breadboarded some very rudimentary Z80 machines over the years, but the Z80-MBC2 by Just4Fun is a great take on the genre. The twist is that it uses a Atmel AVR as a supervisor/ROM emulator/IO coprocessor of sorts. It makes it very easy to rapidly develop ideas when your IO system is reprogramable!
After assembling and experimenting with one, I decided I wanted the ability to support traditional expansion methods. There is standard DIY-oriented bus format for Z80 systems called RC2014. It is more or less the 40 pins of the Z80 CPU itself spread out in a 1×40 header. So I built an adapter that sockets in-between the CPU and the MBC2, pulling the bus lines out to one side. I used veroboard because its straight-through traces make extending the bus a cinch.
I haven’t had a chance to revisit the project lately, but I plan to. I assembled a composite video card for RC2014 and need to try it out.