Sad Mac Error Codes
Sad Mac Error Codes
The "Sad Mac" icon appears if the Mac crashes while booting, or if you hit
the interrupt button during the boot process. Beneath the icon is a
numeric code, in hexadecimal.
64K ROMs
On the original Mac, this numeric code is in two parts: the first two hex
digits are the class code and the second four are the subclass code. The class
code tells what part of the diagnostic program found the error, and the
subclass code identifies the error.
yy zzzz
where yy contains codes that indicate either an exception code or the test
number for a power-on test failure and zzzz contains additional failure
information to help track down the problem; it may be a System Error code
or it may identify a bad RAM chip.
Class Code Description Meaning of SubCode
01 ROM checksum incorrect (un defined)
02 RAM Bus test failed identity of
03 RAM Byte write test failed suspected
04 RAM Pattern test/mode test failed bad RAM chip(s)
05 RAM Address uniqueness test failed (see below)
0F Software related error System Error (1=bus error etc)
For RAM failures, the SubCode is interpreted as a hex word; bits 0-15
correspond to RAM chips 0-15; a bit set indicates a suspected bad RAM
chip. This is summarized in the following table:
SubCode bad chip Location SubCode bad chip Location
0001 0 F5 0100 8 G5
0002 1 F6 0200 9 G6
0004 2 F7 0400 10 G7
0008 3 F8 0800 11 G8
0010 4 F9 1000 12 G9
0020 5 F10 2000 13 G10
0040 6 F11 4000 14 G11
0080 7 F12 8000 15 G12
The subcodes are additive and can indicate more than one bad chip. For
example, if both chips 3 and 6 are bad, the subcode would be 0x0048
(0x0040 + 0x0008).
The sub codes for software related errors (class code 0x0F) are the same
as the System Bomb alert IDs and are displayed as a 4 digit hex number.
For example, if you try to boot a disk with a bad file map, you may get a
System Error 27 which would appear as a Sad Mac code 0F 001B.
Post-64K ROMs
On later versions of the Mac ROMs, two 32-bit long words are used in lieu
of the 1-byte class code and and 2-byte subcode. The new format, displayed
below the Sad Mac Icon, looks like:
xxxxyyyy
zzzzzzzz
where xxxx is internal test manager state information and yyyy contains
codes that indicate either an exception code or the test number for a
power-on test failure. The zzzzzzzz code contains additional failure
information to help track down the problem; for example, it may contain a
System Error code.
The 64K ROM error codes still apply, but the high byte is moved to the low
byte of the first line (i.e., into the YYYY field). For instance, a 64K ROM
error of 0F0003 is now shown as 0000000F 00000003.
yyyy Error Codes
Hex Code Meaning
0001 The ROM checksum test failed. Ignore the Z field
0002 The first small chunk of RAM tested failed. The Z field indicates
which RAM bit(s) failed. This small chunk of RAM is always in Bank
B. Example: AABBCCDD
AA = 8-bit mask for bits 31-24
BB = 8-bit mask for bits 23-16
CC = 8-bit mask for bits 15-8
DD = 8-bit mask for bits 7-0
0003 The RAM test failed while testing Bank B, after passing the above
chunk. The Z field indicates which bits failed, as above.
0004 The RAM test failed while testing Bank A. The Z field is as above.
0005 The RAM external- addressing test failed. The Z field indicates a
failed address line.
0006 Error addressing the VIA1 chip. Ignore the Z field.
0007 Error addressing the VIA2 chip (Mac II only). Ignore the Z field.
0008 Error addressing the ADB. Ignore the Z field.
0009 Error accessing the MMU. Ignore the Z field.
000A Error accessing NuBus. Ignore the Z field.
000B Error accessing the SCSI chip. Ignore the Z field.
000C Error accessing the IWM chip. Ignore the Z field.
000D Error accessing the SCC chip. Ignore the Z field.
000E Failed data bus test. The Z field indicates the bad bit(s) as a
32-bit mask for bits 0-31. This error may indicate either a bad
SIMM or data bus failure.
000F Reserved for Macintosh compatibility. The Z field may be a
System Error code.
FFxx A 680xx exception occurred during power-on testing. The xx
indicates the exception:
01 Bus Error
02 Address Error
03 Illegal Instruction Error
04 Zero Divide
05 Check Instruction
06 cpTrapCC, Trap CC, Trap V
07 Privilege Violation
08 Trace
09 Line A
0A Line F
0B (unas signed)
0C CP Protocol Violation
0D Format Exception
0E Spurious Interrupt
0F Trap 0-15 Exception
10 Interrupt Level 1
11 Interrupt Level 2
12 Interrupt Level 3
13 Interrupt Level 4
14 Interrupt Level 5
15 Interrupt Level 6
16 Interrupt Level 7
17 FPCP BRA or SET on Un ordered Condition
18 FPCP Inexact Result
19 FPCP Divide by Zero
1A FPCP Underflow
1B FPCP Operand Error
1C FPCP Overflow
1D FPCP Signaling NAN
1E PMMU Configuration
1F PMMU Illegal Operation
20 PMMU Access Level Violation