
Das CAB-Protokoll
=================

Das CAB-Protokoll besteht aus einer Reihe von AES-Messages mit deren
Hilfe beliebige GEM-Programme bestimmte Aufgaben an CAB bertragen knnen,
bzw. bestimmte Aktionen mit CAB koordinieren knnen.

Der Inhalt der Environment-Variablen BROWSER= (sofern definiert) enthlt
den Zugriffspfad von CAB. Sollte sich CAB nicht im Speicher befinden kann
ein Programm ber diese Variable CAB selbst nachstarten.

Eine mgliche Anwendung:
Falls man im Internet weitere aktuelle Informationen oder Updates zu
eigenen Programmen anbietet, knnte man mit dem CAB-Protokoll ohne groen
Aufwand den Zugriff auf diese Informationen aus diesen Programmen heraus
ermglichen. CAB erledigt dann den Download der Daten und die Darstellung.


Die Beschreibung der Messages
=============================

CAB_HELLO  ($CAB8)  (Nachricht von CAB)
------------------
CAB verschickt nach seinem Start an alle laufenden Programme diese
Nachricht

msg[0] = $CAB8
msg[1] = Id von CAB
msg[2] = 0
msg[3] = Version des CAB-Protokolls ($0100 entspricht V1.00)
msg[4] = Bitvektor mit den von CAB (CAB.OVL) untersttzten Internet-
         Protokollen
             Bit 0: HTTP
             Bit 1: FTP
             Bit 2: GOPHER
             Bit 3: WAIS
             Bit 4: MAILTO
             Bit 5: NNTP
             Bit 6: TELNET
             Bit 7-15: 0 (reserviert)
msg[5] = Bitvektor mit den von CAB untersttzten Nachrichten des
         CAB-Protokolls.
             Bit 0: CAB_VIEW
             Bit 1: CAB_MAIL, CAB_MAILSENT
             Bit 2: CAB_REQUESTSTATUS, CAB_RELEASESTATUS, CAB_STATUS,
                    CAB_EXIT
             Bit 3-15: 0 (reserviert)
msg[6] = 0
msg[7] = 0



CAB_SUPPORT  ($CABB)  (Nachricht an CAB)
--------------------
Wird diese Nachricht an CAB geschickt, sendet CAB die Nachricht CAB_HELLO
zurck. Bleibt CAB_HELLO aus, wird noch eine alte Version von CAB benutzt
welche das CAB-Protokoll noch nicht untersttzt.
Alle Programme, die an den Informationen interessiert sind, die CAB_HELLO
liefert, sollten nach dem Start CAB_SUPPORT an CAB senden. Wird CAB erst
spter gestartet, wird CAB_HELLO automatisch an das Programm geschickt.

msg[0] = $CABB
msg[1] = Id des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



CAB_VIEW ($CAB3)  (Nachricht an CAB)
----------------
hnlich wie VA_START aber statt eines Dateinamens wird eine URL bergeben.
CAB zeigt diese Datei dann an.

msg[0] = $CAB3
msg[1] = Id des PRGs
msg[2] = 0
msg[3] = \ Zeiger auf die URL
msg[4] = /
msg[5] = Wenn hier 1 eingetragen wurde, stellt CAB die URL in einem neuen
         Fenster dar, wenn 0 eingetragen wurde wird das oberste CAB-
         Fenster benutzt.
msg[6] = 0
msg[7] = 0



CAB_REQUESTSTATUS ($CAB5)  (Nachricht an CAB)
-------------------------
Kann an CAB geschickt werden, um zu erfahren ob CAB zur Zeit online oder
offline ist. CAB schickt daraufhin bei jeder nderung des On-/Offline-
Statuses die Message CAB_STATUS.

msg[0] = $CAB5
msg[1] = Id des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



CAB_RELEASESTATUS ($CAB7)  (Nachricht an CAB)
-------------------------
Sollte an CAB geschickt werden, wenn ein Programm nicht mehr an den
on/offline- Informationen interessiert ist, die mit CAB_REQUESTSTATUS
angefordert wurden (z.B. weil es sich beendet).

msg[0] = $CAB7
msg[1] = Id des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



CAB_STATUS ($CAB6)  (Nachricht von CAB)
------------------
Wird von CAB an alle Programme verschickt, die sich mit CAB_REQUESTSTATUS
angemeldet haben.

msg[0] = $CAB6
msg[1] = Id von CAB
msg[2] = 0
msg[3] = 1 falls CAB online; 0 falls CAB offline.
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



CAB_EXIT ($CAB1)  (Nachricht von CAB)
----------------
Wird von CAB an alle Programme geschickt, die sich mit CAB_REQUESTSTATUS
angemeldet haben, sobald sich CAB beendet. Vorher wird auch noch ein
CAB_STATUS gesendet, in dem der offline-Zustand gemeldet wird.

msg[0] = $CAB1
msg[1] = Id von CAB
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



CAB_MAIL ($CAB9)  (Nachricht an CAB)
----------------
Kann an CAB geschickt werden, um Mails zu verschicken.

msg[0] = $CAB9
msg[1] = Id des PRGs
msg[2] = 0

msg[3] = \ Zeiger auf die URL. Ein 'Betreff' (Subject) kann, durch ein
msg[4] = / Fragezeichen getrennt, direkt an die URL gehngt werden.

msg[5] = \ Zeiger auf eine Datei, die den Mailinhalt enthlt oder
msg[6] = / null (dann ffnet CAB einen Editor, in dem die Mail eingegeben
           wird).

msg[7] = Bitvektor mit weiteren Optionen.
             Bit 0: 0 falls die Maildatei sofort verschickt werden soll,
                    oder 1 falls die Maildatei vom Benutzer noch in CAB
                    bearbeitet/gendert werden soll.
             Bit 1: bei 1 wird die Maildatei gelscht, nachdem sie verschickt
                    wurde, bei 0 bleibt sie erhalten.
             Bit 2-15: 0 (reserviert)


CAB_MAILSENT ($CABA)  (Nachricht von CAB)
--------------------
Wird von CAB an das Programm geschickt, welches CAB_MAIL gesendet hat und
enthlt Informationen, ob das Verschicken der Mail geklappt hat oder nicht.

msg[0] = $CABA
msg[1] = Id von CAB
msg[2] = 0
msg[3] = 1 falls die Mail ohne Fehler verschickt wurde; 0 bei Fehler (in
         diesem Fall ist in msg[4] die Fehlerursache zu erfahren).
msg[4] = Enthlt eine Fehlernummer, falls msg[3]=0
              0: Keine URL angegeben.
              1: Offline, Netzverbindung gestrt, Server nicht erreichbar.
              2: Benutzer hat Aktion abgebrochen (Falls die Mail in CAB
                 bearbeitet werden sollte, hat der Benutzer die
                 Mglichkeit die Aktion abzubrechen)
              3: GEMDOS-Fehler beim Zugriff auf die Maildatei.
              4: Editor zum Bearbeiten konnte nicht aufgerufen werden.
msg[5] = 0
msg[6] = 0
msg[7] = 0




Spezielle Messages fr 'Cache-Tools'
====================================

CAB_CCHANGED ($CAB0)  (Nachricht an/von CAB)
--------------------
Der Cache (bzw. CACHE.CAB) wurde verndert und soll neu eingelesen werden.

msg[0] = $CAB0
msg[1] = Id von CAB/des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



CAB_EXIT ($CAB1)  (Nachricht an/von CAB)
----------------
CAB oder das Cache-Tool beendet sich (als Info fr das jeweils andere PRG)

msg[0] = $CAB1
msg[1] = Id von CAB/des PRGs
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



CAB_PATH ($CAB2)  (Nachricht von CAB)
----------------
Die lokalen HTML-Verzeichnisse und/oder das Cache-Verzeichnis wurde
gendert. Nhere Infos sind in der Cache-Tools-Dokumentation zu erfahren.

msg[0] = $CAB2
msg[1] = Id von CAB
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



CAB_TERM ($CAB4)  (Nachricht von CAB)
----------------
Das Cache-Tool soll sich beenden.

msg[0] = $CAB4
msg[1] = Id von CAB
msg[2] = 0
msg[3] = 0
msg[4] = 0
msg[5] = 0
msg[6] = 0
msg[7] = 0



