Z80 CPU Bus Access

Write to Z80 memory without any special feature on board or firmware.

Similar projects worth following
Developing code for a single board computer usually means programming and swapping EPROMS or a resident monitor with download capability in the system. This project allows you to send code to RAM on any board (hex-intel format). All it requires is a Arduino Mega 2560 and a passive shield. Another passive board can be used to create a flatcable header next to the CPU socket.

It does this by asserting the Z80 BUSREQ* signal, which is common for DMA operations. The processor then tri-states all data, address and essential control signals (RD*, WR*, MREQ*, IORQ*) until BUSREQ* is cleared. All refresh cycles are stopped too, so when dynamic RAM is used, the interruptions should be short and/or intermittent. The firmware could be extended to emulate refresh signals too.

The main development platform, a MicroProfessor MPF-IB has a 40 header, featuring all Z80 CPU pins. The extra board creates this from any socketed Z80 CPU.

The currently used shield is designed for the Arduino Mega 2560 and the Z80Exer sketch. A more compact shield is only in the planning phase. As is the support for refresh cycles. And the CPU-flatcable interface board.

The technology isn't limited to Z80 boards, but some DMA-like functionality must be present from the processor socket.


Design for a flatcable header, parallel to the socket pins.

Portable Network Graphics (PNG) - 36.25 kB - 03/08/2022 at 20:16


  • Intermediate update

    fjkraan03/18/2022 at 10:15 0 comments

    Still waiting for boards. Testing the Arduino Mega 2560 variant meanwhile, and it works really well. Code uploading seems reliable. As you can download too, the device is a more modern variant of the cassette tape recorder. Have to create a new python script to automate this, but the download option of a generic terminal program will work too.

    A minor nuisance is that the command interpreter works with a line-feed as terminator, and terminals send a carriage return on Enter. Control-J works, but is way less convenient.

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates