Expander - Wie Programme zu Accessories werden

Alle Welt spricht heute von Multitasking und wünscht sich nichts sehnlicher, als möglichst viele Programme gleichzeitig verfügbar zu haben. So etwas ähnliches wurde von den ATARI-Betriebssystementwicklern seinerzeit auch durchdacht, bis man auf die praktische Einrichtung der Accessories (kurz: ACC) kam. In der Fachsprache nennt man solche Programme „TSR“ (engl, „terminate and stay resident), was soviel bedeutet wie: speicherresidentes Programm, das nach dem Laden im Speicher verbleibt, auch wenn es abgebrochen (terminiert) wird.

Bedauerlicherweise kann man in der Menüleiste des ATARI-Desktops aber nur maximal sechs Programme verfügbar halten, und ein Nachladen von weiteren ist normalerweise nur per System-Neustart möglich. Diese Einschränkung hatte vor allem ihren Grund im Speicherplatzbedarf der Accessories, die im RAM ständig präsent sind und auf Aktivierung warten, wodurch sie Anwenderprogrammen nur unnötig Platz wegnehmen.

Es galt dann für die Anwender immer, einen gesunden Mittelweg zwischen der Zahl der benötigten ACCs und dem für Hauptapplikationen freien Arbeitsspeicher zu wählen. Ganz schnell kamen deshalb Programme auf den Markt, die entweder beim Programmstart die nötige bzw. gewünschte ACC-Zusammenstellung abfragten oder auf der Desktop-Ebene neue ACCs nachladbar machten. Letztere sind auch als „Multi-Switcher“ bekannt, weil sie nur einen ACC-Slot belegen und per Menü oder Dialogbox Accessories in großer Zahl zur Auswahl stellen.

Deren Vorgehensweise hat aber mitunter Nachteile: Erstens sind nur Programme ladbar, welche auch als ACC ablaufen würden, zweitens können diese Programme nicht mehr aus dem Speicher entfernt werden, wenn Systemvektoren von ihnen verbogen wurden, und drittens ist ein Nachladen von ACCs nur möglich, wenn die aktive Hauptapplikation nicht schon den gesamten Speicher für sich reserviert hat. Auch konnte man in letzter Zeit die Entwicklung feststellen, daß ursprünglich als ACC lauffähige Hilfsprogramme durch Umbenennen in „PRG“ wie ganz normale Programme aus einem Verzeichnis heraus startbar sind. Nur wurde der eigentliche Sinn der ACCs damit wieder über Bord geworfen: Es sollte möglich sein, ein kleines Dienstprogramm aus einem gerade laufenden GEM-Anwenderprogramm zu starten, ohne es verlassen zu müssen. Spötter sprechen in Anspielung auf echtes Multitasking dann von „Duotasking“, weil die Hauptapplikation zwar noch im RAM liegt, in aller Regel aber nicht mehr steuerbar ist, wenn ein ACC (Nebenapplikation) gerade aktiv ist.

Doch der ACC-Idee waren noch andere Steine im Weg: Da gab es in der Vergangenheit unzählige TOS-Programme, die überhaupt keine Menüleiste mitbrachten. Andere Programme gaukelten nur GEM-Konformität vor und ließen kurzerhand keine ACCs zu. Wieder andere Programme brachten ihr eigenes Desktop mit, in dem einfach keine ACC-Slots vorgesehen waren. Gerade die fehlenden Konventionen in der Programmierung machten es schwer, ACCs sinnvoll einzusetzen. Dies mag auch ein Grund sein, warum die ACC-Idee (mit einigen wenigen rühmlichen Ausnahmen), kaum noch weiterverfolgt wird. Mit der Verfügbarkeit eines echten multitaskingfähigen Betriebssystems für alle ATARI-Geräte wird die Neuentwicklung von Accessories wahrscheinlich völlig in Vergessenheit geraten - leider.

Für viele Anwender aber, die nicht gleich auf eine MultiGEM- oder MultiTOS-Erweiterung umsteigen wollen, dürfte ein Programm interessant sein, das in der ACC-Problematik einen völlig anderen Weg geht: EXPANDER.

Da mittlerweile die meisten ACCs auch als PRG ablauffähig sind, werden sie als solche gestartet, aber nicht als selbständiges Programm (Hauptapplikation) betrieben. Dadurch wurde der Anwendungsbereich beträchtlich erweitert, wobei allerdings kein Multitasking erreicht wird. Vielmehr ist EXPANDER mit einem Multi-Accessory zu vergleichen, welches nach eigenen Wünschen konfigurierbar ist.

Die ACC-Zentrale

Das Programm wird sinnvollerweise als ACC installiert sein. Ein Start als PRG ist auch möglich, aber wenig sinnvoll. Als ACC erlaubt es nun selbst aus einem Anwenderprogramm einen Programmstart. Zusätzlich können Programme direkt nach einem Neustart automatisch aufgerufen werden (AUTO-Start) oder zu einem bestimmten frei wählbaren Zeitpunkt (Zeitstart). Für den Fall, daß ein Anwenderprogramm den gesamten freien Speicher für sich in Anspruch nimmt, kann EXPANDER angewiesen werden, einen Speicherblock beliebiger Größe für spätere Programmstarts zu reservieren. Diese Funktion eignet sich auch dazu, anderen ACCs Arbeitsspeicher zukommen zu lassen, wenn er benötigt wird. Hierfür muß der reservierte Speicher dann lediglich wieder freigegeben werden.

Durch dieses Programm stehen dem Anwender Möglichkeiten offen, die in einem Beispiel kurz dargestellt werden sollen: Es wird z.B. in einer Hochsprache ein Programm entwickelt, wobei jedoch einige Routinen in Assembler zu realisieren sind. Nun befindet man sich gerade im Editor der Hochsprache und benötigt noch eine neue Assembler-Routine als Objekt-File. Ohne EXPANDER bedeutet Quelltext abspeichern, den Editor verlassen, den Assembler aufrufen, die Assembler-Routine schreiben und evtl. in die Bibliothek einbinden usw.

Mit EXPANDER sieht das schon wesentlich einfacher aus: Der Assembler kann gestartet werden, wodurch es für die Laufzeit zum ACC wird. Nun führt man die erforderlichen Arbeiten durch, und bei Verlassen des Assemblers findet man sich im Hochsprachen-Editor wieder. Mit EXPANDER können jetzt generell alle Programme aufgerufen werden, die sowohl als PRG als auch als ACC ablauffähig sind.Solche Programme dürfen dann auch eine GEM-Menüleiste verwenden, sofern diese in einem Fensterdargestellt und nicht durch den AES-Aufruf MENU_BAR (AES-Funktion 30) verwaltet wird. Weiter sind alle GEM-Programme aufrufbar, die nur durch Dialogboxen bedient werden, was bei vielen Hilfsprogrammen der Fall ist. Zusätzlich ist es auch möglich, Programme zu starten, die das GEM nicht nutzen, wie z.B. TOS-Programme oder ähnliche.

Mit EXPANDER ist es auch möglich, anderen ACCs Speicher zukommen zu lassen, selbst wenn das aktive Hauptprogramm alles für sich reservieren würde. Auch das Starten eines Mausbeschleunigers, welcher normalerweise nach einem Neustart von Hand oder durch die Autostart-Funktion des DESKTOPS aufgerufen werden müßte, kann jetzt ausgeführt werden. Ebenso die Zeitstartoption, durch welche die Weckerfunktion des Programmes TIMER o.ä. zu nutzen ist. Dadurch kann die Installation weiterer ACCs eingespart werden. Zudem ist es manchmal auch schon ganz nützlich, daß aus einer Textverarbeitung heraus z.B. ein Kommando-Interpreter zu starten ist, um mit diesem auf der Festplatte eine Datei zu suchen oder ähnliches.

Die verschiedenen Einstellungen für den Betrieb von EXPANDER sind in einer Konfigurationsdatei (INF-Datei) abgelegt. Es können mehrere Konfigurationsdateien vorhanden sein, wobei deren Namen beliebig sein dürfen. Auch sind jederzeit beliebige Konfigurationen nachladbar.

AUTO-matische ACCs

Neben dem Starten von beliebigen Programmen als ACC, wobei neun davon auf Buttons (Schaltknöpfe) gelegt werden können, gibt es einen sogenannten AUTO-Start von bis zu vier Programmen nach dem Einschalten (bzw. Reset).

Möglich ist weiterhin ein zeitabhängiges Starten von bis zu neun Programmen, wobei der Zeitpunkt aus der Konfigurationsdatei entnommen wird. Zusätzlich ist auch ein Zeitstarten von Programmen implementiert, wenn diese bei Programmende EXPANDER die Startzeit übergeben. Natürlich muß der Rechner vor dem Zeitstart schon eingeschaltet sein.

Für den Fall, daß das angegebene Programm den Bildschirminhalt überschreibt (TOS-Programme u.ä.), kann für jedes Programm getrennt die Option Bildschirm sichern aktiv iert werden. Der aktuelle Bildschirminhalt wird dann vor dem Programmstart entweder durch ein Fenster oder Umkopieren durch EXPANDER geschützt.

Fenster zu!

Da durch einen Programmstart vom Applikationsmanager an alle ACCs die Nachricht AC_CLOSE verschickt wird, bleiben deren evtl, geöffnete Fenster bei einem Start durch EXPANDER als nichtbedienbarer Grafikmüll auf dem Desktop zurück. Das hat zwar keine negativen Folgen für die weitere Arbeit mit dem Rechner, ist aber dennoch störend. Um diesen Effekt zu vermeiden, gibt es die Option „ACC-Fenster schließen“. Ist diese Option aktiviert, wird vor jedem Programmstart durch EXPANDER an alle ACCs der Befehl Fenster schließen ausgegeben. Um dem Screen Manager die Möglichkeit zu geben, diese Fenster vom Desktop zu entfernen, werden bis zum endgültigen Programmstart noch zwei Sekunden abgewartet. Das Ein/Ausschalten der Option geschieht durch einen Mausklick auf das Feld hinter der Beschriftung ACC-Fenster.

Da es nicht möglich ist, auf legale Weise den Eigentümer eines geöffneten Fensters zu ermitteln, wird an alle ACCs der Befehl Fenster schließen abgesetzt. Wenn ein ACC beim Empfangen dieser Nachricht nicht überprüft, ob das angegebene Fenster auch ihm gehört und eine gültige Fensternummer vorliegt, kann es im ungünstigsten Fall zu einem Systemabsturz kommen.

Einschränkungen

Programme, die durch EXPANDER im ACC-Modus gestartet werden, dürfen (noch) keine echte GEM-Menüleiste verwenden, da sonst weder der aktive Hauptprozeß noch das nachgeladene Programm bedienbar sind. Selbstgestrickte Menüleisten wie sie z.B. von GFA-BASIC, GFA-Assembler oder Omikron-BASIC verwendet werden, bereiten dagegen keine Schwierigkeiten.

Die Programmoption ACC-Fenster schließen nur mit getesteten ACCs verwenden. Sollte nämlich ein ACC einfach die Fenster schließen, ohne zu kontrollieren, ob sie zu ihm gehören oder eine zulässige Fensternummer haben, kann das im ungünstigsten Fall zu einem Systemabsturz führen. Unbedenklich ist z.B. das CONTROL.ACC von Atari ab TOS 2.06.

Für das Nachladen und Starten von Programmen ist nur eine Schachtelungstiefe von einem Programm zulässig. Das heißt, das nachgeladene PRG darf kein weiteres Programm starten, da sonst ein Adreßfehler auftritt. Prinzipbedingt ist es auch nicht möglich, EXPANDER durch ein anderes ACC nachladen zu lassen. Dabei erfolgt unweigerlich ein Systemabsturz. Das gleiche gilt auch für den Versuch, ein EXPANDER.PRG durch ein EXPANDER.ACC nachzuladen.

Vorsicht ist auch geboten, wenn ein sehr systemnahe programmiertes Programm durch EXPANDER gestartet wird (z.B. ein Monitorprogramm). Mit dem PD-Programm TEMPELMON sind z.B. keine Probleme aufgetreten, dies muß jedoch nicht für andere Programme zutreffen.

Wenn durch EXPANDER eine Speicherreservierung erfolgen soll, empfiehlt es sich, sie direkt nach einem Neustart durchzuführen (bei aktivierter und gesicherter Option geschieht dies automatisch), oder wenigstens, solange man sich noch im DESKTOP befindet. Dieses Vorgehen beugt einer frühzeitigen Zerstückelung des freien Speichers vor. Bei einigen Programmen ist außerdem darauf zu achten, daß bei zu wenig freiem Speicher und wiederholten Startversuchen diese unter Umständen mit einem Systemabsturz reagieren (z.B. der GFA-Assembler).

Es ist ohne weiteres möglich, vektorverbiegende Programme zu starten, sie können sich sogar resident im Speicher verankern (z.B. Mausbeschleuniger). Das Umlenken der Systemvektoren durch diese Programme muß allerdings nach dem XBRA-Verfahren erfolgen, da sie andernfalls bei Programmende durch EXPANDER wieder ausgehängt werden.

Sollte noch jemand mit einem Disketten-TOS der Version 1.0 arbeiten, empfiehlt es sich, auf die Speicherreservierungsoption zu verzichten. In dieser Konstellation schnappt sich EXPANDER nämlich Speicher, der vom Betriebssystem belegt wird, was logischerweise zu einen Systemabsturz führt. Da dieses Betriebssystem wohl kaum noch im Einsatz sein dürfte, wurde auf eine Anpassung von EXPANDER auf dieses Verhalten verzichtet.

Summa summarum

EXPANDER arbeitet auf allen ATARI ST/STE/TT-Modellen ab TOS-Version 1.0. Ebenso werden Grafikkarten und Farbdarstellung unterstützt. Lediglich in der niedrigen ST-Auflösung dürfte die Bedienung des Programmes schwierig werden, da dessen Dialogbox nicht mehr ganz auf den Bildschirm paßt.

Zusammengefaßt kann man sagen, daß EXPANDER als eine Erweiterung der Möglichkeiten zu betrachten ist, welche ACCs normalerweise zur Verfügungen stellen (daher auch der Name). Es ist als kostengünstige und speicherplatzsparende Alternative zu bereits erhältlichen oder kommenden Multitasking-Systemen für ATARI ST Computer gedacht.

Das Programm ist in zwei Versionen erhältlich. Die erste ist eine im Funktionsumfang reduzierte PD-Version, die andere die Vollversion, welche durch Zahlung einer Registriergebühr zugesandt wird. Ist eine Registrierung erfolgt, wird auf den Namen des Käufers eine Registriernummer vergeben, die im Programmcode verewigt wird. Dadurch wird aus der PD-Version die Vollversion, welche den gesamten Funktionsumfang bereitstellt (die dann aber auch dem Copyright unterliegt und nicht mehr weitergegeben werden darf).

Registrierte Anwender erhalten eine Benachrichtigung, wenn eine neue Version vorliegt. Gegen Einsendung einer Bearbeitungsgebühr und eines frankierten Rückumschlages kann diese dann erworben werden. Im Preis der Registrierung ist eine gedruckte Ausgabe der Programmbeschreibung enthalten!

DK

Bezugsadresse:

Scherf Software-Entwicklung Birkenweg 37 6601 Klarenthal



Aus: ST-Computer 10 / 1992, Seite 60

Links

Copyright-Bestimmungen: siehe Über diese Seite