explaingit

ianhan/picograph

23CAudience · developerComplexity · 5/5LicenseSetup · hard

TLDR

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.

Mindmap

mindmap
  root((PicoGraph))
    Hardware
      Raspberry Pi Pico 2
      PicoMEM 1.4 board
      USB DisplayLink dongle
    Emulated Adapters
      IBM VGA
      IBM EGA
      Hercules MDA
      Cirrus SVGA
    Features
      Passive register viewer
      ISA bus monitoring
      Run length encoding
    Use Cases
      Retro PC video output
      FPGA bus debugging
      Custom ISA modules
    Requirements
      ISA slot PC
      DL 1x0 or DL 1x5 dongle
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Add modern monitor output to a vintage ISA-bus PC without sourcing period-correct video cards

USE CASE 2

Emulate VGA, EGA, Hercules, or Cirrus SVGA graphics adapters on a retrocomputing or FPGA project

USE CASE 3

Use the passive register viewer to watch VGA register states and POST codes on an ISA bus without interfering with the bus

Tech stack

CRaspberry Pi PicoDisplayLinkTinyUSBlibdlo

Getting it running

Difficulty · hard Time to first run · 1day+

Requires a PicoMEM 1.4 board, a USB 2.0 DisplayLink adapter in the DL-1x0 or DL-1x5 family, and an ISA-slot PC to connect everything to.

GPL v2, free to use, modify, and distribute, but modified versions must also be released under GPL v2, some individual files are additionally available under BSD or MIT.

In plain English

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.

Copy-paste prompts

Prompt 1
I want to use PicoGraph to add video output to my ISA-slot PC. What Raspberry Pi Pico 2 firmware do I flash, and which USB DisplayLink adapters are compatible with the project?
Prompt 2
How does PicoGraph emulate VGA on an ISA bus? Walk me through how the C firmware handles I/O and memory access traps from the ISA bus side.
Prompt 3
I want to write a custom PicoGraph module that traps a specific ISA I/O address range. Show me how the sample module is structured and what hooks I need to implement.
Prompt 4
What is the difference between the VGA and Cirrus Logic CL-GD5429 emulation modes in PicoGraph, and when would I choose one over the other for a retro PC project?
Open on GitHub → Explain another repo

← ianhan on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.