Topic : TOS - das Betriebssystem Author : Version : tos.hyp (5. März 2013) Subject : Programmieren/Atari Nodes : 3001 Index Size : 93602 HCP-Version : 5 Compiled on : Atari @charset : atarist @lang : @default : Titel @help : @options : +g -i -s +x +zz -t4 @width : 70 View Ref-File8.7.9.1 Das CAB-Protokoll TOS Das CAB-Protokoll besteht aus einer Reihe von AES-Messages mit deren Hilfe beliebige GEM-Programme bestimmte Aufgaben an CAB übertragen können, bzw. bestimmte Aktionen mit CAB koordinieren können. Der Inhalt der Environment-Variablen BROWSER= (sofern definiert) enthält den Zugriffspfad von CAB. Sollte sich CAB nicht im Speicher befinden kann ein Programm über diese Variable CAB selbst nachstarten. Eine mögliche Anwendung: Falls man im Internet weitere aktuelle Informationen oder Updates zu eigenen Programmen anbietet, könnte man mit dem CAB-Protokoll ohne großen Aufwand den Zugriff auf diese Informationen aus diesen Programmen heraus ermöglichen. CAB erledigt dann den Download der Daten und die Darstellung. Die Beschreibung der Messages CAB_HELLO (0xCAB8) (Nachricht von CAB) CAB verschickt nach seinem Start an alle laufenden Programme diese Nachricht msg[0] = 0xCAB8 msg[1] = Id von CAB msg[2] = 0 msg[3] = Version des CAB-Protokolls (0x0100 entspricht V1.00) msg[4] = Bitvektor mit den von CAB (CAB.OVL) unterstützten 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 unterstützten 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 (0xCABB) (Nachricht an CAB) Wird diese Nachricht an CAB geschickt, sendet CAB die Nachricht CAB_HELLO zurück. Bleibt CAB_HELLO aus, wird noch eine alte Version von CAB benutzt welche das CAB-Protokoll noch nicht unterstützt. Alle Programme, die an den Informationen interessiert sind, die CAB_HELLO liefert, sollten nach dem Start CAB_SUPPORT an CAB senden. Wird CAB erst später gestartet, wird CAB_HELLO automatisch an das Programm geschickt. msg[0] = 0xCABB 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 (0xCAB3) (Nachricht an CAB) Ähnlich wie VA_START aber statt eines Dateinamens wird eine URL übergeben. CAB zeigt diese Datei dann an. msg[0] = 0xCAB3 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 (0xCAB5) (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] = 0xCAB5 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 (0xCAB7) (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] = 0xCAB7 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 (0xCAB6) (Nachricht von CAB) Wird von CAB an alle Programme verschickt, die sich mit CAB_REQUESTSTATUS angemeldet haben. msg[0] = 0xCAB6 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 (0xCAB1) (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] = 0xCAB1 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 (0xCAB9) (Nachricht an CAB) Kann an CAB geschickt werden, um Mails zu verschicken. msg[0] = 0xCAB9 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 gehängt werden. msg[5] = \ Zeiger auf eine Datei, die den Mailinhalt enthält 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/geändert werden soll. Bit 1: bei 1 wird die Maildatei gelöscht, nachdem sie verschickt wurde, bei 0 bleibt sie erhalten. Bit 2-15: 0 (reserviert) CAB_MAILSENT (0xCABA) (Nachricht von CAB) Wird von CAB an das Programm geschickt, welches CAB_MAIL gesendet hat und enthält Informationen, ob das Verschicken der Mail geklappt hat oder nicht. msg[0] = 0xCABA 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] = Enthält eine Fehlernummer, falls msg[3]=0 0: Keine URL angegeben. 1: Offline, Netzverbindung gestört, Server nicht erreichbar. 2: Benutzer hat Aktion abgebrochen (Falls die Mail in CAB bearbeitet werden sollte, hat der Benutzer die Möglichkeit 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 für 'Cache-Tools' CAB_CHANGED (0xCAB0) (Nachricht an/von CAB) Der Cache (bzw. CACHE.CAB) wurde verändert und soll neu eingelesen werden. msg[0] = 0xCAB0 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 (0xCAB1) (Nachricht an/von CAB) CAB oder das Cache-Tool beendet sich (als Info für das jeweils andere PRG) msg[0] = 0xCAB1 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 (0xCAB2) (Nachricht von CAB) Die lokalen HTML-Verzeichnisse und/oder das Cache-Verzeichnis wurde geändert. Nähere Infos sind in der Cache-Tools-Dokumentation zu erfahren. msg[0] = 0xCAB2 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 (0xCAB4) (Nachricht von CAB) Das Cache-Tool soll sich beenden. msg[0] = 0xCAB4 msg[1] = Id von CAB msg[2] = 0 msg[3] = 0 msg[4] = 0 msg[5] = 0 msg[6] = 0 msg[7] = 0