# Macintosh-Baukasten

Der Macintosh-Baukasten (englisch Macintosh Toolbox) ist eine Sammlung von Ressourcen, Treibern, Routinen und Programmierschnittstellen, die sich im ROM früher Modelle von Macintosh-Computern befindet. Diese wurden später als „Old-World-ROM“-Modelle bezeichnet. Der Macintosh-Baukasten wird vom Betriebssystem für Macintosh-Computer, der Macintosh System Software, die später als klassisches Mac OS bezeichnet wurde, genutzt – umgekehrt ist Mac OS ohne den Macintosh-Baukasten nicht ausführbar.

## Geschichte

Um Arbeits- und Diskettenspeicherplatz zu sparen, waren seit dem ersten Macintosh mit 128 kB RAM zahlreiche Komponenten des Betriebssystems in einem ROM bereitgestellt worden. Arbeitsspeicher (RAM) war zu dieser Zeit doppelt so teuer wie die gleiche Speichermenge ROM, und 128 kB Arbeitsspeicher stellten bei der Produktion bereits einen wesentlichen Kostenfaktor dar. Außerdem bot diese Maßnahme einen gewissen Geschwindigkeitsvorteil, da ROM seinerzeit schneller auszulesen war als die Kombination aus RAM und Daten von Disketten, denn die Daten hätten jeweils von einer Diskette in den RAM geladen werden müssen. Diskettenlaufwerke waren aber weitaus langsamer als der ROM. Zusätzlich waren die Routinen im ROM ohnehin jederzeit verfügbar – ohne wertvollen Speicherplatz auf Disketten zu belegen, der für die Programme und deren Daten wichtig war. Ebenso war beim originalen Macintosh von 1984, retronym als „Macintosh 128k“ bezeichnet, der spärliche Arbeitsspeicher für die Programme sehr wertvoll.
Da der Inhalt des ROMs mit der Auslieferung des Rechners festgelegt war, werden alle Inhalte des Baukastens über eine Tabelle angesprungen. Um den Macintosh-Baukasten erweiterbar zu machen, kann eine neuere Routine aus dem Betriebssystem (von Diskette) in den Arbeitsspeicher (RAM) geladen werden. Die Sprungadresse in der Tabelle wird dabei auf die nun im RAM vorhandene Funktion umgeleitet. So wird automatisch die neue statt der jeweils veralteten Funktion des ROM verwendet. Dies erlaubte z. B. Fehler zu bereinigen und Funktionen zu erweitern, was dann jedoch ein wenig Arbeitsspeicher kostete.

### OldWorld

Ende der 1980er Jahre kehrte sich das Preisverhältnis von ROM und RAM um, ROM war nun deutlich teurer als die gleiche Menge RAM und zudem langsamer. Auch wurde ab 1992 in der Apple–IBM–Motorola-Allianz (AIM) ein neuer auf IBMs POWER-Architektur aufbauender RISC-Prozessor entwickelt, der die Motorola-68000er-Familie ablösen sollte. Die ersten Modelle mit diesem PowerPC getauften Prozessor, dem PowerPC 601, kamen 1995 auf den Markt. Dabei wurde im System-ROM ein Nanokernel geladen, der 68k-Programmcode transparent emuliert ausführen konnte. Der Macintosh-Baukasten wurde ursprünglich in Pascal entwickelt und dann aus Geschwindigkeits- und Platzgründen in Motorola-68000-Assembler umgesetzt. Auf dem PowerPC wurde anfänglich der Macintosh-ROM beinahe unverändert in 68k-Maschinencode wie bisher im ROM vorgehalten, was die bestehende Firmware weiter nutzbar machte und auch für Software für die nötige Kompatibilität sorgte, da über den Nanokernel jegliche Software die transparente 68k-Emulation nutzen konnte. Diese Vorgehensweise ermöglichte Apple zwar einen sanften Übergang von einer Prozessorarchitektur auf eine völlig andere eigentlich inkompatible Befehlssatzarchitektur, jedoch führte es auch zu Einbußen bei der Ausführungsgeschwindigkeit. Das hatte zur Folge, dass der eigentlich schnellere PowerPC in einem Macintosh-Computer unter System 7 (später Mac OS 7.6) real nicht viel schneller war als der 68k-Prozessor, den er – wegen der Geschwindigkeit – ersetzen sollte.
Nach und nach wurde der Macintosh-Baukasten bzw. Macintosh-ROM in die Programmiersprache C und C++ übersetzt und dabei in nativen PowerPC-Maschinencode umgewandelt. Auch wurde die Firmware des Computers auf die von Sun Microsystems entwickelte auf FORTH basierte Open Firmware umgestellt. Diese Firmware sollte ein schnelles Initialisieren der nötigen Hardwarekomponenten bieten und schließlich die Kontrolle an den Mac-OS-Bootloader übergeben. Diese ersten Macintosh-Computer mit Open Firmware erhielten nach 1998 die Bezeichnung OldWorld (Deutsch: „alte Welt“), da sie den Mac-OS-ROM, der Teile des Macintosh-Baukastens enthält, als AAPL,ROM im Gerätebaum der Open Firmware bereitstellen. Der Macintosh-Baukasten ist somit ein Teil der Firmware und wie gehabt ein Teil des ROM, weshalb er auch weiterhin oft als Macintosh ROM bezeichnet wurde.

### NewWorld

Als Apple Zugang zum Quelltext der Open Firmware erhielt, flossen zahlreiche Macintosh-spezifische Erweiterungen darin ein. Das Ergebnis war Open Firmware 3.0, das bereits ELF-Objekte laden und auf die Dateisysteme HFS und ext2 zugreifen konnte. Diese Art Apple-Mac-Computer wurde von Apple als NewWorld (Deutsch: „neue Welt“) bezeichnet. Zahlreiche Funktionen, die zum Starten eines Betriebssystems notwendig waren, wurden in die Open Firmware verlagert – und im Gegenzug das Mac-OS-ROM ausgelagert. Dies wurde als „ROM-in-RAM“ bezeichnet, da der Macintosh-Baukasten nun nicht mehr im ROM abrufbar war, sondern beim Betriebssystemstart aus einer Datei von der Festplatte in den schnelleren RAM geladen wurde. Der erste NewWorld-Mac war der 1998 vorgestellte iMac „Bondi,“ 1999 folgten das PowerBook G3 „Lombard“ und der Blau-Weiße Power Mac G3.

## Bestandteile

Wichtige Bestandteile des Macintosh-Baukastens umfassen:
* QuickDraw
* Window Manager
* Dialog Manager
* Control Manager
* Menu Manager
* Event Manager
* TextEdit
* Resource Manager
* Finder-Schnittstelle
* Scrap-Manager
* Standard file package
* Sound Manager

## Nachfolge

Anfang der 1990er-Jahre war Apple mit dem als veraltet geltenden Betriebssystem „Macintosh System Software“ (ab 1996 in Mac OS umbenannt) nicht mehr konkurrenzfähig. Microsoft und IBM arbeiteten an einem grafischen Betriebssystem, das so einfach zu bedienen sein sollte wie das Apple-Betriebssystem, zusätzlich jedoch moderne Funktionen wie kooperatives Multitasking und Speicherschutz bot. Während der Entwicklung von System 7 wurde der Macintosh-Baukasten von 68k-Assembler auf C neu implementiert und mit dem Projekt „Star Trek“ (System 7 auf einem IBM-PC-kompatiblen Computer) sogar auf die x86-Architektur portiert.
Am Ende scheiterte Apple jedoch bei dem Versuch, sein Betriebssystem entweder zu erweitern oder durch eine moderne Neuentwicklung zu ersetzen. Projekte wie Pink (Taligent) und Copland wurden nie fertiggestellt während Microsoft mit Windows 95 große Erfolge feierte und IBM mit OS/2 und Microsoft mit Windows NT stabile und moderne Betriebssysteme entwickelt hatten.
Ende 1996 erhielt Apple durch die Übernahme von NeXT ein modernes Unix-basiertes Betriebssystem, das eine nicht-kompatible objektorientierte Programmierschnittstelle (API) namen OpenStep enthielt. Diese neue API wurde von Apple im Betriebssystemprojekt Rhapsody als Yellow Box und mit Mac OS X schließlich als Cocoa weiterentwickelt.
Da jedoch viele Anbieter von für Apple unverzichtbarer Anwendersoftware ein mit dem ursprünglichen Macintosh-API kompatibles System forderten, wurde sowohl unter Mac OS ab Version 8.1 als auch unter Mac OS X eine neue Programmierschnittstelle implementiert, die größtmögliche Source-Code-Kompatibilität mit dem Macintosh-Baukasten bieten sollte. Damit wurde der Portierungsaufwand für bestehende Anwendungen gering gehalten und Softwarehersteller konnten ihre Programme relativ schnell auf das neue Betriebssystem Mac OS X portieren, das ab 2002 das ältere klassische Mac OS vollständig ersetzte. Diese kompatible Programmierschnittstelle erhielt von Apple den Namen Carbon und ist in Mac OS X, das 2016 in macOS umbenannt wurde, bis macOS Mojave – das ist Version 10.14 von 2018 – enthalten, wurde jedoch seit 2007 nicht mehr weiterentwickelt und auch nicht mehr auf 64-Bit portiert, sodass auch nur 32-Bit-Anwendungen unter Mac OS X die Funktionen der Carbon-Programmierschnittstelle nutzen können. Im Nachfolger macOS Catalina von 2019 werden nur noch 64-Bit-Anwendungen unterstützt.

## Versionsgeschichte

Bei „Old-World“-Macintosh-Computern war der Macintosh-Baukasten noch im ROM gespeichert. Die Speicherkapazität des verbauten ROM wurde seit 1984 von 64 kB auf 4 MiB von 1994 bis 1998 erhöht.
Bei „New-World“-Macs sind die folgenden Versionen des Mac OS ROM bekannt:
| Version | Datum | Retail-Versionen von Mac OS, Mac-Modelle, Anmerkungen |
| Ältere Version; nicht mehr unterstützt: 1.1 | 21. Juli 1998 | Mac OS 8.1, iMac, Rev A |
| Ältere Version; nicht mehr unterstützt: 1.1.2 | 27. Aug. 1998 | Mac OS 8.5, iMac Update 1.0 |
| Ältere Version; nicht mehr unterstützt: 1.2 | 3. Dez. 1998 | iMac, Rev B |
| Ältere Version; nicht mehr unterstützt: 1.2.1 | 22. Jan. 1999 | Power Mac G3 „Blau&Weiß“ (B&W) sowie Macintosh Server G3 B&W, Mac OS 8.5.1 (Update) |
| Ältere Version; nicht mehr unterstützt: 1.4 | 5. Apr. 1999 | Mac OS 8.6, Colors iMac 333 MHz, Power Mac G3 B&W |
| Ältere Version; nicht mehr unterstützt: 1.6 | 14. Mai 1999 | PowerBook G3, Mac OS ROM Update 1.0 |
| Ältere Version; nicht mehr unterstützt: 1.7.1 | | Power Mac G4 „PCI-Grafikkarte“ |
| Ältere Version; nicht mehr unterstützt: 1.8.1 | 28. Sep. 1999 | Power Mac G4 („PCI-Grafikkarte“) ROM 1.8.1 Update |
| Ältere Version; nicht mehr unterstützt: 2.3.1 | | iMac „Slot Loading“, iBook |
| Ältere Version; nicht mehr unterstützt: 2.5.1 | 17. Sep. 1999 | Power Mac G4 „AGP-Grafikkarte“ |
| Ältere Version; nicht mehr unterstützt: 3.0 | 27. Sep. 1999 | Mac OS 9.0, PowerBook G3 Bronze |
| Ältere Version; nicht mehr unterstützt: 3.5 | | Power Mac G4 „AGP-Grafikkarte,“ iBook, PowerBook „FireWire“ (jeweils vorinstalliertes Mac OS 9.0.2) |
| Ältere Version; nicht mehr unterstützt: 3.6 | | iMac „Slot Loading“ (vorinstalliertes Mac OS 9.0.3) |
| Ältere Version; nicht mehr unterstützt: 3.7 | 15. März 2000 | Mac OS 9.0.4 (sowohl Retail als auch Update); PowerBook „FireWire“ |
| Ältere Version; nicht mehr unterstützt: 3.8 | 22. Mai 2000 | Ethernet Update 1.0 |
| Ältere Version; nicht mehr unterstützt: 4.6.1 | | iMac „Sommer 2000,“ Power Mac G4 „Sommer 2000“ (jeweils vorinstalliertes Mac OS 9.0.4) |
| Ältere Version; nicht mehr unterstützt: 4.9.1 | | PowerMac G4 MP „Sommer 2000“ (CPU software 2.3), PowerMac G4 „Gigabit Ethernet“ (jeweils vorinstalliertes Mac OS 9.0.4) |
| Ältere Version; nicht mehr unterstützt: 5.2.1 | | Power Mac G4 Cube (CPU software 2.4) |
| Ältere Version; nicht mehr unterstützt: 5.3.1 | | iBook (Sommer 2000, CPU software 2.5) |
| Ältere Version; nicht mehr unterstützt: 5.5.1 | | Power Mac G4 (mit Radeon-Grafikkarte, CPU software 2.6) |
| Ältere Version; nicht mehr unterstützt: 6.1 | 3. Nov. 2000 | Mac OS 9.1 (sowohl Retail als auch Update) |
| Ältere Version; nicht mehr unterstützt: 6.6.1 | | PowerBook Titanium |
| Ältere Version; nicht mehr unterstützt: 6.7.1 | | Power Mac G4 „Digital Audio“ (vorinstalliertes Mac OS 9.1) |
| Ältere Version; nicht mehr unterstützt: 7.5.1 | 7. Feb. 2001 | iMac „Early 2001“ und „Sommer 2001“ (jeweils vorinstalliertes Mac OS 9.1) |
| Ältere Version; nicht mehr unterstützt: 8.4 | 30. Juli 2001 | |
| Ältere Version; nicht mehr unterstützt: 9.0.1 | 19. Dez. 2001 | |
| Ältere Version; nicht mehr unterstützt: 9.1.1 | 8. Apr. 2002 | |
| Ältere Version; nicht mehr unterstützt: 9.6.1 | 3. Sep. 2002 | |
| Ältere Version; nicht mehr unterstützt: 9.8.1 | 10. Jan. 2003 | |
| Ältere Version; nicht mehr unterstützt: 10.2.1 | 3. Apr. 2003 | |
| Legende:Ältere Version; nicht mehr unterstütztÄltere Version; noch unterstütztAktuelle VersionAktuelle VorabversionZukünftige Version |||