================================== term =================================== =========================================================================== Ein Gift-Ware Telekommunikationsprogramm von Olaf Barthel, © Copyright 1990,91 by Olaf Barthel & MXM, alle Rechte vorbehalten. Es wird keinerlei Gewährleistungspflicht für die vollständige Funktionsfähigkeit des (der) in diesem Dokument beschriebenen Programmes (Programme) übernommen. Sie nutzen diese Software auf eigenes Risiko. ============================= term und ARexx ============================== =========================================================================== In dieser Datei sollen die von `term' unterstützten ARexx-Befehle beschrieben werden. Dies ist keine Einführung in die Sprache selbst, die von Mike F. Cowlishaw auf dem IBM VM/SP® entwickelt (eine Bewertung des VMS/CMS® will ich mir hier sparen) und von William S. Hawes auf dem Amiga implementiert wurde. ARexx (oder auch Amiga Rexx) ist ein kommerzielles Produkt, das dem AmigaDOS 2.0 Enhancer Package beiliegt. Wer nach einer guten Einführung und Beschreibung der Sprache sucht, dem empfehle ich das Buch `Die Programmiersprache REXX' von M. F. Cowlishaw, erschienen 1988 im Carl Hanser Verlag München/Wien, ISBN 3-446-15195-8. `term' richtet einen Rexx-Host unter dem Namen "TERM" ein (anzusprechen mittels `address term'). Startet man mehrere `term'-Programme, so wird der Name des Hosts der Nummer des Programmes angepaßt (das erste gestartete Programm meldet den Host unter dem Namen `TERM' an, das zweite bedient sich `TERM1', das dritte nimmt `TERM2', etc.). Der Name wird auch im Titel des Hauptbildschirmes des jeweiligen Programmes angezeigt. Insgesamt werden genau 38 Befehle unterstützt, die sich in zwei Klassen einteilen lassen: - Asynchrone Befehle, die `augenblicklich' ausgeführt werden und ein ARexx-Programm nicht zum Warten zwingen. - Synchrone Befehle, die das Hauptprogramm `term' selbst ausführt. Dies kann es notwendig machen, daß das ARexx-Programm wartet, bis der Befehl ausgeführt wurde. ========================= Die Asynchronen Befehle ========================= =========================================================================== CLEARDISPLAY........... Löscht den Inhalt des `Logbuches'. CLOSEDISPLAY........... Schließt den Bildschirm des `Logbuches', läßt dessen Inhalt aber unverändert. DEFAULT2FRONT.......... Schiebt den Standardbildschirm (`Default Screen') nach vorne. Dies ist üblicherweise der Workbench-Bildschirm. REXX2FRONT............. Schiebt den Bildschirm nach vorne, auf dem das Ausgabefenster des ARexx-Interfaces liegt. DISPLAY2FRONT.......... Schiebt den Bildschirm des `Logbuches' nach vorne. TERM2FRONT............. Schiebt den Hauptbildschirm des `term' Programmes nach vorne. WB2FRONT............... Schiebt ausdrücklich den Workbench-Bildschirm nach vorne. CLEARDOWNLOADLIST...... Die Liste aller bisher empfangenen Dateien wird gelöscht. QUERY.................. Mit diesem Befehl lassen sich verschiedene Systemparameter abfragen. Aufgrund der Komplexität dieses Befehles soll er nachfolgend beschrieben werden. QUIETEXIT.............. Wird dieser Befehl aufgerufen, so wird das Ausgabefenster des Programmes nach Beendigung sofort geschlossen. Üblicherweise bleibt es bis zu einer Bestätigung durch den Anwender geöffnet. =========================== Der `QUERY' Befehl ============================ =========================================================================== Die folgenden Parameter lassen sich über den `QUERY' Befehl abfragen (z.B. über `query baudrate'): ADOWNLOADPATH.......... Der Name des Verzeichnisses in dem die beim Empfangen von ASCII-Daten entstehenden Dateien abgelegt werden. AUPLOADPATH............ Der Name des Verzeichnisses, das beim Verschicken von ASCII-Dateien durchsucht wird. AUDBELL................ ON wenn ein akustisches Signal bei jedem `Bell'-Zeichen ausgegeben wird, sonst OFF. AUTOCAPTURE............ ON falls beim erfolgreichen Aufbau einer Telefonverbindung eine Mittschnitt-Datei angelegt wird, sonst OFF. BAUDRATE............... Die aktuell eingestellte Übertragungsge- schwindigkeit in Bits/Sekunde. BEEPSOUND.............. Der Name der IFF-Sound-Datei, die anstelle des normalen Piepsens beim Eingang eines BEL-Signales gespielt wird. BITSPERCHAR............ Die Anzahl der übertragenen Bits pro Zeichen. BLINKING............... ON falls die Blinkfunktionen des Terminals eingeschaltet sind, sonst OFF. BREAKLENGTH............ Die Dauer eines Unterbrechungssignales in Mikrosekunden (1 Million Mikrosekunden = 1 Sekunde). BDOWNLOADPATH.......... Der Name des Verzeichnisses in dem die beim Empfangen von Binär-Daten entstehenden Dateien abgelegt werden. BUPLOADPATH............ Der Name des Verzeichnisses, das beim Verschicken von Binär-Dateien durchsucht wird. BUSY................... Die Zeichenkette, an Hand derer die Wählfunktion erkannt, daß eine Telefonleitung besetzt ist. CAPTUREFILTER.......... ON wenn Steuersequenzen aus der Mittschnittdatei ausgefiltert werden sollen, sonst OFF. CAPTUREPATH............ Das Verzeichnis, in dem die Mittschnitt-Dateien, die bei aktivierter `Connect Auto-Capture'-Funktion entstehen, abgelegt werden. CAPTURESTATE........... Gibt den aktuellen Mitschnitt-Modus aus: `PRINTER' wenn auf den Drucker mitprotokolliert wird, `FILE' wenn in eine Datei mitgeschnitten wird. Es können auch beide Wörter zurückgeliefert werden, oder `OFF' falls der Mitschnitt nicht aktiviert wurde. CHARACTERWRAP.......... ON falls am rechten Bilschirmrand ein Zeilenumbruch durchgeführt wird, sonst OFF. COLOUR................. Dieser Befehl liest die aktuell eingestellten Farbinformationen des `term' Hauptbildschirmes aus (`query colour 12') und liefert den jeweiligen Farbwert als Hexadezimalzahl zurück (`FFF'). COLOURMODE............. Der aktuell eingestellte Farbmodus (AMIGA, EIGHT, SIXTEEN, MONO). COLUMNS................ Die Anzahl Zeichen pro Zeile. CONNECT................ Die Zeichenkette, an Hand derer die Wählfunktion erkannt, daß ein Telefonverbindung aufgebaut werden konnte. CONNECTAUTOBAUD........ ON wenn beim Aufbau einer Telefonverbindung die Übertragungsgeschwindigkeit automatisch neu ermittelt wird, sonst OFF. CURSOR................. Liefert die aktuelle Position der Schreibmarke zurück. X- und Y-Position sind durch ein Leerzeichen getrennt (`12 23'). CURSORMODE............. Arbeitsmodus der Cursortasten (`STANDARD' oder `APPLICATION'). CURSORWRAP............. ON falls der Cursor in seinen Bewegungen nicht eingeschränkt ist, sonst OFF. DEFAULTSTORE........... Der Name des Verzeichnisses, in dem alle Konfigurationsdateien des Programmes abgelegt werden. DIALPREFIX............. Die Befehlssequenz, die jeder zu wählenden Telefonnummer vorangestellt wird. DIALRETRIES............ Die maximale Anzahl von Durchläufen, die die Wählfunktion unternimmt, um eine Telefonverbidung aufzubauen. DIALTIMEOUT............ Die Zeit in Sekunden, die die Wählfunktion nach der Anwahl einer Telefonnummer bis zum erfolgreichen Aufbau einer Verbindung wartet. DISPLAYMODE............ Der Anzeigemodus des `term' Hauptbildschirmes (HIRES, HIRESLACE, SUPERHIRES, SUPERHIRESLACE, PRODUCT, PRODUCTLACE, PALHIRES, PALHIRESLACE, PALSUPERHIRES, PALSUPERHIRESLACE, NTSCHIRES, NTSCHIRESLACE, NTSCSUPERHIRES, NTSCSUPERHIRESLACE, A2024TENHZ, A2024FIFTEENHZ). DOWNLOADS.............. Die Anzahl der Dateien, die bisher empfangen wurden. DSBACKSPACE............ ON wenn das `Backspace'-Zeichen auch das Zeichen links der Schreibmarke löscht, sonst OFF. DUPLEX................. Datenübertragungsart (FULL, HALF). EDITOR................. Name des Text-Editors, der von der Funktion `Edit File' aufgerufen wird. EIGHTYCOLUMNS.......... ON falls der Bildschirm auf 80 × 24 Zeichen beschränkt wurde, sonst OFF. EMULATION.............. Die gerade aktive Terminalemulation (ANSIVT, ATOMIC,TTY). ERROR.................. Die Zeichenkette, die das Modem beim Auftreten eines Fehlers sendet. FONT................... Der eingestellte Zeichensatz (TOPAZ, IBM). FONTSCALE.............. Größe des Zeichensatzes (`NORMAL', `HIGHTOP', `HIGHBOTTOM', `WIDE', `HALF'). HANDSHAKING............ Der eingestellte Handshaking-Modus (XONXOFF, RTSCTS, NONE). HIGHSPEED.............. ON falls der `Hochgeschwindigkeitsmodus' des seriellen Treibers aktiviert wurde, sonst OFF. INSERTMODE............. ON falls das Terminal im Einfügemodus arbeitet, sonst OFF (Überschreibemodus). LINE................... ON falls eine Telefonverbindung besteht, sonst OFF. LINES.................. Die Anzahl Zeilen, die auf dem Bildschirm darstellbar sind. LOGACTIONS............. ON falls alle Aktionen des Programmes in einer Datei mitprotokolliert werden, sonst OFF. LOGFILE................ Der Name der Datei, in der bei aktivierter `Log Actions'-Funktion alle Aktionen gespeichert werden. MACRO.................. Von diesem Befehl werden als zusätzliche Aufrufparameter Qualifier (None, Shift, Alternate, Control) und die Funktionstastennummer (0-9) erwartet (`query macro none 0'). Es wird die mit der entsprechenden Funktionstaste verknüpfte Befehlssequenz zurückgeliefert. MACROFILE.............. Der Name der aktuell eingestellten Funktionstastendefinitionsdatei. MODEMEXIT.............. Die Befehlssequenz, die beim Verlassen des Programmes an das Modem geschickt wird. MODEMHANGUP............ Die Befehlssequenz, die zum Abbrechen einer Verbindung an das Modem geschickt wird. MODEMINIT.............. Die Befehlssequenz, die beim Programmstart zur Initialisierung des Modems verschickt wird. NOCARRIER.............. Die Zeichenfolge, die das Modem beim Abbruch einer Telefonverbindung verschickt. NEWLINEMODE............ ON falls das Terminal im `New Line'-Modus arbeitet, sonst OFF. NUMERICMODE............ Der Arbeitsmodus des Zehnerblockes (`STANDARD', `APPLICATIONS'). OKAY................... Die Zeichenkette, die das Modem zur Bestätigung eines Befehles abschickt. PARITY................. Der aktuell eingestellte Paritätsmodus (NONE, EVEN, ODD, MARK, SPACE). PROTOCOL............... Das aktuell eingestellte Transferprotokoll (xprzmodem.library, xprxmodem.library, etc.). PROTOCOLOPTIONS........ Die verwendeten Optionen des gerade eingestellten Transferprotokolles. Die Bedeutung der Optionen ist der Dokumentation des jeweiligen Protokolles zu entnehmen. PUBLICSCREEN........... ON wenn der `term' Hauptbildschirm als öffentlich zugänglicher Bereich geöffnet wurde, sonst OFF. REDIALDELAY............ Die Zeit in Minuten, die die Wählfunktion vor dem nächsten Durchlauf der Wählliste wartet. REQUESTERS............. ON wenn Sicherheitsabfragen angezeigt werden sollen, sonst OFF. RING................... Die Zeichenfolge, die das Modem beim Erkennen eines Anrufes sendet, der von einem anderen Modem stammt. SENDCR................. Der Modus, in dem ein `Carriage Return' (Zeilenrücklauf) versandt wird (IGNORE, ASCR, ASCRLF). SENDLF................. Der Modus, in dem ein `Line Feed' (Zeilenvorschub) versandt wird (IGNORE, ASLF, ASLFCR). SERIAL................. ON wenn der serielle Treiber noch zur Verfügung steht, wenn er bereits freigegeben wurde OFF. SERIALDEVICE........... Der Name des eingestellten seriellen Treibers. SHANGHAI............... ON wenn Fenster der Workbench auf dem `term' Hauptbildschirm geöffnet werden sollen, sonst OFF. SMOOTHSCROLL........... ON falls der Bildschirm viertelzeilenweise gescrollt wird, sonst OFF. STARTUP................ Die Befehlssequenz die beim Start des `term' Programmes ausgeführt wird (oder was die letzte Telefonverbindung in diesem Feld gelassen hat). STATUS................. Der übergeordnete Zustand des `term' Programmes (READY, HOLDING, DIALING, UPLOAD, DOWNLOAD, BREAKING, HANGUP). STOPBITS............... Die Anzahl der bei der Übertragung verwendeten Stopbits. TIMEOUT................ Die Länge in Mikrosekunden, die beim `INPUT' Befehl vor dem Abbruch gewartet wird. TDOWNLOADPATH.......... Der Name des Verzeichnisses in dem die beim Empfangen von Text-Daten entstehenden Dateien abgelegt werden. TUPLOADPATH............ Der Name des Verzeichnisses, das beim Verschicken von Text-Dateien durchsucht wird. UNITNUMBER............. Die Nummer des seriellen Treibers der eigestellt wurde. VISBELL................ ON wenn ein optisches Signal bei jedem `Bell'-Zeichen ausgegeben wird, sonst OFF. VOICE.................. Die Zeichenfolge, die das Modem überträgt, wenn ein Anruf erkannt wird, der nicht von einem anderen Modem stammt. ========================= Die Synchronen Befehle ========================== =========================================================================== BDOWNLOAD.............. Führt einen Datentransfer zum `term' Programm durch. Ein Dateiname wird erwartet, muß bei Protokollen wie ZModem aber nicht vorhanden sein. BEEP................... Läßt den Bildschirm blitzen/piepen, etc. in der Manier des `Bell'-Zeichens. BREAK.................. Schickt ein Unterbrechungssignal über die Telefonleitung. BUFFER................. Befaßt sich mit dem Inhalt des `Logbuches'. Mittels `buffer new file' wird der Inhalt des `Logbuches' mit dem Inhalt der Datei `file' überschrieben, `set buffer append file' fügt den Inhalt der Datei an das bestehende `Logbuch' an. Wird `buffer display' aufgerufen, so wird der Bildschirm des `Logbuches' geöffnet. BUPLOAD................ Schickt eine Datei an den Empfänger auf der anderen Seite der Telefonleitung. Hier muß ein Dateiname angegeben werden, oder das eingestellte Transferprotokoll wird sich beklagen. Nur ein Dateiname wird akzeptiert, wer mehrere Dateien wünscht, sollte sich mit Wildcardmustern befassen. CAPTURE................ Ändert den Zustand des Mitschnittes auf Diskette. Mitels `capture close' wird das Mitschneiden abgebrochen, `capture new file' überschreibt eine Zieldatei mit dem Mittschnitt, `capture append file' fügt den Mitschnitt an eine Datei an. CLEARSCREEN............ Löscht schlicht und einfach den Bildschirm. COMMAND................ Schickt eine Befehlssequenz in der Art und Weise des `term' Hauptprogrammes über die serielle Leitung. CONFIG................. Speichert die aktuelle Konfiguration ab (`config save file') oder lädt und setzt sie neu (`config load file'). DELAY.................. Wartet eine anzugebende Zeitperiode. Dieser Wert sollte nicht zu groß bemessen sein, da die Wartezeit nicht abgekürzt werden kann. Es kann jeweils in Mikrosekunden-, Sekunden-, oder Minutenintervallen gewartet werden: delay 10 mic -> Wartet zehn Mikrosekunden. delay 10 sec -> Wartet zehn Sekunden. delay 10 min -> Wartet zehn Minuten. DIAL................... Wählt eine Telefonnummer, wer Spaß daran hat, der kann auch den Namen eines Eintrages im Telefonbuch angeben. Wird der Eintrag gefunden, so wird die damit verknüpfte Telefonnummer verwendet. Ein Wort der Warnung: der Wählbefehl wird abgeschickt, eine Verarbeitung des Ergebnisses muß anders gehandhabt werden. FIRSTDOWNLOAD.......... Die Namen aller empfangenen Dateien werden in einer Liste gespeichert, die sich vom ARexx-Interface aus auslesen läßt. Dieser Befehl liefert den ersten Namen in dieser Liste zurück. GETCLIP................ Entnimmt den Inhalt des `Clipboards' und liefert ihn als Zeichenkette zurück. GETSTRING.............. Fordert eine Zeichenkette vom Anwender des `term' Programmes an. HANGUP................. Bricht die Telefonverbindung, die gerade aktiv ist (sofern überhaupt vorhanden) kurz und schmerzlos ab, indem das Modem zum Auflegen gebracht wird. INPUT.................. Liest eine anzugebende Anzahl von Zeichen von der seriellen Leitung. Wurde ein `TIMEOUT' mit dem entsprechenden Kommando gesetzt, wird nach dem Eintreffen von genügend Zeichen oder nach dem Verstreichen der Wartezeit zurückgekehrt. LASTDOWNLOAD........... Die Namen aller empfangenen Dateien werden in einer Liste gespeichert, die sich vom ARexx-Interface aus auslesen läßt. Dieser Befehl liefert den letzten Namen in dieser Liste zurück. MACROS................. Speichert die aktuelle Funktionstastenbelegung ab (`macros save file') oder lädt und setzt sie neu (`macros load file'). MESSAGE................ Gibt einen Text auf dem Bildschirm aus (der Text wird nicht über die serielle Leitung verschickt). NEXTDOWNLOAD........... Die Namen aller empfangenen Dateien werden in einer Liste gespeichert, die sich vom ARexx-Interface aus auslesen läßt. Dieser Befehl liefert den nächsten Namen in dieser Liste zurück, es muß vorher entweder `firstdownload' oder `lastdownload' aufgerufen worden sein, um einen Ausgangspunkt in der Liste bestimmen zu können. PHONE.................. Speichert das aktuelle Telefonbuch ab (`phone save file') oder lädt und setzt es neu (`phone load file'). PRINTER................ Schaltet die Protokollierung der eingehenden Daten auf dem Druck ab (`printer off') oder zu (`printer on'). PUTCLIP................ Legt eine Zeichenkette im `Clipboard' ab. RESETSTYLES............ Führt die Terminalemulation wieder auf den Pfad der Tugend zurück (alle Zeichenattribute werden zurückgesetzt). SAVEILBM............... Speichert den Inhalt des Bildschirmes als IFF-ILBM-Datei unter einem anzugebenden Dateinamen ab. SET.................... Setzt Systemparameter neu, eine genauere Beschreibung folgt diesem Text. TDOWNLOAD.............. Fordert eine Datei (à la BDOWNLOAD) von der anderen Seite der Leitung an, versucht dies aber im Textmodus. TUPLOAD................ Schickt eine Datei (à la BUPLOAD) zum anderen Ende der Leitung, unternimmt diesen wackeren Versuch allerdings im Textmodus. TONEDIAL............... Spielt eine Telefonnummer in Ton-Codierung über die Audio Hardware des Amiga ab. Die Töne können zur Anwahl einer Telefonnummer verwendet werden, vorausgesetzt das jeweilige Telefon ist an eine digitale Vermittlungsstelle der Telekom ange- schlossen und die Sprechmuschel wird an den Ausgabelautsprecher gehalten. WAITSTRING............. Wartet darauf, daß eine bestimmte Zeichenkette vom das Modem übertragen wird. Es können praktisch unbegrenzt viele Zeichenketten übergeben werden, auf die gewartet werden soll. Ist eine der Zeichenketten eingegangen, so wird sie als Ergebnis zurückgeliefert. Groß- und Kleinschreibung werden beim Überprüfen ignoriert. Auch hier ist der globale Timeout aktiv (läßt sich z.B. mit `set timeout 10 sec' setzen), verstreicht entsprechend viel Zeit, so kehrt die Routine automatisch zurück. Ich empfehle _jedermann_ einen Timeout zu setzen, da sonst anderenfalls die Möglichkeit besteht, daß die Routine _niemals_ zurückkehrt. Beispielaufruf: waitstring "logon: " WRITE.................. Schickt eine Zeichenkette über die Leitung, zeigt dies aber nicht notwendigerweise auf dem `term' Hauptbildschirm an. ============================ Der `SET'-Befehl ============================= =========================================================================== Grundsätzlich stellt der `SET'-Befehl die Umkehrung des `QUERY'-Befehles dar. Zu jedem Parameter existiert ein analoger Befehl, der dieselben Eingaben verarbeitet, wie sie der `QUERY' Befehl zurückliefert (`query baudrate' liefert z.B. 2400, also läßt sich mit `set baudrate 2400' die Baudrate entsprechend setzen). Da den Autor dieser Zeilen momentan Rückschmerzen planen und er sich nach einem Non-Stop-Tour-De-Force-Programmierungsmarathon nicht allzu phantastisch fühlt, sei ihm (also mir) erlaubt, an dieser Stelle nur die Unterschiede zwischen den Befehlen anzugeben: BELL................... Setzt die Parameter des Bildschirmblitzes neu (die Reaktion auf das `Bell'-Zeichen). Hier werden die Aufrufparameter `AUDIBLE' und `VISIBLE' erkannt. COLOUR................. Setzt eine der Bildschirmfarben neu. Hier wird die Nummer der Farbe erwartet (0-15) und der Wert der Farbe als Hexadezimalzahl. MACRO.................. Setzt eine der über Funktionstasten aufzurufenden Befehlssequenzen neu. Hier wird der Name des Qualifiers (None, Shift, Alternate, Control) die Nummer der Funktionstaste (0-9) und die Sequenz erwartet. Beispiel: set macro none 0 hello! SCREEN................. Dies ist eine Kombination der durch die Befehle `QUERY PUBLICSCREEN' und `QUERY SHANGHAI' abzufragenden Optionen. Als Parameter können der Funktion SHANGHAI und PUBLIC übergeben werden. TIMEOUT................ Setzt den globalen Timeout, d.h. die Zeitperiode, die alle Lesefunktionen warten, bevor sie automatisch abgebrochen werden. Diese Zeit kann wie beim DELAY-Befehl in Mikrosekunden, Sekunden und Minuten angegeben werden. Beispielaufruf: set timeout 10 sec Hinweis: zu den Befehlen `query line', `query lines' `query columns', `query status', `query cursor', `query downloads' und `query beepsound' gibt es jeweils kein Gegenstück. Der Zustand der Telefonverbindung sowie auch die physikalische Bildschirmgröße kann nicht erzwungen werden. Zur Positionierung der Schreibmarke sollte besser eine Steuersequenz zum Terminal geschickt werden, als an den internen Programmvariablen zu manipulieren. ================== Bitte des Autors & Gift-Ware-Gebühr ==================== =========================================================================== Die Entwicklung von `term' war mit hohem Aufwand verbunden. Schon alleine die Anstrengungen, die zu unternehmen waren, um im Trial-And-Error-Verfahren und unter Zuhilfenahme der DevCon-Disketten sowie Includes & Autodocs die Funktionsweise bestimmter Routinen zu ermitteln, wäre es Wert, dem Autor eine Entschädigung für seine Mühe zukommen zu lassen (es ist eben Pech, wenn die Atlanta-DevCon-Unterlagen erst mit reichlicher Verspätung eintrudeln). Der Autor ist sehr empfänglich für alle Arten von materiellen Gaben und Geschenken, solange gesichert ist, daß er sie auch verwenden kann (diese niedlichen Säcke mit Elefantenfutter schickt man doch besser an den hannoverschen Zoo). Deshalb möchte ich jedermann bitten, dem `term' gefällt oder der den Quellcode bearbeitet, mich für meinen Programmieraufwand so zu entschädigen, wie er/sie denkt, daß es meinen Anstrengungen entspricht (wer noch keine Idee hat: ich suche nach dem GNU C++ objective `C' compiler in einer auf dem Amiga lauffähigen Version, dem Quellcode für einen Modula-2 Compiler oder LhArc. Wer mir eine besondere Freude machen möchte, der kann mir ein älteres Infofom-Adventure schenken -- ausgenommen `Zork Zero', `Journey', `Hollywood Hijinx' und `Lurking Horror', die ich selber besitze) - vielen Dank! Meine Anschrift: Olaf Barthel, MXM (ETG030) Brabeckstrasse 35 D-3000 Hannover 71 Bundesrepublik Deutschland Z-Net: O.BARTHEL@A-Link-H UUCP: o.barthel@a-link-h.zer.sub.org (Meine Replies bouncen im Moment bei horga!) Wer sich den Quellcode ansieht, um hier und da Änderungen oder Erweiterungen zu machen, der nehme doch vor einer Veröffentlichung bitte Kontakt mit mir auf, sodaß ich unsere gemeinsamen Anstrengungen koordinieren kann. Sollte jemandem eine brilliante Idee kommen, den Aufbau oder Inhalt dieser Anleitung zu verbessern oder zu erweitern, so möge sie/er es mit meinem hiermit erteilten Segen tun.