In Einstellungen > Allgemeines
können Sie die Emulation
der rechten Maustaste konfigurieren.
MagicMacX ist jetzt ein Application Package
. MachO steht
für Mach-Object, Mach ist der microkernel
von Mac OS X.
Applikationen im MachO-Paketformat haben folgende Eigenheiten:
(der Finder unterschlägt normalerweise das Suffix.app
.app). Der Ordner enthält beliebige Programme und Daten, die man im Finder unter
Paketinhalt anzeigensehen kann.
resource forksmehr wie in Mac OS Classic. Daher kann das Programm problemlos gepackt oder z.B. auf Windows-Systeme kopiert werden.
Die Vorteile des MachO-Paketformats überwiegen und die Nachteile
lassen sich leicht in Kauf nehmen. Für MagicMacX ergeben sich damit
insbesondere noch folgende Neuerungen:
MagicMacX-Programme für Deutsch, Englisch und Französisch mehr, sondern nur noch eine, die automatisch je nach Systemeinstellungen die richtigen Ressourcen lädt. Der MagiC-Kernel ist ebenfalls lokalisiert. D.h., es liegen drei Versionen im Bundle, die je nach Spracheinstellung geladen werden.
Wegen des MachO-Formats von MagicMacX gibt es ein ganz neues PlugIn-Konzept, das sich an den Apple-Vorgaben (CFPlugIn) orientiert. Das Beispielprojekt ist für Xcode ausgelegt.
Von der Atari-Seite aus können außer den PEF-/CFM-Bibliotheken jetzt auch die neuen CFPlugIn-Bibliotheken im MachO-Format eingebunden werden. Dazu gibt man den ganzen Namen einschließlich Suffix (z.B. .bundle) als Bibliotheknamen an. Gesucht wird dann in
~/Library/MagicMacX/PlugIns
sowie in
/System/Library/MagicMacX/PlugIns
Weitere Informationen liefert das mitgelieferte Beispiel-PlugIn.
Die bisherigen XCMDs (PlugIns) werden noch (eingeschränkt)
unterstützt. Das eine Problem dabei besteht darin, daß die
Bibliotheken im PEF-Format sind und vom CFM (Code Fragment Manager)
verwaltet werden, das Programm selbst aber inzwischen ein
MachO-Programm ist. Dafür muß sogenannter glue-Code eingebunden
werden (call CFM from MachO
), der zur Laufzeit einen
Code-Schnipsel generiert, welcher die CFM-Funktion aufruft. Die
Callbacks müssen natürlich andersrum ver-glue-t werden (call
MachO from CFM
). Beim Entladen der Bibliotheken werden alle
Schnipsel wieder freigegeben. Das zweite Problem ist die
Carbon-Funktion GetSharedLibrary(), die offenbar überhaupt nicht mehr
funktioniert, d.h. die Bibliotheken nicht finden kann.
Um das zweite Problem, das Nichtfinden der Bibliotheken, zu
umgehen, mußte statt GetSharedLibrary() die Funktion
LoadDiskFragment() verwendet werden, die aber einen Dateinamen
(eigentlich einen FSSpec) und nicht einen Bibiotheknamen benötigt.
Wenn ein Atari-Programm den Bibiotheknamen angibt, so muß der
Dateiname geraten
werden, indem, wenn er keine Endung hat,
.lib oder .shlib
angehängt wird.
Zur Zeit sucht MagicMacX die PlugIns ausschließlich innerhalb des
Paketes (application packet
), und zwar dort, wo die
ausführbare Datei liegt, also in (!FILE
[MagicMacX.app/Contents/MacOS]). Eine spätere Version könnte aber
einen Plugin-Ordner im Paket unterstützen.
Folglich müssen alle XCMDs, auch die von Calamus, in das Paket
kopiert/verschoben werden. Der Ordner Preload-XCMDs
sollte
nicht mehr verwendet werden.
Beim Laden eines PlugIns (initiiert von der Atari-Seite aus) wird, wenn ein Pfad angegeben ist, nur eine CFM/PEF-Bibliothek geladen. Falls statt des Pfades ein Name angegeben wurde, wird zunächst ein CFPlugIn (MachO-Bundle) von (!FILE [~/Library/MagicMacX/PlugIns]) geladen, und, wenn es dort nicht gefunden wird, in (!FILE [/Library/MagicMacX/PlugIns]) und schließlich, wenn es dort auch nicht gefunden wird, wird eine CFM/PEF-Bibliothek gesucht.
Diverse Optimierungen im 68k-Emulator haben die
Ausführungsgeschwindigkeit der Atari-Programme etwas erhöht. Es gibt
ja bekanntlich keinen objektiven benchmark
, aber der Gewinn
dürfte so bei 10 bis 20 % liegen.
Eine neue Version von (!FILE [MagicMac.OS]) signalisiert dem
Emulator, wenn sich MagiC in der idle loop
befindet. Der
Emulator-Thread legt sich dann schlafen, bis ein simulierter Interrupt
auftritt. Damit braucht MagicMacX nur noch wenig Rechenzeit auf dem
Mac, wenn gerade kein Atari-Programm läuft (d.h. Berechnungen o.ä.
durchführt).
Die Funktionen MagicMacX ausblenden
bzw. Andere
ausblenden
werden jetzt berücksichtigt. Dabei wird dieser Fall
wie ein manuelles Schließen behandelt. Beim Wiederöffnen wird der
Inhalt des Atari-Emulatorfensters wieder automatisch neu aufgebaut.
Die Erkennung, wenn die Bildschirmeinstellungen geändert wurden
(Größe, Farben), mußte geändert werden und benötigt jetzt
mindestens Mac OS X 10.3 Panther
(CGDisplayRegisterReconfigurationCallback() statt
DisplayManager). Damit sollte MagicMacX bei Änderung
der Bildschirmeinstellungen nicht mehr abstürzen, außerdem ignoriert
MagicMacX Änderungen, die an anderen Bildschirmen als dem verwendeten
vorgenommen werden.
Das Apple-Event
odoc wird ausgewertet,
d.h., Sie können MagicMacX jetzt durch Doppelklick auf eine TOS-Datei
starten oder eine Datei auf das Icon des laufenden Programms ziehen.
Dazu braucht man aber den MagicMacX-Dämon
MMXDAEMN.PRG. Dieses Hilfsprogramm, das die
Kommunikation zwischen dem Emulator MagicMacX auf der Mac-Seite mit
dem emulierten Atari bereitstellt, installieren Sie am besten durch
Kopieren nach C:\gemsys\magic\start\ auf der
Atari-Seite.
Beim Beenden von MagicMacX wird versucht, das emulierte MagiC
sauber
herunterzufahren. Dazu muß, wie beim Starten von
Programmen über Apple-Events, auf der Atari-Seite der
MMXDAEMN laufen. Funktioniert das manuelle
Herunterfahren (über den Menüpunkt in MagicMacX) nicht, so kann ein
zweiter Versuch unternommen werden; nach Bestätigung eines Dialogs
kann MagicMacX dann beendet werden, ohne den Emulator korrekt
herunterzufahren.
Im Fall eines Apple-Events quit, ausgelöst über das Dock, durch Abmelden oder Herunterfahren des Rechners, hat das emulierte MagiC zehn Sekunden Zeit, sich zu beenden. Anschließend wird MagicMacX nach Rückfrage beendet.
Die Druckdateien werden beim Beenden von MagicMacX automatisch gelöscht.
Das XCMD-Beispielprogramm, das eine Dateiauswahl zeigt, stürzt
nicht mehr ab, wenn man den Dialog mit Abbrechen
beendet. Das
war offenbar doch kein Fehler in MagicMacX, sondern ein Systemfehler,
den Apple mit 10.3 beseitigt hat.
Der Beenden-Dialog (Alert
) MagicMacX sofort beenden?
Nichtgesicherte Daten laufender Atari-Anwendungen gehen verloren
behandelt jetzt die [Esc]-Taste wie einen Klick auf den
Abbrechen
-Button. Dafür mußte die Objekt-Numerierung
geändert werden (2 = Abbrechen, 3 = OK). Die [Return]-Taste wird
offenbar nicht unterstützt, so daß man hier wohl keine
Eingriffmöglichkeit hat.
Dpathconf(-1) arbeitet jetzt korrekt. Leider wurde
fälschlich auf 0xffff statt
0xffffffff abgefragt. (Auf dem Mac ist ein int
32 Bit breit, nicht 16 wie bei den meisten Compilern
auf dem Atari.)
Dcntl() überprüft den übergebenen Zeiger und wird daher von Calamus nicht mehr zum Absturz gebracht.
Eine tschechische Lokalisierung (mit englischem MagiC-Kernel) wurde hinzugefügt.
Mitunter tritt das Phänomen auf, daß bei installiertem NVDI und log=-Eintrag im [boot]-Abschnitt von MAGX.INF die BIOS-Textausgabe völlig im Eimer ist. Man merkt das z.B., wenn man [Ctrl][Alt][Esc] drückt und nicht viel sieht. Oder wenn man das Programm VT52.PRG umbenennt, so daß das System das Programm nicht finden kann, und dann ein TOS-Programm startet. Läßt man NVDI weg oder löscht die log=-Zeile aus MAGX.INF, ist wieder alles in Ordnung.
Die Tastenkombination [Ctrl][F1] scheint nicht richtig beim Atari
anzukommen. Offenbar ist sie von Mac OS X reserviert. Um sie wieder zu
ermöglichen, muß man unter Mac OS X das
Systemeinstellungen-Kontrollfeld Tastatur und Maus >
Tastatur-Kurzbefehle
öffnen. Hier muß man die Aktion, die der
Taste [Ctrl][F1] zugewiesen ist, abschalten.
Irgendwas stimmt aber im Kontrollfeld nicht: Die Funktion
Fenster drehen
(gemeint ist: zyklisch wechseln) hat den
Kurzbefehl [Cmd][^], den kann man aber nicht von Hand aktivieren, wenn
der Taste versehentlich etwas anderes zugewiesen ist. Man muß alles
auf Standard
setzen, dann stimmt es wieder.