Adventures in Retrocomputing: Repairing an original Macintosh

Next year marks the 30th anniversary of the launch of Macintosh. The famous commercial, the famous demo, and a milestone in the ups and downs of Apple, the largest publically traded company, and just recently, the world’s most valuable brand. In early 1984, I was writing code for the 8-bit micros of the day, the Commodore 64 and the Apple II. The Motorola MC68000 had been out for a few years at that point, and I knew a little about it from articles in Byte and from its datasheets, but it was so powerful (and so expensive) compared to those platforms that nobody I knew at the time had even worked on one, let alone owned one. With sixteen 16-bit registers and 24 bits of address space, all of the tricks and hacks we performed on a daily basis on the 6502 were utterly pointless. The mighty 68000 was 8 times faster, 4 times wider and could directly access 256 times the memory. If that sounds just a little over the top, it really barely even covers it. It’s hard to convey the enormous gulf between the two worlds, especially given how small either of them seems now.

Apple was far from the first company to market a 68000 machine, but Macintosh (unlike many of its contemporaries) was never specifically about the clock speed or type of its processor. It was about packaging an appliance that was meant to stand on its own, to be everything it needed to be already included, ready to be used without endless expansions, part of the message of the computer “for the rest of us”. Given how quickly the original Macintosh gave way to the 512K Macintosh and then the Macintosh Plus, I don’t think the very first model entirely met everyone’s expectations, but at the launch, it was clearly a break from all the other offerings, clearly not a “me too” PC.

Over the years, I’ve used or repaired nearly every model of Mac. I did the computer support for my mother’s typing shop (she started with a pair of 512K Macs that I upgraded to 512Ke (“Enhanced” ROMs and 800K drives) and an Apple LaserWriter I (MSRP $5,000!) that I upgraded to a LaserWriter I+ (1.5MB of new ROMs) and she finished with a fully-loaded Mac SE); I supported Macs in a couple of my jobs; when I ran a small business making and selling Amiga peripherals, I used an A-Max II+ card so I could run Mac applications on my Amiga and print directly to an HP LaserWriter 4/ML, my first Postscript Laser printer (which cost a mere 20% of what my mother had paid for her first laser printer 10 years before); and when I worked for the University of Wisconsin and was given a choice of laptops, I picked a MacBook Pro over a Lenovo. Despite how it sounds, I never considered myself a “Mac person”; I just used them for what they were good at, desktop publishing and digital photo editing, and used other platforms (AmigaDOS, VMS, UNIX, etc.) for software development and other “fun stuff”.

So with the 30th anniversary around the corner, I decided I wanted to put together a system to show just how far the Macintosh has come. I still had one of my mother’s 512K Macs, but that wasn’t quite original enough. I made some inquiries and someone sent me a non-functional original 128K motherboard for the cost of shipping.

bad repair

When I got it, I looked it over before plugging it in. It was original except for one RAM chip that had been removed and replaced with a socket. I checked the solder side of the board to easily spot a cold joint on pin 2.

a cold joint

This was an easy fix. I had thought it would be as simple as touching the cold joint up and I’d be good to go.

a reflowed joint

Unfortunately, it was not enough. One of the characteristics of the “compact Macintosh” models is a failure mode called the Sad Mac. One of the first things executed in the firmware at power-on time is a series of tests. The first test checks the contents of the ROMs, the next three or four tests check proper RAM functionality, and then, after all the tests complete successfully, the startup routines fill the screen with the signature “checkerboard” pattern, set up some system structures in low RAM, then ask for a boot floppy and attempt to start the operating system, displaying the Happy Mac before the OS code throws up a dialog box that says, “Welcome To Macintosh”. That all happens when things go right. When they do not, you may get the Sad Mac. The six digit code under the Sad Mac tells you details about what went wrong. If the first test fails, the code starts with “01”. If the second test fails, the code starts with “02” and so on. The remaining four digits give you information to pinpoint the trouble. If the ROM checksum fails, the rest of the code is an unhelpful partial sum. It doesn’t tell you where the fault is, just that the contents didn’t add up to the expected total. In practice, this rarely happens. If the ROMs are corrupt, usually the ROM-based checking routine doesn’t execute properly in the first place so you don’t even get the Sad Mac. Usually. I’ve seen reports of an “01” Sad Mac code, but they are uncommon. What is common are RAM failures, and that’s what my Mac was telling me.

Sad Mac 0x020800

The Sad Mac code 0x020800 translates to a total bit failure for the RAM chip at coordinates G8 on the main board. That just happened to be where the socket was. I tried replacing just the chip in the socket, but the error persisted. With a little bit of probing, my suspicions were validated – whoever repaired this board and replaced a soldered-in chip with a socket, ruined a trace on the board. This particular trace carried the contents of that bit from the data bus into the chip. Conveniently for me, there was a nearby spot on the board, a via, to run a jumper wire to. That took care of one problem and revealed the next one.

Sad Mac 0x04114E

Once the chip at G8 was returned to service, I was greeted with 0x04114E. Test “04” is a RAM contents test. It seemed to be telling me that six chips out of 16 had failed. If the test had reported one or two bad bits, I would have believed it immediately. Over one third? That sounded like something more serious like a bus buffer or other failure between the RAM and the CPU, where one failed chip could easily interfere with multiple bits. I wanted to know more about the tests at this point, so I tracked down a program to disassemble 68000 code, and found FDisasm. It not only disassembled code, but there were label files that knew entry points and the names of storage locations used by the ROMs so it could translate binary machine code back to ASCII mnemonics with legible names and labels. I breezed through the code at P_ChecksumROM and studied what the code at P_TestMemory did. Once I understood how it was calculating the last four digits of the Sad Mac code, I was left with the conclusion that perhaps I really did have six bad chips. Temporarily sticking new RAMs on top of the old, bad RAMs confirmed it. When I “piggybacked” the RAM chips, one by one, the bad bits vanished until I saw the screen clear and the Mac ask for a boot disk. A victory! It wasn’t over yet, but the way out was clear.

Sad Mac 0x04914E

Just to see the difference, I removed the bad chips (and the earlier jumper wire because it was blocking one of the chips to be replaced) and took a picture of the latest Sad Mac, now sadder than ever since he was missing seven of 16 bits, not merely parts of those bits from some partially defective chips. Those missing bits produce the barely visible 0x02194E code (unlike some systems, the original Macintosh only has one set of RAM used both for program storage and the video buffer, and the video is generated by a pile of TTL logic; there is no “video chip” that has to be initialized – as such, bad or missing bits are readily apparent on the screen even when large portions of the board are not functioning correctly).

Insert Boot Disk

After clipping 96 pins on six chips, cleaning the solder out of all the holes, and installing sockets, it was time to install some RAM and test. This time, I was rewarded with the checkerboard screen and the icon to insert a boot disk.

Happy Mac

I popped in one of the 400K boot disks I made using the working 512K board and it started right up. Sad Mac was no longer Sad. This old Mac is ready to greet its 30th birthday with a smile on its face.


2 responses to “Adventures in Retrocomputing: Repairing an original Macintosh

  1. I am trying to resurrect a mac 512K and I’m not quite as knowledgeable as you, I can solder just fine, however. I get a sad mac with error code 02fffe which I am guessing is a ram problem.

    Does this error code indicate what chips I should replace?

    • Possibly. “02” means a total RAM failure of one or more chips. 0xfffe suggests all RAM chips but one (D0) have failed. If your RAM chips have an Apple logo on them, that might be true. Those do commonly die. Other brands (Hitachi, etc.) are normally more robust.

      I’m a bit suspicious that the ROM test claims that 15 out of 16 chips are bad, especially since if they really were bad, you wouldn’t be able to read the screen (there is no “video RAM” in an old Mac, just “RAM”, which is why you can see screen distortion on my examples because I really did have bad RAM chips that failed the ROM test and affected what the screen looked like).

      If you can see the Sad Mac and read the code under it, it means that some of your RAM is working and the problem with the RAM test might actually be another chip outside the CPU that handles address decoding or buffering. One test you can do is to get some new RAM (41256 DRAMs, pretty much any brand and any speed; the slowest are 150ns, but don’t worry if all you can find is 120ns or 100ns – they’ll work fine), make sure the leads are bent slightly inward, then, with the power off, place the RAM chip right on top of one of the ones soldered in place so that all 16 leads are overlapped and touching. Power on the Mac and check the code. If it changes, then the RAM at that position is probably genuinely defective. Power off, move the test chip to a different spot and repeat. You can test all 16 RAM chips that way. If the code does not change, I’d be more suspicious that the bad chip is not a RAM chip and is between the RAM and the CPU (if the ROM reads incorrectly but correctly enough to jump through the first few dozen bytes OK, you’ll get an 0x01 as the leading digits under the Sad Mac).

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s