Jump to content

Sad Mac Error Codes

From RetroTechCollection
Sad Mac
Sad Mac with error code

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:

Test Manager flag bits (D7 bits 16–31)
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 codes: Macintosh 128K, 512K, 512Ke, Plus
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.

Single-chip identification: 128K, 512K and 512Ke
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:

68000 / 68020 / 68030 exception subcodes
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 numbers: SE, SE/30, Classic, Classic II
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:

Common SE/30 readings
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:

Additional test numbers: Mac II family
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:

ROM checksum minor codes on four-chip machines
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]
Portable critical tests
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:

Power Manager handshake 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]
Portable non-critical tests
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:

Exception codes ORed into the major code
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:

  1. *T<TT>0001<minor> runs test TT once and returns its result on the next line. For example, *T000400010000 runs test 04 (RAM Bank A) once.
  2. *T000100010000 runs 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]
Chimes of Death by machine family
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]
Simasimac issue
"Simasimac" vertical stripes

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:

  1. Remove the logic board and inspect it under good light. Even small green or black halos around capacitor pads are evidence of leakage.
  2. Wash the board (deionised water and isopropanol, ultrasonic if available) and let it dry thoroughly.
  3. Recap with polymer or tantalum replacements; the original wet electrolytic capacitors are past the end of their life on every SE/30.
  4. Reseat the ROM SIMM with contacts cleaned with isopropanol and a fibreglass pen.
  5. 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-Power shortly after the startup chime produces the same effect.
  • On the PowerBook 540c and several other PowerBooks, Cmd-Power pressed 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]

References

[edit | edit source]
  1. ↑ 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.
  2. ↑ 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. ↑ 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. ↑ 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. ↑ 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. ↑ 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'".
  7. ↑ Andy Hertzfeld, "Boot Beep", Folklore.org, https://folklore.org/Boot_Beep.html (retrieved 2026-10-01).
  8. ↑ 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. ↑ 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]