Help Needed with My Z80 Motherboard Project – Beginner Seeking Advice

Hello everyone,

My name is Maxim. I’m currently working on a personal project called the MX80 I, a Z80-based computer inspired by retro systems. I’ve designed the motherboard myself using EasyEDA, and I’d love to get some feedback or advice to improve it.

Here are the key features of my project:

  • CPU: Zilog Z80
  • RAM: 16 KB
  • VRAM: 16KB
  • ROM: 32 KB
  • Keyboard Management: Z80 PIO
  • Sound: Yamaha YM2149
  • Graphics: Texas Instruments TMS9918A
  • Video/Audio Output: RCA
  • Power Supply: Internal transformer (230V AC to 12V DC)

I’ve attached my schematic in a GitHub repository (for EasyEDA) so you can view the connections and overall design. I’m still learning, so there may be mistakes or things I could do better.

Please keep in mind that I’m new to this, and I’d appreciate constructive feedback. If you have suggestions or see areas for improvement, feel free to share them—kindly and gently!

link : https://github.com/MaxRetroElec/Z80-Motherboard-MX80-I-Project

Thank you in advance for your help and guidance. This project means a lot to me!

Best regards,
Maxim.

Hello and welcome! Can I suggest you print your schematic to PDF and put that in the repo as well? (It makes it much easier for anyone to view and comment - even though committing derived data is generally not ideal.)

I will say this design seems quite complex, especially for a first build. Have you built a simpler machine already? It’s a good idea to build up - in fact there’s a thing:

Thompson’s rule for first-time telescope makers: “It is faster to make a four inch mirror and then a six inch mirror than to make a six inch mirror.”

One reason for starting simple, is that you’ll almost certainly need to debug your build: you don’t initially know if your design is wrong, if your construction is wrong, if your software is wrong, if your board is wrong. So you can build up your debugging competencies by building a known-working design.

There is, for all of us, a temptation to add features, to try to use all facilities of the hardware we’ve chosen. We proceed as if our current design is the last we’ll need to make. I think it is better in the long run to see the current design as the first in a series of iterations.

Hi Ed,

Thank you for your thoughtful advice. I’ll make sure to print my schematic to PDF and include it in the repository for easier access.

I completely understand your point about starting with simpler designs to build debugging experience. In fact, I’ve already worked on smaller Z80 projects, like simple blinking LEDs and minimal systems for basic I/O, but I couldn’t afford to iterate on multiple boards because of budget constraints. That’s partly why I decided to jump straight into a more advanced project like the MX80 I—it felt like the best way to push myself further within my means.

I know debugging will be a challenge with this design, but I’m prepared to put in the effort and learn through the process. I also see the MX80 I as a learning experience, not a final masterpiece. Future iterations will likely improve on it based on what I learn here.

Thanks again for your insights and suggestions—I’ll take them into account as I move forward.

Cheers,
Maxim

I like to socket the IC’s just for the DUD’s and OOP’s,
Zero Insertion sockets are nice for ROM, Or EEPROMS with
a write protect switch.
.

Ah, well of course that’s a limitation!

I don’t mean to be negative of course - motivation, energy, enthusiasm are really important in the retro world, especially if a thing that’s built needs to be debugged.

It would be great if you have any photos of a previous project to share. Blinking LED is a good first thing, and if you’ve managed something with working serial I/O that’s an excellent step too. Were you using breadboard or PCBs?

I take it you have a way to program your ROM, and you have some toolchain to assemble your firmware for it?

If you’re not already familiar with the RC2014 project and the retrobrew computer forums and wiki, I would recommend having a good look. As far as I can tell they are helpful and friendly, and it’s very Z80 based.

Hi Ed,

Thank you for your response and the advice!

Regarding the previous project, I built a simple circuit on a breadboard with a Z80 and a NE555 to test the MREQ, CLK, A0-A15, RD, and WR pins by putting leds on it, running the NOP instruction in a loop. I’ve also created a schematic of it in EasyEDA, which I can share if you’re interested.

As for the ROM programmer, I haven’t yet built one, and I haven’t been using one in my current projects. I’m currently exploring different options, but I’m not fully set up for burning ROMs yet. I’m open to any suggestions on this front!

I haven’t explored the RC2014 project yet, but I will definitely check out the forums and wiki based on your recommendation—it seems like a great resource for Z80-based systems!

Thanks again for your support, and I’ll keep you updated as I progress.

Cheers,
Maxim

There is a sort of bootstrapping problem here, when you don’t yet have a retro computer to burn your firmware to ROM. A part of the solution may be to write your firmware to be rather minimal, just enough to allow you load the full firmware from storage or from a PC. The minimal firmware will take minimal debugging and iteration, whereas if you fill a 16k or 32k ROM with firmware and then start debugging it you will be erasing and reprogramming very often.

For myself, the favourite storage is a bit-banged SD card interface. But even just a working serial connection to a PC is enough to load software over.

It’s worth considering EEPROM which you can reprogram in-place. That’s quicker and less wear and tear on sockets and pins. If you’re (very) careful with your design you can arrange never to overwrite your minimal firmware, or your last-working firmware, so you can’t brick your computer.

You might buy an EPROM programmer, or build one based on Pi or Arduino, or even build one which uses a retrocomputer to drive it.

If there are in-person retro meetups within your travel and time budget you might find help there. Possibly even a local maker space or hack space would be able to help.

Another approach commonly seen is to hook a modern microcontroller board such as Arduino to your system, arranging that it can initialise RAM with a binary of your choice and then get off the bus and release the CPU from reset. You do need to understand the memory bus and read/write cycles well enough to make this work. But it has been done, more than once I’m sure.

Hi Ed,

Thank you again for all the advice!

Regarding the Z80 memory cycles and control signals, I’ve already understood how RD#, WR#, MREQ#, and all of the other pins work. I also understand how the Z80 interacts with memory and peripherals.

For now, I’ll consider using an Arduino to load binaries instructions to the data bus of the Z80 correctly by connecting WR#, RD# and MEMORY_REQUEST# pins to the digital pins of the Arduino. That seems like a practical way for me to start while avoiding the complexities of frequent ROM erasing and reprogramming without EEPROM Programmer.

Thank you for taking the time to help me navigate these challenges. I’ll continue refining my design and let you know how things progress!

Cheers,
Maxim

1 Like

But the Arduino still has to programmed some how.
I find the modern chips are to complex to program, as you have
steep learning curve compared to the classic 8 bit cpu’s,
If you can get software go for it.

The TL866II is a nice prom programmer, that will do PAL’s.

Bootstraping the z80 with no ROM for the brave.
http://www.z80.info/jmz8boot.htm

2 Likes

If you live in USA, 2-layer PC board 100mm x 100mm or less is $2 for 5 boards plus $1.50 for 2-week shipping from China so it is quite affordable if you know how to do your own pc board.

There are zero glue logic Z80 SBC designs and associated inexpensive kits (<$10) that fit in 100x100mm pc board.

Lack of an EPROM programmer is a significant hurdle for beginners. You can spent significant energy and time working around that hurdle, but ultimately wind up buying a programmer. There are DIY retro programmers, but they are based on advanced concepts that is confusing to beginners. I have seen so many aspiring retro hobbyists gave up or change direction trying to overcome that hurdle that I frequently wonder how the retro community can provide assistance in that area.

Welcome!

Bill

2 Likes

Hello !

Thank for your reply to my post !

Unfortunately, I live in a country where shipping costs can go up to €40, with the cheapest option usually around €35 or $40.**

For example, I recently created a TMS9918A board compatible with Arduino. Using JLCPCB, the board and PCBA initially cost €54. However, due to shipping fees, taxes, and customs duties, the total jumped from €54 to €95, even with the cheapest shipping option.

Regarding the fact that I currently don’t have an EEPROM, I think I’ll buy one since many people have recommended the same thing.

Thank for all the advice !

Best regards,
Maxim.

I like PCBway since DHL has cheap shipping to CANADA. $20 US and $20 US customs.
For me I get one week turn around.

1 Like