Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Physical floppy drives (FluxBridge)

Copperline can use a real 3.5" floppy drive connected to the host through a Greaseweazle USB controller in place of a disk image. The pure-Rust FluxBridge library, compiled into Copperline, talks to the hardware.

The bridge supplies the MFM data passing under the real drive’s head, and the emulated machine is otherwise unchanged: Paula’s disk DMA, trackdisk.device, and custom loaders work as they would on hardware.

Requirements

FluxBridge is compiled into Copperline by default. To build without physical drive support, leave out the fluxbridge feature (see Cargo features):

cargo build --release --no-default-features \
  --features "midi,frontend,wasm-boards,control,ctl-bin,import-uae-bin,net-nat,net-bridge,mt32,coppersynth,cpu-jit,profile-stats,game-library,mhi,cd-mp3,cd32-fmv,gdb,dap,netplay-internet,host-serial"

Configuration

In the launcher, open the Floppy tab and tick the Physical drive box for the desired bay (DF0: through DF3:), then press Configure.

In copperline.toml:

[floppy.df0]
bridge = "greaseweazle"      # "greaseweazle" (or "gw") or "off"
write_protected = true       # emulator-level write protection (default: true)
# bridge_port = "/dev/ttyACM0"   # serial port path (omit for auto-detection)
# bridge_cable = "a"             # "a"/"b" (PC cable) or "0".."3" (Shugart)
# bridge_density = "auto"        # "auto", "dd", or "hd"
# bridge_mode = "normal"         # "normal", "compatible", or "stalling"
# replay_speed = "fast"          # "fast" (default) or "normal"

From the command line:

copperline --model A500 --floppy-bridge df0 greaseweazle kickstart.rom
Command-line flagConfiguration keyDescription
--floppy-bridge DFN NAMEbridgeInterface driving the bay (greaseweazle or off)
--floppy-bridge-port DFN PORTbridge_portSerial device path (default: auto-detect)
--floppy-bridge-cable DFN SELbridge_cableCable drive select (a, b, 0..3)
--floppy-bridge-mode DFN MODEbridge_modeRead mode (normal, compatible, stalling)
--floppy-bridge-density DFN Dbridge_densityTrack density (auto, dd, hd)
--floppy-replay-speed DFN SPEEDreplay_speedReplay rate (fast, normal)
--floppy-bridge-writable DFNwrite_protected = falseAllow disk writes

Serial port detection

By default, Copperline finds a connected Greaseweazle by itself. If more than one interface is plugged in, set bridge_port explicitly (for example /dev/ttyACM0 on Linux or COM3 on Windows).

Cable conventions and drive select

bridge_cable sets the drive select signal:

Make sure this matches your cabling and the drive’s jumpers. Disk changes are detected directly on PC cables; on Shugart cabling, a swapped disk is noticed on the next read.

Density detection

bridge_density defaults to auto, which senses the density from the disk. Force dd or hd for non-standard disks, such as high-density media formatted as double-density.

Read modes

bridge_mode = "turbo" is refused: that mode answers AmigaDOS calls instead of reading the disk.

Replay speed

Once a track is verified and kept in memory, replay_speed controls how fast later reads of that track are served:

Write protection and disk writes

Writing to a physical disk needs both of these:

  1. The disk’s own write-protect tab must be set to writable.

  2. The configuration must set write_protected = false (or pass --floppy-bridge-writable).

Writes go straight to the physical disk as it turns, without the emulated machine waiting for them. A write of a full revolution can start at any rotational position, but a partial-track write that does not begin at the index pulse is refused, because the interface cannot place it accurately.

Operational differences from disk images

Troubleshooting