Macintosh Floppy Emu

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.
20 comments
20 Comments so far
Leave a reply. Comments may take a few minutes to appear.







Neat!!!
FANTASTIC!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
please do not abandon the project
seems like it might have been…..
Yeah yeah, floppy emulators don’t pay my mortgage! It will get finished eventually…
A device like this is desperately needed. There must be thousands of old Mac enthusiasts stuck with no good way to bridge internet disk images downloaded to PCs to their old Apple systems. I’d buy one from you in 2 seconds. It’d pay for at least some of your mortgage
Me too…
Don’t lose hope! I posted some updates today on the build log, and updated this summary page as well.
Go Steve Go!
Whoah, this is really cool! I have recently acquired a Macintosh SE and was hoping to get it working after hearing its HDD make unhappy noises. I saw the HxC floppy emulator a while back but I was disappointed to find out that it would never work with my old Mac. Your project has given me hope, though! I’ve subscribed to your blog’s feed and I hope to eventually build one of these floppy emulators, too.
Thank you, and keep up the good work!
Absolutely amazed with your project. Congratulations.
As the other comments mentioned, is a vital addon in case of old machines like mine, with the floppy unit out of order.
Keep us posted!
Kind regards from Madrid!
Hey, Please come back to 68kmla, This project is Awesome on so many levels!
Thank You!
Sadness… I still have just that one half-working prototype, and haven’t worked on this in months.
Interesting
Wonder if this would word with an Apple IIgs?
If not directly then maybe coupled with a daisy-chain board?
Really nice project. Love to see this a bit more finished /swapping disk images and support 1,4MB disk images.
What is this 800k raw format of 819200 bytes?
I just downloaded a 6.05 system disk and it is 838.484 Bytes?
Where can I get right image size boot disks? Can I convert between them?
I bootet your rfloppy.dsk in mini vmac and it looked a bit wierd..?
Meaning mac write was two times in there.. and some apps needed
co-pro..
Thanks, Peter
The raw format is the sector contents only, without any extra headers or other information. 1600 sectors * 512 bytes/sector = 819200 bytes. This is the format that Mini vMac and Basilisk II normally use – they call them .dsk and .hfv, but it’s the same thing.
The 838484 byte file you downloaded is probably a DiskCopy 4.2 disk image. DiskCopy is an old Macintosh program for working with floppy disk images. See http://68kmla.org/wiki/DiskCopy_4.2_format_specification
Mini vMac will read DiskCopy images. To convert them to raw images, you can insert a blank 819200 floppy image into the emulator, and copy the contents of the other disk to it. Or look at the DiskCopy 4.2 format spec – for an 800K image, you can write a script to extract the 819200 bytes beginning at address 0×54 in the DiskCopy image file.
rfloppy.dsk does contain two copies of MacWrite. I was playing around with file copying and forgot to delete it.
Thanks for the informations!
I just have a LCII and Performa 475 system.
But I think, they also have the 20-pin internal floppy connector -right? So I could build one and test them on these internal connectors..? I assume the LCII will also boot from 800k emulated 6.0.8 boot floppy image?
Peter
I think the emulator board should work with the internal 20-pin connector on the LC and Performa 475, but I’m not certain if the connector is identical to ones in earlier Macs. According to http://www.everymac.com/systems/apple/mac_lc/specs/mac_lc_ii.html, system 6.0.8 should work on the LCII.
Your doing great work please keep it up! Something like this is amazing, once you get working units I’d but a few