[PATCH v2 0/5] hw/m68k: add working floppy controller for q800

Matt Jacobson posted 5 patches 1 week, 5 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260617235032.21491-1-mhjacobson@me.com
Maintainers: Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>, Laurent Vivier <laurent@vivier.eu>
MAINTAINERS                        |   2 -
hw/block/meson.build               |   2 +-
hw/block/sony_superdrive.c         | 994 +++++++++++++++++++++++++++++
hw/block/swim.c                    | 577 -----------------
hw/block/swim2.c                   | 722 +++++++++++++++++++++
hw/block/trace-events              |  25 +-
hw/m68k/q800.c                     |   5 +-
hw/misc/mac_via.c                  |  16 +
include/hw/block/sony_superdrive.h |  56 ++
include/hw/block/swim.h            |  72 ---
include/hw/block/swim2.h           |  60 ++
include/hw/m68k/q800.h             |   4 +-
include/hw/misc/mac_via.h          |   4 +
include/qemu/fifo32.h              |  25 +
14 files changed, 1901 insertions(+), 663 deletions(-)
create mode 100644 hw/block/sony_superdrive.c
delete mode 100644 hw/block/swim.c
create mode 100644 hw/block/swim2.c
create mode 100644 include/hw/block/sony_superdrive.h
delete mode 100644 include/hw/block/swim.h
create mode 100644 include/hw/block/swim2.h
[PATCH v2 0/5] hw/m68k: add working floppy controller for q800
Posted by Matt Jacobson 1 week, 5 days ago
Implement the SWIM2 floppy controller and SuperDrive for the q800 machine.

Reading and writing work, and booting a system disk works.
Both GCR and MFM paths work.
Tested with the Quadra 800 ROM running System 7 and A/UX 3.x.
Whole-disk formatting/duplication does not yet work.

Example usage:
$ qemu-system-m68k \
   -machine q800 \
   -m 128 \
   -bios "Quadra800.ROM" \
   -nodefaults \
   -drive if=mtd,file="pram.img",format=raw \
   -drive if=floppy \
   -drive if=floppy \
   -drive if=scsi,media=disk,file="harddisk.img",format=raw \
   -drive if=scsi,media=cdrom \
   -nic user,model=dp83932 \
   -audio none \
   -display cocoa \
   -name "Macintosh Quadra 800"

(To populate the floppy drive at boot, use
 `-drive if=floppy,file="floppy.img",format=raw`.  However, note that the
 Macintosh ROM will eject non-bootable floppies on boot.)

The Sony drive emulator takes raw images and will generate the GCR/MFM
encoding on the fly.  Here are a couple sample images (HFS) to play with:

<https://mjacobson.net/files/mac-disks/floppy-800.img>
<https://mjacobson.net/files/mac-disks/floppy-1440.img>

Matt Jacobson (5):
  hw/block: add Sony/Apple "SuperDrive" diskette drive
  fifo32: add fifo32_peek()
  hw/block: add SWIM2 floppy controller for q800
  hw/m68k: add working floppy controller for q800
  hw/block: remove unused SWIM1 floppy controller stub

 MAINTAINERS                        |   2 -
 hw/block/meson.build               |   2 +-
 hw/block/sony_superdrive.c         | 994 +++++++++++++++++++++++++++++
 hw/block/swim.c                    | 577 -----------------
 hw/block/swim2.c                   | 722 +++++++++++++++++++++
 hw/block/trace-events              |  25 +-
 hw/m68k/q800.c                     |   5 +-
 hw/misc/mac_via.c                  |  16 +
 include/hw/block/sony_superdrive.h |  56 ++
 include/hw/block/swim.h            |  72 ---
 include/hw/block/swim2.h           |  60 ++
 include/hw/m68k/q800.h             |   4 +-
 include/hw/misc/mac_via.h          |   4 +
 include/qemu/fifo32.h              |  25 +
 14 files changed, 1901 insertions(+), 663 deletions(-)
 create mode 100644 hw/block/sony_superdrive.c
 delete mode 100644 hw/block/swim.c
 create mode 100644 hw/block/swim2.c
 create mode 100644 include/hw/block/sony_superdrive.h
 delete mode 100644 include/hw/block/swim.h
 create mode 100644 include/hw/block/swim2.h

-- 
2.53.0