gitmyhub

picograph

C ★ 36 updated 17d ago

PicoGraph is a Pi Pico 2 ISA video card that supports several PC graphics standards using DisplayLink

A custom video card for 1980s-era ISA-bus PCs built with a Raspberry Pi Pico 2 that emulates VGA, EGA, Hercules, and SVGA graphics adapters using a USB DisplayLink dongle for monitor output.

CRaspberry Pi PicoDisplayLinkTinyUSBlibdlosetup: hardcomplexity 5/5

PicoGraph is a custom video card for old PCs that use the ISA expansion slot, the connector standard found in IBM-compatible computers from the 1980s and early 1990s. Instead of a traditional circuit board filled with dedicated video chips, it uses a Raspberry Pi Pico 2, a small and inexpensive microcontroller, mounted on a companion board called PicoMEM 1.4. Custom firmware running on the Pico makes the hardware behave like several classic PC graphics adapters.

The project started as a debugging tool for FPGA work, used to watch and log the I/O and memory signals flowing on an ISA bus. It grew into what the author describes as the first Pico-based ISA video card.

To produce an actual display, PicoGraph connects a USB DisplayLink adapter, a type of USB dongle that drives a monitor over USB. The firmware handles communication between the ISA bus signals and the DisplayLink device.

The emulated graphics standards include IBM VGA, IBM EGA, Hercules/MDA text and graphics mode, strict MDA, and the Cirrus Logic CL-GD5429, a popular SVGA chip from the early 1990s. Each targets a specific era and capability level of old PC video hardware. A passive register viewer mode shows VGA register states, POST codes, and palette data without interfering with the bus, and a sample module demonstrates how to set up I/O and memory access traps.

The DisplayLink support is built on a heavily modified version of the libdlo library, adapted first for TinyUSB (a USB stack for microcontrollers) and later extended with run-length encoding. Supported adapters are USB 2.0 DisplayLink devices in the DL-1x0 and DL-1x5 families. The project is licensed under GPL version 2, with some individual files also available under BSD or MIT licenses.

Where it fits