MagicMacX arbeitet ähnlich wie sein Pendant für Mac OS 8 und 9, MagicMac; es ergeben sich aber einige wichtige Unterschiede.
Leider konnte das bewährte Konzept von MagicMac aufgrund der völlig anderen Systemarchitektur von Mac OS X nicht beibehalten oder angepaßt werden, selbst die Lauffähigkeit unter Classic war nicht möglich (wegen der Nicht-Umblendbarkeit des unteren 68k-Adreßraums). Aus diesem Grund ist das vorliegende Programmeine vollständige Neuentwicklung und enthält keinen Code von MagicMac.
Dies sind die wesentlichen Vorteile im Vergleich zu MagicMac:
Da der 68k-Interpreter vollständig in MagicMacX integriert ist, konnte eine höhere Kompatibilität zum Atari realisiert werden. So funktioniert z.B. das Trace-Bit richtig, wodurch, im Gegensatz zu MagicMac, Debugging problemlos möglich ist(PureDebugger, BUG.TTP usw.).
Der 68k-Emulator emuliert auch in gewissen Grenzen Atari-Hardware, zumindest werden teilweise Zugriffe ignoriert (z.B. auf die Bildschirm-Register), andererseits jedoch Busfehler erzeugt (Zugriff auf nicht vorhandene FPU). So ist ein FPUPATCH nicht mehr notwendig.
Statt der Atari-Bomben gibt es einen Mac-Dialog, der eine genaue Fehlerbeschreibung liefert. Für genauere Informationen kann der Dialog aufgeklapptwerden.
MagicMacX verwendet, im Gegensatz zu MagicMac, nur sogenannte
Highlevel
-Schnittstellen zu Mac OS X. Dadurch ergeben sich viel
weniger Probleme beim Einsatz unterschiedlicher Mac-Hardware wie
Tastaturen/Mäusen usw. Probleme wie z.B. beim Umstieg von Mac OS 9
auf 9.1 sollten mit MagicMacX nicht auftreten.
MagicMacX unterstützt jede Mehrtastenmaus, die vom Betriebssystem unterstützt wird.
Das Programm arbeitet im Prinzip wesentlich stabiler als MagicMac. So ist es für ein Atari-Programm unmöglich, dem Betriebssystem irgendwelche Schäden zuzufügen. Auch die Wahrscheinlichkeit, daß MagicMacX selbst durch ein amoklaufendes Atari-Programm instabil wird, sind wesentlich geringer.
MagicMacX erlaubt, die Mac-Menüleiste eingeschaltet zu lassen, während der Atari emuliert wird.
MagicMacX hat einen Pseudo-Fenstermodus. Der emulierte Atari
schreibt zwar immer noch direkt in den Mac-Bildschirm, jedoch auch
optional innerhalb eines Fensterrahmens. Das Fenster läßt sich sogar
minimieren und ins Dock legen. Unabhängig vom Fenster kann der
Emulator mit [Cmd][R] angehalten und wieder gestartet werden, falls er
z.B. im Dock keine Rechenzeit verbrauchen soll. Das Icon
im
Dock wird sogar regelmäßig aktualisiert.
Im Gegensatz zu MagicMac reagiert MagicMacX auf die Nachricht,
daß das Emulatorfenster in den Hintergrund tritt, mit einer
Zeichenmodus-Änderung: Im Hintergrund (d.h. auch dann, wenn ein
Mac-Menü heruntergeklappt wurde) schreibt der emulierte Atari
sauber
, d.h. betriebssystemkonform, in den Hintergrundspeicher
des Fensters, und dieser wird zyklisch unter Berücksichtigung aller
Verdeckungen in das Fenster kopiert (wie unter MagicPC, jedoch ist der
Hintergrundspeicher Bestandteil von Mac OS X, nicht jedoch von
Windows). Vorder- und Hintergrundmodus sind am Fenstertitel erkennbar.
Die Aktualisierungsfrequenz ist konfigurierbar.
Auf der Atari-Seite ist Laufwerk M: das gesamte Mac-Dateisystem, wie es von Carbon-Programmen gesehen wird. Als freier Platz auf M: werden dem Atari immer 2 GB vorgespiegelt.
Das Atari-Multitasking ist stets präemptiv und braucht nicht gesondert abgeschaltet zu werden, außer ggf. wie beim Atari in der Konfigurationsdatei MAGX.INF.
Diverse HSModem-Fcntl-Kommandos werden für die serielle Schnittstelle unterstützt. Es empfiehlt sich, den Gerätetreiber DEV_SER auf dem simulierten Atari zu installieren, um eine optimale Geschwindigkeit zu erhalten (dabei wird das Atari-BIOS umgangen). Dieser installiert die Gerätedatei U:\DEV\SERIAL. Gerätetreiber *.dev gehören nach C:\GEMSYS\MAGIC\XTENSION.
Die Tastaturtabellen im Atari-Kernel können mit dead
keys
konfiguriert werden. Beispieldateien für Englisch und
Tschechisch werden mitgeliefert. Die alten Tastaturtabellen von MagiC
funktionieren nicht mehr, weil mindestens zwei Nullbytes für eine
leere dead key table
enthalten sein müssen.
Die Emulator-Erweiterungen (XCMDs) können in den Ordner Preload-XCMDs gelegt werden, wenn sie direkt bei Programmstart geladen werden sollen.
Durch den neuen, von Mac OS X unabhängigen Emulatorkern ergeben sich systembedingt auch einige Einschränkungen gegenüber MagicMac:
Aufgrund des interpretierenden 68k-Emulators ergibt sich eine geringere Ausführungs-Geschwindigkeit für Atari-Programmem – MagicMacX verwendet einen compilierenden Emulator.
Der direkte Zugriff auf Disketten oder Festplatten unter Verwendung des MagiC-eigenen VFAT-Dateisystems ist unter Mac OS X nicht mehr möglich. Theoretisch wäre es denkbar, Laufwerk-Container wie in MagicPC zu verwenden, diese sind jedoch noch nicht implementiert.
Aufgrund des völlig anderen Konzepts sind alle Programme für
MagicMac, die auf die Mac-OS-Seite zugreifen, nicht mehr kompatibel.
Grund dafür ist, daß es in Carbon keine Mac-OS-68k-Seite mehr gibt.
Dennoch können Atari-Programme über shared libraries
direkt
auf Mac-OS-Funktionen zugreifen (siehe Programmier-Dokumentation).
Die Bildschirmtreiber von NVDI 5 funktionieren aus dem genannten Grund nicht. Sie greifen direkt auf Quickdraw zu und müßten angepaßt werden. Jedoch kann (und sollte!) NVDI als GDOS verwendet werden.
Der MACPRN-Druckertreiber von NVDI 5 funktioniert ebenfalls nicht. Nur diejenigen Drucker können angesprochen werden, für die Atari-Druckertreiber existieren. Für den Zugriff auf Mac-Drucker müßte MACPRN an MagicMacX angepaßt werden.
Es gibt offenbar einen Fehler ab Mac OS X 10.2 im File
Manager
, der dazu führt, daß das Durchsuchen eines
Verzeichnisses in umgekehrter Reihenfolge (war Standard bei MagicMac)
nicht richtig funktioniert. Der Fehler wird sichtbar, wenn man in
MagxDesk einen neuen Ordner erstellt, dann noch einen usw. Irgendwie
kommt Mac OS X nicht mit und man sieht den neu erstellten Ordner
nicht, sondern erst bei Druck auf [Esc].
Es sieht so aus, als wenn zunächst die Größe des Verzeichnisses
höher gesetzt wird (Anzahl++) und erst dann die Datei/der Ordner
tatsächlich eingetragen wird. Dazwischen ruft MagiC aber die Anzahl
ab und findet ein Objekt weniger, als angegeben wurde. Daher ist für
die aktuelle Version die umgekehrte Reihenfolge abgeschaltet für alle
Laufwerke außer C: und
M:. Damit gibt es natürlich Probleme beim
rekursiven Löschen von Dateien. Der Fehler ist leider in Mac OS X
enthalten und kann daher durch MagicMacX nicht behoben werden. Der
Fehler ist an Apple gemeldet worden, jedoch anscheinend noch nicht
behoben worden.
Achtung: Wenn MagicMacX mit einer alten
MAGX.INF gestartet wird, kann das AES
abstürzen. Der Gerätetreiber #_DEV muß
immer 1 0
sein.
Zur Zeit bestehen folgende weiteren Einschränkungen gegenüber MagicMac:
68k-Bus- und -Adreßfehler sind in dem verwendeten 68k-Emulator nicht vollständig implementiert. So lesen einige Zugriffe von einem ungültigen Speicherbereich zur Zeit einfach Nullen; Schreibzugriffe werden teilweise ignoriert. Außer beim Debuggen von Atari-Programmen oder in sehr speziellen Atari-Programmen birgt dieses Verhalten aber keinerlei Nachteile.
Der Atari-Adreßraum ist stets zusammenhängend, d.h. TT-RAM wird nicht unterstützt. Auch diese Einschränkungen dürfte für alle voll korrekt programmierten Atari-Programme bedeutungslos sein.
Die rechte [Shift]-Taste kann mit Apples Carbon-Programmierschnittstelle leider nicht gesondert abgefragt werden.
Es wird stets möglichst viel Zeit an die anderen
Mac-Applikationen abgegeben; d.h. MagicMacX benötigt einen Prozessor
nur dann, wenn ein Atari-Programm etwas zu rechnen hat.
Für die Rechenzeit-Verteilung sorgt Mac OS X; sie kann nicht
beeinflußt werden. Möglicherweise lassen sich mit UNIX-Kommandos
(wie nice
) aber Prioritäten festlegen. In den
allermeisten Fällen dürfte dies aber nicht nötig sein.
Die Dateioperationen sind zur Zeit ausschließlich synchron. Angesichts der Transfergeschwindigkeit heutiger Festplatten ist diese Einschränkung wahrscheinlich ohne irgendeinen merklichen Einfluß auf die Emulation.
Eine unmittelbare Dateisicherung
ist unter Mac OS X
nicht mehr nötig.
Gestartet wird stets von Laufwerk C:. Laufwerk C: ist immer der Ordner MAGIC_C im selben Verzeichnis wie das MagicMacX-Programm.
Eine Konfiguration von Dateitypen wird nicht unterstützt. Nur die Dateitypen PRG, TOS und TTP (also alle Atari-Programme) erhalten einen MagicMacX-Type/Creator und damit ein entsprechendes Icon. Alle anderen Dateitypen erhalten einen leeren Type/Creator, d.h., es wird dem Finder überlassen, welches Mac-Programm dem Dateisuffix zugeordnet ist. Damit erhalten Dateien vom Typ *.TXT automatisch das TextEdit-Icon usw. (Für Calamus-Dokumente mit dem Suffix .CDK ist allerdings ebenfalls eine Unterstützung vorgesehen. Das entsprechende Icon existiert jedoch noch nicht.)
Mac OS X fängt offenbar einige Tastenkombinationen ab,
zumindest auf meinem alten G3. Von der Standard-Einstellung
abweichende Tasten-Zuweisungen sind z.Zt. nicht möglich. Jedoch
werden unterstützt:
Tastenkombination | Funktion | Taste |
[Cmd][U] | [Undo] | [Pause] |
[Cmd][L] | [Help] | [Druck] |
[Cmd][D] | [Delete] | [Entf]) |
[Cmd][E] | [Insert] | [Einfg] |
[Cmd][M] | [Clr/Home] | [Pos1] |
Bisher ist kein Kompatibilitätsmodus für die Atari-Grafik (z.B. 640*400*2) implementiert. MagicMacX verwendet nur die Auflösungen, die Mac OS X unterstützt.
Bisher hat MagicMacX nicht die Fähigkeit, die Bildschirmauflösung oder Farbtiefe umzuschalten. MagiC läuft daher immer in der Farbe und Auflösung, die unter Mac OS X eingestellt wurden.
Ist die Mac-Menüleiste sichtbar, funktioniert (im Gegensatz zu
OS 9.x) die Vollbild-Anzeige in Mac OS X nicht. Apple bezeichnet das
als beabsichtigt
und es führt dazu, daß das Dock immer noch
im Vordergrund liegt und MagicMacX stört. Notfalls kann man das Dock
abschalten: Prozeß Dock
über Terminal-Fenster abschießen.
Dazu z.B.kill -STOP
und später
kill -CONT
eingeben.
Die letztgenannten Einschränkungen können möglicherweise in späteren Versionen beseitigt werden.