Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Feature Request: Direct USB Floppy Drive Support for Physical Media #286

@alexandrosroussos

Description

@alexandrosroussos

Basilisk II currently requires disk images (.img/.dsk) for floppy emulation, but does not support direct access to USB floppy drives. Adding native USB floppy support would allow users to:

Insert and read real 1.44MB/800KB floppies without manual dd conversion.
Eject/insert disks dynamically (e.g., via the Mac’s eject key or Finder).
Preserve the ritual of physical media—a key part of the retro Mac experience.

Why This Matters:

While disk images are convenient, many users (especially in retro computing, education, and preservation) rely on original floppies for:

Archival work (reading old Mac disks without a vintage Mac).
Authentic workflows (e.g., inserting a game disk, hearing the drive spin).
Hybrid setups (Raspberry Pi inside a Mac Classic case with a real floppy drive).

Current workarounds (e.g., scripting dd on insertion) are clunky and break immersion. Native support would make Basilisk II the go-to emulator for hardware purists.
Proposed Implementation:

Detect USB floppy drives via libusb or /dev/sgX (Linux)/\.\PhysicalDriveX (Windows).
Expose the drive as a virtual .img in Basilisk’s floppy controller.
Handle disk changes:
Poll for media insertion/ejection.
Trigger a "disk inserted" event in Mac OS (like a real Mac).

(Optional) Add a config option:floppy_device /dev/sg1 # Linux
floppy_device \.\F: # Windows

Use Cases:

Retro gaming (e.g., inserting Oregon Trail floppies).
Data recovery from old Mac floppies.
Interactive exhibits where physical media is part of the experience.

Technical Notes:

USB floppy drives use standard SCSI commands (e.g., READ(6)/WRITE(6)).
The Linux fdutils package demonstrates low-level floppy access.
Mac floppies use MFM encoding (same as PC), but Basilisk would need to handle Mac-specific disk formats (e.g., HFS boot blocks).

References:

USB Floppy Drive Specs
Libusb Example Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions