My adventures in computer restoration
Goethe, the giant of German literature, concluded his experiences by bringing them to paper. I have taken that wisdom for myself on previous occasions and thus see this as essential to conclude not just a fun project but also something that has been nagging me for over 20 years.
I started to collect computers around 1988. First, as a way to make some money (buying and selling) but it became clear to me that personal computer technology would represent an era in human development that would be akin to the most important developments of human achievements; so I started collecting computers that I thought would be a relevant representation of this era. Some of these computers I have used personally and, in my work, and are thus “sacred” to me. My collection efforts stopped abruptly when I left Switzerland in 1998 for New York. At that time, I "parked' all my computers at my parent’s place and not just the computers, all the media that makes them useful.
In September of 2020, my parents decided to give up the storage space (I helped to shape that decision) and in fairness most of the things that they still had in storage were mine anyway. So, I had about 10 boxes delivered to my apartment in Zurich and opening those boxes was an experience. But it's not the emotional side that I'd like focus on - I realized fairly quickly that my gear was in pretty bad shape: there were disk drives that wouldn't spin up anymore or make a terrible metallic sound and some computers wouldn't turn on at all. I decided I wanted to save as much as I could and foremost my own data for eternity or at least for good memories the same way we keep photo albums.
Over a span of five weekends, I mostly accomplished that goal. This article is about the project to restore the computers and the data and to move it to modern computers. I am going to outline my approach, the successes and failures and the outcome.
First, the scope: I had recovered from the boxes the following (in order of age)
- 1x Apple II + monochrome monitor and two floppy drives (and all sorts of accessory cards)
- 1x Original IBM PC Portable with 20mb drive
- 1x SX-64 (the portable version of the more famous C-64)
- 1x Amiga 1000 with two external floppy disks
- 3x NeXT cubes (incl. one with a NeXT dimension card and an original NeXT computer with an 68030 processor)
- 1x NeXT workstation Turbo color
- 1x NeXT 17” Megadisplay monitor (Original)
- 1x NeXT 21” branded color display
- 2x NeXT Soundboxes, 3x Keyboard and mouse (non-ADB)
- 1x Apple Mac Quadra 700 (incl. PowerPC card)
- Other accessories and mostly exotic and proprietary cables
- Boxes of floppy disks for the Amiga, the SX-64, the IBM PC and the Apple II
- Several external disk drives, a Jaz drive with several cartridges, two Syquest (80mb and 270mb) with each one cartridge and seven DAT tapes.
Apple II (ca. 1982)
IBM PC Laptop (ca. 1984)
SX-64 (ca. 1984)
Amiga 1000 (ca. 1986)
Sadly, upon turning it on while connected to my monitor, the screen just flickered yellow. I searched on the Internet for Amiga color codes and found what I was looking for: the Amiga had a RAM issue. I suspected the fault could come from the memory expansion in the front. Behind a panel, there was an additional 256K module (yes, that is right in total it had 512kbytes of memory). I opened the front, unscrewed the screws of the memory expansion, pulled it out, turned on the Amiga and tata it worked. Yes, clearly a faulty memory expansion. I scoured the Internet to find a replacement, I posted on Amiga boards (yes, there is a thriving community) but nothing came of it. This left me with an Amiga 1000 that had 256K ram. I could only boot the workshop disk that would almost immediately fill up the memory. But even replacing the memory module would not help me restore data and move it to modern computers because I had no way to interface with the Amiga. For that, I needed something else. I started to explore the Amiga scene and in fact the progress towards software emulation of Amiga hardware and as it turns out, that's a very mature community. There are several software emulators and of course I was aware of some of these efforts but never really followed up to what extend they had progressed. I learned that most people nowadays connect compact flash cards via an IDE adapter. Later Amigas had in fact an IDE interface (some had SCSI) that would allow to connect IDE harddisks. Of course, IDE hardisk are no more but some folks have created an adapter for compact flash cards that acts like an IDE harddisk. My plan was simple: obtain an Amiga with IDE interface, get a CF-IDE adapter, copy floppy disks to the CF card and read that card on my modern computer. Again, eBay is your friend. I managed to purchase one of the more modern Amiga computers (Amiga 600) from Germany that had an IDE interface and the one I purchased online had the compact flash adapter installed. It was straightforward. On one Sunday, I copied around 50 floppy disks to an image file (so called ADF or Amiga Disk File) which can be mounted on the Amiga as if it was a real floppy disk. Unfortunately, I was only to capture around 50% of all floppy disks - in some cases the disk was just unreadable and in other cases, there was also copy protection (games). But I was able to copy the relevant floppy disks, namely the ones where I had source code and some of the work I did for high school. What I also realized is that I could make a copy of the compact flash card as image file and then use it directly in one of the software emulators. Which means this is exactly how I could keep this alive for eternity - even after the hardware no longer works, if I can get a software emulator to work, I can keep this alive. To really try this, I took one of my school papers, printed that as postscript, moved it to my Windows computer, converted it to PDF and printed it. What is also interesting with Amiga is that the complete software catalogue is in fact available online - so to print the school paper, I had to install the original desktop publishing software that I used. I still do not have a functioning Amiga 1000 but at least I managed to move my relevant data to a modern system where I can use it with software emulators.
NeXT (ca. 1988-92)
But let us roll back the time a bit. When Steve Jobs ejected from Apple in 85, he started NeXT with the aim to do one better than Apple but target academia. These computers were really meant for research (funny sidenote: Tim Berners Lee developed the first http server and www client on NeXT while he was at CERN). I started to follow Steve Jobs' NeXT development in the late 80s. I read everything about NeXT, I learned about Unix before I ever had my hands on a NeXT keyboard and of course I started to look at Objective-C, which was the programming language that NeXT used. In fact, NeXT had some success in convincing banks to start internal software development for applications because of its ability to shorten development lifecycles. Later, when I started studying computer science, we had a local NeXT computer club with a monthly magazine. At some point, UBS (Union Bank of Switzerland) had a posting for a student that could program Objective-C on NeXT. I called them and a week later, the job was mine. This is how I started my corporate life (funny side note: we had several visits from Steve Jobs at UBS because we were one of the premier banking customers that would utilize hist NeXT system; I got to spend a couple of minutes with Steve Jobs and ask him question about DBKit and 3DKit ... looking back and knowing what I know now, I would love to have this time back to ask him different questions)
I suspected setting the computers up and restoring data would be easy because all NeXTs already had integrated SCSI and Ethernet networking. My idea was to connect them to my home network and retrieve data from the internal and external media through the network. Little did I know.
Only one of the four NeXTs successfully turned on. But that was a quick fix, as it turns out (Internet is your friend), they will not turn on if the on-board battery has no more voltage. So, I ended up replacing all batteries. The next challenge was to connect them to my monitor. I realized I could not connect the workstation because I did not have the necessary proprietary cable to connects the workstation to a soundbox to then connect it to a monitor that used a DB13W3 video-in connector. I was able to connect the cubes to the monochrome monitor I had (the keyboard connects to the monitor) but I felt like the monitor was about to die, so I looked for ways to connect them to a VGA flat panel (just like the Amiga) and luckily even today, people make cables for precisely this problem. I was able to order two cables from a company in the US that had specialized on keeping NeXTs alive. All good I thought. Well, I got the cables and it seemed to do the trick. However, the workstation had a faulty drive when turning that on - so that was toast. I looked through all the working NeXTs to scour personal data (I relearned how to change the root password in single user mode) but I couldn't find much and then it hit me that I had backed it up on tape. I looked more closely at the DAT tapes - these were DDS and DDS2 but I had no drive: eBay is your friend again as I managed to order a drive (DDS4) that would also read older tapes. But the drive was SCSI3 and used 68 pins and my NeXT is SCSI2 with 50 pins, so I needed another adapter to go from SCSI3 to SCSI2 and then I was finally able to connect the drive. I could not restore the data directly on the computer because the internal disk only had around 500 MB capacity and I feared that I would stress the disks too much. Therefore, the plan was to restore data from the tape over the network to a Linux box. I spent a whole weekend trying to make that work. As it turns out, there is no ssh or rsync or any of the more modern Unix tools available on the NeXT. I tried to compile more modern source code which is a frustrating exercise. I did find binaries for ssh but I couldn't get a handshake because the ciphers on the NeXT binary were simply ancient. I found a way to enable rsh on Linux but for some reason, I could not send the data from the tape as it terminated with read errors. I was never able to resolve this. I figured, the best way to do this is via NFS. I configured my NAS to enable NFS and I tried to mount an NFS volume with my NeXT but it simply didn't work and I didn't get a clear error message. After some research, I realized that NFS progressed as well – and now we have NFS version 4 whereas the NeXT could only understand NFS2. I dropped the idea of attempting to have the NAS as the NFS server and instead, got my Linux backup rig in place and looked at how to downgrade the configuration to allow NFS2 mounts. I was able to do just that and could then mount the network share directly on the NeXT. I still needed a way to connect the tape drive to the NeXTs SCSI bus and for that purpose, I used one of the external hardisk cases (that were for the Mac, see below), moved the harddisk aside and shoved the tape into the rough position of the disk so that I could access it from the front. I then connected the external case to the NeXT cube, put a tape into the drive and was able to read. Of course, the first several attempts failed because I simply could not remember how I backed up the tapes. There are several ways to do that and I tried tar, restore and others - in the end, the first tape was backed up using gnutar - back in the days there was tar and gnutar. Today, gnutar has become tar. I had to use gnutar on the NeXT. I was able to restore three tapes almost to the end but soon had read errors on some of them. But I was able to get all my personal files of the tapes and in fact all the software I used. The remaining tapes gave me too many errors and I was not sure what I had used to back them up. I did find some evidence to a third-party backup system on my NeXT and so I tried to just copy the raw tape data to disk for later extraction (using dd). I also got in touch with someone that wrote this third-party backup tool (after almost 30 years!) and he was able to give me some good advice about the format. I still have to do this but I had to stop somewhere and with what I was able to recover from the three tapes, I believe I had pretty much everything that would be relevant to me. With the restored data, I was able to create a new disk image and luckily, just like with Amiga, there is a community that has been working on software emulators (Previous). Something was still nagging me. I understood that the disks I had would not last forever. When the hard disks in those cubes startup it is as if an old engine is trying one last time to rev up. It would just be a matter of time until these disks would die, just like the one in the workstation. Unsurprisingly, this too had been solved by the community. Someone decided to create a SCSI hard disk emulator that used regular SD cards as medium. When reading up on how they worked, they were exactly what I was looking for. Basically, it is a small computer that connects directly to the SCSI bus of your computer and tells the system that it is a hard disk (or a CDROM, or a floppy disk etc.). Unfortunately, these are already old designs (given that SCSI as a standard in personal computers really went out of favor in the late 90s) but I was able to order such a device from a Chinese manufacturer.
When it arrived, the first thing I did was to write the raw image of my virtual disk that I had gobbled together from the backup tapes onto the SD card that was in my SCSI2SD device. And it worked on the first try! I was able to boot the NeXT from an SD card of something I had gobbled together over the network. For me that was an important revelation. It means that any SCSI based computer can be saved – or rather, it’s not dead wood if the drive dies, just use an SCSI2SD card.
I was not kidding when I said I was writing this on my NeXT cube – I have in fact! (disclaimer: before I published this, I used Word to correct grammar and spelling mistakes). In summary, I was able to retrieve all personal data, I was able to move it to a modern system and use it there and I learned that there is hope even if your internal disk dies.
Mac Quadra 700 (ca. 1992)
I had an idea. I remembered that NeXTs were able to read the Mac filesystem (HFS) and so I connected that disk to my NeXT and in fact I was able to mount it. But I had the same problem: every attempt to copy data failed. On the NeXT this ended up as a kernel panic which brought the whole system down. Not good. I needed something else. I tried to use dd on the next. Dd is an especially useful Unix tool that can read the raw data from the device and write to anything. The problem is that dd stops when it encounters an error and, as it turns out, the disk I was trying to read from had many bad blocks which resulted in block-level read errors. I tried several tools to reassign bad blocks but that did not work. I then read about a tool called ddrescue which is essentially dd but with the ability to either “fake” the block if it can’t be read or just returning empty but at least it would go through the whole disk and hopefully preserve the filesystem on it. The problem with ddrescue is that it is too new – I tried to compile the source code on my NeXT but there were too many things that my NeXT did not have. I had come to a drastic realization. If I wanted to get something off that disk, I had to connect it to my Linux box and run ddrescue from there. But to do that, I needed a SCSI adapter – well, given that SCSI went out of favor for consumer electronics in the late 90s I was not very hopeful. But as it turns out, industry is still a user of SCSI and I was able to find a SCSI host adapter for PCIe (which is what modern PC use) that was already 14 years old. Again, Ebay is your friend. When I received it, I squeezed it into my little Ubuntu server and found a way to connect the drive directly to the internal SCSI bus of the host adapter (yes, cables everywhere). The first several attempts were failures because that drive would not be properly recognized. I suspected this was a SCSI termination problem. Well, I did not have any SCSI terminators laying around except my newly acquired SCSI2SD card adapter which had a built-in SCSI terminator. So, I squeezed that in-between the host adapter and my external SCSI drive and guess what: it worked! I did a ddrescue on this HFS formatted external drive and was able to restore most content. Linux has come a long way. I realized that Linux today can natively understand all the relevant disk formats, not just HFS but also NeXTs and many others. Kudos to Linux for saving the day (another sidenote: I witnessed Linus Torvalds in action once; interesting character). After I had the raw image of the external drive and with the SCSI2SD card still connected, I decided to write the image back to the SD card. This worked and I was able to use it on the Mac. Again, the SCSI2SD card would also solve this problem in case the Mac’s drives fail (I also made a copy of the Quadra’s internal drive, just in case). In short, I restored all relevant data and learned a lot on the way. For me that was another success.
For now, I am satisfied because I mostly achieved what I had set out to do. I still have tapes that I cannot read that I would love to know what is on them, and I have at least one Jaz drive cartridge that is giving me a hard time. But I got what I wanted to get and everything on top of that is just icing.
My takeaway is important for you if you are interested in attempting something similar and it is this: do not wait. eBay is your friend for a lot of the things I needed but it has become clear that this will not be a sustainable market. Get what you need now and start restoring asap.