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.
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.
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.
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.
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.
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.
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).
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.
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.