Floppy Emu is a floppy disk drive emulator for Macintosh computers, using an SD memory card and custom hardware to mimic an external 3.5″ disk drive and floppy disk. If you’ve got an old Mac 128K, 512K, or Plus but no floppies to use with it, then Floppy Emu is the solution. The device connects to the Mac’s external DB-19 floppy connector, and behaves identically to a real disk drive, requiring no special software on the Mac. Disk image files are stored on the SD card from a PC, and then read and written by Floppy Emu during the normal operation of the Macintosh, with each image file appearing to the Mac as a different floppy disk.
The hardware consists of a Xilinx XC9572XL CPLD working cooperatively with an ATMEGA1284P microcontroller. The CPLD implements all the timing-sensitive functions and communication with the Macintosh, while the microcontroller provides the brains of the device. The microcontroller uses SdFatLib to read sectors from a disk image file on the SD card, and synthesizes sector headers, footers, and checksums on the fly. It also performs the necessary conversions between logical data and the GCR encoded data format used on Macintosh floppy disks. The microcontroller then passes the bytes one at a time to the CPLD, at a speed that mimics a normal external floppy drive. The CPLD performs the parallel-to-serial conversion and implements the serial signalling convention expected by the Mac. Both reads and writes to emulated floppies are supported.
To the Mac, the emulated floppy disk appears identical to a real disk in speed and capacity. Due to the design of the Macintosh IWM floppy controller hardware, it’s not possible to pass data at a faster bit rate than a real floppy. The floppy driver code contained in the Mac’s ROM constrains the disk size to 800K (1.4MB on newer Macs) and also limits the number of emulated drives to one. In theory, a replacement floppy driver implemented as a software patch could add support for more disks and larger sizes in the future.
The board can be plugged directly into the DB-19 floppy connector at the rear of the Macintosh, where it fits snugly between the other cables. Alternatively, the board’s 20-pin IDC connector can make the connection. This is the same connector found on the Mac motherboard for the internal floppy, so a standard IDC cable can be used to connect Floppy Emu internally instead of at the external floppy connector. A DB-19 to IDC-20 adapter cable can also be used, such as the Apple II cable from IEC. This cable enables Floppy Emu to connect to the external floppy port at the Mac’s rear, but be positioned in the front of the Mac where it’s easier to use.
To update the device’s firmware, the microcontroller can program the CPLD via JTAG. If the Floppy Emu board is reset while holding down a few buttons, it will look for a file named firmware.xvf on the SD card, and use it to update the CPLD with new firmware in about 20 seconds. That means an external Xilinx programmer isn’t needed. Future plans include bootloading of the microcontroller from the SD card as well. If I ever reach the point of selling assembled units, that means end users could update both the CPLD and the MCU just by copying the necessary files to the SD card, without any special programming hardware.
As of December 2012, the project is still an unfinished prototype. With a high-speed class 10 SD card, all the standard read and write operations to the floppy will work, just as if it were a real external floppy disk. It’s possible to boot the computer, save documents from MacPaint, or copy files in the Finder. Read operations will also work OK with a slower SD card, but write operations may fail.
Formatting or initializing the floppy in the Finder is not supported on any type of SD card, and will fail. To make a blank disk image file, create one using a Macintosh emulator program and then copy it to the SD card. Certain kinds of bulk transfer write operations are also unsupported, such as using a disk copy program to copy data to the floppy.
Download the Floppy Emu design file archive
Learn how to build your own Floppy Emu
The video below shows an earlier Floppy Emu prototype used to boot a Macintosh Plus.