Floppy Emu Board Layout
Whew! It took me a long time to do the board layout for the floppy disk emulator, but here it is! The board is about 4 x 1.75 inches, or roughly the size of an elongated credit card. The resistors, LEDs, and odd-sized capacitors are all labeled, so any other small rectangular surface-mount parts you see are 0.1 uF decoupling capacitors. Assuming nobody sees any problems, I’ll be sending this off to be manufactured in a few more days.
The AVR microcontroller used is an ATMEGA1284P, with 16K of internal RAM, running at 20 MHz with 5V. It replaces the ATMEGA32u4 breakout board used in my breadboard prototype. The CPLD is a Xilinx XC9572XL, which replaces the Atmel board from the prototype (which itself was salvaged from an old Tiny CPU project). The CPLD runs at 3.3V, but has 5V tolerant inputs. A 74LVC244 performs 5V to 3.3V level conversion. Sitting on top of the chips is a Nokia 5110 graphical LCD.
There are several options for connecting the Floppy Emu board to the Mac. The board has a male DB-19 connector as well as a male rectangular 20-pin IDC connector (the internal floppy connector on the motherboard). So you can:
- Plug the board straight into the Mac’s external DB19 floppy port. Then it will hang off the back like a dongle.
- Use an Apple II Unidisk/DiskII DB19 to 20-pin IDC cable, like this one from IEC. Connect the DB19 end to the external floppy port, and the IDC end to the Floppy Emu board. I purchased one of these and tested it to confirm that is has all the necessary connections.
- Use the DB19 to 20-pin IDC cable from an external Apple 3.5 inch floppy drive.
- Unplug your internal floppy drive, and use the existing internal floppy cable to connect to the board’s IDC connector. I’m not sure that cable is long enough to reach outside the case, though.
- Same as above, but use a longer 20-pin IDC cable. You can use any generic IDC cable with straight-through wiring.
After some consideration, I included both the 6-pin AVR ISP programming connector, and the 14-pin Xilinx JTAG programming connector. My goal is to use the AVR to program the Xilinx CPLD, so the JTAG connector is just there as a fallback. The JTAG interface consists of 4 pins: TMS and TDO are connected to dedicated pins on the AVR, but the TCK and TDI pins are shared for other purposes, since there aren’t enough pins for everything. The CPLD’s JTAG controller should stay in the reset state as long as the value of TMS is held at 1, regardless of what values appear on TCK and TDI, so in theory this should work fine. We’ll find out soon!
Initial programming of the AVR will be done using the 6-pin ISP connector and an AVR ISP mkII programmer. It should be possible to do all further AVR reprogramming using a bootloader, loading the new firmware from the SD card. That means if I build one of these boards for someone else, I can do the initial programming, then they can update the AVR firmware later by just storing an update file on the SD card and rebooting the emulator. They won’t need to own an AVR programmer. And since the AVR will program the CPLD, that means the complete firmware of both chips can be updated without the need for any special programming hardware. That’s pretty cool.
Read 15 comments and join the conversation15 Comments so far
Leave a reply. For customer support issues, please use the Customer Support link instead of writing comments.
I think the Xilinx JTAG connector should have a 2 mm pitch rather than 100 mil, at least if you were trying to be compatible with the ribbon cable on their programmers. Since this is just a fallback option, it’s probably not that big a deal because you could use the flying wire cable instead (but less convenient). Just something to consider if you do another revision of the board.
Wow, great catch. Thanks! I’ve updated the layout to use a 2 mm pitch JTAG connector.
In addition to the layout shown above, you can also see the schematic at http://www.bigmessowires.com/floppy-emu-schematic.png
What is your source of DB19 connectors ? They are quite rare.
They are definitely rare, but IEC (Colorado USA) has them. I purchased 10 of them a couple of months ago. http://www.iec-usa.com/cgi-bin/iec/05MPartDB19.html
Steve,
Will this version of the floppy emulator emulate 1.44Mb disks?
Only 400K and 800K disks are supported so far. I think it should be possible to add 1.44MB emulation with a software update, keeping the exact same hardware, but I haven’t looked into it yet. In any event, 1.44MB emulation would only work on those Macs that already support high-density disks, so for example you could emulate a 1.44MB disk on a Mac SE/30 but not a Mac Plus.
I’ve been watching your website to track your project. I think it would be neat to design this PCB in the shape of a 3.5″ floppy disk. Good job and good luck on your project!
Haha, that’s an awesome idea! That would be just about the right area for the board, too. The only downside is that if you plugged it straight into the floppy port, a board that wide would block some of the other ports on the Mac. With a cable connection it would be fine, though. Too bad I already sent the boards to be manufactured!
Steve,
I was thinking of a practical workflow from a modern Mac running OS X to a Mac with a floppy emu. I found that there is freeware available to split files into a series of 400k or 800k files that then be recompiled on the Mac with the floppy emu.
Split the files on Mac OS X, using Mac File Splitter: http://loekjehe.home.xs4all.nl/Split&Concat/
Recombine the split files, using ChunkJoiner: http://www.pianofab.com/cj.html
What do you think?
That should work. If you’re dealing with Classic Mac files, you could also use old versions of SuffIt to do the same thing, running it inside an emulator on your OS X machine to do the split-up. This assumes your Classic Mac has a hard drive to store the rejoined files– I’ve been mostly thinking about the oldest Macs, which normally don’t have an HD.
In the long run, it may well be possible to mount the entire SD card as a single volume, instead of a 400K or 800K floppy emulator, which would eliminate the need to split and join if moving very large files. But that’s all theoretical future stuff, and I’m just taking this one step at a time. 🙂
Hi Steve,
I’m very excited about your project.
When are you planning to release a first version of firmware?
Thanks a lot
Andrea
After I’ve got the hardware (coming next week) and software working with write support, I’ll tie it all together into a nice release.
Hi Steve,
your project is quite impressive. I currently try to do a similar thing on the Atari ST (hope it will work some day), but it is hard to find the DB19-Male Connectors (the ones which you can solder on the PCB) over here in Germany. Could you give me a hint where to get them ?
Thanks in advance
Best wishes
Arwed
The DB-19s are rare. The only source I know of is IEC in Colorado, USA.