**Macintosh Toolbox** (aluksi **User Interface Toolbox**) on Applen vanhemmissa Macintosh-tietokoneissa käytetty ohjelmointirajapinta. Järjestelmä sisältää ajureita, funktioita ja käyttöjärjestelmärutiineja ja vuoteen 1998 se sijaitsi emolevylle asennetussa ROM-muistissa. Firmware-tyyppinen, kovakoodattu Toolbox latautui aina kun Macintosh käynnistyi ja se latasi Mac OS -käyttöjärjestelmän, hankaloittaen muiden käyttöjärjestelmien asentamista Macintosh-koneisiin.

Kehitys
-------

Macintosh-projekti kehitti User Interface Toolboxin (*käyttäjärajapinnan työkalut*) tarjoamaan graafisen käyttöliittymän tarvitsemia aliohjelmia ja yleisiä muuttujia. Työkaluohjelmaa kehittivät 80-luvun alussa muun muassa Andy Hertzfeld ja Bruce Horn. Macintosh 128K:n suunnittelun vuosina pelkästään tiedon lukemista varten tarkoitettu ROM-muisti oli edullisempaa ja nopeampaa kuin tiedon lukemisen ja kirjoittamisen mahdollistava RAM-muisti. Osa Macintosh System Software -käyttöjärjestelmästä päätettiin kirjoittaa suoraan ROM-muistille, jolloin järjestelmät yleiset rutiinit olivat käytössä ilman niiden lataamista käyttöjärjestelmätiedostosta keskusmuistiin. Toolbox-ohjelma tallennettiin myös ROM-muistiin ja Macintosh 128K:ssa se ei sisältänyt varsinaisen käyttöjärjestelmän rajapintoja, vaan tarjosi ainoastaan rajapinnan graafisen käyttöliittymän ohjelmointiin. Varhaisissa Macintosh-käyttöjärjestelmissä käyttöjärjestelmän arkkitehtuuri ei erottanut käyttöjärjestelmän osia toisistaan tämän selkeämmin. Motorola 68000-suorittemen käyttämää poikkeustenkäsittelymekanismia käytettiin lähettämään Toolboxin järjestelmäkutsuja ROM-muistiin. Mekanismin avulla ROM-muistiin kirjoitettua koodia voitiin ajonaikaisesti päivittää reitittämällä järjestelmäkutsut ROM-muistin sijaan tiettyyn RAM-muistin kohtaan.

Aiemmin Smalltalkin kanssa työskennellyt Horn ideoi dynaamisen resurssienhallintajärjestelmän, joka mahdollisti lokalisaation ja säästi muistia mahdollistamalla yhteisten muistialueiden käytön. Muistiosoitukset hoidettiin dynaamisilla osoitinjärjestelmällä, jossa yksilöity muistiosoitus viittasi toiseen osoittimeen. Muistialueita saattoi näin yhdistää dynaamisesti ilman ohjelmien tulemista toisistaan riippuvaiseksi. Viimeinen sovellus, joka lakkasi käyttämästä muistialuetta merkitsi jälkimmäisen osoittimen arvoksi *null*.

Macintosh Toolbox kehitettiin Pascalilla ja kirjoitettiin tuotantoa varten Motorola 68000:n konekielelle. Myöhemmin koodia käännettiin C ja C++ -ohjelmointikielille, jolloin ohjelmaa voitiin ajaa suoraan Power Macintosh -koneissa.

Käyttö
------

Macintosh Toolbox sijaitsi ROM-muistilla, joka oli tietokoneen emolevyllä kiinteästi. Myöhemmin menetelmästä luovuttiin ja Toolbox siirrettiin tavanomaisten ohjelmien tapaan tiedostoksi kiintolevylle, josta se ladataan keskusmuistiin tarvittaessa. Näiden kahden järjestelmän nimityksiksi vakiintuivat Old World ROM (Vanhakantainen ROM) ja New World ROM (Uudenaikainen ROM).

Toolbox on Macintoshin yleinen ohjelmointirajapinta sisältäen rajapinnat ikkunointijärjestelmän elementtien luomiseksi, käyttäjän syöttämän tiedon vastaanottamiseksi ja Macintoshien resurssien käyttämiseksi. 

### Old World ROM

Ennen vuotta 1998 julkaistuissa Macintosheissa Toolbox otetaan käyttöön ja sen sisältämät, käynnistykseen liittyvät toiminnot suoritetaan ennen käyttöjärjestelmän lataamista. PCI-väyläisissä Power Macintosheissa , jotka sisälsivät Open Firmware -järjestelmän Toolbox oli tallennettuna eräänä Open Firmware -laitteena. Power Macintoshit sisälsivät myös emulaattorin, jolla 68k-pohjaisia ohjelmia voidaan suorittaa, mukaan lukien Macintosh Toolbox. Tallennustavasta riippumatta Toolbox toimii sekä PowerPC- että 68k-pohjaisissa Macintosheissa samalla tavalla. Tietokoneen käynnistyksen yhteydessä Toolbox suorittaa muistin tarkistuksen, kartoittaa Mac OS -yhteensopivan laitteiston ja käynnistää emolevylle integroidun näytönohjaimen tai kutsuu NuBus- tai PCI-näytönohjaimen käynnistysparametreja. Tämän jälkeen Toolbox etsii Mac OS -käyttöjärjestelmää levykeasemasta ja SCSI-väylistä. Järjestelmän löytyessä Toolbox tulostaa näytölle iloisen naaman ja käynnistää Mac OS:n, virheen sattuessa näytölle tulostuu surullinen naama. 

ROM-muistille tallennetun Toolboxin muuttumattomuuden takia Old World ROM Macintosheissa on aina oltava Mac OS -osioitu levyalue, johon on asennettu Mac OS -käyttöjärjestelmä. Tavallinen menetelmä vaihtoehtoisen käyttöjärjestelmän ajamiseksi Macintoshissa on tallentaa minimikokoinen Mac OS pienelle levyalueelle, johon on asennettu käynnistyksenlatausohjelma toista käyttöjärjestelmää varten. Toinen keino Mac OS:n kiertämiseksi on käyttää erityistä levykettä (kuten EMILE), jonka Toolbox hyväksyy, mutta joka sisältää vaihtoehtoisen käyttöjärjestelmän. 68k-pohjaisissa Macintosheissa ja NuBus-väyläisissä Power Macintosheissa käynnistyksenlatausohjelma ei toimi, vaan Mac OS on ladattava kokonaan koneen muistiin ennen toisen käyttöjärjestelmän käynnistämistä. Rajoitus on voimassa myös Applen omaa A/UX-käyttöjärjestelmää käytettäessä, joka sisältää Mac OS:n käynnistystä varten.

### New World ROM

Ensimmäisen iMacin julkaisemisen yhteydessä laitteistoon kirjoitettu Toolbox siirrettiin kovalevylle kirjoitussuojattuun tiedostoon. Käynnistyksen yhteydessä Toolbox ladattiin keskusmuistiin ennen Mac OS:n käynnistämistä. 

OS X ei käytä Toolboxia, mutta sen Classic-ohjelma sisältää Toolboxin Mac OS:n emulointia varten. Toolboxin ohjelmointirajapinnat on suurelta osin tallella Carbon-ohjelmointirajapinnassa.

Katso myös
----------

* Mac OS
* Finder

Lähteet
-------

1. 1 2  Bruce Horn, The Grand Unified Model (1) - Resources, Folklore.org (englanniksi). Luettu 27. syyskuuta 2006.
2. ↑  Macintosh Toolbox Essentials, Overview of the Macintosh Toolbox, Apple Computer (englanniksi). Luettu 27. syyskuuta 2006.

Aiheesta muualla
----------------

* Applen sovelluskehittäjän opas *Inside Macintosh: Macintosh Toolbox Essentials*
* BootX, käynnistyksenlatausohjelma Old World ROM -Macintosheille
* MkLinux, Mach-ytimen päällä suoritettava Linux-versio