Sad Mac Error Codes

The "Sad Mac" is a visual indicator displayed by vintage Macintosh computers (128K, 512K, Plus, SE, and SE/30) when a hardware failure prevents successful startup. Sad Mac error codes are valuable diagnostic tools that pinpoint specific hardware issues.
Understanding Sad Mac Error Codes
When you encounter a Sad Mac, it will show an error code in hexadecimal format. This code typically consists of two parts:
- Class Code (First two digits): Identifies the diagnostic test or CPU exception that failed.
- Subcode (Last four digits): Gives specific details about the error, such as identifying a faulty RAM chip.
Macintosh 128K, 512K, 512Ke, and Plus
The original ROM-based Macintosh computers (128K, 512K, 512Ke, Plus) use the following Sad Mac format:
| Class Code | Meaning | Subcode | Description |
|---|---|---|---|
| 01 | ROM Test Failed | Meaningless | |
| 02 | Memory Test โ Bus Subtest | Identifies specific bad RAM chip | |
| 03 | Memory Test โ Byte Write | Identifies specific bad RAM chips | |
| 04 | Memory testโMod3 test | Identifies specific bad RAM chips | |
| 05 | Memory testโAddress uniqueness | Identifies specific bad RAM chips | |
| 0F | Exception (CPU Error) | Identifies specific exception (e.g., illegal instruction, zero divide) |
Single RAM Chip Identification
RAM errors provide a bitmask to identify the faulty chip:
| Data Bit | Location | Subcode Bits |
|---|---|---|
| 0 | F5 | 0001 |
| 1 | F6 | 0002 |
| 2 | F7 | 0004 |
| 3 | F8 | 0008 |
| 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 |
| 12 | G10 | 2000 |
| 13 | G11 | 4000 |
| 14 | G12 | 8000 |
Common Exception Codes (Class 0F)
| Subcode | Meaning |
|---|---|
| 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 Exception |
| 000A | Line 1111 Exception |
| 000B | Other Exception |
| 000C | Nothing (reserved) |
| 000D | NMI (Normal indication) |
| 0064 | Couldn't read System File into memory |
Macintosh SE and SE/30 Expanded Codes
Mac SE and SE/30 use an enhanced two-line Sad Mac code format for more detailed diagnostics:
| YYYY Code | Meaning |
|---|---|
| 0001 | ROM checksum failed |
| 0002 | Small RAM chunk failed (Bank B) |
| 0003 | RAM Bank B failed |
| 0004 | RAM Bank A test failed |
| 0005 | External addressing test failed |
| 0006 | Unable to address VIA1 |
| 000B | Unable to access SCSI chip |
| 000C | Unable to access IWM (floppy controller) |
| 000D | Unable to access SCC (serial ports) |
| 000E | Data bus test failure |
Diagnostic Serial Console for Macintosh Plus, SE, and SE/30
The Macintosh SE and SE/30 feature a built-in diagnostic console accessible via a serial connection, which can be used for detailed hardware troubleshooting. Originally designed for use with specialized Apple diagnostic tools, this diagnostic mode can also be accessed via a standard serial connection using software such as PuTTY or similar serial terminal programs.
Connecting to the Diagnostic Console
Connect your Macintosh to another computer using a serial cable:
- Set your serial terminal (such as PuTTY) to the following:
- Baud Rate: 9600
- Data bits: 8
- Stop bits: 1
- Parity: None
- Once connected, restart your Macintosh while holding the interrupt switch or issuing an interrupt command to enter diagnostic mode.
Commands & Tests
Below are detailed descriptions and commands for running specific diagnostic tests:
| Command | Test Description |
|---|---|
*T |
Runs preprogrammed diagnostic tests. Use with specific codes to run targeted tests. |
| *T0000 | No operation (null test) |
| *T0001 | ROM Checksum โ Verifies ROM integrity. Errors indicate corrupted or damaged ROM. |
| *T0002 | Small RAM Chunk Test โ Checks initial RAM area for immediate failures. |
| *T0003 | Full RAM Test (Bank B) โ Tests full Bank B RAM after small chunk passes. |
| *T0004 | Full RAM Test (Bank A) โ Checks the second RAM bank thoroughly. |
| *T0005 | Address Line Test โ Verifies RAM addressing and unique addressing capability. |
| *T0006 | VIA1 Access Test โ Checks the proper operation of VIA1 chip. |
| *T0007 | VIA2 Access Test (Mac II only) โ Checks VIA2 chip operation. |
| *T0008 | Front Desk Bus Test โ Verifies access to Front Desk Bus components. |
| *T0008 | MMU Access Test โ Tests access to the Memory Management Unit. |
| *T0009 | NuBus Access Test โ Ensures NuBus communication is functional. |
| *T000A | SCSI Chip Test โ Confirms proper operation of SCSI controller. |
| *T000B | IWM Chip Test โ Verifies floppy drive controller functionality. |
| *T000C | SCC Chip Test โ Tests Serial Communications Controller for proper operation. |
| *T000D | Data Bus Test โ Validates data bus functionality, identifying bit faults. |
Custom Non-Critical Tests
Non-critical tests use a different format:
Format: *TXXY
- XX = Hexadecimal test number
- Y = Number of repetitions
Example: *T841 runs test 0x84 once.
| Hex Code | Test Description |
|---|---|
| 80 | Video RAM Test โ Tests VRAM operation (Macintosh II). |
| 81 | Video Interface Test โ Checks functionality of video hardware interface. |
| 82 | VIA Test โ Comprehensive VIA chips test. |
| 83 | SCSI General Test โ Tests general SCSI functionality. |
| 84-86 | SCC (Serial Communications Controller) Tests โ Checks serial communications. |
| 87 | SCSI General Test โ General SCSI device communication test. |
| 88 | Sound Test โ Verifies audio hardware function. |
Interpreting Response Codes
The console returns hexadecimal response codes:
| Response Code | Meaning |
|---|---|
020004030000 |
Test-specific failure indication (consult specific test for details). |
020004030000 |
Data Bus Error accessing RAM. |
| 0F000D | NMI button pressed during boot (normal indication). |
RAM Chip Identification (Subcode Explanation)
For memory tests, subcodes identify specific faulty chips:
| Data Bit | Chip Location | Subcode Bits (Hexadecimal) |
|---|---|---|
| 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 |
Important Notes
- Not all diagnostic tests work on every model; compatibility varies with ROM version.
- SE/30 and other 256k ROM Macs do not support certain diagnostic commands listed here.
SE/30 Specific Issues: Simasimac
A common SE/30 issue is known as "Simasimac," where vertical stripes appear at startup, Itโs often due to leaking capacitors on the logic board causing circuit corrosion. The fix is to thoroughly clean the board, repair any corroded traces (especially around the ROM SIMM and GLU chips), and recap the board. No chime with vertical lines basically means the CPU never even verified the ROM โ so likely the ROM isnโt being read properly (dirty ROM SIMM contacts or damaged traces to it are common causes).

Chimes of Death
Macintosh II and SE series play distinctive "Chimes of Death" indicating hardware issues at startup, in addition to the Sad Mac icon.
Additional Notes
- Always cross-reference Sad Mac codes with physical inspection (capacitor leakage, corrosion, etc.).
- Use diagnostic tools cautiously; incorrect use may damage hardware further.