<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.retrotechcollection.com/index.php?action=history&amp;feed=atom&amp;title=Macintosh_Toolbox</id>
	<title>Macintosh Toolbox - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.retrotechcollection.com/index.php?action=history&amp;feed=atom&amp;title=Macintosh_Toolbox"/>
	<link rel="alternate" type="text/html" href="https://wiki.retrotechcollection.com/index.php?title=Macintosh_Toolbox&amp;action=history"/>
	<updated>2026-06-14T00:47:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.retrotechcollection.com/index.php?title=Macintosh_Toolbox&amp;diff=4764&amp;oldid=prev</id>
		<title>Josh: /* See Also */</title>
		<link rel="alternate" type="text/html" href="https://wiki.retrotechcollection.com/index.php?title=Macintosh_Toolbox&amp;diff=4764&amp;oldid=prev"/>
		<updated>2025-08-30T19:57:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;See Also&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:57, 30 August 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l619&quot;&gt;Line 619:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 619:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== See Also ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== See Also ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Old World ROM]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Macintosh &lt;/ins&gt;Old World ROM]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Apple Vintage Computers]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Apple Vintage Computers]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key retrotec_mw14890-mwqp_:diff:1.41:old-4760:rev-4764:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.retrotechcollection.com/index.php?title=Macintosh_Toolbox&amp;diff=4760&amp;oldid=prev</id>
		<title>Josh: /* ROM Organization */</title>
		<link rel="alternate" type="text/html" href="https://wiki.retrotechcollection.com/index.php?title=Macintosh_Toolbox&amp;diff=4760&amp;oldid=prev"/>
		<updated>2025-08-30T19:33:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;ROM Organization&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:33, 30 August 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot;&gt;Line 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 18:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The Toolbox resides in ROM alongside the Mac OS kernel routines, occupying distinct memory regions based on the Macintosh model:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The Toolbox resides in ROM alongside the Mac OS kernel routines, occupying distinct memory regions based on the Macintosh model:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&quot;wikitable&quot; style=&quot;width:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;80&lt;/del&gt;%; text-align:center;&quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&quot;wikitable&quot; style=&quot;width:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;70&lt;/ins&gt;%; text-align:center;&quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|+ &amp;#039;&amp;#039;&amp;#039;Toolbox ROM Evolution&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|+ &amp;#039;&amp;#039;&amp;#039;Toolbox ROM Evolution&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Model !! ROM Size !! Toolbox Start !! Major Components&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Model !! ROM Size !! Toolbox Start !! Major Components&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key retrotec_mw14890-mwqp_:diff:1.41:old-4756:rev-4760:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.retrotechcollection.com/index.php?title=Macintosh_Toolbox&amp;diff=4756&amp;oldid=prev</id>
		<title>Josh at 19:25, 30 August 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.retrotechcollection.com/index.php?title=Macintosh_Toolbox&amp;diff=4756&amp;oldid=prev"/>
		<updated>2025-08-30T19:25:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:25, 30 August 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Infobox software&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Infobox software&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name         = Macintosh Toolbox&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| name         = Macintosh Toolbox&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| logo         = &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| developer    = Apple Computer, Inc.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| developer    = Apple Computer, Inc.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| type         = System ROM firmware / API framework&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| type         = System ROM firmware / API framework&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key retrotec_mw14890-mwqp_:diff:1.41:old-4754:rev-4756:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.retrotechcollection.com/index.php?title=Macintosh_Toolbox&amp;diff=4754&amp;oldid=prev</id>
		<title>Josh: Created page with &quot;{{Infobox software | name         = Macintosh Toolbox | logo         =  | developer    = Apple Computer, Inc. | type         = System ROM firmware / API framework | released     = January 24, 1984 | platform     = Motorola 68000, PowerPC | size         = 64 KB (128K/512K), 256 KB (Plus/SE), 1-4 MB (later models) | language     = 68000 assembly, later C | status       = Deprecated (replaced by Carbon/Cocoa) | license      = Proprietary }}  The &#039;&#039;&#039;Macintosh Toolbox&#039;&#039;&#039; is a...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.retrotechcollection.com/index.php?title=Macintosh_Toolbox&amp;diff=4754&amp;oldid=prev"/>
		<updated>2025-08-30T19:22:53Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Infobox software | name         = Macintosh Toolbox | logo         =  | developer    = Apple Computer, Inc. | type         = System ROM firmware / API framework | released     = January 24, 1984 | platform     = Motorola 68000, PowerPC | size         = 64 KB (128K/512K), 256 KB (Plus/SE), 1-4 MB (later models) | language     = 68000 assembly, later C | status       = Deprecated (replaced by Carbon/Cocoa) | license      = Proprietary }}  The &amp;#039;&amp;#039;&amp;#039;Macintosh Toolbox&amp;#039;&amp;#039;&amp;#039; is a...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox software&lt;br /&gt;
| name         = Macintosh Toolbox&lt;br /&gt;
| logo         = &lt;br /&gt;
| developer    = Apple Computer, Inc.&lt;br /&gt;
| type         = System ROM firmware / API framework&lt;br /&gt;
| released     = January 24, 1984&lt;br /&gt;
| platform     = Motorola 68000, PowerPC&lt;br /&gt;
| size         = 64 KB (128K/512K), 256 KB (Plus/SE), 1-4 MB (later models)&lt;br /&gt;
| language     = 68000 assembly, later C&lt;br /&gt;
| status       = Deprecated (replaced by Carbon/Cocoa)&lt;br /&gt;
| license      = Proprietary&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Macintosh Toolbox&amp;#039;&amp;#039;&amp;#039; is a comprehensive collection of system-level firmware routines and application programming interfaces (APIs) embedded in the ROM of classic Macintosh computers from 1984 through the Mac OS 9 era. Originally occupying 64 KB of ROM space in the Macintosh 128K, the Toolbox provides the foundational graphical user interface, event handling, resource management, and hardware abstraction layer that defined the Macintosh user experience for over 15 years.&lt;br /&gt;
&lt;br /&gt;
== Architecture and Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== ROM Organization ===&lt;br /&gt;
The Toolbox resides in ROM alongside the Mac OS kernel routines, occupying distinct memory regions based on the Macintosh model:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:80%; text-align:center;&amp;quot;&lt;br /&gt;
|+ &amp;#039;&amp;#039;&amp;#039;Toolbox ROM Evolution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
! Model !! ROM Size !! Toolbox Start !! Major Components&lt;br /&gt;
|-&lt;br /&gt;
| Macintosh 128K/512K || 64 KB || $400000 || QuickDraw 1.0, Core Managers&lt;br /&gt;
|-&lt;br /&gt;
| Macintosh Plus || 128 KB || $400000 || SCSI Manager, Hierarchical File System&lt;br /&gt;
|-&lt;br /&gt;
| Macintosh SE || 256 KB || $400000 || ADB Manager, improved QuickDraw&lt;br /&gt;
|-&lt;br /&gt;
| Macintosh II || 256 KB || $40800000 || Color QuickDraw, Palette Manager&lt;br /&gt;
|-&lt;br /&gt;
| Macintosh IIci || 512 KB || $40800000 || 32-bit QuickDraw, Sound Manager&lt;br /&gt;
|-&lt;br /&gt;
| Power Macintosh || 4 MB || $40000000 || PowerPC native code, 68k emulator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ROM is divided into functional modules, each containing related managers and their dispatch tables. Early ROMs were hand-optimized 68000 assembly code to fit within severe space constraints—the entire GUI framework, graphics engine, and system utilities compressed into just 64 KB.&lt;br /&gt;
&lt;br /&gt;
=== Memory Layout and Low Memory Globals ===&lt;br /&gt;
The Toolbox maintains critical system state in &amp;#039;&amp;#039;&amp;#039;low memory globals&amp;#039;&amp;#039;&amp;#039; located at fixed addresses from $000-$1FFF:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$000-$0FF&amp;#039;&amp;#039;&amp;#039;: Exception vectors (68000 processor)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$100-$1FF&amp;#039;&amp;#039;&amp;#039;: System globals (SysZone, ApplZone, TheZone)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$200-$2FF&amp;#039;&amp;#039;&amp;#039;: QuickDraw globals (ThePort, White, Black, Gray)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$300-$3FF&amp;#039;&amp;#039;&amp;#039;: Toolbox dispatch table base&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$400-$7FF&amp;#039;&amp;#039;&amp;#039;: System and application parameter blocks&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$800-$8FF&amp;#039;&amp;#039;&amp;#039;: VIA hardware registers mirror&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$900-$BFF&amp;#039;&amp;#039;&amp;#039;: Screen buffer parameters&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$C00-$DFF&amp;#039;&amp;#039;&amp;#039;: Serial and disk driver globals&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$E00-$FFF&amp;#039;&amp;#039;&amp;#039;: Interrupt handler workspace&lt;br /&gt;
&lt;br /&gt;
These globals are directly accessed by both ROM routines and applications, creating the tight integration characteristic of classic Mac OS but also contributing to its fragility.&lt;br /&gt;
&lt;br /&gt;
== Core Component Managers ==&lt;br /&gt;
&lt;br /&gt;
=== QuickDraw Graphics Engine ===&lt;br /&gt;
QuickDraw forms the graphics foundation of the Toolbox, providing coordinate-independent 2D drawing with automatic clipping and sophisticated region algebra:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Data Structures:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;GrafPort&amp;#039;&amp;#039;&amp;#039;: 108-byte structure defining drawing environment&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Region&amp;#039;&amp;#039;&amp;#039;: Variable-size scanline-compressed shape representation  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pattern&amp;#039;&amp;#039;&amp;#039;: 8×8 bit pattern for fills and pen drawing&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;BitMap&amp;#039;&amp;#039;&amp;#039;: Pixel data with rowBytes and bounds rectangle&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Core Drawing Primitives:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Line drawing&amp;#039;&amp;#039;&amp;#039;: MoveTo, LineTo with fractional pen positioning&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Shape primitives&amp;#039;&amp;#039;&amp;#039;: FrameRect, PaintRect, EraseRect, InvertRect, FillRect&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Region operations&amp;#039;&amp;#039;&amp;#039;: UnionRgn, DiffRgn, XorRgn, SectRgn with arbitrary complexity&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Text rendering&amp;#039;&amp;#039;&amp;#039;: DrawChar, DrawString with built-in Chicago font&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;BitBlt operations&amp;#039;&amp;#039;&amp;#039;: CopyBits with transfer modes (srcCopy, srcOr, srcXor, srcBic, notSrcCopy, notSrcOr, notSrcXor, notSrcBic)&lt;br /&gt;
&lt;br /&gt;
QuickDraw maintains a complex clipping architecture through the intersection of:&lt;br /&gt;
# Port clipping region (clipRgn)&lt;br /&gt;
# Visible region (visRgn) &lt;br /&gt;
# Current picture clipping if recording&lt;br /&gt;
&lt;br /&gt;
=== Window Manager ===&lt;br /&gt;
The Window Manager handles the window layer abstraction, maintaining a linked list of WindowRecords in front-to-back order:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WindowRecord Structure (156 bytes):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TYPE WindowRecord = RECORD&lt;br /&gt;
    port:           GrafPort;       {QuickDraw port (108 bytes)}&lt;br /&gt;
    windowKind:     INTEGER;        {Application or system window}&lt;br /&gt;
    visible:        BOOLEAN;        {Window visibility flag}&lt;br /&gt;
    hilited:        BOOLEAN;        {Title bar highlight state}&lt;br /&gt;
    goAwayFlag:     BOOLEAN;        {Close box present}&lt;br /&gt;
    spareFlag:      BOOLEAN;        {Reserved}&lt;br /&gt;
    strucRgn:       RgnHandle;      {Structure region}&lt;br /&gt;
    contRgn:        RgnHandle;      {Content region}&lt;br /&gt;
    updateRgn:      RgnHandle;      {Invalid region needing redraw}&lt;br /&gt;
    windowDefProc:  Handle;         {WDEF resource handle}&lt;br /&gt;
    dataHandle:     Handle;         {WDEF-specific data}&lt;br /&gt;
    titleHandle:    StringHandle;   {Window title}&lt;br /&gt;
    titleWidth:     INTEGER;        {Pixel width of title}&lt;br /&gt;
    controlList:    ControlHandle;  {Linked list of controls}&lt;br /&gt;
    nextWindow:     WindowPeek;     {Next window in list}&lt;br /&gt;
    windowPic:      PicHandle;      {Window picture for updates}&lt;br /&gt;
    refCon:         LONGINT;        {Application reference}&lt;br /&gt;
END;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Window Definition Procedures (WDEFs):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
System-supplied WDEFs include:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;WDEF 0&amp;#039;&amp;#039;&amp;#039;: Document window with title bar and optional close/zoom boxes&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;WDEF 1&amp;#039;&amp;#039;&amp;#039;: Alert/dialog box with double border&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;WDEF 2&amp;#039;&amp;#039;&amp;#039;: Plain box without title bar&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;WDEF 4&amp;#039;&amp;#039;&amp;#039;: Floating window (System 7+)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;WDEF 16&amp;#039;&amp;#039;&amp;#039;: Round-cornered window&lt;br /&gt;
&lt;br /&gt;
=== Event Manager ===&lt;br /&gt;
The Event Manager implements cooperative multitasking through a polling event loop, managing a 20-event queue in system heap:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EventRecord Structure (16 bytes):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TYPE EventRecord = RECORD&lt;br /&gt;
    what:       INTEGER;    {Event type (0-15)}&lt;br /&gt;
    message:    LONGINT;    {Event-specific data}&lt;br /&gt;
    when:       LONGINT;    {Ticks since boot}&lt;br /&gt;
    where:      Point;      {Mouse location}&lt;br /&gt;
    modifiers:  INTEGER;    {Modifier keys state}&lt;br /&gt;
END;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Event Types:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;nullEvent&amp;#039;&amp;#039;&amp;#039; (0): No event pending&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;mouseDown&amp;#039;&amp;#039;&amp;#039; (1): Mouse button pressed&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;mouseUp&amp;#039;&amp;#039;&amp;#039; (2): Mouse button released  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;keyDown&amp;#039;&amp;#039;&amp;#039; (3): Key pressed&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;keyUp&amp;#039;&amp;#039;&amp;#039; (4): Key released&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;autoKey&amp;#039;&amp;#039;&amp;#039; (5): Key repeat&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;updateEvt&amp;#039;&amp;#039;&amp;#039; (6): Window needs redrawing&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;diskEvt&amp;#039;&amp;#039;&amp;#039; (7): Disk inserted&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;activateEvt&amp;#039;&amp;#039;&amp;#039; (8): Window activated/deactivated&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;osEvt&amp;#039;&amp;#039;&amp;#039; (15): Operating system event (suspend/resume)&lt;br /&gt;
&lt;br /&gt;
The Event Manager maintains several timing parameters:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;KeyThresh&amp;#039;&amp;#039;&amp;#039;: Ticks before key repeat (typically 12)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;KeyRepThresh&amp;#039;&amp;#039;&amp;#039;: Ticks between repeats (typically 4)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;DoubleTime&amp;#039;&amp;#039;&amp;#039;: Maximum ticks for double-click (typically 32)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CaretTime&amp;#039;&amp;#039;&amp;#039;: Ticks between cursor blinks (typically 32)&lt;br /&gt;
&lt;br /&gt;
=== Menu Manager ===&lt;br /&gt;
The Menu Manager maintains hierarchical menus with a sophisticated caching and drawing system:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Menu Structure:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TYPE MenuInfo = RECORD&lt;br /&gt;
    menuID:     INTEGER;        {Unique menu identifier}&lt;br /&gt;
    menuWidth:  INTEGER;        {Pixel width when drawn}&lt;br /&gt;
    menuHeight: INTEGER;        {Pixel height when drawn}&lt;br /&gt;
    menuProc:   Handle;         {MDEF resource handle}&lt;br /&gt;
    enableFlags: LONGINT;       {Item enable bits}&lt;br /&gt;
    menuData:   Str255;         {Pascal string menu items}&lt;br /&gt;
END;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Menu Bar Structure:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
The menu bar is stored as a relocatable block containing:&lt;br /&gt;
# Number of menus (2 bytes)&lt;br /&gt;
# Array of menu handles (4 bytes each)&lt;br /&gt;
# Total width calculation cache&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Menu Definition Procedures (MDEFs):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MDEF 0&amp;#039;&amp;#039;&amp;#039;: Standard text menu&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MDEF 1&amp;#039;&amp;#039;&amp;#039;: Scrolling menu (System 7)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MDEF 2&amp;#039;&amp;#039;&amp;#039;: Popup menu variant&lt;br /&gt;
&lt;br /&gt;
=== Resource Manager ===&lt;br /&gt;
The Resource Manager provides a two-level virtual memory system for code and data, searching multiple resource files in a defined order:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Resource File Structure:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Resource Header (256 bytes):&lt;br /&gt;
    Data offset:        4 bytes&lt;br /&gt;
    Map offset:         4 bytes&lt;br /&gt;
    Data length:        4 bytes&lt;br /&gt;
    Map length:         4 bytes&lt;br /&gt;
&lt;br /&gt;
Resource Map:&lt;br /&gt;
    Header copy:        16 bytes&lt;br /&gt;
    Next map handle:    4 bytes&lt;br /&gt;
    File ref number:    2 bytes&lt;br /&gt;
    Attributes:         2 bytes&lt;br /&gt;
    Type list offset:   2 bytes&lt;br /&gt;
    Name list offset:   2 bytes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Resource Attributes (bit flags):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bit 0&amp;#039;&amp;#039;&amp;#039;: System reference (resSysRef)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bit 1&amp;#039;&amp;#039;&amp;#039;: Preload at startup (resPreload)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bit 2&amp;#039;&amp;#039;&amp;#039;: Protected from changes (resProtected)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bit 3&amp;#039;&amp;#039;&amp;#039;: Locked in memory (resLocked)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bit 4&amp;#039;&amp;#039;&amp;#039;: Purgeable from memory (resPurgeable)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bit 5&amp;#039;&amp;#039;&amp;#039;: Load into system heap (resSysHeap)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Search Order:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# Current resource file (most recently opened)&lt;br /&gt;
# Application resource fork&lt;br /&gt;
# System file resource fork&lt;br /&gt;
# ROM resources (if not overridden)&lt;br /&gt;
&lt;br /&gt;
== A-Trap Dispatch Mechanism ==&lt;br /&gt;
&lt;br /&gt;
=== 68000 Implementation ===&lt;br /&gt;
The Toolbox uses the 68000&amp;#039;s illegal instruction exception to implement system calls through &amp;#039;&amp;#039;&amp;#039;A-line traps&amp;#039;&amp;#039;&amp;#039;—opcodes from $A000-$AFFF that trigger exception vector 10 ($28):&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Trap Word Format:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bits 15-12: 1010 (A-line identifier)&lt;br /&gt;
Bit 11:     0=OS trap, 1=Toolbox trap&lt;br /&gt;
Bit 10:     Auto-pop flag (Toolbox only)&lt;br /&gt;
Bit 9:      Reserved (later: extended trap)&lt;br /&gt;
Bits 8-0:   Trap number (0-511 or 0-1023)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dispatch Process:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# CPU encounters A-line instruction&lt;br /&gt;
# Exception 10 triggers, saving PC and SR&lt;br /&gt;
# Dispatch routine at ($28) examines trap word&lt;br /&gt;
# For Toolbox traps: index into dispatch table at $E00&lt;br /&gt;
# For OS traps: index into dispatch table at $400&lt;br /&gt;
# Jump to routine address from table&lt;br /&gt;
# Routine executes and returns via RTS/RTD&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Register-Based Parameters:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Despite Pascal conventions, many traps use registers for speed:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;D0-D2&amp;#039;&amp;#039;&amp;#039;: Scratch/parameters/results&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;A0-A1&amp;#039;&amp;#039;&amp;#039;: Pointers/handles&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;A2-A4&amp;#039;&amp;#039;&amp;#039;: Preserved across calls&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;A5&amp;#039;&amp;#039;&amp;#039;: QuickDraw globals pointer&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;A6&amp;#039;&amp;#039;&amp;#039;: Stack frame (when used)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;A7&amp;#039;&amp;#039;&amp;#039;: Stack pointer&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Common Trap Examples:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$A876&amp;#039;&amp;#039;&amp;#039; (_NewPtr): Allocate pointer, size in D0, result in A0&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$A322&amp;#039;&amp;#039;&amp;#039; (_NewHandle): Allocate handle, size in D0, result in A0  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$A8FE&amp;#039;&amp;#039;&amp;#039; (_NewWindow): Parameters on stack, result in A0&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$A873&amp;#039;&amp;#039;&amp;#039; (_SetPort): GrafPort in A0, no result&lt;br /&gt;
&lt;br /&gt;
=== Trap Patching Mechanism ===&lt;br /&gt;
The dispatch table&amp;#039;s RAM location enables dynamic patching for bug fixes and extensions:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SetTrapAddress Implementation:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PROCEDURE SetTrapAddress(trapAddr: LongInt; trapNum: Integer);&lt;br /&gt;
VAR&lt;br /&gt;
    tableBase: Ptr;&lt;br /&gt;
BEGIN&lt;br /&gt;
    IF trapNum AND $0800 &amp;lt;&amp;gt; 0 THEN&lt;br /&gt;
        tableBase := Ptr($E00)  {Toolbox table}&lt;br /&gt;
    ELSE&lt;br /&gt;
        tableBase := Ptr($400); {OS table}&lt;br /&gt;
    &lt;br /&gt;
    trapNum := trapNum AND $1FF; {Mask to 9 bits}&lt;br /&gt;
    LongInt(tableBase + trapNum * 4)^ := trapAddr;&lt;br /&gt;
END;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
System extensions (INITs/CDEVs) commonly patch traps to:&lt;br /&gt;
* Fix ROM bugs&lt;br /&gt;
* Add functionality&lt;br /&gt;
* Monitor system activity&lt;br /&gt;
* Implement virus protection&lt;br /&gt;
&lt;br /&gt;
=== PowerPC Mixed-Mode Implementation ===&lt;br /&gt;
PowerPC Macs lack illegal instruction traps, requiring a different approach:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Universal Procedure Pointers (UPPs):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TYPE RoutineDescriptor = RECORD&lt;br /&gt;
    goMixedModeTrap:    INTEGER;       {$AAFE}&lt;br /&gt;
    version:            BYTE;          {7 for PowerPC}&lt;br /&gt;
    flags:              BYTE;          {ISA and calling conventions}&lt;br /&gt;
    reserved:           LONGINT;       &lt;br /&gt;
    reserved2:          BYTE;&lt;br /&gt;
    selectorCount:      BYTE;&lt;br /&gt;
    routineCount:       INTEGER;&lt;br /&gt;
    {Array of RoutineRecords follows}&lt;br /&gt;
END;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Mixed-Mode Switch Process:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# Code calls UPP thinking it&amp;#039;s a routine address&lt;br /&gt;
# UPP contains $AAFE trap at offset 0&lt;br /&gt;
# 68k emulator intercepts trap&lt;br /&gt;
# Mixed-Mode Manager examines descriptor&lt;br /&gt;
# Routes to native PPC or emulated 68k code&lt;br /&gt;
# Handles calling convention translation&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Implementation Flags:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
The Power Mac ROM includes tables indicating native implementations:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$FFF00000&amp;#039;&amp;#039;&amp;#039;: Native trap table base&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bit vector&amp;#039;&amp;#039;&amp;#039;: 1 bit per trap (1=native, 0=emulated)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Jump table&amp;#039;&amp;#039;&amp;#039;: Direct PPC routine addresses&lt;br /&gt;
&lt;br /&gt;
== System Integration Points ==&lt;br /&gt;
&lt;br /&gt;
=== Interrupt Management ===&lt;br /&gt;
The Toolbox coordinates with hardware interrupts through several mechanisms:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vertical Blanking (VBL) Tasks:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TYPE VBLTask = RECORD&lt;br /&gt;
    qLink:      QElemPtr;      {Queue link}&lt;br /&gt;
    qType:      INTEGER;        {vType=1}&lt;br /&gt;
    vblAddr:    ProcPtr;        {Task procedure}&lt;br /&gt;
    vblCount:   INTEGER;        {Ticks until execution}&lt;br /&gt;
    vblPhase:   INTEGER;        {Phase offset}&lt;br /&gt;
END;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VBL tasks execute at 60.15 Hz (NTSC) or 50 Hz (PAL) for:&lt;br /&gt;
* Cursor animation&lt;br /&gt;
* Sound buffer management&lt;br /&gt;
* Time Manager services&lt;br /&gt;
* AppleTalk maintenance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Deferred Task Manager:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Allows interrupt handlers to schedule Toolbox calls for system time:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;DTInstall&amp;#039;&amp;#039;&amp;#039;: Add task to deferred queue&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;DTRemove&amp;#039;&amp;#039;&amp;#039;: Remove pending task&lt;br /&gt;
* Executes at next non-interrupt opportunity&lt;br /&gt;
&lt;br /&gt;
=== Memory Management Integration ===&lt;br /&gt;
The Toolbox heavily depends on the Memory Manager&amp;#039;s handle-based architecture:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Handle Manipulation During Calls:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# Many Toolbox calls can trigger heap compaction&lt;br /&gt;
# Handles may relocate unless locked&lt;br /&gt;
# Dereferenced pointers become invalid&lt;br /&gt;
# Critical sections must call HLock/HUnlock&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;System vs Application Heap:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;System heap&amp;#039;&amp;#039;&amp;#039;: Contains Toolbox data structures&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Application heap&amp;#039;&amp;#039;&amp;#039;: Contains app-specific resources&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Temporary memory&amp;#039;&amp;#039;&amp;#039;: Allocated from unused RAM&lt;br /&gt;
&lt;br /&gt;
=== File System Integration ===&lt;br /&gt;
Resource Manager coordinates with File Manager for resource fork access:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Resource Fork Structure:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Logical EOF&amp;#039;&amp;#039;&amp;#039;: End of resource data&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Physical EOF&amp;#039;&amp;#039;&amp;#039;: End of allocated space&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Resource map&amp;#039;&amp;#039;&amp;#039;: In-memory cache of fork structure&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Data blocks&amp;#039;&amp;#039;&amp;#039;: Actual resource content&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Standard File Package:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Provides consistent file dialogs through:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SFGetFile&amp;#039;&amp;#039;&amp;#039;: Standard open dialog&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SFPutFile&amp;#039;&amp;#039;&amp;#039;: Standard save dialog&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SFPGetFile/SFPPutFile&amp;#039;&amp;#039;&amp;#039;: Positioned variants&lt;br /&gt;
&lt;br /&gt;
== Evolution and Extensions ==&lt;br /&gt;
&lt;br /&gt;
=== System 7 Additions ===&lt;br /&gt;
System 7 (1991) brought major Toolbox expansions:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New Managers:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Edition Manager&amp;#039;&amp;#039;&amp;#039;: Publish/subscribe for compound documents&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Process Manager&amp;#039;&amp;#039;&amp;#039;: Cooperative multitasking formalization&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Alias Manager&amp;#039;&amp;#039;&amp;#039;: Robust file/folder references&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Help Manager&amp;#039;&amp;#039;&amp;#039;: Balloon help system&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Component Manager&amp;#039;&amp;#039;&amp;#039;: Shared code modules&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Enhanced Capabilities:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;TrueType support&amp;#039;&amp;#039;&amp;#039; in Font Manager&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Virtual memory&amp;#039;&amp;#039;&amp;#039; awareness&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;32-bit addressing&amp;#039;&amp;#039;&amp;#039; throughout&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Interapplication communication&amp;#039;&amp;#039;&amp;#039; via Apple Events&lt;br /&gt;
&lt;br /&gt;
=== Color QuickDraw ===&lt;br /&gt;
Introduced with Macintosh II (1987), Color QuickDraw expanded the graphics architecture:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PixMap Structure:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TYPE PixMap = RECORD&lt;br /&gt;
    baseAddr:       Ptr;            {Pixel data base}&lt;br /&gt;
    rowBytes:       INTEGER;        {Bytes per row + flags}&lt;br /&gt;
    bounds:         Rect;           {Boundary rectangle}&lt;br /&gt;
    pmVersion:      INTEGER;        {PixMap version}&lt;br /&gt;
    packType:       INTEGER;        {Packing format}&lt;br /&gt;
    packSize:       LONGINT;        {Packed data size}&lt;br /&gt;
    hRes:           Fixed;          {Horizontal DPI}&lt;br /&gt;
    vRes:           Fixed;          {Vertical DPI}&lt;br /&gt;
    pixelType:      INTEGER;        {Chunky/planar}&lt;br /&gt;
    pixelSize:      INTEGER;        {Bits per pixel}&lt;br /&gt;
    cmpCount:       INTEGER;        {Components per pixel}&lt;br /&gt;
    cmpSize:        INTEGER;        {Bits per component}&lt;br /&gt;
    planeBytes:     LONGINT;        {Offset to next plane}&lt;br /&gt;
    pmTable:        CTabHandle;     {Color table}&lt;br /&gt;
    pmReserved:     LONGINT;        {Reserved}&lt;br /&gt;
END;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Color Table Structure:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TYPE ColorTable = RECORD&lt;br /&gt;
    ctSeed:         LONGINT;        {Unique identifier}&lt;br /&gt;
    ctFlags:        INTEGER;        {Private flags}&lt;br /&gt;
    ctSize:         INTEGER;        {Number of entries - 1}&lt;br /&gt;
    ctTable:        ARRAY[0..0] OF ColorSpec;&lt;br /&gt;
END;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== International Resources ===&lt;br /&gt;
The Script Manager and international resources enabled localization:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;INTL Resources:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;INTL 0&amp;#039;&amp;#039;&amp;#039;: Number formatting (decimal, thousands, currency)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;INTL 1&amp;#039;&amp;#039;&amp;#039;: Date/time formatting&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;INTL 2&amp;#039;&amp;#039;&amp;#039;: Keyboard layouts&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;INTL 4&amp;#039;&amp;#039;&amp;#039;: Tokenization tables&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Script Systems:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Roman&amp;#039;&amp;#039;&amp;#039; (0): Latin scripts&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Japanese&amp;#039;&amp;#039;&amp;#039; (1): Kanji/Kana support&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Chinese&amp;#039;&amp;#039;&amp;#039; (2): Traditional Chinese&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Korean&amp;#039;&amp;#039;&amp;#039; (3): Hangul support&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Arabic&amp;#039;&amp;#039;&amp;#039; (4): Right-to-left rendering&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hebrew&amp;#039;&amp;#039;&amp;#039; (5): Right-to-left with vowel points&lt;br /&gt;
&lt;br /&gt;
== Performance Optimizations ==&lt;br /&gt;
&lt;br /&gt;
=== Register-Based Calling Conventions ===&lt;br /&gt;
Critical routines bypass stack operations for speed:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;QuickDraw Optimizations:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Region operations&amp;#039;&amp;#039;&amp;#039;: Pass region handles in A0/A1&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Line drawing&amp;#039;&amp;#039;&amp;#039;: Coordinates in D0-D3&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pattern fills&amp;#039;&amp;#039;&amp;#039;: Pattern pointer in A0&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Memory Manager Fast Paths:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;NewPtr/NewHandle&amp;#039;&amp;#039;&amp;#039;: Size in D0, result in A0&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;GetHandleSize&amp;#039;&amp;#039;&amp;#039;: Handle in A0, size in D0&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;HandToHand&amp;#039;&amp;#039;&amp;#039;: Source in A0, dest in A0&lt;br /&gt;
&lt;br /&gt;
=== Caching Mechanisms ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Font Cache:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;512-byte bitmap cache&amp;#039;&amp;#039;&amp;#039; per font&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Strike matrices&amp;#039;&amp;#039;&amp;#039; for different sizes&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Width tables&amp;#039;&amp;#039;&amp;#039; for kerning&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Resource Map Cache:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;In-memory map&amp;#039;&amp;#039;&amp;#039; for each open file&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Handle table&amp;#039;&amp;#039;&amp;#039; for loaded resources&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;One-deep cache&amp;#039;&amp;#039;&amp;#039; for most recent&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Menu Bar Cache:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pixel width calculations&amp;#039;&amp;#039;&amp;#039; stored&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Menu item enables&amp;#039;&amp;#039;&amp;#039; pre-computed&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hierarchical menu&amp;#039;&amp;#039;&amp;#039; locations cached&lt;br /&gt;
&lt;br /&gt;
== Debugging and Diagnostic Support ==&lt;br /&gt;
&lt;br /&gt;
=== MacsBug Integration ===&lt;br /&gt;
The Toolbox includes hooks for MacsBug debugger:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Debug Traps:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$A9FF&amp;#039;&amp;#039;&amp;#039; (_Debugger): Enter debugger&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$ABFF&amp;#039;&amp;#039;&amp;#039; (_DebugStr): Display string and break&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$A9C6&amp;#039;&amp;#039;&amp;#039; (_SysBreak): Conditional break&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Symbol Tables:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
ROM includes procedure names for debugging:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Trap names&amp;#039;&amp;#039;&amp;#039;: &amp;quot;NewWindow&amp;quot;, &amp;quot;DrawString&amp;quot;, etc.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Global labels&amp;#039;&amp;#039;&amp;#039;: &amp;quot;ThePort&amp;quot;, &amp;quot;ApplZone&amp;quot;, etc.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hardware addresses&amp;#039;&amp;#039;&amp;#039;: &amp;quot;VIA&amp;quot;, &amp;quot;SCC&amp;quot;, etc.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostic Manager ===&lt;br /&gt;
Power Manager and Diagnostic Manager (PowerBooks/Power Macs):&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Power Manager Traps:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$A285&amp;#039;&amp;#039;&amp;#039; (_PMgrOp): Power management operations&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$A485&amp;#039;&amp;#039;&amp;#039; (_IdleUpdate): Update idle state&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$A685&amp;#039;&amp;#039;&amp;#039; (_SerialPower): Serial port power&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Diagnostic Selectors:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;gestaltDiagnostics&amp;#039;&amp;#039;&amp;#039;: Diagnostic ROM presence&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;gestaltPowerMgrVers&amp;#039;&amp;#039;&amp;#039;: Power Manager version&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;gestaltBatteryType&amp;#039;&amp;#039;&amp;#039;: Battery technology&lt;br /&gt;
&lt;br /&gt;
== Low-Level Hardware Abstraction ==&lt;br /&gt;
&lt;br /&gt;
=== Slot Manager ===&lt;br /&gt;
For NuBus and PDS expansion cards:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Slot Resource Structure:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TYPE SpBlock = RECORD&lt;br /&gt;
    spResult:       LONGINT;        {Result/error}&lt;br /&gt;
    spsPointer:     Ptr;            {Structure pointer}&lt;br /&gt;
    spSize:         LONGINT;        {Size of structure}&lt;br /&gt;
    spOffsetData:   LONGINT;        {Data offset}&lt;br /&gt;
    spIOFileName:   Ptr;            {Driver name}&lt;br /&gt;
    spsExecPBlk:    Ptr;            {Execution block}&lt;br /&gt;
    spParamData:    LONGINT;        {Parameters}&lt;br /&gt;
    spMisc:         LONGINT;        {Miscellaneous}&lt;br /&gt;
    spReserved:     LONGINT;        {Reserved}&lt;br /&gt;
    spIOReserved:   INTEGER;        {I/O reserved}&lt;br /&gt;
    spRefNum:       INTEGER;        {Driver reference}&lt;br /&gt;
    spCategory:     INTEGER;        {sRsrc category}&lt;br /&gt;
    spCType:        INTEGER;        {sRsrc type}&lt;br /&gt;
    spDrvrSW:       INTEGER;        {Driver software}&lt;br /&gt;
    spDrvrHW:       INTEGER;        {Driver hardware}&lt;br /&gt;
    spTBMask:       SignedByte;     {Type/board mask}&lt;br /&gt;
    spSlot:         SignedByte;     {Slot number}&lt;br /&gt;
    spID:           SignedByte;     {sResource ID}&lt;br /&gt;
    spExtDev:       SignedByte;     {External device}&lt;br /&gt;
    spHwDev:        SignedByte;     {Hardware device}&lt;br /&gt;
    spByteLanes:    SignedByte;     {Byte lanes}&lt;br /&gt;
    spFlags:        SignedByte;     {Flags}&lt;br /&gt;
    spKey:          SignedByte;     {Reserved}&lt;br /&gt;
END;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serial Communications ===&lt;br /&gt;
Serial Driver and Communications Toolbox:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Serial Port Control:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$A002&amp;#039;&amp;#039;&amp;#039; (_OpenDriver): Open .AIn/.AOut or .BIn/.BOut&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$A003&amp;#039;&amp;#039;&amp;#039; (_CloseDriver): Close serial port&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$A004&amp;#039;&amp;#039;&amp;#039; (_Control): Set baud, parity, handshaking&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;$A005&amp;#039;&amp;#039;&amp;#039; (_Status): Read port status&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Communications Resources:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SERD 0&amp;#039;&amp;#039;&amp;#039;: Modem port configuration&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SERD 1&amp;#039;&amp;#039;&amp;#039;: Printer port configuration&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SERD 2-15&amp;#039;&amp;#039;&amp;#039;: Additional ports (expansion cards)&lt;br /&gt;
&lt;br /&gt;
== ROM Version Detection ==&lt;br /&gt;
&lt;br /&gt;
=== Gestalt Manager ===&lt;br /&gt;
Introduced in System 6.0.4 for capability detection:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Common Gestalt Selectors:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gestaltVersion              = &amp;#039;vers&amp;#039;   {Gestalt version}&lt;br /&gt;
gestaltSystemVersion        = &amp;#039;sysv&amp;#039;   {System software version}&lt;br /&gt;
gestaltROMVersion          = &amp;#039;romv&amp;#039;   {ROM version}&lt;br /&gt;
gestaltMachineType         = &amp;#039;mach&amp;#039;   {Machine type}&lt;br /&gt;
gestaltQuickdrawVersion    = &amp;#039;qd  &amp;#039;   {QuickDraw version}&lt;br /&gt;
gestaltToolboxTable        = &amp;#039;tblt&amp;#039;   {Trap table base}&lt;br /&gt;
gestaltOSTable             = &amp;#039;ostt&amp;#039;   {OS trap table base}&lt;br /&gt;
gestaltNativeCPUtype       = &amp;#039;cput&amp;#039;   {CPU type}&lt;br /&gt;
gestaltMMUType             = &amp;#039;mmu &amp;#039;   {MMU type}&lt;br /&gt;
gestaltFPUType             = &amp;#039;fpu &amp;#039;   {FPU type}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROM Version History ===&lt;br /&gt;
Major ROM versions and their Toolbox changes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:90%; text-align:center;&amp;quot;&lt;br /&gt;
|+ &amp;#039;&amp;#039;&amp;#039;ROM Version Evolution&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
! Version !! Size !! Date !! Key Toolbox Additions&lt;br /&gt;
|-&lt;br /&gt;
| $0069 || 64 KB || 1984 || Original Toolbox&lt;br /&gt;
|-&lt;br /&gt;
| $0075 || 128 KB || 1986 || HFS, SCSI Manager&lt;br /&gt;
|-&lt;br /&gt;
| $0076 || 256 KB || 1987 || ADB Manager&lt;br /&gt;
|-&lt;br /&gt;
| $0078 || 256 KB || 1987 || Color QuickDraw&lt;br /&gt;
|-&lt;br /&gt;
| $037A || 512 KB || 1989 || 32-bit QuickDraw&lt;br /&gt;
|-&lt;br /&gt;
| $067C || 512 KB || 1990 || Sound Manager 2.0&lt;br /&gt;
|-&lt;br /&gt;
| $077D || 1 MB || 1991 || System 7 Toolbox&lt;br /&gt;
|-&lt;br /&gt;
| $F1A6 || 4 MB || 1994 || PowerPC + emulator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Technical Limitations and Quirks ==&lt;br /&gt;
&lt;br /&gt;
=== Known Limitations ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;32,767 pixel coordinate limit&amp;#039;&amp;#039;&amp;#039;: QuickDraw uses signed 16-bit coordinates&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;32 KB resource size limit&amp;#039;&amp;#039;&amp;#039;: Without special handling&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;128 open files limit&amp;#039;&amp;#039;&amp;#039;: File Control Block table size&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Region complexity limit&amp;#039;&amp;#039;&amp;#039;: ~24 KB for region data&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;8 MB partition limit&amp;#039;&amp;#039;&amp;#039; (24-bit mode): High byte used for flags&lt;br /&gt;
&lt;br /&gt;
=== Common Programming Pitfalls ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Dangling pointers&amp;#039;&amp;#039;&amp;#039;: After memory compaction&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Resource not found&amp;#039;&amp;#039;&amp;#039;: Missing from search path&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Stack overflow&amp;#039;&amp;#039;&amp;#039;: Deep recursion in 8 KB default stack&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;A5 world corruption&amp;#039;&amp;#039;&amp;#039;: Incorrect A5 register management&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;VBL task reentrancy&amp;#039;&amp;#039;&amp;#039;: Non-reentrant Toolbox calls&lt;br /&gt;
&lt;br /&gt;
=== Undocumented Features ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;_Launch trap ($A9F2)&amp;#039;&amp;#039;&amp;#039;: Can pass extended parameters&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;_Gestalt trap&amp;#039;&amp;#039;&amp;#039;: Accepts private selectors&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;_StripAddress&amp;#039;&amp;#039;&amp;#039;: Works differently on various ROMs&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Menu Manager&amp;#039;&amp;#039;&amp;#039;: Hidden color menu support pre-System 7&lt;br /&gt;
&lt;br /&gt;
== Toolbox in Modern Context ==&lt;br /&gt;
&lt;br /&gt;
=== Carbon Transition ===&lt;br /&gt;
Carbon (Mac OS 8.1-10.14) provided a subset of Toolbox APIs:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Removed&amp;#039;&amp;#039;&amp;#039;: Low-memory globals, direct hardware access&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Deprecated&amp;#039;&amp;#039;&amp;#039;: Segment Loader, vertical retrace&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Modernized&amp;#039;&amp;#039;&amp;#039;: Event handling, memory management&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Added&amp;#039;&amp;#039;&amp;#039;: Preemptive threading, Unicode support&lt;br /&gt;
&lt;br /&gt;
=== Classic Environment ===&lt;br /&gt;
Mac OS X 10.0-10.4 included Classic for running Toolbox applications:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bluebox&amp;#039;&amp;#039;&amp;#039;: Complete 68k/PPC emulation environment&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Shared clipboard&amp;#039;&amp;#039;&amp;#039;: Between Classic and native apps&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;File system mapping&amp;#039;&amp;#039;&amp;#039;: HFS+ to Unix paths&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hardware limitations&amp;#039;&amp;#039;&amp;#039;: No direct hardware access&lt;br /&gt;
&lt;br /&gt;
=== Preservation and Emulation ===&lt;br /&gt;
Modern emulators preserve Toolbox functionality:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Mini vMac&amp;#039;&amp;#039;&amp;#039;: Accurate 68k Mac emulation&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Basilisk II&amp;#039;&amp;#039;&amp;#039;: 68k Mac with JIT compilation&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SheepShaver&amp;#039;&amp;#039;&amp;#039;: PowerPC Mac emulation&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;QEMU&amp;#039;&amp;#039;&amp;#039;: Hardware-level Mac emulation&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Old World ROM]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Apple Vintage Computers]]&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
</feed>