Sad Mac Error Codes
The Sad Mac is a startup-diagnostic icon displayed by Vintage Macintosh computers (every Old World ROM model from the Macintosh 128K through the NuBus Power Macintosh line) when a power-on self-test fails and the machine cannot reach the Happy Mac / boot stage. Below the icon the ROM prints one or two lines of hexadecimal which identify the failing subsystem and, where possible, the failing chip, byte lane, address line, or CPU exception. Together with the Chimes of Death, these codes are by far the most useful starting point for diagnosing a non-booting compact or Mac II-family machine.

This page documents the Sad Mac format used by every Old World 68k Macintosh and by the early NuBus Power Macintosh models that still displayed a Sad Mac before the chime was replaced with a beep code in 1998. It also describes the Chimes of Death heard on every Mac from the Macintosh II through the last pre-Open Firmware machines, the SE/30 Simasimac failure mode, and the serial-port Test Manager interface that lets you drive individual diagnostics over a null-modem cable.
Try the Sad Mac Decoder
editFor an interactive lookup of any code on this page, including a visual RAM-chip locator and audio playback of every Chime of Death, see the Sad Mac Decoder gadget (enable it in your user preferences) or the standalone page at Sad Mac Decoder.
The decoder accepts both the short (compact-Mac) and expanded (Mac II / SE/30 / Portable) formats, lets you pick the machine model so it can disambiguate identical codes that mean different things on different Macs, and highlights the failing RAM position on a Macintosh Plus / 512K board diagram for class-02 through class-05 errors.
Understanding Sad Mac Error Codes
editA Sad Mac is the visual half of a ROM-level startup test failure. On every machine it has the same structural meaning: the boot code in ROM runs a fixed sequence of tests on the CPU, RAM, support chips, and (on later models) the Power Manager and VRAM. If any test fails, or if an unexpected 68000-family exception occurs before the operating system has loaded enough to display a bomb dialog, the ROM jumps to a small routine that draws the Sad Mac and prints the contents of CPU registers D6 (minor / specifics) and D7 (major / which test, plus flags).
Two formats exist:
- Short format — used on the 128K, 512K, 512Ke and Plus. A single six-digit line, YYXXXX, where YY is the two-digit class code and XXXX is the four-digit subcode.
- Expanded format — used from the SE onwards (SE, SE/30, Classic, Classic II, Color Classic, LC family, Performa, Mac II family, Centris, Quadra, and the NuBus Power Macs). Two lines of eight hex digits each, displayed as:
: Line 1 (D7) — FFFFTTEE where FFFF = test-manager flags, TT = test number, EE = exception number (ORed in if an unexpected exception interrupted a test). : Line 2 (D6) — minor error / additional information (failing bit mask, address-line XOR, stack pointer, etc.).
When an exception occurs during a test the exception number is logically ORed into the lower word of the major code. So if an address error (0200) hits during the RAM Bank A test (test 03), the major code reads 0203, not 0200 or 0003 alone — you read it as "address error while running test 3". This OR-encoding is the single most important thing to know about decoding expanded codes; without it most published code tables look contradictory.
Test Manager flags (upper word of D7)
editOn expanded-format machines the upper four hex digits of line 1 are not random — they are the live state of the Test Manager. Each bit has a meaning:
| Bit | Flag | Meaning when set |
|---|---|---|
| 16 | Message queued | A diagnostic message is pending in the serial output queue |
| 17 | SCC INITed | The SCC serial controller has been initialised |
| 18 | No-sleep | Auto-sleep is inhibited (Portable / PowerBook) |
| 19 | Star received | A * command character has been received over the serial diagnostic port — Test Manager is active
|
| 20 | ASCII input | Test Manager expects ASCII command input (clear = hexadecimal) |
| 21 | Echo | Echo received characters back over the serial port |
| 22 | Timer | Timer-based testing enabled |
| 23 | Newline | Emit CR/LF after every Test Manager response |
| 24 | Unexpected exception | An unexpected exception was caught — exception code is ORed into the test number |
| 25 | Programmer's key | The Programmer's Switch (NMI button) was pressed |
| 26 | VIA Test | A VIA test is currently asserting itself on the bus |
| 27 | Bus errors OK | Bus errors are expected (used during chip-probe tests) |
| 28 | Stop on error | Halt on the first error rather than continuing |
| 29 | Loop on error | Loop the failing test indefinitely (for scope/logic-analyser work) |
| 30 | Store in PRAM | Persist test results to PRAM |
| 31 | Boot after test | Continue booting after diagnostics complete |
In practice, when looking at a Sad Mac code in the wild, the upper word usually reads 0000 (no flags set, normal boot), 0001 (a serial message had been queued before the failure), or a value with bit 24 (0x0100) and/or bit 25 (0x0200) set if the failure was exception-driven or operator-induced.
Macintosh 128K, 512K, 512Ke, and Plus (Short Format)
editThese original Old World ROM machines display a six-digit short code below the Sad Mac. The class code is two digits, the subcode is four digits:
| Class | Test | Subcode meaning |
|---|---|---|
| 01 | ROM checksum | Subcode is meaningless; replace the ROMs on the logic board |
| 02 | RAM — bus subtest | Faulty RAM chip identified by bitmask (see chip table) |
| 03 | RAM — byte-write subtest | Faulty RAM chip identified by bitmask |
| 04 | RAM — modulo-3 pattern | Faulty RAM chip identified by bitmask |
| 05 | RAM — address uniqueness | Faulty RAM chip identified by bitmask |
| 0F | Exception before OS loaded | Subcode names the 68000 exception |
If the Programmer's Switch (NMI button) is pressed at boot the machine will display 0F000D — a Sad Mac with a "normal" NMI subcode — which is sometimes used to deliberately trigger a Sad Mac for testing the display path.
RAM chip identification (16-bit single-SIMM bitmask)
editFor class codes 02–05 the subcode is a bitmask of the failing data lines. Each bit corresponds to one physical RAM chip in the 128K/512K/512Ke/Plus's 16-chip RAM bank. A single failing chip lights a single bit; multiple bits set means multiple chips, an entire byte lane (e.g. 0x00FF or 0xFF00) usually means a failed buffer or address-line problem rather than 8 separate dead chips.
| Data bit | Board position | Subcode bit |
|---|---|---|
| 0 | F5 | 0001 |
| 1 | F6 | 0002 |
| 2 | F7 | 0004 |
| 3 | F8 | 0008 |
| 4 | F9 | 0010 |
| 5 | F10 | 0020 |
| 6 | F11 | 0040 |
| 7 | F12 | 0080 |
| 8 | G5 | 0100 |
| 9 | G6 | 0200 |
| 10 | G7 | 0400 |
| 11 | G8 | 0800 |
| 12 | G9 | 1000 |
| 13 | G10 | 2000 |
| 14 | G11 | 4000 |
| 15 | G12 | 8000 |
Note: prior revisions of this page contained two transcription errors in this table — F8 was duplicated as Data Bit 3, and Data Bit 12 was listed twice (against both G9 and G10). The corrected mapping above gives one chip per data line for all 16 bits.
Worked example
editA Macintosh Plus displays:
020080
- Class 02 — RAM bus subtest failed.
- Subcode 0080 — bit 7 (data line D7) is bad.
- From the table, D7 lives at position F12 on the logic board.
Replace or reseat the chip (or, on a Plus, the whole SIMM containing that data line — the Plus uses 30-pin SIMMs rather than soldered chips, so the F5–G12 lettering corresponds to the chip locations on the SIMM itself).
Common Exception Codes (Class 0F)
editWhen the major class is 0F on a compact Mac, or when the exception byte is ORed into the major code on an expanded-format machine, the subcode tells you which 68000-family exception fired:
| Subcode | Exception | Common causes |
|---|---|---|
| 0001 | Bus Error | Access to non-existent memory; failed RAM/ROM; bad address decoder. On a Plus or SE address references roll over rather than bus-error — seeing 0001 on those machines usually means a hardware fault rather than a software bug. |
| 0002 | Address Error | Word or long-word access at an odd address. Common when a bad CPU emits a partly-corrupt instruction stream. |
| 0003 | Illegal Instruction | CPU encountered an opcode it doesn't implement. Often a sign of corrupt ROM or RAM (especially in low memory where vectors live), or — on a 68000 — code intended for a 68020+. |
| 0004 | Zero Divide | Integer division by zero. Sometimes left in as a deliberate "you should never get here" trap by Apple's engineers. |
| 0005 | Check Instruction | CHK bounds check failed.
|
| 0006 | TrapV / Overflow | TRAPV fired (arithmetic overflow).
|
| 0007 | Privilege Violation | Supervisor-only instruction executed in user mode. The Macintosh runs in supervisor mode at startup, so seeing this very early is unusual. |
| 0008 | Trace | CPU was placed in trace mode without a debugger installed. |
| 0009 | Line 1010 / A-line | Trap-dispatch failure: the CPU saw a 1010-prefixed opcode (the A-trap mechanism Mac OS uses for ROM calls) but the dispatcher couldn't find it. Common when the OS image is corrupt or MacsBug / Easy Access traps are missing. |
| 000A | Line 1111 / F-line | Unimplemented F-line opcode — typically an FPU instruction on a machine without one (or with a removed/dead 68881 / 68882 / 68040 FPU). |
| 000B | Other exception / unassigned vector | |
| 000C | Unimplemented trap / reserved | |
| 000D | NMI (programmer's switch) | Normal indication. Generated when the user presses the Programmer's Switch before boot completes. |
| 000E | Spurious interrupt | Interrupt asserted but no slot/handler claimed it. Often a NuBus card with a failed interrupt line. |
| 000F | Trap-instruction vector | A TRAP #n fired without a handler.
|
| 0040 (and 0041–0047) | Auto-vectors / interrupt-level traps | Interrupt level n fired without a handler (on '020+ machines line 1700+ is also used for these). |
| 0062 | Old-ROM reading HFS disk | A 64K-ROM machine (128K / 512K) attempting to mount an HFS-formatted volume. The fix is either to format the boot disk as MFS or to upgrade to a 128K ROM (the upgrade that turns a 512K into a 512Ke). |
| 0064 | Couldn't read System File | ROM loaded enough of the boot blocks to start the OS but could not read the System file into RAM. Almost always a bad floppy or hard-disk error rather than a logic-board fault. |
| 0065 | Bad Finder | System loaded but the Finder is missing or corrupt. |
The original Apple Technical Information Library notes that on the Mac II and later, the 1700–1F00 block of exception codes is used for FPU/PMMU exceptions; see the Portable's expanded exception list below, which is the most complete published Apple-internal set of these.
Macintosh SE, SE/30, Classic, and Classic II (Expanded Format)
editThe SE introduced the expanded two-line format. The same format is used by the SE/30, Classic, and Classic II, although the SE/30 inherits Mac II-family tests in addition.
The line-1 test number for these machines is drawn from this list (the lower byte of D7, i.e. the "TT" field of FFFFTTEE):
| Test (TT) | Meaning |
|---|---|
| 0001 | ROM checksum failed — replace ROM (on the SE/30 this often means dirty ROM SIMM contacts; reseat first) |
| 0002 | Small RAM chunk failed (Bank B) — the very first patch of RAM the ROM touches is bad |
| 0003 | RAM Bank B failed |
| 0004 | RAM Bank A failed |
| 0005 | External addressing test failed — usually a faulty GLU / address-decoder chip or a broken trace |
| 0006 | Unable to address VIA1 |
| 0007 | Unable to address VIA2 (SE/30 and later) |
| 000B | Unable to access SCSI chip (NCR 5380) |
| 000C | Unable to access IWM / SWIM (floppy controller) |
| 000D | Unable to access SCC serial controller |
| 000E | Data-bus test failure |
On the SE/30 specifically, very common readings are:
- 00000001 / 00000000 — ROM checksum. Often a dirty/oxidised ROM SIMM. Reseat before recapping.
- 00000004 / xxxxxxxx — RAM Bank A failed. Minor code is the failing bit-mask across the 32-bit bus.
- 00000005 / xxxxxxxx — Address-line failure. Recap the board (especially around the GLU and ROM area), inspect traces under the RAM SIMM sockets.
If the SE/30 displays no Sad Mac at all and instead shows the Simasimac vertical stripes, the ROM was never even checksummed — see that section below.
Macintosh II Family (II, IIx, IIcx, IIci, IIfx, IIsi, IIvi, IIvx)
editThe Macintosh II family uses the expanded two-line format with a broader test set than the SE. The IIcx, IIci, and SE/30 actually share the same diagnostic ROM image, which is why a IIcx will boot happily with an SE/30 ROM SIMM swapped in (and vice versa).
In addition to all the SE-family tests above, the Mac II family adds:
| Test (TT) | Meaning |
|---|---|
| 0008 | Data bus test at end of RAM (last 8 bytes used for the stack post memory-sizing) |
| 000E | Data bus test at start of RAM |
| 000F | System error before the error-message table was loaded — see exception subcode in the minor field |
| 0010 | Power Manager self-test (Portable/PowerBook only; see Portable codes) |
| 0011 | Memory sizing test |
| 0014 | Power Manager communication failure (Portable/PowerBook) |
| 0080 | Mapper RAM data test (Portable, normally non-critical) |
| 0081 | Mapper RAM uniqueness test (Portable, normally non-critical) |
| 0082 | VRAM data test |
| 0083 | VRAM address test |
| 0084 | SCC register test |
| 0085 | SCC loopback test |
| 0086 | SCC timer test |
| 0087 | VIA full test |
| 0088 | SCSI full test |
| 0089 | ASC (Apple Sound Chip) test |
| 008A | PRAM test (always reports failure; not actually run) |
ROM-chip identification on multi-ROM machines
editThe II, IIx, IIcx, SE/30, and several other models carry their ROM as four physical chips (often labelled MH, ML, LH, LL for the two bytes of each of the upper and lower word) rather than one or two. When the ROM checksum test (test 01) fails on these machines the minor code identifies the failing ROM:
- 0000FFFF (all bits set) — at least one ROM mismatched and the per-chip identity could not be narrowed down. Typically printed before per-chip diagnostics have run, e.g. on an initial boot before Test Manager is invoked.
- 00000001 — first ROM chip
- 00000002 — second ROM chip
- 00000004 — third ROM chip
- 00000008 — fourth ROM chip
- Mixed values (e.g.
0009= chips 1 + 4) indicate multiple failing chips, or — more commonly — an address-line problem upstream that's making all the chips look bad simultaneously.
To narrow down which ROM chip is bad on a IIcx/IIci/SE/30 board with soldered ROMs, see Test Manager below; the *T000400010000 command runs the per-chip ROM checksum directly and returns a result of 1/2/4/8.
Worked example: IIcx, slow Chimes of Death, code 0000FFFF 00000001
editA recapped Mac IIcx displays the Chimes of Death at half speed (the characteristic "24-bit ROM in trouble" cadence) and a serial console shows:
Line 1: 0000FFFF Line 2: 00000001
- Line 1 upper word 0000 — no Test Manager flags
- Line 1 lower word FFFF — ROM checksum test failed, all-bits indicator
- Line 2 00000001 — minor code "1" = first ROM chip / generic ROM mismatch
The slow chime cadence specifically points to a 24-bit-clean ROM (which is what the IIcx ships with) failing checksum; 32-bit-clean ROMs (IIci, SE/30 v.late) tend to fail at normal tempo. Connecting a null-modem cable to the modem port and entering Test Manager confirms which of the four soldered ROMs (UH7, UH9, UH11, UH13 on the IIcx — labels vary by board revision) is at fault. A common quick-test is to lift the on-board ROM jumper and drop an SE/30 ROM SIMM into the SIMM socket; if the machine then chimes happily, the diagnosis is confirmed and the fix is to replace or re-flash the failing chip.
Macintosh LC, Performa, Centris, Quadra (68030 / 68040)
editThe LC, Performa, Centris, and Quadra lines use the same expanded format and (broadly) the same test set as the Mac II family, with a few additions for 68040-specific features (FPU subset detection, snooping/cache tests) and on AV machines for the DSP3210.
These machines are far less likely to actually display a Sad Mac in practice than the compact and II-family Macs, for two reasons. First, the ROMs are more permissive — a soft-fail on a non-critical test will let the machine continue to boot and surface the error as a bomb dialog later. Second, by the Quadra/Centris era, ASIC integration meant that a hardware fault was more likely to brick the machine outright (no screen, no chime, no Sad Mac) than to produce a clean diagnostic display.
When you do see one, treat the codes as a hybrid of the Mac II table above and the exception table; the encoding rules (OR-in exception byte, two-line layout, Test Manager flags in the upper word) are identical.
The Macintosh Quadra 605 and LC 475 (Quadra 605 with a different ROM) are noteworthy for a model-specific quirk: a Sad Mac displaying 00000005 / 0000FFFF is almost always the 68LC040 CPU itself, not a board fault. These machines were sold with the FPU-less 68LC040, and dropping in a full 68040 of the same speed grade resolves the symptom — see Macintosh Quadra 605 Troubleshooting.
Macintosh Portable Diagnostic Codes
editThe Macintosh Portable (M5120 / M5126) inherits the expanded format but uses a notably different test numbering scheme and adds a full set of Power Manager handshake codes. It is also the only machine documented to have substantial errata in the Apple Developer Note: several published codes are flat-out wrong. The community-maintained reference at macintoshportable.info is the authoritative source.
Critical tests (will halt boot)
edit| Test (TT) | Name | Minor code |
|---|---|---|
| 01 | ROM checksum | 0000FFFF if mismatched
|
| 03 | RAM modulo-3 test | Bitmask of failing data lines (16-bit bus on the Portable) |
| 05 | Address line test | XOR of expected vs. actual at the failing boundary |
| 06 | VIA init | (no test — only appears if an exception fires during init) |
| 08 | Data bus test at end of RAM | Bitmask of failed bits |
| 0B | SCSI init | (exception only) |
| 0C | SWIM init | (exception only) |
| 0E | Data bus test at start of RAM | Bitmask of failed bits |
| 0F | System error before error table loaded | Minor = exception number |
| 10 | Power Manager self-test | Minor is the PM communication code (see below) |
| 11 | Memory sizing | Often pairs with a PM communication error |
| 14 | Power Manager communication | Minor = PM handshake state (see below) |
| 82 | VRAM data test | |
| 83 | VRAM address test |
Power Manager handshake codes (CD33–CD38)
editThe Portable, PowerBook 100, and later PowerBooks share a Power Manager IC that communicates with the main CPU over a custom serial-handshake protocol. Failures of this protocol surface as one of:
- CD33 — During a receive, Power Manager did not finish a handshake
- CD34 — During a receive, Power Manager did not start a handshake
- CD35 — During a send, Power Manager did not finish a handshake
- CD36 — During a send, Power Manager did not start a handshake
- CD37 — Timed out waiting for reply to initial handshake
- CD38 — Power Manager was never ready to start a handshake
CD38 in particular is the canonical "dead Power Manager" symptom — typically a Macintosh Portable with a failed PMGR PCB battery (the small PCB-mounted backup cell, not the main lead-acid pack) or PMGR firmware corruption.
Non-critical tests (logged but allow boot)
edit- 80 — Mapper RAM data test
- 81 — Mapper RAM uniqueness test
- 84 — SCC register test
- 85 — SCC loopback test
- 86 — SCC timer test
- 87 — Full VIA test
- 88 — Full SCSI test
- 89 — Apple Sound Chip test
- 8A — PRAM test (no-op — always logs failure but ignored)
Extended exception list (68020 / 68030 / FPU / PMMU)
editThese exception codes are ORed into the lower byte of the major code on Mac II family and Portable machines (the same OR-encoding rule applies as for the compact-Mac codes):
- 0100 — Bus error
- 0200 — Address error
- 0300 — Illegal instruction
- 0400 — Divide by zero
- 0500 — CHK / Check instruction
- 0600 — TRAPV / overflow
- 0700 — Privilege violation
- 0800 — Trace
- 0900 — Line A (A-trap dispatch)
- 0A00 — Line F (F-line — usually FPU)
- 0B00 — Unassigned exception
- 0C00 — FPU protocol violation
- 0D00 — Format exception
- 0E00 — Spurious interrupt
- 0F00 — Trap-instruction vectors
- 1000–1600 — Interrupt level 1–7 with no handler
- 1700 — FPU branch / set on unordered condition
- 1800 — FPU inexact result
- 1900 — FPU divide by zero
- 1A00 — FPU underflow
- 1B00 — FPU operand error
- 1C00 — FPU overflow
- 1D00 — FPU signaling NaN
- 1E00 — PMMU configuration
- 1F00 — PMMU illegal operation
- 2000 — PMMU access-level violation
Test Manager (Serial Diagnostic Mode)
edit- Main article: Diagnostic Serial Console
Every Macintosh from the SE onwards exposes a hidden Test Manager over the modem-port SCC. Connect a null modem cable from the modem port to a host running a serial terminal at 9600 8N1, then send a * to interrupt whatever the machine is doing and enter Test Manager. The trap _TestManager (defined in the same ROMs) provides the same interface programmatically.
Once inside, single-character commands followed by hex arguments and a *R (return / run) drive any test in the table. The two most useful for board-level diagnosis are:
- Per-test execution —
*T<TT>0001<minor>runs testTTonce and returns its result on the next line. Example:*T000400010000runs test 04 (RAM Bank A) once. - Per-ROM checksum —
*T000400010000on a IIcx/IIci/SE/30 will (because test 04 also covers the four-chip ROM array on those machines) returnR<class><result>0000where the result narrows the failure to one of the four physical ROM chips (0001,0002,0004,0008).
The same interface is used by Apple's internal MacTest / MacTest Pro / Apple Personal Diagnostics suites. Note that some test commands (notably the full SCSI test) will hang a machine that has a non-functional SCSI chip — be ready to power-cycle.
Chimes of Death
editEvery Macintosh from the Mac II onward through the last NuBus Power Mac plays a model-specific audio sequence when a Sad Mac is shown. The earlier compact Macs (128K through Plus) are silent in this state — they simply display the Sad Mac with no sound at all. The Chimes are useful as a first-pass diagnostic because they can be heard from across the room and don't require you to read the screen (some machines fail before any video is generated, in which case the chime is the only indicator).
By family
edit| Family | Chime | Notes |
|---|---|---|
| 128K, 512K, 512Ke, Plus | (none) | Silent Sad Mac; the original Andy Hertzfeld 600 Hz square-wave startup-beep generator is the only sound these machines emit, and it never plays on failure. |
| SE, SE/30 | Synthesised guitar arpeggio, upward major | First model family to play a death chime; produced by the Apple Sound Chip |
| Macintosh II | Upward major arpeggio with a sharp attack | Distinctive among the II family for its short, percussive opening |
| IIcx | Same arpeggio with a "keyboard click" sample at the start | The brief click is from the Apple Sound Chip's sample bank |
| IIci, IIfx | Extended, slower variant of the II arpeggio | The IIfx's chime is unusually long |
| LC, LC II, Color Classic, Classic II, Performa 200/400/450 | "Ping-pong-pawn" plus four dissonant notes | Major arpeggio followed by a falling cluster — the most recognisable death chime |
| Quadra, Centris (non-AV) | Same as LC family | Apple reused the LC chime across all non-AV Quadras and Centrises |
| Quadra/Centris 660AV, Quadra 840AV | Roland D-50 "Digital Native Dance" sample loop + Roland U-20 effects | Completely different sound — abstract and synth-pad-like |
| Power Macintosh 6100/7100/8100, Performa 6100, Workgroup Server 6150/8150/9150 | Car-crash sound effect (Sound Ideas / Hanna-Barbera library samples) | The infamous "your computer just died in a head-on collision" chime |
| Performa/Power Mac 6200, 6300 | 3-note brass fanfare with drums + cymbals (Roland U-20) | Played before the screen lights up on these machines |
| PCI Power Macs (7500, 7600, 8500, 9500, beige G3, G3 AIO, PowerBook 2400/3400/G3) | Popping and glass-shattering | These machines do not display a Sad Mac icon — chime only |
| iMac (1998) and later | (no chime — beep codes only) | See Mac Beep Codes for the post-Sad-Mac diagnostic indicator scheme |
Stephen Hackett's 512 Pixels page hosts high-quality recordings of each variant. The decoder gadget on this wiki can play each chime in your browser via the Web Audio API for direct A/B comparison without leaving the page.
Slow chimes (24-bit-ROM cadence)
editA specific symptom worth noting: on machines with 24-bit-clean ROMs (notably the IIcx and original II), a ROM-checksum failure plays the chime at roughly half its normal tempo. 32-bit-clean ROMs (IIci, SE/30 later revisions, IIfx) play the chime at normal tempo regardless of which test failed. If you hear a slow chime on a IIcx or II, jump straight to checking the ROM chips — see the IIcx worked example above.
SE/30 Specific Issues: Simasimac
editA common SE/30 failure mode is known as Simasimac (Japanese shima-shima "stripes" + Mac), in which the screen shows alternating vertical stripes at power-on with no chime and no Sad Mac. Because the CPU never reaches the point of checksumming ROM and drawing the failure screen, this is not technically a Sad Mac fault at all — it is a more upstream failure.
The cause is almost always corroded traces and via stitching from leaking surface-mount electrolytic capacitors on the logic board, particularly around the GLU ASIC and the ROM SIMM socket. Common diagnostic steps:
- Remove the logic board and inspect under good light — even small green/black halos around capacitor pads are evidence of leakage.
- Wash the board (deionised water + isopropanol, ultrasonic if available), let it dry thoroughly.
- Recap with quality polymer or tantalum replacements; the original wet-electrolytic capacitors are at end-of-life on every SE/30 still in existence.
- Reseat the ROM SIMM with contacts cleaned with isopropanol and a fibreglass pen.
- Check continuity from the 68030 data lines through the GLU to the ROM SIMM socket. Lifted vias here are common.
If the machine then chimes but produces a Sad Mac, treat it as a normal expanded-format diagnosis from that point.
For full procedure see Macintosh SE/30 Recap Guide and Macintosh SE/30 Troubleshooting.
Deliberately Triggering a Sad Mac
editA Sad Mac can be generated on purpose for testing the display path or capturing a screenshot:
- Press the Programmer's Switch (NMI button) before the Happy Mac appears. This produces a Sad Mac with subcode 000D ("NMI — normal indication"). On machines without a fitted programmer's switch (most never had one installed by default),
Cmd-Powershortly after the startup chime produces the same effect. - On the PowerBook 540c and several other PowerBooks,
Cmd-Powerpressed before the boot screen plays the Chimes of Death (sometimes at a strange speed) without drawing a Sad Mac.
These are not failure indications and should not be confused with a real diagnostic event.
Additional Notes
edit- Always cross-reference Sad Mac codes with physical inspection. On any compact Mac old enough to have wet-electrolytic SMD capacitors (SE/30, Classic II, Color Classic, LC family, Quadra 605, etc.), capacitor leakage is the single most common cause of any of the codes on this page and will produce false positives across multiple subsystems.
- Use caution with bench diagnostics. Running the full SCSI test (
*T008800010000) on a board with a damaged NCR 5380 can latch the bus and require a power cycle. Some tests can also write to PRAM — clear PRAM (Cmd-Opt-P-R) after extensive testing. - The codes are register dumps, not error names. If a published table contradicts what you're seeing, prefer first the value you can read off the machine, then the Test Manager output over serial, and only then any third-party table. Apple's own Developer Notes for the Portable are known to contain transcription errors that have propagated to most reference sites.
- The format does not directly apply to New World ROM machines. The original iMac (1998) and later use audio beep codes (Mac Beep Codes) rather than Sad Mac. PCI Power Macs sit in an awkward middle ground — they play the "glass shattering" Chime of Death but draw no icon.
See also
edit- Macintosh SE/30 Troubleshooting
- Macintosh SE/30 Recap Guide
- Macintosh Quadra 605 Troubleshooting
- Macintosh Plus Troubleshooting
- Sad Mac Decoder — interactive lookup tool on this wiki
- Old World ROM
References
edit- Apple Inc., "Macintosh: 'Sad Macintosh' Error Code Meaning", Apple Technical Information Library article TA46376 (archived).
- Apple Inc., Macintosh Portable Developer Notes, Apple Computer, 1989.
- Apple Inc., Macintosh Technical Notes HW-09, HW-10, HW-25, Inside Macintosh Vol. III appendix.
- Pina, Larry. Macintosh Repair & Upgrade Secrets. Hayden Books, 1990. ISBN 0-672-48452-0.
- Pina, Larry. The Dead Mac Scrolls. Peachpit Press, 1992. ISBN 0-938151-71-0.
- Fouladian, Reza et al. "Sad Mac Errors", MacintoshPortable.info (community-corrected Portable codes).
- Hackett, Stephen. "Mac Chimes of Death", 512 Pixels, 15 April 2021 (audio archive).
- "Macintosh startup", Wikipedia.
- 68kMLA forum thread, "Macintosh IIcx slow chimes of death; diagnostic return code 0000FFFF0001", May 2025 (IIcx ROM-chip-isolation walkthrough using Test Manager).
- myoldmac.net SadMac error codes for 68k Macintosh.
- Mac 512 Sad Mac codes mirror (compact-Mac short format).