Manchmal möchte man die im System installierten Accessories entfernen und stattdessen andere Accessories installieren. Dabei hilft das hier vorgestellte Programm.
Der Besitzer eines Farbmonitors hat es relativ einfach: Beim Umschalten zwischen mittlerer und hoher Auflösung werden alle installierten Accessories entfernt, nebenbei noch alle VDI- Workstations geschlossen und anschließend das AES neu initialisiert, was u.a. auch dazu führt, daß die Accessories von der gerade eingelegten Diskette neu geladen werden. Als Farbmonitorbesitzer schaltet man also zweimal die Auflösung um, und schon hat man das Ziel erreicht.
Der Besitzer eines Monochrommonitors hat es leider nicht so einfach. Doch wenn bei Umschaltung zwischen den Auflösungen das AES reinitialisiert wird, muß es einen legalen Weg geben, dies auch ohne Auflösungsumschaltung zu erreichen.
Erinnern wir uns daran, daß GEM vom IBM-PC auf den Atari ST portiert worden ist: Es gibt bei der IBM-Version die Möglichkeit, das GEM zu verlassen - auch dabei werden alle Accessories entfernt. Dann kann man GEM neu starten, und die Accessories werden neu geladen. Das Terminieren des GEM erreicht man durch spezielle Parameter der Funktion ‘shel_write’, die eigentlich dazu dient, andere Programme zu starten. shel_write(*, y, z, ”PROGNAME.PRG", ” command tail");
Dabei sind “PROGNAME.PRG” der Name des zu startenden Programms und “command tail” die Parameter, die an dieses Programm zu übergeben sind. Wesentlich sind auch die ersten 3 Parameter, bei denen es sich um Integerzahlen handelt:
z gibt an, ob es sich um eine GEM- oder TOS-Applikation handelt. 0 = TOS-Applikation, 1 = GEM-Applikation.
y gibt an, ob es sich um eine grafische (1) oder um eine Textapplikation (0) handelt.
x gibt an, ob das mit “PROGNAME.PRG” spezifizierte Programm ausgeführt (1) oder GEM terminiert werden soll (0).
Terminiert man das GEM auf dem PC, landet man wieder im normalen COMMAND.COM. Auf dem ST gibt es jedoch keinen Kommandointerpreter, vielmehr ist GEM die Standard-Shell. Daher führt eine GEM-Terminierung zu einem GEM-Neustart, mit dem gewünschten Erfolg: Die Accessories werden neu geladen.
Doch wie so oft stimmt die Dokumentation mal wieder nicht mit der Software überein. Daher waren einige Experimente mit den Parametern x, y und z nötig, um das gewünschte Ergebnis zu erhalten. Doch es hat funktioniert, und das Resultat sehen Sie im Listing.
INITAES.C kann sowohl mit dem Entwicklungspaket als auch mit Megamax C kompiliert werden und läuft auf allen TOS-Versionen.
Die Accessories und das DESKTOP.INF werden immer von dem Laufwerk geladen, von dem INITAES.PRG gestartet wurde, es sei denn, es existiert ein Laufwerk C: im System (Ramdisk oder Harddisk); in diesem Falle werden Accessories und DESKTOP.INF von dort geladen.
Vorher installierte Ramdisks, Harddisktreiber etc. sind dann immer noch vorhanden. Vorsicht ist allerdings geboten bei residenten Programmen, die vom Desk-top aus gestartet wurden: Wegen der reichlich fehlerhaften Speicherverwaltung des TOS ist nach der AES-Reinitialisierung u.U. erheblich weniger Speicher frei, weil die ‘alten’ Accessories dann noch als Leichen im Speicher liegen. Dies geschieht jedoch auch bei Farbmonitoren, wenn die Auflösung umgeschaltet wird. Es empfiehlt sich daher, residente Programme (Ramdisks, Harddisktreiber, Spooler etc.) immer aus dem AUTO-Ordner zu starten.
/*
* INITAES.C reinitialize AES - load accessories and DESKTOP.INF
* (c) 1986 by Manfred Erprath
*/
int contrl[12];
int intin[16], ptsin[16],intout[16],ptsout[16];
main()
{
appl_init();
shel_write(0,0,-1, "", ""); /* terminate AES */
appl_exit();
}