Close
0%
0%

Apple ProFile 10MB Hard Drive reader

Need to read what's on that ancient hard drive, and put it on an SD card? Well, I did...

Similar projects worth following
Teensy 4.1 interfaced to a circa 1986 ProFile 10MB hard drive.

A few months ago, I inherited an Apple //e from a friend that was moving and needed to clear out his shop. There were some good tidbits in the pile, including an Apple ProFile 10MB hard drive.

This thing was early in the personal hard drive game. It was the second generation ProFile - the first being 5MB - and retailed for something like $3,000. A hefty price tag for a lot of storage (at the time, at least). To this point, I'd only ever seen one of them in person, at my high school around 1987. So it's pretty exciting for me to have something that was so expensive back in the day; and the prospect of getting it running on an actual //e is pretty thrilling.

The //e itself seems to work okay, and the ProFile makes good hard drive noises... but I couldn't read the drive. A quick look inside the ProFile itself showed me that there were some RIFA filter caps which did (while I was testing) give up their magic smoke; I replaced them, and still no luck. So I wanted to divide the problem in half: am I looking at a problem with the ProFile, or the Apple //e and/or interface card?

And thus this project was born. The drive's protocol is pretty well documented, so I figured it should be possible to make a Teensy-based circuit that could read from the hard drive and I'd know if the drive was okay or not.

The circuit is simply 2x 74LV245 octal bus transceivers and a Teensy 4.1. Connecting all that to a DB25, I could plug it in to the ProFile and did suck its contents down to an SD card with very little hassle... so the drive itself is definitely in working order...

  • 2 × SN74LVC245A Octal Bus Transceiver Logic ICs / Receivers, Transceivers
  • 1 × Teensy 4.1

  • How does it work?

    Jorj Bauer05/22/2021 at 19:52 0 comments

    Connect the circuit to the ProFile, and also to a host computer via USB. (The host computer powers the Teensy, and you'll need a serial terminal (or the Arduino/Teensyduino app's serial interface) to tell it what to do. Make sure there's an SD card in the Teensy and it's formatted with a FAT filesystem of some sort.

    Power up the ProFile and let it complete its self-check. This can take a few minutes before the "Ready" light is on solid, but once it is, you're ready to go.

    The serial interface is really primitive; I didn't need it to do much. It waits for a few simple characters to see what to do:

    CharacterAction
    tTest reading one block. Just reads; doesn't try to save it.
    rRead the drive's metadata and writes it to the SD card in a file named "metadata.dat"
    RSend a Reset signal to the ProFile
    fFlush data written to the SD card. (Not actually necessary; just for paranoia's sake.)
    cCopy the whole hard drive to files on the SD card.

    The copy action will read the metadata and write it to "metadata.dat"; then it reads the drive's contents one block at a time and writes it to the file "profile10.img". (It will honor whatever the drive says its capacity is, so if it's a ProFile 5MB it should properly read just the 5 MB, but it still calls the file "profile10".)

    There's a weird thing about the block size of a ProFile hard drive, though. The blocks aren't a power-of-2 size... they're 532 bytes. Specifically, that's 512 bytes of data plus 20 bytes of "tag" metadata (which the Apple3 uses; I'm not sure if the Apple 2 series cares about it at all). If the ProFile reports that its block size is 532 bytes then the copy action will also create "profile10.tag" which contains all of the tag data.

    I deliberately cut this in to 2 different files so the resulting "profile10.img" can be used in an Apple emulator, which expects the data. And I also preserved the tag data in case some future need arises to write it back to another actual ProFile.

    The whole operation is very verbose; I haven't bothered taking out the debugging code. The numbers in brackets that appear while the copy is happening refer to points in the data exchange that I annotated while building this, so I can tell what part of the protocol they're on. Want to see it doing its thing? (Bonus: you can hear the ProFile hard drive running. Boy that thing is loud.)

View project log

Enjoy this project?

Share

Discussions

dearuserhron wrote 05/22/2021 at 19:20 point

Old hardware does not die. (a quote from Nirvana movie)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates