· via Hacker News – Front Page (hnrss.org)
frank-386 boots DOS and Windows 95 on an RP2350 board with VGA and sound
An open-source port of the Tiny386 emulator turns RP2350 boards like the Raspberry Pi Pico 2 into working i386 PCs, complete with VGA or HDMI video, emulated Sound Blaster audio and SD-card disk images.
A project named frank-386 has surfaced on the Hacker News front page, offering a working i386 PC emulator that runs directly on the RP2350, the microcontroller behind the Raspberry Pi Pico 2. According to the project's GitHub repository, the firmware boots DOS, Windows 3.x, Windows 95 and Linux, drives a VGA or HDMI display, and emulates a surprisingly complete set of period-correct peripherals.
What gets emulated
The firmware is a port of Tiny386, an x86 PC emulator by Chunhui He, adapted for the RP2350 by Mikhail Matveev and DnCraptor. The CPU core handles the full i386 architecture with partial i486 and i586 support, and an optional x87 floating-point unit can be enabled. Memory tops out at 8 MB backed by external PSRAM, which makes boards with 8 MB of PSRAM a hard requirement — the chip's internal RAM is nowhere near enough for a PC.
Video works in text and graphics resolutions up to 640x480 over VGA or HDMI. Audio support is unusually thorough for a microcontroller project: the README lists AdLib OPL2, Sound Blaster 16, PC Speaker, Tandy, Covox and Disney Sound Source emulation, delivered through either an I2S DAC or simple PWM output.
Storage, input and runtime controls
Disk images live on a FAT32-formatted SD card connected over SPI. A 386 directory holds the required SeaBIOS and VGA BIOS ROM files alongside floppy, hard disk and CD-ROM images — standard 1.44 MB floppies, raw disk images up to 2 GB and ISO 9660 files are all accepted. A runtime disk manager opened with Win+F12 lets you swap images in and out without a reboot, and the emulator writes those changes back to its config.ini automatically.
For input, you can wire a PS/2 keyboard and mouse straight to GPIO pins, or plug USB versions into the RP2350's native USB host port — though enabling USB HID shuts off the USB serial console, pushing debug output to UART instead. NES gamepads are supported too, including a mode that maps the D-pad to cursor movement with the B and A buttons acting as left and right clicks. A settings menu on Win+F11 exposes memory size, CPU generation, the FPU toggle, individual sound devices and clock frequencies.
Supported boards and building it
The firmware targets RP2350 boards that already integrate video, storage and input connectors: the FRANK development board, the Murmulator retro-computing platform in its M1 and M2 variants, the Olimex PICO-PC and the Waveshare RP2350-PiZero, each with its own GPIO layout.
Building from source needs the Raspberry Pi Pico SDK 2.0 or newer and an ARM GCC toolchain. A build script selects the board layout and clocks — the RP2350 runs at 378 MHz by default or 504 MHz, with PSRAM at 133 or 166 MHz — and the resulting UF2 files are flashed in BOOTSEL mode with picotool. The README also carries era-appropriate troubleshooting: Windows 95 setup demands the /im flag to skip a memory check, and startup "protection errors" are handled with the patcher9x tool.
Why it matters
The RP2350 is a general-purpose microcontroller, not a PC platform, and it is cheap and currently in production. Getting a usable 386-class machine out of one — one that boots Windows 95 and reproduces Sound Blaster audio — shows how far both microcontroller throughput and open emulation code have advanced. The project is also a tidy case of open-source layering: it builds on Tiny386's CPU and peripheral core, borrows RP2350 integration patterns from Pico-286 and QuakeGeneric, and reuses QEMU's device emulation, with the port itself released under the MIT license. For retro-computing enthusiasts, it means a pocket-sized DOS machine assembled from new, off-the-shelf parts rather than salvaged vintage hardware.
- #emulation
- #retro-computing
- #rp2350
- #raspberry-pi
- #open-source