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-File15.1 AV-Protokoll TOS Das AV-Protokoll (Accessory-Venus) wurde von Stefan Eissing entwickelt und zuerst im alternativen Desktop Gemini eingesetzt. Mittlerweile wird dieses Protokoll jedoch von vielen weiteren Shells (Ease, MagXDesk, Thing, ...) unterstützt. Dieser Abschnitt beschreibt die Version des Protokolls aus der Gemini-Distribution vom 29. Januar 1995 (Gemini 1.a). Die Kommunikation zwischen zwei Prozessen erfolgt beim AV-Protokoll über den Austausch von (erweiterten) AES-Nachrichten, die sich einer der folgenden Kategorien zuteilen lassen: ∙ AV-Funktionen (Client -> Server) ∙ VA-Funktionen (Server -> Client) Achtung: An dieser Stelle sei darauf hingewiesen, daß im Hinblick auf zukünftige Betriebssystem-Versionen zur Kommunikation zwischen verschiedenen Programmen benutzte oder über Zeiger zugewiesene Speicherbereiche global sein müssen (Mxalloc-Funktion mit Global- Flag). Andernfalls wird es beim Einsatz auf Rechnern mit PMMU (z.B. Atari-TT oder Falcon) zu Speicherschutzverletzungen kommen. Sollten in Nachrichten Pfade oder Dateinamen vorkommen, so muß immer der absolute Pfad angegeben werden (also mit Laufwerk) und die Laufwerksbuchstaben müssen Großbuchstaben sein. Pfade sollten immer mit einem Backslash enden! Mit AV_PROTOKOLL kann jede Applikation nachfragen, welche Nachrichten verstanden werden (nicht alle Shells unterstützen das vollständige Protokoll). Es wäre schön, wenn auch andere Programme auf dieses Protokoll reagieren würden. Zumindest AV_SENDKEY ist sicher leicht zu implementieren und ist die einzige Methode, wie über Nachrichten Tastaturdrücke simuliert werden können. Unter normalem TOS fragt dazu ein Accessorie, wenn es eine AC_CLOSE- Nachricht vom AES erhalten hat, die Applikation (mit ID) 0 per AV_PROTOKOLL ob sie etwas davon versteht. In einer Multitasking- Umgebung (MultiTOS, MiNT/N.AES oder MagiC) muß aber das Programm nicht mehr die ID 0 haben, zudem kommt es (fast) nicht mehr zu AC_CLOSE- Nachrichten. Außerdem können nicht nur Accessories, sondern auch normale Programme mit dem AV-Server kommunizieren wollen. Was tun? Wenn es mehr als eine Hauptapplikation geben kann, dann sollte das Programm bzw. Accessory versuchen, mit GEMINI Kontakt aufzunehmen. Die ID kann ja mit appl_find ermittelt werden. Scheitert dies, so kann noch nach AVSERVER oder dem Inhalt der (AES)-Environmentvariable AVSERVER gesucht werden. Besonders die letzte Möglichkeit erlaubt eine leichte Konfiguration von außen. Die neuen Versionen der Library VAFUNC von Stephan Gerle (in gutsortierten Mailboxen erhältlich) verfahren fast genauso. Querverweis: Nachrichten Drag&Drop-Protokoll OLGA-Protokoll