Przybornik Macintosh - Macintosh Toolbox

W Macintosh Toolbox implementuje wiele funkcji wysokiego szczebla na Classic Mac OS , w tym zestaw interfejsów programowania aplikacji do tworzenia oprogramowania na platformie. Toolbox składa się z wielu „menedżerów”, komponentów oprogramowania, takich jak QuickDraw , odpowiedzialnych za rysowanie grafiki na ekranie, oraz Menedżera menu, które utrzymują struktury danych opisujące pasek menu. Ponieważ oryginalny komputer Macintosh został zaprojektowany bez pamięci wirtualnej lub ochrony pamięci , ważne było, aby klasyfikować kod w zależności od tego, kiedy powinien zostać załadowany do pamięci lub przechowywany na dysku oraz jak należy uzyskać do niego dostęp. Zestaw narzędzi składa się z podprogramów niezbędnych na tyle, aby były trwale przechowywane w pamięci i dostępne za pomocą dwubajtowej instrukcji maszynowej ; jednakże wyklucza podstawowe funkcje „jądra”, takie jak zarządzanie pamięcią i system plików . Zauważ, że Toolbox nie rysuje menu na ekranie: menu zostały zaprojektowane tak, aby miały dostosowywalny wygląd, więc kod rysowania był przechowywany w zasobie , który mógł znajdować się na dysku.

Adwent i realizacja

W systemach 68k

Oryginalna implementacja rodziny Motorola 68000 systemu operacyjnego Macintosh wykonuje wywołania systemowe przy użyciu nielegalnego mechanizmu obsługi wyjątków kodu operacji tego procesora . Motorola określiła, że ​​instrukcje zaczynające się od 1111 i 1010 nigdy nie będą używane w przyszłych procesorach z rodziny 68000, dzięki czemu będą mogły być używane jako takie przez system operacyjny. Co więcej, każdy z nich miał swój własny dedykowany wektor przerwań , oddzielny od ogólnego nielegalnego programu obsługi kodu operacji. Ponieważ 1111 było zarezerwowane do użytku przez współprocesorów, takich jak 68881 FPU , Apple wybrał 1010 ( szesnastkowo A ) jako prefiks dla wywołań systemu operacyjnego. Obchodzenie nielegalnych instrukcji jest znany jako odłowu , więc te specjalne instrukcje były nazywane A-pułapek . Kiedy procesor napotyka taką instrukcję, przekazuje sterowanie do systemu operacyjnego, który wyszukuje odpowiednie zadanie i je wykonuje. Mechanizm ten miał dwie zalety:

  • Powoduje to zwarte programy. Tylko dwa bajty są pobierane przy każdym dostępie do systemu operacyjnego, w przeciwieństwie do czterech lub sześciu w przypadku zwykłych instrukcji skoku .
  • Tabela używana do wyszukiwania odpowiedniej funkcji jest przechowywana w pamięci RAM. Następnie, nawet jeśli podstawowy kod był przechowywany w pamięci ROM, nadal można go zastąpić ( załatać ), zastępując adres pamięci ROM adresem pamięci RAM.

System został dodatkowo zoptymalizowany przez przydzielenie niektórych bitów instrukcji A-trap w celu przechowywania parametrów dla najczęściej używanych funkcji. Na przykład alokacja pamięci jest bardzo powszechnym zadaniem, więc powinna być wyrażona w jak najmniejszej liczbie bajtów kodu. Czasami programista chce wyczyścić blok pamięci do zera, więc albo funkcja alokacji powinna przyjąć parametr boolowski , albo powinny istnieć dwie funkcje alokacji. Przekazanie parametru wymagałoby dodatkowej dwubajtowej instrukcji, co byłoby nieefektywne. Posiadanie dwóch funkcji wymagałoby co najmniej dodatkowych czterech bajtów pamięci RAM używanej na adres w tabeli przeglądowej funkcji. Najbardziej wydajnym rozwiązaniem jest mapowanie wielu pułapek A do tego samego podprogramu, który następnie używa pułapki A jako parametru. Dotyczy to najczęściej używanych podprogramów. Jednak zestaw narzędzi składał się z rzadziej używanych podprogramów. Zestaw narzędzi został zdefiniowany jako zbiór podprogramów, które nie przyjmowały parametrów w pułapce A i były indeksowane z tablicy wysyłkowej o wielkości 1024 wpisów i 4 kilobajtach . (Maszyny dostarczane z mniej niż jednym megabajtem pamięci RAM używają pojedynczej tabeli zawierającej 512 wpisów, co odpowiada 256-wpisowej tablicy rozsyłania systemu operacyjnego w późniejszych wersjach ROM).

W systemach PowerPC

W 1994 roku Apple wypuściło Macintoshy wykorzystujące architekturę PowerPC , w której brakowało sprzętowej obsługi mechanizmu A-trap dostępnego w systemach 68k. Jednak ze względu na ich zastosowanie w stosowaniu poprawek oprogramowania zachowano tabele wysyłek. Kod biblioteki API będący podstawą dowolnej procedury Toolbox nie robi nic poza odwołaniem się do tabeli wysyłki. Tabela wysyłkowa łączyła się tylko z emulowanym kodem rodziny 68000. Funkcje Toolbox zaimplementowane w natywnym kodzie PowerPC muszą najpierw wyłączyć emulator za pomocą Menedżera trybu mieszanego. Ze względu na jednolitość i rozszerzalność nowe wpisy funkcji były nawet dodawane do Toolbox po przejściu na PowerPC.

Istniał jednak alternatywny mechanizm w Menedżerze fragmentów kodu, który był używany do ładowania i dynamicznego łączenia programów natywnych PowerPC. Funkcję wywołań systemowych PowerPC, analogiczną do mechanizmu A-trap, użyto do połączenia z nanokernelem Mac OS , który oferował kilka usług bezpośrednio przydatnych w aplikacjach.

Funkcjonalność

Interfejsy programistyczne

Zestaw narzędzi składa się z powszechnie używanych funkcji, ale nie najbardziej powszechnie używanych funkcji. W rezultacie wyrósł na mieszaninę różnych bibliotek API . Zestaw narzędzi obejmuje większość podstawowych funkcji, które wyróżniały klasyczny system Mac OS. Dokumenty Apple „Inside Macintosh: Macintosh Toolbox Essentials” i „Inside Macintosh: More Macintosh Toolbox”, podobnie niejasne, również dokumentują większość zestawu narzędzi.

Użyj podczas uruchamiania

Ponieważ znaczna część Toolbox jest zaimplementowana w pamięci ROM, wraz z oprogramowaniem układowym komputera , było wygodne w użyciu jako środowisko bootloadera . W połączeniu z zasobami przechowywanymi w chipie ROM, Toolbox może zmienić kolor ekranu na szary, pokazać okno dialogowe z podpisem „Witamy w Macintosh” i wyświetlić kursor myszy. Korzystając z Toolbox, aby pomóc uruchomić maszynę, podstawowe środowisko podobne do Mac może zostać zainicjowane przed załadowaniem walizki systemowej z dysku (w rzeczywistości przed wykonaniem ROMów na kartach NuBus), czyli wtedy, gdy decyzja o użyciu 24-bitowej lub 32-bitowej należy wykonać -bitowe adresowanie. (Wsparcie Systemu 7 dla 32-bitowego adresowania wymaga 32-bitowych czystych ROM, ponieważ starsze Mac ROMy nie obsługują tego). Potrzeba diagnostyki, tak jak w BIOS - ie dla płyt zgodnych z IBM PC, nie jest konieczna, ponieważ Macintosh ma większość diagnostyki w POST i automatycznie zgłasza błędy za pomocą kodów „ Sad Mac ”.

Podobieństwa między środowiskiem startowym a rzeczywistym systemem operacyjnym nie należy jednak mylić z identycznością. Chociaż proces rozruchu „klasycznego systemu Mac OS” jest zawiły i zasadniczo nieudokumentowany, nie jest bardziej ograniczony niż BIOS zgodny z IBM PC . Podobnie jak główny rekord rozruchowy komputera PC, Mac z pamięcią ROM odczytuje i wykonuje kod z pierwszych bloków („bloków rozruchowych”) partycji dysku wybranej jako urządzenie rozruchowe . Następnie bloki bagażnika sprawdzają, czy istnieje odpowiednie podstawowe środowisko i używają go do załadowania walizki System. Inny system operacyjny z innym systemem plików można uruchomić, używając po prostu własnego kodu w blokach rozruchowych. Ten system nie był jednak używany w PowerPC Linux, ponieważ Open Firmware w maszynach New World ROM wymaga bootloadera w systemie plików HFS - powód, który nie ma nic wspólnego z Toolboxem czy ogólnie „staromodnymi” komputerami Mac. Mówiąc ściślej, panel sterowania Dysk startowy w klasycznym systemie Mac OS i macOS pozwala użytkownikowi tylko wybrać zamontowany system plików z bardzo szczególnymi ograniczeniami.

Dziedzictwo

W systemie Mac OS X Toolbox nie jest w ogóle używany, chociaż środowisko klasyczne ładuje plik Toolbox ROM do swojej maszyny wirtualnej. Znaczna część Toolbox została zrestrukturyzowana i zaimplementowana jako część interfejsu API Apple Carbon do programowania, umożliwiając programistom zaznajomionym z Toolbox łatwiejsze przenoszenie kodu programu do Mac OS X.

Zobacz też

Bibliografia

  1. ^ Apple Inc. (6 lipca 1996). „Instrukcje A-Line” . Zarchiwizowane od oryginału w dniu 2004-07-02. Alternatywny adres URL
  2. ^ Apple Inc. (6 lipca 1996). „O menedżerze pułapek” . Zarchiwizowane od oryginału w dniu 2004-07-02. Alternatywny adres URL
  3. ^ a b Olson, James H. (4 września 1997). „Mac Alamanac II” . Linux / m68k dla komputerów Macintosh .
  4. ^ Apple Inc. (6 lipca 1996). „Boot Blocks” . Zarchiwizowane od oryginału w dniu 2004-03-12. Alternatywny adres URL

Linki zewnętrzne