

Zx2022
Another DIY Z80 Computer With CP/M
- Size
- 100 × 100 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 34
- Nets
- 106
- Pads
- 380
- Tracks, vias
- 1,893, 52
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 6 (file 20211014)
- Created
- 29 Sep 2022
- Updated
- 10 Mar 2023
Overview
Zx2022 is an open-source printed circuit board by michalin, from the michalin/ZX2022 repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 100 × 100 mm with 34 parts on 106 nets, routed with 1,893 tracks and 52 vias.
It is built around the 74LS02PC and 74LS00SC. Its parts include 12 resistors, 9 ICs, 6 connectors, 5 capacitors and 1 switch.
Main components
2README
README.mdZX 2022
Yet another homebuilt Z80 Computer, but this one works without any FPGAs or Microcontrollers, but components that were available at the time when the Z80 processor was state of the art. It can run historic CP/M programs like Multiplan, Wordstar and MBasic, as well as some games. This is a reminiscense to the Sinclair ZX81 computer. In contrast to its predecessor, the ZX2020, this one uses a 32 kilobyte EE Prom to reliably store the CP/M BDOS and BIOS. Furthermore a PS/2, or PS/2 compatible USB keyboard can be connected. With an optional TMS99x8 based video card, a TV or monitor can also be used. This repository contains gerber files for both the ZX2022 and the video card. So it can now be easily replicated.
Features
- Zilog Z80 processor @6MHz, higher clock rates might also work.
- 128 Kilobytes of static RAM, can be switched in banks of 32k
- 32 Kilobytes of EEprom
- 2 Serial UART ports 187.5 kBaud (Clock freqency/32):
- Terminal emulation, (Putty works best)
- File transfer. Files in a special folder on the PC show up as drive B>
- EEprom provides 15 Kilobytes of file memory (drive A>). CP/M executables are started automatically after reset or power on
- IDE (PATA) interface. Provides 4x16 Kilobyte organized as drives C>..F>
- CP/M 3.0
- 64-Pin connector for up to 6 Extension modules
- Optional graphics card with TMS99x8.
- 256x192 pixels and 15 colors
- 32 Sprites (8x8, 16x16 or 32x32 upscaled)
- NTSC (TMS9918) or PAL (TMS9928)
- Supports PS/2 or PS/2 compatible USB keyboards. New USB keyboards or wireless keyboards may NOT work.
- Now programmable in C using SDCC (Small Device C Compiler)
To build the ZX 2022, do the following
- Wire the parts on a breadboard or prototype board according to the schematic.
- OR: Make or order a PCB based on the gerber files
./Schematic/Mainboard/gerber-main.zip(Recommended) - Load the Arduino Sketch
loader/loader.inointo an Arduino Mega - Plug the Arduino Mega on the Bus connector, where it is marked on the silkscreen
- Connect the TxB and RxB pins of the DART with Pin 0 (TX0) and 1 (RX0) of your Arduino Mega
- Start a serial terminal emulation, for example "Putty", set 187500 Baud, 8 Bit, 1 Stopbit, no parity
- On Windows, run the tool
bin/loader.exe. Click on "ROM Image" and select the fileCPM/rom.img - When a welcome message and the CP/M prompt "B>" appears on your terminal emulation, the ZX2020 is ready to use. If you have a PATA compatible hard drive connected, you need to format it under CP/M with the "mkdsk.com" tool before you can use it. Note that all data on the disk will be lost.
Using The Serial Disk Drive
Connect RX0 of the Arduino with TxB and TX0 with RxB of the ZX2022. It is not necessary to plug the Arduino into the pin header. Instead of an Arduino, a USB to serial converter may be used here as well. Select the serial port in the drop down menu and check the "Connect" check box to establish the serial connection. After a reset, the serial disk drive can be accessed as drive B>.
The folder CPM/serdisk contains the CP/M programs in up to 16 user folders numbered from 0 to 15. If any of these files have changed, click the "Reload" Button to apply the changes. To access the files from CP/M, type B, followed by the user number 1-15 and a colon. For example B5: gives access to the files under CPM/serdisk/5
Connecting a Hard Drive
IDE (PATA) hard drives can be connected through a 40-Pin connector. I recommend using a CompactFlash with a CF to IDE adapter. Best suitable are adapters that support power supply over pin 20 like this one: https://amzn.to/3SFdIag. call ´mkdsk.com´ on the serial disk drive B> to format the drive.
The Autostart Feature
Clicking the File button in the loader app uploads an executable CP/M file (*.com) that is executed after each power-on or reboot. The loader app detects when there is a new version of this "autostart program" and restarts the ZX2022 with this new version. This function is particularly useful for writing new software.
Connecting a PS/2 Keyboard
Connect a PS/2 Keyboard like shown below:

Connecting a USB Keyboard
USB Keyboards can also be connected if they support the PS/2 protocol. Most older keyboards do so, but newer or wireless keyboards often don't. These will not work. I recommend to make an adapter cable from an USB extension cable as shown below:

Changing the keyboard layout
This is only necessary with PS/2 or USB keyboards. With terminal connections, the settings of the Windows-OS apply.
To change the keyboard layout, set the KBLAYOUT variable in the file CPM/SYSCFG.LIB either to DE or EN (default)
and rebuild the CP/M rom image.
Using With the TMS9918 Video Card
You find the schematic and gerber files in Schematic/Video/. Set a jumper or solder a bridge at the position IO2 on the pin header J3. This configures the card for IO addresses starting at 20h. This setting must match the p$vdp constant in CPM/SYSCFG.LIB
The TMS9918 can only display 40 columns, while terminals display 80 columns. This CP/M version is built for 80 columns, but it can be changed to 40 columns. To do this, open the file gencpm.dat, change the constant PAGWID to 28 (Which is 40 in hex) and rebuild the CP/M rom image.
Parts
34| Qty | Value | Footprint | References |
|---|---|---|---|
| 12 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12 |
| 4 | 100n | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm | C1, C2, C3, C4 |
| 3 | 74LS02 | Package_DIP:DIP-14_W7.62mm_Socket | U5, U7, U8 |
| 1 | 10µ | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C5 |
| 1 | 28C256_PLC32 | Package_LCC:PLCC-32_THT-Socket | U3 |
| 1 | 628128 | Package_DIP:DIP-32_W15.24mm_Socket | U2 |
| 1 | 74LS00 | Package_DIP:DIP-14_W7.62mm_Socket | U6 |
| 1 | 74LS138 | Package_DIP:DIP-16_W7.62mm_Socket | U9 |
| 1 | Bus | zx2022:PinHeader_2x32_P2.54mm_Vertical | J2 |
| 1 | OSC 4MHZ | Oscillator:Oscillator_DIP-14 | X1 |
| 1 | PATA | zx2022:BoxConn_2x20_P2.54mm_Horizontal | J5 |
| 1 | PS/2 Keyoard | zx2022:PinHeader_1x04_P2.54mm_Horizontal | J7 |
| 1 | Power | zx2022:PinHeader_1x02_P2.54mm_Horizontal | J6 |
| 1 | Reset | zx2022:SW_PUSH_6mm | SW1 |
| 1 | Ser. Disk | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | J4 |
| 1 | Terminal | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | J3 |
| 1 | Z80CPU | Package_DIP:DIP-40_W15.24mm_Socket | U1 |
| 1 | Z80DART | Package_DIP:DIP-40_W15.24mm_Socket | U4 |
More from michalin/ZX2022
2- 2 layers100 × 100 mm

- 2 layers100 × 100 mm

Similar boards
- 2 layers370.8 × 298.5 mm

8 Bit Computer
The-Invent0r/8-bit-Computer-PCB
These are the KiCAD files for my 8-Bit Computer.
323 parts142 - 4 layers149.9 × 110 mm

- 2 layers357.8 × 124.5 mm

Vic2020mainboard
danwerner21/vic2020
A Vic-20 clone created with [almost] all readily available parts
142 parts78 - 2 layers407 × 184 mm

TRS-80-Model I G E1
RetroStack/TRS-80-Model-I-G-E1
Hardware Replica of the TRS-80 Model I Revision G
230 parts57MIT - 4 layers337.6 × 105.7 mm

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 - 2 layers155.2 × 78.6 mm

80ColumnCard
btb/80ColumnCard
An Apple II 80-Column Card. Based on the Videx Videoterm
47 parts43Apache-2.0 - 4 layers243.8 × 170.2 mm

- 2 layers333.2 × 205.9 mm

Questions
How big is the Zx2022 PCB?
It measures 100 × 100 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Zx2022 use?
34 parts, built around the 74LS02PC and 74LS00SC. 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 Zx2022 KiCad files?
From the michalin/ZX2022 repository on GitHub, at the commit this page was made from: the board is Schematic/Mainboard/zx2022.kicad_pcb and its schematic Schematic/Mainboard/zx2022.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Zx2022 design in my own project?
Its repository publishes it under the GPL-3.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).