•  Back 
  •  Inhalt 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Hilfe 
  •  Show info about hypertext 
  •  View a new file 
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.