(https://github.githubassets.com) (https://avatars.githubusercontent.com) (https://github-cloud.s3.amazonaws.com) (https://user-images.githubusercontent.com/) (https://github.githubassets.com) (https://avatars.githubusercontent.com) (https://github.githubassets.com/assets/react-e27d1b3e03961e68.js) (https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js) (https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js) (https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js) (https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js) (https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js) (https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js) (https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js) (../../github.githubassets.com/assets/light-99f877e9ddfc0e51.css) (../../github.githubassets.com/assets/light_high_contrast-48fdd0811afbab3c.css) (../../github.githubassets.com/assets/dark-79ad2ace604703b3.css) (../../github.githubassets.com/assets/dark_high_contrast-24484a076f02295f.css) (../../github.githubassets.com/assets/primer-primitives-ed9ca172356fd545.css) (../../github.githubassets.com/assets/primer-1d2c7f7b52a6068b.css) (../../github.githubassets.com/assets/global-adcabba7b5c5d221.css) (../../github.githubassets.com/assets/github-88fc7764b4deb69a.css) (../../github.githubassets.com/assets/repository-11ee8a031c040c1a.css) (../../github.githubassets.com/assets/code-2d56bdb0166c0238.css) (https://github.githubassets.com/assets/wp-runtime-80e1118b3d2f2136.js) (https://github.githubassets.com/assets/app-foundation-89338d13d121427c.js) (https://github.githubassets.com/assets/app-runtime-79275629e212a8de.js) (https://github.githubassets.com/assets/fetch-utilities-ef80792c471f3488.js) (https://github.githubassets.com/assets/ser-564408e9198dff6d.js) (../../github.githubassets.com/assets/app-runtime.db39abd7070fb379.module.css) (https://github.githubassets.com/assets/catalyst-86a8f5de995615f8.js) (https://github.githubassets.com/assets/selector-observer-e88088f989b27670.js) (https://github.githubassets.com/assets/relative-time-element-85cb37305f54dec4.js) (https://github.githubassets.com/assets/by4-73006a52f155289f.js) (https://github.githubassets.com/assets/ja9-36f036c13c2e3a4c.js) (https://github.githubassets.com/assets/kw-866fd9513ae95106.js) (https://github.githubassets.com/assets/r1-b075aab3204f32f9.js) (https://github.githubassets.com/assets/jz5-7c5d1669717041f8.js) (https://github.githubassets.com/assets/hj-5126390ff433704d.js) (https://github.githubassets.com/assets/j05-dce4d588268f0f7e.js) (https://github.githubassets.com/assets/runtime-helpers-f3f5d71440009c48.js) (https://github.githubassets.com/assets/aria-live-edd4f18194230d9e.js) (https://github.githubassets.com/assets/hotkey-5109c77d7ac61078.js) (https://github.githubassets.com/assets/react-core-220b14bbb2e5a3aa.js) (https://github.githubassets.com/assets/04-a76c47ec12c12e01.js) (https://github.githubassets.com/assets/ur-024971cb63acad59.js) (https://github.githubassets.com/assets/4t-9933bcccf9a9524f.js) (https://github.githubassets.com/assets/6ny-c969fbae697a356f.js) (https://github.githubassets.com/assets/yhq-3a209035a30b1a09.js) (https://github.githubassets.com/assets/z1v-da5b33b877bfa358.js) (https://github.githubassets.com/assets/wo-09f85d22a6c8931b.js) (https://github.githubassets.com/assets/9y-81cfe57dc9040f3e.js) (https://github.githubassets.com/assets/j0-41a4cf04cbd99503.js) (https://github.githubassets.com/assets/0p-50de93b282dbc67c.js) (../../github.githubassets.com/assets/react-core.1d66df2418934e22.module.css) (https://github.githubassets.com/assets/n9-97e2e5539969aaaf.js) (https://github.githubassets.com/assets/ic-991f04433f366e7b.js) (https://github.githubassets.com/assets/primer-react-7450ad822d7699b5.js) (https://github.githubassets.com/assets/react-lib-3b03eb55bae46c70.js) (https://github.githubassets.com/assets/aq-ba5f008999aedbd0.js) (https://github.githubassets.com/assets/j6-363f0ebf4f62f310.js) (https://github.githubassets.com/assets/t7l-bf6f21d7e7a43c35.js) (https://github.githubassets.com/assets/fe-7576d9b281e2106a.js) (https://github.githubassets.com/assets/wsr-5fd3071e5a9061ab.js) (https://github.githubassets.com/assets/0n-27006551de0ea3c6.js) (https://github.githubassets.com/assets/xv-51cb34754bda73a9.js) (https://github.githubassets.com/assets/n4u-6317ce1c31aed1db.js) (https://github.githubassets.com/assets/j8s-d05eedc69cebc200.js) (https://github.githubassets.com/assets/la-de176c4ee471f2b3.js) (https://github.githubassets.com/assets/pj-da0fc66367c63559.js) (https://github.githubassets.com/assets/oo-ed8e4c10812fc721.js) (https://github.githubassets.com/assets/50-3e117c4737ded7c8.js) (https://github.githubassets.com/assets/5gq-0ecd117c4ccaf4f0.js) (https://github.githubassets.com/assets/nsi-926ffbc13301c5b7.js) (https://github.githubassets.com/assets/3np-a0186ba63220b6ce.js) (https://github.githubassets.com/assets/on-75d8015f7c16be87.js) (https://github.githubassets.com/assets/bi0-e2f78de823e39ca9.js) (https://github.githubassets.com/assets/b1-78b9e19270a36df1.js) (https://github.githubassets.com/assets/0l5-4e7d0bd60ed3a66a.js) (https://github.githubassets.com/assets/c2z-702903d1c83e2892.js) (https://github.githubassets.com/assets/f9-038758dcbfe08dab.js) (https://github.githubassets.com/assets/0k-b7df0a74912a42bf.js) (https://github.githubassets.com/assets/sp-2bbb73a69162e23b.js) (https://github.githubassets.com/assets/og-93ae8b358505d372.js) (https://github.githubassets.com/assets/q5-fc1f2b54f1d10663.js) (https://github.githubassets.com/assets/qod-79dedcb2e7d13687.js) (https://github.githubassets.com/assets/du-dc47d4c63c11d935.js) (https://github.githubassets.com/assets/ql0-52233a028822e2ef.js) (https://github.githubassets.com/assets/20-69395c63e3e4b526.js) (https://github.githubassets.com/assets/dsj-4cca625a20b72565.js) (https://github.githubassets.com/assets/wp-2413e3416979956b.js) (https://github.githubassets.com/assets/e84-4da7096eb6b55d6d.js) (https://github.githubassets.com/assets/0pz-9106948caa5e015a.js) (https://github.githubassets.com/assets/7mh-23cfe0e4aeb0e064.js) (https://github.githubassets.com/assets/bsb-4f4ac8c20da73fac.js) (https://github.githubassets.com/assets/46-90fb1c98afc2cd5a.js) (https://github.githubassets.com/assets/jga-3f6576d6f86d4e43.js) (https://github.githubassets.com/assets/me-dfecacc72ba91157.js) (https://github.githubassets.com/assets/0dh-eb608edac481e761.js) (https://github.githubassets.com/assets/xc-f5d51b571cd317cb.js) (https://github.githubassets.com/assets/7c-a3aa1fcc96ee2fd8.js) (https://github.githubassets.com/assets/4b-c63a3f3820a90d31.js) (https://github.githubassets.com/assets/qv-5ae49538d02f5979.js) (https://github.githubassets.com/assets/gtp-bb135af2e2127c94.js) (../../github.githubassets.com/assets/primer-react-css.bad9067f7ec9f6d1.module.css) (../../github.githubassets.com/assets/ql0.98d0f45ff87777ec.module.css) (../../github.githubassets.com/assets/46.3e560835284be460.module.css) (../../github.githubassets.com/assets/xc.13e027137438fd9f.module.css) (../../github.githubassets.com/assets/4b.e524e9f270f17ecc.module.css) (../../github.githubassets.com/assets/qv.9631adba022ab320.module.css) (../../github.githubassets.com/assets/code-view.45d3230a77e5e19e.module.css) (https://github.githubassets.com/assets/hu-0d4aa5ab34269698.js) (https://github.githubassets.com/assets/31k-472f1465ccb55aa9.js) (../../github.githubassets.com/assets/primer-react-css.bad9067f7ec9f6d1.module.css) (../../github.githubassets.com/assets/notifications-subscriptions-menu.7858b48499fd9937.module.css) GitHub - rh1tech/frank-386: Tiny386 port to RP2350 · GitHub (repo_source) (https://github.githubassets.com/) (https://github.com/opensearch.xml) (GitHub) (https://github.com/fluidicon.png) (GitHub) (https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg) (https://github.githubassets.com/favicons/favicon.png) (../../github.githubassets.com/favicons/favicon.svg) (../manifest.json) (frank-386.html#start-of-content) Skip to content (https://github.githubassets.com/assets/l7j-a8c3c3ab9790e365.js) (https://github.githubassets.com/assets/keyboard-shortcuts-dialog-bc0f5987010339f4.js) (../../github.githubassets.com/assets/primer-react-css.bad9067f7ec9f6d1.module.css) (../../github.githubassets.com/assets/keyboard-shortcuts-dialog.6fab91dbce4f6c91.module.css) (https://github.githubassets.com/assets/nvz-deeea5270ef3dfb4.js) (https://github.githubassets.com/assets/mz-a6c5397389be3fff.js) (https://github.githubassets.com/assets/fz5-23f28c0f388769c9.js) (https://github.githubassets.com/assets/lht-b91be4a9ea8a3210.js) (https://github.githubassets.com/assets/p1-76a75a6081059b19.js) (https://github.githubassets.com/assets/3d-82c347d20a13fb90.js) (https://github.githubassets.com/assets/tua-81c88ff7e39af43c.js) (https://github.githubassets.com/assets/4s-854aef8a5dc4797a.js) (https://github.githubassets.com/assets/marketing-header-6447c18e376cdcb8.js) (../../github.githubassets.com/assets/primer-react-css.bad9067f7ec9f6d1.module.css) (../../github.githubassets.com/assets/primer-react-brand-css.206bbd4fd232654e.module.css) (../../github.githubassets.com/assets/4s.795b697dd2335e43.module.css) Navigation Menu (https://github.com/) (https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Frh1tech%2Ffrank-386) Sign in Appearance settings Platform AI CODE CREATION (https://github.com/features/copilot) GitHub Copilot Write better code with AI (https://github.com/features/ai/github-app) GitHub Copilot app Direct agents from issue to merge (https://github.com/mcp) MCP Registry Integrate external tools DEVELOPER WORKFLOWS (https://github.com/features/actions) Actions Automate any workflow (https://github.com/features/codespaces) Codespaces Instant dev environments (https://github.com/features/issues) Issues Plan and track work (https://github.com/features/code-review) Code Review Manage code changes (https://github.com/features/code-quality) Code Quality Enforce quality at merge APPLICATION SECURITY (https://github.com/security/advanced-security) GitHub Advanced Security Find and fix vulnerabilities (https://github.com/security/advanced-security/code-security) Code security Secure your code as you build (https://github.com/security/advanced-security/secret-protection) Secret protection Stop leaks before they start EXPLORE (https://github.com/why-github) Why GitHub (https://docs.github.com) Documentation (https://github.blog) Blog (https://github.blog/changelog) Changelog (https://github.com/marketplace) Marketplace (https://github.com/features) View all features Solutions BY COMPANY SIZE (https://github.com/enterprise) Enterprises (https://github.com/team) Small and medium teams (https://github.com/enterprise/startups) Startups (https://github.com/solutions/industry/nonprofits) Nonprofits BY USE CASE (https://github.com/solutions/use-case/app-modernization) App Modernization (https://github.com/solutions/use-case/devsecops) DevSecOps (https://github.com/solutions/use-case/devops) DevOps (https://github.com/solutions/use-case/ci-cd) CI/CD (https://github.com/solutions/use-case) View all use cases BY INDUSTRY (https://github.com/solutions/industry/healthcare) Healthcare (https://github.com/solutions/industry/financial-services) Financial services (https://github.com/solutions/industry/manufacturing) Manufacturing (https://github.com/solutions/industry/government) Government (https://github.com/solutions/industry) View all industries (https://github.com/solutions) View all solutions Resources EXPLORE BY TOPIC (https://github.com/resources/articles?topic=ai) AI (https://github.com/resources/articles?topic=software-development) Software Development (https://github.com/resources/articles?topic=devops) DevOps (https://github.com/resources/articles?topic=security) Security (https://github.com/resources/articles) View all topics EXPLORE BY TYPE (https://github.com/customer-stories) Customer stories (https://github.com/resources/events) Events & webinars (https://github.com/resources/whitepapers) Ebooks & reports (https://github.com/solutions/executive-insights) Business insights (https://skills.github.com) GitHub Skills SUPPORT & SERVICES (https://docs.github.com) Documentation (https://support.github.com) Customer support (https://github.com/orgs/community/discussions) Community forum (https://github.com/trust-center) Trust center (https://github.com/partners) Partners (https://github.com/resources) View all resources Open Source COMMUNITY (https://github.com/open-source/sponsors) GitHub Sponsors Fund open source developers PROGRAMS (https://securitylab.github.com) Security Lab (https://maintainers.github.com) Maintainer Community (https://stars.github.com) GitHub Stars (https://archiveprogram.github.com) Archive Program REPOSITORIES (https://github.com/topics) Topics (https://github.com/trending) Trending (https://github.com/collections) Collections Enterprise ENTERPRISE SOLUTIONS (https://github.com/enterprise) Enterprise platform AI-powered developer platform AVAILABLE ADD-ONS (https://github.com/security/advanced-security) GitHub Advanced Security Enterprise-grade security features (https://github.com/features/copilot/copilot-business) Copilot for Business Enterprise-grade AI features (https://github.com/enterprise/premium-support) Premium Support Enterprise-grade 24/7 support (https://github.com/pricing) Pricing Search / (https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Frh1tech%2Ffrank-386) Sign in (https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo&source_repo=rh1tech%2Ffrank-386) Sign up Appearance settings You signed in with another tab or window. (frank-386.html) Reload to refresh your session. You signed out in another tab or window. (frank-386.html) Reload to refresh your session. You switched accounts on another tab or window. (frank-386.html) Reload to refresh your session. Dismiss alert (https://github.com/rh1tech) rh1tech / (frank-386.html) frank-386 Public (https://github.com/login?return_to=%2Frh1tech%2Ffrank-386) Notifications You must be signed in to change notification settings (https://github.com/login?return_to=%2Frh1tech%2Ffrank-386) Fork (5) 5 (https://github.com/login?return_to=%2Frh1tech%2Ffrank-386) Star (50) 50 (frank-386.html) Code (Not available) (https://github.com/rh1tech/frank-386/issues) Issues (2) 2 (https://github.com/rh1tech/frank-386/pulls) Pull requests (0) 0 (https://github.com/rh1tech/frank-386/actions) Actions (Not available) (https://github.com/rh1tech/frank-386/projects) Projects (Not available) (https://github.com/rh1tech/frank-386/security) Security and quality (0) 0 (https://github.com/rh1tech/frank-386/pulse) Insights (Not available) Additional navigation options (frank-386.html) Code (https://github.com/rh1tech/frank-386/issues) Issues (https://github.com/rh1tech/frank-386/pulls) Pull requests (https://github.com/rh1tech/frank-386/actions) Actions (https://github.com/rh1tech/frank-386/projects) Projects (https://github.com/rh1tech/frank-386/security) Security and quality (https://github.com/rh1tech/frank-386/pulse) Insights (frank-386.html) main (https://github.com/rh1tech/frank-386/branches) Branches (https://github.com/rh1tech/frank-386/tags) Tags (https://github.com/rh1tech/frank-386/branches) (https://github.com/rh1tech/frank-386/tags) (Go to file) () Go to file Code Open more actions menu Latest commit History (https://github.com/rh1tech/frank-386/commits/main/) 259 Commits (https://github.com/rh1tech/frank-386/commits/main/) 259 Commits Folders and files Name Name (Last commit message) Last commit message (Last commit date) Last commit date (.githooks) (https://github.com/rh1tech/frank-386/tree/main/.githooks) .githooks (.githooks) (https://github.com/rh1tech/frank-386/tree/main/.githooks) .githooks (386) (https://github.com/rh1tech/frank-386/tree/main/386) 386 (386) (https://github.com/rh1tech/frank-386/tree/main/386) 386 (boards) (https://github.com/rh1tech/frank-386/tree/main/boards) boards (boards) (https://github.com/rh1tech/frank-386/tree/main/boards) boards (docs) (https://github.com/rh1tech/frank-386/tree/main/docs) docs (docs) (https://github.com/rh1tech/frank-386/tree/main/docs) docs (drivers) (https://github.com/rh1tech/frank-386/tree/main/drivers) drivers (drivers) (https://github.com/rh1tech/frank-386/tree/main/drivers) drivers (link) (https://github.com/rh1tech/frank-386/tree/main/link) link (link) (https://github.com/rh1tech/frank-386/tree/main/link) link (screenshots) (https://github.com/rh1tech/frank-386/tree/main/screenshots) screenshots (screenshots) (https://github.com/rh1tech/frank-386/tree/main/screenshots) screenshots (slave) (https://github.com/rh1tech/frank-386/tree/main/slave) slave (slave) (https://github.com/rh1tech/frank-386/tree/main/slave) slave (src) (https://github.com/rh1tech/frank-386/tree/main/src) src (src) (https://github.com/rh1tech/frank-386/tree/main/src) src (.gitignore) (https://github.com/rh1tech/frank-386/blob/main/.gitignore) .gitignore (.gitignore) (https://github.com/rh1tech/frank-386/blob/main/.gitignore) .gitignore (CMakeLists.txt) (https://github.com/rh1tech/frank-386/blob/main/CMakeLists.txt) CMakeLists.txt (CMakeLists.txt) (https://github.com/rh1tech/frank-386/blob/main/CMakeLists.txt) CMakeLists.txt (LICENSE) (https://github.com/rh1tech/frank-386/blob/main/LICENSE) LICENSE (LICENSE) (https://github.com/rh1tech/frank-386/blob/main/LICENSE) LICENSE (README.md) (https://github.com/rh1tech/frank-386/blob/main/README.md) README.md (README.md) (https://github.com/rh1tech/frank-386/blob/main/README.md) README.md (build.sh) (https://github.com/rh1tech/frank-386/blob/main/build.sh) build.sh (build.sh) (https://github.com/rh1tech/frank-386/blob/main/build.sh) build.sh (flash.sh) (https://github.com/rh1tech/frank-386/blob/main/flash.sh) flash.sh (flash.sh) (https://github.com/rh1tech/frank-386/blob/main/flash.sh) flash.sh (pico_sdk_import.cmake) (https://github.com/rh1tech/frank-386/blob/main/pico_sdk_import.cmake) pico_sdk_import.cmake (pico_sdk_import.cmake) (https://github.com/rh1tech/frank-386/blob/main/pico_sdk_import.cmake) pico_sdk_import.cmake (release.sh) (https://github.com/rh1tech/frank-386/blob/main/release.sh) release.sh (release.sh) (https://github.com/rh1tech/frank-386/blob/main/release.sh) release.sh (version.txt) (https://github.com/rh1tech/frank-386/blob/main/version.txt) version.txt (version.txt) (https://github.com/rh1tech/frank-386/blob/main/version.txt) version.txt View all files Repository files navigation (frank-386.html#) README (frank-386.html#) License Moreitems FRANK 386 (frank-386.html#frank-386) Official page: (https://frank.rh1.tech/) frank.rh1.tech — hub for all FRANK boards and firmware. i386 PC Emulator for RP2350 (Raspberry Pi Pico 2) with VGA/HDMI output, SD card storage, PS/2 and USB keyboard/mouse, NES gamepad, and audio output. Based on (https://github.com/hchunhui/tiny386) Tiny386 by Chunhui He. Features (frank-386.html#features) Full i386 (and partially i486/i586) CPU emulation with optional x87 FPU Up to 8MB RAM (using 8MB PSRAM) VGA and HDMI graphics output (text modes and graphics up to 640x480) Sound: AdLib OPL2, Sound Blaster 16, PC Speaker, Tandy, Covox, Disney Sound Source SD card support for floppy, hard disk, and CD-ROM images Runtime disk manager (Win+F12) for hot-swapping disk images Settings menu (Win+F11) for changing emulator configuration PS/2 keyboard and mouse input USB keyboard and mouse input (via native USB Host) NES gamepad support with mouse emulation mode Boots DOS, Windows 3.x, Windows 95 , Linux, and more Screenshots (frank-386.html#screenshots) FRANK 386 in Action (frank-386.html#frank-386-in-action) (https://github.com/rh1tech/frank-386/blob/main/screenshots/screen1.png) (Screenshot 1) (https://github.com/rh1tech/frank-386/blob/main/screenshots/screen2.png) (Screenshot 2) (https://github.com/rh1tech/frank-386/blob/main/screenshots/screen3.png) (Screenshot 3) (https://github.com/rh1tech/frank-386/blob/main/screenshots/screen4.png) (Screenshot 4) (https://github.com/rh1tech/frank-386/blob/main/screenshots/screen5.png) (Screenshot 5) Supported Boards (frank-386.html#supported-boards) This firmware is designed for RP2350-based boards with integrated VGA/HDMI, SD card, and keyboard input: (https://rh1.tech/projects/frank?area=about) FRANK - A versatile development board with VGA output (https://murmulator.ru) Murmulator - A compact retro-computing platform based on RP Pico 2 (M1 and M2 variants) (https://www.olimex.com/) Olimex PICO-PC - Olimex RP2350 PC board (https://www.waveshare.com/) Waveshare RP2350-PiZero - Waveshare RP2350 board Hardware Requirements (frank-386.html#hardware-requirements) Raspberry Pi Pico 2 (RP2350) or compatible board 8MB PSRAM (required for extended memory) VGA or HDMI connector SD card module (SPI mode) PS/2 keyboard (directly connected) - OR - USB keyboard (via native USB port) Audio output (optional): I2S DAC or PWM 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 (frank-386.html#board-configurations) Four GPIO layouts are supported: M1 , M2 , PC (Olimex), and Z2 (Waveshare). VGA / HDMI (frank-386.html#vga--hdmi) Signal M1 GPIO M2 GPIO Base 6 12 Range 6-13 12-19 SD Card (SPI mode) (frank-386.html#sd-card-spi-mode) Signal M1 GPIO M2 GPIO CLK 2 6 CMD 3 7 DAT0 4 4 DAT3/CS 5 5 PS/2 Keyboard (frank-386.html#ps2-keyboard) Signal M1 GPIO M2 GPIO CLK 0 2 DATA 1 3 PS/2 Mouse (frank-386.html#ps2-mouse) Signal M1 GPIO M2 GPIO CLK 14 0 DATA 15 1 NES/SNES Gamepad (frank-386.html#nessnes-gamepad) Signal M1 GPIO M2 GPIO CLK 14 20 DATA 16 26 LATCH 15 21 I2S Audio (frank-386.html#i2s-audio) Signal M1 GPIO M2 GPIO DATA 26 9 BCLK 27 10 LRCLK 28 11 SD Card Setup (frank-386.html#sd-card-setup) Directory Structure (frank-386.html#directory-structure) Create a 386/ directory on your SD card: SD Card Root/ └── 386/ ├── config.ini # Configuration file ├── bios.bin # SeaBIOS ROM (required) ├── vgabios.bin # VGA BIOS ROM (required) ├── dos622.img # Hard disk image ├── boot.img # Floppy image └── ... # Other disk images BIOS Files (frank-386.html#bios-files) Download SeaBIOS and VGA BIOS from the (https://www.seabios.org/downloads/) SeaBIOS releases or use bios.bin/vgabios.bin from sdcard/386 . Configuration File (config.ini) (frank-386.html#configuration-file-configini) Create 386/config.ini : [pc] mem =8M bios =bios.bin vga_bios =vgabios.bin [frank-386] cpu_freq =504 psram_freq =166 Preparing Disk Images (frank-386.html#preparing-disk-images) Floppy Images (.img): Standard 1.44MB floppy images (1474560 bytes) Create with: dd if=/dev/zero of=floppy.img bs=512 count=2880 Format with DOS or use pre-made DOS boot disks Hard Disk Images (.img): Raw disk images up to 2GB Create with: dd if=/dev/zero of=hdd.img bs=1M count=512 Use FDISK and FORMAT from DOS to partition and format CD-ROM Images (.iso): Standard ISO 9660 images Use CD burning software to create ISOs from CDs Loading Disk Images (frank-386.html#loading-disk-images) At Boot: Configure disk images in config.ini as shown above. At Runtime (Disk Manager): Press Win+F12 to open the Disk Manager Use arrow keys to select a drive (A:, B:, C:, D:, E:) Press Enter to browse disk images in the 386/ directory Select an image file to insert, or eject the current disk Press Escape to close the Disk Manager Changes made via Disk Manager are saved to config.ini automatically. Controls (frank-386.html#controls) Keyboard Shortcuts (frank-386.html#keyboard-shortcuts) Shortcut Action Win+F12 Open Disk Manager Win+F11 Open Settings Menu Ctrl+Alt+Delete System reset (sent to guest OS) Settings Menu (Win+F11) (frank-386.html#settings-menu-winf11) Configure emulator settings at runtime: Memory size (1-8 MB) CPU generation (386/486/586) FPU emulation on/off Sound devices (AdLib, SB16, PC Speaker, Tandy, Covox, MPU-401, DSS) PS/2 or USB Mouse on/off NES Mouse on/off (emulate mouse with NES gamepad D-pad, B=left click, A=right click) RP2350 CPU frequency and voltage PSRAM / Flash frequency Settings are saved to config.ini and take effect after restart. Disk Manager (Win+F12) (frank-386.html#disk-manager-winf12) Manage disk images without restarting: Insert/eject floppy images (A:, B:) Insert/eject hard disk images (C:, D:) Insert/eject CD-ROM images (E:) Building (frank-386.html#building) Prerequisites (frank-386.html#prerequisites) Install the (https://github.com/raspberrypi/pico-sdk) Raspberry Pi Pico SDK (version 2.0+) Set environment variable: export PICO_SDK_PATH=/path/to/pico-sdk Install ARM GCC toolchain Build Steps (frank-386.html#build-steps) # Clone the repository git clone https://github.com/rh1tech/frank-386.git cd frank-386 # Build with default settings (M2 board, 378MHz, PS/2 keyboard) ./build.sh # Build for M1 board ./build.sh -M1 # Build with USB keyboard support ./build.sh --usb-hid # Custom build ./build.sh -b M1 -c 504 -p 166 --debug Build Options (build.sh) (frank-386.html#build-options-buildsh) Option Description -b, --board Board variant (default: M2) -c, --cpu CPU speed: 378 (default), 504 -p, --psram PSRAM speed: 133 (default), 166 --usb-hid Enable USB keyboard (disables USB serial) --hdmi Force HDMI output --debug Enable debug output -clean Clean build directory first Build Options (CMake) (frank-386.html#build-options-cmake) Option Description -DPICO_BOARD=pico2 Build for RP2350 (default) -DBOARD=M1 Use M1 GPIO layout -DBOARD=M2 Use M2 GPIO layout (default) -DBOARD=PC Use Olimex PICO-PC layout -DBOARD=Z2 Use Waveshare RP2350-PiZero layout -DCPU_SPEED=378 CPU clock in MHz (378, 504) -DPSRAM_SPEED=133 PSRAM clock in MHz (133, 166) -DUSB_HID_ENABLED=ON Enable USB keyboard (disables USB serial) -DDEBUG_ENABLED=ON Enable verbose debug logging -DFORCE_HDMI=ON Force HDMI output Release Builds (frank-386.html#release-builds) To build all firmware variants: # Interactive (prompts for version) ./release.sh # With version number ./release.sh 1.02 This creates firmware files in the release/ directory: frank-386_m1_.uf2 - M1 board (Murmulator) frank-386_m2_.uf2 - M2 board (Murmulator) frank-386_pc_.uf2 - Olimex PICO-PC frank-386_z2_.uf2 - Waveshare RP2350-PiZero Flashing (frank-386.html#flashing) # With device in BOOTSEL mode: picotool load build/frank-386.uf2 # Or use the flash script: ./flash.sh Troubleshooting (frank-386.html#troubleshooting) "0 bytes of memory" during Windows 95 setup (frank-386.html#0-bytes-of-memory-during-windows-95-setup) Use setup /im to bypass memory check. "Protection error" during Windows 95 startup (frank-386.html#protection-error-during-windows-95-startup) Use (https://github.com/JHRobotics/patcher9x) patcher9x . Enable mapdrive.com support (redirector) to map SD-card to network-attached-drive H (frank-386.html#enable-mapdrivecom-support-redirector-to-map-sd-card-to-network-attached-drive-h) Set redirector = 1 in config.ini. No keyboard input (frank-386.html#no-keyboard-input) For PS/2: Check keyboard connection and GPIO pins For USB: Ensure firmware was built with --usb-hid option SD card not detected (frank-386.html#sd-card-not-detected) Ensure SD card is formatted as FAT32 Check SD card module connections Verify 386/ directory exists on SD card License (frank-386.html#license) MIT License. See (https://github.com/rh1tech/frank-386/blob/main/LICENSE) LICENSE for details. Authors & Contributors (frank-386.html#authors--contributors) Mikhail Matveev & DnCraptor frank-386 port and development (2026) Repository: (frank-386.html) https://github.com/rh1tech/frank-386 Acknowledgments (frank-386.html#acknowledgments) This project is based on the following open-source projects: Tiny386 (frank-386.html#tiny386) Project: (https://github.com/hchunhui/tiny386) Tiny386 - x86 PC Emulator Author: Chunhui He License: BSD 3-Clause Description: The core i386 CPU emulator and PC peripheral emulation (8259 PIC, 8254 PIT, 8042 keyboard controller, VGA, sound devices). Pico-286 (frank-386.html#pico-286) Project: (https://github.com/xrip/pico-286) Pico-286 Author: xrip License: MIT Description: RP2350 platform integration, disk management, VGA driver concepts. QuakeGeneric (frank-386.html#quakegeneric) Project: (https://github.com/DnCraptor/quakegeneric) QuakeGeneric Author: DnCraptor License: GPL v2 Description: RP2350 hardware integration patterns, Murmulator platform support, and PS/2 mouse driver implementation. QEMU (frank-386.html#qemu) Project: (https://www.qemu.org/) QEMU Authors: Fabrice Bellard (2003-2017), Vassili Karpov "malc" (2003-2005), Joachim Henke (2006) License: MIT Description: PC peripheral emulation code including 8259 PIC, 8254 PIT, 8257 DMA, 8042 keyboard controller, PCI bus, PC speaker, VGA, and AdLib OPL2 proxy. MAME FM Sound Generator (frank-386.html#mame-fm-sound-generator) Project: (https://www.mamedev.org/) MAME Author: Tatsuyuki Satoh (1999-2000) License: LGPL 2.1+ Description: FM OPL sound generator (fmopl) for AdLib emulation, forked from MAME and relicensed under LGPL. inih (frank-386.html#inih) Project: (https://github.com/benhoyt/inih) inih Author: Ben Hoyt (2009-2020) License: BSD 3-Clause Description: Simple INI file parser for configuration file handling. SeaBIOS (frank-386.html#seabios) Project: (https://www.seabios.org/) SeaBIOS Authors: Kevin O'Connor and contributors License: GNU LGPL v3 Description: x86 BIOS and VGA BIOS firmware. FatFs (frank-386.html#fatfs) Project: (http://elm-chan.org/fsw/ff/) FatFs Author: ChaN (2014, 2021) License: FatFs License (BSD-style) Description: Generic FAT filesystem module for SD card access. FatFs Utilities (frank-386.html#fatfs-utilities) Author: Carl John Kugler III (2021) License: Apache 2.0 Description: FatFs utility functions for error handling and result string conversion. Raspberry Pi Pico SDK (frank-386.html#raspberry-pi-pico-sdk) Project: (https://github.com/raspberrypi/pico-sdk) Pico SDK Author: Raspberry Pi (Trading) Ltd. (2020) License: BSD 3-Clause Description: PIO SPI driver for SD card communication. About Tiny386 port to RP2350 Resources (frank-386.html#readme-ov-file) Readme (frank-386.html#License-1-ov-file) License (https://github.com/rh1tech/frank-386/activity) Activity Stars 50 stars Watchers 1 watching Forks (https://github.com/rh1tech/frank-386/forks) 5 forks (https://github.com/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Frh1tech%2Ffrank-386&report=rh1tech+%28user%29) Report repository Releases Packages Contributors Languages Footer (https://github.com) © 2026 GitHub, Inc. Footer navigation (https://docs.github.com/site-policy/github-terms/github-terms-of-service) Terms (https://docs.github.com/site-policy/privacy-policies/github-privacy-statement) Privacy (https://github.com/security) Security (https://www.githubstatus.com/) Status (https://github.community/) Community (https://docs.github.com/) Docs (https://support.github.com?tags=dotcom-footer) Contact Manage cookies Do not share my personal information You can’t perform that action at this time.