Repository navigation
v1.0.0
FloppyBootCD v1.0.0 — first stable release
The first stable release of FloppyBootCD, a cross-platform GUI for building bootable CDs from collections of floppy disk images. Like Ventoy, but for CDs and floppies.
Drop in your .img / .ima files, give each one a menu label, hit Build, and get a CD that boots into a menu where you pick which floppy to load. Each image is loaded into RAM via MEMDISK and presented to the OS as if it were sitting in a real floppy drive — so DOS, Windows 9x, OS/2, and other INT 13h operating systems boot exactly as they would from physical media.
Download
Self-contained bundles for every supported platform are attached to this release. No Python required.
| Platform | File |
|---|---|
| macOS (Apple Silicon, M1/M2/M3/M4) | floppybootcd-1.0.0-macos-arm64.zip |
| macOS (Intel) | floppybootcd-1.0.0-macos-x86_64.zip |
| Windows (x86_64) | floppybootcd-1.0.0-windows-x86_64.zip |
| Linux (x86_64) | floppybootcd-1.0.0-linux-x86_64.tar.gz |
You'll still need xorriso installed system-wide. See the README for per-platform install commands and the macOS Gatekeeper workaround.
Or install from source:
uv tool install git+https://github.com/pacnpal/floppybootcdFeatures
Image management
- Drag-and-drop floppy images from Finder/Explorer onto the window or image list
- Recognized extensions:
.img,.ima,.vfd,.flp - Drag-to-reorder entries within the menu — order shown is the order at boot time
- Per-entry editable boot labels (double-click or Edit…) with
^Xhotkey markers —^Windows 98makesWa keyboard shortcut at the boot menu - Set as Default marks the auto-boot entry, shown with a ★
- Duplicate paths are silently skipped
Project files (.fbcd)
- Save / load project files capturing: image list, labels, default entry, timeout, disc title, menu style, custom menu background
- Plain JSON — easily diffable, scriptable, version-controllable
- New / Open / Save / Save As workflow with unsaved-change indicator (
•in the title bar) - Prompts to save on close or "New Project" when there's unsaved work
ISO building
- One-click ISO build via
xorriso - Automatic syslinux fetching from kernel.org on first build, cached locally per OS convention
- Includes the complete required
lib*.c32set (libcom32,libutil,libmenu,libgpl) — fixes the #1 source of "failed to load menu.c32" boot errors that affect many DIY MEMDISK CDs - Generates
isolinux.cfgwith oneLABELper floppy plus built-in "Boot from hard disk" (LOCALBOOT 0x80) and "Reboot" (COM32 reboot.c32) entries - Output: ISO 9660 + Joliet + Rock Ridge, El Torito bootable
- Background build with live
xorrisolog stream and progress bar
Burning to physical media
Native, per-platform burner backends — no third-party CLI tooling needed beyond what's already on the OS:
| Platform | Backend | Notes |
|---|---|---|
| macOS | hdiutil burn |
Verify-after-burn on by default |
| Windows | isoburn.exe |
Native Windows burn dialog with verify checkbox |
| Linux | xorriso -as cdrecord |
Byte-level SHA1 verify by reading the disc back sector-by-sector |
- Drive picker auto-fills with detected optical burners
- Threaded burn worker with live progress and command-output log
- Eject-when-done option
- Clear error reporting on verify failure (disc left in drive for inspection)
Menu styles
- Text menu (
menu.c32) — fast, classic ISOLINUX look - Graphical menu (
vesamenu.c32) with optionalbackground_image(set in the saved.fbcd) - Configurable boot timeout in seconds; set to 0 for "wait forever / no auto-boot"
- Custom disc title used as both the ISO 9660 volume label and the menu title
Floppy image support
Standard sizes work without configuration:
| Disk type | Bytes |
|---|---|
| 360 KB 5.25" | 368,640 |
| 720 KB 3.5" | 737,280 |
| 1.2 MB 5.25" | 1,228,800 |
| 1.44 MB 3.5" | 1,474,560 |
| 2.88 MB 3.5" | 2,949,120 |
Oversized "fat floppy" images up to ~50 MB are also supported — MEMDISK presents them as a floppy-shaped device (boot time scales with size since the whole image is loaded into RAM).
Cross-platform native integration
- Settings, window geometry, and recent-directory state stored via Qt
QSettingsin OS-conventional locations:- macOS —
~/Library/Preferences/com.pacnpal.FloppyBootCD.plist - Windows — registry
HKCU\Software\pacnpal\FloppyBootCD - Linux —
~/.config/pacnpal/FloppyBootCD.conf
- macOS —
- Syslinux cache in OS-conventional cache directories (
~/Library/Caches,%LOCALAPPDATA%,~/.cache) - Tools → Clear Syslinux Cache to wipe the cache
- Native menu integration, keyboard shortcuts (Cmd on macOS, Ctrl elsewhere)
Plugin architecture
The whole bootloader and burner stack is plugin-driven via Python entry points. A pip-installable package can register new backends with no fork required.
[project.entry-points."floppybootcd.bootloaders"]
grub4dos = "my_pkg.grub:Grub4DosBackend"
[project.entry-points."floppybootcd.burners"]
my_burner = "my_pkg.burner:MyBurner"The floppybootcd.core package has zero Qt dependency — you can write a CLI on top of it without touching the UI layer. UI lives only in floppybootcd.ui.
How it works under the hood
When you build an ISO, FloppyBootCD:
- Validates the project — checks that all images exist, none are zero bytes, warns on absurdly large images
- Ensures syslinux binaries are cached — first build downloads
syslinux-<version>.tar.gzfrom kernel.org and extracts the BIOS variants ofisolinux.bin,memdisk,ldlinux.c32, the fulllib*.c32set,menu.c32,vesamenu.c32,chain.c32,reboot.c32 - Stages the disc tree in a temp dir
- Generates
isolinux.cfgwith per-imageLABELblocks plus built-in entries - Calls xorriso to roll the staging tree into a bootable ISO 9660 image with Joliet and Rock Ridge extensions, marked El Torito bootable
At boot:
- BIOS reads
isolinux.binfrom the El Torito boot record - ISOLINUX loads
menu.c32+ libs and shows your menu - You pick an entry; ISOLINUX loads
memdiskwith the floppy.imgas its initrd - MEMDISK installs INT 13h hooks so the OS sees the image as a real floppy drive (
A:) - The OS boots normally, fully unaware it's running off a CD
Compatibility
- Boot target — any machine with a BIOS-compatible CD drive (most pre-UEFI hardware, plus most UEFI machines in legacy / CSM mode)
- Build host — macOS 14+, Windows 10/11, modern Linux (
xorriso≥ 1.5 recommended) - From source — Python 3.10+, PySide6 ≥ 6.6
- Prebuilt binaries — no Python required; bundle their own runtime via PyInstaller
Installation paths summary
| Method | Command |
|---|---|
| Prebuilt binary | Download from this release; see README for per-platform setup |
uv tool install |
uv tool install git+https://github.com/pacnpal/floppybootcd |
uvx (no install) |
uvx --from git+https://github.com/pacnpal/floppybootcd floppybootcd |
pip --user |
python -m pip install --user git+https://github.com/pacnpal/floppybootcd.git |
Full instructions, troubleshooting, and the macOS Gatekeeper workaround are in the README.
License
What's changed since the prereleases
This is the first tagged release; see the commit history and merged PRs (#1, #2, #3) for the road that got us here.