Sad Mac Error Codes

Original research by RetroTechCollection.The per-model test tables, the OR-encoding rule, the Test Manager flag-bit list and the worked examples below were decoded by this wiki's contributors from machines on the bench and from the codes those machines produce. This section records work carried out and measurements taken by this wiki's contributors rather than information drawn from a published source. It is offered as first-hand documentation — no external citation exists because the work is the source. Corrections and independent confirmation are welcome.
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. With the Chimes of Death, these codes are the first thing to read when a compact or Mac II-family machine will not boot.
The same format is used by every Old World 68k Macintosh and by the early NuBus Power Macintosh models, which still displayed a Sad Mac; beep codes replaced it in 1998. The sections below also cover the Chimes of Death heard on every Mac from the Macintosh II to the last pre-Open Firmware machines, the SE/30 Simasimac failure mode, and the serial-port Test Manager, which runs individual diagnostics over a null-modem cable.
Try the Sad Mac Decoder
[edit | edit source]The Sad Mac Decoder looks up any of these codes, shows the failing RAM chip on a board diagram and plays each Chime of Death. It runs as a gadget, enabled in your preferences.
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, highlights the failing RAM chip on a 128K / 512K board diagram for class-02 through class-05 errors, and for a Plus names the pair of SIMMs to check.
Reading the codes
[edit | edit source]A 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 code: the specifics) and D7 (major code: which test, plus flags).
There are two formats. The short format is used on the 128K, 512K, 512Ke and Plus: a single six-digit line, YYXXXX, where YY is the two-digit class code and XXXX the four-digit subcode.
The expanded format is 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). It has two lines of eight hex digits:
- Line 1 (D7) reads FFFFEETT, where FFFF is the Test Manager flags, EE the exception number (ORed in if an unexpected exception interrupted a test) and TT the test number. The exception occupies the upper byte of the lower word and the test number the lower byte, so the last two digits are the test and the two before them the exception.
- Line 2 (D6) is the minor error code with additional information: a failing bit mask, an address-line XOR, the stack pointer and so on.
When an exception occurs during a test, the exception number is logically ORed into the lower word of the major code. If an address error (0200) hits during the RAM Bank A test, which is test 04, the lower word reads 0204, not 0200 or 0004 alone: "address error while running test 4". Likewise 00000304 is "illegal instruction (03) during RAM Bank A (04)".
Without this OR-encoding rule, most published code tables for the expanded format appear to contradict one another.
Test Manager flags (upper word of D7)
[edit | edit source]On expanded-format machines the upper four hex digits of line 1 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; the 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 |
On a machine that has failed during a normal boot, the upper word usually reads 0000 (no flags set), 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)
[edit | edit source]These 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 | Bitmask of failing data bits, which identifies the chip or SIMM pair (see below) |
| 03 | RAM: byte-write subtest | Bitmask of failing data bits |
| 04 | RAM: modulo-3 pattern | Bitmask of failing data bits |
| 05 | RAM: address uniqueness | Bitmask of failing data bits |
| 0F | Exception before OS loaded | Subcode names the 68000 exception |
If the Programmer's Switch (NMI button) is pressed at boot the machine displays 0F000D, a Sad Mac with the "normal" NMI subcode. This is sometimes used to trigger a Sad Mac on purpose when testing the display path.
RAM chip and SIMM identification
[edit | edit source]For class codes 02–05 the subcode is a bitmask of the failing data lines. On the 128K, 512K and 512Ke each bit corresponds to one physical RAM chip in the 16-chip RAM bank. A single failing chip lights a single bit and several bits mean several chips. A whole byte lane (0x00FF or 0xFF00) usually points to a failed buffer or an address-line problem, not eight 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 |
The table does not apply to the Macintosh Plus. Its RAM SIMMs are in two rows, SIMMs 1 and 2 and SIMMs 3 and 4; SIMMs 1 and 3 carry data bits 0–7 and SIMMs 2 and 4 carry bits 8–15, so on a Plus the subcode points to a pair of SIMMs.[1]
Worked example
[edit | edit source]A Macintosh Plus displays:
020080
Class 02 is the RAM bus subtest. Subcode 0080 sets bit 7, so data line D7 is bad. On a 128K or 512K the table puts D7 at chip position F12 on the logic board. The Plus has its RAM on four 30-pin SIMMs instead, so the chip positions do not apply. Larry Pina's The Dead Mac Scrolls sends a Plus with a failing bit in the low byte of a RAM code (030001 to 030080) to SIMMs 1 and 3, and one with a failing bit in the high byte (030100 to 038000) to SIMMs 2 and 4; his "F5-9 and G5-9" are the logic-board grid locations of the SIMM sockets.[2] Subcode 0080 is in the low byte, so check SIMMs 1 and 3.[1]
Exception codes (class 0F)
[edit | edit source]When 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 instead of causing a bus error, so 0001 on those machines usually means a hardware fault, not 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 the vectors live), or, on a 68000, of code intended for a 68020 or later. |
| 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. |
Apple's Technical Information Library notes that on the Mac II and later the 1700–1F00 block of exception codes is used for FPU and PMMU exceptions; the full list is in the Portable section below.
Macintosh SE, SE/30, Classic, and Classic II (expanded format)
[edit | edit source]The SE introduced the expanded two-line format. The same format is used by the SE/30, Classic, and Classic II, although the SE/30 also runs Mac II-family tests.
The line-1 test number for these machines is drawn from this list (the lower byte of D7, the TT field of FFFFEETT):
| 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 |
Common readings on the SE/30:
| Line 1 / line 2 | Meaning and first action |
|---|---|
| 00000001 / 00000000 | ROM checksum. Often a dirty or oxidised ROM SIMM; reseat it before recapping. |
| 00000004 / xxxxxxxx | RAM Bank A failed. The 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) and inspect the traces under the RAM SIMM sockets. |
If the SE/30 shows the Simasimac vertical stripes instead of a Sad Mac, the ROM was never checksummed; see that section below.
Macintosh II Family (II, IIx, IIcx, IIci, IIfx, IIsi, IIvi, IIvx)
[edit | edit source]The Macintosh II family uses the expanded two-line format with a broader test set than the SE. The SE/30, IIx and IIcx share one 256 KB ROM image (checksum 97221136), which is why a IIcx will boot with an SE/30 ROM SIMM in its ROM SIMM socket.[3][4][5] The IIci has its own 512 KB ROM (checksum 368CADFE), which is 32-bit clean.[3][4][5]
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
[edit | edit source]The II, IIx, IIcx, SE/30, and several other models carry their ROM as four physical chips (often labelled MH, ML, LH and LL, for the two bytes of each of the upper and lower words). When the ROM checksum test (test 01) fails on these machines, the minor code identifies the failing ROM:
| Minor code | Meaning |
|---|---|
| 0000FFFF (all bits set) | At least one ROM mismatched and the chip could not be identified. Typically printed before per-chip diagnostics have run, for example 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 and 4) |
Several failing chips, or more often an address-line problem upstream that makes all the chips look bad at once |
To find which ROM chip is bad on a IIcx or IIci (four ROM chips on the logic board) or an SE/30 (four chips on its ROM SIMM),[3][4] use the Test Manager below: the ROM checksum test, test 01 (*T000100010000), returns 1, 2, 4 or 8 to identify the chip.
Worked example: IIcx, slow Chimes of Death, code 0000FFFF 00000001
[edit | edit source]A 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
The line 1 upper word, 0000, means no Test Manager flags are set. The lower word, FFFF, is the all-bits indicator for a failed ROM checksum. The line 2 minor code, 1, is the first ROM chip or a generic ROM mismatch.
The slow chime cadence points to a 24-bit-clean ROM (which is what the IIcx ships with) failing checksum; 32-bit-clean ROMs (IIci, IIfx) tend to fail at normal tempo. The SE/30 has the same 32-bit-dirty 256 KB ROM as the IIcx.[6][5] Connecting a null-modem cable to the modem port and entering Test Manager confirms which of the four soldered ROMs is at fault (UH7, UH9, UH11 and UH13 on the IIcx; labels vary by board revision). 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)
[edit | edit source]The 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 display a Sad Mac much less often than the compact and II-family Macs, for two reasons. First, the ROMs are more permissive: a soft fail on a non-critical test lets 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 one does appear, read the codes against 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.
Macintosh Portable diagnostic codes
[edit | edit source]The Macintosh Portable (M5120 / M5126) uses the expanded format with a different test numbering scheme and adds a set of Power Manager handshake codes. Several codes printed in Apple's developer note for the Portable are wrong; the community reference at macintoshportable.info corrects them.
Critical tests (will halt boot)
[edit | edit source]| 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)
[edit | edit source]The Portable, PowerBook 100 and later PowerBooks share a Power Manager IC that communicates with the main CPU over a custom serial handshake. Failures of the handshake appear as one of these codes:
| Code | Meaning |
|---|---|
| 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 is the usual "dead Power Manager" code: typically a Macintosh Portable with a failed PMGR PCB battery (the small PCB-mounted backup cell, not the main lead-acid pack) or corrupt PMGR firmware.
Non-critical tests (logged but allow boot)
[edit | edit source]| Test (TT) | Name |
|---|---|
| 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 (not run; always logs a failure, which is ignored) |
Extended exception list (68020 / 68030 / FPU / PMMU)
[edit | edit source]These exception codes are ORed into the major code on Mac II family and Portable machines, by the same OR-encoding rule described above:
| Code | Exception |
|---|---|
| 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 (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 | edit source]- 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. Two are the most useful for board-level diagnosis:
*T<TT>0001<minor>runs testTTonce and returns its result on the next line. For example,*T000400010000runs test 04 (RAM Bank A) once.*T000100010000runs test 01, the ROM checksum. On a IIcx, IIci or SE/30, whose ROM is four physical chips, the result narrows the failure to one of them (0001,0002,0004,0008). Test 04 is RAM Bank A and does not test ROM; the two commands differ only in those two digits and are easy to transpose.
Apple's MacTest, MacTest Pro and Apple Personal Diagnostics suites use the same interface. Some test commands, such as the full SCSI test, hang a machine whose SCSI chip does not work; be ready to power-cycle.
Chimes of Death
[edit | edit source]Every 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 to Plus) display the Sad Mac with no sound. The chimes can be heard across the room without reading the screen, and on a machine that fails before generating any video the chime is the only indication.
By family
[edit | edit source]| Family | Chime | Notes |
|---|---|---|
| 128K, 512K, 512Ke, Plus | (none) | Silent Sad Mac. The startup beep plays only once the startup diagnostics have passed; Andy Hertzfeld wrote it from an algorithm suggested by Charlie Kellner, a square wave in the sound buffer smoothed by repeated averaging.[7] |
| SE, SE/30 | Synthesised guitar arpeggio, upward major | First model family to play a death chime. The SE/30 has an Apple Sound Chip; the SE has none and makes its sound with its general logic and a Sony sound IC.[8] |
| Macintosh II | Upward major arpeggio with a sharp attack | Distinctive among the II family for its short, percussive opening |
| IIcx | Same arpeggio with a short click at the start | |
| 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 |
| Quadra, Centris (non-AV) | Same as LC family | Most of the Quadra line uses the LC chime[9] |
| Quadra/Centris 660AV, Quadra 840AV | Abstract, synth-pad-like sound | Unlike the other chimes[9] |
| Power Macintosh 6100/7100/8100, Performa 6100, Workgroup Server 6150/8150/9150 | A sound like a car crash[9] | |
| Performa/Power Mac 6200, 6300 | 3-note brass fanfare with drums and cymbals | 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 play the chime but do not display a Sad Mac icon |
| 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 recordings of each variant. The Sad Mac Decoder synthesises each chime in the browser for comparison.
Slow chimes (24-bit-ROM cadence)
[edit | edit source]On machines with 24-bit-clean ROMs (the IIcx and original II), a ROM checksum failure plays the chime at roughly half its normal tempo. 32-bit-clean ROMs (IIci, IIfx) play the chime at normal tempo regardless of which test failed.[4] The SE/30's stock ROM is the 32-bit-dirty 256 KB ROM it shares with the IIx and IIcx.[6][5] A slow chime on a IIcx or II points straight to the ROM chips; see the IIcx worked example above.
SE/30 specific issues: Simasimac
[edit | edit source]
A common SE/30 failure is known as Simasimac (Japanese shima-shima, "stripes", + Mac): the screen shows alternating vertical stripes at power-on, with no chime and no Sad Mac. The CPU never reaches the point of checksumming the ROM and drawing the failure screen, so this is an earlier failure than a Sad Mac fault.
The cause is almost always traces and vias corroded by leaking surface-mount electrolytic capacitors on the logic board, particularly around the GLU ASIC and the ROM SIMM socket. Diagnostic steps:
- Remove the logic board and inspect it under good light. Even small green or black halos around capacitor pads are evidence of leakage.
- Wash the board (deionised water and isopropanol, ultrasonic if available) and let it dry thoroughly.
- Recap with polymer or tantalum replacements; the original wet electrolytic capacitors are past the end of their life on every SE/30.
- 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
[edit | edit source]A 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.
Neither is a failure indication.
Additional notes
[edit | edit source]- Check the board as well as the code. On any Mac old enough to have wet electrolytic SMD capacitors (SE/30, Classic II, Color Classic, LC family, Quadra 605 and others), capacitor leakage is the most common cause of any of these codes and can produce false results across several subsystems.
- Running the full SCSI test (
*T008800010000) on a board with a damaged NCR 5380 can latch the bus and need a power cycle. Some tests 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 the machine, trust first the value read off the screen, then the Test Manager output over serial, and only then a third-party table. Apple's Developer Notes for the Portable contain transcription errors that have been copied to most reference sites.
- New World ROM machines do not use this format. The original iMac (1998) and later use beep codes. PCI Power Macs play the "glass shattering" Chime of Death but draw no icon.
See also
[edit | edit source]- Macintosh SE/30 Troubleshooting
- Macintosh SE/30 Recap Guide
- Macintosh Quadra 605 Troubleshooting
- Macintosh Plus Troubleshooting
- Sad Mac Decoder: interactive lookup
- Apple Serial Number Decoder: reads the plant, date and model from an Apple serial number
- Old World ROM
- OS 8.1 Emergency Handbook 1998: Apple's owner-level booklet. Its start-up symptom table sends a Sad Macintosh icon through these checks in order: external equipment connected and switched on, the correct start-up disk, SCSI ID conflicts, extension conflicts, PRAM reset, hard disk test and repair, and system software reinstallation. Two other entries are hardware checks: reseat memory and expansion cards for an unusual start-up sound, and replace the backup battery for a machine that will not start at all. It gives no battery voltage, part number or threshold.
- MacsBug Reference and Debugging Guide: Apple's developer manual for MacsBug 6.2. Chapter 7, Debugging Strategies, covers separating a reproducible software crash from a hardware fault before opening the case; chapter 4 covers the Macintosh memory map and low-memory globals.
References
[edit | edit source]- ↑ 1.0 1.1 Apple Computer, Guide to the Macintosh Family Hardware, 2nd ed. (Addison-Wesley, 1990), chapter 5, p. 197 (row 1 is SIMMs 1 and 2, row 2 is SIMMs 3 and 4) and Table 5-4, pp. 200–201 (RDQ0–RDQ7 on SIMM 1 and SIMM 3, RDQ8–RDQ15 on SIMM 2 and SIMM 4), PDF pp. 236 and 239–240 of File:Apple Guide to the Macintosh Family Hardware 2nd Edition 1990.pdf.
- ↑ Larry Pina, The Dead Mac Scrolls (Peachpit Press, 1992), pp. 115–116 (PDF pp. 115–116 of File:The Dead Mac Scrolls 1992.pdf). Macintosh Plus: codes 030001 to 030080, "Check/replace SIMMs 1 and 3"; codes 030100 to 038000, "Check/replace SIMMs 2 and 4"; both "at locations F5-9 and G5-9" on the logic board.
- ↑ 3.0 3.1 3.2 Apple Computer, Guide to the Macintosh Family Hardware, 2nd ed., chapter 5, "ROM configurations", p. 232 (PDF p. 271 of File:Apple Guide to the Macintosh Family Hardware 2nd Edition 1990.pdf): the II and IIcx have four 512 Kbit ROM ICs (256 KB) and the IIcx also has a ROM SIMM socket; the SE/30 and IIx have a 64-pin ROM SIMM; the IIci has four 1 Mbit ROM ICs on the logic board (512 KB) plus a 64-pin ROM SIMM socket; the IIfx has one ROM SIMM of 512 KB.
- ↑ 4.0 4.1 4.2 4.3 "Mac SE/30 with Upgraded ROM", Big Mess o' Wires, https://www.bigmessowires.com/mac-se30-with-upgraded-rom/ (Gamba's notes, retrieved 2026-10-01), "ROM SIMM Info": TattleTech 2.58 readings of the SE/30 ROM SIMM (262,144 bytes, ROM version $178, "ROM is 32 Bit Clean = No", checksum $97221136), the IIci ROMs (524,288 bytes, version $67C, 32-bit clean, checksum $368CADFE) and the IIfx ROM SIMM (32-bit clean).
- ↑ 5.0 5.1 5.2 5.3 "Macintosh ROM Archive", Internet Archive item mac_rom_archive_-_as_of_8-19-2011 (2011), https://archive.org/details/mac_rom_archive_-_as_of_8-19-2011: the dumps are listed by checksum, including "97221136 - Mac II FDHD & IIx & IIcx.ROM" and "368CADFE - Mac IIci.ROM".
- ↑ 6.0 6.1 "Mac ROM-inator II", Big Mess o' Wires, https://www.bigmessowires.com/mac-rom-inator-ii/ (retrieved 2026-10-01): "Some older Macintosh models like the SE/30, IIx, and IIcx have stock ROMs that are 'dirty'".
- ↑ Andy Hertzfeld, "Boot Beep", Folklore.org, https://folklore.org/Boot_Beep.html (retrieved 2026-10-01).
- ↑ Apple Computer, Guide to the Macintosh Family Hardware, 2nd ed., chapter 2, "Sound circuits", p. 71 (PDF p. 110 of File:Apple Guide to the Macintosh Family Hardware 2nd Edition 1990.pdf): the SE and earlier compact Macintosh computers make sound with their general logic and a Sony sound IC; the SE/30, Portable and Macintosh II family use the Apple Sound Chip.
- ↑ 9.0 9.1 9.2 Stephen Hackett, "Mac Chimes of Death", 512 Pixels, 15 April 2021, https://512pixels.net/2021/04/mac-chimes-of-death/ (retrieved 2026-10-01).
Sources consulted
[edit | edit source]- 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.
- Lu, Cary. The Apple Macintosh Book, 2nd ed. Microsoft Press, 1985. Chapter 29, "Diagnostic Test Messages", p. 394 (compact-Mac class codes and the F5-G12 memory chip location table).
- 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).