UPDATE! :)

Gary Rice generously released the Black & Bleu - The Ultimate Mac Error Codes Utility on Macintosh Garden. This is an excellent resource for making sense of the Sad Mac codes, more than what is listed below.

Apple's overview below is a good guide to introducing yourself and getting basic ideas about the Sad Mac codes. Then, the Black & Bleu program for 68k and PPC Macs running System 7.0.1 through 9.2.2, as well as OS X 10.2, can provide a more detailed list and details of the Sad Mac codes as well as the error codes on vintage Macintosh computers.

---

Retrieved from support.apple.com on August 3, 2022.

I applied minor grammar and spelling corrections. The original printout has been attached herein as a PDF file.

This article has been preserved here on Tinker Different in case the original Internet link breaks, as this is more comprehensive than other Sad Mac Errors posted on the Internet some years back. There are paper copies of a much more comprehensive list of Sad Mac error codes somewhere.

If you find one, please let me @retr01 know. Thank you. :)


Macintosh: "Sad Macintosh" Error Code Meaning​

This article lists and explains the error codes accompanying the "sad Macintosh" icon on the screen when a Macintosh computer does not start up.

This article has been archived and is no longer updated by Apple.



Products Affected

The "sad Macintosh" icon and its associated error codes exist only in older Macintosh computers. Newer models, such as those with Universal Serial Bus (USB) or Open Firmware, use different mechanisms to report such failures. For more information on newer systems, please see the following articles:

Article 58183: "Power-On Self-Test Beep Definition - Part 1"
Article 58442: "Power-On Self-Test Beep Definition - Part 2"
Article 95036: "Power Mac G4: Power-On Self Test"


Overview

The particular error code with the "sad Macintosh" is not as important as when it occurs. If the Macintosh can start up from a different system disk, the fault is probably with the system software on the other disk. System faults are usually identified when you get a "happy Macintosh" face and the "Welcome to Macintosh" screen before the "sad Macintosh." Suppose the "sad Macintosh" appears immediately when you turn on the computer usually suggests an issue with the logic board or memory. Try starting from a floppy disk before assuming it is a hardware fault.


Sad Mac Error Codes Description

On the Original ROMs (Macintosh 128K 512kK 512kK, Plus):

When you press the interrupt button on the side of your Macintosh when starting up, a sad Mac icon on the screen with '0F000D' and some bits cycling under the icon indicate it is performing a memory test.

This numeric code is in two parts:
  • The first two characters are the class code. The class code tells what part of the diagnostic program found the error.
  • The second four are the subcode. The sub-class code tells what the error was. In the case of a bad RAM chip, the sub-class identifies the bad chip (this was very helpful to homegrown upgraders).
Class CodeSub Code
1=ROM test failedMeaningless
2=Memory test--bus subtestidentifies bad chips
3=Memory test--byte writeidentifies bad chips
4=Memory test--Mod3 testidentifies bad chips
5=Memory test--address uniquenessidentifies bad chips

Single Chip Identification
Data BitLocationSub Code Bits
0F50001
1F60002
2F70004
3F80008
4F90010
5F100020
6F110040
7F120080
8G50100
9G60200
10G70400
11G80800
12G91000
13G102000
14G114000
15G128000

Class CodeSub CodeSub Code Meaning
F=Exception0001Bus error
0002Address error
0003Illegal Instruction
0004Zero divide
0005Check Instruction
0006Traps instruction
0007Privilege violation
0008Trace
0009Line 1010
000ALine 1111
000BOther exception
000CNothing
000DNMI (normal indication)
0064Couldn't read System File into memory


Macintosh SE and Macintosh II ROMs

The "sad Macintosh" error codes for Macintosh SE and Macintosh II computers were changed to incorporate additional testing power and support the 32-bit world. Generally, 68000 exceptions are the same codes as the Macintosh but are displayed differently.

Traditional

The traditional Macintosh error codes are displayed in hexadecimal notation like this: 0F0003
Where F indicates an exception and three indicates an illegal instruction occurred. On the Macintosh SE and Macintosh II, the display would appear:

0000000F
00000003

Power On

The power-on error codes have the following format:

XXXXYYYY
ZZZZZZZZ

Where XXXX is internal test manager state information (ignore this), YYYY contains codes that indicate either an exception code or the test number for power on test failure. The ZZZZZZZZ code contains additional failure information to help track down the fault.

YYYY Error Codes
Error CodeMeaning
$0001The ROM checksum test failed. Ignore the Z field.
$0002The first small chunk of RAM failed. The Z field indicates which RAM Bit(s) failed. This small chunk of RAM is always in Bank B. Using $AABBCCDD as a guide:
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
$0003The RAM test failed while testing bank B after passing the chunk tested for code $0002. The Z field indicates which bits failed as in code $0002.
$0004The RAM test failed while testing bank A. The Z field indicates which bits failed as in code $0002.
$0005The RAM External addressing test failed. The Z field indicates a failed address line.
$0006Unable to properly address the VIA1 chip. The Z field is not applicable.
$0007Unable to properly address the VIA2 chip (Macintosh II only). The Z field is not applicable.
$0008Unable to properly access the Front Desk Bus. The Z field is not applicable.
$0009Unable to properly access the MMU. The Z field is not applicable.
$000AUnable to properly access NuBus. The Z field is not applicable.
$000BUnable to properly access the SCSI Chip. The Z field is not applicable.
$000CUnable to properly access the IWM chip. The Z field is not applicable.
$000DUnable to properly access the SCC Chip. The Z field is not applicable.
$000EThe Data Bus test failed. The Z field indicated the bad bit(s) as a 32-bit mask for bits 0-31, either a bad SIMM or a data bus failure.
$000FReserved for Macintosh compatibility.
$FFxxA 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 unassigned
$0C CP protocol violation
$0D Format exception
$0E Spurious interrupt
$0F Trap 015 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 unordered condition
$18 FPCP inexact result
$19 FPCP divided 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


Macintosh Portable ROMs

The startup code in the Macintosh Portable contains a series of startup tests to ensure that the fundamental operations of the computer are working correctly. A "sad Macintosh" icon with code describing the failure appears on the screen. Here is a typical example of a Sad Mac display with an error code below it:

SAD MAC CODE

05460203 = (D7.L)
000OB6DB = (D6.L)

The two codes are the contents of the two CPU data registers, D6 and D7. The upper word (upper four hexadecimal digits, in this case, 0546) of D7 contains various flags used by the startup test routines. It is unimportant to everyone except a few test engineers within Apple. The lower word of D7 is the major error code. The major error code identifies the general area the test routines were in when a failure occurred. D6 is a minor error and usually contains additional information about the failure, like a failed bit mask.

SAD MAC CODE BROKEN DOWN

Test Flags Major Error
0546 0203

Minor Error Minor Error
0000 B6DB

Herein, the major error is broken into the upper byte that contains the number of any 68000 exceptions that occurred ($00, meaning that no exception occurred) and the lower byte that usually has the test run at the time of failure. If an unexpected exception occurred during a particular test, then the exception number is logically ORed into the major error code. This way, both the exception that occurred as well as the test that was running decoded from the major error code:

SAD MAC CODE FURTHER BROKEN DOWN

68000 Exception Test Code
02 03

In this example, the code says that an address error exception ($0200) occurred during the RAM test for Bank A ($03); $0200 ORed with $03 = $0203.

Major Error Codes

Below is a brief description of the various test codes that might appear in the major error code:

Important: Some of these codes may mean slightly different things in Macintosh models other than the Macintosh Portable. These descriptions describe the error codes in the Macintosh Portable.

Major Error Codes
Error CodeMeaning
$01ROM test failed. The minor error code is $FFFF, which means nothing.
$02RAM test failed. A minor error code indicates which RAM bits failed.
$05RAM external addressing test failed. A minor error code indicates a failed address line.
$06Unable to properly access the VIA 1 chip during VIA initialization. Minor error code not applicable.
$08The data bus test at location eight bytes off the memory's top failed. Minor error code indicates the bad bits as a 16-bit mask for bits 1500, indicating either a bad RAM chip or a data bus failure.
$0BUnable to properly access the SCSI chip. Minor error code not applicable.
$0CUnable to properly access the IWM (or SWIM) chip. Minor error code not applicable.
$0DNot applicable to Macintosh Portable. Unable to properly access the SCC chip. Minor error code not applicable.
$0EData bus test at location $0 failed. Minor error code indicates the bad bits as a 16-bit mask for 1500 bits, indicating either a bad RAM chip or a data bus failure.
$10Video RAM test failed. A minor error code indicates which RAM bits failed.
$11Video RAM addressing test failed. The minor error code contains the following:
Upper word = failed address (16-bit)
MSB of lower word = data written
LSB of lower word = data read
The data value written also indicates which address line was tested.
$12Deleted
$13Deleted
$14The power Manager processor could not turn on all the power to the board. This may be due to a communication error with the Power Manager. If so, the minor error code contains a Power Manager error code, explained in the next section.
$15Power Manager failed its self-test. The minor error code contains the following:
MSW = error status of transmission to power manager.
LSW = Power Manager self-test results (0 means it passed, non-zero means it failed)
$16A failure occurred while trying to size and configure the RAM. Minor error code not applicable.

Minor Error Codes; Power Manager Processor Failures
Suppose a communication breakdown occurs during communication with the Power Manager. In that case, the following error codes appear somewhere in the minor error code (usually in the lower half of the code, but not always):

Minor Error Codes
Error CodeMeaning
$CD38The power Manager was never ready to start a handshake.
$CD37Timed out waiting for a reply to the initial handshake.
$CD36During a send, the Power Manager did not start a handshake.
$CD35During a send, the Power Manager did not finish a handshake.
$CD34During a receive, the Power Manager did not start a handshake.
$CD33During a receive, the Power Manager did not finish a handshake.

Diagnostic Code Summary
Below is a summarized version of the Sad Mac error codes:

Diagnostic Code Summary
Test CodesMeaning
$01ROM checksum test.
$02RAM test.
$05RAM addressing test.
$06VIA 1 chip access.
$08Data bus test at the top of memory.
$0BSCSI chip access.
$0CIWM (or SWIM) chip access.
$0DNot applicable to Macintosh Portable; SCC chip access.
$0EData bus test at location $0.
$10Video RAM test.
$11Video RAM addressing test.
$14Power Manager board power-on.
$15Power Manager self-test.
$16RAM sizing.

Power Manager Communication Error Codes
Error CodeMeaning
$CD38Initial handshake.
$CD37No reply to the initial handshake.
$CD36During sending, no start of a handshake.
$CD35During a send, no finish of a handshake.
$CD34During a receive, no start of a handshake.
$CD33During a receive, no finish of a handshake.

CPU Exception Codes
(as used by the startup tests)
Error CodeMeaning
$0100Bus error exception code.
$0200Address error exception code.
$0300Illegal error exception code.
$0400Zero divide error exception code.
$0500Check inst error exception code.
$0600cpTrapcc,Trapcc,TrapV exception code.
$0700Privilege violation exception code.
$0800Trace exception code.
$0900Line A exception code.
$0A00Line F exception code.
$0B00Unassigned exception code.
$0C00CP protocol violation.
$0D00Format exception.
$0E00Spurious interrupt exception code.
$0F00Trap inst exception code.
$1000Interrupt level 1.
$1100Interrupt level 2.
$1200Interrupt level 3.
$1300Interrupt level 4.
$1400Interrupt level 5.
$1500Interrupt level 6.
$1600Interrupt level 7.

Published Date: Feb 18, 2012
Author
retr01
Downloads
122
Views
5,422
First release
Last update
Rating
0.00 star(s) 0 ratings

More resources from retr01