System Monitore und Freezer
Es gibt eine Reihe verschiedener Softwarefreezer. Die Verwendung solcher
Programme kann eine große Hilfe bei der Entwicklung und der Fehlersuche bei
Slaves und zu installierenden Programmen sein. Direkte Unterstützung gibt es in
WHDLoad für HRTmon und ThrillKill. Andere können eventuell über die Option NoTrapHandler/S (Diese hat aber verschiedene
Nachteile!) verwendet werden. Wenn direkte Unterstützung für andere Monitore
gewünscht wird, bitte eine Nachricht an den Autor senden, der dann wenn möglich,
die Unterstützung hinzufügen wird. Beim Starten von WHDLoad wird geprüft, ob ein
bekannter Freezer aktiv ist. Falls einer gefunden wird, werden einige spezielle
Initialisierungen durchgeführt. Wenn die MMU von WHDLoad benutzt wird, wird der
gesamte Speicher der vom Freezer belegt ist als gültig unter WHDLoad markiert
und auf cacheable WriteThrough gesetzt. Während das installierte Programm
ausgeführt wird, werden alle Exceptions und der NMI an den Freezer
weitergeleitet. Außerdem vergleicht WHDLoad bei jedem Interrupt den FreezeKey mit der aktuell gedrückten Taste. Wenn
diese übereinstimmen, wandelt WHDLoad das gegebene Stackframe in ein
NMI-Stackframe um und springt in den NMI-Handler des Freezers.
HRTmon
Die Erkennung im Speicher sollte relativ sicher sein. Ich denke, es wird auch
mit zukünftigen Versionen funktionieren. Vorsicht ist geboten, wenn die MMU
von WHDLoad verwendet wird: Es darf nicht auf Speicher außerhalb von
BaseMem zugegriffen werden. Ansonsten gibt es einen Absturz, weil HRTmon die
resultierende Access Fault Exception nicht verarbeiten kann.
In den HRTmonPrefs muss die Option 'No VBR move' mit einem Häckchen
ausgewählt sein, sonst ist es nicht möglich den Monitor während das Laufes von
WHDLoad zu aktivieren.
Nach dem Zurückkehren aus dem Monitor zum installierten Programm kann es
sein, das die Grafikanzeige nicht in Ordnung ist. Die Ursache dafür ist, dass
HRTmon einige Custom Register überschreibt. Das Problem kann behoben werden,
indem man HRTmon die korrekten Werte für diese Register mitteilt, z.B. mit
'e $100 $5200' was das Register bplcon0 für einen 32-Farben Bildschirm
setzt.
Der in WinUAE eingebaute HRTmon kann von WHDLoad nur erkannt werden, wenn
dieser vorher einmal aktiviert wurde (drücken von PgDn). Dies hat den Grund,
dass bei der Aktivierung der NMI-Vector gesetzt wird welcher von WHDLoad zur
Lokalisierung des Monitors benötigt wird.
ThrillKill
Es gibt keine verwendbare Signatur bei diesem Freezer, deshalb werden einige
Code-Vergleiche verwendet. Das ist auch der Grund dafür, dass die Erkennung
vermutlich nicht mit zukünftigen Versionen funktionieren wird.