TITLE
    Macintosh: "Sad Macintosh" Error Code Meaning
Article ID:
Created:
Modified:
7748
7/2/91
8/17/00

TOPIC

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


DISCUSSION

    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 a different mechanism for reporting 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 that appears with the "sad Macintosh" is not as important as when it occurs. If the Macintosh can start up from a different system disk then 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."

    If the "sad Macintosh" appears immediately when you turn on the computer, that usually suggests an issue with the logic board or memory. Try starting up 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 indicating 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 sub code. 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 Code
    Sub Code
    1=ROM test failed Meaningless
    2=Memory test--bus subtest identifies bad chips
    3=Memory test--byte write identifies bad chips
    4=Memory test--Mod3 test identifies bad chips
    5=Memory test--address uniqueness identifies bad chips


    Single Chip Identification
    Data Bit
    Location
    Sub Code Bits
    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


    Class Code
    Sub Code
    Sub Code Meaning
    F=Exception
    0001
    Bus error
    0002
    Address error
    0003
    Illegal Instruction
    0004
    Zero divide
    0005
    Check instruction
    0006
    Traps instruction
    0007
    Privilege violation
    0008
    Trace
    0009
    Line 1010
    000A
    Line 1111
    000B
    Other exception
    000C
    Nothing
    000D
    NMI (normal indication)
    0064
    Couldn'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 power for testing and to support the 32-bit world. Generally, the same codes are used for 68000 exceptions as the Macintosh but they are displayed differently.

    Traditional

    The traditional Macintosh error codes are displayed in hexadecimal notation like this: 0F0003

    Where F indicates an exception occurred, and 3 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 a power on test failure. The ZZZZZZZZ code contains additional failure information to help track down the fault.


    YYYY Error Codes
    Error Code
    Meaning
    $0001
    The ROM checksum test failed. Ignore the Z field.
    $0002
    The first small chunk of RAM to be tested 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

    $0003
    The 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.
    $0004
    The RAM test failed while testing bank A. The Z field indicates which bits failed as in code $0002.
    $0005
    The RAM External addressing test failed. The Z field indicates a failed address line.
    $0006
    Unable to properly address the VIA1 chip. The Z field is not applicable.
    $0007
    Unable to properly address the VIA2 chip (Macintosh II only). The Z field is not applicable.
    $0008
    Unable to properly access the Front Desk Bus. The Z field is not applicable.
    $0009
    Unable to properly access the MMU. The Z field is not applicable.
    $000A
    Unable to properly access NuBus. The Z field is not applicable.
    $000B
    Unable to properly access the SCSI Chip. The Z field is not applicable.
    $000C
    Unable to properly access the IWM chip. The Z field is not applicable.
    $000D
    Unable to properly access the SCC Chip. The Z field is not applicable.
    $000E
    Failed Data Bus test. The Z field indicated the bad bit(s) as a 32-bit mask for bits 0-31. This may indicate either a bad SIMM or data bus failure.
    $000F
    Reserved for Macintosh compatibility.
    $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 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 divide by zero
    $1A FPCP underflow
    $1B FPCP operand error
    $1C FPCP overflow
    $1D FPCP signalling 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 that are run to ensure that the fundamental operations of the computer are working properly. If any of those tests fail, a "sad Macintosh" icon appears on the screen with a code below that describes what failure occurred. 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 actually the contents of the two CPU data registers D6 and D7. The upper word (upper 4 hexadecimal digits, in this case 0546) of D7 contains miscellaneous flags that are used by the start-up test routines and are unimportant to just about everybody 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 the minor error and usually contains additional information about the failure, something like a failed bit mask.

    SAD MAC CODE BROKEN DOWN

    Test Flags Major Error

    0546 0203

    Minor Error Minor Error

    0000 B6DB

    The major error is further broken into the upper byte that contains the number of any 68000 exception that occurred ($00 meaning that no exception occurred), and the lower byte that usually contains the test that was being 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 can be 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 specifically how they are used in the Macintosh Portable.

    Major Error Codes
    Error Code
    Meaning
    $01
    ROM test failed. Minor error code is $FFFF, which means nothing.
    $02
    RAM test failed. Minor error code indicates which RAM bits failed.
    $05
    RAM external addressing test failed. Minor error code indicates a failed address line.
    $06
    Unable to properly access the VIA 1 chip during VIA initialization. Minor error code not applicable.
    $08
    Data bus test at location eight bytes off of top of memory failed. Minor error code indicates the bad bits as a 16bit mask for bits1500. This may indicate either a bad RAM chip or data bus failure.
    $0B
    Unable to properly access the SCSI chip. Minor error code not applicable.
    $0C
    Unable to properly access the IWM (or SWIM) chip. Minor error code not applicable.
    $0D
    Not applicable to Macintosh Portable. Unable to properly access the SCC chip. Minor error code not applicable.
    $0E
    Data bus test at location $0 failed. Minor error code indicates the bad bits as a 16bit mask for bits 1500. This may indicate either a bad RAM chip or data bus failure.
    $10
    Video RAM test failed. Minor error code indicates which RAM bits failed.
    $11
    Video RAM addressing test failed. Minor error code contains the following:

    upper word = failed address (16-bit)

    msb of lower word = data written

    lsb of lower word = data read

    Data value written also indicates which address line is being actively tested.

    $12
    Deleted
    $13
    Deleted
    $14
    Power Manager processor was unable to turn on all the power to the board. This may have been 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.
    $15
    Power Manager failed its self-test. 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)

    $16
    A failure occurred while trying to size and configure the RAM. Minor error code not applicable.

    Minor Error Codes; Power Manager Processor Failures

    If a communication breakdown occurs during communication with the Power Manager, 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 Code
    Meaning
    $CD38 Power Manager was never ready to start handshake.
    $CD37 Timed out waiting for reply to initial handshake.
    $CD36 During a send, Power Manager did not start a handshake.
    $CD35 During a send, Power Manager did not finish a handshake.
    $CD34 During a receive, Power Manager did not start a handshake.
    $CD33 During a receive, 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 Codes
    Meaning
    $01
    ROM checksum test.
    $02
    RAM test.
    $05
    RAM addressing test.
    $06
    VIA 1 chip access.
    $08
    Data bus test at top of memory.
    $0B
    SCSI chip access.
    $0C
    IWM (or SWIM) chip access.
    $0D
    No applicable to Macintosh Portable; SCC chip access.
    $0E
    Data bus test at location $0.
    $10
    Video RAM test.
    $11
    Video RAM addressing test.
    $14
    Power Manager board power on.
    $15
    Power Manager self-test.
    $16
    RAM sizing.


    Power Manager Communication Error Codes
    Error Code
    Meaning
    $CD38
    Initial handshake.
    $CD37
    No reply to initial handshake.
    $CD36
    During send, no start of a handshake.
    $CD35
    During a send, no finish of a handshake.
    $CD34
    During a receive, no start of a handshake.
    $CD33
    During a receive, no finish of a handshake.


    CPU Exception Codes
    (as used by the startup tests)
    Error Code
    Meaning
    $0100
    Bus error exception code.
    $0200
    Address error exception code.
    $0300
    Illegal error exception code.
    $0400
    Zero divide error exception code.
    $0500
    Check inst error exception code.
    $0600
    cpTrapcc,Trapcc,TrapV exception code.
    $0700
    Privilege violation exception code.
    $0800
    Trace exception code.
    $0900
    Line A exception code.
    $0A00
    Line F exception code.
    $0B00
    Unassigned exception code.
    $0C00
    CP protocol violation.
    $0D00
    Format exception.
    $0E00
    Spurious interrupt exception code.
    $0F00
    Trap inst exception code.
    $1000
    Interrupt level 1.
    $1100
    Interrupt level 2.
    $1200
    Interrupt level 3.
    $1300
    Interrupt level 4.
    $1400
    Interrupt level 5.
    $1500
    Interrupt level 6.
    $1600
    Interrupt level 7.


Document Information
Product Area: Apple Software
Category: Mac OS Error Codes & Messages
Sub Category: General Topics

Copyright © 2000 Apple Computer, Inc. All rights reserved.