BMOW title
Floppy Emu banner

HD20 Firmware 0.1

20141125_122028_resized

Good news, HD20-ers! I have rudimentary HD20 emulation working now, and I was able to use it to boot my Mac Plus. This runs on the standard Floppy Emu hardware, which means the same hardware can function as a floppy drive emulator or as a single large hard drive. If you’ve already forgotten, the HD20 was a mid-1980’s Macintosh hard drive that connected via the floppy port. Anyone with one of my Floppy Emu boards who’d like to help test this new firmware, grab the files and give it a try! But if you’re looking for something more complete and polished, you’ll need to wait a while more – this first firmware is very rough.

 
Version 0.1

  • You can’t move the mouse during disk I/O, not even a tiny bit, otherwise bad things happen. It’s hard to avoid! The same thing goes for using the serial port, or anything else that will cause CPU interrupts. I had to single-click on icons and then press Cmd-O to open them, instead of double-clicking and accidentally nudging the mouse. Obviously this needs to be next on my list of things to fix.
  • This is read-only emulation for the time being. The disk appears with a lock icon in the Finder.
  • The disk icon on the desktop looks like random garbage. But in the disk’s Get Info window, it looks fine. Something about needing an icon mask, maybe? But there’s no place in the HD20 drive status structure to supply an icon mask, as far as I can see.
  • In the disk’s Get Info window on System 6.8, the “where” field shows random garbage. For a SCSI disk, this field shows “SCSI1”. If someone has a real HD20, please do Get Info on the disk and let me know what it says for “where”.
  • SD card transfers are totally unoptimized, one block at a time reads. This should be possible to improve significantly. But it still feels decently fast already: at least as fast as a floppy if not more so. It boots up to the desktop in 5-10 seconds.

I need help testing which Macintosh models have built-in HD20 support, and which don’t but can use an HD20 after booting from another disk with the appropriate software. From what I’ve learned so far, I believe these Macintosh models have HD20 support built into ROM:

  • 512Ke
  • Plus
  • SE
  • Classic
  • Classic II
  • Portable
  • IIci
  • IIsi
  • LC (but not LC-II or LC-III)

The Mac 512K and 128K can use an HD20 if they boot from another disk that contains Apple’s HD20 Init. That Init may also work for other II-series machines that lack HD20 support in ROM. HD20 Init shipped with very old version of the Macintosh system software, and I’m still looking for a download link for it. Let me know if you’ve got one.

You’ll need to connect the Floppy Emu board to the external floppy port, not the internal one. For the LC, one of the two internal floppy ports is considered “external” – try them both to find which works.

I would also appreciate help testing different sizes of disk images. The HD20 was a 20 MB drive, but its communication protocol can support larger drives. The limit is either 32 MB or 8 GB, but I’m not sure which. Just because the computer boots and says there’s a 1 GB disk doesn’t mean it’s actually working though. It’s necessary to test reading files from all parts of the disk to make sure the full capacity is actually working correctly. The OS itself also imposes a limit of 2 GB for disks.

 
Let’s Do This!

When you program this firmware to your Floppy Emu hardware, it will no longer function as a floppy drive emulator until you program it again with the old firmware. Before you begin, take note of what firmware version you’re currently using. This is displayed on the LCD for a few seconds after a reset – look for a string like “App Version 1.0 Q, CPLD Firmware 13”.

Program the hardware with firmware HD20 0.1A-F64. Edit: see this later post for newer firmware that fixes most of these issues. Instructions for applying the firmware update are included with the download. Note that the update comes in two parts: a new application for the microcontroller, and a new configuration file for the CPLD. You must apply both parts.

To use the emulator, put a file named “HD20.dsk” on your SD card, put the card in the Floppy Emu, and reboot. The disk image file format is the same as the disk images from popular emulators like Mini vMac and Basilisk II, so have fun. If your image file ends with a .dsk or .hfv extension, you can probably just rename it to HD20.dsk with no other changes necessary. If you don’t have an appropriate disk image handy, try this one.

When you’re done playing, reprogram the old firmware. If you were previously using 1.0L-F11 or earlier, restore the hardware to 1.0L-F11. If you were previously using something later than 1.0L-F11, restore the hardware to 1.0Q-F13. If you get messages about “bad fuses” or “wrong CPLD” after restoring the old firmware, don’t panic – it means you’ve programmed the wrong firmware, or only programmed one of its two parts. If you get really stuck, email me.

Read 7 comments and join the conversation 

7 Comments so far

  1. E.R. Price - November 25th, 2014 2:54 pm

    Steve, That is awesome. I’ll give it a try over the holiday break on my Classic and Classic II and provide feedback if anything notable comes up.

  2. Charles - November 26th, 2014 5:13 am

    Where: external hard disk drive

  3. Steve Chamberlin - November 26th, 2014 12:54 pm

    I’ve got the desktop icon and the “where” text working now, but I’m totally stumped as to implementing the holdoff behavior needed for serial interrupts and mouse movement. The DCD doc describes a holdoff mechanism that’s different from what I see in the ROM disassembly. And neither one matches what I actually see happening when a holdoff occurs. The Mac tells the drive to holdoff, but never tells it to resume again. Instead it just sends a bunch of reset commands and then fails the I/O operation. I’m clearly doing something it doesn’t like, but I can’t figure out what.

  4. Steve Chamberlin - November 26th, 2014 2:50 pm

    Ah, I think there’s a problem with the CPLD not passing the data to the Mac correctly when in any state other than read/write. This would also explain why I had to tack an extra bogus byte on the end of each data transmission, as I mentioned in my previous post.

  5. Steve Chamberlin - November 26th, 2014 3:05 pm

    Got it! Now you can go crazy with the mouse without causing problems.

  6. marcus - November 26th, 2014 7:20 pm

    Here’s a direct link to the System 3.2 HD Startup software.

    http://earlymacintosh.org/disk_images/3.2%20HD%2020%20Startup.sit

    From main site:
    earlymacintosh.org/disk_images/3.2%20HD%2020%20Startup.sit

  7. marcus - November 26th, 2014 7:22 pm

    meh. bad main site link. sorry… here’s the main link.
    http://earlymacintosh.org/disk_images.html

Leave a reply. For customer support issues, please use the Customer Support link instead of writing comments.