Add text labels on this photo of the PCB that I designed in current project for each connector, power switch, buttons, speaker, SD card connector, and power LED indicator
And create document with photo with the labels and list with labeled components with descriptions
Here is what happens when you press the power switch.
A single chip — one ESP32, the kind that usually blinks an LED or reads a temperature sensor — wakes up and splits itself in two. One half starts screaming a video signal down a VGA cable forty times a second, drawing every scanline by hand because there is no graphics card to do it. The other half becomes a 1985 Intel processor, fetching and executing 8086 machine code that was never meant to run on anything but silicon from the the Cold War era.
Between them they conjure an interrupt controller, a timer chip, a keyboard controller, a real-time clock, two serial ports — every piece of an original IBM PC, summoned into existence in software, all at once, in real time.
And then, against every reasonable expectation, a DOS prompt appears on the monitor.
No host computer. No emulator window. No safety net. Just a board you can hold in your hand, being a computer that predates the people who'll build the next one.
What it is, in plain terms
It's a working IBM PC/XT compatible, complete on one custom PCB:
A real 8086, emulated cycle by cycle — runs unmodified DOS, Windows 3.0, CP/M, and thousands of period programs, with 1 MB of RAM
VGA out to a genuine monitor — CGA and Hercules graphics, painted in software through a resistor DAC
PS/2 keyboard and mouse — via an emulated 8042 controller; DOS can't tell the difference from real hardware
An SD card that holds your disks — floppy and hard disk images become drives A: through D:
WiFi that downloads its own operating systems — then switches itself off so the emulator keeps every cycle
A speaker that beeps like 1985 — emulated PC timer → DAC → onboard amplifier
One USB-C cable for everything: power, flashing, debug
Why build the hard version?
You already have a faster way to run DOS. Your phone could emulate a hundred of these without noticing.
That's exactly the point. A software emulator hides on top of a modern machine doing the heavy lifting. This board has nowhere to hide. Every cycle is counted, every kilobyte of internal RAM is spoken for, and the VGA signal has to be perfect or the monitor shows static. There's no operating system to catch you when you fall.
Pulling that off — VGA generation and CPU emulation and storage and networking, all dancing on two little cores — is one of the most satisfying engineering problems the ESP32 can throw at you. I learned more getting this stable than from any project before it.
And "getting it stable" is a story in itself. It did not go smoothly. The build log is the unedited version: the boot loop that wouldn't die, the crash that struck at random, the strapping pin that quietly sabotaged everything.
The software library
Everything from the golden XT age (8086/8088, CGA/Hercules, 640 KB):
The emulation engine — VGA driver, i8086 core, device models — is FabGL by Fabrizio Di Vittorio (GPL v3). This project is the custom hardware and the reworked firmware around that engine. Disk images come from the FabGL library, FreeDOS, and the Internet Archive.
Status
Hardware works. Firmware is stable. It boots FreeDOS, MS-DOS 3.31–6.22, Windows 3.0, GEM, GEOS, ELKS, and CP/M-86 from the SD card. Keyboard, mouse, VGA, speaker, and one-time WiFi download all do their jobs.
What it needs next: a proper enclosure, that OPL2 sound experiment, real benchmark numbers against a 4.77 MHz XT, and a curated disk image of the era's best.
Press the switch. Watch it shouldn't-but-does. Then go play some Pirates!
ESP32 x86 PC Emulator
📖 Complete Guides
It shouldn't work. But it does.
What it is, in plain terms
Why build the hard version?
The software library
Under the hood
Where it could go
[Fork it and join the ride](https://www.flux.ai/projects/forkProject?documentUid=e19bd520-8573-489e-aad9-bbea0979131c&origin=Menu&organizationUid=)
Credit where it's due
Status
Reviews
Documents
README
Flashing Guide
Software & Tools
More Demo Videos
Component & Connector Mapping
Build Log: Everything That Broke
Assets
esp32-wrover-e_esp32-wrover-ie_datasheet_en.pdf
esp32-wrover-e_esp32-wrover-ie_datasheet_en
Screenshot 2026-06-10 143217.png
Screenshot 2026-06-10 143217Thumbnail
ESP32 x86 PC image.png
ESP32 x86 PC image
Screenshot 2026-06-10 143432.png
Screenshot 2026-06-10 143432
ESP32 x86 PC
A self-contained “retro PC” platform built around the ESP32, exposing classic PC-style IO: VGA video, PS/2 keyboard/mouse, audio-out to an onboard speaker, microSD storage, plus USB-C for power and USB-UART for programming/debug.