Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main Page
Community Portal
Village Pump
Recent Changes
Upload File
Help
Help Contents
Editing Guide
Repair Guide Template
Sandbox
Browse Wiki
๐ Service Manuals
๐ Schematics
๐ Apple
๐ฎ Nintendo
๐ Sega
โก Troubleshooting
Search
Search
Appearance
Create account
Log in
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Editing
Sad Mac Error Codes
(section)
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Understanding Sad Mac Error Codes == A Sad Mac is the visual half of a ROM-level startup test failure. On every machine it has the same structural meaning: the boot code in ROM runs a fixed sequence of tests on the CPU, RAM, support chips, and (on later models) the Power Manager and VRAM. If any test fails, or if an unexpected 68000-family exception occurs before the operating system has loaded enough to display a bomb dialog, the ROM jumps to a small routine that draws the Sad Mac and prints the contents of CPU registers '''D6''' (minor / specifics) and '''D7''' (major / which test, plus flags). Two formats exist: * '''Short format''' โ used on the [[Macintosh 128K|128K]], [[Macintosh 512K|512K]], [[Macintosh 512Ke|512Ke]] and [[Macintosh Plus|Plus]]. A single six-digit line, '''YYXXXX''', where '''YY''' is the two-digit class code and '''XXXX''' is the four-digit subcode. * '''Expanded format''' โ used from the [[Macintosh SE|SE]] onwards (SE, SE/30, Classic, Classic II, Color Classic, LC family, Performa, Mac II family, Centris, Quadra, and the NuBus Power Macs). Two lines of eight hex digits each, displayed as: : Line 1 (D7) โ '''FFFFTTEE''' where ''FFFF'' = test-manager flags, ''TT'' = test number, ''EE'' = exception number (ORed in if an unexpected exception interrupted a test). : Line 2 (D6) โ minor error / additional information (failing bit mask, address-line XOR, stack pointer, etc.). When an exception occurs ''during'' a test the exception number is logically ORed into the lower word of the major code. So if an address error (0200) hits during the [[#RAM Test on Mac II|RAM Bank A test (test 03)]], the major code reads '''0203''', not '''0200''' or '''0003''' alone โ you read it as "address error while running test 3". This OR-encoding is the single most important thing to know about decoding expanded codes; without it most published code tables look contradictory. === Test Manager flags (upper word of D7) === On expanded-format machines the upper four hex digits of line 1 are not random โ they are the live state of the Test Manager. Each bit has a meaning: {| class="wikitable" |+ Test Manager flag bits (D7 bits 16โ31) ! Bit !! Flag !! Meaning when set |- | 16 || Message queued || A diagnostic message is pending in the serial output queue |- | 17 || SCC INITed || The SCC serial controller has been initialised |- | 18 || No-sleep || Auto-sleep is inhibited (Portable / PowerBook) |- | 19 || Star received || A {{code|*}} command character has been received over the serial diagnostic port โ Test Manager is active |- | 20 || ASCII input || Test Manager expects ASCII command input (clear = hexadecimal) |- | 21 || Echo || Echo received characters back over the serial port |- | 22 || Timer || Timer-based testing enabled |- | 23 || Newline || Emit CR/LF after every Test Manager response |- | 24 || Unexpected exception || An unexpected exception was caught โ exception code is ORed into the test number |- | 25 || Programmer's key || The Programmer's Switch (NMI button) was pressed |- | 26 || VIA Test || A VIA test is currently asserting itself on the bus |- | 27 || Bus errors OK || Bus errors are expected (used during chip-probe tests) |- | 28 || Stop on error || Halt on the first error rather than continuing |- | 29 || Loop on error || Loop the failing test indefinitely (for scope/logic-analyser work) |- | 30 || Store in PRAM || Persist test results to PRAM |- | 31 || Boot after test || Continue booting after diagnostics complete |} In practice, when looking at a Sad Mac code in the wild, the upper word usually reads '''0000''' (no flags set, normal boot), '''0001''' (a serial message had been queued before the failure), or a value with bit 24 (0x0100) and/or bit 25 (0x0200) set if the failure was exception-driven or operator-induced.
Summary:
Please note that all contributions to RetroTechCollection may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
RetroTechCollection:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
Sad Mac Error Codes
(section)
Add topic