Hello retro-comp - my first post here!
I was an avid reader of electronics magazines in the UK in the late 1970's - Wireless World, Practical Electronics, Elektor, and my favourite: Electronics Today International (ETI). I remember vividly becoming hooked on personal computers when ETI published the ETI/Transam Triton 8080 design and introduced Computing Today magazine as a supplement. I started buying PCW magazine and the January 1980 edition had a Z80 design - using switches and LEDs for I/O - which because of its simplicity was hugely important to me - as I was able to learn how it worked at a level I hadn't managed until then.
https://www.worldradiohistory.com/UK/Personal-Computer-World/80s/PCW-1980-01-S-OCR.pdfAlthough I had previously built short-wave radios, sadly I didn't attempt to build that Z80 design, but a few years later was blown away again when acquired a Sharp MZ-80B. Eventually I got hold of CP/M, which was magical.
I've had a career in business software - which has become more and more abstract with each new role - but at the tail end of 2023 when I discovered that the Z80 was still in production and had a hobby community around it with some wonderful designs - I decided to pick up the homebrew thread from 1980. 2024 became a fantastic learning journey for me, and I finished the year with my first ever PCB - BeanZee
https://github.com/PainfulDiodes/BeanZee On the PCB I know that I skimped on the power/ground. To be honest I was in a rush at the end. The board does work, but I was thinking I would thicken the power on the top side and flood the ground on the bottom side as much as possible. It was suggested though that I might switch to a 4 layer board, with power/ground flooding the inner layers. I'd be really interested in any advice on that choice.
Echoing the PCW Jan 80 article the key constraint for me has been simplicity - at each step I wanted to fully understand what I was doing. (I'd also love it if what I am doing in some way helps someone else on their learning path).
BeanZee has a 10MHz Z80 CPU, clock module, 32k ROM, 32k RAM and a handful of OR gates and inverters. My most troubling decision was for I/O for which I have used an FTDI UM245R dev board. For simplicity's sake I wanted to get BeanZee accessible to a terminal emulator on my MacBook. First thought on this was a Z80 SIO or simpler UART, and an FTDI cable. However, I heard of trouble with those cables if you lack UART buffering.
https://hackaday.io/project/167418-ftdi-usb-cable-problems-with-6850-aciaI then tried to experiment with a Z80 SIO and it seemed rather complex to set up (at least relative to my design as a whole).
On the other hand, the UM245R has a FIFO buffer, and it offers up a parallel I/O. All I needed to add was a 74*244 to gate the UM245R control lines and then it is really easy to program for. Having no particular interest (at this stage) in the serial signal itself this seemed like a better way to go.
In future I might separate the USB interface from the board - so that the BeanZee only has parallel I/O - and the UM245 on an adapter board, or maybe using a Pi Pico 2 in place of the UM245R. I'd be interested in thoughts on this.
As I was designing the PCB it seemed easy enough to add some header sockets for expansion / experimentation. Thinking I'd want to address some external I/O, and possibly swap out the onboard memory, I provided address, data, and RD, WR, MREQ, IORQ. I also made it so the internal simple glue logic for address decoding can be disconnected / augmented by an external circuit. I wanted an external board to be able to override the clock too - say for example an Arduino to run the board with a slow clock and provide debugging. I'm quite pleased with how that worked out, although missing out M1, interrupts and BUSRQ/ACK now seems like a mistake.
Originally expansion was by upward facing sockets - thinking another board would piggyback on top. However, I'm now thinking to replace these with downward facing pins - so that the BeanZee will plug into a base board rather than to be the host.
I'm planning a simple keyboard and LCD character display which BeanZee will plug into. Again I'm keeping it as simple as I can - for example with the keyboard I hope to have the Z80 do the scan / decoding. I haven't made much progress yet.
https://github.com/PainfulDiodes/BeanBoard In future I'm thinking about other base boards that I might have - including a simple prototyping base board with GPIOs. A VGA board would be really cool. I'm also wondering if I could add a Bean65 6502 board, and then make the base boards work for either CPU, though I haven't yet looked at 6502 spec / designs.
Finally I've written a simple monitor program and used that successfully to load and run programs from Intel HEX files from my MacBook, which was an exciting milestone - now when I prototype a new base board I can quickly iterate on my code.
https://github.com/PainfulDiodes/marvin Stephen