GEMScript Teil IIWie gut Du sprechen GEMScript? Das ATOS-Magazin 3/98Weiterhin wird beim Versenden von GS_REPLY in ev_mgpbuff[3] und [4]
ein Zeiger auf eine Struktur vom Typ GS_INFO mitgeschickt, die der
anderen Applikation sagt, inwieweit die mit GS_REQUEST angesprochene
Applikation GEMScript versteht. Diese Struktur hat folgenden Aufbau:
typedef struct {
long len; /* Länge der Struktur in Bytes */
int version; /* Version des Protokolls beim Sender (z.Z. 0x0110 = 1.1) */
int msgs; /* Bitmap der unterstützten Nachrichten (GSM_xxx) */
long ext; /* benutzte Endung, etwa '.SIC' */
} GS_INFO;
In msgs trägt der GS_REPLY-Versender einen Bitvektor ein, der unserem
GS_REQUEST-Versender (z.B. dem Scriptinterpreter) angibt, welche Kom-
mandos die Applikation versteht.
GSM_COMMAND = 0x0001
GSM_MACRO = 0x0002
GSM_WRITE = 0x0004
Am wichtigsten ist hier erstmal GSM_COMMAND. Die beiden anderen Kom-
mandos sind nur für Scriptinterpreter oder "aufnahmefähige Applikati-
onen" nötig, aber dazu später mehr.
Wichtig ist, daß die GS_INFO-Struktur, deren Adresse verschickt wird,
mit Mxalloc() als globaler Speicherblock angefordert wird, damit es
beim Zugriff darauf unter Betriebssystemen mit Memory Protection
(MiNT) keine Schwierigkeiten gibt. Außerdem sollte die Struktur
sicherheitshalber erst wieder freigegeben werden, wenn die Applikation
beendet wird, da der GS_REPLY-Empfänger (z.B. der Interpreter) die
Daten in der Struktur nicht sofort auslesen muß. Die Variable ext ist
nur für Interpreter wichtig, andere Applikationen sollten hier 0
eintragen.
GS_COMMAND: Aye, Sir.