A 386 PC for Your RP2350
Recorded: Sept. 14, 2026, 10 a.m.
| Original | Summarized |
GitHub - rh1tech/frank-386: Tiny386 port to RP2350 · GitHub Skip to content Navigation MenuSign inAppearance settingsPlatformAI CODE CREATIONGitHub CopilotWrite better code with AIGitHub Copilot appDirect agents from issue to mergeMCP RegistryIntegrate external toolsDEVELOPER WORKFLOWSActionsAutomate any workflowCodespacesInstant dev environmentsIssuesPlan and track workCode ReviewManage code changesCode QualityEnforce quality at mergeAPPLICATION SECURITYGitHub Advanced SecurityFind and fix vulnerabilitiesCode securitySecure your code as you buildSecret protectionStop leaks before they startEXPLOREWhy GitHubDocumentationBlogChangelogMarketplaceView all featuresSolutionsBY COMPANY SIZEEnterprisesSmall and medium teamsStartupsNonprofitsBY USE CASEApp ModernizationDevSecOpsDevOpsCI/CDView all use casesBY INDUSTRYHealthcareFinancial servicesManufacturingGovernmentView all industriesView all solutionsResourcesEXPLORE BY TOPICAISoftware DevelopmentDevOpsSecurityView all topicsEXPLORE BY TYPECustomer storiesEvents & webinarsEbooks & reportsBusiness insightsGitHub SkillsSUPPORT & SERVICESDocumentationCustomer supportCommunity forumTrust centerPartnersView all resourcesOpen SourceCOMMUNITYGitHub SponsorsFund open source developersPROGRAMSSecurity LabMaintainer CommunityGitHub StarsArchive ProgramREPOSITORIESTopicsTrendingCollectionsEnterpriseENTERPRISE SOLUTIONSEnterprise platformAI-powered developer platformAVAILABLE ADD-ONSGitHub Advanced SecurityEnterprise-grade security featuresCopilot for BusinessEnterprise-grade AI featuresPremium SupportEnterprise-grade 24/7 supportPricingSearch/Sign inSign upAppearance settings You signed in with another tab or window. Reload to refresh your session. Dismiss alert rh1tech frank-386 Public
Notifications
Fork
Star Code Issues Pull requests Actions Projects Security and quality Insights
Additional navigation options
Code Issues Pull requests Actions Projects Security and quality Insights
mainBranchesTagsGo to fileCodeOpen more actions menuLatest commit History259 Commits259 CommitsFolders and filesNameNameLast commit messageLast commit date.githooks.githooks 386386 boardsboards docsdocs driversdrivers linklink screenshotsscreenshots slaveslave srcsrc .gitignore.gitignore CMakeLists.txtCMakeLists.txt LICENSELICENSE README.mdREADME.md build.shbuild.sh flash.shflash.sh pico_sdk_import.cmakepico_sdk_import.cmake release.shrelease.sh version.txtversion.txt View all filesRepository files navigationREADMELicenseMore itemsFRANK 386 Full i386 (and partially i486/i586) CPU emulation with optional x87 FPU Screenshots Supported Boards FRANK - A versatile development board with VGA output Hardware Requirements Raspberry Pi Pico 2 (RP2350) or compatible board Note: When USB HID is enabled, the native USB port is used for keyboard/mouse input. USB serial console (CDC) is disabled in this mode; use UART for debug output. Board Configurations Signal Base Range SD Card (SPI mode) Signal CLK CMD DAT0 DAT3/CS PS/2 Keyboard Signal CLK DATA PS/2 Mouse Signal CLK DATA NES/SNES Gamepad Signal CLK DATA LATCH I2S Audio Signal DATA BCLK LRCLK SD Card Setup BIOS Files [frank-386] Standard 1.44MB floppy images (1474560 bytes) Hard Disk Images (.img): Raw disk images up to 2GB CD-ROM Images (.iso): Standard ISO 9660 images Loading Disk Images Press Win+F12 to open the Disk Manager Changes made via Disk Manager are saved to config.ini automatically. Shortcut Win+F12 Win+F11 Ctrl+Alt+Delete Settings Menu (Win+F11) Memory size (1-8 MB) Settings are saved to config.ini and take effect after restart. Insert/eject floppy images (A:, B:) Building Install the Raspberry Pi Pico SDK (version 2.0+) Build Steps # Build with default settings (M2 board, 378MHz, PS/2 keyboard) # Build for M1 board # Build with USB keyboard support # Custom build Option -b, --board <M1|M2|PC|Z2> -c, --cpu <MHz> -p, --psram <MHz> --usb-hid --hdmi --debug -clean Build Options (CMake) Option -DPICO_BOARD=pico2 -DBOARD=M1 -DBOARD=M2 -DBOARD=PC -DBOARD=Z2 -DCPU_SPEED=378 -DPSRAM_SPEED=133 -DUSB_HID_ENABLED=ON -DDEBUG_ENABLED=ON -DFORCE_HDMI=ON Release Builds # With version number frank-386_m1_<version>.uf2 - M1 board (Murmulator) Flashing # Or use the flash script: For PS/2: Check keyboard connection and GPIO pins SD card not detected Ensure SD card is formatted as FAT32 License frank-386 port and development (2026) Acknowledgments Project: Tiny386 - x86 PC Emulator Pico-286 Project: Pico-286 QuakeGeneric Project: QuakeGeneric QEMU Project: QEMU MAME FM Sound Generator Project: MAME inih Project: inih SeaBIOS Project: SeaBIOS FatFs Project: FatFs FatFs Utilities Author: Carl John Kugler III (2021) Raspberry Pi Pico SDK Project: Pico SDK AboutTiny386 port to RP2350ResourcesReadmeLicenseActivityStars50 starsWatchers1 watchingForks5 forksReport repositoryReleasesPackagesContributorsLanguages Footer © 2026 GitHub, Inc. Footer navigation Terms Privacy Security Status Community Docs Contact Manage cookies Do not share my personal information You can’t perform that action at this time. |
The FRANK 386 project is an implementation that ports the Tiny386 x86 PC emulator to the RP2350-based hardware, aiming to create a retro-computing platform with extended peripheral support. The core functionality involves full i386 CPU emulation, including optional support for x87 FPU, alongside emulation for various PC peripherals such as the 8259 PIC, 8254 PIT, 8042 keyboard controller, VGA, and sound devices. The system is designed to interface with specific RP2350-based boards, such as FRANK, Murmulator, Olimex PICO-PC, and Waveshare RP2350-PiZero. Hardware requirements necessitate a Raspberry Pi Pico 2 (RP2350) or compatible board, along with 8MB of PSRAM for memory expansion, an HDMI or VGA connector, and an SD card module operating in SPI mode. Input devices are supported via either dedicated PS/2 keyboard and mouse connections or native USB host input. The system also incorporates various audio outputs, and when USB HID is enabled for input, the native USB port is utilized, while USB serial console (CDC) is disabled, mandating the use of UART for debugging output. The hardware utilization is managed through specific GPIO layouts defined for different supported boards (M1, M2, PC, Z2), detailing connections for signals such as VGA/HDMI, SD card communication, PS/2 keyboard and mouse, and NES gamepad support. For instance, signals for the PS/2 keyboard and mouse are mapped to distinct GPIO pins depending on the board variant, and the I2S audio path is also configured to interface with the hardware. Disk management is facilitated through an SD card module, where a specific directory structure must be established on the card, including a 386 directory containing files like config.ini, bios.bin, and various disk images such as floppy and hard disk images. The system employs a runtime disk manager, accessible via keyboard shortcuts, which allows users to dynamically insert, eject, or select these disk images for the emulator to utilize. Configuration settings are handled via an INI file, which specifies memory size, BIOS files, and specific emulator parameters. Furthermore, a settings menu provides runtime configuration options, allowing users to adjust memory size, CPU generation, FPU emulation, sound devices, input device states, and CPU frequency/voltage, with these changes being persisted in the configuration file upon system restart. The build process requires the installation of the Raspberry Pi Pico SDK and the ARM GCC toolchain. The process involves cloning the repository and executing build scripts that offer various options, allowing customization of the target board variant, CPU speed, PSRAM frequency, and the inclusion of features like USB HID support or debug logging. Release builds generate specific firmware files tailored to each supported board configuration, including variants for M1, M2, PC, and Z2 boards. The project owes its foundation to several open-source contributions, notably the Tiny386 emulator by Chunhui He, the RP2350 platform integration (Pico-286), integration patterns (QuakeGeneric), and emulation components derived from QEMU, MAME, and inih. The project is authored by Mikhail Matveev and DnCraptor, built upon a foundation that includes projects like SeaBIOS, FatFs, and the Raspberry Pi Pico SDK. Troubleshooting guidance is provided concerning issues related to disk detection, keyboard input, and memory allocation, emphasizing the importance of correct SD card formatting and hardware connections. |