Did Classic Mac have this error message thrown in the Steve Jobs movie
April 8, 2016 5:48 AM   Subscribe

Was watching Aaron Sorkin's Steve Jobs movie, which opens with a 1984 Mac crashing with the message, "Unimplemented trap." I Googled and could only find references as far back as OS 7 (1991) so I was wondering if this was dramatic license?
posted by johngoren to Computers & Internet (6 answers total) 2 users marked this as a favorite
 
One thing to note is that back then, we didn't have a web to ask questions on, so a lot of that is lost to sources that aren't yet digitized.

I seem to remember "unimplemented trap" in the system 6.8 days. That's about as far back as I go for helping fix things.
posted by advicepig at 6:22 AM on April 8, 2016


Best answer: Traps go all the way back to the Motorola 68000 and System 1.

Macintosh Toolbox:
The original Motorola 68000 family implementation of the Macintosh operating system executes system calls using that processor's illegal opcode exception handling mechanism. Motorola specified that instructions beginning with 1111 and 1010 would never be used in future 68000 family processors, thus freeing them for use as such by an operating system. As 1111 was reserved for use by co-processors such as the 68881 FPU, Apple chose 1010, which is the binary equivalent of the decimal number ten, as the prefix for operating system calls. Ten is represented in hexadecimal as A, and handling illegal instructions is known as trapping, so these special instructions were called A-traps.[1] When the processor encounters such an instruction, it transfers control to the operating system, which looks up the appropriate task and performs it. There were two advantages to this mechanism:
It results in compact programs. Only two bytes are taken by every operating system access, in contrast to four or six when using regular jump instructions.
The table used to look up the appropriate function is stored in RAM. Then, even if the underlying code was stored in ROM, it could still be overridden (patched) by replacing the ROM memory address with a RAM address.
Calling a trap code that isn't in the trap table resulted in a unimplemented trap crash.

MacTech, Vol 1, Issue 1 (1984):
Our first step is to define the trap macros for the toolbox and operating system routines. This is done by setting the toolbox routine name equal to a trap word constant using the “DC.W” directive. All intructions found in memory that begin with $A are unimplemented instructions that cause the 68000 to “trap” to a special routine to handle the exception. Apple has taken advantage of this arrangement to extend the 68000 instruction set by a whole series of toolbox routines that are called as a result of this “1010” trap.
This old MacTech article, Sleuthing the New System File, goes into more detail about traps as they existed circa System 4.1.
posted by zamboni at 6:47 AM on April 8, 2016 [5 favorites]


Calling a trap code that isn't in the trap table resulted in a unimplemented trap crash.

I've been poking around, and haven't found any direct evidence of that exact message, though it makes sense that it would happen.
posted by zamboni at 7:00 AM on April 8, 2016


Response by poster: Thanks for your great answer!!! Finding it in 68000 opcode features is legit enough. I thought maybe it was just something Sorkin had seen on his PowerBook in the '90s.
posted by johngoren at 7:03 AM on April 8, 2016


I don't remember that one --- to my mind, the canonical generic "something has gone wrong and we are not going to tell you what" message, from the Macintosh SE finder up through the last days of OS 9, was the infamous "Application 'unknown' has unexpectedly quit, because an error of type 1 has occurred."
posted by jackbishop at 9:51 AM on April 8, 2016


I found an actual screenshot of the unimplemented trap message from Ted Landau's Sad Macs. Bombs, and Other Disasters (Google Books link).
posted by dweingart at 10:04 AM on April 8, 2016 [2 favorites]


« Older "Great to see you again, Nancy! No, wait, Shona....   |   Wedding vendors with non-disparagement clauses Newer »
This thread is closed to new comments.