Skip to content

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 10 May 17:24
· 58 commits to main since this release

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/floppybootcd

Features

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 ^X hotkey markers — ^Windows 98 makes W a 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*.c32 set (libcom32, libutil, libmenu, libgpl) — fixes the #1 source of "failed to load menu.c32" boot errors that affect many DIY MEMDISK CDs
  • Generates isolinux.cfg with one LABEL per 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 xorriso log 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 optional background_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 QSettings in OS-conventional locations:
    • macOS — ~/Library/Preferences/com.pacnpal.FloppyBootCD.plist
    • Windows — registry HKCU\Software\pacnpal\FloppyBootCD
    • Linux — ~/.config/pacnpal/FloppyBootCD.conf
  • 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:

  1. Validates the project — checks that all images exist, none are zero bytes, warns on absurdly large images
  2. Ensures syslinux binaries are cached — first build downloads syslinux-<version>.tar.gz from kernel.org and extracts the BIOS variants of isolinux.bin, memdisk, ldlinux.c32, the full lib*.c32 set, menu.c32, vesamenu.c32, chain.c32, reboot.c32
  3. Stages the disc tree in a temp dir
  4. Generates isolinux.cfg with per-image LABEL blocks plus built-in entries
  5. 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:

  1. BIOS reads isolinux.bin from the El Torito boot record
  2. ISOLINUX loads menu.c32 + libs and shows your menu
  3. You pick an entry; ISOLINUX loads memdisk with the floppy .img as its initrd
  4. MEMDISK installs INT 13h hooks so the OS sees the image as a real floppy drive (A:)
  5. 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

MIT


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.