Mac 68K
# Mac 68K

Il Mac 68K era emulatore software incluso in tutte le versioni di Mac OS per i processori PowerPC. L'emulatore permetteva l'esecuzione delle applicazioni e delle componenti del sistema operativo scritte in codice 68000 sui processori PowerPC. L'emulatore era totalmente trasparente per l'utente e quasi trasparente per il programmatore. Inizialmente l'emulatore venne scritto da Gary Davidian per i processori 88000, i processori RISC che inizialmente Apple voleva utilizzare per sostituire i processori 68000. In seguito l'emulatore venne scritto per PowerPC e venne utilizzata la ricompilazione dinamica al fine di migliorarne le prestazioni, questa versione venne scritta da Eric Traut che in seguito lavorò allo sviluppo della Virtual Game Station e dell'emulatore Virtual PC.

Tutte le versioni emulavano le istruzioni utente del Motorola 68EC040 e il gestore delle eccezioni dei processori 68020/68030. La macchina emulata era simile al Centris 610, un computer basato su Motorola 68EC040. La prima versione prelevava le singole istruzioni 68000 e le convertiva in equivalenti istruzioni PowerPC, in seguito con i sistemi PCI PowerMac venne presentata una nuova versione dotata di ricompilazione dinamica del software. La ricompilazione dinamica analizzava intere sezioni di codice e le convertiva in codice PowerPC. Questi frammenti di codice venivano tenuti in memoria al fine di poterli riutilizzare direttamente senza ricompilazione in caso fossero stati nuovamente necessari. Questo permetteva all'emulatore di essere anche più veloce di un equivalente processore 68EC040.

L'emulatore era inserito all'interno del sistema operativo a un livello molto basso. Questi si era reso necessario anche perché buona parte del sistema operativo quando vennero presentate le macchine PowerPC non era stato convertito in codice PowerPC ma era rimasto in codice 680X0. Quando un programma chiamava un'API non convertita il processore PowerPC generava un'eccezione che attivava l'emulatore che provvedeva a eseguire l'API. Il sistema operativo venne convertito con una certa lentezza da Apple in codice PowerPC, questo perché il sistema operativo non era stato scritto in modo da essere portabile e quindi buona parte del sistema operativo in realtà venne riscritto totalmente. Questo portava il sistema operativo a diventare più veloce mano a mano che la conversione dello stesso proseguiva.

Per il programmatore la transizione all'architettura PowerPC fu quasi indolore, l'emulatore si attivava e si bloccava in modo trasparente non interferendo con i normali flussi dei programmi. Per la transizione venne sviluppato un nuovo tipo di puntatore, chiamato Universal Procedure Pointer (UPP). Per il codice 680X0 questo era un normale puntatore ma in realtà questo indirizzava una speciale struttura dati, questa serviva per determinare se il codice da eseguire era PowerPC o 680X0 e questa struttura dati veniva utilizzata per avviare il corretto codice dato che le applicazioni scritte durante il periodo di transizioni contenevano al loro interno codice PowerPC e codice 680X0. Questo permetteva anche di miscelare codice 680X0 e PowerPC nella stessa applicazione, il programmatore quindi poteva convertire le applicazioni una componente per volta suddividendo il lavoro in più fasi.

L'emulatore è stato integrato all'interno dell'ambiente Classic del macOS ma con la transizione all'architettura Intel questa componente è stata rimossa e con essa anche l'emulatore.

