Skip to the content
2 layers200.7 × 149.9 mmDtz80-complete, the printed circuit board in 3D

Dtz80-complete

soster/dtZ8015

A simple 8 Bit computer based on the Z80 CPU

Size
200.7 × 149.9 mm
Copper layers
2
Thickness
1.6 mm
Parts
107
Nets
188
Pads
699
Tracks, vias
7,575, 1,390
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
1 Jan 2021
Updated
5 Aug 2025

Overview

Dtz80-complete is an open-source printed circuit board by soster, from the soster/dtZ80 repository on GitHub. It is a 2-layer board of 200.7 × 149.9 mm with 107 parts on 188 nets, routed with 7,575 tracks and 1,390 vias.

It is built around the 74HC245D, 74LS32SC and 74LS573PC, with the 74HC00D, 74HCT138D and 74LS04PC among its other parts. Its parts include 34 resistors, 23 connectors, 18 ICs, 16 capacitors and 2 crystals. It belongs with the retro computing and games boards of this library.

Main components

8

README

README.md

dtZ80 - A simple 8 Bit Computer based on the Z80 CPU

This started as a project during the second Corona lockdown, where I had to much free time. I wanted to design my own 8 Bit computer and decided to use the Z80 CPU. The first idea was to use a MOS 6502 because a variant of that powers the C64, a computer I used much in my childhood. The Z80 is easier to source where I live so I used that instead.

I started on breadboards but quickly discovered the limits of that so I soldered some prototypes and finally designed some PCBs with kicad.

The bus is compatible to the Bus of the RC2014 Z80 computer, so I can exchange expansion cards.

This documentation now covers the new "Black Edition" of the dtZ80 (Rev 1), a larger board without the need to use extension cards. Previous prototypes had a common bus board and extension cards for the CPU, RAM etc. All software for the previous prototypes can be found at asm/prototype for historical reasons.

The dtZ80 uses a Z80 CPU with clocked with 7.3728 Mhz (which doubles as a clock for serial communication), a Z80 SIO for serial communication, a CTC counter timer, 32kb of RAM and 32kb of ROM and a AY-3-8910A sound chip. It uses a single seven segment display for debugging purposes and a 4 line, 20 characters per line LCD for text output.

Tools

  • rasm is used as the assembler.
  • Visual Studio Code is used as an editor and enviroment for assembler
  • Minipro is used to flash the EEPROMs, the hardware is a TL866 II PLUS
  • ticks from the z88dk project is used as an emulator / simulator
  • A usb to ttl converter for serial communication (can be switched to 5V levels, only needs TX and RX)

Images

dtZ80 Black Edition

Address Space

Address lines are assigned by a 74LS138 IC (U6) which activates or deactivates the correct ICs.

text
$00: I/O port 7 segment (A0-A7=0)
$04: LCD command I/O port (A5=1)
$05: LCD data I/O port (A5=1,A0=1)
$40: SIO Data Channel A
$42: SIO Control Channel A
$60: CTC Channel 0
$61: CTC Channel 1
$62: CTC Channel 2
$63: CTC Channel 3
$80: Sound Register
$81: Sound Data
LCD

The black edition uses a 4 line, 20 column LCD Display (2004A V1.1) probably based on the HD44780 Chip (Datasheet). It behaves strangely if we send character by character to it, it uses line 3 after line 1 and the lines 2 and 4 are not usable. We have to manually set the DDRAM address holding the character position according to the current line:

text
Line 1: $00 - $13
Line 2: $40 - $53
Line 3: $14 - $27
Line 4: $54 - $67

I assume this is due to backwarts compatibility to 2 line displays.

Parallel Interface

The 8 Bit parallel Interface is used to connect a lcd screen mainly. Due to an error while designing the pcb, it has the following pins (GND=Pin 1):

Parallel Port

Serial Interface

The serial interface is provided by the Z80 SIO chip (SI0/0). It has two channels, A (J1) and B (J6). The clock is provided by the CTC chip for channel A. If you want to use channel B, you have to connect the clock from the pin CTS from J1 to CTS on J6. Please note that RX and TX are labeled from the point of view of the external device, RX is connected to TX on the SIO and vice versa (this maybe was a stupid decistion).

If you are working with linux and you have a usb to serial converter connected to /dev/ttyUSB0 you can use screen to enter serial terminal mode:

text
screen /dev/ttyUSB0 19200

To enter serial mode of the dtZ80 simply press enter now.

Screen commands consist of "C-a" or ctrl+a (holding down the control key, and then pressing the 'a' key, then releasing both), to enter the command input mode, then commands may be entered with another key stroke. To disconnect from the session: Ctrl+a, Ctrl+d, you can then use this to reattach to the session:

text
screen -r

To quit screen and close connection: ctrl+a, k.

CTC Clock Timer Chip

TODO

PS/2 Keyboard module

For ps/2 keyboard to serial conversion I use a "PS2 Keyboard Driver Serial Port Transmission Module".

  1. connect TX from the module to TX from J1. The module communicates via serial in 19.200 Baud, 1 Stop bit, no parity.

Sound

TODO

Simulator / Emulator

The simulator ticks from https://github.com/z88dk/z88dk can be used as a simulator. It provides character output for debugging purposes. Use it like this on assembled binary files:

text
z88dk.z88dk-ticks -iochar 5 bios.bin

-iochar 5 puts out characters just like for the LCD of the dtz80.

Next steps / TODOs

Graphics

Graphics is not finished yet. These are some ideas: Based on: TMS9918A Problem: Works only with DRAM for SRAM Looks like you will need to latch the address bits 8-15 when RAS goes low Connect (/CAS0 AND /CAS1) to /OE on the SRAM and use one of them for A16 also Important: Clock 10.738635 Mhz, Type ‎MP107-E‎ for video timing Use schematics from: https://github.com/jblang/TMS9918A

Links

More images

dtZ80 CPU Card

Parts

107
QtyValueFootprintReferences
10Conn_01x01MountingHole:MountingHole_3.2mm_M3_DIN965_PadJ13, J14, J15, J16, J17, J18, J19, J20, J21, J22
9100nCapacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mmC3, C4, C5, C6, C11, C12, C15, C16, C17
9330Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR13, R14, R16, R17, R18, R19, R20, R21, R33
61kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR4, R22, R29, R30, R31, R32
62KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR6, R8, R9, R23, R24, R25
410kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R10, R15, R34
33kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR26, R27, R28
210KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR5, R7
21MResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR2, R11
222pFCapacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mmC1, C2
24.7uCapacitor_THT:C_Radial_D6.3mm_H5.0mm_P2.50mmC13, C14
274LS32Package_DIP:DIP-14_W7.62mm_SocketU1, U9
274LS573Package_DIP:DIP-20_W7.62mm_SocketU7, U13
1100nFCapacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mmC8
110nFCapacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mmC9
110uFCapacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mmC10
11KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR3
128C256dtz80:DIP-28_W15.24mm_Socket_Large_HolesU3
147KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR12
15161ASdtz80:7SegmentLED_LTS6760_LTS6780U10
15V SerialConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ1_5VtoSerial1
174HC00Package_DIP:DIP-14_W7.62mm_SocketU16
174HC245Package_DIP:DIP-20_W7.62mm_SocketU8
174HCT138Package_DIP:DIP-16_W7.62mm_SocketU15
174LS04Package_DIP:DIP-14_W7.62mm_SocketU5
174LS138Package_DIP:DIP-16_W7.62mm_SocketU6
174LS393Package_DIP:DIP-14_W7.62mm_SocketU4
17Seg EnableConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP7
18 Bit OutputConnector_PinHeader_2.54mm:PinHeader_2x07_P2.54mm_VerticalJ4
1Auto ResetConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP8
1Base ClockConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP1
1CTCConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ2
1CXO_DIP8Oscillator:Oscillator_DIP-8X1
1Clock/2Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP2
1Clock/4Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP3
1Clock/8Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP4
1CrystalCrystal:Crystal_HC52-8mm_VerticalY1
1Enable LinesConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ7
1External ClockConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ8
1FT_232 AConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ1
1FT_232 BConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ6
1HM62256Package_DIP:DIP-28_W15.24mm_SocketU11
1IEI ExternalConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP9
1JACK_TRSdtz80:Tayda_3.5mm_stereo_TRS_jack_A-853J10
1LCDConnector_PinHeader_2.54mm:PinHeader_1x16_P2.54mm_VerticalJ3
1Micro USBConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ12
1NE555PPackage_DIP:DIP-8_W7.62mmU12
1POWERLED_THT:LED_D3.0mmD1
1RC2014BusConnector_PinHeader_2.54mm:PinHeader_1x40_P2.54mm_VerticalJ5
1ROM OffConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP11
1ROM OnConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP10
1R_POTPotentiometer_THT:Potentiometer_ACP_CA9-V10_VerticalRV1
1ResetButton_Switch_THT:SW_TH_Tactile_Omron_B3F-10xxSW1
1System BusConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalJ9
1X1 ClockConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP5
1Y1 ClockConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP6
1YM Parallel IOConnector_PinHeader_2.54mm:PinHeader_2x09_P2.54mm_VerticalJ11
1YM2149Package_DIP:DIP-40_W15.24mm_SocketU14
1Z80CPUPackage_DIP:DIP-40_W15.24mm_SocketU2
1Z80CTCPackage_DIP:DIP-28_W15.24mm_SocketIC2
1Z80SIOPackage_DIP:DIP-40_W15.24mm_SocketIC1

More from soster/dtZ80

3
  • 2 layers127 × 121.9 mmSimple output, the printed circuit board in 3D

    Simple output

    soster/dtZ80

    A simple 8 Bit computer based on the Z80 CPU

    37 parts15
  • 2 layers128.3 × 88.9 mmDtZ80, the printed circuit board in 3D

    DtZ80

    soster/dtZ80

    A simple 8 Bit computer based on the Z80 CPU

    21 parts15
  • 2 layers119.4 × 55.9 mmDtZ80-memory, the printed circuit board in 3D

    DtZ80-memory

    soster/dtZ80

    A simple 8 Bit computer based on the Z80 CPU

    6 parts15

Similar boards

  • 2 layers486 × 306.3 mmMonacoGP, the printed circuit board in 3D

    MonacoGP

    stonedDiscord/MonacoGP

    Sega MonacoGP TTL Boards

    257 parts1
  • 2 layers630 × 300 mmSecretBase, the printed circuit board in 3D

    SecretBase

    stonedDiscord/SecretBase

    SEGA Secret Base Arcade Game

    441 parts
  • 4 layers304.5 × 217.2 mmLatest Full Backplane, the printed circuit board in 3D

    Latest Full Backplane

    Trilobyte-CPU/8-bit-computer

    A DIY 8-bit computer built mostly with discrete logic chips

    478 parts2
  • 2 layersFull schematic, the printed circuit board in 3D

    Full schematic

    sammothxc/6502-stacked-cardputer

    my Ben Eater 6502 Computer Kit personal repo

    45 partsGPL-3.0
  • 4 layers83.3 × 68.2 mmCPU, the printed circuit board in 3D

    CPU

    Synthron/S65

    Yet another 8bit Retro Computer

    22 parts2
  • 4 layers144.8 × 184.1 mmPrototype 8088, the printed circuit board in 3D

    Prototype 8088

    miselin/M88

    The M88 Computer

    69 parts2CERN-OHL-P-2.0
  • 4 layers337.6 × 105.7 mmISA CGA, the printed circuit board in 3D

    ISA CGA

    hkzlab/CGA_Redux

    The Color Graphics Adapter Redux board is a more or less faithful clone of the original IBM CGA, based on the original schematics

    170 parts56
  • 4 layers243.8 × 170.2 mmHEC1, the printed circuit board in 3D

    HEC1

    Andy18650/HEC-Model-Z1

    A Z80 computer with protected mode support

    126 parts36GPL-3.0

Questions

How big is the Dtz80-complete PCB?

It measures 200.7 × 149.9 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Dtz80-complete use?

107 parts, built around the 74HC245D, 74LS32SC, 74LS573PC 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.

Where can I download the Dtz80-complete KiCad files?

From the soster/dtZ80 repository on GitHub, at the commit this page was made from: the board is schema/dtz80-complete/dtz80-complete.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Dtz80-complete design in my own project?

Its repository states no licence, so its author keeps all rights: ask soster before reusing the design.