Date: Wed, 15 Mar 89 11:15 EST From: (Chris Iverson) Subject: 'Sad Mac' codes defined (long) To: info-mac@sumex-aim.stanford.edu The following is exerpted from an article that originally appeared in "Apple Direct" magazine. > On the old ROMS: When you hit the interrupt button on the side of your Macintosh during the boot process, you should get a sad Mac icon with 0F 000D and some dots cycling under the icon to indicate that the Macintosh is performing a memory test. \ This numeric code is in two parts: The firsttwo characters are the "class code" and the next four are the "subclass code". The class code tells what part of the diagnostic program found the error, and the subclass code tells what the error is. In the case of a bad RAM chip, the subclass identifies the bad chip. > On the new ROMs: The sad Mac error codes are changed to incorporate additional power for testing and to support a 32-bit world. Generally, the same codes are used...but they are displayed differently. The traditional Mac error codes are dislayed as follows: 0F0003 Where "F" indicates an exception occurred, and "3" indicates an illegal instruction occurred. On the SE and II family, the display would appear: 0000000F 00000003 The new power-on error codes have the following format: XXXXYYYY ZZZZZZZZ Where XXXX is the 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 info to help track down the problem. YYYY error codes: $0001: ROM checksum test failed. Ignore Z field. $0002: First small chunk of RAM tested failed. Z field indicates which RAM bit(s) failed. This 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: RAM test failed while testing bank B, after passing the chunk tested for $0002. Z field indicates which bits failed, as in code $0002. $0004: RAM test failed while testing bank A. Z field same as for $0002. $0005: RAM external addressing test failed. Z field indicates the failed address line. $0006: Unable to properly address the VIA1 chip. Ignore Z field. $0007: Unable to properly address the VIA2 chip (Mac II only). Ignore Z field. $0008: Unable to properly address the Front Desk Bus. Ignore Z field. $0009: Unable to properly address the MMU. Ignore Z field. $000A: Unable to properly address NuBus. Ignore Z field. $000B: Unable to properly address SCSI chip. Ignore Z field. $000C: Unable to properly address the IWM chip. Ignore Z field. $000D: Unable to properly address the SCC chip. Ignore Z field. $000E: Failed Data Bus test. Z field indicates bad bit(s) as a 32-bit mask for bits 0-31. This error may indicate a bad SIMM or data bus failure. $000F: Reserved for Macintosh compatibility. $FFxx: A 680__ 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 Privelege Violation $08 Trace $09 Line A\ $0A Line F (the backslash on the previous line is a typo) $0B Unassigned $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 orSET 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 There you have it folks: Everything you always wanted to know about sad Mac error codes, but didn't want to be bored to death reading about. I hope this is helpful. Chris Iverson F&M Tech Support Disclaimer: I'm just a grunt, don't take me seriously...