Skip to the content
2 layers80 × 85 mmKaypro10Video, the printed circuit board in 3D

Kaypro video capture and output to HDMI

Size
80 × 85 mm
Copper layers
2
Thickness
1.6 mm
Parts
22
Nets
77
Pads
209
Tracks, vias
307, 6
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
11 Apr 2026
Updated
13 Apr 2026

Overview

Kaypro10Video is an open-source printed circuit board by jasperhax0r, from the jasperhax0r/Kaypro10Video repository on GitHub, published under the MIT licence. It is a 2-layer board of 80 × 85 mm with 22 parts on 77 nets, routed with 307 tracks and 6 vias.

It is built around the SN74LVC245AN. Its parts include 12 resistors, 3 ICs, 3 connectors and 2 capacitors. It belongs with the interfaces and adapters boards and the RP2040 boards of this library.

Main components

1

README

README.md

Kaypro 10 HDMI Video Snooper

A hardware and firmware project that taps the character ROM of a Kaypro 10 CP/M computer and outputs a live HDMI display via a Raspberry Pi Zero 2W running Circle bare metal. No modifications are made to the Kaypro's original circuitry.

Kaypro 10 displaying CP/M on HDMI monitor Kaypro 10 adapter PCB

How It Works

The Kaypro 10 uses a 2732 EPROM as its character ROM (U26) and a Synertek SY6545 CRTC to drive its built-in green phosphor monitor. This project passively taps the character ROM's data outputs and the CRTC's timing signals, reconstructs the pixel data in real time on a Raspberry Pi Pico, and sends it over UART to a Raspberry Pi Zero 2W which renders it to HDMI.

text
Kaypro 10
├── 6545 CRTC ──── HSYNC, CCLK, VSYNC, DE ──┐
│                                             │
└── 2732 Char ROM ── D0-D7 ──────────────────┤
                                             │
                                    [PCB Shim Board]
                                    74LVCH245 level shifters
                                    100Ω series resistors
                                             │
                                    [Raspberry Pi Pico]
                                    PIO captures ROM data
                                    synced to HSYNC/CCLK
                                             │ UART 3Mbaud
                                    [Raspberry Pi Zero 2W]
                                    Circle bare metal OS
                                    HDMI output
                                    Rotary encoder color control

Repository Structure

Kaypro10Video/

KiCad PCB files for the main capture board. This board sits between the Kaypro motherboard and the character ROM chip (U26), tapping the data lines D0-D7. It also hosts the Raspberry Pi Pico.

  • Dual SN74LVCH245 level shifters (5V Kaypro → 3.3V Pico)
  • 100Ω series resistors on all signal lines
  • Piggyback socket for the 2732 character ROM
  • JST connector for control signals from the 6545 shim

Kaypro10VideoShim/

KiCad PCB files for the 6545 CRTC shim board. This small board sits between the Kaypro motherboard and the SY6545 CRTC chip, tapping HSYNC, CCLK, VSYNC, and DE without modifying the original board.

  • Piggyback socket for SY6545
  • JST connector output to main capture board
  • Trace lengths kept under 40mm to minimize crosstalk

PicoKaypro/

Raspberry Pi Pico firmware source (C, Pico SDK).

  • PIO program samples character ROM data on CCLK edges
  • HSYNC-locked line capture — DMA armed on each HSYNC transition
  • Double-buffered frame capture (400 lines × 56 bytes)
  • Temporal noise filter (AND with previous frame)
  • UART output at 3Mbaud to Pi Zero 2W
  • USB serial debug output with signal diagnostics

PiDisplay/

Raspberry Pi Zero 2W display firmware source (C++, Circle bare metal).

  • Receives pixel frames over UART
  • Renders to HDMI via direct framebuffer writes
  • 5 color modes: Green, Amber, White, White/Blue, Rainbow
  • Rotary encoder control (turn = color mode, press = scanlines)
  • Scanline overlay effect toggle
  • SD card save/load of settings (kaypro.cfg)
  • Custom palette support via kaypro.pal
  • Status bars: connection state top, color mode bottom
  • GPIO interrupt-driven encoder for instant response

kaypro.uf2

Pre-compiled Pico firmware ready to flash.


Hardware Requirements

ComponentDetails
Raspberry Pi PicoRP2040, any revision
Raspberry Pi Zero 2WWith micro HDMI adapter
Kaypro 10With SY6545 CRTC and 2732 character ROM
Kaypro10Video PCBSee Kaypro10Video/
Kaypro10VideoShim PCBSee Kaypro10VideoShim/
Rotary encoder5-pin (CLK, DT, SW, GND, VCC)
MicroSD cardFor Pi Zero 2W (FAT32, holds kernel and config)

Wiring

Rotary Encoder → Pi Zero 2W

EncoderPi Zero 2W GPIOPin
CLKGPIO23Pin 16
DTGPIO24Pin 18
SWGPIO25Pin 22
GNDGNDPin 20
VCC3.3VPin 17

Pico → Pi Zero 2W

PicoPi Zero 2W GPIOFunction
GP12GPIO15 (Pin 10)UART TX → RX
GNDGND (Pin 6)Common ground

Building the Firmware

Pico Firmware (PicoKaypro/)

Requirements: Pico SDK, CMake, arm-none-eabi-gcc

bash
cd PicoKaypro
mkdir build && cd build
cmake .. \
  -DCMAKE_C_COMPILER=/usr/bin/arm-none-eabi-gcc \
  -DCMAKE_CXX_COMPILER=/usr/bin/arm-none-eabi-g++ \
  -DCMAKE_ASM_COMPILER=/usr/bin/arm-none-eabi-gcc \
  -DPICO_SDK_PATH=/path/to/pico-sdk
make -j4
# Flash kaypro_capture.uf2 to the Pico

Or just flash the pre-built kaypro.uf2 from the repository root.

Pi Zero 2W Firmware (PiDisplay/)

Requirements: Circle bare metal framework, arm-none-eabi-gcc

bash
# Build Circle FatFs addon first (once)
cd circle/addon/fatfs
make RASPPI=2

# Build kernel
cd circle/app/kaypro   # place PiDisplay source here
make RASPPI=2
# Output: kernel7.img

Copy to SD card: kernel7.img, bootcode.bin, start.elf, fixup.dat

Optionally add kaypro.pal for custom colors (see below).


SD Card Configuration

kaypro.cfg (auto-created)

Saves current color mode and scanlines state across reboots. Format: MODE SCANLINES e.g. 1 0 = Amber, scanlines off.

kaypro.pal (optional)

Custom color palette. Place in the root of the SD card.

text
# mode_name  fg_rrggbb  bg_rrggbb
green        00FF46     000000
amber        FFB000     000000
white        FFFFFF     000000
white_blue   FFFFFF     0000AA
rainbow      000000     000000

Colors are 24-bit RGB hex. The rainbow mode ignores fg and generates per-scanline hues automatically.


Signal Notes

The SY6545 CRTC on the Kaypro 10 produces the following signals (measured):

SignalFrequencyNotes
CCLK~1.286 MHzCharacter clock
HSYNC~21 kHzHIGH=3µs blanking, LOW=43µs active
VSYNC~49 HzActive low
DE—Display Enable, active HIGH during active video

The firmware captures 56 bytes per scan line (the active video window) across 400 total scan lines per frame, giving a frame size of 22,400 bytes transmitted at ~12fps over UART.


Acknowledgements


License

MIT License — see LICENSE file for details.

Parts

22
QtyValueFootprintReferences
12100Resistor_SMD:R_2010_5025Metric_Pad1.40x2.65mm_HandSolderR1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12
2CCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC1, C2
2SN74LVC245Package_DIP:DIP-20_W7.62mmU1, U2
14k EPROMPackage_DIP:DIP-24_18.0mmx34.29mm_W15.24mm_SocketU3
1Conn_01x02_PinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_HorizontalJ3
1Conn_01x03_PinConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_HorizontalJ1
1Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_HorizontalJ2
1RaspberryPi_PicoModule:RaspberryPi_Pico_Common_UnspecifiedA1
1~Package_DIP:DIP-24_W15.24mmHeader Pins1

More from jasperhax0r/Kaypro10Video

1
  • 2 layers30 × 55 mmKaypro10VideoShim, the printed circuit board in 3D

    Kaypro10VideoShim

    jasperhax0r/Kaypro10Video

    Kaypro video capture and output to HDMI

    3 partsMIT

Similar boards

  • 4 layers33.3 × 54.6 mmMSX Goauld Rev4, the printed circuit board in 3D

    MSX Goauld Rev4

    jabadiagm/MSXgoauld_tn20k

    MSX Goa'uld board with Tang Nano 20k

    17 parts101GPL-3.0
  • 2 layers101.6 × 89.5 mmWonrderTANG, the printed circuit board in 3D

    WonrderTANG

    lfantoniosi/WonderTANG

    TangNano 20K cartridge for MSX computers

    28 parts75BSD-2-Clause
  • 2 layers335 × 218.6 mmMSX Goauld, the printed circuit board in 3D

    MSX Goauld

    leomanes/stargate

    Stargate MSX Compatible Computer

    298 parts18GPL-3.0
  • 2 layers101.6 × 65.3 mmT mapper, the printed circuit board in 3D

    T mapper

    jabadiagm/MSXmapper_tn9k

    Mapper de 4 MB para MSX

    12 parts13
  • 4 layers42 × 50 mmSimpleFC G, the printed circuit board in 3D

    SimpleFC G

    wangyeee/OpenHardware

    Collections of hardware design related to my drone project.

    134 parts10BSD-3-Clause
  • 2 layers99.9 × 49.9 mmRcbus vdp9k, the printed circuit board in 3D

    Rcbus vdp9k

    b3rendsh/cxland

    common coleco, msx and retro computer cp/m software and hardware

    19 parts8
  • 2 layers100 × 96 mmCopico, the printed circuit board in 3D

    Copico

    thomasshanks/copico-board

    CoPiCo PCB KiCad

    55 parts7MIT

Questions

How big is the Kaypro10Video PCB?

It measures 80 × 85 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Kaypro10Video use?

22 parts, built around the SN74LVC245AN. 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 Kaypro10Video KiCad files?

From the jasperhax0r/Kaypro10Video repository on GitHub, at the commit this page was made from: the board is Kaypro10Video/Kaypro10Video.kicad_pcb and its schematic Kaypro10Video/Kaypro10Video.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Kaypro10Video design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).