
Cpu
Edgeworth/memepu
cmake -DUSEAFL=yes -DCMAKEBUILDTYPE=Release $PFX/verymeme AFLSKIPCPUFREQ=yes AFLPRELOAD=/usr/local/lib/afl/libdislocator.so \ afl-fuzz -m 1024M -i $PFX/verymeme/testdata/memelang/parsing -o memelangfuzz \ -x…

An advanced development board for the Z80 microprocessor, powered by an RP2040.
Z80DevBoard is an open-source printed circuit board by gianluca-rainis, from the gianluca-rainis/Z80DevBoard repository on GitHub, published under the CERN-OHL-S-2.0 licence. It is a 4-layer board of 219 × 108.5 mm with 182 parts on 237 nets, routed with 4,193 tracks and 439 vias.
It is built around the RP2040, SN74LVC245APW and W25Q32JVSSIQ, with the 74HC00D, 74HC04D and 74HC14 among its other parts. Its parts include 64 diodes, 61 resistors, 20 capacitors, 6 switches and 4 ICs. It belongs with the microcontroller boards and retro computing and games boards and the RP2040 boards of this library.
The Z80DevBoard is an advanced development board for the Z80 microprocessor, based on the RP2040.
This board is meant to be a practical educational tool, to help students learn how the Z80, one of the first CPUs and the foundation of all modern ones, works, and how to develop software for it.
To the Z80 is combined a modern RP2040, a powerful microcontroller designed by Raspberry Pi. It allows easy interaction with the board's components: you can load a program for the Z80 into RAM; or establish a serial connection with the computer to perform live operations, such as reading and writing to RAM.
The most educational components of the board are the LED matrices, which provide real-time visual feedback on the Z80's activity. Thanks to these LEDs, you can see which address of the RAM the Z80 is accessing, the byte it's reading or writing, whether it is answering to a BUSREQ with a BUSACK, and essentially all the operations the Z80 is executing.
The board mounts five buttons: the four on the right allow the student to save a Z80 program to flash, load a custom firmware for the RP2040, reset the Z80, and put the Z80 into a wait state. The button on the left sends a manual clock signal to the Z80, in fact, the board mounts a Z84C00 (the CMOS version of the Z80) specifically to allow it to work even with a manual clock.
The board can be connected to a computer through a USB-C port, which provides both power and data transmission. On the bottom-right of the board, are mounted two pin sockets, to support expansion boards or to be used in more advanced projects that require additional hardware.
For more advanced debugging, when testing custom firmware, the SWD and SWCLK pins of the RP2040 are accessible on the top-right of the board.
The author of the whole project is: Gianluca Rainis - gianluca-rainis on GitHub.
The PCB prototyping for this project is sponsored by PCBWay.
The boards were manufactured with high precision, faithfully following the PCB design down to the smallest details. The silkscreen is crisp and perfectly readable, with no errors or misalignments. The board edges and corner's holes were cut cleanly and accurately. The drill holes match the component footprints exactly, making placement and soldering straightforward. The SMD pads are precise and clean, even for the most challenging footprints, and solder beautifully.
The PCBWay website is intuitive, even for first-time users. Placing an order is simple, and before proceeding to payment the design is reviewed by their technical staff, who catch and communicate any potential manufacturing issues promptly and professionally, avoiding problems before production even begins.
If you are looking for a reliable, high-quality PCB manufacturer for your own projects, PCBWay is highly recommended!
Licensed under CERN-OHL-S v2.0
Licensed under the MIT License
No AI was used in the conception, design, engineering, or development of this project. Every circuit and every design decision is the original work of the author.
AI tools were used solely as a writing assistant for parts of the documentation, to help refine and organize technical explanations. All content has been reviewed, verified, and edited by the author.
The full documentation is available in the docs/ folder.
The Gerber files for PCB manufacturing are available in the gerber/ directory.
Z80DevBoard/
├── customFootprints.pretty/ # Custom footprints
├── docs/ # The documentation and the guides
├── firmware/ # The RP2040 firmware
├── gerber/ # PCB manufacturing files (Gerber format)
├── images/ # Documentation images and KiCad symbols
├── .gitattributes # Gitattributes file
├── .gitignore # Gitignore file
├── gerber.zip # Zip folder with all the gerber files
├── Z80DevBoard.kicad_pcb # PCB layout file
├── Z80DevBoard.kicad_pro # KiCad project file
├── Z80DevBoard.kicad_sch # Schematic file
├── Z80DevBoard.step # 3D model
├── BOM.csv # Bill Of Materials
├── CHANGELOG.md # Change log of the project
├── JOURNAL.md # Journal of the project
├── LICENSE-CERN-OHL-S.md # CERN-OHL-S License
├── LICENSE-MIT.md # MIT License
└── README.md # This file
| Name | Quantity | Class | Type |
|---|---|---|---|
| Z84C00 | 1 | Microprocessor | Through Holes |
| RP2040 | 1 | Microprocessor | SMD |
| HM62256BLP | 2 | Memory | Through Holes |
| W25Q32JVSS | 1 | Memory | SMD |
| AMS1117-3.3 | 1 | Power Management | SMD |
| USB C 2.0 port | 1 | Data Bus | Through Holes |
| 74HC595 | 3 | Data Bus | Through Holes |
| 74HC155 | 1 | Data Bus | Through Holes |
| 74HCT574 | 4 | Data Bus | Through Holes |
| SN74LVC245APW | 3 | Data Bus | SMD |
| TXS0104EPW | 1 | Data Bus | SMD |
| Connector 2 pins | 1 | Data Bus | Through Holes |
| Connector 2×20 pins | 1 | Data Bus | Through Holes |
| Connector 2×10 pins | 1 | Data Bus | Through Holes |
| Crystal 12MHz 20pF | 1 | Clock | Through Holes |
| Oscillator 8MHz | 1 | Clock | SMD |
| 74HC14 | 1 | Support components | Through Holes |
| 74HC04 | 1 | Support components | Through Holes |
| 74HC00 | 1 | Support components | Through Holes |
| Resistor 0 ohm | 1 | Resistor | Through Holes |
| Resistor 27.4 ohm | 2 | Resistor | Through Holes |
| Resistor 1k ohm | 36 | Resistor | Through Holes |
| Resistor 3.3k ohm | 6 | Resistor | Through Holes |
| Resistor 5k ohm | 2 | Resistor | Through Holes |
| Resistor 10k ohm | 13 | Resistor | Through Holes |
| Resistor 470k ohm | 1 | Resistor | Through Holes |
| Capacitors 15pF | 2 | Capacitor | Through Holes |
| Capacitors 0.1uF | 13 | Capacitor | Through Holes |
| Capacitors 1uF | 4 | Capacitor | Through Holes |
| Capacitors 10uF | 2 | Capacitor | Through Holes |
| Button | 5 | Other | Through Holes |
| Switch | 1 | Other | Through Holes |
| LED | 40 | Other | SMD |
| Diodes | 24 | Other | SMD |
| Fuse 500mA | 1 | Other | SMD |
https://github.com/user-attachments/assets/ee6d8d69-4003-4e21-8f2b-2f08ad0c8d81
From the project root, make sure CMake and the ARM GNU toolchain (arm-none-eabi-gcc) are installed.
If the toolchain is not in your PATH, provide it explicitly with PICO_TOOLCHAIN_PATH:
cmake -S firmware -B firmware/build -DPICO_TOOLCHAIN_PATH=/path/to/arm-gnu-toolchain
cmake --build firmware/build --parallelIf the toolchain is already in your PATH, you can omit PICO_TOOLCHAIN_PATH.
The file to load in the RP2040's memory after the build is Z80DevBoard.uf2.
You can find it in the /firmware/build folder.
You can find more informations about the firmware, including how to write a custom one, in the documentation.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 36 | 1k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35 +20 |
| 24 | Diode | Diode_SMD:D_SOD-523 | D3, D5, D11, D13, D15, D17, D19, D21, D23, D25, D27, D29, D46, D54, D56, D58 +8 |
| 16 | Matrix | LED_SMD:LED_PLCC_2835 | D65, D66, D67, D68, D69, D70, D71, D72, D73, D74, D75, D76, D77, D78, D79, D80 |
| 13 | 0.1uF | Capacitor_THT:CP_Radial_Tantal_D5.0mm_P5.00mm | C4, C5, C7, C10, C12, C13, C14, C15, C16, C17, C18, C19, C20 |
| 13 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R1, R2, R3, R5, R6, R15, R16, R17, R18, R39, R40, R42, R53 |
| 9 | READ | LED_SMD:LED_PLCC_2835 | D31, D33, D35, D37, D39, D41, D43, D47, D49 |
| 9 | WRITE | LED_SMD:LED_PLCC_2835 | D32, D34, D36, D38, D40, D42, D44, D48, D55 |
| 6 | 3.3k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R4, R7, R8, R9, R10, R11 |
| 4 | 74HCT574 | Package_DIP:DIP-20_W7.62mm | LedMatrixAddress1, LedMatrixAddress2, LedMatrixRead1, LedMatrixWrite1 |
| 3 | 1uF | Capacitor_THT:CP_Radial_Tantal_D5.0mm_P5.00mm | C3, C6, C9 |
| 3 | 74HC595 | Package_DIP:DIP-16_W7.62mm | ShiftRegisterOut1, ShiftRegisterOut2, ShiftRegisterOut3 |
| 3 | LOGO | LOGO | G***, G***, G*** |
| 3 | SN74LVC245APW | Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm | DataBus1, DataBus2, DataBus3 |
| 2 | 10uF | Capacitor_THT:CP_Radial_Tantal_D5.0mm_P5.00mm | C1, C2 |
| 2 | 15pF | Capacitor_THT:CP_Radial_Tantal_D5.0mm_P5.00mm | C8, C11 |
| 2 | 27.4 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R19, R38 |
| 2 | 5k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R12, R13 |
| 2 | HM62256BLP | Package_DIP:DIP-28_W15.24mm | RAM1, RAM2 |
| 1 | 0 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R14 |
| 1 | 470k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R54 |
| 1 | 500mA | Fuse:Fuse_1206_3216Metric | F1 |
| 1 | 74HC00 | Package_DIP:DIP-14_W7.62mm | U3 |
| 1 | 74HC04 | Package_DIP:DIP-14_W7.62mm | U2 |
| 1 | 74HC14 | Package_DIP:DIP-14_W7.62mm | U1 |
| 1 | 74HC165 | Package_DIP:DIP-16_W7.62mm | ShiftRegisterIn2 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | LDO1 |
| 1 | ASCO | Oscillator:Oscillator_SMD_SiT_PQFN-4Pin_5.0x3.2mm | Y2 |
| 1 | BUSACK | LED_SMD:LED_PLCC_2835 | D1 |
| 1 | Conn_01x02_Pin | Connector_PinHeader_1.00mm:PinHeader_1x02_P1.00mm_Vertical | J1 |
| 1 | Conn_02x10_Top_Bottom | Connector_PinSocket_1.27mm:PinSocket_2x10_P1.27mm_Vertical_SMD | J3 |
| 1 | Conn_02x20_Top_Bottom | Connector_PinSocket_1.27mm:PinSocket_2x20_P1.27mm_Vertical_SMD | J2 |
| 1 | Crystal 12MHz 20pF | Crystal:Crystal_HC49-4H_Vertical | Y1 |
| 1 | HALT | LED_SMD:LED_PLCC_2835 | D45 |
| 1 | IORQ | LED_SMD:LED_PLCC_2835 | D50 |
| 1 | M1 | LED_SMD:LED_PLCC_2835 | D52 |
| 1 | MREQ | LED_SMD:LED_PLCC_2835 | D51 |
| 1 | RESET | Button_Switch_THT:SW_PUSH_6mm | SW2 |
| 1 | RFSH | LED_SMD:LED_PLCC_2835 | D53 |
| 1 | RP2040 | Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mm | RP2040 |
| 1 | RPBOOT | Button_Switch_THT:SW_PUSH_6mm | SW4 |
| 1 | SW_Nidec_CAS-120A1 | customFootprints:SW_Slide-03_Wuerth-WS-SLTV | SW5 |
| 1 | TXS0104EPW | Package_SO:TSSOP-14_4.4x5mm_P0.65mm | U4 |
| 1 | USB_C_Receptacle_USB2.0_14P | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | USB_C1 |
| 1 | W25Q32JVSS | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | Flash1 |
| 1 | WAIT | Button_Switch_THT:SW_PUSH_6mm | SW1 |
| 1 | Z084000xP | Package_DIP:DIP-40_W15.24mm | Z80 |
| 1 | Z80BOOT | Button_Switch_THT:SW_PUSH_6mm | SW3 |
| 1 | Z80_CLOCK | Button_Switch_THT:SW_PUSH_6mm_H7.3mm | SW6 |
It measures 219 × 108.5 mm and has 4 copper layers, 1.6 mm thick.
182 parts, built around the RP2040, SN74LVC245APW, W25Q32JVSSIQ and 74HC00D. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the gianluca-rainis/Z80DevBoard repository on GitHub, at the commit this page was made from: the board is Z80DevBoard.kicad_pcb and its schematic Z80DevBoard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the CERN-OHL-S-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Edgeworth/memepu
cmake -DUSEAFL=yes -DCMAKEBUILDTYPE=Release $PFX/verymeme AFLSKIPCPUFREQ=yes AFLPRELOAD=/usr/local/lib/afl/libdislocator.so \ afl-fuzz -m 1024M -i $PFX/verymeme/testdata/memelang/parsing -o memelangfuzz \ -x…

snippyrow/-816-board
A retro computer motherboard for the W65C816S CPU. Dual-core expandable, 16mb extended memory, four expansion ports.


alexfreed58/z80-CPM-board-with-smart-i-o
This is yet another retro computer running CPM on an actual Z80 CPU with a twist. Instead of using a traditional UART for communications, it uses a RPi pico module that is no bigger and no more expensive than a UART.

slu4coder/Minimal-64-Home-Computer
Legacy: Full TTL-only home computer with VGA and PS/2 and twice the processing power of a Commodore 64


arhefner/1802-Mini-SPI-DMA
SPI Expansion Board for the 1802/Mini Computer
