Topic : Online-Hilfe zu Omikron.Basic 5 Author : Karsten Lüdersen @ HH Version : OM-Basic-Hilfe 0.60 Subject : Programmieren/Basic Nodes : 1054 Index Size : 29270 HCP-Version : 4 Compiled on : Atari @charset : atarist @lang : @default : @help : Hilfe @options : +g -i +y +z -t4 -d24 @width : 75 View Ref-FileGEM-Library GEM-Library Omikron.Basic GEM oder Basic? Die Grafik-Befehle machen es einfach, Basic-Programme mit grafischen Ausgaben zu schreiben. Trotzdem wird zusammen mit dem Basic eine Library ausgeliefert, die anscheinend die selben oder jedenfalls ähnliche Funktionen enthält, wie sie das Basic schon "von Haus aus" eingebaut hat. Was hat das für einen Sinn? Erstmal ist vielleicht wichtig zu wissen, daß das Basic nicht wirklich eigene Grafik-Befehle enthält. Vielmehr rufen die Grafik-Befehle des Basic die entsprechenden AES- und VDI-Funktionen auf. Daß das auch in TOS-Programmen funktioniert, die mit dem Basic erstellt werden, liegt daran, daß der Interpreter bzw. das Compilat sich immer beim GEM anmelden, auch wenn Sie das nicht in Ihr Programm geschrieben haben. Es wird eine eigene virtuelle VDI-Workstation geöffnet (siehe V_Opnvwk). Diese wird für die Grafik-Befehle des Basic benutzt. "Echte" TOS-Programme können also mit dem Basic gar nicht erstellt werden. Ich selber habe noch nicht ausprobiert, was passiert, wenn z.B. im VT52-Emulator von MagiC plötzlich ein TEXT-Befehl ausgeführt werden soll. Ich kann mir aber nicht vorstellen, daß das ohne Probleme funktioniert. Die Grafik-Befehle des Basic bieten zwar einige Möglichkeiten, aber sie bieten nicht alles, was AES und VDI können. Wenn Sie Programme schreiben wollen, die eine grafische Oberfläche haben, ist der normale Weg, das GEM auch direkt zu benutzen, in dem Sie mit Appl_Init Ihr Programm selber anmelden und mit V_Opnvwk eine eigene virtuelle Workstation eröffnen. Das brauchen Sie für jedes Menü und für jede Dialogbox. Auch Fenster sind nur so realisierbar. Diese Möglichkeiten bieten die Grafik-Befehle des Basic nämlich nicht. Praktisch hat Ihr Programm dann also sogar zwei virtuelle Workstations geöffnet. Während die Grafik-Befehle in die eine Workstation gehen, gehen Ihre Fenster-Operationen in die andere. Leider ist das nicht so egal, wie es auf den ersten Blick aussieht. Z.B. das Clipping bezieht sich nämlich nur auf die entsprechende Workstation. Um keinen "Pixelmüll" auf dem Bildschirm zu produzieren, müssen sie also sogar zwei Clipping-Bereiche für die zwei Workstations verwalten. Einstellungen zu Textgröße etc. beziehen sich ebenfalls immer nur auf die entsprechende Workstation. Grafik-Befehle des Basic und GEM-Funktionen dürfen nicht vermischt werden. Es ist leider nicht möglich, das automatische Öffnen einer Workstation durch den Interpreter bzw. den Startup-Code des Compilats zu verhindern (Wahrscheinlich ist hier auch der Grund dafür zu suchen, daß die Compilate unter NOVA-VDI nicht im Auto-Ordner laufen). Es gibt aber eine andere Möglichkeit: Seit der Version 5.12 ist dokumentiert, daß durch WPEEK (SEGPTR+128) das VDI-Handle für die Grafik-Befehle des Basic ermittelt werden kann. Sie können dadurch die virtuelle Workstation des Basic einfach mitbenutzen. Die Grafik-Befehle des Basic haben dabei den Vorteil, daß sie schneller sind als die entsprechenden GEM.BAS-Äquivalente. Die einfachste Möglichkeit, diese Möglichkeit zu nutzen, besteht darin, die GEM.BAS-Prozedur V_Opnvwk folgendermaßen zu verändern: DEF PROC V_Opnvwk 'V_Opnvwk(1,1,1,1,1,1,1,1,1,1,2) Ctrl%(6)=WPEEK(SEGPTR+128) END_PROC Wie hier schon deutlich wird ist die Library ist natürlich flexibler als die "festverdrahteten" Befehle des Basic: Wenn es einen Grafik-Befehl nicht gibt, dann ist das einfach Pech. Wenn eine Funktion in der GEM-Library noch nicht enthalten ist (wie z.B. in der z.Z. noch mitgelieferten Version der GEM.BAS die Funktion Appl_Getinfo), dann können Sie sich eine entsprechende Prozedur oder Funktion mit dem entsprechenden Wissen einfach selber erstellen und in die GEM.BAS einfügen. Vorausgesetzt natürlich, das Betriebssystem, das Sie verwenden, unterstützt diese Funktion. Wenn Sie ein GDOS benutzen, dann können Sie z.B. mit Hilfe der Grafik-Befehle des Basic trotzdem nur den Systemzeichensatz darstellen, weil es keinen Befehl gibt, um den Zeichensatz zu wechseln. Die GEM.BAS stellt aber eine entsprechende Funktion zur Verfügung. Um den Zusammenhang von Basic-Grafik-Befehlen und GEM-Funktionen zu verdeutlichen und das "gemischte" Nutzen zu erleichtern, habe ich bei allen Grafik-Befehlen Querverweise auf die entsprechenden VDI- bzw. AES-Aufrufe eingebaut. Zwar ist die Beschreibung der GEM-Library weiterhin ziemlich kurz geraten, aber wenn Sie den TOS.HYP auch haben, dann können Sie jetzt direkt von den Beschreibungen der GEM-Library auf die entsprechenden Seiten des TOS.HYP zugreifen. Denn diese Verweise habe ich in diese Version des Hypertextes auch eingebaut.