|
Hauptseite - Welches System? - Hardware - Software - Emulatoren - |
Internet MausNet Programmieren Verweise Über |
Die folgenden Beispiele stellen Definitionen für das SE-Protokoll zur Verfügung.
| Sprache | C | Megamax Modula | LPR Modula | Pascal | Oberon |
|---|---|---|---|---|---|
| Beispiel | seproto.h | seproto.i | seproto.def | seproto.pas | seproto.mod |
/* SE-Protokoll zur Kommunikation zwischen Shells zur Programmentwicklung
* und Editoren.
*
* Dieses Protokoll dient dazu, unter Multitasking-Systemen die Shell
* zur Compilierung und „hnlichen Sachen zu veranlassen, und um Fehler-
* meldungen und/oder Fehlerdateien an den Editor zurckzugeben.
*
* Kommandos bzw. Nachrichten von der Shell zum Editor beginnen
* mit SE_, Nachrichten vom Editor zur Shell beginnen mit ES_
*
* Da teilweise Zeiger auf Speicherbereiche bergeben werden, ist vom
* jeweiligen Absender der Nachricht darauf zu achten, daž diese
* Speicherbereiche vom Empf„nger auch lesbar sind (Memory Protection!).
* Dafr sind diese als Readable zu allozieren!
*
*/
#define SEPROTOVERSION 0x105 /* Die Versionsnummer des Protokolls.
* Highbyte ist die Major Number
* Lowbyte ist die Lower Number
*/
/*
* Erweiterungen
*
* Datum Version Žnderungen
*
* 30.01.96 1.01 SE_CLOSE fr Dateien/Masken, mit Close-Flag
* msg[5] = 0 -> nur sichern
* msg[5] = 1 -> sichern + schliežen
* ES/SE_PROJEKT mit leerem Argument (NULL)
* Um zur Version 0x100 kompatibel zu sein, sollte
* das Programm die Versionsnummer berprfen!!
*
* 13.08.96 1.02 SE_OPEN mit Zeilen- und Spaltennummer
* neue Nachricht SE_MENU
*
* 19.11.96 1.03 bei ES_COMPILE kann der Dateiname auch NULL sein
*
* 08.01.97 1.04 SE_CLOSE: Flag 2 (schliežen ohne sichern)
* SE_MENU: progName
*
* 23.12.97 1.05 ES_SHLCTRL neu, zur Kontrolle der Shell
* Dafr neuer String in SEMENUINFO.
*/
#define SE_INIT 0x4200
/* Die Shell fragt an, ob ein Editor das SE-Protokoll
* versteht.
* Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
* Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Als Antwort erh„lt es ein ES_OK vom Editor.
*/
#define SE_OK 0x4201
/* Die Shell sagt dem Editor, das sie das Protokoll
* versteht.
* Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
* Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
*/
#define SE_ACK 0x4202
/* Die Shell best„tigt den Empfang eines Editorkommandos und gibt zurck,
* ob das Kommando ausgefhrt wird.
* Wort 3: TRUE: Kommando wird verstanden und ausgefhrt.
* FALSE: Das Kommando wird nicht verstanden
* Eine SE_ACK mit TRUE sagt nichts darber aus, ob das Kommando erfolg-
* reich ausgefhrt wurde. Es sagt nur, daž die Shell das Kommando
* versteht und ausfhren wird!
*/
#define SE_OPEN 0x4203
/* Die Shell sagt dem Editor, daž er einen Text ”ffnen
* soll. Als Antwort erh„lt die Shell ein ES_ACK
* Wort 3+4: Ein Zeiger auf den Filenamen des zu ”ffnenden Files
* Wort 5+6: Cursorposition (Zeilennummer)
* Wort 7 : Cursorposition (Spaltennummer)
*/
#define SE_ERROR 0x4204
/* Es ist ein Fehler beim Compilieren aufgetreten.
* Wort 3+4: Ein Zeiger auf eine Infostruktur, die wie folgt
* aufgebaut ist:
* Wort 0+1: Ein Zeiger auf den Namen des compilierten Textes.
* Wort 2+3: Ein Zeiger auf den Text der Fehlermeldung
* Wort 4 : Die Fehlernummer
* Wort 5+6: Die fehlerhafte Zeile
* Wort 7 : Die Spalte mit dem Fehler (oder 0)
* Mit ES_ACK best„tigt der Editor die Meldung.
*/
#define SE_ERRFILE 0x4205
/* Es sind Fehler aufgetreten. Die Fehlermeldungen stehen in einem
* Errorfile, welches in der Message spezifiziert wird.
* Wort 3+4: Ein Zeiger auf den Filenamen des Errorfiles mit den
* Fehlermeldungen
* Wort 5+6: Ein Zeiger auf den Namen des compilierten Textes
* Mit ES_ACK best„tigt der Editor die Meldung.
*/
#define SE_PROJECT 0x4206
/* Die Shell teilt dem Editor mit, daž das Projekt ge„ndert wurde.
* Der Filename des aktuellen Projektfiles wird als Parameter bergeben
* Wird NULL bergeben, sollte das aktuelle Projekt abgemeldet werden.
* Wort 3+4: Ein Zeiger auf den Namen des Projektfiles oder NULL
* Der Editor best„tigt mit ES_ACK.
* Eine vernnftige Reaktion des Editors w„re es in dem Fall,
* ebenfalls das Projekt zu wechseln, sofern er diese untersttzt.
*/
#define SE_QUIT 0x4207
/* Die Shell teilt dem Editor mit, daž sie jetzt beendet wird.
* Der Editor sollte in dem Fall die Shell als Kommunikationspartner
* vergessen.
* Parameter gibt es keine.
* Es wird keine Antwort erwartet!
*/
#define SE_TERMINATE 0x4208
/* Die Shell teilt dem Editor mit, daž dieser sich beenden soll.
* Der Editor sollte in dem Fall sich selbst beenden und seinen ganz
* normalen Terminierungsprozež durchlaufen (und in dem auch ein ES_QUIT
* schicken!). Der Grund fr so eine Meldung der Shell k”nnte zum Beispiel
* zu wenig Speicher zum compilieren sein.
* Mit ES_ACK best„tigt der Editor die Meldung.
*/
#define SE_CLOSE 0x4209
/* Die Shell teilt dem Editor mit, daž dieser bestimmte Texte sichern
* bzw. schliežen soll. Beim Schliežen von ge„nderten Texten sollte der
* Editor vorher nachfragen.
* Wort 3+4: Ein Zeiger auf den Namen einer Datei oder eine Dateimaske.
* '*.*' steht fr alle Textfenster (entspricht also dem SE_CLOSE
* der Protokoll-Version 0x100).
* Wort 5 : 0 = nur sichern
* 1 = sichern und schliežen
* 2 = schliežen ohne sichern
* Mit ES_ACK best„tigt der Editor die Meldung.
*/
#define SE_MENU 0x420A
/* Die Shell teilte dem Editor mit, was er fr die einzelnen Programme
* in sein Men eintragen soll.
*
* Word 3+4: Ein Zeiger auf eine SEMENUINFO-Struktur mit den Eintr„gen.
* Mit ES_ACK best„tigt der Editor die Meldung.
*/
#define ES_INIT 0x4240
/* Ein Editor fragt an, ob eine Shell das SE-Protokoll versteht.
* Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
* Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Als Antwort erh„lt es SE_OK von der Shell
*/
#define ES_OK 0x4241
/* Der Editor beantwortet die Anfrage der Shell nach dem Protokoll.
* Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
* Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
*/
#define ES_ACK 0x4242
/* Der Editor best„tigt den Empfang des Kommandos
* Wort 3: TRUE: Kommando wird verstanden und ausgefhrt.
* FALSE: Das Kommando wird nicht verstanden
* Eine ES_ACK mit TRUE sagt nichts darber aus, ob das Kommando erfolg-
* reich ausgefhrt wurde. Es sagt nur, daž der Editor das Kommando
* versteht und ausfhren wird!
*/
#define ES_COMPILE 0x4243
/* Der Editor sagt der Shell, daž sie ein File bersetzen soll.
* Ein Pointer auf den Dateinamen wird in der Message bergeben.
* Wort 3+4: Zeiger auf den Namen der zu compilierenden Datei
* (oder NULL).
* Diese Nachricht muž mit SE_ACK best„tigt werden.
*/
#define ES_MAKE 0x4244
/* Der Editor sagt der Shell, daž sie ein Make ausfhren soll.
* Ein Filename kann in der Message bergeben werden, muž aber
* nicht gesetzt sein und muž von der Shell auch nicht beachtet
* werden!
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell best„tigt mit SE_ACK.
*/
#define ES_MAKEALL 0x4245
/* Der Editor sagt der Shell, daž ein komplettes Make All ausgefhrt
* werden soll. Ein Filename fr das Makefile kann (muž nicht) in
* der Message bergeben werden.
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell best„tigt mit SE_ACK.
*/
#define ES_LINK 0x4246
/* Der Editor sagt der Shell, daž das Programm
* gelinkt werden soll. Ein Filename kann
* in der Message bergeben werden, muž aber
* nicht unbedingt beachtet werden von der Shell!
* Wort 3+4: Zeiger auf den Namen der Source, die gelinkt werden soll
* (oder NULL)
* Die Shell best„tigt mit SE_ACK.
*/
#define ES_EXEC 0x4247
/* Der Editor sagt der Shell, daž das Programm
* zu der Source ausgefhrt werden soll. Ein
* Filename kann bergeben werden, muž von der
* Shell aber nicht beachtet werden.
* Wort 3+4: Zeiger auf den Namen des auszufhrenden Files (oder NULL)
* Bei einer Sourcedatei ist diese ggf. noch zu
* compilieren und/oder zu linken
* Die Shell best„tigt mit SE_ACK.
*/
#define ES_MAKEEXEC 0x4248
/* Die Shell soll ein Make ausfhren und danach das Programm ausfhren.
* Ein Filename fr das Makefile kann (muž nicht) in der Message
* bergeben werden.
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell best„tigt mit SE_ACK.
*/
#define ES_PROJECT 0x4249
/* Der Editor teilt der Shell mit, daž das Project ge„ndert/gewechselt
* wurde. Der Filename des Projektfiles wird als Parameter in der Message
* bergeben. Wird NULL bergeben, sollte das aktuelle Projekt abgemeldet
* werden.
* Wort 3+4: Zeiger auf den Namen des Projektfiles oder NULL.
* Die Shell best„tigt mit SE_ACK.
* Eine vernnftige Reaktion der Shell w„re in dem Fall, ebenfalls
* das Projekt zu wechseln, sofern sie diese untersttzt.
*/
#define ES_QUIT 0x424A
/* Der Editor teilt der Shell mit, daž er jetzt beendet wird.
* Die Shell sollte in dem Fall den Editor als Kommunikationspartner
* vergessen.
* Parameter gibt es keine.
* Es wird keine Antwort erwartet!
*/
#define ES_SHLCTRL 0x424B
/*
* Sonstige Kontrolle der Shell durch den Editors.
* Wort 3+4 Zeiger auf den Namen des obersten Fensters oder NULL.
* Wort 5 Steuer-Flag:
* 0: Shell soll sich toppen (Men/Fenster).
* Die Shell best„tigt mit SE_ACK.
*/
/* Typdefinitionen fr die Nachrichten */
/* Dies definiert die einzelnen Bits, welche Nachrichten untersttzt werden */
/* Shell-Kommandos
*/
#define _SEINIT 0x0001
#define _SEOK 0x0002
#define _SEACK 0x0004
#define _SEOPEN 0x0008
#define _SEERROR 0x0010
#define _SEERRFILE 0x0020
#define _SEPROJECT 0x0040
#define _SEQUIT 0x0080
#define _SETERMINATE 0x0100
#define _SECLOSE 0x0200
#define _SEMENU 0x0400
/* Editor-Kommandos
*/
#define _ESINIT 0x0001
#define _ESOK 0x0002
#define _ESACK 0x0004
#define _ESCOMPILE 0x0008
#define _ESMAKE 0x0010
#define _ESMAKEALL 0x0020
#define _ESLINK 0x0040
#define _ESEXEC 0x0080
#define _ESMAKEEXEC 0x0100
#define _ESPROJECT 0x0200
#define _ESQUIT 0x0400
#define _ESSHLCTRL 0x0800
/* Die Nachricht SE_ERROR liefert einen Zeiger auf diese Struktur:
*/
typedef struct
{
char *errFile; /* Zeiger auf den Namen der compilierten Datei */
char *errMess; /* Zeiger auf die Fehlermeldung */
int errNum; /* Die Fehlernummer */
long errLine; /* Die fehlerhafte Zeile */
int errRow; /* Die Spalte mit dem Fehler (oder 0) */
} ERRINFO;
/* Die Nachricht SE_MENU verwendet einen Zeiger auf diese Struktur:
*/
typedef struct
{
char *compStr;
char *makeStr;
char *makeAllStr;
char *linkStr;
char *execStr;
char *makeExecStr;
char *progName; /* neu ab 0x104 */
char *shellCtrlStr; /* neu fr ES_SHLCTRL ab 0x105 */
} SEMENUINFO;
zum Anfang
DEFINITION MODULE SEProto;
(* SE-Protokoll zur Kommunikation zwischen Shells zur Programmentwicklung
* und Editoren.
*
* Dieses Protokoll dient dazu, unter Multitasking-Systemen die Shell
* zur Compilierung und „hnlichen Sachen zu veranlassen, und um Fehler-
* meldungen und/oder Fehlerdateien an den Editor zurckzugeben.
*
* Kommandos bzw. Nachrichten von der Shell zum Editor beginnen
* mit SE_, Nachrichten vom Editor zur Shell beginnen mit ES_
*
* Da teilweise Zeiger auf Speicherbereiche bergeben werden, ist vom
* jeweiligen Absender der Nachricht darauf zu achten, daž diese
* Speicherbereiche vom Empf„nger auch lesbar sind (Memory Protection!).
* Dafr sind diese als Readable zu allozieren!
*
*)
(*
* Erweiterungen
*
* Datum Version Žnderungen
*
* 30.01.96 1.01 SE_CLOSE fr Dateien/Masken, mit Close-Flag
* msg[5] = 0 -> nur sichern
* msg[5] = 1 -> sichern + schliežen
* ES/SE_PROJEKT mit leerem Argument (NULL)
* Um zur Version 0x100 kompatibel zu sein, sollte
* das Programm die Versionsnummer berprfen!!
*
* 13.08.96 1.02 SE_OPEN mit Zeilen- und Spaltennummer
* neue Nachricht SE_MENU
*
* 19.11.96 1.03 bei ES_COMPILE kann der Dateiname auch NULL sein
*
* 08.01.97 1.04 SE_CLOSE: Flag 2 (schliežen ohne sichern)
* SE_MENU: progName
*
* 23.12.97 1.05 ES_SHLCTRL neu, zur Kontrolle der Shell
* Dafr neuer String in SEMENUINFO.
*)
EXPORT SE_INIT, SE_OK, SE_ACK, SE_OPEN, SE_ERROR, SE_ERRFILE, SE_PROJECT,
SE_QUIT, SE_TERMINATE, SE_CLOSE,
ES_INIT, ES_OK, ES_ACK, ES_COMPILE, ES_MAKE, ES_MAKEALL, ES_LINK,
ES_EXEC, ES_MAKEEXEC, ES_PROJECT, ES_QUIT,
SEPROTOVERSION,
tShellCommands, tEditCommands, tShellSet, tEditSet,
tPtrString, LONGBITSET,
tErrInfo, tPtrErrInfo, tMessRec, tPtrMessRec;
CONST
SE_INIT = 4200H;
(* Die Shell fragt an, ob ein Editor das SE-Protokoll
* versteht.
* Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
* Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Als Antwort erh„lt es ein ES_OK vom Editor.
*)
SE_OK = 4201H;
(* Die Shell sagt dem Editor, das sie das Protokoll
* versteht.
* Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
* Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
*)
SE_ACK = 4202H;
(* Die Shell best„tigt den Empfang eines Editorkommandos und gibt zurck,
* ob das Kommando ausgefhrt wird.
* Wort 3: TRUE: Kommando wird verstanden und ausgefhrt.
* FALSE: Das Kommando wird nicht verstanden
* Eine SE_ACK mit TRUE sagt nichts darber aus, ob das Kommando erfolg-
* reich ausgefhrt wurde. Es sagt nur, daž die Shell das Kommando
* versteht und ausfhren wird!
*)
SE_OPEN = 4203H;
(* Die Shell sagt dem Editor, daž er einen Text ”ffnen
* soll. Als Antwort erh„lt die Shell ein ES_ACK
* Wort 3+4: Ein Zeiger auf den Filenamen des zu ”ffnenden Files
* Wort 5+6: Cursorposition (Zeilennummer)
* Wort 7 : Cursorposition (Spaltennummer)
*)
SE_ERROR = 4204H;
(* Es ist ein Fehler beim Compilieren aufgetreten.
* Wort 3+4: Ein Zeiger auf eine Infostruktur, die wie folgt
* aufgebaut ist:
* Wort 0+1: Ein Zeiger auf den Namen des compilierten Textes.
* Wort 2+3: Ein Zeiger auf den Text der Fehlermeldung
* Wort 4 : Die Fehlernummer
* Wort 5+6: Die fehlerhafte Zeile
* Wort 7 : Die Spalte mit dem Fehler (oder 0)
* Mit ES_ACK best„tigt der Editor die Meldung.
*)
SE_ERRFILE = 4205H;
(* Es sind Fehler aufgetreten. Die Fehlermeldungen stehen in einem
* Errorfile, welches in der Message spezifiziert wird.
* Wort 3+4: Ein Zeiger auf den Filenamen des Errorfiles mit den
* Fehlermeldungen
* Wort 5+6: Ein Zeiger auf den Namen des compilierten Textes
* Mit ES_ACK best„tigt der Editor die Meldung.
*)
SE_PROJECT = 4206H;
(* Die Shell teilt dem Editor mit, daž das Projekt ge„ndert wurde.
* Der Filename des aktuellen Projektfiles wird als Parameter bergeben
* Wird NULL bergeben, sollte das aktuelle Projekt abgemeldet werden.
* Wort 3+4: Ein Zeiger auf den Namen des Projektfiles oder NULL
* Der Editor best„tigt mit ES_ACK.
* Eine vernnftige Reaktion des Editors w„re es in dem Fall,
* ebenfalls das Projekt zu wechseln, sofern er diese untersttzt.
*)
SE_QUIT = 4207H;
(* Die Shell teilt dem Editor mit, daž sie jetzt beendet wird.
* Der Editor sollte in dem Fall die Shell als Kommunikationspartner
* vergessen.
* Parameter gibt es keine.
* Es wird keine Antwort erwartet!
*)
SE_TERMINATE = 4208H;
(* Die Shell teilt dem Editor mit, daž dieser sich beenden soll.
* Der Editor sollte in dem Fall sich selbst beenden und seinen ganz
* normalen Terminierungsprozež durchlaufen (und in dem auch ein ES_QUIT
* schicken!). Der Grund fr so eine Meldung der Shell k”nnte zum Beispiel
* zu wenig Speicher zum compilieren sein.
* Mit ES_ACK best„tigt der Editor die Meldung.
*)
SE_CLOSE = 4209H;
(* Die Shell teilt dem Editor mit, daž dieser bestimmte Texte sichern
* bzw. schliežen soll. Beim Schliežen von ge„nderten Texten sollte der
* Editor vorher nachfragen.
* Wort 3+4: Ein Zeiger auf den Namen einer Datei oder eine Dateimaske.
* '*.*' steht fr alle Textfenster (entspricht also dem SE_CLOSE
* der Protokoll-Version 0x100).
* Wort 5 : 0 = nur sichern
* 1 = sichern und schliežen
* Mit ES_ACK best„tigt der Editor die Meldung.
*)
SE_MENU = 420AH;
(* Die Shell teilte dem Editor mit, was er fr die einzelnen Programme
* in sein Men eintragen soll.
*
* Word 3+4: Ein Zeiger auf eine MenuInfo-Struktur mit den Eintr„gen.
* Mit ES_ACK best„tigt der Editor die Meldung.
*)
ES_INIT = 4240H;
(* Ein Editor fragt an, ob eine Shell das SE-Protokoll versteht.
* Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
* Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Als Antwort erh„lt es SE_OK von der Shell
*)
ES_OK = 4241H;
(* Der Editor beantwortet die Anfrage der Shell nach dem Protokoll.
* Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
* Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
*)
ES_ACK = 4242H;
(* Der Editor best„tigt den Empfang des Kommandos
* Wort 3: TRUE: Kommando wird verstanden und ausgefhrt.
* FALSE: Das Kommando wird nicht verstanden
* Eine ES_ACK mit TRUE sagt nichts darber aus, ob das Kommando erfolg-
* reich ausgefhrt wurde. Es sagt nur, daž der Editor das Kommando
* versteht und ausfhren wird!
*)
ES_COMPILE = 4243H;
(* Der Editor sagt der Shell, daž sie ein File bersetzen soll.
* Ein Pointer auf den Dateinamen wird in der Message bergeben.
* Wort 3+4: Zeiger auf den Namen der zu compilierenden Datei
* (oder NULL).
* Diese Nachricht muž mit SE_ACK best„tigt werden.
*)
ES_MAKE = 4244H;
(* Der Editor sagt der Shell, daž sie ein Make ausfhren soll.
* Ein Filename kann in der Message bergeben werden, muž aber
* nicht gesetzt sein und muž von der Shell auch nicht beachtet
* werden!
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell best„tigt mit SE_ACK.
*)
ES_MAKEALL = 4245H;
(* Der Editor sagt der Shell, daž ein komplettes Make All ausgefhrt
* werden soll. Ein Filename fr das Makefile kann (muž nicht) in
* der Message bergeben werden.
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell best„tigt mit SE_ACK.
*)
ES_LINK = 4246H;
(* Der Editor sagt der Shell, daž das Programm
* gelinkt werden soll. Ein Filename kann
* in der Message bergeben werden, muž aber
* nicht unbedingt beachtet werden von der Shell!
* Wort 3+4: Zeiger auf den Namen der Source, die gelinkt werden soll
* (oder NULL)
* Die Shell best„tigt mit SE_ACK.
*)
ES_EXEC = 4247H;
(* Der Editor sagt der Shell, daž das Programm
* zu der Source ausgefhrt werden soll. Ein
* Filename kann bergeben werden, muž von der
* Shell aber nicht beachtet werden.
* Wort 3+4: Zeiger auf den Namen des auszufhrenden Files (oder NULL)
* Bei einer Sourcedatei ist diese ggf. noch zu
* compilieren und/oder zu linken
* Die Shell best„tigt mit SE_ACK.
*)
ES_MAKEEXEC = 4248H;
(* Die Shell soll ein Make ausfhren und danach das Programm ausfhren.
* Ein Filename fr das Makefile kann (muž nicht) in der Message
* bergeben werden.
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell best„tigt mit SE_ACK.
*)
ES_PROJECT = 4249H;
(* Der Editor teilt der Shell mit, daž das Project ge„ndert/gewechselt
* wurde. Der Filename des Projektfiles wird als Parameter in der Message
* bergeben. Wird NULL bergeben, sollte das aktuelle Projekt abgemeldet
* werden.
* Wort 3+4: Zeiger auf den Namen des Projektfiles oder NULL.
* Die Shell best„tigt mit SE_ACK.
* Eine vernnftige Reaktion der Shell w„re in dem Fall, ebenfalls
* das Projekt zu wechseln, sofern sie diese untersttzt.
*)
ES_QUIT = 424AH;
(* Der Editor teilt der Shell mit, daž er jetzt beendet wird.
* Die Shell sollte in dem Fall den Editor als Kommunikationspartner
* vergessen.
* Parameter gibt es keine.
* Es wird keine Antwort erwartet!
*)
ES_SHLCTRL = 424BH;
(*
* Sonstige Kontrolle der Shell durch den Editors.
* Wort 3+4 Zeiger auf den Namen des obersten Fensters oder NULL.
* Wort 5 Steuer-Flag:
* 0: Shell soll sich toppen (Men/Fenster).
* Die Shell best„tigt mit SE_ACK.
*)
SE_DATA = 0;
(* Nur fr Typdeklaration benutzt, eigentlich berflssig
*)
SEPROTOVERSION = 105H; (* Die Versionsnummer des Protokolls.
* Highbyte ist die Major Number
* Lowbyte ist die Lower Number
*)
(* Typdefinitionen fr die Nachrichten
*)
(* Dies definiert die einzelnen Bits, welche Nachrichten untersttzt werden
*)
TYPE tShellCommands = (seInit, seOk, seAck, seOpen, seError, seErrfile,
seProject, seQuit, seTerminate, seClose, seMenu );
tEditCommands = (esInit, esOk, esAck, esCompile, esMake, esMakeall,
esLink, esExec, esMakeexec, esProject, esQuit, esShlctrl,
res12, res13, res14, res15, res16, res17, res18,
res19, res20, res21, res22, res23, res24, res25,
res26, res27, res28, res29, res30, res31);
tShellSet = SET OF tShellCommands;
tEditSet = SET OF tEditCommands;
tCtrlCommands = ( topShell );
tCtrlSet = SET OF tCtrlCommands;
tString = ARRAY [0..255] OF CHAR;
tPtrString = POINTER TO ARRAY [0..255] OF CHAR;
(* Zeiger auf einen nullterminierten String
*)
LONGBITSET = SET OF [0..31];
(* Leider kennt das nicht jeder Compiler
*)
tErrInfo = RECORD
errFile : tPtrString;
(* Zeiger auf den Namen der compilierten Datei
*)
errMess : tPtrString;
(* Zeiger auf die Fehlermeldung
*)
errNum : INTEGER;
(* Die Fehlernummer
*)
errLine : LONGINT;
(* Die fehlerhafte Zeile
*)
errRow : INTEGER;
(* Die Spalte mit dem Fehler (oder 0)
*)
END;
tPtrErrInfo = POINTER TO tErrInfo;
tMenuInfo = RECORD
compStr : tPtrString;
makeStr : tPtrString;
makeAllStr : tPtrString;
linkStr : tPtrString;
execStr : tPtrString;
makeExecStr : tPtrString;
progName : tPtrString;
shellCtrlString : tPtrString;
END;
tPtrMenuInfo = POINTER TO tMenuInfo;
(* šber diese Recorddefinition kann man alle
* Messages des Protokolls behandeln
*)
tMessRec = RECORD
msg : INTEGER;
(* Messagenummer, Wort 0 *)
apId : INTEGER;
(* Applikation ID des Senders, Wort 1 *)
overLen : INTEGER;
(* šberl„nge der Nachricht (immer 0 fr SE-Protokoll),
* Wort 2 *)
CASE : CARDINAL OF
SE_INIT,
ES_INIT : shellBits: tShellSet;
(* Bits, die angeben, welche Shell-Nachrichten
* untersttzt werden (Wort 3)
*)
editBits : tEditSet;
(* Bits, die angeben, welche Editor-Nachrichten
* untersttzt werden (Worte 4 und 5)
*)
version : CARDINAL;
(* Untersttze Versionsnummer des Protokolls
* Aktuell: $102
*)
| SE_OK,
ES_OK : okShellBits: tShellSet;
(* Bits, die angeben, welche Shell-Nachrichten
* untersttzt werden (Wort 3)
*)
okEditBits : tEditSet;
(* Bits, die angeben, welche Editor-Nachrichten
* untersttzt werden (Worte 4 und 5)
*)
okVersion: CARDINAL;
(* Untersttze Versionsnummer des Antwortenden
* Aktuell: $102
*)
otherId : INTEGER;
(* Die ApId des Senders, auf das dies eine Antwort
* ist (Wort 7)
*)
| SE_ACK,
ES_ACK : acknowledge: BOOLEAN;
(* TRUE: Kommando wurde akzeptiert,
* FALSE: Kommando konnte nicht ausgefhrt werden
*)
| SE_OPEN : namePtr : tPtrString;
(* Zeiger auf den Namen des zu ladenden Textes *)
errLine : LONGINT;
(* Die fehlerhafte Zeile *)
errRow : INTEGER;
(* Die Spalte mit dem Fehler (oder 0) *)
| SE_ERROR : errorPtr : tPtrErrInfo;
(* Zeiger auf Speicherbereich, der die Fehlermeldung
* spezifiziert.
*)
| SE_ERRFILE : errPtr : tPtrString;
(* Zeiger auf den Namen des Errorfiles *)
fnamePtr : tPtrString;
(* Zeiger auf den Namen der compilierten Datei *)
| SE_CLOSE : maskPtr : tPtrString;
(* Zeiger auf den Namen einer Datei oder eine
* Dateimaske ('*.*' steht fr alle Textfenster)
*)
closeFlag : BOOLEAN;
| SE_MENU : menuPtr : tPtrMenuInfo;
(* Zeiger auf Speicherbereich, der die Mentexte
* spezifiziert.
*)
| SE_PROJECT,
ES_COMPILE,
ES_MAKE,
ES_MAKEALL,
ES_LINK,
ES_EXEC,
ES_MAKEEXEC,
ES_PROJECT : filePtr : tPtrString;
(* Zeiger auf den Filenamen des Files, welches
* behandelt werden soll
*)
| SE_QUIT,
SE_TERMINATE,
ES_QUIT,
SE_DATA: data : ARRAY [0..4] OF INTEGER;
(* Definition fr Maximall„nge des Records
*)
| ES_SHLCTRL: ctrlBits : tCtrlSet;
END;
END;
tPtrMessRec = POINTER TO tMessRec;
(* Ein Zeiger auf diese Messageblock
*)
END SEProto.
zum Anfang
DEFINITION MODULE SEProto;
(* SE-Protokoll zur Kommunikation zwischen Shells zur Programmentwicklung
* und Editoren.
*
* Dieses Protokoll dient dazu, unter Multitasking-Systemen die Shell
* zur Compilierung und „hnlichen Sachen zu veranlassen, und um Fehler-
* meldungen und/oder Fehlerdateien an den Editor zurckzugeben.
*
* Kommandos bzw. Nachrichten von der Shell zum Editor beginnen
* mit SE_, Nachrichten vom Editor zur Shell beginnen mit ES_
*
* Da teilweise Zeiger auf Speicherbereiche bergeben werden, ist vom
* jeweiligen Absender der Nachricht darauf zu achten, daž diese
* Speicherbereiche vom Empf„nger auch lesbar sind (Memory Protection!).
* Dafr sind diese als Readable zu allozieren!
*
*)
(*
* Erweiterungen
*
* Datum Version Žnderungen
*
* 30.01.96 1.01 SeClose fr Dateien/Masken, mit Close-Flag
* msg[5] = 0 -> nur sichern
* msg[5] = 1 -> sichern + schliežen
* Es/SeProject mit leerem Argument (NULL)
* Um zur Version 0x100 kompatibel zu sein, sollte
* das Programm die Versionsnummer berprfen!!
*
* 13.08.96 1.02 SeOpen mit Zeilen- und Spaltennummer
* neue Nachricht SE_MENU
*
* 19.11.96 1.03 bei EsCompile kann der Dateiname auch NULL sein
*
* 08.01.97 1.04 SeClose: Flag 2 (schliežen ohne sichern)
* SeMenu: progName
*
* 23.12.97 1.05 EsShlctrl neu, zur Kontrolle der Shell
* Dafr neuer String in SEMENUINFO.
*)
CONST
SeInit = 4200H;
(* Die Shell fragt an, ob ein Editor das SE-Protokoll
* versteht.
* Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
* Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Als Antwort erh„lt es ein EsOk vom Editor.
*)
SeOk = 4201H;
(* Die Shell sagt dem Editor, das sie das Protokoll
* versteht.
* Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
* Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
*)
SeAck = 4202H;
(* Die Shell best„tigt den Empfang eines Editorkommandos und gibt zurck,
* ob das Kommando ausgefhrt wird.
* Wort 3: TRUE: Kommando wird verstanden und ausgefhrt.
* FALSE: Das Kommando wird nicht verstanden
* Eine SE_ACK mit TRUE sagt nichts darber aus, ob das Kommando erfolg-
* reich ausgefhrt wurde. Es sagt nur, daž die Shell das Kommando
* versteht und ausfhren wird!
*)
SeOpen = 4203H;
(* Die Shell sagt dem Editor, daž er einen Text ”ffnen
* soll. Als Antwort erh„lt die Shell ein ES_ACK
* Wort 3+4: Ein Zeiger auf den Filenamen des zu ”ffnenden Files
* Wort 5+6: Cursorposition (Zeilennummer)
* Wort 7 : Cursorposition (Spaltennummer)
*)
SeError = 4204H;
(* Es ist ein Fehler beim Compilieren aufgetreten.
* Wort 3+4: Ein Zeiger auf eine Infostruktur, die wie folgt
* aufgebaut ist:
* Wort 0+1: Ein Zeiger auf den Namen des compilierten Textes.
* Wort 2+3: Ein Zeiger auf den Text der Fehlermeldung
* Wort 4 : Die Fehlernummer
* Wort 5+6: Die fehlerhafte Zeile
* Wort 7 : Die Spalte mit dem Fehler (oder 0)
* Mit EsAck best„tigt der Editor die Meldung.
*)
SeErrfile = 4205H;
(* Es sind Fehler aufgetreten. Die Fehlermeldungen stehen in einem
* Errorfile, welches in der Message spezifiziert wird.
* Wort 3+4: Ein Zeiger auf den Filenamen des Errorfiles mit den
* Fehlermeldungen
* Wort 5+6: Ein Zeiger auf den Namen des compilierten Textes
* Mit EsAck best„tigt der Editor die Meldung.
*)
SeProject = 4206H;
(* Die Shell teilt dem Editor mit, daž das Projekt ge„ndert wurde.
* Der Filename des aktuellen Projektfiles wird als Parameter bergeben
* Wird NULL bergeben, sollte das aktuelle Projekt abgemeldet werden.
* Wort 3+4: Ein Zeiger auf den Namen des Projektfiles oder NULL
* Der Editor best„tigt mit ES_ACK.
* Eine vernnftige Reaktion des Editors w„re es in dem Fall,
* ebenfalls das Projekt zu wechseln, sofern er diese untersttzt.
*)
SeQuit = 4207H;
(* Die Shell teilt dem Editor mit, daž sie jetzt beendet wird.
* Der Editor sollte in dem Fall die Shell als Kommunikationspartner
* vergessen.
* Parameter gibt es keine.
* Es wird keine Antwort erwartet!
*)
SeTerminate = 4208H;
(* Die Shell teilt dem Editor mit, daž dieser sich beenden soll.
* Der Editor sollte in dem Fall sich selbst beenden und seinen ganz
* normalen Terminierungsprozež durchlaufen (und in dem auch ein ES_QUIT
* schicken!). Der Grund fr so eine Meldung der Shell k”nnte zum Beispiel
* zu wenig Speicher zum compilieren sein.
* Mit EsAck best„tigt der Editor die Meldung.
*)
SeClose = 4209H;
(* Die Shell teilt dem Editor mit, daž dieser bestimmte Texte sichern
* bzw. schliežen soll. Beim Schliežen von ge„nderten Texten sollte der
* Editor vorher nachfragen.
* Wort 3+4: Ein Zeiger auf den Namen einer Datei oder eine Dateimaske.
* '*.*' steht fr alle Textfenster (entspricht also dem SE_CLOSE
* der Protokoll-Version 0x100).
* Wort 5 : 0 = nur sichern
* 1 = sichern und schliežen
* Mit EsAck best„tigt der Editor die Meldung.
*)
SeMenu = 420AH;
(* Die Shell teilte dem Editor mit, was er fr die einzelnen Programme
* in sein Men eintragen soll.
*
* Word 3+4: Ein Zeiger auf eine MenuInfo-Struktur mit den Eintr„gen.
* Mit EsAck best„tigt der Editor die Meldung.
*)
EsInit = 4240H;
(* Ein Editor fragt an, ob eine Shell das SE-Protokoll versteht.
* Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
* Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Als Antwort erh„lt es SE_OK von der Shell
*)
EsOk = 4241H;
(* Der Editor beantwortet die Anfrage der Shell nach dem Protokoll.
* Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
* Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
*)
EsAck = 4242H;
(* Der Editor best„tigt den Empfang des Kommandos
* Wort 3: TRUE: Kommando wird verstanden und ausgefhrt.
* FALSE: Das Kommando wird nicht verstanden
* Eine ES_ACK mit TRUE sagt nichts darber aus, ob das Kommando erfolg-
* reich ausgefhrt wurde. Es sagt nur, daž der Editor das Kommando
* versteht und ausfhren wird!
*)
EsCompile = 4243H;
(* Der Editor sagt der Shell, daž sie ein File bersetzen soll.
* Ein Pointer auf den Dateinamen wird in der Message bergeben.
* Wort 3+4: Zeiger auf den Namen der zu compilierenden Datei
* (oder NULL).
* Diese Nachricht muž mit SeAck best„tigt werden.
*)
EsMake = 4244H;
(* Der Editor sagt der Shell, daž sie ein Make ausfhren soll.
* Ein Filename kann in der Message bergeben werden, muž aber
* nicht gesetzt sein und muž von der Shell auch nicht beachtet
* werden!
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell best„tigt mit SeAck.
*)
EsMakeall = 4245H;
(* Der Editor sagt der Shell, daž ein komplettes Make All ausgefhrt
* werden soll. Ein Filename fr das Makefile kann (muž nicht) in
* der Message bergeben werden.
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell best„tigt mit SeAck.
*)
EsLink = 4246H;
(* Der Editor sagt der Shell, daž das Programm
* gelinkt werden soll. Ein Filename kann
* in der Message bergeben werden, muž aber
* nicht unbedingt beachtet werden von der Shell!
* Wort 3+4: Zeiger auf den Namen der Source, die gelinkt werden soll
* (oder NULL)
* Die Shell best„tigt mit SeAck.
*)
EsExec = 4247H;
(* Der Editor sagt der Shell, daž das Programm
* zu der Source ausgefhrt werden soll. Ein
* Filename kann bergeben werden, muž von der
* Shell aber nicht beachtet werden.
* Wort 3+4: Zeiger auf den Namen des auszufhrenden Files (oder NULL)
* Bei einer Sourcedatei ist diese ggf. noch zu
* compilieren und/oder zu linken
* Die Shell best„tigt mit SeAck.
*)
EsMakeexec = 4248H;
(* Die Shell soll ein Make ausfhren und danach das Programm ausfhren.
* Ein Filename fr das Makefile kann (muž nicht) in der Message
* bergeben werden.
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell best„tigt mit SeAck.
*)
EsProject = 4249H;
(* Der Editor teilt der Shell mit, daž das Project ge„ndert/gewechselt
* wurde. Der Filename des Projektfiles wird als Parameter in der Message
* bergeben. Wird NULL bergeben, sollte das aktuelle Projekt abgemeldet
* werden.
* Wort 3+4: Zeiger auf den Namen des Projektfiles oder NULL.
* Die Shell best„tigt mit SeAck.
* Eine vernnftige Reaktion der Shell w„re in dem Fall, ebenfalls
* das Projekt zu wechseln, sofern sie diese untersttzt.
*)
EsQuit = 424AH;
(* Der Editor teilt der Shell mit, daž er jetzt beendet wird.
* Die Shell sollte in dem Fall den Editor als Kommunikationspartner
* vergessen.
* Parameter gibt es keine.
* Es wird keine Antwort erwartet!
*)
EsShlctrl = 424BH;
(*
* Sonstige Kontrolle der Shell durch den Editors.
* Wort 3+4 Zeiger auf den Namen des obersten Fensters oder NULL.
* Wort 5 Steuer-Flag:
* 0: Shell soll sich toppen (Men/Fenster).
* Die Shell best„tigt mit SeAck.
*)
SeData = 0;
(* Nur fr Typdeklaration benutzt, eigentlich berflssig
*)
SEPROTOVERSION = 105H; (* Die Versionsnummer des Protokolls.
* Highbyte ist die Major Number
* Lowbyte ist die Lower Number
*)
(* Typdefinitionen fr die Nachrichten
*)
(* Dies definiert die einzelnen Bits, welche Nachrichten untersttzt werden
*)
TYPE tShellCommands = (seInit, seOk, seAck, seOpen, seError, seErrfile,
seProject, seQuit, seTerminate, seClose, seMenu );
tEditCommands = (esInit, esOk, esAck, esCompile, esMake, esMakeall,
esLink, esExec, esMakeexec, esProject, esQuit, esShlctrl,
res12, res13, res14, res15(*, res16, res17, res18,
res19, res20, res21, res22, res23, res24, res25,
res26, res27, res28, res29, res30, res31*));
(* Beschraenkung LPR Modula *)
tShellSet = SET OF tShellCommands;
tEditSet = SET OF tEditCommands;
tCtrlCommands = ( topShell );
tCtrlSet = SET OF tCtrlCommands;
tString = ARRAY [0..255] OF CHAR;
tPtrString = POINTER TO ARRAY [0..255] OF CHAR;
(* Zeiger auf einen nullterminierten String
*)
tErrInfo = RECORD
errFile : tPtrString;
(* Zeiger auf den Namen der compilierten Datei
*)
errMess : tPtrString;
(* Zeiger auf die Fehlermeldung
*)
errNum : INTEGER;
(* Die Fehlernummer
*)
errLine : LONGINT;
(* Die fehlerhafte Zeile
*)
errRow : INTEGER;
(* Die Spalte mit dem Fehler (oder 0)
*)
END;
tPtrErrInfo = POINTER TO tErrInfo;
tMenuInfo = RECORD
compStr : tPtrString;
makeStr : tPtrString;
makeAllStr : tPtrString;
linkStr : tPtrString;
execStr : tPtrString;
makeExecStr : tPtrString;
progName : tPtrString;
shellCtrlString : tPtrString;
END;
tPtrMenuInfo = POINTER TO tMenuInfo;
(* šber diese Recorddefinition kann man alle
* Messages des Protokolls behandeln
*)
tMessRec = RECORD
msg : INTEGER;
(* Messagenummer, Wort 0 *)
apId : INTEGER;
(* Applikation ID des Senders, Wort 1 *)
overLen : INTEGER;
(* šberl„nge der Nachricht (immer 0 fr SE-Protokoll),
* Wort 2 *)
CASE : CARDINAL OF
SeInit,
EsInit : shellBits: tShellSet;
(* Bits, die angeben, welche Shell-Nachrichten
* untersttzt werden (Wort 3)
*)
editBits : tEditSet;
(* Bits, die angeben, welche Editor-Nachrichten
* untersttzt werden (Worte 4 und 5)
*)
version : CARDINAL;
(* Untersttze Versionsnummer des Protokolls
* Aktuell: $102
*)
| SeOk,
EsOk : okShellBits: tShellSet;
(* Bits, die angeben, welche Shell-Nachrichten
* untersttzt werden (Wort 3)
*)
okEditBits : tEditSet;
(* Bits, die angeben, welche Editor-Nachrichten
* untersttzt werden (Worte 4 und 5)
*)
okVersion: CARDINAL;
(* Untersttze Versionsnummer des Antwortenden
* Aktuell: $102
*)
otherId : INTEGER;
(* Die ApId des Senders, auf das dies eine Antwort
* ist (Wort 7)
*)
| SeAck,
EsAck : acknowledge: BOOLEAN;
(* TRUE: Kommando wurde akzeptiert,
* FALSE: Kommando konnte nicht ausgefhrt werden
*)
| SeOpen : namePtr : tPtrString;
(* Zeiger auf den Namen des zu ladenden Textes *)
errLine : LONGINT;
(* Die fehlerhafte Zeile *)
errRow : INTEGER;
(* Die Spalte mit dem Fehler (oder 0) *)
| SeError : errorPtr : tPtrErrInfo;
(* Zeiger auf Speicherbereich, der die Fehlermeldung
* spezifiziert.
*)
| SeErrfile : errPtr : tPtrString;
(* Zeiger auf den Namen des Errorfiles *)
fnamePtr : tPtrString;
(* Zeiger auf den Namen der compilierten Datei *)
| SeClose : maskPtr : tPtrString;
(* Zeiger auf den Namen einer Datei oder eine
* Dateimaske ('*.*' steht fr alle Textfenster)
*)
closeFlag : BOOLEAN;
| SeMenu : menuPtr : tPtrMenuInfo;
(* Zeiger auf Speicherbereich, der die Mentexte
* spezifiziert.
*)
| SeProject,
EsCompile,
EsMake,
EsMakeall,
EsLink,
EsExec,
EsMakeexec,
EsProject : filePtr : tPtrString;
(* Zeiger auf den Filenamen des Files, welches
* behandelt werden soll
*)
| SeQuit,
SeTerminate,
EsQuit,
SeData: data : ARRAY [0..4] OF INTEGER;
(* Definition fr Maximall„nge des Records
*)
| EsShlctrl: ctrlBits : tCtrlSet;
END;
END;
tPtrMessRec = POINTER TO tMessRec;
(* Ein Zeiger auf diese Messageblock
*)
END SEProto.
zum Anfang
(* SE-Protokoll zur Kommunikation zwischen Shells zur Programmentwicklung
* und Editoren.
*
* Dieses Protokoll dient dazu, unter Multitasking-Systemen die Shell
* zur Compilierung und „hnlichen Sachen zu veranlassen, und um Fehler-
* meldungen und/oder Fehlerdateien an den Editor zurckzugeben.
*
* Kommandos bzw. Nachrichten von der Shell zum Editor beginnen
* mit SE_, Nachrichten vom Editor zur Shell beginnen mit ES_
*
* Da teilweise Zeiger auf Speicherbereiche bergeben werden, ist vom
* jeweiligen Absender der Nachricht darauf zu achten, daž diese
* Speicherbereiche vom Empf„nger auch lesbar sind (Memory Protection!).
* Dafr sind diese als Readable zu allozieren!
*
*)
(*
* Erweiterungen
*
* Datum Version Žnderungen
*
* 30.01.96 1.01 SE_CLOSE fr Dateien/Masken, mit Close-Flag
* msg[5] = 0 -> nur sichern
* msg[5] = 1 -> sichern + schliežen
* ES/SE_PROJEKT mit leerem Argument (NULL)
* Um zur Version 0x100 kompatibel zu sein, sollte
* das Programm die Versionsnummer berprfen!!
*
* 13.08.96 1.02 SE_OPEN mit Zeilen- und Spaltennummer
* neue Nachricht SE_MENU
*
* 19.11.96 1.03 bei ES_COMPILE kann der Dateiname auch NULL sein
*
* 08.01.97 1.04 SE_CLOSE: Flag 2 (schliežen ohne sichern)
* SE_MENU: progName
*
* 23.12.97 1.05 ES_SHLCTRL neu, zur Kontrolle der Shell
* Dafr neuer String in SEMENUINFO.
*)
const
SE_INIT = $4200;
(* Die Shell fragt an, ob ein Editor das SE-Protokoll
* versteht.
* Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
* Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Als Antwort erh„lt es ein ES_OK vom Editor.
*)
SE_OK = $4201;
(* Die Shell sagt dem Editor, das sie das Protokoll
* versteht.
* Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
* Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
*)
SE_ACK = $4202;
(* Die Shell best„tigt den Empfang eines Editorkommandos und gibt zurck,
* ob das Kommando ausgefhrt wird.
* Wort 3: TRUE: Kommando wird verstanden und ausgefhrt.
* FALSE: Das Kommando wird nicht verstanden
* Eine SE_ACK mit TRUE sagt nichts darber aus, ob das Kommando erfolg-
* reich ausgefhrt wurde. Es sagt nur, daž die Shell das Kommando
* versteht und ausfhren wird!
*)
SE_OPEN = $4203;
(* Die Shell sagt dem Editor, daž er einen Text ”ffnen
* soll. Als Antwort erh„lt die Shell ein ES_ACK
* Wort 3+4: Ein Zeiger auf den Filenamen des zu ”ffnenden Files
* Wort 5+6: Cursorposition (Zeilennummer)
* Wort 7 : Cursorposition (Spaltennummer)
*)
SE_ERROR = $4204;
(* Es ist ein Fehler beim Compilieren aufgetreten.
* Wort 3+4: Ein Zeiger auf eine Infostruktur, die wie folgt
* aufgebaut ist:
* Wort 0+1: Ein Zeiger auf den Namen des compilierten Textes.
* Wort 2+3: Ein Zeiger auf den Text der Fehlermeldung
* Wort 4 : Die Fehlernummer
* Wort 5+6: Die fehlerhafte Zeile
* Wort 7 : Die Spalte mit dem Fehler (oder 0)
* Mit ES_ACK best„tigt der Editor die Meldung.
*)
SE_ERRFILE = $4205;
(* Es sind Fehler aufgetreten. Die Fehlermeldungen stehen in einem
* Errorfile, welches in der Message spezifiziert wird.
* Wort 3+4: Ein Zeiger auf den Filenamen des Errorfiles mit den
* Fehlermeldungen
* Wort 5+6: Ein Zeiger auf den Namen des compilierten Textes
* Mit ES_ACK best„tigt der Editor die Meldung.
*)
SE_PROJECT = $4206;
(* Die Shell teilt dem Editor mit, daž das Projekt ge„ndert wurde.
* Der Filename des aktuellen Projektfiles wird als Parameter bergeben
* Wird NULL bergeben, sollte das aktuelle Projekt abgemeldet werden.
* Wort 3+4: Ein Zeiger auf den Namen des Projektfiles oder NULL
* Der Editor best„tigt mit ES_ACK.
* Eine vernnftige Reaktion des Editors w„re es in dem Fall,
* ebenfalls das Projekt zu wechseln, sofern er diese untersttzt.
*)
SE_QUIT = $4207;
(* Die Shell teilt dem Editor mit, daž sie jetzt beendet wird.
* Der Editor sollte in dem Fall die Shell als Kommunikationspartner
* vergessen.
* Parameter gibt es keine.
* Es wird keine Antwort erwartet!
*)
SE_TERMINATE = $4208;
(* Die Shell teilt dem Editor mit, daž dieser sich beenden soll.
* Der Editor sollte in dem Fall sich selbst beenden und seinen ganz
* normalen Terminierungsprozež durchlaufen (und in dem auch ein ES_QUIT
* schicken!). Der Grund fr so eine Meldung der Shell k”nnte zum Beispiel
* zu wenig Speicher zum compilieren sein.
* Mit ES_ACK best„tigt der Editor die Meldung.
*)
SE_CLOSE = $4209;
(* Die Shell teilt dem Editor mit, daž dieser bestimmte Texte sichern
* bzw. schliežen soll. Beim Schliežen von ge„nderten Texten sollte der
* Editor vorher nachfragen.
* Wort 3+4: Ein Zeiger auf den Namen einer Datei oder eine Dateimaske.
* '*.*' steht fr alle Textfenster (entspricht also dem SE_CLOSE
* der Protokoll-Version 0x100).
* Wort 5 : 0 = nur sichern
* 1 = sichern und schliežen
* Mit ES_ACK best„tigt der Editor die Meldung.
*)
SE_MENU = $420A;
(* Die Shell teilte dem Editor mit, was er fr die einzelnen Programme
* in sein Men eintragen soll.
*
* Word 3+4: Ein Zeiger auf eine MenuInfo-Struktur mit den Eintr„gen.
* Mit ES_ACK best„tigt der Editor die Meldung.
*)
ES_INIT = $4240;
(* Ein Editor fragt an, ob eine Shell das SE-Protokoll versteht.
* Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
* Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Als Antwort erh„lt es SE_OK von der Shell
*)
ES_OK = $4241;
(* Der Editor beantwortet die Anfrage der Shell nach dem Protokoll.
* Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
* Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
*)
ES_ACK = $4242;
(* Der Editor best„tigt den Empfang des Kommandos
* Wort 3: TRUE: Kommando wird verstanden und ausgefhrt.
* FALSE: Das Kommando wird nicht verstanden
* Eine ES_ACK mit TRUE sagt nichts darber aus, ob das Kommando erfolg-
* reich ausgefhrt wurde. Es sagt nur, daž der Editor das Kommando
* versteht und ausfhren wird!
*)
ES_COMPILE = $4243;
(* Der Editor sagt der Shell, daž sie ein File bersetzen soll.
* Ein Pointer auf den Dateinamen wird in der Message bergeben.
* Wort 3+4: Zeiger auf den Namen der zu compilierenden Datei
* (oder NULL).
* Diese Nachricht muž mit SE_ACK best„tigt werden.
*)
ES_MAKE = $4244;
(* Der Editor sagt der Shell, daž sie ein Make ausfhren soll.
* Ein Filename kann in der Message bergeben werden, muž aber
* nicht gesetzt sein und muž von der Shell auch nicht beachtet
* werden!
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell best„tigt mit SE_ACK.
*)
ES_MAKEALL = $4245;
(* Der Editor sagt der Shell, daž ein komplettes Make All ausgefhrt
* werden soll. Ein Filename fr das Makefile kann (muž nicht) in
* der Message bergeben werden.
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell best„tigt mit SE_ACK.
*)
ES_LINK = $4246;
(* Der Editor sagt der Shell, daž das Programm
* gelinkt werden soll. Ein Filename kann
* in der Message bergeben werden, muž aber
* nicht unbedingt beachtet werden von der Shell!
* Wort 3+4: Zeiger auf den Namen der Source, die gelinkt werden soll
* (oder NULL)
* Die Shell best„tigt mit SE_ACK.
*)
ES_EXEC = $4247;
(* Der Editor sagt der Shell, daž das Programm
* zu der Source ausgefhrt werden soll. Ein
* Filename kann bergeben werden, muž von der
* Shell aber nicht beachtet werden.
* Wort 3+4: Zeiger auf den Namen des auszufhrenden Files (oder NULL)
* Bei einer Sourcedatei ist diese ggf. noch zu
* compilieren und/oder zu linken
* Die Shell best„tigt mit SE_ACK.
*)
ES_MAKEEXEC = $4248;
(* Die Shell soll ein Make ausfhren und danach das Programm ausfhren.
* Ein Filename fr das Makefile kann (muž nicht) in der Message
* bergeben werden.
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NULL)
* Die Shell best„tigt mit SE_ACK.
*)
ES_PROJECT = $4249;
(* Der Editor teilt der Shell mit, daž das Project ge„ndert/gewechselt
* wurde. Der Filename des Projektfiles wird als Parameter in der Message
* bergeben. Wird NULL bergeben, sollte das aktuelle Projekt abgemeldet
* werden.
* Wort 3+4: Zeiger auf den Namen des Projektfiles oder NULL.
* Die Shell best„tigt mit SE_ACK.
* Eine vernnftige Reaktion der Shell w„re in dem Fall, ebenfalls
* das Projekt zu wechseln, sofern sie diese untersttzt.
*)
ES_QUIT = $424A;
(* Der Editor teilt der Shell mit, daž er jetzt beendet wird.
* Die Shell sollte in dem Fall den Editor als Kommunikationspartner
* vergessen.
* Parameter gibt es keine.
* Es wird keine Antwort erwartet!
*)
ES_SHLCTRL = $424B;
(*
* Sonstige Kontrolle der Shell durch den Editors.
* Wort 3+4 Zeiger auf den Namen des obersten Fensters oder NULL.
* Wort 5 Steuer-Flag:
* 0: Shell soll sich toppen (Men/Fenster).
* Die Shell best„tigt mit SE_ACK.
*)
SE_DATA = 0;
(* Nur fr Typdeklaration benutzt, eigentlich berflssig
*)
SEPROTOVERSION = $105; (* Die Versionsnummer des Protokolls.
* Highbyte ist die Major Number
* Lowbyte ist die Lower Number
*)
(* Typdefinitionen fr die Nachrichten
*)
(* Dies definiert die einzelnen Bits, welche Nachrichten untersttzt werden
*)
type tShellCommands = (seInit, seOk, seAck, seOpen, seError, seErrfile,
seProject, seQuit, seTerminate, seClose, seMenu );
tEditCommands = (esInit, esOk, esAck, esCompile, esMake, esMakeall,
esLink, esExec, esMakeexec, esProject, esQuit, esShlctrl,
res12, res13, res14, res15, res16, res17, res18,
res19, res20, res21, res22, res23, res24, res25,
res26, res27, res28, res29, res30, res31);
tShellSet = SET OF tShellCommands;
tEditSet = SET OF tEditCommands;
tCtrlCommands = ( topShell );
tCtrlSet = SET OF tCtrlCommands;
tString = ARRAY [0..255] OF CHAR;
tPtrString = ^ tString;
(* Zeiger auf einen nullterminierten String
*)
LONGBITSET = SET OF 0..31;
(* Leider kennt das nicht jeder Compiler
*)
tErrInfo = RECORD
errFile : tPtrString;
(* Zeiger auf den Namen der compilierten Datei
*)
errMess : tPtrString;
(* Zeiger auf die Fehlermeldung
*)
errNum : INTEGER;
(* Die Fehlernummer
*)
errLine : LONG_INTEGER;
(* Die fehlerhafte Zeile
*)
errRow : INTEGER;
(* Die Spalte mit dem Fehler (oder 0)
*)
END;
tPtrErrInfo = ^ tErrInfo;
tMenuInfo = RECORD
compStr : tPtrString;
makeStr : tPtrString;
makeAllStr : tPtrString;
linkStr : tPtrString;
execStr : tPtrString;
makeExecStr : tPtrString;
progName : tPtrString;
shellCtrlString : tPtrString;
END;
tPtrMenuInfo = ^ tMenuInfo;
(* šber diese Recorddefinition kann man alle
* Messages des Protokolls behandeln
*)
tMessRec = RECORD
msg : INTEGER;
(* Messagenummer, Wort 0 *)
apId : INTEGER;
(* Applikation ID des Senders, Wort 1 *)
overLen : INTEGER;
(* šberl„nge der Nachricht (immer 0 fr SE-Protokoll),
* Wort 2 *)
CASE INTEGER OF
SE_INIT,
ES_INIT : ( shellBits: tShellSet;
(* Bits, die angeben, welche Shell-Nachrichten
* untersttzt werden (Wort 3)
*)
editBits : tEditSet;
(* Bits, die angeben, welche Editor-Nachrichten
* untersttzt werden (Worte 4 und 5)
*)
version : INTEGER );
(* Untersttze Versionsnummer des Protokolls
* Aktuell: $102
*)
SE_OK,
ES_OK : ( okShellBits: tShellSet;
(* Bits, die angeben, welche Shell-Nachrichten
* untersttzt werden (Wort 3)
*)
okEditBits : tEditSet;
(* Bits, die angeben, welche Editor-Nachrichten
* untersttzt werden (Worte 4 und 5)
*)
okVersion: INTEGER;
(* Untersttze Versionsnummer des Antwortenden
* Aktuell: $102
*)
otherId : INTEGER );
(* Die ApId des Senders, auf das dies eine Antwort
* ist (Wort 7)
*)
SE_ACK,
ES_ACK : ( acknowledge: BOOLEAN );
(* TRUE: Kommando wurde akzeptiert,
* FALSE: Kommando konnte nicht ausgefhrt werden
*)
SE_OPEN : ( namePtr : tPtrString;
(* Zeiger auf den Namen des zu ladenden Textes *)
errLine : LONG_INTEGER;
(* Die fehlerhafte Zeile *)
errRow : INTEGER );
(* Die Spalte mit dem Fehler (oder 0) *)
SE_ERROR : ( errorPtr : tPtrErrInfo );
(* Zeiger auf Speicherbereich, der die Fehlermeldung
* spezifiziert.
*)
SE_ERRFILE : ( errPtr : tPtrString;
(* Zeiger auf den Namen des Errorfiles *)
fnamePtr : tPtrString );
(* Zeiger auf den Namen der compilierten Datei *)
SE_CLOSE : ( maskPtr : tPtrString;
(* Zeiger auf den Namen einer Datei oder eine
* Dateimaske ('*.*' steht fr alle Textfenster)
*)
closeFlag : BOOLEAN );
SE_MENU : ( menuPtr : tPtrMenuInfo );
(* Zeiger auf Speicherbereich, der die Mentexte
* spezifiziert.
*)
SE_PROJECT,
ES_COMPILE,
ES_MAKE,
ES_MAKEALL,
ES_LINK,
ES_EXEC,
ES_MAKEEXEC,
ES_PROJECT : ( filePtr : tPtrString );
(* Zeiger auf den Filenamen des Files, welches
* behandelt werden soll
*)
SE_QUIT,
SE_TERMINATE,
ES_QUIT,
SE_DATA: ( data : ARRAY [0..4] OF INTEGER );
(* Definition fr Maximall„nge des Records
*)
ES_SHLCTRL: ( ctrlBits : tCtrlSet );
END;
tPtrMessRec = ^ tMessRec;
(* Ein Zeiger auf diese Messageblock
*)
zum Anfang
MODULE SEProtocol;
IMPORT Str:=Strings;
(* SE-Protokoll zur Kommunikation zwischen Shells zur Programmentwicklung
* und Editoren.
*
* Dieses Protokoll dient dazu, unter Multitasking-Systemen die Shell
* zur Compilierung und „hnlichen Sachen zu veranlassen, und um Fehler-
* meldungen und/oder Fehlerdateien an den Editor zurckzugeben.
*
* Kommandos bzw. Nachrichten von der Shell zum Editor beginnen
* mit SE, Nachrichten vom Editor zur Shell beginnen mit ES
*
* Da teilweise Zeiger auf Speicherbereiche bergeben werden, ist vom
* jeweiligen Absender der Nachricht darauf zu achten, daž diese
* Speicherbereiche vom Empf„nger auch lesbar sind (Memory Protection!).
* Dafr sind diese als Readable zu allozieren!
*
*
* Erweiterungen
*
* Datum Version Žnderungen
*
* 27.01.96 101 SE_CLOSE fr Dateien oder Masken
* Wort 5 : 0 = nur sichern
* 1 = sichern und schliežen
* ES/SE_PROJEKT mit leerem Argument
* 17.07.96 102 SE_MENU definiert
* 30.07.96 SE_OPEN mit Cursor-Pos.
*
* 19.11.96 103 ES_COMPILER auch ohne Argument
*
* 08.01.97 1.04 SE_CLOSE: Flag 2 (schliežen ohne sichern)
* SE_MENU: progName
*
* 23.12.97 1.05 ES_SHLCTRL neu, zur Kontrolle der Shell
* Dafr neuer String in SEMENUINFO.
*)
CONST
SEPROTOVERSION *= 105H;
SEINIT *= 4200H;
(* Die Shell fragt an, ob ein Editor das SE-Protokoll
* versteht.
* Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
* Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Als Antwort erh„lt es ein ESOK vom Editor.
*)
SEOK *= 4201H;
(* Die Shell sagt dem Editor, das sie das Protokoll
* versteht.
* Wort 3: Ein Bitset, welche Nachrichten die Shell versendet
* Wort 4+5: Ein Bitset, welche Editorkommandos verstanden werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
*)
SEACK *= 4202H;
(* Die Shell best„tigt den Empfang eines Editorkommandos und gibt zurck,
* ob das Kommando ausgefhrt wird.
* Wort 3: TRUE: Kommando wird verstanden und ausgefhrt.
* FALSE: Das Kommando wird nicht verstanden
* Eine SEACK mit TRUE sagt nichts darber aus, ob das Kommando erfolg-
* reich ausgefhrt wurde. Es sagt nur, daž die Shell das Kommando
* versteht und ausfhren wird!
*)
SEOPEN *= 4203H;
(* Die Shell sagt dem Editor, daž er einen Text ”ffnen
* soll. Als Antwort erh„lt die Shell ein ESACK
* Wort 3+4: Ein Zeiger auf den Filenamen des zu ”ffnenden Files
* Wort 5+6: Zeilennummer oder null
* Wort 7 : Spaltennummer oder null
*)
SEERROR *= 4204H;
(* Es ist ein Fehler beim Compilieren aufgetreten.
* Wort 3+4: Ein Zeiger auf eine Infostruktur, die wie folgt
* aufgebaut ist:
* Wort 0+1: Ein Zeiger auf den Namen des compilierten Textes.
* Wort 2+3: Ein Zeiger auf den Text der Fehlermeldung
* Wort 4 : Die Fehlernummer
* Wort 5+6: Die fehlerhafte Zeile
* Wort 7 : Die Spalte mit dem Fehler (oder 0)
* Mit ESACK best„tigt der Editor die Meldung.
*)
SEERRFILE *= 4205H;
(* Es sind Fehler aufgetreten. Die Fehlermeldungen stehen in einem
* Errorfile, welches in der Message spezifiziert wird.
* Wort 3+4: Ein Zeiger auf den Filenamen des Errorfiles mit den
* Fehlermeldungen
* Wort 5+6: Ein Zeiger auf den Namen des compilierten Textes
* Mit ESACK best„tigt der Editor die Meldung.
*)
SEPROJECT *= 4206H;
(* Die Shell teilt dem Editor mit, daž das Projekt
* ge„ndert wurde. Der Filename des aktuellen
* Projektfiles wird als Parameter bergeben
* Wort 3+4: Ein Zeiger auf den Namen des Projektfiles (oder NULL!)
* Der Editor best„tigt mit ESACK.
* Eine vernnftige Reaktion des Editors w„re es in dem Fall,
* ebenfalls das Projekt zu wechseln, sofern er diese untersttzt.
*)
SEQUIT *= 4207H;
(* Die Shell teilt dem Editor mit, daž sie jetzt beendet wird.
* Der Editor sollte in dem Fall die Shell als Kommunikationspartner
* vergessen.
* Parameter gibt es keine.
* Es wird keine Antwort erwartet!
*)
SETERMINATE *= 4208H;
(* Die Shell teilt dem Editor mit, daž dieser sich beenden soll.
* Der Editor sollte in dem Fall sich selbst beenden und seinen ganz
* normalen Terminierungsprozež durchlaufen (und in dem auch ein ESQUIT
* schicken!). Der Grund fr so eine Meldung der Shell k”nnte zum Beispiel
* zu wenig Speicher zum compilieren sein.
* Mit ESACK best„tigt der Editor die Meldung.
*)
SECLOSE *= 4209H;
(* Die Shell teilt dem Editor mit, daž dieser alle Texte schliežen soll.
* Der Editor sollte bei ge„nderten Texten vorher nachfragen.
* Wort 3+4: Ein Zeiger auf den Namen einer Datei oder eine Dateimaske.
* Bei '*.*', alle Textfenster.
* Wort 5: 0 = nur sichern, 1 = sicher und schliežen
* Mit ESACK best„tigt der Editor die Meldung.
*)
SEMENU *= 420AH;
(* Die Shell teilt dem Editor mit, was er in sein Men fr die einzelnen
* Programme eintragen soll.
* Wort 3+4: Ein Zeiger auf die entsprechende Struktur (s.u.)
*)
ESINIT *= 4240H;
(* Ein Editor fragt an, ob eine Shell das SE-Protokoll versteht.
* Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
* Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Als Antwort erh„lt es SEOK von der Shell
*)
ESOK *= 4241H;
(* Der Editor beantwortet die Anfrage der Shell nach dem Protokoll.
* Wort 3: Ein Bitset, welche Shellnachrichten verstanden werden
* Wort 4+5: Ein Bitset, welche Editorkommandos versendet werden
* Wort 6: Untersttze Versionsnummer des Protokolls
* Wort 7: Die ApId des Programmes, dessen Nachricht beantwortet wird
*)
ESACK *= 4242H;
(* Der Editor best„tigt den Empfang des Kommandos
* Wort 3: TRUE: Kommando wird verstanden und ausgefhrt.
* FALSE: Das Kommando wird nicht verstanden
* Eine ESACK mit TRUE sagt nichts darber aus, ob das Kommando erfolg-
* reich ausgefhrt wurde. Es sagt nur, daž der Editor das Kommando
* versteht und ausfhren wird!
*)
ESCOMPILE *= 4243H;
(* Der Editor sagt der Shell, daž sie ein File bersetzen soll.
* Ein Pointer auf den Dateinamen wird in der Message bergeben.
* Wort 3+4: Zeiger auf den Namen der zu compilierenden Datei (oder NIL).
* Diese Nachricht muž mit SEACK best„tigt werden.
*)
ESMAKE *= 4244H;
(* Der Editor sagt der Shell, daž sie ein Make ausfhren soll.
* Ein Filename kann in der Message bergeben werden, muž aber
* nicht gesetzt sein und muž von der Shell auch nicht beachtet
* werden!
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NIL)
* Die Shell best„tigt mit SEACK.
*)
ESMAKEALL *= 4245H;
(* Der Editor sagt der Shell, daž ein komplettes Make All ausgefhrt
* werden soll. Ein Filename fr das Makefile kann (muž nicht) in
* der Message bergeben werden.
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NIL)
* Die Shell best„tigt mit SEACK.
*)
ESLINK *= 4246H;
(* Der Editor sagt der Shell, daž das Programm
* gelinkt werden soll. Ein Filename kann
* in der Message bergeben werden, muž aber
* nicht unbedingt beachtet werden von der Shell!
* Wort 3+4: Zeiger auf den Namen der Source, die gelinkt werden soll
* (oder NULL)
* Die Shell best„tigt mit SEACK.
*)
ESEXEC *= 4247H;
(* Der Editor sagt der Shell, daž das Programm
* zu der Source ausgefhrt werden soll. Ein
* Filename kann bergeben werden, muž von der
* Shell aber nicht beachtet werden.
* Wort 3+4: Zeiger auf den Namen des auszufhrenden Files (oder NIL)
* Bei einer Sourcedatei ist diese ggf. noch zu
* compilieren und/oder zu linken
* Die Shell best„tigt mit SEACK.
*)
ESMAKEEXEC *= 4248H;
(* Die Shell soll ein Make ausfhren und danach das Programm ausfhren.
* Ein Filename fr das Makefile kann (muž nicht) in der Message
* bergeben werden.
* Wort 3+4: Zeiger auf den Namen des Makefiles (oder NIL)
* Die Shell best„tigt mit SEACK.
*)
ESPROJECT *= 4249H;
(* Der Editor teilt der Shell mit, daž das Project
* ge„ndert/gewechselt wurde. Der Filename des
* Projektfiles wird als Parameter in der Message
* bergeben.
* Wort 3+4: Zeiger auf den Namen des Projektfiles (oder NIL!)
* Die Shell best„tigt mit SEACK.
* Eine vernnftige Reaktion der Shell w„re in dem Fall, ebenfalls
* das Projekt zu wechseln, sofern es diese untersttzt.
*)
ESQUIT *= 424AH;
(* Der Editor teilt der Shell mit, daž er jetzt beendet wird.
* Die Shell sollte in dem Fall den Editor als Kommunikationspartner
* vergessen.
* Parameter gibt es keine.
* Es wird keine Antwort erwartet!
*)
ES_SHLCTRL *= 424BH;
(*
* Sonstige Kontrolle der Shell durch den Editors.
* Wort 3+4 Zeiger auf den Namen des obersten Fensters oder NULL.
* Wort 5 Steuer-Flag:
* 0: Shell soll sich toppen (Men/Fenster).
* Die Shell best„tigt mit SE_ACK.
*)
SEDATA *= 0;
(* Nur fr Typdeklaration benutzt, eigentlich berflssig
*)
(* Die Bits fr SE_INIT/ES_INIT *)
seINIT *= 0;
seOK *=1;
seACK *=2;
seOPEN *=3;
seERROR *=4;
seERRFILE *=5;
sePROJECT *=6;
seQUIT *=7;
seTERMINATE*=8;
seCLOSE *=9;
seMENU *=10;
esINIT *=0;
esOK *=1;
esACK *=2;
esCOMPILE *=3;
esMAKE *=4;
esMAKEALL *=5;
esLINK *=6;
esEXEC *=7;
esMAKEEXEC *=8;
esPROJECT *=9;
esQUIT *=10;
esSHLCTRL *=11;
TYPE
ShellSet* = SET;
EditSet* = SET;
ErrInfo* = RECORD
errFile* : Str.ptr; (* Zeiger auf den Namen der compilierten Datei *)
errMess* : Str.ptr; (* Zeiger auf die Fehlermeldung *)
errNum* : INTEGER; (* Die Fehlernummer *)
errLine* : LONGINT; (* Die fehlerhafte Zeile *)
errRow* : INTEGER; (* Die Spalte mit dem Fehler (oder 0) *)
END;
PtrErrInfo* = POINTER TO ErrInfo;
MenuInfo* = RECORD
compStr* : Str.ptr;
makeStr* : Str.ptr;
makeAllStr* : Str.ptr;
linkStr* : Str.ptr;
execStr* : Str.ptr;
makeExecStr* : Str.ptr;
progName* : Str.ptr;
shellCtrlStr* : Str.ptr;
END(*RECORD*);
PtrMenuInfo*= POINTER TO MenuInfo;
END SEProtocol.
zum Anfang
|
English version not yet available. |