Topic : Dokumentation zu TOS2GEM Author : Thomas Binder Version : tos2gem.hyp (21/06/95) Subject : Dokumentation/Utilities Nodes : 62 Index Size : 1740 HCP-Version : 3 Compiled on : Atari @charset : atarist @lang : @default : @help : helpme @options : -i +zz -t4 @width : 75 View Ref-File Rechner der TOS-Familie unterstützen zwei verschiedene Programmtypen: GEM-Applikationen (mit den Endungen .APP, .GTP oder .PRG) und TOS-Pro- gramme (.TOS und .TTP). Erstere arbeiten mit Menüleisten, Fenstern, etc., Programme der zweiten Gattung hingegen laufen nur im Textmodus, benutzen die Oberfläche GEM also nicht. Programme der zweiten Art, die man im täglichen Gebrauch benötigt, gibt es einige, z.B. Packer, Compiler (GNU C) oder TeX. Ihre Bedienung erfolgt meist über viele Kommandozeilenoptionen, die man sich kaum alle merken kann. Daher gibt es für viele dieser Programme sogenannte GEM- Shells, die die komfortable Benutzung bestimmter TOS-Programme unter Ausnutzung der Möglichkeiten von GEM ermöglichen. Bekannte Vertreter dieser Sorte sind z.B. die Packer-Shell Two-in-One oder die POVShell für den Raytracer POV-Ray. Programmierer solcher Shells stehen nun vor dem Problem, was sie mit den Ausgaben der TOS-Programme machen sollen, denn im Normalfall werden diese gnadenlos auf den Bildschirm geschrieben, ohne Rücksicht auf dessen Inhalt. Eine Möglichkeit ist es, die Ausgabe in eine Datei umzulenken und sie erst im Anschluß in einem Fenster darzustellen. Dies ist jedoch nur bedingt tauglich, denn das Verfahren versagt, wenn das TOS-Programm irgendwann Tastatureingaben erwartet: Der Anwender merkt davon nichts, da er die dazugehörige Ausgabe ja noch nicht gesehen hat. Eine zweite Vorgehensweise besteht darin, für die TOS-Programme einen eigenen Bildschirm zur Verfügung zu stellen, auf dem sie sich austoben dürfen. Doch auch dies ist nicht ohne Nachteile: Das Bereitstellen eines zweiten Bildschirms klappt z.B. nicht, wenn mit einer Grafikkarte gear- beitet wird, die eigenes RAM für den Bildschirm benutzt. Außerdem sieht es auch nicht gerade elegant aus, wenn plötzlich ein komplett neuer Bildschirm erscheint, und eine Möglichkeit, an bereits "weggescrollte" Ausgaben zu kommen, gibt es auch nicht. Die beste Möglichkeit jedoch besteht darin, die Ausgabe der Programme in ein Fenster umzulenken. Damit sind alle Wünsche erfüllt: Der Anwender sieht, was das Programm im Moment ausgibt, es wird kein separater Bild- schirm benöigt und bei Bedarf läßt sich ein Puffer für ältere Ausgaben einrichten. Allerdings läßt sich dies nur durch Änderung von System-Vek- toren bewerkstelligen, was für Applikationen eigentlich tabu ist. Genau hier setzt TOS2GEM an: TOS2GEM ist ein kleines Programm für den AUTO-Ordner, das sich in die entsprechenden Vektoren einhängt und einen Cookie anlegt, über den es von GEM-Applikationen benutzt werden kann. Dabei beeinflußt TOS2GEM die Ausgabe von TOS-Programmen nur dann, wenn es über den Cookie explizit dazu aufgefordert wurde. Benötigt ein Pro- gramm die Dienste von TOS2GEM nicht mehr, erscheinen TOS-Ausgaben wieder wie gewohnt direkt auf dem Bildschirm. Die Ausgabeumlenkung wird dabei wie folgt realisiert: Ein frei bestimm- barer Ausschnitt des Grafikbildschirms wird als Ersatz für einen zweiten Bildschirm benutzt, auf den dann die Ausgaben per VDI erfolgen. Dazu legt das Programm, das TOS2GEM benutzt, vorher ein GEM-Fenster an, des- sen Arbeitsfläche genau diesem Ausschnitt entspricht; damit erscheinen die Ausgaben der TOS-Programme sauber in diesem Fenster. Die Vorteile für den Programmierer auf einen Blick: - saubere Möglichkeit, TOS-Ausgaben in ein Fenster zu lenken - einfache Benutzung, man spart sich viel Programmierarbeit für eine ei- gene Ausgabeumlenkung - TOS2GEM ist sehr flexibel, es kann mit allen nicht-proportionalen Zei- chensätzen in beliebiger Größe arbeiten, simuliert Textbildschirme der unterschiedlichsten Ausmaße (also nicht nur langweilige 80x25), clippt bei Bedarf und unterstützt auch Textbildschirme, von denen nur ein ge- wisser Ausschnitt sichtbar ist - vollständige VT52-Emulation (optional mit Farbsequenzen) - beliebig großer Textpuffer für "Scrollback"