From 25512363eb9f619299c336c60c4333c8c759d6d9 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sun, 9 Oct 2016 11:34:18 +0200 Subject: Move dos and net manuals to doc/ --- doc/dos/dos-dat-handbuch | 650 ++++++++++++++ doc/net/netzhandbuch | 2045 +++++++++++++++++++++++++++++++++++++++++++ doc/net/netzhandbuch.anhang | 58 ++ doc/net/netzhandbuch.index | 259 ++++++ dos/dos-dat-handbuch | 650 -------------- net/netzhandbuch | 2045 ------------------------------------------- net/netzhandbuch.anhang | 58 -- net/netzhandbuch.index | 259 ------ 8 files changed, 3012 insertions(+), 3012 deletions(-) create mode 100644 doc/dos/dos-dat-handbuch create mode 100644 doc/net/netzhandbuch create mode 100644 doc/net/netzhandbuch.anhang create mode 100644 doc/net/netzhandbuch.index delete mode 100644 dos/dos-dat-handbuch delete mode 100644 net/netzhandbuch delete mode 100644 net/netzhandbuch.anhang delete mode 100644 net/netzhandbuch.index diff --git a/doc/dos/dos-dat-handbuch b/doc/dos/dos-dat-handbuch new file mode 100644 index 0000000..a1e4fd4 --- /dev/null +++ b/doc/dos/dos-dat-handbuch @@ -0,0 +1,650 @@ +____________________________________________________________________________ + + +#on("b")##on ("u")# +#center#Betriebssystem E U M E L +#off ("u")# + + +#center#MS-DOS-DAT + + + + +#off("b")# +#center#Lizenzfreie Software der +#on ("b")# + +#center#Gesellschaft für Mathematik und Datenverarbeitung mbH, +#center#5205 Sankt Augustin + + +#off("b")# +#center#Die Nutzung der Software ist nur im Schul- und Hochschulbereich für +#center#nichtkommerzielle Zwecke gestattet. + +#center#Gewährleistung und Haftung werden ausgeschlossen + + +____________________________________________________________________________ +#page# +#free(4.5)# + +#center#Lesen und Schreiben +#center#von +#center#MS-DOS Dateien + +#on ("b")##center#MS-DOS-DAT#off ("b")# +#free(1.5)# + + +#center#Version 2.0 + +#center#Stand 10.09.87 +#page# +#pagenr ("%",1)##setcount (1)##block##pageblock##count per page# +#headeven# +% #center#MS-DOS-DAT +#center#____________________________________________________________ + +#end# +#headodd# +#center#MS-DOS-DAT#right#% +#center#____________________________________________________________ + +#end# +#on("bold")# +#ib#1. Allgemeines#ie# +#off ("b")# + +Dieses Programm ermöglicht MS-DOS Dateien vom EUMEL aus von Disketten zu +lesen und auf Disketten zu schreiben. Die Benutzerschnittstelle ist ähnlich der des +EUMEL-Archivs organisiert. Der Benutzer kommuniziert mit einer Task des +EUMEL-Systems, nämlich mit der Task 'DOS'. Diese wickelt dann über das Archiv­ +laufwerk die Diskettenzugriffe ab. Der Benutzer meldet die MS-DOS Diskette mit +'reserve ("...", /"DOS")' an und kann dann mit 'list (/"DOS")', 'fetch ("...", /"DOS")', +'save ("...", /"DOS")' und weiteren Kommandos auf die MS-DOS Diskette zugreifen. +Für das Schreiben und Lesen (save, fetch) stehen insgesamt 7 verschiedene Be­ +triebsarten zur Verfügung. Man kann in eine Datei im ASCII Code mit und ohne +Anpassung der Umlaute, im IBM-ASCII Code, im Atari-ST Code oder ganz ohne +Codeumsetzung lesen bzw. schreiben. Die Betriebsart selbst wird beim Anmelden der +MS-DOS Diskette durch den Textparameter des 'reserve'-Kommandos bestimmt. + +Die gleiche Benutzerschnittstelle gilt für die Kommunikation mit der Task 'DOS HD'. +Diese Task liest und schreibt aber nicht auf der Diskette, sondern in der MS-DOS +Partition der Festplatte (falls vorhanden). + + +#on("bold")# +#ib#2. Benutzeranleitung #ie# +#off ("b")# +Im Normalfall will man als Benutzer eine EUMEL-Textdatei auf eine MS-DOS +Diskette schreiben oder eine mit z.B. Word-Star erstellte MS-DOS-Textdatei in +das EUMEL-System einlesen (implementierte Formate siehe Abschnitt 3). + +Lesen einer MS-DOS-Datei: + +#linefeed (1.25)# +#on ("b")# + reserve ("file ascii german", /"DOS"); + (* MS-DOS-Diskette ins Laufwerk einlegen *) + fetch (filename, /"DOS"); + release (/"DOS") +#off ("b")# + +Schreiben einer MS-DOS-Datei: + +#on ("b")# + reserve ("file ascii german", /"DOS"); + (* MS-DOS-Diskette ins Laufwerk einlegen *) + save (filename, /"DOS"); + release (/"DOS") +#off("b")# +#linefeed (1.0)# + + +Sollen statt der Umlaute []{|}\ verwendet werden, so ist statt "file ascii german" "file +ascii" einzustellen. Eine genaue Beschreibung aller 7 möglichen Betriebsarten wird in +Abschnitt 6 gegeben. Der Dateiname 'file name' unterliegt den im Abschnitt 4 be­ +schriebenen Einschränkungen. + + +#on("bold")# +#ib#3. Implementierte Formate#ie# +#off("b")# + +Diese Hardware ermöglicht das Bearbeiten von MS-DOS Disketten mit Hilfe der +Task /"DOS" und (falls es sich um einen MS-DOS fähigen Rechner mit MS-DOS Parti­ +tion auf der Festplatte handelt) das Bearbeiten von Daten in der MS-DOS Partition +der Platte. + +#on("bold")# +#ib#3.1 Arbeiten mit der Task /"DOS"#ie# +#off ("b")# + +Die Task /"DOS" verwendet das Archivlaufwerk als MS-DOS Datenträger. Es sind +alle mit dem IBM-Format der DOS Version 2 und 3 kompatiblen Formate für 5.25 +Zoll und 3.5 Zoll Disketten implementiert, sofern diese 512 Byte große Sektoren +verwenden und im ersten Sektor einen erweiterten BIOS-Parameterblock (BPB) +enthalten (hierzu gehören auch mit dem Atari ST bearbeitete Disketten). Weiterhin +sind die beiden von IBM verwendeten Formate der DOS Version 1 implementiert (5.25 +Zoll, ein- bzw. zweiseitig, 40 Spuren a 8 Sektoren). + +Die einzige Hardwarevoraussetzung besteht darin, daß der Hardwareanpassungs­ +modul (SHard) alle von DOS benutzten Sektoren lesen und schreiben können muß. + +#on("bold")# +#ib#3.2 Arbeiten mit der Task /"DOS HD"#ie# +#off ("b")# + +Die Task /"DOS HD" verwendet die MS-DOS Partition der Festplatte als Daten­ +träger (falls eine solche vorhanden ist und das SHard diese ansprechen kann). Hier +gibt es keine Beschränkungen bezüglich des Plattentyps. + + +#on("bold")# +#ib#4. Dateibenennung#ie# +#off ("b")# + +Die Namen für MS-DOS Dateien unterliegen bestimmten Regeln. Ein Dateiname +kann aus +- einem bis acht Zeichen oder +- einem bis acht Zeichen gefolgt von einem Punkt und einer Namenserweiterung + von einem bis drei Zeichen +bestehen. + +Gültige Zeichen sind +- die Buchstaben A bis Z +- die Ziffern 0 bis 9 +- die Sonder- und Satzzeichen $ \# & § ! ( ) { } + +Da weitere Sonderzeichen in verschiedenen MS-DOS Versionen in unterschiedlich­ +em Umfang erlaubt sind, ist ihre Verwendung beim Schreiben (save) vom EUMEL aus +nicht zugelassen. Beim Lesen und Löschen dagegen sind sie erlaubt. + +Außerdem sind die Buchstaben a - z erlaubt. Diese werden beim Zugriff auf das +MS-DOS Inhaltsverzeichnis (Directory) in große Buchstaben konvertiert. Durch das +Kommando 'fetch ("Test", /"DOS")' wird also die MS-DOS Datei mit dem Namen +'TEST' in die EUMEL Datei mit dem Namen 'Test' gelesen; 'save ("test", /"DOS")' +überschreibt dann die MS-DOS-Datei 'TEST' (natürlich nach Anfrage). + + +#on("bold")# +#ib#5. Beschreibung der Kommandos#ie# +#off ("b")# + +In diesem Abschnitt steht der Begriff Dostask beim Arbeiten mit der Floppy für die +Task /"DOS" und beim Arbeiten mit der MS-DOS Partition der Platte für die Task +/"DOS HD". Analog steht der Begriff Dosbereich beim Arbeiten mit der Floppy für die +Floppy und beim Arbeiten mit der MS-DOS Partition der Platte für diese Partition. + +#on("bold")# +THESAURUS OP ALL (TASK CONST task) +#off ("b")# + Wird der 'ALL'-Operator für die Dostask aufgerufen, so wird ein Thesaurus ge­ + liefert. In diesem Thesaurus sind alle im Dosbereich vorhandenen Dateien einge­ + tragen. Die vorhandenen Unterinhaltsverzeichnisse (Subdirectories) werden nicht + eingetragen. + + +#on("bold")# +PROC check (TEXT CONST filename, TASK CONST task) +#off ("b")# + Durch Aufruf dieser Prozedur für die Dostask wird die Datei 'filename' im Dosbe­ + reich prüfgelesen. Es werden nur die mit Daten belegten Blöcke prüfgelesen. Sollen + auch der Einträge im Inhaltsverzeichnis überprüft werden, so erreicht man dies + durch vorheriges neues Anmelden mit der Prozedur 'reserve'. + + +#on("bold")# +PROC clear (TASK CONST task) +#off ("b")# + Durch Aufruf dieser Prozedur für die Task /"DOS" wird die gesamte Diskette ge­ + löscht. Mit dieser Prozedur können #on ("u")#nur MS-DOS formatierte Disketten#off ("u")# behandelt + werden. Soll eine Diskette dagegen für den Gebrauch unter MS-DOS initialisiert + werden, so ist sie auf einem MS-DOS-Rechner zu formatieren. + + Der Aufruf dieser Prozedur für die Task /DOS HD" ist aus Sicherheitsgründen nicht + erlaubt. + + +#on("bold")# +PROC erase (TEXT CONST filename, TASK CONST task) +#off ("b")# + Durch Aufruf dieser Prozedur für die Dostask wird die Datei 'filename' im Dosbe­ + reich gelöscht. + + +#on("bold")# +BOOL PROC exists (TEXT CONST name, TASK CONST task) +#off ("b")# + Wird diese Prozedur für die Dostask aufgerufen, so liefert sie 'TRUE', falls eine + Datei mit dem Namen 'name' im Dosbereich existiert. Andernfalls liefert sie + 'FALSE'. + + +#on("bold")# +PROC fetch (TEXT CONST filename, TASK CONST task) +#off ("b")# + Durch Aufruf dieser Prozedur für die Dostask wird die Datei 'filename' aus dem + Dosbereich gelesen. Hierbei wird in der beim Anmelden (reserve ("...", dostask)) + bestimmten Betriebsart gelesen (siehe Abschnitt 6). + + +#on("bold")# +PROC list (TASK CONST task) +#off ("b")# + Wird diese Prozedur für die Dostask aufgerufen, so werden alle Dateien des In­ + haltsverzeichnisses und alle Unterverzeichnisse des Dosbereichs aufgelistet. + + +#on("bold")# +PROC release (TASK CONST task) +#off ("b")# + Der Aufruf dieser Prozedur für die Task Dostask hebt deren Reservierung auf. + Gleichzeitig wird auch der für block i/o benutzte Kanal freigegeben, so daß bei + Benutzung der Task /"DOS" der Archivkanal durch das EUMEL-Archiv wieder + benutzt werden kann. + + Um möglichst effizient arbeiten zu können, werden Inhaltsverzeichnis und Ket­ + tungsblock des Dosbereichs als Kopie im EUMEL gehalten. Der hierdurch belegte + Speicher wird beim 'release' wieder freigegeben. Dies ist bei kleinen Systemen + besonders wichtig. + + +#on("bold")# +PROC reserve (TEXT CONST mode, TASK CONST task) +#off ("b")# + Durch Aufruf für die Dostask werden Operationen mit dem Dosbereich angemel­ + det. Gleichzeitig koppelt sich die Dostask an den entsprechenden Kanal an. + (/"DOS" an Kanal 31 und /"DOS HD" an Kanal 29). Die Anmeldung wird abge­ + lehnt, wenn der für die MS-DOS Operationen benötigte Kanal belegt ist (z.B. bei + Kanal 31 durch eine Archiv­Operation). Ähnlich wie beim EUMEL-Archiv bleibt + diese Reservierung bis 5 Minuten nach dem letzten Zugriff gültig. + + Wird beim Arbeiten mit der Task /"DOS" die MS-DOS Diskette gewechselt, so + muß erneut 'reserve ("...", /"DOS")' aufgerufen werden. Nur so ist gewährleistet, + daß das Inhaltsverzeichnis der neuen Diskette geladen wird. + + Der Text 'mode' gibt die Betriebsart für das Schreiben und Lesen der Diskette + sowie den Pfad für das Bearbeiten von Subdirectories an und nicht wie beim + EUMEL-Archiv den Diskettennamen. Es gilt folgende Systax: + + modus :[\directory][\directory]...[\directory] + + Hierbei sind die Angaben in eckigen Klammern optional. Wird kein Pfad angege­ + ben, so wird mit dem Hauptdirektory der Diskette gearbeitet. Ansonsten wird mit + dem Directory gearbeitet, welches durch den hinter dem Doppelpunkt angegeben + Pfad bezeichnet wird. Als 'modus' können alle in Abschnitt 6 beschriebenen Be­ + triebsarten verwendet werden. + + +#on("bold")# +PROC save (TEXT CONST filename, TASK CONST task) +#off ("b")# + Durch Aufruf dieser Prozedur für die Dostask wird die Datei 'filename' in den + Dosbereich geschrieben. Hierbei wird in der beim Anmelden (reserve ("...", + dostask)) bestimmten Betriebsart geschrieben (siehe Abschnitt 6). + + +#on("bold")# +#ib#6. Die Betriebsarten von 'fetch' und 'save'#ie# + +#ib#6.1 Betriebsart: file ascii#ie# + +#on("bold")# +fetch ("filename", dostask) +#off ("b")# + Die MS-DOS Datei 'filename' wird in die EUMEL-Datei 'filename' kopiert. Dabei + werden von allen Zeichen nur die niederwertigen 7 Bit gemäß DIN 66 003, ASCII + Code, internationale Referenzversion interpretiert. Die Datei wird so aufbereitet, daß + ein Bearbeiten mit dem EUMEL-Editor möglich ist. Dies geschieht folgenderma­ + ßen: + - Alle im EUMEL darstellbaren Zeichen werden auf diese abgebildet. + - Die Zeichenfolgen CR LF, LF CR, LF, CR (CR = carriage return, LF = line­ + feed) beenden einen Satz in der MS-DOS-Datei. Dementsprechend wird + eumelseitig die aktuelle Zeile beendet. + - Das Zeichen FF (form feed) beendet eumelseitig die aktuelle Zeile. Außerdem + wird ein Satz mit dem Inhalt "\#page\#" eingefügt. + - TAB's (Code 9) werden mit Blanks zur nächsten 8ter-Position expandiert. + - 'Ctrl z' in der MS-DOS Datei wird als Dateiende interpretiert. Fehlt dieses, + so wird bis zum letzten Zeichen des letzten Sektors der Datei gelesen. + - Alle anderen Zeichen mit 0 <= code (zeichen) <=  31 (Steuerzeichen) + werden durch eine Ersatzdarstellung dargestellt (der Code des Zeichens wird + als 3 stellige Dezimalzahl eingeschlossen von \#-Zeichen dargestellt). + + +#on("bold")# +save ("filename", dostask) +#off ("b")# + Die EUMEL-Datei 'filename' wird nach MS-DOS geschrieben. Unter MS-DOS + wird der ASCII Code, internationale Referenzversion gemäß DIN 66 003 verwendet. + Dies geschieht folgendermaßen: + - Die EUMEL-spezifischen Druckzeichen (Trenn -, Trenn k, Druck \#, ge­ + schütztes Blank) werden in -, k, \# und Blank umgesetzt. + - Alle in der internationalen Referenzversion des ASCII Codes vorhandenen + Eumel-Zeichen werden auf diese abgebildet. + - Alle in der internationalen Referenzversion des ASCII Codes nicht vorhande­ + nen Eumel-Zeichen werden durch eine Ersatzdarstellung dargestellt (der + Code des Zeichens wird als 3 stellige Dezimalzahl eingeschlossen von + \#-Zeichen dargestellt) + - Steht in einer Zeile nur das Kommando '\#page\#' so wird dieses in ein Sei­ + tenvorschubsteuerzeichen (""12"") umgewandelt. + - Eine dreistellige Dezimalzahl eingeschlossen von \# Zeichen wird als Ersatz­ + darstellung für das Zeichen mit dem durch die Dezimalzahl angegebenen + Code betrachte. Diese Ersatzdarstellung wird beim Schreiben aufgelöst (d.h. + durch das entsprechende Zeichen ersetzt). + - Nach jeder Zeile wird 'carriage return' und ' linefeed' angefügt + - Am Ende der Datei wird 'ctrl z' angehängt. + + +#on("bold")# +#ib#6.2 Betriebsart: file ascii german#ie# + +fetch ("filename", dostask) +#off ("b")# + Die MS-DOS Datei 'filename' wird in die EUMEL-Datei 'filename' kopiert. Dabei + werden von allen Zeichen nur die niederwertigen 7 Bit gemäß DIN 66 003, ASCII + Code, deutsche Referenzversion interpretiert. Die Datei wird so aufbereitet, daß ein + Bearbeiten mit dem EUMEL-Editor möglich ist. Dies geschieht wie in der Be­ + triebsart 'file ascii', jedoch stehen statt []{}|\ die Umlaute und ß zur Verfügung. + + +#on("bold")# +save ("filename", dostask) +#off ("b")# + Die EUMEL-Datei 'filename' wird nach MS-DOS geschrieben. Unter MS-DOS + wird der ASCII Code, deutsche Referenzversion gemäß DIN 66 003 verwendet. Dies + geschieht wie in der Betriebsart 'file ascii', jedoch stehen statt []{}|\ die Umlaute + zur Verfügung. + + +#on("bold")# +#ib#6.3 Betriebsart: file ibm#ie# + +fetch ("filename", dostask) +#off ("b")# + Die MS-DOS Datei 'filename' wird in die EUMEL-Datei 'filename' kopiert. Dabei + werden alle Zeichen wie in der von IBM verwendeten Version des ASCII Codes + interpretiert. Die Datei wird so aufbereitet, daß ein Bearbeiten mit dem EUMEL- + Editor möglich ist. Dies geschieht folgendermaßen: + - Alle im EUMEL darstellbaren Zeichen werden auf diese abgebildet. + - Die Zeichenfolgen CR LF, LF CR, LF, CR (CR = carriage return, LF = line­ + feed) beenden einen Satz in der MS-DOS-Datei. Dementsprechend wird + eumelseitig die aktuelle Zeile beendet. + - Das Zeichen FF (form feed) beendet eumelseitig die aktuelle Zeile. Außerdem + wird ein Satz mit dem Inhalt "\#page\#" eingefügt. + - TAB's (Code 9) werden mit Blanks zur nächsten 8ter-Position expandiert. + - Alle anderen Zeichen mit 0 <= code (zeichen) <=  31 (Steuerzeichen) + werden durch eine Ersatzdarstellung dargestellt (der Code des Zeichens wird + als 3 stellige Dezimalzahl eingeschlossen von \#-Zeichen dargestellt). + + +#on("bold")# +save ("filename", dostask) +#off ("b")# + Die EUMEL-Datei 'filename' wird nach MS-DOS geschrieben. Unter MS-DOS + wird der ASCII Code in der von IBM verwendeten Version verwendet. Dies ge­ + schieht folgendermaßen: + - Die EUMEL-spezifischen Druckzeichen (Trenn -, Trenn k, Druck \#, ge­ + schütztes Blank) werden in -, k, \# und Blank umgesetzt. + - Alle in der IBM Version des ASCII Codes vorhandenen Eumel-Zeichen + werden auf diese abgebildet. + - Alle in der IBM Version des ASCII Codes nicht vorhandenen Eumel-Zeichen + werden durch eine Ersatzdarstellung dargestellt (der Code des Zeichens wird + als 3 stellige Dezimalzahl eingeschlossen von \#-Zeichen dargestellt) + - Steht in einer Zeile nur das Kommando '\#page\#' so wird dieses in ein Sei­ + tenvorschubsteuerzeichen (""12"") umgewandelt. + - Eine dreistellige Dezimalzahl eingeschlossen von \# Zeichen wird als Ersatz­ + darstellung für das Zeichen mit dem durch die Dezimalzahl angegebenen + Code betrachte. Diese Ersatzdarstellung wird beim Schreiben aufgelöst (d.h. + durch das entsprechende Zeichen ersetzt). + - Nach jeder Zeile wird 'carriage return' und ' linefeed' angefügt + + +#on("bold")# +#ib#6.4 Betriebsart: file atari st#ie# + +fetch ("filename", dostask) +#off ("b")# + Die MS-DOS Datei 'filename' wird in die EUMEL-Datei 'filename' kopiert. Dabei + werden alle Zeichen wie in der vom Atari ST verwendeten Version des ASCII Codes + interpretiert. Die Datei wird so aufbereitet, daß ein Bearbeiten mit dem EUMEL- + Editor möglich ist. Dies geschieht folgendermaßen: + - Alle im EUMEL darstellbaren Zeichen werden auf diese abgebildet. + - Die Zeichenfolgen CR LF, LF CR, LF, CR (CR = carriage return, LF = line­ + feed) beenden einen Satz in der MS-DOS-Datei. Dementsprechend wird + eumelseitig die aktuelle Zeile beendet. + - Das Zeichen FF (form feed) beendet eumelseitig die aktuelle Zeile. Außerdem + wird ein Satz mit dem Inhalt "\#page\#" eingefügt. + - TAB's (Code 9) werden mit Blanks zur nächsten 8ter-Position expandiert. + - Alle anderen Zeichen mit 0 <= code (zeichen) <=  31 (Steuerzeichen) + werden durch eine Ersatzdarstellung dargestellt (der Code des Zeichens wird + als 3 stellige Dezimalzahl eingeschlossen von \#-Zeichen dargestellt). + + +#on("bold")# +save ("filename", dostask) +#off ("b")# + Die EUMEL-Datei 'filename' wird nach MS-DOS geschrieben. Unter MS-DOS + wird der ASCII Code in der vom Atari ST verwendeten Version verwendet. Dies + geschieht folgendermaßen: + - Die EUMEL-spezifischen Druckzeichen (Trenn -, Trenn k, Druck \#, ge­ + schütztes Blank) werden in -, k, \# und Blank umgesetzt. + - Alle in der vom Atari ST verwendeten Version des ASCII Codes vorhandenen + Eumel-Zeichen werden auf diese abgebildet. + - Alle in der vom Atari ST verwendeten Version des ASCII Codes nicht + vorhandenen Eumel-Zeichen werden durch eine Ersatzdarstellung dargestellt + (der Code des Zeichens wird als 3 stellige Dezimalzahl eingeschlossen von + \#-Zeichen dargestellt) + - Steht in einer Zeile nur das Kommando '\#page\#' so wird dieses in ein Sei­ + tenvorschubsteuerzeichen (""12"") umgewandelt. + - Eine dreistellige Dezimalzahl eingeschlossen von \# Zeichen wird als Ersatz­ + darstellung für das Zeichen mit dem durch die Dezimalzahl angegebenen + Code betrachte. Diese Ersatzdarstellung wird beim Schreiben aufgelöst (d.h. + durch das entsprechende Zeichen ersetzt). + - Nach jeder Zeile wird 'carriage return' und ' linefeed' angefügt + + +#on("bold")# +#ib#6.5 Betriebsart: file transparent#ie# + +fetch ("filename", dostask) +#off ("b")# + Die MS-DOS Datei 'filename' wird in die EUMEL-Datei 'filename' kopiert. Dabei + werden von allen Zeichen alle 8 Bit interpretiert. Es werden keine Zeichen einge­ + fügt, gelöscht oder gewandelt. Somit stehen dann auch CR und LF Zeichen in der + EUMEL-Datei. + + Da eine solche Datei noch Steuerzeichen enthält, ist beim Bearbeiten mit dem + Editor Vorsicht geboten. + + +#on("bold")# +save ("filename", dostask) +#off ("b")# + Die EUMEL-Datei 'filename' wird nach MS-DOS geschrieben. Es werden keine + Codeumsetzungen durchgeführt. Insbesondere muß die EUMEL-Datei auch die CR + LF Sequenzen für das Zeilenende enthalten. + + +#on("bold")# +#ib#6.6 Betriebsart: row text#ie# +#off ("b")# + +Diese Betriebsart ist nur für Programmierer interessant. Sie ist für die Umsetzung +exotischer Codes in den EUMEL-Code mittels ELAN-Programmen gedacht. + +#on("bold")# +fetch ("filename", dostask) +#off ("b")# + Die MS-DOS Datei 'filename' wird in einen Datenraum mit folgender Struktur + kopiert: + + STRUCT (INT benutzte texte, ROW 4000 TEXT datensatz) + + Dabei bekommt der Datenraum den Type 1000. Der Integer 'benutzte texte' gibt an, + wieviele Elemente des ROW 4000 TEXT benutzt sind. In jedem benutzten Element + des ROW 4000 TEXT steht der Inhalt einer logischen Gruppe der MS-DOS Disket­ + te. (Eine logische Gruppe umfaßt bei einer einseitig beschriebenen MS-DOS + Diskette 512 Byte und bei einer zweiseitig beschriebenen 1024 bzw. 2048 Byte). In + dieser Betriebsart werden keine Zeichen der MS-DOS Datei konvertiert oder + interpretiert, so daß also auch alle Steuerzeichen erhalten bleiben. + + +#on("bold")# +save ("filename", dostask) +#off ("b")# + Hier bezeichnet 'filename' einen Datenraum der Struktur: + + STRUCT (INT benutzte texte, ROW 4000 TEXT datensatz) + + Dieser Datenraum muß den Type 1000 haben. + Es werden die benutzten Texte (1 bis benutzte texte) aneinandergehängt und ohne + irgendwelche Konvertierungen bzw. Interpretationen als MS-DOS Datei 'filename' + geschrieben. Dies bedeutet, daß die Texte auch alle von MS-DOS benötigten + Steuerzeichen (z.B. 'ctrl z' als Dateiendekennzeichen) enthalten müssen. + + +#on("bold")# +#ib#6.7 Betriebsart: ds#ie# +#off ("b")# +Diese Betriebsart ist nur für den Programmierer interessant. Sie ermöglicht das Abbil­ +den von Datenstrukturen zwischen MS-DOS und EUMEL. + +#on("bold")# +fetch ("filename", dostask) +#off ("b")# + Die MS-DOS Datei 'filename' wird blockweise in den Datenraum 'filename' ko­ + piert. Hierbei wird der erste Block der MS-DOS Datei in die 2. Seite des Daten­ + raums kopiert. (Die 2. Seite eines Datenraums ist die erste, die von einer Daten­ + struktur voll überdeckt werden kann). + + +#on("bold")# +save ("filename", dostask) +#off ("b")# + Der Datenraum 'filename' wird ab seiner 2. Seite in die MS-DOS Datei 'filename' + geschrieben. Hierbei werden alle Seiten des Datenraums (auch die nicht allokier­ + ten) bis einschließlich der letzten allokierten Datenraumseite geschrieben. + + +#on("bold")# +#ib#7. Installation#ie# +#off ("b")# + +Die Software zur Generierung der Tasks /"DOS" und /"DOS HD" wird auf einem +EUMEL-Archiv ausgeliefert. + +#on("bold")# +#ib#7.1 Installation der Task /"DOS"#ie# + +#ib#7.1.1 Installation im Multi-User#ie# +#off ("b")# + +Die Software muß in einer privilegierten Task mit dem Namen 'DOS' installiert wer­ +den. Dies geschieht folgendermaßen: + + + begin ("DOS", "SYSUR") + + archive ("austausch"); + fetch ("dos inserter", archive); + run ("dos inserter") + + +Danach stehen die Prozeduren + + + PROC dos manager + PROC dos manager (INT CONST channel) + + +zur Verfügung. Beide Prozeduren machen die aufrufende Task zur Kommunikations­ +task für das Schreiben und Lesen von MS-DOS Disketten. Die erste benutzt dazu +den Archivkanal (Kanal 31), bei der zweiten ist der Kanal über den Parameter ein­ +stellbar. Eine dieser Prozeduren muß jetzt aufgerufen werden. + +#on("bold")# +#ib#7.1.2. Installation im Single-User#ie# +#off ("b")# + +Die Software wird im Monitor ('gib Kommando'-Modus) durch folgende Kommandos +installiert: + + + archive ("austausch"); + fetch ("dos inserter", archive); + run ("dos inserter") + + +Für das Schreiben und Lesen von MS-DOS Disketten wird der Archivkanal (Kanal +31) benutzt. + + +#on("bold")# +#ib#7.2 Installation der Task /"DOS HD"#ie# +#off ("b")# + +Die Software muß in einer privilegierten Task mit dem Namen 'DOS HD' installiert +werden. Dies geschieht folgendermaßen: + + + begin ("DOS HD", "SYSUR") + + archive ("austausch"); + fetch ("dos hd inserter", archive); + run ("dos hd inserter") + + +Danach steht die Prozedur + + + PROC dos manager + + +zur Verfügung. Sie macht die aufrufende Task zur Kommunikationstask für das +Schreiben und Lesen in der MS-DOS Partition der Platte. Sie benutzt dazu den +Kanal 29, der, wie im Portierungshandbuch für den 8086 beschrieben, implementiert +sein muß. + +#page# +#headeven# +#end# + + + + + +Herausgegeben von: + + Gesellschaft für Mathematik und Datenverarbeitung mbH + (GMD) + Schloß Birlinghoven + 5205 Sankt Augustin 1 + + und + + Hochschulrechenzentrum der Universität Bielefeld + (HRZ) + Universitätsstraße + 4800 Bielefeld 1 + +Autor: + + Frank Klapper + +überarbeitet von: + + Thomas Müller + Hansgeorg Freese (GMD) + +Umschlaggestaltung: + + Hannelotte Wecken + + + + + + diff --git a/doc/net/netzhandbuch b/doc/net/netzhandbuch new file mode 100644 index 0000000..7083462 --- /dev/null +++ b/doc/net/netzhandbuch @@ -0,0 +1,2045 @@ +____________________________________________________________________________ + + +#on("b")##on ("u")# +#center#Betriebssystem E U M E L +#off ("u")# + + +#center#Netzsoftware + + + + +#off("b")# +#center#Lizenzfreie Software der +#on ("b")# + +#center#Gesellschaft für Mathematik und Datenverarbeitung mbH, +#center#5205 Sankt Augustin + + +#off("b")# +#center#Die Nutzung der Software ist nur im Schul- und Hochschulbereich für +#center#nichtkommerzielle Zwecke gestattet. + +#center#Gewährleistung und Haftung werden ausgeschlossen + + +____________________________________________________________________________ +#page# +#pagenr ("%",1)##setcount(1)##block##pageblock##count per page# +#headeven# +#center#EUMEL Netzbeschreibung +#center#____________________________________________________________ + +#end# +#headodd# +#center#Inhalt +#center#____________________________________________________________ + +#end# +#bottomeven# +#center#____________________________________________________________ +Netz - % #right# GMD +#end# +#bottomodd# +#center#____________________________________________________________ +GMD #right#Netz - % +#end# + +#center#Inhalt + +#clear pos##lpos(1.0)##rpos(9.5)# +#table# + +1. Einleitung #topage("0")# + +Teil 1: Netz einrichten und benutzen #topage("1")# + + +1.1. Hardwarevoraussetzungen #topage("1.1")# +1.2. Einrichten des Netzes #topage("1.2")# +1.3. Benutzung des Netzes #topage("1.3")# +1.4. Informationsmöglichkeiten #topage("1.4")# +1.5. Eingriffsmöglichkeiten #topage("1.5")# +1.6. Fehlerbehebung im Netz #topage("1.6")# +1.7. Sicherheit im Netz #topage("1.7")# + + + +Teil 2: Arbeitsweise der Netzsoftware #topage("2")# + + +2.1. Die Netztask #topage("2.1")# +2.2. Protokollebenen #topage("2.2")# +2.3. Stand der Netzsoftware #topage("2.3")# + + + +Teil 3: Netz-Hardware-Interface #topage("3")# + + +3.1. Einführung #topage("3.1")# +3.2. Arbeitsweise des Netz-Hardware-Interfaces #topage("3.2")# +3.3. Netztreiber #topage("3.3")# +3.4. Prozedurschnittstelle des EUMEL-Netzes #topage("3.4")# + + + +Anhang #topage("A")# + + +1. Fehlermeldungen #topage("A.1")# +2. Literaturhinweise #topage("A.2")# +3. Index #topage("A.3")# + +#table end# +#clear pos# + +#page# +#pagenr ("%", 2)##setcount (1)##block##pageblock##count per page# +#headeven# +#center#EUMEL Netzbeschreibung +#center#____________________________________________________________ + +#end# +#headodd# +#center#Einleitung +#center#____________________________________________________________ + +#end# +#bottomeven# +#center#____________________________________________________________ +Netz - % #right#GMD +#end# +#bottomodd# +#center#____________________________________________________________ +GMD #right#Netz - % +#end# + +1. Einleitung + +#goalpage("0")# +Das EUMEL-Netz dient dazu, mehrere EUMEL-Rechner (sog. #ib#Station#ie#en) miteinan­ +der zu koppeln. Diese Kopplung wird vom Betriebssystem dazu benutzt, das Sen­ +dungskonzept [1] so auszudehnen, daß Tasks verschiedener Stationen einander +Datenräume zusenden können. Auf dem #ib#Sendungskonzept#ie# aufbauende Konzepte +nutzen daher automatisch das Netz aus: So ist es z.B. möglich + +- von einer Station aus auf einer anderen zu drucken, + +- in die Task PUBLIC einer anderen Station #ib#Datei#ie#en zu sichern (save), vorausge­ + setzt, daß PUBLIC dort ein #on("b")#free global manager#off("b")# ist, + +- auf einer anderen Station zu archivieren (z.B. wenn das eigene Archivlaufwerk + defekt ist oder ein anderes Format hat). + +Diese #ib#Netzversion#ie# kann ab EUMEL-Version 1.8.1 eingesetzt werden. + +Diese Netzbeschreibung besteht aus drei Teilen. In Teil 1 wird beschrieben, wie das +EUMEL-Netz benutzt und eingerichtet wird. Als Benutzer eines EUMEL- +Rechners, der vernetzt ist, ist nur dieser Teil der Netzbeschreibung für Sie wichtig. +Teil 2 erklärt die Funktionsweise der #ib#Netzsoftware#ie#, im dritten Teil wird die Schnitt­ +stelle für die Anpassung anderer #ib#Netzhardware#ie# definiert. + +Hinweis: + +Zur erstmaligen #ib#Installation#ie# des EUMEL-Netzes ist außer dieser Beschreibung noch +die Netzsoftware (auf Floppy) und die EUMEL-Netz-#ib#Installationsanleitung#ie#, die mit +der Software geliefert wird, notwendig. + +In der vorliegenden Netzbeschreibung wird das EUMEL-Netz möglichst "hardware +unabhängig" beschrieben. Wenn hardwareabhängige Beispiele gegeben werden, so +ist die dort beschriebene Hardware stets die #ib#Datenbox#ie#. +#pagenr ("%", 3)##setcount (1)##block##pageblock##count per page# +#headeven# +#center#EUMEL Netzbeschreibung +#cneter#____________________________________________________________ + +#end# +#headodd# +#center#Teil 1 : Netz einrichten und benutzen +#center#____________________________________________________________ + +#end# +#bottomeven# +#center#____________________________________________________________ +Netz - % #right#GMD +#end# +#bottomodd# +#center#____________________________________________________________ +GMD #right#Netz - % +#end# +#page# + +Teil 1: Netz einrichten und benutzen +#goalpage("1")# + + + +1.1. Hardwarevoraussetzungen +#goalpage("1.1")# + + +Zwei Stationen + +Sie können zwei #ib#Station#ie# miteinander vernetzen, wenn Sie dafür an jeder Station eine +#ib#V.24#ie#-#ib#Schnittstelle#ie# zur Verfügung stellen. + +Diese beiden Schnittstellen verbinden Sie mit einem Kabel zur #ib#Rechnerkopplung#ie# [2]. + + +Mehrere Stationen + +Wenn Sie mehr als zwei Stationen vernetzen wollen, stehen Ihnen zwei Konzepte zur +Verfügung: das Anlegen von #ib#Netzknoten#ie# bzw. das Verwenden eines #ib#Strang#ie#es. Die +Konzepte können gemischt eingesetzt werden. + +Ein Strang besteht aus einer Anzahl von #ib#Netzbox#ie#en (z.B. KHW-Box oder Ethernet­ +anschluß). + +Jede Box besitzt eine #ib#Schnittstelle#ie# (z.B. #ib#V.24#ie#) zum Anschluß an einen der Kanäle +1...15 der zugeordneten #ib#Station#ie# und eine weitere Schnittstelle zur #ib#Verbindung#ie# der +Boxen untereinander. + +Ein #ib#Knoten#ie# ist eine Station, bei der der Netzbetrieb über mehrere Kanäle läuft. + +Da die #ib#Netzsoftware#ie# pro #ib#Kanal#ie# eines Knotens eine Task generiert, ist das Knoten­ +konzept dem Strangkonzept hinsichtlich des #ib#Durchsatz#ie#es unterlegen. Preisgünstiger +ist jedoch das #ib#Knotenkonzept#ie#, weil dabei #ib#Netzbox#ie#en überflüssig werden. + +Beim Knotenkonzept wird eine #ib#Vermaschung#ie# nicht zur Optimierung benutzt (Ver­ +maschung heißt, daß eine #ib#Zielstation#ie# über verschiedene Knoten erreichbar ist). Daher +sollte man keine Vermaschung vorsehen. + +#ib#Nachbarn#ie# sind Stationen, die an denselben #ib#Netzstrang#ie# angeschlossen oder direkt +über ein #ib#V.24#ie#-Kabel verbunden sind. + +Bei der Entscheidung, welche Stationen man zu #ib#Knoten#ie# macht, sollte beachtet wer­ +den, daß (a) Stationen, zwischen denen hoher Verkehr besteht, Nachbarn werden und +daß (b) besonders leistungsfähige Rechner #ib#Knoten#ie#stationen sein sollten. +#page# + +1.2. Einrichten des Netzes +#goalpage("1.2")# + + +Hinweis: Dieses Kapitel ist nur für Systembetreuer wichtig. + +a) Legen Sie für die am Netz beteiligten Rechner #ib#Stationsnummer#ie#n fest (von 1 an + aufsteigend). + + Die Boxen haben ebenfalls Stationsnummern. Die Stationsnummern der Box und + des zugeordneten Rechners müssen übereinstimmen. + + +b) Holen Sie an jeder #ib#Station#ie# die Task #on("bold")#configurator#off("bold")# an ein Terminal und geben Sie + das Kommando #on("bold")##ib#define station#ie# (x)#off("bold")#, wobei #on("bold")#x#off("bold")# die gewählte Stationsnummer ist. + + Hinweis: Taskkommunikationen, die zu diesem Zeitpunkt laufen, führen zu feh­ + lerhaftem Verhalten. Dies liegt daran, daß durch #on("bold")#define station#off("bold")# alle + #ib#Task-Id#ie#'s geändert werden müssen, weil eine #ib#Task-Id#ie# u.a. die + Stationsnummer der eigenen Station enthält (siehe 1.3). TASK- + Variablen, die noch Task-Id's mit keiner oder falscher Stationsnum­ + mer enthalten, können nicht mehr zum Ansprechen einer Task ver­ + wendet werden. + + Beispiel: Der #ib#Spoolmanager#ie# [3] richtet beim Kommando #on("bold")#start#off("bold")# einen #ib#Worker#ie# ein + und merkt sich dessen #ib#Task-Id#ie# in einer TASK-Variablen, um sicher­ + zustellen, daß nur der Worker #ib#Datei#ie#en zum Drucken abholt. Wird jetzt + das Kommando #on("bold")# define station#off("bold")# gegeben, kann der Spoolmanager + seinen Worker nicht mehr identifizieren, weil der Worker eine neue + Task-Id erhalten hat. Man muß daher vor #on("b")#define station#off("b")# den Worker + löschen und ihn danach mit dem Kommando #on("bold")##ib#start#ie##off("bold")# im Spoolmanager + wieder neu einrichten. + + + Sinnvollerweise gibt man #on("bold")#define station#off("bold")# sofort nachdem man ein frisches System + vom Archiv geladen hat. + + Zum Anschluß einer #ib#Datenbox#ie# #ib#konfigurieren#ie# Sie mit dem Kommando #on("bold")##ib#configurate#ie##off("bold")# + den für das Netz vorgesehenen #ib#Kanal#ie# auf + + - transparent + - 9600 #ib#Baud#ie# (Standardeinstellung der Boxen) + - #ib#RTS/CTS#ie#-#ib#Protokoll#ie# + - großen Puffer + - 8 bit + - even parity + - 1 stopbit. + + Falls diese Einstellungen nicht alle angeboten werden, klären Sie mit Ihrem + Rechnerlieferanten, ob und wie diese Einstellungen erreicht werden können. + + Hinweis: Notfalls kann auf das #ib#RTS/CTS#ie#-Protokoll verzichtet werden, wenn der + Eingabepuffer der #ib#Station#ie# groß genug ist. Die Anzahl simultan laufen­ + der Netzkommunikationen ist dann auf + + puffergröße DIV 150 + + begrenzt (bei Z80, 8086: 3; bei M20: 10). + + Hinweis: Es können auch andere #ib#Baud#ie#raten (2400, 4800, 19200) an der Box + eingestellt werden. + + +c) Achten Sie bei der #ib#Verbindung#ie# von der Station zur #ib#Netzbox#ie# (bzw. zur Gegen­ + station bei einem Zweistationennetz ohne Boxen) darauf, daß neben den Emp­ + fangs- und Sendeleitungen auch die Leitungen RTS und CTS verdrahtet wer­ + den, also ein 5-poliges Kabel verwendet wird [2]. Die #ib#Pin-Belegung#ie# der Boxen + entspricht der eines Kabels zur Rechner-Rechner-Kopplung. + + Beispiel: + + Verbindung eines BICOS-Systems mit der Box: + + Stecker Stecker + Pin Pin + + 2 <---------> 3 + 3 <---------> 2 + 4 <---------> 5 + 5 <---------> 4 + 7 <---------> 7 + + +d) Richten Sie eine Task #on("bold")##ib#net#ie##off("bold")# unter #on("bold")#SYSUR#off("bold")# ein und legen Sie eine #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# an, die + Ihre #ib#Netzkonfiguration#ie# enthält, oder ändern Sie die mitgelieferte Datei ent­ + sprechend ab (siehe auch 1.5.).#goalpage("sperre")# + + + Dem bisherigen Netz entspricht eine Datei #on("b")#netz#off("b")# mit folgendem Inhalt: + + definiere netz; + routen (1,127,k); + starte kanal (k,1,x); + aktiviere netz. + + k: ihr netzkanal. + x: IF yes ("#ib#Flußkontrolle#ie#") THEN 10 ELSE 3 FI. + + + + Laden Sie die Datei #on("b")##ib#net install#ie##off("b")# vom Archiv #on("b")#net#off("b")# und übersetzen Sie diese. Je nach­ + dem, welche EUMEL-Version auf der Maschine installiert ist, werden die notwen­ + digen Programmdateien insertiert. + + Es sind dies + + net report + net hardware interface + basic net + net manager + + + Das Netz wird dabei gestartet. + + + Hinweis: Obwohl die Task #on("b")#net#off("b")# sich noch mit #on("bold")##ib#continue#ie##off ("bold")# an ein Terminal holen + läßt, sollte man dies nur kurzzeitig tun, da der Netzverkehr solange + blockiert ist. + + In der #ib#Datei#ie# #on("b")#netz#off("b")# sollte der #ib#Kanal#ie#, über den der meiste Verkehr erwar­ + tet wird, zuerst gestartet werden. Für ihn wird die Task #on("b")##ib#net port#ie##off("b")# gene­ + riert, für jeden weiteren Kanal wird eine Task #on("b")##ib#net port#ie# k#off("b")# (k=Kanal­ + nummer) generiert. +#page# + +1.3. Benutzung des Netzes +#goalpage("1.3")# + + +Zur Benutzung des Netzes stehen folgende Operatoren und Prozeduren zur Verfü­ +gung: + + + +TASK OP #ib#/#ie# (INT CONST station, TEXT CONST taskname) + +liefert die Task #on("bold")#taskname#off("bold")# von der #ib#Station#ie# #on("bold")#station#off("bold")#. + + +#ib#Fehlerfälle#ie#: + + - #ib(4)#Task "...." gibt es nicht#ie(4)# + + Die angeforderte Task gibt es auf der #ib#Zielstation#ie# nicht. + + - #ib(4)##ib#Collectortask#ie# fehlt#ie(4)# + + die Task #on("b")##ib#net port#ie##off("b")# existiert nicht (siehe 6). + + Hinweis: #on("b")#net port#off("b")# wird bei jedem Start des Netzes neu generiert und beim + Auftreten eines nicht vorhergesehenen #ib#Fehler#ie#s beendet. Die Feh­ + lermeldung steht im #on("b")##ib#report#ie##off("b")# (siehe 4). + + - #ib(4)#Station x antwortet nicht#ie(4)# + + Eine nicht vorhandene oder abgeschaltete Station wurde angesprochen. + + Hinweis: Dieser #ib#Fehler#ie# wird angenommen, wenn eine Überwachungszeit von + ca. 30 Sekunden verstrichen ist, ohne daß Station x die Taskidenti­ + fikation angeliefert hat. + + - #ib(4)#Station x gibt es nicht#ie(4)# + + #ib#Station#ie# x steht nicht in den #ib#Routentabelle#ie#n. + + Diese Meldung kann auch erscheinen, wenn Station x erst kürzlich an das Netz + angeschlossen wurde. Sie steht dann noch nicht in den Routentabellen (siehe + auch 5.3.). + + Beispiel: + + list (5/"PUBLIC") + + Die Dateiliste von PUBLIC der Station 5 wird angefordert. + + + +TASK OP #ib#/#ie# (INT CONST station, TASK CONST task) + +liefert + +station / name (task) + +Beispiel: + + list (4/public) + + +Fehlerfall: + + "......" #ib(4)#gibt es nicht#ie(4)# + + Auf der eigenen Station gibt es die Task #on("b")#task#off("b")# nicht. + Der Taskname wird auf der eigenen Station bestimmt, wenn es dort die Task + nicht gibt, führt dies zur obigen Fehlermeldung. + +Abhilfe: + + Statt list(4/public) das Kommando list (4/"PUBLIC") verwenden. + + + +INT PROC #ib#station#ie# (TASK CONST task) + +liefert die #ib#Stationsnummer#ie# der Task #on("bold")#task#off("bold")#. + +Beispiel: + + put (station (myself)) + + gibt die eigene Stationsnummer aus. + + + + +PROC #ib#reserve#ie# (TEXT CONST archivename, TASK CONST archivetask) + +dient dazu, das Archiv auf der #ib#Station#ie# #on("bold")#station#off("bold")# anzumelden. + +Beispiel: + + reserve ("std", 4/"ARCHIVE"); #ib#list#ie# (4/"ARCHIVE") + + gibt das Inhaltsverzeichnis der Archivfloppy im Laufwerk der Station 4 aus. + + Hinweis: Vergessen Sie bei solchen #ib#Querarchivierungen#ie# nicht die Stationsangabe + bei jedem einzelnen Archivkommando (z.B fetch ("xxx", #on("bold")#4/#off("bold")# + "ARCHIVE")). + + Hinweis: Querarchivieren ist langsam. Verwenden Sie es nur, wenn Sie Floppy­ + formate umsetzen wollen. + + + + +PROC #ib#free global manager#ie# + +dient dazu, die eigene Task über das Netz ansprechbar zu machen. Jede andere +Task im Netz kann dann die üblichen #ib#Manager#ie#aufrufe (#on("bold")##ib#save#ie##off ("bold")#, #on("bold")##ib#fetch#ie##off ("bold")#, usw.) an die +eigene Task machen, sofern diese nicht an ein Terminal gekoppelt ist. + +Die Task wird (wie bei #on("bold")#break#off ("bold")#) abgekoppelt und meldet sich in Zukunft mit #on("bold")#mainte­ +nance#off ("bold")# statt mit #on("bold")#gib kommando#off ("bold")#. + +Beispiel: + + An Station 4 ruft man in der Task "hugo" das Kommando #on("bold")#free global manager#off("bold")# + auf. Anschließend kann man von jeder Station aus z.B. #on("bold")#list (4/"hugo")#off ("bold")# usw. auf­ + rufen. + + + + +TEXT PROC #ib#name#ie# (TASK CONST t) + +Diese (schon immer vorhandene) Prozedur wurde dahingehend erweitert, daß der +Name einer auf einer anderen Station existierenden Task über Netz angefordert wird. + +Existiert die Task nicht, so wird #on("bold")##ib#niltext#ie##off ("bold")# geliefert. + +Hinweis: Die Prozedur #on("bold")##ib#exists#ie##off ("bold")# wurde nicht auf das Netz ausgedehnt, da sie in Situa­ + tionen eingesetzt wird, wo es auf eine sehr schnelle Antwort ankommt. + Daher liefert #on("bold")#exists#off ("bold")# für eine stationsfremde Task immer FALSE. Will man + wissen, ob eine solche Task existiert, verwende man die Abfrage + + #on("bold")#IF name (task) <> "" THEN ... #off ("bold")#. + +#ib#Fehlerfall#ie#: + + - #ib(4)#Station x antwortet nicht#ie(4)# + + - #ib(4)##ib#Station#ie# x gibt es nicht#ie(4)# + +#page# + +1.4. Informationsmöglichkeiten + +#goalpage("1.4")# + +In der Task #on("bold")#net#off("bold")# wird eine #ib#Datei#ie# #on("bold")##ib#report#ie##off("bold")# geführt, in der #ib#Fehlersituationen#ie# des Netzes +verzeichnet werden. Diese Datei kann in jeder anderen Task auf derselben Station mit +#on("bold")##ib#list#ie# (/"#ib#net#ie#")#off("bold")# angesehen werden. Eine Erklärung der wichtigsten Meldungen finden Sie +im Anhang. + +In jeder Task kann durch das Kommando #on("bold")##ib#list#ie# (/"#ib#net port#ie#")#off("bold")# eine Übersicht über die +momentan laufenden #ib#Netzübertragungen#ie# der eigenen #ib#Station#ie# erhalten werden (nur für +den #ib#Kanal#ie#, an dem #on("b")##ib#net port#ie##off("b")# hängt). Entsprechendes gilt für die weiteren Netports der +eigenen Station. + +Mit #on("bold")##ib#list#ie# (/"#ib#net list")#ie##off("bold")# erhält man die Informationen, die man mit #on("b")#list (/"net")#off("b")# und #on("b")##ib#list#ie##off("b")# auf +alle Netports bekommt, sofern #on("b")##ib#listoption#ie##off("b")# (siehe S. #topage("listop")#) beim Generieren des Netzes +aufgerufen wurde. Dieser Aufruf funktioniert auch bei fremden Stationen (z.B. #on("b")#list +(5/"net list")#off("b")#). + +#page# + +1.5. Eingriffsmöglichkeiten + +#goalpage("1.5")# + +- Jede Task kann #ib#Sende#ie(1,"ströme")#- und #ib#Empfangsströme#ie#, die bei #on("bold")#list (/"net port")#off("bold")# gemel­ + det worden sind und die eigene Task betreffen, abbrechen. Hierzu ist das Kom­ + mando #on("bold")##ib#erase#ie# ("x", /"#ib#net port#ie#")#off ("bold")# zu geben, wobei x die #ib#Stromnummer#ie# (aus dem #on("bold")#list#off ("bold")#) + ist. + Unberechtigte #ib#Löschversuche#ie# werden abgewiesen. + Von privilegierten Tasks aus können jedoch mit #on("b")##ib#erase#ie##off("b")# beliebige Ströme abge­ + brochen werden. + + +- Durch das Kommando #on("bold")##ib#start#ie##off("bold")# kann von der Task #on("b")##ib#net#ie##off("b")# aus das Netz neu gestartet + werden. Dies setzt eine gültige #ib#Datei#ie# #on("bold")#netz#off("bold")# voraus. Es wird ein #on("bold")##ib#run#ie##off("bold")# auf diese Datei + gegeben. Das Kommando #on("b")##ib#start#ie##off("b")# ist nur noch aus Kompatibilitätsgründen zum alten + Netz vorhanden. + + +- Durch das Kommando #on("bold")##ib#routen aufbauen#ie##off("bold")# in der Task #on("b")##ib#net#ie##off("b")# werden die #ib#Routentabelle#ie#n + neu aufgebaut. Dies kann notwendig werden, wenn eine neue #ib#Station#ie# ans Netz + angeschlossen wurde (#ib#Fehlermeldung#ie# '#ib(4)#Station x gibt es nicht#ie(4)#'). #on("bold")#routen aufbauen#off ("bold")# + muß zuvor auch an allen dazwischenliegenden #ib#Knotenstation#ie#en gegeben werden. + + #on("bold")#routen aufbauen#off ("bold")# erzeugt eine Task #on("b")##ib#router#ie##off("b")#, die sich an das Terminal koppelt (die + Task #on("b")#net#off("b")# koppelt sich ab) und ein #ib#Protokoll#ie# ausgibt. Sind die #ib#Route#ie#n aufgebaut, + beendet sich die Task #on("b")#router#off("b")# mit der Meldung #on("b")#fertig#off("b")#. Es werden nur Stationen + bearbeitet, die nicht #ib#gesperrt#ie# (siehe S. #topage("sperre")#), und für die keine festen Routen + vereinbart sind. Der Vorgang dauert ca. 5 Sek. pro nicht gesperrter Station und + #ib#Netzkanal#ie#. Die #ib#Route#ie#n werden in einem #ib#Datenraum#ie# #on("b")##ib#port intern#ie##off("b")# hinterlegt. + + +- Der Aufruf #on("bold")##ib#definiere netz#ie##off("bold")# leitet eine #ib#Netzdefinition#ie# in der #ib#Datei#ie# #on("bold")##ib#netz#ie##off("bold")# ein. Dabei + werden alle augenblicklichen Netzkommunikationen gelöscht. Die Tasks #on("b")##ib#net port#ie# + (k)#off("b")#, wobei #on("b")#k#off("b")# die #ib#Kanalnummer#ie# ist, und #on("b")##ib#net timer#ie##off("b")# werden gelöscht. + + Dieser Aufruf muß vor den Aufrufen von #on("bold")##ib#starte kanal#ie#, #ib#erlaube#ie#, #ib#sperre#ie#, #ib#routen#ie#, + #ib#aktiviere netz#ie# und #ib#list option#ie##off("bold")# erfolgen. + + +- PROC #ib#sperre#ie# (INT CONST a,z) + bewirkt, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# keine Manageraufrufe an Tasks dieser Station + geben dürfen (Genauer gesagt werden sendecodes > 6 nicht weitergeleitet, son­ + dern ein errornak mit dem Text "#ib(4)#kein Zugriff auf Station#ie(4)#" zurückgeschickt). + + Dieser Aufruf muß vor dem ersten #on("bold")##ib#starte kanal#ie##off("bold")# erfolgen. + + +- PROC #ib#erlaube#ie# (INT CONST a,z) + bewirkt, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# Manageraufrufe an Tasks dieser Station geben + dürfen. + + Dieser Aufruf muß vor dem ersten #on("bold")##ib#starte kanal#ie##off("bold")# erfolgen. + + Beispiel: Alle Stationen außer 8 und 10 sollen #ib#gesperrt#ie# sein: + + #ib#sperre#ie# (1,127); erlaube (8,8); erlaube (10,10) + + Hinweis: 127 ist z.Zt. die maximale #ib#Stationsnummer#ie(1," maximale")#. + + +- PROC #ib#routen#ie# (INT CONST a,z,k) + legt fest, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# an #ib#Kanal#ie# #on("bold")#k#off("bold")# direkt angeschlossen sind. Sen­ + dungen dieser Stationen werden nur bearbeitet, wenn sie über diesen Kanal her­ + einkommen (siehe 1.7.). Fehlt für eine Station ein entsprechender Routenaufruf, so + darf sie über einen beliebigen #ib#Netzkanal#ie# angeschlossen sein. Dies wird dann von + #on("bold")##ib#routen aufbauen#ie##off("bold")# ermittelt. + + PROC routen (INT CONST a,z,k,zw) + legt fest, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# indirekt über die #ib#Knotenstation#ie# #on("bold")#zw#off("bold")# angeschlos­ + sen sind, und #on("b")#zw#off("b")# am Kanal #on("bold")#k#off("bold")# hängt. + + +- PROC #ib#starte kanal#ie# (INT CONST k,m,q) + startet eine #ib#Netztask#ie# am #ib#Kanal#ie# #on("bold")#k#off("bold")# im Modus #on("bold")#m#off("bold")# [4]. Dabei wird mit #on("bold")#q#off("bold")# die Anzahl + paralleler #ib#Empfangsströme#ie# festgelegt. Dadurch kann erreicht werden, daß der + #ib#Empfangspuffer#ie# nicht überläuft, indem nicht mehr als #on("b")#q#off("b")# Ströme quittiert werden. + Bei #ib#V.24#ie#-#ib#Schnittstelle#ie#n gebe man 3 (ohne #ib#Flußkontrolle#ie#) bzw. 10 (mit Flußkon­ + trolle) an. + + +- PROC #ib#aktiviere netz#ie# + muß als Abschluß in der Datei #on("bold")##ib#netz#ie##off("bold")# aufgerufen werden. Dabei wird die Task vom + Terminal abgekoppelt. Falls es bei #on("bold")##ib#definere netz#ie##off("bold")# den #ib#Datenraum#ie# #on("b")##ib#port intern#ie##off("b")#, der + die #ib#Route#ie#n enthält, nicht gab, wird #on("bold")##ib#routen aufbauen#ie##off("bold")# aufgerufen. + + +- PROC #ib#listoption#ie##goalpage("listop")# + erzeugt eine Task #on("b")##ib#net list#ie##off("b")#, die bei #on("bold")#list#off("bold")# den #ib#Fehlermeldung#ie#sreport und den Zustand + aller Netports liefert. Diese Task ist auch über Netz ansprechbar. In der Regel + sollte man #on("b")#listoption#off("b")# in der Datei #on("b")#netz#off("b")# aufrufen, es sei denn, das System ist sehr + klein. + +#page# + +1.6. #ib#Fehlersuche#ie# im Netz + +#goalpage("1.6")# + +#ib#Fehler#ie# im Netz können sich verschiedenartig auswirken. Im folgenden wird auf einige +Beispiele eingegangen: + +Beispiel: + + Auf #on("bold")#list (4/public)#off("bold")# erfolgt die Meldung '#ib(4)#Station#ie(4, " x antwortet nicht")# 4 antwortet nicht'. + + +#ib#Fehler#ie#möglichkeiten: + + - #ib#Station#ie# 4 ist nicht eingeschaltet. + Abhilfe: Station 4 einschalten. Kommando erneut geben. + + + - #ib#Netztask#ie# an Station 4 ist nicht arbeitsfähig. + Abhilfe: Kommando #on("bold")##ib#start#ie##off ("bold")# in der Task "net" auf Station 4. + + + - Stationsnummern und Boxnummern stimmen nicht überein. + Abhilfe: Mit #on("bold")#define station#off ("bold")# #ib#Stationsnummer#ie#n korrigieren (siehe 3.2). + + + - #ib#Verbindung#ie# Rechner/Box am eigenen Rechner oder an Station 4 fehlt. + Abhilfe: Verbindungen überprüfen. Durch Ansprechen einer dritten Station + kann oft schnell geklärt werden, welche Rechner/Box-Verbindung + defekt sein muß. + + + - Verbindung der Boxen untereinander defekt. + Abhilfe: Fehlende Verbindung, #ib#Masseschluß#ie# und #ib#Dreher#ie# (keine 1:1 Verbin­ + dung) überprüfen und beheben. + + Hinweis: Liegt z.B. ein Masseschluß vor, so kann es durchaus sein, daß + Boxen, die nicht in der Nähe des Masseschlusses stehen, noch + miteinander arbeiten können. Man kann aus der Tatsache, daß zwei + Boxen miteinander arbeiten können, also nicht schließen, daß man + nicht nach diesem Fehler suchen muß. + + + +Beispiel: + + Auf #on("bold")#list (4/public)#off("bold")# erfolgt keine Reaktion. + + + - Station 4 ist während dieser Sendung zusammengebrochen. + Abhilfe: Station 4 wieder starten. Die Bearbeitung des #on("bold")##ib#list#ie##off ("bold")#-Kommandos wird + automatisch wieder aufgenommen. + + + - PUBLIC auf Station 4 ist nicht im Managerzustand. + Abhilfe: PUBLIC in den Managerzustand versetzen. + + + - #ib#Fehler#ie# in der #ib#Netzhardware#ie#. + Überprüfen Sie, ob + + - die Boxen eingeschaltet sind, + - die Bereitlampe blinkt (wenn nicht: #ib#RESET#ie# an der Box), + - die #ib#V.24#ie#-Kabel richtig stecken, + - die Boxen untereinander verbunden sind (1 zu 1 Verbindungen der 5 poli­ + gen Diodenbuchsen). + + + - Fehler bei der #ib#Netzinstallation#ie#. + Überprüfen Sie, ob + + - alle Stationen an einem #ib#Strang#ie# gleiche oder kompatible Netzmodi einge­ + stellt haben [4], + - alle Stationen an einem #ib#Netzstrang#ie# auf die gleiche #ib#Nutzdatenlänge#ie# einge­ + stellt sind, + - bei der #ib#Kommunikation#ie# über #ib#Knoten#ie# alle Stationen die gleiche Nutzdaten­ + länge bei indirekten Sendungen eingestellt haben, + - die #ib#Route#ie#n auf allen beteiligten Stationen korrekt eingestellt sind. + + + +Beispiel: + + Auf #on("bold")#list (4/public)#off("bold")# erfolgt die Meldung '#ib(4)##ib#Collectortask#ie# fehlt#ie(4)#'. + + - Das Kommando #on("b")##ib#start#ie##off("b")# (bzw #on("b")##ib#aktiviere netz#ie##off("b")# in der #ib#Datei#ie# #on("b")#netz#off("b")#) wurde nicht gege­ + ben. Somit existiert #on("b")##ib#net port#ie##off("b")# nicht. + Abhilfe: Kommando #on("bold")#start#off ("bold")# in der Task #on("b")#net#off("b")# geben. + + + - Die #ib#Netzsoftware#ie# ist auf einen nicht vorhergesehenen #ib#Fehler#ie# gelaufen. Dieser + wird im #ib#Report#ie# vermerkt. #on("b")##ib#net port#ie##off("b")# wird dabei gelöscht. + Abhilfe: Geben Sie in der Task #on("bold")#net#off("bold")# das Kommando #on("bold")#start#off("bold")#. Dadurch wird die + Netzsoftware neu gestartet. Alle Netzkommunikationen dieser Station + gehen verloren. + + + +Beispiel: + + Nach #on("bold")##ib#fetch#ie# ("hugo",4/public)#off("bold")# sind Teile der Datei "hugo" verfälscht. + + - Die #ib#V.24#ie#-#ib#Verbindung#ie# zur Box ist nicht in Ordnung. + Abhilfe: Abstand zwischen Rechner und Box verkürzen; #ib#Baud#ie#rate ernie­ + drigen; durch Wechseln der #ib#V.24#ie#-#ib#Schnittstelle#ie# feststellen, ob diese + defekt ist. + Hinweis: Die Verbindung zwischen den Boxen ist durch #ib#Prüfsummen#ie# abge­ + sichert (Hardware). + +#page# + +1.7. Sicherheit im Netz + +#goalpage("1.7")# + +Bei Benutzung eines Rechnernetzes tauchen neue #ib#Sicherheitsprobleme#ie# auf. Um sie +verstehen und eingrenzen zu können, muß man sich mit dem #ib#Sicherheitskonzept#ie# des +Betriebssystems EUMEL vertraut machen: + +Eine Task im EUMEL kann nur manipuliert werden, wenn man sie entweder an ein +Terminal koppelt oder ihr Sendungen zustellt. + +Das Ankoppeln kann über #ib#Paßwort#ie# abgesichert werden. Nach dem Ankoppeln kann +die Task außerdem selbst bestimmen, wie sie die dann möglichen Eingaben behan­ +delt. So kann z.B. noch ein komplizierter Paßalgorithmus zu durchlaufen sein, bis +man auf einer offenen Programmierumgebung landet. + +Sendungen können eine Task auch nur mit ihrem Einverständnis beeinflussen, da +eine Sendung nur zugestellt wird, wenn die Task in der Prozedur #on("b")##ib#wait#ie##off("b")# steht. Insbe­ +sondere kann die Task den Absender einer Sendung überprüfen und gewisse Opera­ +tionen nur bei gewissen Absendern zulassen. So lehnt ein #on("b")##ib#global manager#ie##off("b")# z.B. alle +Dateimanagerkommandos ab, die nicht von Nachkommen (z.B. Söhnen) der Task +kommt. #on("b")##ib#free global manager#ie##off("b")# hingegen läßt Operationen wie #on("b")##ib#save#ie##off("b")# oder #on("b")##ib#erase#ie##off("b")# von +beliebigen Tasks, auch von fremden #ib#Station#ie#en, zu. Will man nur bestimmte Fremd­ +stationen zulassen, kann man z.B. folgendes Schema verwenden: + + PROC my #ib#manager#ie# + (DATASPACE VAR ds, INT CONST code, phase, TASK CONST source): + + IF station (source) = station (myself) OR station (source) = 10 + THEN + free manager (ds, code, phase, source) + ELSE + errorstop ("kein Zugriff") + FI + + END PROC my manager; + + global manager (PROC my manager) +#page# +Hier werden nur #on("b")#save#off("b")# usw. von Tasks der eigenen Station und der Station 10 zuge­ +lassen. Der Rest erhält die #ib#Fehlermeldung#ie# "kein Zugriff". + +Dieses Verfahren gewährt nur dann Sicherheit, wenn es nicht möglich ist, daß eine +beliebige Station sich als Station 10 ausgibt. + +Damit das Netz diese Sicherheit garantieren kann, müssen natürlich gewisse phy­ +sische Voraussetzungen erfüllt sein. Wenn z.B. die Station 10 über eine #ib#V.24#ie# ange­ +schlossen ist, aber jeder die Möglichkeit hat, an diese #ib#Schnittstelle#ie# seinen eigenen +Rechner anzuschliessen, dann kann das Netz natürlich nicht erkennen, ob es mit der +echten Station 10 verkehrt. + +Es muß also sichergestellt sein, daß an Kanälen für das Netz nicht manipuliert werden +kann. Bei einem #ib#Strang#ie# (Anschluß über #ib#Netzbox#ie#en) heißt das für die Boxen, daß sie +nur #ib#Telegramm#ie#e weitervermitteln, die die eingestellte #ib#Quellstationsnummer#ie# enthalten. +Sonst könnte jemand, der an denselben Strang wie #ib#Station#ie# 10 angeschlossen ist, +#ib#Telegramm#ie#e erzeugen, die so aussehen, als kämen sie von 10. + +Die #ib#Netzsoftware#ie# ihrerseits darf nur Telegramme auswerten, die über die richtige +#ib#Route#ie# (#ib#Kanal#ie# und #ib#Knotenstation#ie#) einlaufen. + +Leider hat dies die unangenehme Konsequenz, daß man automatisches Aufbauen und +Ändern von Routen verbieten muß, wodurch die Wartung der #ib#Netzkonfiguration#ie# +erschwert wird. + +Diese Version der #ib#Netzsoftware#ie# bietet den folgenden Kompromiß an: Nur für sicher­ +heitsrelevante #ib#Stationen#ie(1,", sicherheitsrelevante")# (im Beispiel Station 10) muß in der #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# die Route +angegeben werden. Dies muß in allen Stationen geschehen, für die die Station +sicherheitsrelevant ist, und in allen #ib#Knoten#ie# dazwischen. + +Für nicht sicherheitsrelevante Stationen werden #ib#Routeninformationen#ie# automatisch +aufgebaut und geändert. + +Hinweis: +Man wird oft ohne sicherheitsrelevante Stationen auskommen, indem man auf Ebenen +oberhalb der Netzebene Paßwortkontrollen einführt. So ist es z.B. ja möglich, Dateien +durch Paßworte zu schützen. Ein weiteres Beispiel ist ein #ib#Printerserver#ie#, der nur +ausdruckt, wenn eine mitgegebene Abrechnungskennung stimmt. Dabei ist es sogar +wünschenswert, daß die #ib#Station#ie# irrelevant ist, die den Druckauftrag gibt. +#pagenr ("%",21)##setcount (1)##block##pageblock##count per page# +#headeven# +#center#EUMEL Netzbeschreibung +#center#____________________________________________________________ + +#end# +#headodd# +#center#Teil 2 : Arbeitsweise der Netzsoftware +#center#____________________________________________________________ + +#end# +#bottomeven# +#center#____________________________________________________________ +Netz - % #right#GMD +#end# +#bottomodd# +#center#____________________________________________________________ +GMD #right#Netz - % +#end# +#page# + +Teil 2: Arbeitsweise der Netzsoftware +#goalpage("2")# + + + +2.1. Die Netztask +#goalpage("2.1")# + + +In diesem Kapitel wird beschrieben, wie eine #ib#Netztask#ie# in das System eingebettet ist +und welche Aufgaben sie hat. Unter Einhaltung dieser Konzepte kann die ausgeliefer­ +te Netzsoftware so geändert werden, daß sie beliebige andere #ib#Netzhardware#ie# unter­ +stützt. Die Netzsoftware ist so gegliedert, daß i.allg. nur eine hardwareabhängige +Komponente ausgetauscht werden muß (siehe Teil 3). + +Die Kommunikation zwischen Tasks im EUMEL-Betriebssystem basiert auf einem +#ib#Rendezvouskonzept#ie#: Die #ib#Zieltask#ie# einer Sendung muß empfangsbereit sein, wenn die +#ib#Quelltask#ie# sendet. + +Die Kommunikationsprozeduren auf der niedrigsten Ebene sind #on("bold")##ib#send#ie##off ("bold")# (Senden) und +#on("bold")##ib#wait#ie##off ("bold")# (Warten auf Empfang). Bei der Kommunikation werden ein Integer #on("bold")#code#off ("bold")# und ein +#ib#Datenraum#ie# #on("bold")#dr#off ("bold")# übergeben. #on("bold")#code#off ("bold")# muß >= 0 sein, da negative Codes systemintern ver­ +wandt werden. Ist die empfangende Task an einen #ib#Kanal#ie# gekoppelt (#on("bold")##ib#continue#ie##off ("bold")#), so +führt eine Zeicheneingabe auf diesem Kanal dazu, daß eine Sendung mit dem Code +-4 ankommt. Die Eingabedaten müssen mit den üblichen #ib#Eingabeprozeduren#ie# (#on("bold")##ib#inchar#ie##off ("bold")# +usw.) abgeholt werden. Der übermittelte #ib#Datenraum#ie# und die Absendertask sind dabei +ohne Bedeutung und dürfen nicht interpretiert werden. + +Die Prozedur #on("bold")#send#off ("bold")# hat einen #ib#Rückmeldeparameter#ie#, der besagt, ob die Sendung +übermittelt wurde. Gibt es die Zieltask nicht oder steht sie nicht im #on("bold")#wait#off ("bold")#, so kann die +Sendung nicht übermittelt werden. + +Ein Entwicklungskriterium für das EUMEL-Netz war es, möglichst wenig Unterstüt­ +zung von der virtuellen EUMEL-Maschine (#ib#EUMEL0#ie#) zu fordern, damit weitgehend in +ELAN programmiert werden kann. Dadurch ist es möglich, eine (privilegierte) Task mit +der Netzabwicklung zu betrauen. +#page# +Zunächst wird auf die #ib#EUMEL0#ie#-Unterstützung eingegangen: + +a) Es gibt die Prozedur #on("bold")##ib#define collector#ie##off ("bold")#, mit der die für das Netz verantwortliche + Task der EUMEL0-Maschine bekannt gemacht wird. Diese Task wird im fol­ + genden #ib#Collector#ie# genannt. + +b) Es gibt die Prozedur #on("bold")##ib#define station#ie##off ("bold")#, die für den Rechner eine #ib#Stationsnummer#ie# + einstellt. Anhand dieser Nummer werden die Rechner eines Netzes unterschie­ + den. Das Einstellen bewirkt, daß für alle Tasks die Stationsnummer in ihre + #ib#Task-Id#ie# eingetragen wird (Task-Id's sind die Werte, die der Typ TASK anneh­ + men kann). + +c) Der Befehl #on("bold")##ib#station#ie# (task)#off ("bold")# liefert die Stationsnummer der #on("bold")#task#off ("bold")#. So liefert z.B. + #on("bold")##ib#station#ie# (myself)#off ("bold")# die #ib#Stationsnummer#ie# des eigenen Rechners. + +d) Eine Sendung, deren #ib#Zieltask#ie# auf einem anderen Rechner liegt (also station (ziel) + <> station (myself)), wird auf die #ib#Collectortask#ie# geleitet. + +e) Es gibt eine Prozedur #on("bold")##ib#collected destination#ie##off ("bold")#, die es dem Collector erlaubt, die + eigentliche Zieltask einer auf ihn geleiteten Sendung zu erfahren. + +f) Es gibt eine Variante der Prozedur #on("bold")##ib#send#ie##off ("bold")#, die es dem Collector gestattet, der + #ib#Zieltask#ie# eine andere Task als Absender vorzutäuschen. + +g) Es gibt eine spezielle #ib#Task-Id#ie# #on("bold")##ib#collector#ie##off ("bold")#, durch die der augenblicklich eingestell­ + te #ib#Collector#ie# erreicht wird. Diese wird als Zieltask beim Aufruf der Vermittlungs­ + dienste angegeben (siehe S. #topage("collector")#). Eine Sendung an #on("bold")#collector#off ("bold")# wird von EUMEL0 + an den derzeitig eingestellten Collector geschickt. + +Ein Collector kann also auf drei Wegen von den übrigen Tasks desselben Rechners +Sendungen erhalten: + + 1. Über ein normales #on("b")#send#off("b")# (z.B. bei #on("bold")#list (/"net port")#off ("bold")#, wenn #on("b")#net port#off("b")# der derzeitige + #ib#Collector#ie# ist), + + 2. über ein #on("b")#send#off("b")# an die Task #on("bold")#collector#off ("bold")# (s.u.) und + + 3. als umgeleitete Sendung (z.B. bei #on("bold")#list#off ("bold")# an eine Task auf einem anderen + Rechner). + +Der Collector kann diese Fälle anhand von #on("bold")#collected destination#off ("bold")# unterscheiden. + +Die Punkte d) bis f) dienen dazu, den Collector für über Netz kommunizierende Tasks +unsichtbar zu machen: Der Collector taucht nicht als Ziel oder #ib#Quelle#ie# von Sendungen +auf. Das ist notwendig, damit normale Tasks sich nicht darum kümmern müssen, ob +eine Sendung übers Netz geht oder im eigenen Rechner bleibt. + +Wenn ein #ib#Datenraum#ie# an einen anderen Rechner geschickt wird, muß der gesamte +Inhalt (z. Zt. max. 1 MB) übertragen werden. Dies macht bei der üblichen Netzhard­ +ware eine Zerlegung in #ib#Paket#ie#e nötig [5]. Bei der Zerlegung eines Datenraumes in +Pakete (#ib#Telegramm#ie#e) gelten folgende Einschränkungen: + + - Ein Paket kann maximal eine #ib#Datenraumseite#ie# als #ib#Nutzdaten#ie# enthalten. + + - Die #ib#Nutzdatenlänge#ie# ist für einen #ib#Übertragungsweg#ie# konstant. + + - Alle Stationen eines #ib#Netzstrang#ie#s senden mit gleicher Nutzdatenlänge (#on("b")##ib#data + length#ie##off("b")#). + + - Bei indirekter #ib#Kommunikation#ie(1,"indirekte")# (über #ib#Knoten#ie#) muß die Nutzdatenlänge für in­ + direkte Verbindungen (#on("b")##ib#data length via node#ie##off("b")#) auf allen beteiligten Stationen + gleich eingestellt sein. + + +Für Netze stehen spezielle Blockbefehle zur Verfügung: + + +g) #ib#blockin#ie# / #ib#blockout#ie# (dr,seite,512+abstand,anzahl,rest) + + Es werden maximal #on("bold")#anzahl#off ("bold")# Bytes transferiert. In #on("bold")#rest#off ("bold")# wird zurückgemeldet, wie + viele Bytes nicht bearbeitet wurden (z.B. weil der #ib#Kanal#ie# nichts anliefert). Bear­ + beitet werden die Bytes + + #on("bold")#seite#off ("bold")# * 512 + #on("bold")#abstand#off ("bold")# + + bis maximal + + #on("bold")#seite#off ("bold")# * 512 + #on("bold")#abstand#off ("bold")# + #on("bold")#anzahl#off ("bold")# - 1 + + Der Kanal, an den die Task gekoppelt ist, wird dabei über #ib#Stream-IO#ie# (d.h. + #on("bold")##ib#incharety#ie##off ("bold")#, bei #on("bold")#blockin#off ("bold")# bzw. #on("bold")#out#off ("bold")# bei #on("bold")#blockout#off ("bold")#) angesprochen. + + Hinweis: Die Anforderung darf nicht über #ib#Seitengrenze#ie# gehen, d.h. + + #on("bold")#abstand#off ("bold")# + #on("bold")#anzahl#off ("bold")# <= 512 + + muß erfüllt sein. + + +Eine Netzsendung läuft wie folgt ab: + +Die Task q auf Rechner rq mache ein #on("bold")##ib#send#ie##off ("bold")# an die Task z auf Rechner rz. + +1. Die Prozedur #on("bold")#send#off ("bold")# ist ein #ib#EUMEL0#ie#-Befehl. Die EUMEL0-Ebene erkennt, daß die + Sendung an die #ib#Station#ie# rz geht, da die #ib#Stationsnummer#ie# in der #ib#Task-Id#ie# enthalten + ist. Daher wird die Sendung zum #ib#Collector#ie# umgeleitet, den EUMEL0 wegen der + Einstellung durch #on("bold")##ib#define collector#ie##off ("bold")# kennt, umgeleitet. + +2. Die Task Collector empfängt über #on("bold")##ib#wait#ie##off ("bold")# den #ib#Datenraum#ie#, den #ib#Sendecode#ie# und die + Absendertask q. Die #ib#Zieltask#ie# z erfährt sie durch #on("bold")##ib#collected destination#ie##off ("bold")#. + +3. Der Collector nimmt Kontakt mit dem Collector des Rechners #on("b")#rz#off("b")# auf, dessen Sta­ + tionsnummer ja #on("bold")##ib#station#ie#(z)#off ("bold")# ist, und übermittelt diesem Sendecode, #ib#Quelltask#ie# (q), + eigentliche Zieltask (z) und den #ib#Datenraum#ie#. Da die Collectoren in ELAN geschrie­ + ben sind, können sie an beliebige #ib#Netzhardware#ie# und #ib#Protokoll#ie#e angepaßt werden. + +4. Der #ib#Collector#ie# auf Rechner #on("b")#rz#off("b")# verwendet das spezielle #on("bold")#send#off ("bold")#, um der Zieltask die + Sendung zuzustellen. Dadurch erscheint nicht der Collector, sondern die Task #on("b")#q#off("b")# + als Absender der Sendung. + +Zur Abwicklung der #ib#Vermittlungsebene#ie# (siehe S. #topage("vermittlung")#) muß der Collector noch spe­ +zielle Funktionen beherrschen. Diese sind + + der #on("b")##ib#/#ie#-Operator#off("b")# (Taskname in #ib#Task-Id#ie# wandeln) und + die #on("b")##ib#name#ie##off("b")#-Prozedur (Task-Id in Namen wandeln). + +Der #on("b")#/#off("b")#-Operator macht eine Sendung an den #on("bold")##ib#collector#ie##off ("bold")#, wobei im #ib#Datenraum#ie# der Name +der Task steht und der #ib#Sendecode#ie# gleich der Stationsnummer ist (siehe [6] ). Der +#ib#Collector#ie# setzt sich mit dem Collector dieser Station in Verbindung, damit dieser die +Task-Id ermittelt und zurückschickt. Der eigene Collector schickt dann dem #on("b")#/#off("b")#-Oper­ +ator als Antwort einen Datenraum, der die #ib#Task-Id#ie# enthält. + +Umgekehrt läuft #on("bold")##ib#name#ie##off ("bold")# ab: Wenn die Task-Id von einer fremden Station ist, schickt +#on("bold")#name#off ("bold")# eine Sendung an den #on("bold")##ib#collector#ie##off ("bold")#, wobei im Datenraum die Task-Id steht und +Sendecode = 256 ist. Der Collector entnimmt die #ib#Stationsnummer#ie# der Task aus der +Task-Id und läßt sich vom entsprechenden Collector den Tasknamen geben. Dieser +wird der #on("bold")#name#off ("bold")#-Prozedur im Antwortdatenraum übergeben. + +Netztasks bauen sich #ib#Routentabellen#ie# auf (#ib#Datei#ie#name #on("b")##ib#port intern#ie##off("b")#). Aufgrund dieser +Tabellen weiß jede #ib#Netztask#ie#, über welchen #ib#Kanal#ie# und welche #ib#Nachbarstation#ie# eine +#ib#Zielstation#ie# erreichbar ist. Wenn der #ib#Collector#ie# einen Sendeauftrag erhält, prüft er, ob +die Zielstation über seinen Kanal erreichbar ist. Wenn nicht, leitet er Parameter und +#ib#Datenraum#ie# der Sendung an die geeignete Netztask weiter. +#page# + +2.2. Ebenen + +#goalpage("2.2")# + +In diesem Kapitel werden die #ib#Protokollebenen#ie# für das Netz beschrieben, wie sie die +ausgelieferte Netzsoftware benutzt und erwartet. Bei anderer Netzhardware als Daten­ +boxen müssen die Ebenen a) bis c) ausgetauscht werden [4]. Unter Einhaltung der im +vorigen Kapitel beschriebenen Randbedingungen können auch die höheren Ebenen +geändert werden. + + +a) Physikalische Ebene + + - #ib#Station#ie# <--> Box + + #ib#V.24#ie#-#ib#Schnittstelle#ie# mit #ib#RTS/CTS#ie#-Handshake. Vollduplex. + + - Box <--> Box + + #ib#RS422#ie# über 2 verdrillte Leitungspaare (Takt und Daten). + + +b) Verbindungsebene + + - Station <--> Box + + Asynchron + 8 Bit + Even Parity + 2400/4800/9600/19200 #ib#Baud#ie# einstellbar über Lötbrücken) + + - Box <--> Box + + #ib#SDLC#ie# + 400 KBaud +#page# +c) #ib#Netzebene#ie# +#goalpage("quelle")# + + - Station <--> Box + + #ib#Telegrammformat#ie#: #ib#STX#ie#, , , <#ib#quelle#ie#>, <(n-4) byte> + + ist #ib#Längenangabe#ie# ( 8 <= n <= 160) + , sind #ib#Stationsnummer#ie#n. Diese müssen an den jeweiligen + Boxen eingestellt sein. + + Box --> Station: + + Ein #ib#Telegramm#ie# kommt nur bei der #ib#Station#ie# an, bei deren Box die Nummer + eingestellt ist. Dadurch ist ein Mithören fremder #ib#Übertragung#ie# nicht + möglich (Datenschutz). + + Zwischen Telegrammen können #ib#Fehlermeldung#ie#en der Box (Klartext) übermittelt + werden (z.B. 'skipped x', wenn ein #ib#STX#ie# von der Box erwartet wurde, aber 'x' + von der Station ankommt). + + Station --> Box: + + Ein Telegramm wird nur abgeschickt, wenn <#ib#quelle#ie#> mit der eingestellten + Nummer übereinstimmt (Datenschutz: Man kann nicht vorschwindeln, eine + beliebige Station zu sein, es sei denn, man hat physischen Zugriff zur Box und + stellt dort die Stationsnummer um). + + - Box <--> Box + + #ib#Telegrammformat#ie#: + FRAME, , <#ib#quelle#ie#>, , + + Eine #ib#Längenangabe#ie# ist nicht nötig, da #ib#SDLC#ie# eine Rekonstruktion der Länge + erlaubt. + + Telegramme mit falschen #ib#CRC-Code#ie# werden vernichtet. Auf höheren Ebenen + muß dies durch #ib#Zeitüberwachung#ie# erkannt und behandelt werden. + +#page# +d) Transportebene + + Diese Ebene wickelt das Rendezvous zwischen einer Task, die #on("bold")##ib#send#ie##off ("bold")# macht, und + einer Task, die im #on("bold")##ib#wait#ie##off ("bold")# steht, ab [1]. + + Der im #on("bold")#send#off ("bold")# angegebene #ib#Datenraum#ie# wird als Folge von #ib#Seiten#ie# (im EUMEL- + Sinne: Pagingeinheit und Allokiereinheit) übermittelt, wobei jede Seite ggf. noch in + n Byte große Stücke zerlegt wird. Es werden nur echt allokierte Seiten übermit­ + telt. Um nicht jedes #ib#Telegramm#ie# voll qualifizieren zu müssen, wird zunächst eine + Art virtuelle #ib#Verbindung#ie# durch ein #ib#OPEN#ie#-Telegramm eröffnet. Danach folgen + variabel viele #ib#DATA#ie#-Telegramme. Beide Sorten werden durch #ib#QUIT#ie#-Tele­ + gramme quittiert, um folgende Funktionen zu ermöglichen: + + #ib#Flußkontrolle#ie# (z.B. Zielrechner langsam), + Wiederaufsetzen (verlorene Telegramme), + Abbruch (z.B. weil Zieltask inzwischen beendet). + + Ein #ib#CLOSE#ie#-Telegramm ist nicht nötig, da das letzte DATA-Telegramm als + solches erkannt werden kann (siehe unten). +#page# + - #ib#OPEN#ie#-Telegramm + +#clear pos# + 0 1 2 3 4 5 6 7 8 9. Byte ++------+------+------+------+-------------+-------------+-------------------+ +I STX I 24 I Ziel IQuelleI Endziel I Endquelle I Strom I ++------+------+------+------+-------------+-------------+-------------------+ + + 10 11 12 13 14 15 16 17 ++-------------+-------------+---------------------------+ +I Sequenz I Seite I Quelltask I ++-------------+-------------+---------------------------+ + + 18 19 20 21 22 23 ++---------------------------+-------------+ +I Zieltask I Code I ++---------------------------+-------------+ + + + + <#ib#ziel#ie#>, <#ib#quelle#ie#> siehe S. #topage("quelle")# + + <#ib#endziel#ie#> Eigentliche #ib#Zielstation#ie#. Ist = , so ist + das #ib#Telegramm#ie# angekommen. Andernfalls muß die Station + den #ib#Nachbarn#ie# zum Erreichen des als + neues einsetzen und das Telegramm an diesen + Nachbarn weiterleiten. + + <#ib#endquelle#ie#> Eigentliche #ib#Absenderstation#ie#. ist dagegen immer + die Nummer der sendenden #ib#Nachbarstation#ie#. + + <#ib#strom#ie#> Die #ib#Stromnummer#ie# identifiziert die virtuelle #ib#Verbindung#ie#. Sie + muß in den #ib#QUIT#ie#-Telegrammen angegeben werden. + + <#ib#sequenz#ie#> -1 (Kennzeichen für OPEN) + + <#ib#seite#ie#> Nummer der ersten echt allokierten #ib#Seite#ie# des #ib#Datenraum#ie#s + (=-1, falls Nilspace) + + <#ib#quelltask#ie#> #ib#Task-Id#ie# der sendenden Task + + <#ib#zieltask#ie#> Task-Id der empfangenden Task + + Wert des im #on("bold")##ib#send#ie##off ("bold")# angegebenen Codes +#page# + - #ib#DATA#ie#-Telegramm + + + + + + 0 1 2 3 4 5 6 7 8 9. Byte ++------+------+------+------+-------------+-------------+-------------------+ +I STX I LängeI Ziel IQuelleI Endziel I Endquelle I Strom I ++------+------+------+------+-------------+-------------+-------------------+ + + 10 11 12 13 14 ++-------------+-------------+-----------------------------------------------+ +I Sequenz I Seite I n Byte Daten (Länge = 14 + n) I ++-------------+-------------+-----------------------------------------------+ + + + <#ib#laenge#ie#> Gesamtlänge des Telegramms. + #on("b")#laenge#off("b")# = #on("b")##ib#nutzlaenge#ie##off("b")# + 14. + Für #on("b")#nutzlaenge#off("b")# sind nur die Werte 64,128,256 und 512 + zugelassen (siehe 1). #on("b")#laenge#off("b")# wird codiert dargestellt (siehe + Teil 3). + + + <#ib#sequenz#ie#> wird von Telegramm zu Telegramm hochgezählt. Sie dient + der Überwachung bzgl. verlorengegangener Telegramme + bzw. durch #ib#Zeitüberwachung#ie# verdoppelter Telegramme. + + <#ib#seite#ie#> Nummer der x-ten echt allokierten Seite des #ib#Datenraum#ie#s + (x = (( DIV anzahl pakete pro seite) + 2) + + #ib#Nutzinformation#ie#. Diese gehört zur #ib#Adresse#ie# a des Daten­ + raums. + + a = + N ( DIV anzahl pakete pro seite + 1) * 512 + + ( MOD anzahl pakete pro seite) * n + + wobei N (x) die Nummer der x-ten Seite und + n die #ib#Nutzdatenlänge#ie# ist. + + Aus den Formeln ergibt sich, daß diese Nummer schon in + einem vorhergehenden DATA/OPEN-Telegramm über­ + mittelt wurde (im Feld ). + + - #ib#QUIT#ie#-Telegramm + + + 0 1 2 3 4 5 6 7 8 9. Byte ++------+------+------+------+-------------+-------------+-------------------+ +I STX I 12 I Ziel IQuelleI Endziel I Endquelle I Strom I ++------+------+------+------+-------------+-------------+-------------------+ + + 10 11 ++-------------+ +I Quit I ++-------------+ + + + + <#ib#strom#ie#> muß die #ib#Stromnummer#ie# sein, die in dem #ib#OPEN#ie#/#ib#DATA#ie#­ + Telegramm stand, das quittiert wird. + + 0 : ok. Nächstes Telegramm schicken. + + -1: #ib#Übertragung#ie# neu starten (mit #ib#OPEN#ie#), weil die Emp­ + fangsstation das OPEN nicht erhalten hat. + + -2: Übertragung ca. 20 Telegramme zurücksetzen. + + -3: Übertragung abbrechen. + + -4: #ib#Quittung#ie# für letztes Telegramm einer Sendung. + + +e) #ib#Vermittlungsebene#ie##goalpage("vermittlung")# #goalpage("collector")# + + Diese Ebene ist dafür zuständig, Namen von Tasks auf anderen Stationen in + #ib#Task-Id#ie#'s (Werte des Typs TASK) zu wandeln und umgekehrt. Hierzu wird im + entsprechenden #ib#OPEN#ie#-Telegramm der Code -6 (bzw. -7) als ein­ + getragen. Die #ib#Netzempfangstask#ie# erkennt diese #ib#Codes#ie# und wickelt die Aufgaben + selbst ab, so daß es dabei nicht nötig ist, irgendeine Task-Id der #ib#Zielstation#ie# zu + kennen. + + Dieses Verfahren ist möglich, weil im #on("bold")##ib#send#ie##off ("bold")# nur positive Codes erlaubt sind. +#page# +f) #ib#Höhere Ebenen#ie# + + Höhere Ebenen sind nicht mehr netzspezifisch. Sie basieren alle auf dem Send/ + Wait-Konzept des EUMEL. So gibt es z.B. den #on("bold")##ib#global manager#ie##off ("bold")#, der Aufbewah­ + rung und Zugriff von #ib#Datei#ie#en in einer Task regelt. Dabei darf diese Task (bei der + Variante #on("bold")##ib#free global manager#ie##off ("bold")#) auf einer beliebigen #ib#Station#ie# im Netz liegen. Wegen + des #ib#Rendezvous-Konzept#ie#s können beliebige Sicherheitsstrategien benutzt werden + (z.B.: keine Dateien an Station 11 ausliefern). Von großem Wert ist z.B., daß + man ohne weiteres das Archiv (Floppylaufwerk) einer anderen Station anmelden + und benutzen kann, wodurch eine einfache Konvertierung von Floppyformaten + möglich ist. Dies ist möglich, weil auch die Archiv-Task der Stationen sich an + das Globalmanagerprotokoll halten. + + + + + +Bemerkungen + +#ib#Fehlerbehandlung#ie# besteht bis Ebene c) darin, fehlerhafte #ib#Telegramm#ie#e einfach zu +entfernen. Die Ebene d) überwacht den Netzverkehr sowieso über #ib#Timeout#ie#s, die eine +Wiederholung eines Telegrammes bewirken, wenn die #ib#Quittung#ie# ausbleibt. + +Da bei der sendenden #ib#Station#ie# der ganze #ib#Datenraum#ie# zur Verfügung steht, ist eine +#ib#Fenstertechnik#ie# (wie bei #ib#HDLC#ie#) nicht nötig. Es kann zu jedem Zeitpunkt um beliebig +viele Telegramme zurückgesetzt werden. + +Da im EUMEL eine #ib#Textdatei#ie# ein #ib#Datenraum#ie# mit sehr komplexer Struktur ist (wegen +der Insert/Delete-Möglichkeiten, ohne den Rest der #ib#Datei#ie# zu verschieben), ist es ein +hoher Aufwand, von einem fremden Betriebssytem aus eine Textdatei in das +EUMEL-Netz zu senden. Für solche Zwecke muß noch eine einfachere Dateistruktur +definiert und entsprechende Dateikonverter erstellt werden. +#page# + +2.3. Stand der Netzsoftware + +#goalpage("2.3")# + +Das EUMEL-System wickelt die Prozedur #on("bold")##ib#send#ie##off("bold")# über das Netz ab, wenn die Sta­ +tionsnummer der #ib#Zieltask#ie# ungleich der eigenen #ib#Stationsnummer#ie# ist. Umgekehrt kann +man der von der Prozedur #on("bold")##ib#wait#ie##off("bold")# gelieferten Absendertask die #ib#Absenderstation#ie# entneh­ +men (siehe Prozedur #on("bold")##ib#station#ie##off("bold")# in Teil 1). + +Anders als bei einem #on("bold")##ib#send#ie##off("bold")# innerhalb einer Station meldet ein #on("bold")#send#off("bold")# an eine Task einer +fremden Station immer 0 zurück (Task gibt es und Task war im wait), obwohl dies +nicht der Fall sein muß. Ist die Sendung vollständig zur Zielstation übertragen, so +versucht der dortige #ib#Collector#ie# diese hundertmal im Sekundenabstand zuzustellen. +Bleibt das erfolglos, wird die Sendung vernichtet. +#pagenr ("%", 33)##setcount (1)##block##pageblock##count per page# +#headeven# +#center#EUMEL Netzbeschreibung +#center#____________________________________________________________ + +#end# +#headodd# +#center#Teil 3 : Netz Hardware Interface +#center#____________________________________________________________ + +#end# +#bottomeven# +#center#____________________________________________________________ +Netz - % #right#GMD +#end# +#bottomodd# +#center#____________________________________________________________ +GMD #right#Netz - % +#end# +#page# + +Teil 3: Netz-Hardware-Interface + + +#goalpage("3")# + + +3.1. Einführung + + #goalpage("3.1")# + +In diesem Teil der Netzbeschreibung wird die #ib#Schnittstelle#ie# beschrieben, über die +#ib#Netzhardware#ie# (also #ib#Datenbox#ie#en, #ib#Netzbox#ie#en oder Netzkarten) an die EUMEL-Netz­ +Software angepaßt werden kann. Dieser Teil der Beschreibung ist also nur für Netz­ +implementatoren wichtig. + +Das EUMEL-Netz wurde dazu konzipiert, zwei oder mehr EUMEL-Rechner über +#ib#V.24#ie#-Leitungen oder Datenboxen miteinander zu vernetzen. Dem heutigen Stand der +Technik entsprechend, werden auf dem Markt eine Reihe von Möglichkeiten ange­ +boten, um PC's zu vernetzen. Diese Netze unterscheiden sich auch dadurch, daß +unterschiedliche Medien zur Datenübertragung benutzt werden. Das #ib#EUMEL- +Datenboxen-Netz#ie# benutzt Telefonkabel, #ib#Ethernet#ie# beispielsweise Koax-Kabel. Auch +Lichtleiter werden zur Datenübertragung benutzt. Entsprechend gibt es eine ganze +Menge Hardware (#ib#Treiber#ie#, Netzzugangsgeräte, Datenboxen, Anschlußkarten), die die +Kopplung zwischen einem #ib#I/O-Kanal#ie# eines Rechners und dem Übertragungsmedium +(Kabel) übernimmt. Das Netz-Hardware-Interface soll als #ib#Schnittstelle#ie# zwischen der +Netz­Software und dem Treiber dienen. Damit wird es möglich, mehrere EUMEL- +Rechner über verschiedene (Teil-) Netze (in dieser Beschreibung Stränge genannt) +und unterschiedliche #ib#Netzhardware#ie# (Treiber) miteinander zu verbinden. Für den +EUMEL-Benutzer soll dabei kein Unterschied in der Benutzung des EUMEL-Netzes +feststellbar sein. +#page# +Neben unterschliedlichen Übertragungsmedien und Treibern gibt es weitere Unter­ +schiede zwischen Netzen: + + - in der Netztopologie (Bus-, Ring- oder Sternnetze), + + - in den Netzzugangsverfahren (Token passing, time slice token, slotting oder + CSMA/CD), + + - in der #ib#Übertragungsgeschwindigkeit#ie#, + + - im Aufbau der einzelnen #ib#Pakete#ie(1,", Aufbau der")# (#ib#Netztelegramm#ie#e). + +Alles, was mit den ersten drei Punkten zusammenhängt, wird von den Netzzugangs­ +geräten behandelt. + +Der Paketaufbau aber muß zumeist im Rechner geschehen und kann in den seltens­ +ten Fällen ganz vom Treiber übernommen werden. Ebenso kann der Treiber aus den +empfangenen Paketen nicht immer die Teile herausfiltern, die von der EUMEL- +#ib#Netzsoftware#ie# gebraucht werden. Diese Aufgaben übernimmt das #ib#Netz-Hardware- +Interface#ie#. Das Netz-Hardware-Interface stellt die #ib#Verbindung#ie# zwischen EUMEL- +#ib#Netzsoftware#ie# und den verschiedenen Netzhardwarearten dar. Ähnlich wie bei den +Drucker- und Terminal-Anpassungen wurde ein hardwareabhängiger Teil aus der +Netzsoftware abgetrennt und in einem eigenen #ib#Paket#ie# zusammengefaßt. Beim Start +des Netzes wird durch Angabe des entsprechenden #ib#Netzmodus#ie# für den jeweiligen +#ib#Kanal#ie# die entsprechende Anpassung für den benutzten Treiber ausgewählt. Wenn +andere, neue Treiber angepaßt werden sollen, so müssen lediglich in dem Paket #on("b")##ib#net +hardware interface#ie##off("b")# die entsprechenden Prozeduren hinzugefügt und die #ib#Sprungleisten#ie# +(#ib#SELECT#ie#-Statements) erweitert werden. + +Durch das #ib#Knotenkonzept#ie# in der #ib#Netzsoftware#ie# ist es möglich, über einen #ib#Knoten­ +rechner#ie# Teilnetze (Stränge), die mit unterschiedlicher #ib#Netzhardware#ie# arbeiten, mitein­ +ander zu verbinden. Es sind dann beispielsweise Verbindungen zwischen Rechnern, +die über #ib#Ethernet#ie# vernetzt sind, und Rechnern auf dem EUMEL-Datenboxen-Netz +möglich. Es ist auch möglich, mit einem Rechner Zugang zu einem Netz zu erhalten, +für das spezielle #ib#Netzhardware#ie# erforderlich ist (Datenboxen, Ethernet-Anschluß). Man +kann den Rechner über eine Rechner-Rechner-Kopplung (#ib#V.24#ie#) mit einem Rechner +verbinden, der bereits ans Netz angeschlossen ist, und so (allerdings auf Kosten der +Leistung des #ib#Knotenrechner#ie#s) Netzhardware einsparen. +#page# + +3.2. Arbeitsweise des + Netz-Hardware-Interfaces + + + + + + #goalpage("3.2")# + +Grob vereinfacht kann man sich die Arbeitsweise der #ib#EUMEL-Netz-Software#ie# so vor­ +stellen: + + reset box; + REP + IF zeichen da THEN lies telegramm ein + ELIF telegramm auszugeben THEN gib telegramm aus + FI + PER . + +(Es ist nur der Teil der Software beschrieben, der die Kanalbehandlung betrifft). + + +Das Zusammenspiel zwischen EUMEL-Netz und Netz-Hardware-Interface ge­ +schieht auf folgende Weise: + + + #on("b")#reset box;#off("b")# + REP + IF zeichen da THEN #on("b")#next packet start#off("b")#; + lies telegramm ein + ELIF telegramm auszugeben THEN gib telegramm aus + FI + PER. + + gib telegramm aus: + #on("b")#transmit header#off("b")#; + gib eumelnetztelegramm aus; + #on("b")#transmit trailer #off("b")#. + +Die fett gedruckten Programmteile werden im Netz-Hardware-Interface realisiert, die +anderen Teile stecken in den darüberliegenden Teilen der EUMEL-Netz-Software. +#page# +Beim Senden eines #ib#Telegramm#ie#s wird von der #ib#Netzsoftware#ie# zuerst der #ib#Vorspann#ie# in +einem #ib#Datenraum#ie# an das Hardware-Interface übergeben (#on("b")##ib#transmit header#ie##off("b")#). Im Hard­ +ware-Interface können aus dem Vorspann die entsprechenden Informationen (Tele­ +grammlänge, #ib#Zielstation#ie# usw.) entnommen werden. Dann wird von der Netzsoftware +das Telegramm (inklusive Vorspann) per #on("b")##ib#blockout#ie##off("b")# übergeben. Danach wird #on("b")##ib#transmit +trailer#ie##off("b")# aufgerufen, um dem Hardware-Interface das Ende des Telegramms zu mel­ +den. Beim Empfang ruft die Netzsoftware zuerst die #ib#I/O Control#ie# #ib#Telegrammfreigabe#ie# +auf [7]. Danach wird das erste #ib#Zeichen#ie# des Telegramms angefordert (#on("b")##ib#next packet +start#ie##off("b")#). Falls ein #ib#STX#ie# geliefert wurde, wird das Telegramm per #on("b")##ib#blockin#ie##off("b")# eingelesen. Falls +#ib#Niltext#ie# zurückgeliefert wird, wird von der Netzsoftware #ib#Timeout#ie# angenommen. Alle +anderen Zeichen werden so interpretiert, als ob Störungen aufgetreten wären. Die +Netzsoftware übernimmt die #ib#Fehlerbehandlung#ie#. Dazu wird u. U. ein Leerlesen des +Puffers vom Hardware-Interface verlangt (#on("b")##ib#flush buffers#ie##off("b")#). + +Bei der Einstellung der #ib#Nutzdatenlänge#ie# (#on("b")##ib#data length#ie##off("b")#) ist zu beachten, daß + +a) alle #ib#Station#ie#en, die an einem #ib#Strang#ie# hängen, auf die gleiche Nutzdatenlänge + eingestellt sein müssen. + +b) Wenn mehrere Stränge über #ib#Knoten#ie# miteinander verbunden sind, muß die Nutz­ + länge für Sendungen über Knoten (#on("b")##ib#data length via node#ie##off("b")#) auf allen Stationen des + gesamten Netzes gleich eingestellt sein. Die Zusammenfassung oder Aufteilung + von #ib#Telegramm#ie#en in Knoten ist nicht möglich. + +c) Als mögliche Nutzdatenlänge sind folgende Werte erlaubt: + + 64, 128, 256 und 512 Byte. + + Größere Nutzdatenlängen sind zur Zeit nicht möglich. + +d) Je größer die #ib#Nutzdatenlänge#ie# ist, desto geringer ist der Overhead an #ib#Zeichen#ie#, + die auf den Rechnern verarbeitet werden müssen. Allerdings muß der Rechner + leistungsfähig genug sein, die ankommenden Blöcke schnell genung zu verarbei­ + ten, und die Netztreiber müssen entsprechend große Puffer haben. + + +Alle implementierten Netzanpassungen sollen in einem Netz-Hardware-Interface +zusammengefaßt werden. Dies ist notwendig, um über #ib#Knotenrechner#ie# Netzstränge +verbinden zu können, die mit unterschiedlicher #ib#Netzhardware#ie# arbeiten. So können +zum Beispiel ein #ib#Strang#ie#, der mit Datenboxen aufgebaut ist, und ein #ib#Ethernet#ie#-#ib#Strang#ie# +über einen Knotenrechner miteinander verkoppelt werden. +#page# +Aus diesem Grund wurden #on("b")#Netzmodi#off("b")# eingeführt. Man kann dadurch, daß die Netz­ +modi, genau wie die #ib#Kanal#ie#angaben, in der #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# niedergelegt sind, ohne Aus­ +tausch einer Softwarekomponente die Netzhardware wechseln. Es gibt auch die +Möglichkeit, durch verschiedene Netzmodi unterschiedliche Treiber an ein und das­ +selbe Netz anzuschließen. Beispielsweise gibt es für einige Rechnertypen Steckkarten, +mit denen der Rechner an das Ethernet angeschlossen werden kann. Man kann, +wenn diese Karten angepaßt sind, den #ib#Ethernet#ie#-Zugang über verschiedene Netz­ +anschlußkarten realisieren. + +Das Netz-Hardware-Interface muß folgende Aufgaben übernehmen: + + Bei der Ausgabe an den Treiber: + + - Generieren und Ausgeben des #ib#Paket#ie#headers, + - Umsetzen von logischen Stationsadressen (#ib#Stationsnummer#ie#n) in phy­ + sische #ib#Adresse#ie#n, + - Ausgeben der Daten (EUMEL-Netz-#ib#Telegramm#ie#e), + - Generieren und Ausgeben des Trailers und evtl. Auffüllen des Pakets mit + #ib#Füllzeichen#ie#, falls auf dem Netz eine Mindestlänge für Pakete gefordert + wird. + + Bei der Eingabe vom Treiber: + + - Weglesen von #ib#Füllzeichen#ie#, + - Prüfen der #ib#Adresse#ie#n, + - Weglesen von #ib#Paket#ie#teilen, die in der EUMEL-Netz-Software nicht + gebraucht werden. + + Weiterhin können Funktionen wie + + - Reset des Treibers, + - Prüfung, ob Stationsadresse und #ib#Adresse#ie# im Treiber übereinstimmen, + - Statistik und Service + + durch das Netz-Hardware-Interface übernommen werden. + +Dazu wird ein Satz von Prozeduren über die #ib#DEFINES#ie#-#ib#Schnittstelle#ie# des Netz- +Hardware-Interfaces zur Verfügung gestellt. Wenn neue Treiber oder Netzarten +implementiert werden sollen, so muß an diesem Interface nichts geändert werden. Die +herausgereichten Prozeduren realisieren #ib#Sprungleisten#ie# (#ib#SELECT#ie#-Statements), über +die durch Erweiterung (#ib#CASE#ie#) die Prozeduren erreicht werden können, die den ent­ +sprechenden #ib#Netzmodus#ie# realisieren. Außerdem werden Informationsprozeduren für die +darüberliegenden Programmteile zur Verfügung gestellt. +#page# + +3.3. Netztreiber + + #goalpage("3.3")# +Unter #ib#Netztreiber#ie#n versteht man die Einheiten, die den Anschluß des Rechners an ein +Netz realisieren. Das können #ib#Netzbox#ie#en sein, die mit dem Rechner über eine #ib#V.24#ie#- +Leitung verbunden sind, aber auch Anschlußkarten, die direkt auf den Datenbus des +Rechners gehen. Falls die #ib#Schnittstelle#ie# der Treiber-Hardware eine andere als die +serielle #ib#V.24#ie# ist, muß in der Regel eine Anpassung für die Hardware im #ib#SHard#ie# vorge­ +nommen werden. + +Falls der Treiber über eine serielle #ib#V.24#ie#-#ib#Schnittstelle#ie# mit dem Rechner verbunden +ist, wie das auch bei der direkten Kopplung oder dem Datenboxennetz der Fall ist, +wird die hohe #ib#Übertragungsgeschwindigkeit#ie# auf dem eigentlichen Netz durch die +relativ geringe Übertragungsgeschwindigkeit auf der #ib#V.24#ie#-#ib#Schnittstelle#ie# zwischen +Rechner und Treiber (Box) gebremst. Über andere Schnittstellen im Rechner, wenn +sie mit #ib#Stream I/O#ie# [7] betrieben werden, kann man dies vermeiden. Diese Schnitt­ +stellen müssen vom SHard bedient werden. + +Wenn in den Rechner integrierte Netztreiber (Netzanschlußkarten) benutzt werden +sollen, so muß in der Regel die Behandlung dieser Netzanschlußkarte im SHard +durchgeführt werden. + +Um effizient implementieren zu können, sollte darauf geachtet werden, daß möglichst +wenig zusätzliche #ib#Zeichen#ie# von der #ib#Netzsoftware#ie# bzw. dem Netz-Hardware-Inter­ +face bearbeitet werden müssen. Das Auffüllen von Paketen auf eine Mindestlänge +sollte möglichst vom Treiber gemacht werden, ebenso wie das Weglesen dieser +Zeichen. + +Um einen sicheren und effektiven Netzbetrieb zu garantieren, sollten die Treiber +folgende Eigenschaften haben: + + - Die #ib#Stationsadresse#ie# ist im Treiber festgelegt, sie soll nicht ohne weiteres + verändert werden können (Datenschutz). + - Der Treiber reicht nur #ib#Paket#ie#e mit richtiger #ib#Zieladresse#ie#, keine #ib#Broad- oder + Multicasts#ie# an die Netzsoftware weiter. + - Der Treiber sendet nur #ib#Paket#ie#e mit richtiger #ib#Absenderadresse#ie# bzw. setzt die + Absenderadresse selbst ein. + - Die am Treiber eingestellte #ib#Adresse#ie# kann abgefragt werden, oder es wird, + wenn ein Paket mit falscher #ib#Absenderadresse#ie# vom Rechner kommt, eine + #ib#Fehlermeldung#ie# an den Rechner gegeben. Die Fehlermeldung muß durch das + Netz-Hardware-Interface in den #on("b")##ib#report#ie##off("b")# eingetragen werden. + - Falls Pakete mit #ib#Füllzeichen#ie# aufgefüllt werden müssen, sollten die Füll­ + zeichen durch den Treiber generiert und beim Empfang wieder entfernt + werden. + - Falls mehrere Betriebsmodi möglich sind, so sollten sie softwaremäßig + einstellbar sein. + - Falls die Treiber über eine serielle #ib#Schnittstelle#ie# an den Rechner angeschlos­ + sen werden, so sollte der Treiber konfigurierbar sein. In jedem Fall sollte die + serielle Schnittstelle mit #ib#Flußkontrolle#ie# (#ib#RTS/CTS#ie#) implementiert werden. + +Zusätzlich ist ein Transparent-Modus als #ib#Netzmodus#ie# von Vorteil: + + - Der Modus (transparent) kann zu Testzwecken benutzt werden. Beispiels­ + weise um auch mit Rechnern kommunizieren zu können, die über Netz + erreichbar sind, aber kein EUMEL-Netz-#ib#Protokoll#ie# benutzen. + + Modus n: transparent. + + Ausgabeseitig: Das #ib#Paket#ie# wird unverändert ausgegeben. + #ib#Adresse#ie#n usw. müssen schon im Paket vor­ + handen sein. Es wird nicht mit #ib#Füllzeichen#ie# + aufgefüllt. + Eingabeseitig: Das Paket wird unverändert an die Netzsoft­ + ware weitergegeben. + +#page# + +3.4. Prozedurschnittstelle + des EUMEL-Netzes + + + + + + #goalpage("3.4")# +Im PACKET #on("b")##ib#net hardware interface#ie##off("b")# sind folgende Prozeduren untergebracht: + + + + BOOL PROC #ib#blockin#ie# + (DATASPACE VAR ds, INT CONST seite, abstand, länge): + + Versucht, #on("b")#länge#off("b")# Zeichen vom #ib#Kanal#ie# einzulesen. Liefert TRUE, wenn alle + Zeichen eingelesen wurden, FALSE, wenn innerhalb einer bestimmten + Zeit nicht alle #on("b")#länge#off("b")# Zeichen eingelesen werden konnten (z.B. weil der + Kanal nicht mehr Zeichen anliefert). Die eingelesenen Zeichen werden im + #ib#Datenraum#ie# #on("b")#ds#off("b")# in #ib#Seite#ie# #on("b")#seite#off("b")# ab #on("b")#abstand#off("b")# bis #on("b")#abstand#off("b")# + #on("b")#länge#off("b")# - 1 abge­ + legt. + + #ib#Fehlerfall#ie#: + + #on("b")#blockin Abbruch#off("b")# + + Es werden weniger #ib#Zeichen#ie# innerhalb einer festgelegten Zeitspanne über + den Kanal angeliefert, als mit #on("b")#länge#off("b")# gefordert. + + Passiert z.B., wenn die Kabel während einer Netzübertragung unter­ + brochen werden, oder wenn die Gegenstelle abgeschaltet wird. Das + #ib#Telegramm#ie# wird vernichtet, die Prozedur liefert FALSE, es wird eine + entsprechende Meldung im #on("b")##ib#report#ie##off("b")# erzeugt. + + PROC #ib#blockout#ie# + (DATASPACE CONST ds, INT CONST seite, abstand, länge): + + Der Inhalt von Seite #on("b")#seite#off("b")# des #ib#Datenraum#ie#s #on("b")#ds#off("b")# wird von #on("b")#abstand#off("b")# bis + #on("b")#abstand#off("b")# + #on("b")#länge#off("b")# - 1 ausgegeben. +#page# + PROC #ib#set net mode#ie# (INT CONST mode): + + Es wird der #ib#Netzmodus#ie# #on("b")#mode#off("b")# eingestellt. Im Netz-Hardware-Interface + müssen alle Initialisierungen und Einstellungen vorgenommen werden, + damit die mit #on("b")#mode#off("b")# geforderte #ib#Netzhardware#ie# unterstützt wird. Diese + Prozedur wird bei jedem #on("b")##ib#start#ie##off("b")#-Kommando in der Netztask aufgerufen. + Kann als Initialisierungsprozedur für dieses PACKET verwendet werden. + Übergibt den in der #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# für diesen #ib#Kanal#ie# verlangten Netzmodus an + das Netz-Hardware-Interface. Nach Aufruf dieser Prozedur müssen die + wertliefernden Prozeduren #on("b")##ib#net mode#ie#, #ib#mode text#ie#, #ib#data length#ie##off("b")# und #on("b")##ib#data + length via node#ie##off("b")# korrekt initialisiert sein. Der Aufruf von #on("b")##ib#net addess#ie##off("b")# muß + die korrekten (physikalischen) #ib#Adresse#ie# der #ib#Station#ie#en liefern. + + TEXT PROC net address (INT CONST stationsnummer): + + Liefert die (Hardware-) Netz-#ib#Adresse#ie#, über die der EUMEL-Rechner + mit der Stationsnummer #on("b")##ib#stationsnummer#ie##off("b")# beim aktuell für diesen Kanal + eingestellten #ib#Netzmodus#ie# erreichbar ist. Auf diese #ib#Adresse#ie# muß der Treiber + des entsprechenden Rechners eingestellt sein. Auch die eigene Netz- + Adresse muß mit der im Treiber eingestellten #ib#Adresse#ie# übereinstimmen. + Insbesondere müssen alle Stationen, die auf dem Netz arbeiten, dieselbe + Netz-Adresse für eine #ib#Stationsnummer#ie# errechnen. + + TEXT PROC #ib#mode text#ie#: + + Liefert den Text (Namen) des eingestellten #ib#Netzmodus#ie#. Wird in #on("b")##ib#net + manager#ie##off("b")# benutzt, um den Netzmodus im #on("b")##ib#report#ie##off("b")# anzugeben. + + TEXT PROC mode text (INT CONST mode): + + Liefert den Text (Namen) zu dem #ib#Netzmodus#ie# #on("b")#mode#off("b")#. + + INT PROC #ib#data length#ie# (INT CONST mode): + + Liefert die #ib#Nutzdatenlänge#ie# (#ib#Länge#ie# der Nettodaten des Eumel- + Telegramms) im Netz. Wird von #on("b")##ib#basic net#ie##off("b")# beim Neustart aufgerufen. Muß + in einem Netz auf allen Stationen eines #ib#Strang#ie#s denselben Wert liefern. + + Erlaubte Werte: 64, 128, 256 und 512. +#page# + INT CONST #ib#data length via node#ie#: + + Liefert die #ib#Nutzdatenlänge#ie# für Sendungen, die über #ib#Knoten#ie# gehen. + Muß auf allen Stationen des Netzes gleich sein. + + Erlaubte Werte: 64, 128, 256 und 512. + + PROC #ib#decode packet length#ie# (INT VAR value): + + Die #ib#Länge#ie# eines Netztelegramms ist im #ib#Telegramm#ie# codiert enthalten. Mit + dieser Prozedur wird aus dem Telegrammkopf die Telegrammlänge ermit­ + telt: + + Falls beim Aufruf dieser Prozedur in #on("b")#value#off("b")# der Wert des Feldes #on("b")#head#off("b")# aus + der Struktur #on("b")#vorspann#off("b")#, die in #on("b")#ds#off("b")# per #on("b")##ib#transmit header#ie##off("b")# übergeben wurde, + enthalten ist, so wird in #on("b")#value#off("b")# die Länge des EUMEL-Netztelegramms + zurückgeliefert. + + PROC #ib#flush buffers#ie#: + + Liest den Eingabepuffer des #ib#Netzkanal#ie#s leer. Die eingelesenen Zeichen + werden vernichtet. Wird nach Erkennen von #ib#Übertragungsfehler#ie#n aufge­ + rufen. + + TEXT PROC #ib#next packet start#ie#: + + Liefert genau ein #ib#Zeichen#ie# (in der Regel das erste Zeichen des EUMEL- + Netztelegramms). Wird von der Netzsoftware immer dann aufgerufen, + wenn ein neues #ib#Paket#ie# erwartet wird. + + Bedeutung des gelieferten Zeichens für die #ib#Netzsoftware#ie#: + + #ib#STX#ie#: korrekter #ib#Telegrammanfang#ie# (ist das erste Zeichen des + EUMEL-Netztelegramms). Der Rest des EUMEL-Netztele­ + gramms steht im Eingabepuffer, ist also über #ib#blockin#ie# lesbar. + Vorher wurden nur Zeichen eingelesen, die zum verwendeten + #ib#Netzprotokoll#ie# gehören (z.B. #ib#Ethernet#ie#-#ib#Adresse#ie#n, #ib#Füllzeichen#ie# + usw.). + niltext: kein neues Telegramm da + + jedes andere Zeichen: + Fehler. Entweder wurden Störzeichen eingelesen oder es + gingen Zeichen verloren. #ib#Fehlerbehandlung#ie# erfolgt durch die + Netzsoftware. +#page# + PROC #ib#transmit header#ie# (DATASPACE CONST ds): + + Wird vor Ausgabe eines jeden #ib#Telegramm#ie#s aufgerufen. In dem #ib#Datenraum#ie# + #on("b")#ds#off("b")# wird von der EUMEL-Netz-Software der #on("b")##ib#Vorspann#ie##off("b")# übergeben. Über + den jeweiligs eingestellten #ib#Netzmodus#ie# kann für jede implementierte Netz­ + art über eine #ib#Sprungleiste#ie# (#ib#SELECT#ie#) die Prozedur angesprungen werden, + die den #ib#Header#ie# für den eingestellten Netzmodus erstellt und ausgibt. + Struktur des von der EUMEL-Netz-Software benutzten Headers: + + BOUND STRUCT + (INT head, + zwischenziel, + zielrechner, + quellrechner, + strom, + sequenz, + seitennummer ) VAR vorspann. + + Aus dem Inhalt des Feldes #on("b")#head#off("b")# kann mittels #on("b")##ib#decode packet length#ie##off("b")# die + Gesamtlänge des EUMEL-Netztelegramms errechnet werden. + + PROC #ib#transmit trailer#ie#: + + Wird nach Ausgabe eines jeden Telegramms aufgerufen. Evtl. notwendige + Nachspänne können ausgegeben werden. Die notwenigen Informationen + wurden in #on("b")##ib#transmit header#ie##off("b")# übergeben und müssen aufbewahrt werden, + falls sie im Trailer mitgeliefert werden müssen. Kann auch dazu benutzt + werden, den unter diesem Packet liegenden Schichten (#ib#SHard#ie# oder Hard­ + ware) das Ende des Telegramms mitzuteilen. Notwendige #ib#Füllzeichen#ie# + können in dieser Prozedur in das #ib#Paket#ie# eingebaut werden. + + PROC #ib#reset box#ie# (INT CONST net mode): + + Kann zur Initialisierung der #ib#Netzhardware#ie# benutzt werden. Wird von #on("b")##ib#basic + net#ie##off("b")# beim jedem Neustart aufgerufen. + + INT PROC #ib#max mode#ie#: + + Liefert den Wert des größten erlaubten (implementierten) #ib#Netzmodus#ie#. + + INT PROC #ib#net mode#ie#: + + Liefert den eingestellten Netzmodus. +#page# +#pagenr ("%", 45)##setcount (1)##block##pageblock##count per page# +#headeven# +#center#EUMEL Netzbeschreibung +#center#____________________________________________________________ + +#end# +#headodd# +#center#Anhang +#center#____________________________________________________________ + +#end# +#bottomeven# +#center#____________________________________________________________ +Netz - % #right#GMD +#end# +#bottomodd# +#center#____________________________________________________________ +GMD #right#Netz - % +#end# +#clear pos##lpos(1.0)##rpos(9.5)##goalpage("A")# + +Anhang: Netz-Meldungen#goalpage("A.1")# + +Mit dem Kommando #on("b")##ib#list#ie# (/"net list")#off("b")# (siehe Teil 1) erhalten Sie eine temporäre #ib#Datei#ie# +auf den Bildschirm. Diese Datei könnte ungefähr so aussehen: + +____________________________________________________________________________ + + N e u e r S t a r t 12:44 Stationsnummer : 38 + 01.06.87 12:55 net port 8:20:Nicht zustellbar. . Empfänger: "net dok". Quelle 34 Taskindex: 255 + 02.06.87 06:30 net port 8:1:wdh data. sqnr 7. Absender: "net dok". Ziel 34 Taskindex: 255 + 02.06.87 07:03 net port:20:Sequenzfehler: soll 13 ist 14. Empfänger: "POST". Quelle 33 Taskindex: + 02.06.87 07:03 net port:blockin abbruch + 02.06.87 07:03 net port:20:Sequenzreset von 13 auf 10. Empfänger: "POST". Quelle 33 Taskindex: 29 + 02.06.87 07:36 net port:Call gelöscht."net dok". Strom 1 + 02.06.87 07:43 net port 8:verbotene Route: 34 + 02.06.87 07:50 net port:Header inkorret eingelesen: %0 %2 + 02.06.87 07:50 net port:buffers flushed + 02.06.87 07:52 net port:Weiterleitung nicht möglich für 34 + 02.06.87 07:53 net port 8:skipped0 6 G O 1 0 . 0 %13 %10 2 8 0 6 0 6 G O 1 0 . 0 %13 %10 2 8 0 + 02.06.87 08:14 net port 8:skipped%13 %10 S p e c . R e c e i v e E r r o r C 2 + 02.06.87 08:21 net port:20:Reopen. Empfänger: "WÜFE". Quelle 40 Taskindex: 22 + 02.06.87 09:25 net port:1:etwas rueckgespult. Absender: "-". Ziel 33 Taskindex: 51 + 02.06.87 09:25 net port:1:wdh data. sqnr 20. Absender: "-". Ziel 33 Taskindex: 51 + 02.06.87 09:54 net port:20:Blocknummer falsch, neu: 192, alt : -1. Empfänger: "WÜFE". Quelle 44 + 02.06.87 10:12 net port:Daten ohne Eroeffnung von 40 Sequenznr 7 + 02.06.87 10:23 net port:Header inkorret eingelesen: O X 0 3 8 B O X 0 4 4 E U %2 + 02.06.87 10:23 net port:buffers flushed + 02.06.87 10:49 net port:1:wdh open. Absender: "-". Ziel 33 Taskindex: 255 + 02.06.87 10:49 net port:2:wdh open. Absender: "net dok". Ziel 33 Taskindex: 255 + 02.06.87 10:53 net port:1:Sequenzfehler: soll 2 ist 3. Empfänger: "net dok". Quelle 33 Taskindex: + 02.06.87 10:54 net port:1:Sequenzreset von 8 auf 5. Empfänger: "net dok". Quelle 33 Taskindex: 11 + 02.06.87 10:56 net port:2:etwas rueckgespult. Absender: "-". Ziel 33 Taskindex: 51 + bekannte Stationen: + 1(8,1) 2(8,2) 3(8,3) 4(8,4) 5(8,5) 6(8,6) 7(8,7) 8(8,8) 9(8,9) 10(8,10) + 11(8,11) 12(8,12) 13(8,13) 14(8,14) 15(8,15) 16(8,16) 17(8,17) 18(8,18) + 19(8,19) 20(8,20) 21(8,21) 22(8,22) 23(8,23) 24(8,24) 25(8,25) 26(8,26) + 27(8,27) 28(8,28) 29(8,29) 30(8,30) 31(8,31) 32(8,32) 33(9,33) 34(8,34) + 35(9,35) 36(9,36) 37(9,37) 39(9,39) 40(9,40) 41(9,41) 42(9,42) 43(9,43) + 44(9,44) 45(9,45) 46(9,46) 47(9,47) 48(9,48) + -------- + Eingestellte Netzmodi: + net port 8 haengt an Kanal 8, Modus: (1) EUMEL-Netz 64 Byte + net port haengt an Kanal 9, MODUS: (11) ETHERNET via V.24 512 Byte + + Nutzdatenlänge 512 Byte + Nutzdatenlänge bei indirekter Verbindung: 64 Byte + ******** + Netz-Software vom 23.05.87 + Rechner 38 um 11:11 + net port 8 + + Strom 1 (sqnr7/8) sendet an 34 . Absender ist "net dok". + net port + + Strom 1 (sqnr45/45) empfaengt von 40 . Empfaenger ist "PUBLIC". + +____________________________________________________________________________ +#page# +Die Datei enthält den aktuellen #on("b")##ib#report#ie##off("b")#, in dem #ib#Fehlermeldung#ie#en der einzelnen Tasks +gesammelt werden. Außerdem wird der Zustand aller Verbindungen (Ströme) von allen +#on("b")##ib#net port#ie##off("b")#'s angezeigt. Im #on("b")#report#off("b")#-Teil kann man drei Informationsblöcke unterscheiden: + +a) den Block mit den Fehlermeldungen. Es werden jeweils Datum, Uhrzeit, der Name + des betroffenen #on("b")#net port#off("b")# und, wenn notwendig, die #ib#Stromnummer#ie# angegeben. + Darauf folgt der Meldungstext, der auch Informationen über Absender und Emp­ + fänger enthalten kann. + + : [<#ib#Stromnummer#ie#> : ] + + +b) den Block mit der Liste der bekannten #ib#Station#ie#en. Ein Eintrag in dieser Liste ent­ + hält jeweils die Stationsnummer der bekannten Station und in Klammern dahin­ + ter die Nummer des Kanals auf diesem Rechner, über den die Station erreichbar + ist und die Nummer der nächsten #ib#Zwischenstation#ie#. + + (,) + + Bei direkt erreichbaren Stationen ist Zwischenstation gleich #ib#Zielstation#ie#. + + Hinweis: Auch #ib#gesperrt#ie#e Stationen erscheinen in dieser Liste. + + +c) den Block, der Auskunft über die Netzinstallation gibt. Es werden für jeden Netz­ + kanal die eingestellten Netzmodi angegeben. Des weiteren werden die beiden + Größen #on("b")##ib#data length#ie##off("b")# (#ib#Nutzdatenlänge#ie#) und #on("b")##ib#data length via node#ie##off("b")# (Nutzdatenlänge bei + indirekter Verbindung) angegeben. Zusätzlich erscheinen noch die #ib#Netzversion#ie# und + die genaue Uhrzeit, zu der dieser #on("b")#report#off("b")# erstellt wurde. + +#page# +Für jeden #on("b")##ib#net port#ie##off("b")# wird pro aktivem #ib#Strom#ie# folgende Meldung generiert: + +Strom (sqnr/) + + + #ib#Stromnummer#ie# + + #ib#Sequenznummer#ie# des gerade bearbeiteten #ib#Telegramm#ie#s + + Bei #ib#Sendeströme#ie#n die Nummer der letzten zu übertragenden + #ib#Sequenz#ie#, bei Empfangsströmen in der Regel die Nummer der + letzten Sequenz der gerade übertragenen #ib#Datenraumseite#ie#. + +<#ib#Zustand#ie#> Hier wird die Aktion (senden, empfangen usw.) und die Partner­ + station angegeben. + +<#ib#Partner#ie#> Der Name der Task mit der kommuniziert wird. + + +Die Meldungen, die in der #ib#Datei#ie# #on("b")##ib#report#ie##off("b")# protokolliert werden, kann man in verschiedene +Gruppen einordnen. Die eine Gruppe beschreibt Störungen durch #ib#Zeichenverluste#ie# +oder ­verfälschungen, eine andere Gruppe protokolliert besondere Situationen, bei­ +spielsweise den Abbruch von #ib#Übertragung#ie#en, und die letzte Gruppe befasst sich mit +#ib#Fehlermeldung#ie#en, die ein Eingreifen von aussen notwendig machen. Je nachdem, ob +die Station, auf der die Meldung protokolliert wird, Empfänger oder Absender ist, wird +bei den Meldungen #ib#Stationsnummer#ie# und Taskname des Kommunikationspartners mit +angegeben. + +Zur ersten Gruppe gehören: + +#ib(4)##ib#skipped#ie##ie(4)# + 'skipped' oder skipped mit einem Zusatztext erscheint, wenn Zei­ + chen eingelesen wurden, die zu keinem gültigen #ib#Telegramm#ie# ge­ + hören. Dies kann passieren, wenn auf der Leitung zwischen + Rechner und Box #ib#Zeichen#ie# verlorengegangen sind. Auch nach dem + Einschalten oder nach einem Reset auf Box oder Rechner kann + diese Meldung kommen. Mindestens ein Teil der eingelesenen + Daten wird mit ausgegeben, wobei Steuerzeichen durch % und den + Code des Steuerzeichens dargestellt werden. Die einzelnen Zeichen + werden durch ein Blank voneinander getrennt. +#page# +#ib(4)##ib#Sequenzfehler#ie##ie(4)# + Die #ib#Sequenznummer#ie# ist zu groß, es fehlen also Telegramme. Die + Gegenstation wird aufgefordert, ab einem früheren Telegramm zu + wiederholen. + +#ib(4)#wdh data#ie(4)# + Das letzte Telegramm wird erneut geschickt. Passiert, wenn die + #ib#Quittung#ie# für dieses Telegramm nach einer bestimmten Zeit nicht + angekommen ist. + +#ib(4)##ib#Sequenzreset#ie##ie(4)# + Die #ib#Sequenznummer#ie# des empfangenen Telegramms ist kleiner als + die Sequenznummer des vorher empfangenen Telegramms. Die + Verbindung wird bei der zuletzt empfangenen Sequenznummer + fortgesetzt. + +#ib(4)#Blocknummer falsch#ie(4)# + Die #ib#Seitennummer#ie# in dem #ib#Telegramm#ie# ist falsch. + +#ib(4)#etwas rueckgespult#ie(4)# + Auf Anforderung der Gegenseite werden die letzten drei #ib#Datenraum­ + seite#ie#n erneut übertragen. + +#ib(4)#Daten ohne Eroeffnung#ie(4)# + Es werden Telegramme mit einer #ib#Stromnummer#ie# empfangen, zu der + vorher kein OPEN-Telegramm empfangen wurde. In diesem Fall + wird die Gegenstation aufgefordert, die #ib#Übertragung#ie# von vorn zu + beginnen. Diese Meldung kann auch kommen, wenn das Netz neu + gestartet wurde. + +#ib(4)#wdh open#ie(4)# + Die Übertragung wird mit dem #ib#OPEN#ie#-Telegramm von vorn begon­ + nen. Passiert auf Aufforderung durch die Gegenstation oder wenn + das erste OPEN-Telegramm nicht quittiert wurde. + +#ib(4)##ib#buffers flushed#ie##ie(4)# + Alle bereits eingelesenen, aber noch nicht bearbeiteten Zeichen + wurden gelöscht (der #ib#Eingabepuffer#ie# wurde komplett gelöscht). Verur­ + sacht durch schwere Störungen (#ib#Zeichenverluste#ie# oder -verfäl­ + schungen). +#page# +#ib(4)#blockin abbruch#ie(4)# + Es wurden nicht alle Zeichen eines Telegramms innerhalb eines + bestimmten Zeitraums angeliefert. + +#ib(4)#Header inkorrekt eingelesen#ie(4)# + Es wurde ein Fehler in dem Teil des Netztelegramms gefunden, der + nicht zum EUMEL-Netz gehört. + +#ib(4)#Strom falsch in Quittung#ie(4)#: + In der #ib#Quittung#ie# wurde eine nicht zulässige #ib#Stromnummer#ie# festge­ + stellt. Zulässig sind Stromnummern zwischen 1 und 20. + +#ib(4)#Neustart#ie(4)# + Die Gegenstation hat die #ib#Verbindung#ie# von vorne begonnen. + +#ib(4)#Falsche Seitennummer#ie(4)# + Die #ib#Seitennummer#ie# in dem empfangenen Telegramm ist falsch. + Einige Telegramme werden wiederholt. + +#ib(4)#Absteigende Seitennummern#ie(4)# + Die Seitennummer in dem empfangenen Telegramm ist kleiner als + die Seitennummer im vorigen #ib#Telegramm#ie#. Es müssen einige Tele­ + gramme wiederholt werden. + + +Die folgenden Meldungen beschreiben Situationen, die nicht durch #ib#Zeichenverluste#ie# +entstehen, mit denen die #ib#Netzsoftware#ie# selbst fertig wird: + + +#ib(4)#Sendung von Gegenstelle gelöscht#ie(4)# + Die Verbindung wurde von der Gegenstelle abgebrochen. + +#ib(4)#Empfangseintrag freigegeben#ie(4)# + Die Verbindung wurde von der empfangenden #ib#Station#ie# gelöscht, weil + seit dem Eintreffen des letzten Telegramms zuviel Zeit vergangen ist + (#ib#Timeout#ie#). + +#ib(4)#Irrläufer#ie(4)# + Eine #ib#Intertaskkommunikation#ie# innerhalb der eigenen Station wurde + fälschlicherweise über den #on("b")##ib#Collector#ie##off("b")# abgewickelt. Dieser Vorgang + wird abgebrochen. +#page# +#ib(4)#Call-Löschung vorgemerkt#ie(4)# + Sobald der Call abgewickelt ist, wird diese Verbindung gelöscht. + Beispielsweise führt ein vom Benutzer abgebrochenes #on("b")##ib#name#ie##off("b")# zu + dieser Meldung. + +#ib(4)#Call gelöscht#ie(4)# + Die #ib#Verbindung#ie# wurde auf Anforderung durch den Auftraggeber + gelöscht. + +#ib(4)#Quellrechner#ie(4)# + Als #ib#Quellrechnernummer#ie# wurde ein unzulässiger Wert festgestellt. + Zulässig sind Zahlen zwischen 1 und 127. + +#ib(4)#Nicht zustellbar#ie(4)# + Innerhalb eines bestimmten Zeitraums war die #ib#Zieltask#ie# nicht emp­ + fangsbereit. Die Verbindung wird abgebrochen. + +Bei diesen Meldungen sollten die #ib#Routenanweisungen#ie# überprüft werden: + +#ib(4)#Verbotene Route bei Quittung#ie(4)# + Die #ib#Quittung#ie# kommt auf einer nicht erlaubten #ib#Route#ie# an. Dies kann + bei #ib#Vermaschung#ie# passieren, oder aber, wenn eine Station versucht, + sich für eine andere Station auszugeben. + +#ib(4)#Verbotene Route#ie(4)# + Die danach bezeichnete Station versucht, auf einer anderen Route + mit diesem Rechner zu kommunizieren, als auf der Route, die für + diesen Rechner in der Datei #on("b")##ib#netz#ie##off("b")# festgelegt wurde. + + Abhilfe: + #ib#Routentabellen#ie# der beiden (oder, falls die Meldung auf einer + #ib#Knotenstation#ie# erscheint, auf allen beteiligten) Stationen abgleichen. + +#ib(4)#Weiterleitung nicht möglich#ie(4)# + Die #ib#Routeninformationen#ie# auf dem #ib#Knotenrechner#ie#, wo diese Meldung + erscheint, und der sendenden #ib#Station#ie# stimmen nicht überein. Die + angegebene Station ist von dieser Station aus nicht erreichbar. + + Abhilfe: + #ib#Routentabellen#ie# der Stationen überprüfen. + +#ib(4)#Fremdzugriff#ie(4)# + Eine #ib#gesperrt#ie#e Station hat versucht, auf diesen Rechner mit #ib#Sende­ + codes#ie# > 6 zuzugreifen. + + +Folgende Meldungen betreffen '#ib#harte Fehler#ie#'. Diese Fehler werden von der Netzsoft­ +ware nicht abgefangen. In jedem Fall muß das Netz nach einer solchen #ib#Fehler­ +meldung#ie# neu gestartet werden. + +#ib(4)#++++++#ie(4)# + Meldungen dieser Form sind 'harte' Fehler. Der aufgetretene Fehler + wird mit angegeben. Das Netz muß neu gestartet werden, da die + Task, in welcher der Fehler aufgetreten ist, gelöscht wird. + +#ib(4)#Verbindungsengpaß#ie(4)# + Es sind mehr Verbindungen festgestellt worden, als zulässig sind. + Nach dieser Meldung wurde der entsprechende Netport gelöscht. + + +Literaturverzeichnis + + +#goalpage("A.2")# + +#clear pos# +#lpos(1.0)##lpos(2.5)# +#table# +[1] EUMEL-Systemhandbuch, Teil 5, Intertaskkommunikation + GMD St. Augustin, 1986 +[2] EUMEL-Systemhandbuch, Teil 2, Hardware und ihre Steuerung +[3] EUMEL-Systemhandbuch, Teil 8, Spooler +[4] EUMEL-Netz Installationsanweisung + GMD St. Augustin, 1987 +[5] EUMEL-Systemhandbuch, Teil 4, Blockorientierte Ein/Ausgabe +[6] EUMEL-Quellcode, Packet #on("b")#tasks#off("b")# + GMD St. Augustin, 1986 +[7] EUMEL-Portierungshandbuch 8086, Version 8 + GMD St. Augustin, 1987 + +#table end# + + diff --git a/doc/net/netzhandbuch.anhang b/doc/net/netzhandbuch.anhang new file mode 100644 index 0000000..17d1ece --- /dev/null +++ b/doc/net/netzhandbuch.anhang @@ -0,0 +1,58 @@ +#pagenr ("%", 51)##setcount##block##pageblock##count per page# +#headeven# +#center#EUMEL Netzbeschreibung +#center#____________________________________________________________ + +#end# +#headodd# +#center#Anhang +#center#____________________________________________________________ + +#end# +#bottomeven# +#center#____________________________________________________________ +Netz - % #right#GMD +#end# +#bottomodd# +#center#____________________________________________________________ +GMD #right#Netz - % +#end# +#clear pos##lpos(0.0)##rpos(11.0)##fillchar(".")# +Anhang: Netz-Fehlermeldungen + +#table# +++++++ 50 +Absteigende Seitennummern 48 +blockin abbruch 48 +Blocknummer falsch 47 +buffers flushed 47 +Call gelöscht 49 +Call-Löschung vorgemerkt 49 +Collectortask fehlt 8, 18 +Daten ohne Eroeffnung 47 +Empfangseintrag freigegeben 48 +etwas rueckgespult 47 +Falsche Seitennummer 48 +Fremdzugriff 50 +Header inkorrekt eingelesen 48 +Irrläufer 48 +kein Zugriff auf Station 14 +Neustart 48 +Nicht zustellbar 49 +Quellrechner 49 +Sendung von Gegenstelle gelöscht 48 +Sequenzfehler 47 +Sequenzreset 47 +skipped 46 +Station x antwortet nicht 8, 11, 16 +Station x gibt es nicht 9, 11, 13 +Strom falsch in Quittung 48 +Task "..." gibt es nicht 8 +Verbindungsengpaß 50 +Verbotene Route 49 +Verbotene Route bei Quittung 49 +wdh data 47 +wdh open 47 +Weiterleitung nicht möglich 49 +#table end# + diff --git a/doc/net/netzhandbuch.index b/doc/net/netzhandbuch.index new file mode 100644 index 0000000..01d8a0f --- /dev/null +++ b/doc/net/netzhandbuch.index @@ -0,0 +1,259 @@ +#pagenr ("%", 52)##setcount (1)##block##pageblock##count per page# +#headeven# +#center#EUMEL Netzbeschreibung +#center#____________________________________________________________ + +#end# +#headodd# +#center#Anhang +#center#____________________________________________________________ + +#end# +#bottomeven# +#center#____________________________________________________________ +Netz - % #right#GMD +#end# +#bottomodd# +#center#____________________________________________________________ +GMD #right#Netz - % +#end# +#clear pos##lpos(0.0)##rpos(11.0)##fillchar(".")# +Anhang: Index + +#table# +/ 8, 9, 24 +Absenderadresse 39 +Absenderstation 28, 32 +Adresse 29, 37, 39, 41, 42 +aktiviere netz 14, 15, 18 +basic net 41, 43 +Baud 6, 18, 25 +blockin 23, 36, 40, 42 +blockout 23, 36, 40 +Broad- oder Multicasts 38 +buffers flushed 47 +CASE 37 +CLOSE 27 +collected destination 22, 24 +Collector 22, 24, 32, 48 +Collectortask 8, 18, 22 +configurate 6 +continue 7, 21 +CRC-Code 26 +DATA 27, 29, 30 +data length 23, 36, 41, 45 +data length via node 23, 36, 41, 42, 45 +Datei 2, 5, 7, 12, 13, 14, 18, 20, 24, 31, 37, 41, 44, 46 +Datenbox 2, 6, 33 +Datenraum 13, 15, 21, 23, 24, 27, 28, 29, 31, 36, 40, 43 +Datenraumseite 23, 46, 47 +decode packet length 42, 43 +define collector 22, 24 +definere netz 15 +DEFINES 37 +define station 5, 22 +definiere netz 14 +Dreher 16 +Durchsatz 3 +Eingabeprozeduren 21 +Eingabepuffer 47 +Empfangspuffer 15 +Empfangsströme 13, 15 +endquelle 28 +endziel 28 +erase 13, 19 +erlaube 14 +Ethernet 33, 34, 36, 37, 42 +EUMEL0 21, 22, 24 +EUMEL-Datenboxen-Netz 33 +EUMEL-Netz-Software 35 +exists 11 +Fehler 8, 16, 17, 18 +Fehlerbehandlung 31, 36, 42 +Fehlerfälle 8 +Fehlerfall 11, 40 +Fehlermeldung 13, 15, 20, 26, 39, 45, 46, 50 +Fehlersituationen 12 +Fehlersuche 16 +Fenstertechnik 31 +fetch 10, 18 +flush buffers 36, 42 +Flußkontrolle 7, 15, 27, 39 +free global manager 10, 19, 31 +Füllzeichen 37, 39, 42, 43 +gesperrt 13, 14, 45, 50 +global manager 19, 31 +harte Fehler 50 +HDLC 31 +Header 43 +Höhere Ebenen 31 +inchar 21 +incharety 23 +Installation 2 +Installationsanleitung 2 +Intertaskkommunikation 48 +I/O Control 36 +I/O-Kanal 33 +Kanal 3, 6, 7, 12, 14, 15, 20, 21, 23, 24, 34, 37, 40, 41 +Kanalnummer 14 +Kanaltask 45 +Knoten 3, 4, 17, 20, 23, 36, 42 +Knotenkonzept 3, 34 +Knotenrechner 34, 36, 49 +Knotenstation 13, 14, 20, 49 +Kommunikation 17 +Kommunikationindirekte 23 +konfigurieren 6 +Länge 29, 41, 42 +Längenangabe 26 +list 10, 12, 17, 44 +listoption 12, 14, 15 +Löschversuche 13 +Manager 10, 19 +Masseschluß 16 +max mode 43 +mode text 41 +Nachbarn 4, 28 +Nachbarstation 24, 28 +name 11, 24, 49 +net 7, 12, 13 +net addess 41 +net hardware interface 34, 40 +net install 7 +net list 12, 15 +net manager 41 +net mode 41, 43 +net port 7, 8, 12, 13, 18, 45, 46 +net timer 14 +netz 7, 14, 15, 20, 37, 41, 49 +Netzbox 3, 6, 20, 33, 38 +Netzdefinition 14 +Netzebene 26 +Netzempfangstask 30 +Netzhardware 2, 17, 21, 24, 33, 34, 36, 41, 43 +Netz-Hardware-Interface 34 +Netzinstallation 17 +Netzkanal 13, 14, 42 +Netzknoten 3 +Netzkonfiguration 7, 20 +Netzmodus 34, 37, 39, 41, 43 +Netzprotokoll 42 +Netzsoftware 2, 3, 18, 20, 34, 36, 38, 42, 48 +Netzstrang 4, 17, 23 +Netztask 15, 16, 21, 24 +Netztelegramm 34 +Netztreiber 38 +Netzübertragungen 12 +Netzversion 2, 45 +next packet start 36, 42 +niltext 11, 36 +Nutzdaten 23 +Nutzdatenlänge 17, 23, 29, 36, 41, 42, 45 +Nutzinformation 29 +nutzlaenge 29 +OPEN 27, 28, 30, 47 +Paket 23, 34, 37, 38, 39, 42, 43 +Pakete, Aufbau der 34 +Partner 46 +Paßwort 19 +Pin-Belegung 6 +port intern 13, 15, 24 +Printerserver 20 +Protokoll 6, 13, 24, 39 +Protokollebenen 25 +Prüfsummen 18 +Quelle 23, 26, 28 +Quellrechnernummer 49 +Quellstationsnummer 20 +quelltask 21, 24, 28 +Querarchivierungen 10 +QUIT 27, 28, 30 +Quittung 30, 31, 47, 48, 49 +Rechnerkopplung 3 +Rendezvouskonzept 21, 31 +report 8, 12, 18, 39, 40, 41, 45, 46 +reserve 10 +RESET 17 +reset box 43 +Route 13, 15, 17, 20, 49 +routen 14 +Routenanweisungen 49 +routen aufbauen 13, 14, 15 +Routeninformationen 20, 49 +Routentabelle 9, 13 +Routentabellen 24, 49 +router 13 +RS422 25 +RTS/CTS 6, 25, 39 +Rückmeldeparameter 21 +run 13 +save 10, 19 +Schnittstelle 3, 15, 18, 20, 25, 33, 37, 38, 39 +SDLC 25, 26 +seite 28, 29, 40 +Seiten 27 +Seitengrenze 23 +Seitennummer 47, 48 +SELECT 34, 37, 43 +send 21, 22, 24, 27, 28, 30, 32 +Sendecode 24 +Sendecodes 50 +Sendeströme 13, 46 +Sendungskonzept 2 +sequenz 28, 29, 46 +Sequenzfehler 47 +Sequenznummer 46, 47 +Sequenzreset 47 +set net mode 41 +SHard 38, 43 +Sicherheitskonzept 19 +Sicherheitsprobleme 19 +skipped 46 +sperre 14 +Spoolmanager 5 +Sprungleiste 43 +Sprungleisten 34, 37 +start 5, 13, 16, 18, 41 +starte kanal 14, 15 +station 2, 5, 8, 10, 12, 13, 16, 19, 20, 22, 24, 26, 31, 32, 36, 41, 45, 48, 49 +Stationen, sicherheitsrelevante 20 +Stationsadresse 38 +Stationsnummer 5, 10, 16, 22, 24, 26, 32, 37, 41, 46 +Stationsnummer maximale 14 +Strang 3, 17, 20, 36, 41 +Stream I/O 23, 38 +strom 28, 30, 46 +Stromnummer 13, 28, 30, 45, 46, 47, 48 +STX 26, 36, 42 +Task-Id 5, 22, 24, 28, 30 +Telegramm 20, 23, 26, 27, 28, 31, 36, 37, 40, 42, 43, 46, 47, 48 +Telegrammanfang 42 +Telegrammformat 26 +Telegrammfreigabe 36 +Textdatei 31 +Timeout 31, 36, 48 +transmit header 36, 42, 43 +transmit trailer 36, 43 +Treiber 33 +Übertragung 26, 30, 46, 47 +Übertragungsfehler 42 +Übertragungsgeschwindigkeit 34, 38 +Übertragungsweg 23 +V24 3, 4, 15, 17, 18, 20, 25, 33, 34, 38 +Verbindung 3, 6, 16, 18, 27, 28, 34, 48, 49 +Vermaschung 4, 49 +Vermittlungsebene 24, 30 +Vorspann 36, 43 +wait 19, 21, 24, 27, 32 +Worker 5 +Zeichen 36, 38, 40, 42, 46 +Zeichenverluste 46, 47, 48 +Zeitüberwachung 26, 29 +ziel 28 +Zieladresse 38 +Zielstation 4, 8, 24, 28, 30, 36, 45 +Zieltask 21, 22, 24, 28, 32, 49 +Zustand 46 +Zwischenstation 45 +#table end# + diff --git a/dos/dos-dat-handbuch b/dos/dos-dat-handbuch deleted file mode 100644 index a1e4fd4..0000000 --- a/dos/dos-dat-handbuch +++ /dev/null @@ -1,650 +0,0 @@ -____________________________________________________________________________ - - -#on("b")##on ("u")# -#center#Betriebssystem E U M E L -#off ("u")# - - -#center#MS-DOS-DAT - - - - -#off("b")# -#center#Lizenzfreie Software der -#on ("b")# - -#center#Gesellschaft für Mathematik und Datenverarbeitung mbH, -#center#5205 Sankt Augustin - - -#off("b")# -#center#Die Nutzung der Software ist nur im Schul- und Hochschulbereich für -#center#nichtkommerzielle Zwecke gestattet. - -#center#Gewährleistung und Haftung werden ausgeschlossen - - -____________________________________________________________________________ -#page# -#free(4.5)# - -#center#Lesen und Schreiben -#center#von -#center#MS-DOS Dateien - -#on ("b")##center#MS-DOS-DAT#off ("b")# -#free(1.5)# - - -#center#Version 2.0 - -#center#Stand 10.09.87 -#page# -#pagenr ("%",1)##setcount (1)##block##pageblock##count per page# -#headeven# -% #center#MS-DOS-DAT -#center#____________________________________________________________ - -#end# -#headodd# -#center#MS-DOS-DAT#right#% -#center#____________________________________________________________ - -#end# -#on("bold")# -#ib#1. Allgemeines#ie# -#off ("b")# - -Dieses Programm ermöglicht MS-DOS Dateien vom EUMEL aus von Disketten zu -lesen und auf Disketten zu schreiben. Die Benutzerschnittstelle ist ähnlich der des -EUMEL-Archivs organisiert. Der Benutzer kommuniziert mit einer Task des -EUMEL-Systems, nämlich mit der Task 'DOS'. Diese wickelt dann über das Archiv­ -laufwerk die Diskettenzugriffe ab. Der Benutzer meldet die MS-DOS Diskette mit -'reserve ("...", /"DOS")' an und kann dann mit 'list (/"DOS")', 'fetch ("...", /"DOS")', -'save ("...", /"DOS")' und weiteren Kommandos auf die MS-DOS Diskette zugreifen. -Für das Schreiben und Lesen (save, fetch) stehen insgesamt 7 verschiedene Be­ -triebsarten zur Verfügung. Man kann in eine Datei im ASCII Code mit und ohne -Anpassung der Umlaute, im IBM-ASCII Code, im Atari-ST Code oder ganz ohne -Codeumsetzung lesen bzw. schreiben. Die Betriebsart selbst wird beim Anmelden der -MS-DOS Diskette durch den Textparameter des 'reserve'-Kommandos bestimmt. - -Die gleiche Benutzerschnittstelle gilt für die Kommunikation mit der Task 'DOS HD'. -Diese Task liest und schreibt aber nicht auf der Diskette, sondern in der MS-DOS -Partition der Festplatte (falls vorhanden). - - -#on("bold")# -#ib#2. Benutzeranleitung #ie# -#off ("b")# -Im Normalfall will man als Benutzer eine EUMEL-Textdatei auf eine MS-DOS -Diskette schreiben oder eine mit z.B. Word-Star erstellte MS-DOS-Textdatei in -das EUMEL-System einlesen (implementierte Formate siehe Abschnitt 3). - -Lesen einer MS-DOS-Datei: - -#linefeed (1.25)# -#on ("b")# - reserve ("file ascii german", /"DOS"); - (* MS-DOS-Diskette ins Laufwerk einlegen *) - fetch (filename, /"DOS"); - release (/"DOS") -#off ("b")# - -Schreiben einer MS-DOS-Datei: - -#on ("b")# - reserve ("file ascii german", /"DOS"); - (* MS-DOS-Diskette ins Laufwerk einlegen *) - save (filename, /"DOS"); - release (/"DOS") -#off("b")# -#linefeed (1.0)# - - -Sollen statt der Umlaute []{|}\ verwendet werden, so ist statt "file ascii german" "file -ascii" einzustellen. Eine genaue Beschreibung aller 7 möglichen Betriebsarten wird in -Abschnitt 6 gegeben. Der Dateiname 'file name' unterliegt den im Abschnitt 4 be­ -schriebenen Einschränkungen. - - -#on("bold")# -#ib#3. Implementierte Formate#ie# -#off("b")# - -Diese Hardware ermöglicht das Bearbeiten von MS-DOS Disketten mit Hilfe der -Task /"DOS" und (falls es sich um einen MS-DOS fähigen Rechner mit MS-DOS Parti­ -tion auf der Festplatte handelt) das Bearbeiten von Daten in der MS-DOS Partition -der Platte. - -#on("bold")# -#ib#3.1 Arbeiten mit der Task /"DOS"#ie# -#off ("b")# - -Die Task /"DOS" verwendet das Archivlaufwerk als MS-DOS Datenträger. Es sind -alle mit dem IBM-Format der DOS Version 2 und 3 kompatiblen Formate für 5.25 -Zoll und 3.5 Zoll Disketten implementiert, sofern diese 512 Byte große Sektoren -verwenden und im ersten Sektor einen erweiterten BIOS-Parameterblock (BPB) -enthalten (hierzu gehören auch mit dem Atari ST bearbeitete Disketten). Weiterhin -sind die beiden von IBM verwendeten Formate der DOS Version 1 implementiert (5.25 -Zoll, ein- bzw. zweiseitig, 40 Spuren a 8 Sektoren). - -Die einzige Hardwarevoraussetzung besteht darin, daß der Hardwareanpassungs­ -modul (SHard) alle von DOS benutzten Sektoren lesen und schreiben können muß. - -#on("bold")# -#ib#3.2 Arbeiten mit der Task /"DOS HD"#ie# -#off ("b")# - -Die Task /"DOS HD" verwendet die MS-DOS Partition der Festplatte als Daten­ -träger (falls eine solche vorhanden ist und das SHard diese ansprechen kann). Hier -gibt es keine Beschränkungen bezüglich des Plattentyps. - - -#on("bold")# -#ib#4. Dateibenennung#ie# -#off ("b")# - -Die Namen für MS-DOS Dateien unterliegen bestimmten Regeln. Ein Dateiname -kann aus -- einem bis acht Zeichen oder -- einem bis acht Zeichen gefolgt von einem Punkt und einer Namenserweiterung - von einem bis drei Zeichen -bestehen. - -Gültige Zeichen sind -- die Buchstaben A bis Z -- die Ziffern 0 bis 9 -- die Sonder- und Satzzeichen $ \# & § ! ( ) { } - -Da weitere Sonderzeichen in verschiedenen MS-DOS Versionen in unterschiedlich­ -em Umfang erlaubt sind, ist ihre Verwendung beim Schreiben (save) vom EUMEL aus -nicht zugelassen. Beim Lesen und Löschen dagegen sind sie erlaubt. - -Außerdem sind die Buchstaben a - z erlaubt. Diese werden beim Zugriff auf das -MS-DOS Inhaltsverzeichnis (Directory) in große Buchstaben konvertiert. Durch das -Kommando 'fetch ("Test", /"DOS")' wird also die MS-DOS Datei mit dem Namen -'TEST' in die EUMEL Datei mit dem Namen 'Test' gelesen; 'save ("test", /"DOS")' -überschreibt dann die MS-DOS-Datei 'TEST' (natürlich nach Anfrage). - - -#on("bold")# -#ib#5. Beschreibung der Kommandos#ie# -#off ("b")# - -In diesem Abschnitt steht der Begriff Dostask beim Arbeiten mit der Floppy für die -Task /"DOS" und beim Arbeiten mit der MS-DOS Partition der Platte für die Task -/"DOS HD". Analog steht der Begriff Dosbereich beim Arbeiten mit der Floppy für die -Floppy und beim Arbeiten mit der MS-DOS Partition der Platte für diese Partition. - -#on("bold")# -THESAURUS OP ALL (TASK CONST task) -#off ("b")# - Wird der 'ALL'-Operator für die Dostask aufgerufen, so wird ein Thesaurus ge­ - liefert. In diesem Thesaurus sind alle im Dosbereich vorhandenen Dateien einge­ - tragen. Die vorhandenen Unterinhaltsverzeichnisse (Subdirectories) werden nicht - eingetragen. - - -#on("bold")# -PROC check (TEXT CONST filename, TASK CONST task) -#off ("b")# - Durch Aufruf dieser Prozedur für die Dostask wird die Datei 'filename' im Dosbe­ - reich prüfgelesen. Es werden nur die mit Daten belegten Blöcke prüfgelesen. Sollen - auch der Einträge im Inhaltsverzeichnis überprüft werden, so erreicht man dies - durch vorheriges neues Anmelden mit der Prozedur 'reserve'. - - -#on("bold")# -PROC clear (TASK CONST task) -#off ("b")# - Durch Aufruf dieser Prozedur für die Task /"DOS" wird die gesamte Diskette ge­ - löscht. Mit dieser Prozedur können #on ("u")#nur MS-DOS formatierte Disketten#off ("u")# behandelt - werden. Soll eine Diskette dagegen für den Gebrauch unter MS-DOS initialisiert - werden, so ist sie auf einem MS-DOS-Rechner zu formatieren. - - Der Aufruf dieser Prozedur für die Task /DOS HD" ist aus Sicherheitsgründen nicht - erlaubt. - - -#on("bold")# -PROC erase (TEXT CONST filename, TASK CONST task) -#off ("b")# - Durch Aufruf dieser Prozedur für die Dostask wird die Datei 'filename' im Dosbe­ - reich gelöscht. - - -#on("bold")# -BOOL PROC exists (TEXT CONST name, TASK CONST task) -#off ("b")# - Wird diese Prozedur für die Dostask aufgerufen, so liefert sie 'TRUE', falls eine - Datei mit dem Namen 'name' im Dosbereich existiert. Andernfalls liefert sie - 'FALSE'. - - -#on("bold")# -PROC fetch (TEXT CONST filename, TASK CONST task) -#off ("b")# - Durch Aufruf dieser Prozedur für die Dostask wird die Datei 'filename' aus dem - Dosbereich gelesen. Hierbei wird in der beim Anmelden (reserve ("...", dostask)) - bestimmten Betriebsart gelesen (siehe Abschnitt 6). - - -#on("bold")# -PROC list (TASK CONST task) -#off ("b")# - Wird diese Prozedur für die Dostask aufgerufen, so werden alle Dateien des In­ - haltsverzeichnisses und alle Unterverzeichnisse des Dosbereichs aufgelistet. - - -#on("bold")# -PROC release (TASK CONST task) -#off ("b")# - Der Aufruf dieser Prozedur für die Task Dostask hebt deren Reservierung auf. - Gleichzeitig wird auch der für block i/o benutzte Kanal freigegeben, so daß bei - Benutzung der Task /"DOS" der Archivkanal durch das EUMEL-Archiv wieder - benutzt werden kann. - - Um möglichst effizient arbeiten zu können, werden Inhaltsverzeichnis und Ket­ - tungsblock des Dosbereichs als Kopie im EUMEL gehalten. Der hierdurch belegte - Speicher wird beim 'release' wieder freigegeben. Dies ist bei kleinen Systemen - besonders wichtig. - - -#on("bold")# -PROC reserve (TEXT CONST mode, TASK CONST task) -#off ("b")# - Durch Aufruf für die Dostask werden Operationen mit dem Dosbereich angemel­ - det. Gleichzeitig koppelt sich die Dostask an den entsprechenden Kanal an. - (/"DOS" an Kanal 31 und /"DOS HD" an Kanal 29). Die Anmeldung wird abge­ - lehnt, wenn der für die MS-DOS Operationen benötigte Kanal belegt ist (z.B. bei - Kanal 31 durch eine Archiv­Operation). Ähnlich wie beim EUMEL-Archiv bleibt - diese Reservierung bis 5 Minuten nach dem letzten Zugriff gültig. - - Wird beim Arbeiten mit der Task /"DOS" die MS-DOS Diskette gewechselt, so - muß erneut 'reserve ("...", /"DOS")' aufgerufen werden. Nur so ist gewährleistet, - daß das Inhaltsverzeichnis der neuen Diskette geladen wird. - - Der Text 'mode' gibt die Betriebsart für das Schreiben und Lesen der Diskette - sowie den Pfad für das Bearbeiten von Subdirectories an und nicht wie beim - EUMEL-Archiv den Diskettennamen. Es gilt folgende Systax: - - modus :[\directory][\directory]...[\directory] - - Hierbei sind die Angaben in eckigen Klammern optional. Wird kein Pfad angege­ - ben, so wird mit dem Hauptdirektory der Diskette gearbeitet. Ansonsten wird mit - dem Directory gearbeitet, welches durch den hinter dem Doppelpunkt angegeben - Pfad bezeichnet wird. Als 'modus' können alle in Abschnitt 6 beschriebenen Be­ - triebsarten verwendet werden. - - -#on("bold")# -PROC save (TEXT CONST filename, TASK CONST task) -#off ("b")# - Durch Aufruf dieser Prozedur für die Dostask wird die Datei 'filename' in den - Dosbereich geschrieben. Hierbei wird in der beim Anmelden (reserve ("...", - dostask)) bestimmten Betriebsart geschrieben (siehe Abschnitt 6). - - -#on("bold")# -#ib#6. Die Betriebsarten von 'fetch' und 'save'#ie# - -#ib#6.1 Betriebsart: file ascii#ie# - -#on("bold")# -fetch ("filename", dostask) -#off ("b")# - Die MS-DOS Datei 'filename' wird in die EUMEL-Datei 'filename' kopiert. Dabei - werden von allen Zeichen nur die niederwertigen 7 Bit gemäß DIN 66 003, ASCII - Code, internationale Referenzversion interpretiert. Die Datei wird so aufbereitet, daß - ein Bearbeiten mit dem EUMEL-Editor möglich ist. Dies geschieht folgenderma­ - ßen: - - Alle im EUMEL darstellbaren Zeichen werden auf diese abgebildet. - - Die Zeichenfolgen CR LF, LF CR, LF, CR (CR = carriage return, LF = line­ - feed) beenden einen Satz in der MS-DOS-Datei. Dementsprechend wird - eumelseitig die aktuelle Zeile beendet. - - Das Zeichen FF (form feed) beendet eumelseitig die aktuelle Zeile. Außerdem - wird ein Satz mit dem Inhalt "\#page\#" eingefügt. - - TAB's (Code 9) werden mit Blanks zur nächsten 8ter-Position expandiert. - - 'Ctrl z' in der MS-DOS Datei wird als Dateiende interpretiert. Fehlt dieses, - so wird bis zum letzten Zeichen des letzten Sektors der Datei gelesen. - - Alle anderen Zeichen mit 0 <= code (zeichen) <=  31 (Steuerzeichen) - werden durch eine Ersatzdarstellung dargestellt (der Code des Zeichens wird - als 3 stellige Dezimalzahl eingeschlossen von \#-Zeichen dargestellt). - - -#on("bold")# -save ("filename", dostask) -#off ("b")# - Die EUMEL-Datei 'filename' wird nach MS-DOS geschrieben. Unter MS-DOS - wird der ASCII Code, internationale Referenzversion gemäß DIN 66 003 verwendet. - Dies geschieht folgendermaßen: - - Die EUMEL-spezifischen Druckzeichen (Trenn -, Trenn k, Druck \#, ge­ - schütztes Blank) werden in -, k, \# und Blank umgesetzt. - - Alle in der internationalen Referenzversion des ASCII Codes vorhandenen - Eumel-Zeichen werden auf diese abgebildet. - - Alle in der internationalen Referenzversion des ASCII Codes nicht vorhande­ - nen Eumel-Zeichen werden durch eine Ersatzdarstellung dargestellt (der - Code des Zeichens wird als 3 stellige Dezimalzahl eingeschlossen von - \#-Zeichen dargestellt) - - Steht in einer Zeile nur das Kommando '\#page\#' so wird dieses in ein Sei­ - tenvorschubsteuerzeichen (""12"") umgewandelt. - - Eine dreistellige Dezimalzahl eingeschlossen von \# Zeichen wird als Ersatz­ - darstellung für das Zeichen mit dem durch die Dezimalzahl angegebenen - Code betrachte. Diese Ersatzdarstellung wird beim Schreiben aufgelöst (d.h. - durch das entsprechende Zeichen ersetzt). - - Nach jeder Zeile wird 'carriage return' und ' linefeed' angefügt - - Am Ende der Datei wird 'ctrl z' angehängt. - - -#on("bold")# -#ib#6.2 Betriebsart: file ascii german#ie# - -fetch ("filename", dostask) -#off ("b")# - Die MS-DOS Datei 'filename' wird in die EUMEL-Datei 'filename' kopiert. Dabei - werden von allen Zeichen nur die niederwertigen 7 Bit gemäß DIN 66 003, ASCII - Code, deutsche Referenzversion interpretiert. Die Datei wird so aufbereitet, daß ein - Bearbeiten mit dem EUMEL-Editor möglich ist. Dies geschieht wie in der Be­ - triebsart 'file ascii', jedoch stehen statt []{}|\ die Umlaute und ß zur Verfügung. - - -#on("bold")# -save ("filename", dostask) -#off ("b")# - Die EUMEL-Datei 'filename' wird nach MS-DOS geschrieben. Unter MS-DOS - wird der ASCII Code, deutsche Referenzversion gemäß DIN 66 003 verwendet. Dies - geschieht wie in der Betriebsart 'file ascii', jedoch stehen statt []{}|\ die Umlaute - zur Verfügung. - - -#on("bold")# -#ib#6.3 Betriebsart: file ibm#ie# - -fetch ("filename", dostask) -#off ("b")# - Die MS-DOS Datei 'filename' wird in die EUMEL-Datei 'filename' kopiert. Dabei - werden alle Zeichen wie in der von IBM verwendeten Version des ASCII Codes - interpretiert. Die Datei wird so aufbereitet, daß ein Bearbeiten mit dem EUMEL- - Editor möglich ist. Dies geschieht folgendermaßen: - - Alle im EUMEL darstellbaren Zeichen werden auf diese abgebildet. - - Die Zeichenfolgen CR LF, LF CR, LF, CR (CR = carriage return, LF = line­ - feed) beenden einen Satz in der MS-DOS-Datei. Dementsprechend wird - eumelseitig die aktuelle Zeile beendet. - - Das Zeichen FF (form feed) beendet eumelseitig die aktuelle Zeile. Außerdem - wird ein Satz mit dem Inhalt "\#page\#" eingefügt. - - TAB's (Code 9) werden mit Blanks zur nächsten 8ter-Position expandiert. - - Alle anderen Zeichen mit 0 <= code (zeichen) <=  31 (Steuerzeichen) - werden durch eine Ersatzdarstellung dargestellt (der Code des Zeichens wird - als 3 stellige Dezimalzahl eingeschlossen von \#-Zeichen dargestellt). - - -#on("bold")# -save ("filename", dostask) -#off ("b")# - Die EUMEL-Datei 'filename' wird nach MS-DOS geschrieben. Unter MS-DOS - wird der ASCII Code in der von IBM verwendeten Version verwendet. Dies ge­ - schieht folgendermaßen: - - Die EUMEL-spezifischen Druckzeichen (Trenn -, Trenn k, Druck \#, ge­ - schütztes Blank) werden in -, k, \# und Blank umgesetzt. - - Alle in der IBM Version des ASCII Codes vorhandenen Eumel-Zeichen - werden auf diese abgebildet. - - Alle in der IBM Version des ASCII Codes nicht vorhandenen Eumel-Zeichen - werden durch eine Ersatzdarstellung dargestellt (der Code des Zeichens wird - als 3 stellige Dezimalzahl eingeschlossen von \#-Zeichen dargestellt) - - Steht in einer Zeile nur das Kommando '\#page\#' so wird dieses in ein Sei­ - tenvorschubsteuerzeichen (""12"") umgewandelt. - - Eine dreistellige Dezimalzahl eingeschlossen von \# Zeichen wird als Ersatz­ - darstellung für das Zeichen mit dem durch die Dezimalzahl angegebenen - Code betrachte. Diese Ersatzdarstellung wird beim Schreiben aufgelöst (d.h. - durch das entsprechende Zeichen ersetzt). - - Nach jeder Zeile wird 'carriage return' und ' linefeed' angefügt - - -#on("bold")# -#ib#6.4 Betriebsart: file atari st#ie# - -fetch ("filename", dostask) -#off ("b")# - Die MS-DOS Datei 'filename' wird in die EUMEL-Datei 'filename' kopiert. Dabei - werden alle Zeichen wie in der vom Atari ST verwendeten Version des ASCII Codes - interpretiert. Die Datei wird so aufbereitet, daß ein Bearbeiten mit dem EUMEL- - Editor möglich ist. Dies geschieht folgendermaßen: - - Alle im EUMEL darstellbaren Zeichen werden auf diese abgebildet. - - Die Zeichenfolgen CR LF, LF CR, LF, CR (CR = carriage return, LF = line­ - feed) beenden einen Satz in der MS-DOS-Datei. Dementsprechend wird - eumelseitig die aktuelle Zeile beendet. - - Das Zeichen FF (form feed) beendet eumelseitig die aktuelle Zeile. Außerdem - wird ein Satz mit dem Inhalt "\#page\#" eingefügt. - - TAB's (Code 9) werden mit Blanks zur nächsten 8ter-Position expandiert. - - Alle anderen Zeichen mit 0 <= code (zeichen) <=  31 (Steuerzeichen) - werden durch eine Ersatzdarstellung dargestellt (der Code des Zeichens wird - als 3 stellige Dezimalzahl eingeschlossen von \#-Zeichen dargestellt). - - -#on("bold")# -save ("filename", dostask) -#off ("b")# - Die EUMEL-Datei 'filename' wird nach MS-DOS geschrieben. Unter MS-DOS - wird der ASCII Code in der vom Atari ST verwendeten Version verwendet. Dies - geschieht folgendermaßen: - - Die EUMEL-spezifischen Druckzeichen (Trenn -, Trenn k, Druck \#, ge­ - schütztes Blank) werden in -, k, \# und Blank umgesetzt. - - Alle in der vom Atari ST verwendeten Version des ASCII Codes vorhandenen - Eumel-Zeichen werden auf diese abgebildet. - - Alle in der vom Atari ST verwendeten Version des ASCII Codes nicht - vorhandenen Eumel-Zeichen werden durch eine Ersatzdarstellung dargestellt - (der Code des Zeichens wird als 3 stellige Dezimalzahl eingeschlossen von - \#-Zeichen dargestellt) - - Steht in einer Zeile nur das Kommando '\#page\#' so wird dieses in ein Sei­ - tenvorschubsteuerzeichen (""12"") umgewandelt. - - Eine dreistellige Dezimalzahl eingeschlossen von \# Zeichen wird als Ersatz­ - darstellung für das Zeichen mit dem durch die Dezimalzahl angegebenen - Code betrachte. Diese Ersatzdarstellung wird beim Schreiben aufgelöst (d.h. - durch das entsprechende Zeichen ersetzt). - - Nach jeder Zeile wird 'carriage return' und ' linefeed' angefügt - - -#on("bold")# -#ib#6.5 Betriebsart: file transparent#ie# - -fetch ("filename", dostask) -#off ("b")# - Die MS-DOS Datei 'filename' wird in die EUMEL-Datei 'filename' kopiert. Dabei - werden von allen Zeichen alle 8 Bit interpretiert. Es werden keine Zeichen einge­ - fügt, gelöscht oder gewandelt. Somit stehen dann auch CR und LF Zeichen in der - EUMEL-Datei. - - Da eine solche Datei noch Steuerzeichen enthält, ist beim Bearbeiten mit dem - Editor Vorsicht geboten. - - -#on("bold")# -save ("filename", dostask) -#off ("b")# - Die EUMEL-Datei 'filename' wird nach MS-DOS geschrieben. Es werden keine - Codeumsetzungen durchgeführt. Insbesondere muß die EUMEL-Datei auch die CR - LF Sequenzen für das Zeilenende enthalten. - - -#on("bold")# -#ib#6.6 Betriebsart: row text#ie# -#off ("b")# - -Diese Betriebsart ist nur für Programmierer interessant. Sie ist für die Umsetzung -exotischer Codes in den EUMEL-Code mittels ELAN-Programmen gedacht. - -#on("bold")# -fetch ("filename", dostask) -#off ("b")# - Die MS-DOS Datei 'filename' wird in einen Datenraum mit folgender Struktur - kopiert: - - STRUCT (INT benutzte texte, ROW 4000 TEXT datensatz) - - Dabei bekommt der Datenraum den Type 1000. Der Integer 'benutzte texte' gibt an, - wieviele Elemente des ROW 4000 TEXT benutzt sind. In jedem benutzten Element - des ROW 4000 TEXT steht der Inhalt einer logischen Gruppe der MS-DOS Disket­ - te. (Eine logische Gruppe umfaßt bei einer einseitig beschriebenen MS-DOS - Diskette 512 Byte und bei einer zweiseitig beschriebenen 1024 bzw. 2048 Byte). In - dieser Betriebsart werden keine Zeichen der MS-DOS Datei konvertiert oder - interpretiert, so daß also auch alle Steuerzeichen erhalten bleiben. - - -#on("bold")# -save ("filename", dostask) -#off ("b")# - Hier bezeichnet 'filename' einen Datenraum der Struktur: - - STRUCT (INT benutzte texte, ROW 4000 TEXT datensatz) - - Dieser Datenraum muß den Type 1000 haben. - Es werden die benutzten Texte (1 bis benutzte texte) aneinandergehängt und ohne - irgendwelche Konvertierungen bzw. Interpretationen als MS-DOS Datei 'filename' - geschrieben. Dies bedeutet, daß die Texte auch alle von MS-DOS benötigten - Steuerzeichen (z.B. 'ctrl z' als Dateiendekennzeichen) enthalten müssen. - - -#on("bold")# -#ib#6.7 Betriebsart: ds#ie# -#off ("b")# -Diese Betriebsart ist nur für den Programmierer interessant. Sie ermöglicht das Abbil­ -den von Datenstrukturen zwischen MS-DOS und EUMEL. - -#on("bold")# -fetch ("filename", dostask) -#off ("b")# - Die MS-DOS Datei 'filename' wird blockweise in den Datenraum 'filename' ko­ - piert. Hierbei wird der erste Block der MS-DOS Datei in die 2. Seite des Daten­ - raums kopiert. (Die 2. Seite eines Datenraums ist die erste, die von einer Daten­ - struktur voll überdeckt werden kann). - - -#on("bold")# -save ("filename", dostask) -#off ("b")# - Der Datenraum 'filename' wird ab seiner 2. Seite in die MS-DOS Datei 'filename' - geschrieben. Hierbei werden alle Seiten des Datenraums (auch die nicht allokier­ - ten) bis einschließlich der letzten allokierten Datenraumseite geschrieben. - - -#on("bold")# -#ib#7. Installation#ie# -#off ("b")# - -Die Software zur Generierung der Tasks /"DOS" und /"DOS HD" wird auf einem -EUMEL-Archiv ausgeliefert. - -#on("bold")# -#ib#7.1 Installation der Task /"DOS"#ie# - -#ib#7.1.1 Installation im Multi-User#ie# -#off ("b")# - -Die Software muß in einer privilegierten Task mit dem Namen 'DOS' installiert wer­ -den. Dies geschieht folgendermaßen: - - - begin ("DOS", "SYSUR") - - archive ("austausch"); - fetch ("dos inserter", archive); - run ("dos inserter") - - -Danach stehen die Prozeduren - - - PROC dos manager - PROC dos manager (INT CONST channel) - - -zur Verfügung. Beide Prozeduren machen die aufrufende Task zur Kommunikations­ -task für das Schreiben und Lesen von MS-DOS Disketten. Die erste benutzt dazu -den Archivkanal (Kanal 31), bei der zweiten ist der Kanal über den Parameter ein­ -stellbar. Eine dieser Prozeduren muß jetzt aufgerufen werden. - -#on("bold")# -#ib#7.1.2. Installation im Single-User#ie# -#off ("b")# - -Die Software wird im Monitor ('gib Kommando'-Modus) durch folgende Kommandos -installiert: - - - archive ("austausch"); - fetch ("dos inserter", archive); - run ("dos inserter") - - -Für das Schreiben und Lesen von MS-DOS Disketten wird der Archivkanal (Kanal -31) benutzt. - - -#on("bold")# -#ib#7.2 Installation der Task /"DOS HD"#ie# -#off ("b")# - -Die Software muß in einer privilegierten Task mit dem Namen 'DOS HD' installiert -werden. Dies geschieht folgendermaßen: - - - begin ("DOS HD", "SYSUR") - - archive ("austausch"); - fetch ("dos hd inserter", archive); - run ("dos hd inserter") - - -Danach steht die Prozedur - - - PROC dos manager - - -zur Verfügung. Sie macht die aufrufende Task zur Kommunikationstask für das -Schreiben und Lesen in der MS-DOS Partition der Platte. Sie benutzt dazu den -Kanal 29, der, wie im Portierungshandbuch für den 8086 beschrieben, implementiert -sein muß. - -#page# -#headeven# -#end# - - - - - -Herausgegeben von: - - Gesellschaft für Mathematik und Datenverarbeitung mbH - (GMD) - Schloß Birlinghoven - 5205 Sankt Augustin 1 - - und - - Hochschulrechenzentrum der Universität Bielefeld - (HRZ) - Universitätsstraße - 4800 Bielefeld 1 - -Autor: - - Frank Klapper - -überarbeitet von: - - Thomas Müller - Hansgeorg Freese (GMD) - -Umschlaggestaltung: - - Hannelotte Wecken - - - - - - diff --git a/net/netzhandbuch b/net/netzhandbuch deleted file mode 100644 index 7083462..0000000 --- a/net/netzhandbuch +++ /dev/null @@ -1,2045 +0,0 @@ -____________________________________________________________________________ - - -#on("b")##on ("u")# -#center#Betriebssystem E U M E L -#off ("u")# - - -#center#Netzsoftware - - - - -#off("b")# -#center#Lizenzfreie Software der -#on ("b")# - -#center#Gesellschaft für Mathematik und Datenverarbeitung mbH, -#center#5205 Sankt Augustin - - -#off("b")# -#center#Die Nutzung der Software ist nur im Schul- und Hochschulbereich für -#center#nichtkommerzielle Zwecke gestattet. - -#center#Gewährleistung und Haftung werden ausgeschlossen - - -____________________________________________________________________________ -#page# -#pagenr ("%",1)##setcount(1)##block##pageblock##count per page# -#headeven# -#center#EUMEL Netzbeschreibung -#center#____________________________________________________________ - -#end# -#headodd# -#center#Inhalt -#center#____________________________________________________________ - -#end# -#bottomeven# -#center#____________________________________________________________ -Netz - % #right# GMD -#end# -#bottomodd# -#center#____________________________________________________________ -GMD #right#Netz - % -#end# - -#center#Inhalt - -#clear pos##lpos(1.0)##rpos(9.5)# -#table# - -1. Einleitung #topage("0")# - -Teil 1: Netz einrichten und benutzen #topage("1")# - - -1.1. Hardwarevoraussetzungen #topage("1.1")# -1.2. Einrichten des Netzes #topage("1.2")# -1.3. Benutzung des Netzes #topage("1.3")# -1.4. Informationsmöglichkeiten #topage("1.4")# -1.5. Eingriffsmöglichkeiten #topage("1.5")# -1.6. Fehlerbehebung im Netz #topage("1.6")# -1.7. Sicherheit im Netz #topage("1.7")# - - - -Teil 2: Arbeitsweise der Netzsoftware #topage("2")# - - -2.1. Die Netztask #topage("2.1")# -2.2. Protokollebenen #topage("2.2")# -2.3. Stand der Netzsoftware #topage("2.3")# - - - -Teil 3: Netz-Hardware-Interface #topage("3")# - - -3.1. Einführung #topage("3.1")# -3.2. Arbeitsweise des Netz-Hardware-Interfaces #topage("3.2")# -3.3. Netztreiber #topage("3.3")# -3.4. Prozedurschnittstelle des EUMEL-Netzes #topage("3.4")# - - - -Anhang #topage("A")# - - -1. Fehlermeldungen #topage("A.1")# -2. Literaturhinweise #topage("A.2")# -3. Index #topage("A.3")# - -#table end# -#clear pos# - -#page# -#pagenr ("%", 2)##setcount (1)##block##pageblock##count per page# -#headeven# -#center#EUMEL Netzbeschreibung -#center#____________________________________________________________ - -#end# -#headodd# -#center#Einleitung -#center#____________________________________________________________ - -#end# -#bottomeven# -#center#____________________________________________________________ -Netz - % #right#GMD -#end# -#bottomodd# -#center#____________________________________________________________ -GMD #right#Netz - % -#end# - -1. Einleitung - -#goalpage("0")# -Das EUMEL-Netz dient dazu, mehrere EUMEL-Rechner (sog. #ib#Station#ie#en) miteinan­ -der zu koppeln. Diese Kopplung wird vom Betriebssystem dazu benutzt, das Sen­ -dungskonzept [1] so auszudehnen, daß Tasks verschiedener Stationen einander -Datenräume zusenden können. Auf dem #ib#Sendungskonzept#ie# aufbauende Konzepte -nutzen daher automatisch das Netz aus: So ist es z.B. möglich - -- von einer Station aus auf einer anderen zu drucken, - -- in die Task PUBLIC einer anderen Station #ib#Datei#ie#en zu sichern (save), vorausge­ - setzt, daß PUBLIC dort ein #on("b")#free global manager#off("b")# ist, - -- auf einer anderen Station zu archivieren (z.B. wenn das eigene Archivlaufwerk - defekt ist oder ein anderes Format hat). - -Diese #ib#Netzversion#ie# kann ab EUMEL-Version 1.8.1 eingesetzt werden. - -Diese Netzbeschreibung besteht aus drei Teilen. In Teil 1 wird beschrieben, wie das -EUMEL-Netz benutzt und eingerichtet wird. Als Benutzer eines EUMEL- -Rechners, der vernetzt ist, ist nur dieser Teil der Netzbeschreibung für Sie wichtig. -Teil 2 erklärt die Funktionsweise der #ib#Netzsoftware#ie#, im dritten Teil wird die Schnitt­ -stelle für die Anpassung anderer #ib#Netzhardware#ie# definiert. - -Hinweis: - -Zur erstmaligen #ib#Installation#ie# des EUMEL-Netzes ist außer dieser Beschreibung noch -die Netzsoftware (auf Floppy) und die EUMEL-Netz-#ib#Installationsanleitung#ie#, die mit -der Software geliefert wird, notwendig. - -In der vorliegenden Netzbeschreibung wird das EUMEL-Netz möglichst "hardware -unabhängig" beschrieben. Wenn hardwareabhängige Beispiele gegeben werden, so -ist die dort beschriebene Hardware stets die #ib#Datenbox#ie#. -#pagenr ("%", 3)##setcount (1)##block##pageblock##count per page# -#headeven# -#center#EUMEL Netzbeschreibung -#cneter#____________________________________________________________ - -#end# -#headodd# -#center#Teil 1 : Netz einrichten und benutzen -#center#____________________________________________________________ - -#end# -#bottomeven# -#center#____________________________________________________________ -Netz - % #right#GMD -#end# -#bottomodd# -#center#____________________________________________________________ -GMD #right#Netz - % -#end# -#page# - -Teil 1: Netz einrichten und benutzen -#goalpage("1")# - - - -1.1. Hardwarevoraussetzungen -#goalpage("1.1")# - - -Zwei Stationen - -Sie können zwei #ib#Station#ie# miteinander vernetzen, wenn Sie dafür an jeder Station eine -#ib#V.24#ie#-#ib#Schnittstelle#ie# zur Verfügung stellen. - -Diese beiden Schnittstellen verbinden Sie mit einem Kabel zur #ib#Rechnerkopplung#ie# [2]. - - -Mehrere Stationen - -Wenn Sie mehr als zwei Stationen vernetzen wollen, stehen Ihnen zwei Konzepte zur -Verfügung: das Anlegen von #ib#Netzknoten#ie# bzw. das Verwenden eines #ib#Strang#ie#es. Die -Konzepte können gemischt eingesetzt werden. - -Ein Strang besteht aus einer Anzahl von #ib#Netzbox#ie#en (z.B. KHW-Box oder Ethernet­ -anschluß). - -Jede Box besitzt eine #ib#Schnittstelle#ie# (z.B. #ib#V.24#ie#) zum Anschluß an einen der Kanäle -1...15 der zugeordneten #ib#Station#ie# und eine weitere Schnittstelle zur #ib#Verbindung#ie# der -Boxen untereinander. - -Ein #ib#Knoten#ie# ist eine Station, bei der der Netzbetrieb über mehrere Kanäle läuft. - -Da die #ib#Netzsoftware#ie# pro #ib#Kanal#ie# eines Knotens eine Task generiert, ist das Knoten­ -konzept dem Strangkonzept hinsichtlich des #ib#Durchsatz#ie#es unterlegen. Preisgünstiger -ist jedoch das #ib#Knotenkonzept#ie#, weil dabei #ib#Netzbox#ie#en überflüssig werden. - -Beim Knotenkonzept wird eine #ib#Vermaschung#ie# nicht zur Optimierung benutzt (Ver­ -maschung heißt, daß eine #ib#Zielstation#ie# über verschiedene Knoten erreichbar ist). Daher -sollte man keine Vermaschung vorsehen. - -#ib#Nachbarn#ie# sind Stationen, die an denselben #ib#Netzstrang#ie# angeschlossen oder direkt -über ein #ib#V.24#ie#-Kabel verbunden sind. - -Bei der Entscheidung, welche Stationen man zu #ib#Knoten#ie# macht, sollte beachtet wer­ -den, daß (a) Stationen, zwischen denen hoher Verkehr besteht, Nachbarn werden und -daß (b) besonders leistungsfähige Rechner #ib#Knoten#ie#stationen sein sollten. -#page# - -1.2. Einrichten des Netzes -#goalpage("1.2")# - - -Hinweis: Dieses Kapitel ist nur für Systembetreuer wichtig. - -a) Legen Sie für die am Netz beteiligten Rechner #ib#Stationsnummer#ie#n fest (von 1 an - aufsteigend). - - Die Boxen haben ebenfalls Stationsnummern. Die Stationsnummern der Box und - des zugeordneten Rechners müssen übereinstimmen. - - -b) Holen Sie an jeder #ib#Station#ie# die Task #on("bold")#configurator#off("bold")# an ein Terminal und geben Sie - das Kommando #on("bold")##ib#define station#ie# (x)#off("bold")#, wobei #on("bold")#x#off("bold")# die gewählte Stationsnummer ist. - - Hinweis: Taskkommunikationen, die zu diesem Zeitpunkt laufen, führen zu feh­ - lerhaftem Verhalten. Dies liegt daran, daß durch #on("bold")#define station#off("bold")# alle - #ib#Task-Id#ie#'s geändert werden müssen, weil eine #ib#Task-Id#ie# u.a. die - Stationsnummer der eigenen Station enthält (siehe 1.3). TASK- - Variablen, die noch Task-Id's mit keiner oder falscher Stationsnum­ - mer enthalten, können nicht mehr zum Ansprechen einer Task ver­ - wendet werden. - - Beispiel: Der #ib#Spoolmanager#ie# [3] richtet beim Kommando #on("bold")#start#off("bold")# einen #ib#Worker#ie# ein - und merkt sich dessen #ib#Task-Id#ie# in einer TASK-Variablen, um sicher­ - zustellen, daß nur der Worker #ib#Datei#ie#en zum Drucken abholt. Wird jetzt - das Kommando #on("bold")# define station#off("bold")# gegeben, kann der Spoolmanager - seinen Worker nicht mehr identifizieren, weil der Worker eine neue - Task-Id erhalten hat. Man muß daher vor #on("b")#define station#off("b")# den Worker - löschen und ihn danach mit dem Kommando #on("bold")##ib#start#ie##off("bold")# im Spoolmanager - wieder neu einrichten. - - - Sinnvollerweise gibt man #on("bold")#define station#off("bold")# sofort nachdem man ein frisches System - vom Archiv geladen hat. - - Zum Anschluß einer #ib#Datenbox#ie# #ib#konfigurieren#ie# Sie mit dem Kommando #on("bold")##ib#configurate#ie##off("bold")# - den für das Netz vorgesehenen #ib#Kanal#ie# auf - - - transparent - - 9600 #ib#Baud#ie# (Standardeinstellung der Boxen) - - #ib#RTS/CTS#ie#-#ib#Protokoll#ie# - - großen Puffer - - 8 bit - - even parity - - 1 stopbit. - - Falls diese Einstellungen nicht alle angeboten werden, klären Sie mit Ihrem - Rechnerlieferanten, ob und wie diese Einstellungen erreicht werden können. - - Hinweis: Notfalls kann auf das #ib#RTS/CTS#ie#-Protokoll verzichtet werden, wenn der - Eingabepuffer der #ib#Station#ie# groß genug ist. Die Anzahl simultan laufen­ - der Netzkommunikationen ist dann auf - - puffergröße DIV 150 - - begrenzt (bei Z80, 8086: 3; bei M20: 10). - - Hinweis: Es können auch andere #ib#Baud#ie#raten (2400, 4800, 19200) an der Box - eingestellt werden. - - -c) Achten Sie bei der #ib#Verbindung#ie# von der Station zur #ib#Netzbox#ie# (bzw. zur Gegen­ - station bei einem Zweistationennetz ohne Boxen) darauf, daß neben den Emp­ - fangs- und Sendeleitungen auch die Leitungen RTS und CTS verdrahtet wer­ - den, also ein 5-poliges Kabel verwendet wird [2]. Die #ib#Pin-Belegung#ie# der Boxen - entspricht der eines Kabels zur Rechner-Rechner-Kopplung. - - Beispiel: - - Verbindung eines BICOS-Systems mit der Box: - - Stecker Stecker - Pin Pin - - 2 <---------> 3 - 3 <---------> 2 - 4 <---------> 5 - 5 <---------> 4 - 7 <---------> 7 - - -d) Richten Sie eine Task #on("bold")##ib#net#ie##off("bold")# unter #on("bold")#SYSUR#off("bold")# ein und legen Sie eine #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# an, die - Ihre #ib#Netzkonfiguration#ie# enthält, oder ändern Sie die mitgelieferte Datei ent­ - sprechend ab (siehe auch 1.5.).#goalpage("sperre")# - - - Dem bisherigen Netz entspricht eine Datei #on("b")#netz#off("b")# mit folgendem Inhalt: - - definiere netz; - routen (1,127,k); - starte kanal (k,1,x); - aktiviere netz. - - k: ihr netzkanal. - x: IF yes ("#ib#Flußkontrolle#ie#") THEN 10 ELSE 3 FI. - - - - Laden Sie die Datei #on("b")##ib#net install#ie##off("b")# vom Archiv #on("b")#net#off("b")# und übersetzen Sie diese. Je nach­ - dem, welche EUMEL-Version auf der Maschine installiert ist, werden die notwen­ - digen Programmdateien insertiert. - - Es sind dies - - net report - net hardware interface - basic net - net manager - - - Das Netz wird dabei gestartet. - - - Hinweis: Obwohl die Task #on("b")#net#off("b")# sich noch mit #on("bold")##ib#continue#ie##off ("bold")# an ein Terminal holen - läßt, sollte man dies nur kurzzeitig tun, da der Netzverkehr solange - blockiert ist. - - In der #ib#Datei#ie# #on("b")#netz#off("b")# sollte der #ib#Kanal#ie#, über den der meiste Verkehr erwar­ - tet wird, zuerst gestartet werden. Für ihn wird die Task #on("b")##ib#net port#ie##off("b")# gene­ - riert, für jeden weiteren Kanal wird eine Task #on("b")##ib#net port#ie# k#off("b")# (k=Kanal­ - nummer) generiert. -#page# - -1.3. Benutzung des Netzes -#goalpage("1.3")# - - -Zur Benutzung des Netzes stehen folgende Operatoren und Prozeduren zur Verfü­ -gung: - - - -TASK OP #ib#/#ie# (INT CONST station, TEXT CONST taskname) - -liefert die Task #on("bold")#taskname#off("bold")# von der #ib#Station#ie# #on("bold")#station#off("bold")#. - - -#ib#Fehlerfälle#ie#: - - - #ib(4)#Task "...." gibt es nicht#ie(4)# - - Die angeforderte Task gibt es auf der #ib#Zielstation#ie# nicht. - - - #ib(4)##ib#Collectortask#ie# fehlt#ie(4)# - - die Task #on("b")##ib#net port#ie##off("b")# existiert nicht (siehe 6). - - Hinweis: #on("b")#net port#off("b")# wird bei jedem Start des Netzes neu generiert und beim - Auftreten eines nicht vorhergesehenen #ib#Fehler#ie#s beendet. Die Feh­ - lermeldung steht im #on("b")##ib#report#ie##off("b")# (siehe 4). - - - #ib(4)#Station x antwortet nicht#ie(4)# - - Eine nicht vorhandene oder abgeschaltete Station wurde angesprochen. - - Hinweis: Dieser #ib#Fehler#ie# wird angenommen, wenn eine Überwachungszeit von - ca. 30 Sekunden verstrichen ist, ohne daß Station x die Taskidenti­ - fikation angeliefert hat. - - - #ib(4)#Station x gibt es nicht#ie(4)# - - #ib#Station#ie# x steht nicht in den #ib#Routentabelle#ie#n. - - Diese Meldung kann auch erscheinen, wenn Station x erst kürzlich an das Netz - angeschlossen wurde. Sie steht dann noch nicht in den Routentabellen (siehe - auch 5.3.). - - Beispiel: - - list (5/"PUBLIC") - - Die Dateiliste von PUBLIC der Station 5 wird angefordert. - - - -TASK OP #ib#/#ie# (INT CONST station, TASK CONST task) - -liefert - -station / name (task) - -Beispiel: - - list (4/public) - - -Fehlerfall: - - "......" #ib(4)#gibt es nicht#ie(4)# - - Auf der eigenen Station gibt es die Task #on("b")#task#off("b")# nicht. - Der Taskname wird auf der eigenen Station bestimmt, wenn es dort die Task - nicht gibt, führt dies zur obigen Fehlermeldung. - -Abhilfe: - - Statt list(4/public) das Kommando list (4/"PUBLIC") verwenden. - - - -INT PROC #ib#station#ie# (TASK CONST task) - -liefert die #ib#Stationsnummer#ie# der Task #on("bold")#task#off("bold")#. - -Beispiel: - - put (station (myself)) - - gibt die eigene Stationsnummer aus. - - - - -PROC #ib#reserve#ie# (TEXT CONST archivename, TASK CONST archivetask) - -dient dazu, das Archiv auf der #ib#Station#ie# #on("bold")#station#off("bold")# anzumelden. - -Beispiel: - - reserve ("std", 4/"ARCHIVE"); #ib#list#ie# (4/"ARCHIVE") - - gibt das Inhaltsverzeichnis der Archivfloppy im Laufwerk der Station 4 aus. - - Hinweis: Vergessen Sie bei solchen #ib#Querarchivierungen#ie# nicht die Stationsangabe - bei jedem einzelnen Archivkommando (z.B fetch ("xxx", #on("bold")#4/#off("bold")# - "ARCHIVE")). - - Hinweis: Querarchivieren ist langsam. Verwenden Sie es nur, wenn Sie Floppy­ - formate umsetzen wollen. - - - - -PROC #ib#free global manager#ie# - -dient dazu, die eigene Task über das Netz ansprechbar zu machen. Jede andere -Task im Netz kann dann die üblichen #ib#Manager#ie#aufrufe (#on("bold")##ib#save#ie##off ("bold")#, #on("bold")##ib#fetch#ie##off ("bold")#, usw.) an die -eigene Task machen, sofern diese nicht an ein Terminal gekoppelt ist. - -Die Task wird (wie bei #on("bold")#break#off ("bold")#) abgekoppelt und meldet sich in Zukunft mit #on("bold")#mainte­ -nance#off ("bold")# statt mit #on("bold")#gib kommando#off ("bold")#. - -Beispiel: - - An Station 4 ruft man in der Task "hugo" das Kommando #on("bold")#free global manager#off("bold")# - auf. Anschließend kann man von jeder Station aus z.B. #on("bold")#list (4/"hugo")#off ("bold")# usw. auf­ - rufen. - - - - -TEXT PROC #ib#name#ie# (TASK CONST t) - -Diese (schon immer vorhandene) Prozedur wurde dahingehend erweitert, daß der -Name einer auf einer anderen Station existierenden Task über Netz angefordert wird. - -Existiert die Task nicht, so wird #on("bold")##ib#niltext#ie##off ("bold")# geliefert. - -Hinweis: Die Prozedur #on("bold")##ib#exists#ie##off ("bold")# wurde nicht auf das Netz ausgedehnt, da sie in Situa­ - tionen eingesetzt wird, wo es auf eine sehr schnelle Antwort ankommt. - Daher liefert #on("bold")#exists#off ("bold")# für eine stationsfremde Task immer FALSE. Will man - wissen, ob eine solche Task existiert, verwende man die Abfrage - - #on("bold")#IF name (task) <> "" THEN ... #off ("bold")#. - -#ib#Fehlerfall#ie#: - - - #ib(4)#Station x antwortet nicht#ie(4)# - - - #ib(4)##ib#Station#ie# x gibt es nicht#ie(4)# - -#page# - -1.4. Informationsmöglichkeiten - -#goalpage("1.4")# - -In der Task #on("bold")#net#off("bold")# wird eine #ib#Datei#ie# #on("bold")##ib#report#ie##off("bold")# geführt, in der #ib#Fehlersituationen#ie# des Netzes -verzeichnet werden. Diese Datei kann in jeder anderen Task auf derselben Station mit -#on("bold")##ib#list#ie# (/"#ib#net#ie#")#off("bold")# angesehen werden. Eine Erklärung der wichtigsten Meldungen finden Sie -im Anhang. - -In jeder Task kann durch das Kommando #on("bold")##ib#list#ie# (/"#ib#net port#ie#")#off("bold")# eine Übersicht über die -momentan laufenden #ib#Netzübertragungen#ie# der eigenen #ib#Station#ie# erhalten werden (nur für -den #ib#Kanal#ie#, an dem #on("b")##ib#net port#ie##off("b")# hängt). Entsprechendes gilt für die weiteren Netports der -eigenen Station. - -Mit #on("bold")##ib#list#ie# (/"#ib#net list")#ie##off("bold")# erhält man die Informationen, die man mit #on("b")#list (/"net")#off("b")# und #on("b")##ib#list#ie##off("b")# auf -alle Netports bekommt, sofern #on("b")##ib#listoption#ie##off("b")# (siehe S. #topage("listop")#) beim Generieren des Netzes -aufgerufen wurde. Dieser Aufruf funktioniert auch bei fremden Stationen (z.B. #on("b")#list -(5/"net list")#off("b")#). - -#page# - -1.5. Eingriffsmöglichkeiten - -#goalpage("1.5")# - -- Jede Task kann #ib#Sende#ie(1,"ströme")#- und #ib#Empfangsströme#ie#, die bei #on("bold")#list (/"net port")#off("bold")# gemel­ - det worden sind und die eigene Task betreffen, abbrechen. Hierzu ist das Kom­ - mando #on("bold")##ib#erase#ie# ("x", /"#ib#net port#ie#")#off ("bold")# zu geben, wobei x die #ib#Stromnummer#ie# (aus dem #on("bold")#list#off ("bold")#) - ist. - Unberechtigte #ib#Löschversuche#ie# werden abgewiesen. - Von privilegierten Tasks aus können jedoch mit #on("b")##ib#erase#ie##off("b")# beliebige Ströme abge­ - brochen werden. - - -- Durch das Kommando #on("bold")##ib#start#ie##off("bold")# kann von der Task #on("b")##ib#net#ie##off("b")# aus das Netz neu gestartet - werden. Dies setzt eine gültige #ib#Datei#ie# #on("bold")#netz#off("bold")# voraus. Es wird ein #on("bold")##ib#run#ie##off("bold")# auf diese Datei - gegeben. Das Kommando #on("b")##ib#start#ie##off("b")# ist nur noch aus Kompatibilitätsgründen zum alten - Netz vorhanden. - - -- Durch das Kommando #on("bold")##ib#routen aufbauen#ie##off("bold")# in der Task #on("b")##ib#net#ie##off("b")# werden die #ib#Routentabelle#ie#n - neu aufgebaut. Dies kann notwendig werden, wenn eine neue #ib#Station#ie# ans Netz - angeschlossen wurde (#ib#Fehlermeldung#ie# '#ib(4)#Station x gibt es nicht#ie(4)#'). #on("bold")#routen aufbauen#off ("bold")# - muß zuvor auch an allen dazwischenliegenden #ib#Knotenstation#ie#en gegeben werden. - - #on("bold")#routen aufbauen#off ("bold")# erzeugt eine Task #on("b")##ib#router#ie##off("b")#, die sich an das Terminal koppelt (die - Task #on("b")#net#off("b")# koppelt sich ab) und ein #ib#Protokoll#ie# ausgibt. Sind die #ib#Route#ie#n aufgebaut, - beendet sich die Task #on("b")#router#off("b")# mit der Meldung #on("b")#fertig#off("b")#. Es werden nur Stationen - bearbeitet, die nicht #ib#gesperrt#ie# (siehe S. #topage("sperre")#), und für die keine festen Routen - vereinbart sind. Der Vorgang dauert ca. 5 Sek. pro nicht gesperrter Station und - #ib#Netzkanal#ie#. Die #ib#Route#ie#n werden in einem #ib#Datenraum#ie# #on("b")##ib#port intern#ie##off("b")# hinterlegt. - - -- Der Aufruf #on("bold")##ib#definiere netz#ie##off("bold")# leitet eine #ib#Netzdefinition#ie# in der #ib#Datei#ie# #on("bold")##ib#netz#ie##off("bold")# ein. Dabei - werden alle augenblicklichen Netzkommunikationen gelöscht. Die Tasks #on("b")##ib#net port#ie# - (k)#off("b")#, wobei #on("b")#k#off("b")# die #ib#Kanalnummer#ie# ist, und #on("b")##ib#net timer#ie##off("b")# werden gelöscht. - - Dieser Aufruf muß vor den Aufrufen von #on("bold")##ib#starte kanal#ie#, #ib#erlaube#ie#, #ib#sperre#ie#, #ib#routen#ie#, - #ib#aktiviere netz#ie# und #ib#list option#ie##off("bold")# erfolgen. - - -- PROC #ib#sperre#ie# (INT CONST a,z) - bewirkt, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# keine Manageraufrufe an Tasks dieser Station - geben dürfen (Genauer gesagt werden sendecodes > 6 nicht weitergeleitet, son­ - dern ein errornak mit dem Text "#ib(4)#kein Zugriff auf Station#ie(4)#" zurückgeschickt). - - Dieser Aufruf muß vor dem ersten #on("bold")##ib#starte kanal#ie##off("bold")# erfolgen. - - -- PROC #ib#erlaube#ie# (INT CONST a,z) - bewirkt, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# Manageraufrufe an Tasks dieser Station geben - dürfen. - - Dieser Aufruf muß vor dem ersten #on("bold")##ib#starte kanal#ie##off("bold")# erfolgen. - - Beispiel: Alle Stationen außer 8 und 10 sollen #ib#gesperrt#ie# sein: - - #ib#sperre#ie# (1,127); erlaube (8,8); erlaube (10,10) - - Hinweis: 127 ist z.Zt. die maximale #ib#Stationsnummer#ie(1," maximale")#. - - -- PROC #ib#routen#ie# (INT CONST a,z,k) - legt fest, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# an #ib#Kanal#ie# #on("bold")#k#off("bold")# direkt angeschlossen sind. Sen­ - dungen dieser Stationen werden nur bearbeitet, wenn sie über diesen Kanal her­ - einkommen (siehe 1.7.). Fehlt für eine Station ein entsprechender Routenaufruf, so - darf sie über einen beliebigen #ib#Netzkanal#ie# angeschlossen sein. Dies wird dann von - #on("bold")##ib#routen aufbauen#ie##off("bold")# ermittelt. - - PROC routen (INT CONST a,z,k,zw) - legt fest, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# indirekt über die #ib#Knotenstation#ie# #on("bold")#zw#off("bold")# angeschlos­ - sen sind, und #on("b")#zw#off("b")# am Kanal #on("bold")#k#off("bold")# hängt. - - -- PROC #ib#starte kanal#ie# (INT CONST k,m,q) - startet eine #ib#Netztask#ie# am #ib#Kanal#ie# #on("bold")#k#off("bold")# im Modus #on("bold")#m#off("bold")# [4]. Dabei wird mit #on("bold")#q#off("bold")# die Anzahl - paralleler #ib#Empfangsströme#ie# festgelegt. Dadurch kann erreicht werden, daß der - #ib#Empfangspuffer#ie# nicht überläuft, indem nicht mehr als #on("b")#q#off("b")# Ströme quittiert werden. - Bei #ib#V.24#ie#-#ib#Schnittstelle#ie#n gebe man 3 (ohne #ib#Flußkontrolle#ie#) bzw. 10 (mit Flußkon­ - trolle) an. - - -- PROC #ib#aktiviere netz#ie# - muß als Abschluß in der Datei #on("bold")##ib#netz#ie##off("bold")# aufgerufen werden. Dabei wird die Task vom - Terminal abgekoppelt. Falls es bei #on("bold")##ib#definere netz#ie##off("bold")# den #ib#Datenraum#ie# #on("b")##ib#port intern#ie##off("b")#, der - die #ib#Route#ie#n enthält, nicht gab, wird #on("bold")##ib#routen aufbauen#ie##off("bold")# aufgerufen. - - -- PROC #ib#listoption#ie##goalpage("listop")# - erzeugt eine Task #on("b")##ib#net list#ie##off("b")#, die bei #on("bold")#list#off("bold")# den #ib#Fehlermeldung#ie#sreport und den Zustand - aller Netports liefert. Diese Task ist auch über Netz ansprechbar. In der Regel - sollte man #on("b")#listoption#off("b")# in der Datei #on("b")#netz#off("b")# aufrufen, es sei denn, das System ist sehr - klein. - -#page# - -1.6. #ib#Fehlersuche#ie# im Netz - -#goalpage("1.6")# - -#ib#Fehler#ie# im Netz können sich verschiedenartig auswirken. Im folgenden wird auf einige -Beispiele eingegangen: - -Beispiel: - - Auf #on("bold")#list (4/public)#off("bold")# erfolgt die Meldung '#ib(4)#Station#ie(4, " x antwortet nicht")# 4 antwortet nicht'. - - -#ib#Fehler#ie#möglichkeiten: - - - #ib#Station#ie# 4 ist nicht eingeschaltet. - Abhilfe: Station 4 einschalten. Kommando erneut geben. - - - - #ib#Netztask#ie# an Station 4 ist nicht arbeitsfähig. - Abhilfe: Kommando #on("bold")##ib#start#ie##off ("bold")# in der Task "net" auf Station 4. - - - - Stationsnummern und Boxnummern stimmen nicht überein. - Abhilfe: Mit #on("bold")#define station#off ("bold")# #ib#Stationsnummer#ie#n korrigieren (siehe 3.2). - - - - #ib#Verbindung#ie# Rechner/Box am eigenen Rechner oder an Station 4 fehlt. - Abhilfe: Verbindungen überprüfen. Durch Ansprechen einer dritten Station - kann oft schnell geklärt werden, welche Rechner/Box-Verbindung - defekt sein muß. - - - - Verbindung der Boxen untereinander defekt. - Abhilfe: Fehlende Verbindung, #ib#Masseschluß#ie# und #ib#Dreher#ie# (keine 1:1 Verbin­ - dung) überprüfen und beheben. - - Hinweis: Liegt z.B. ein Masseschluß vor, so kann es durchaus sein, daß - Boxen, die nicht in der Nähe des Masseschlusses stehen, noch - miteinander arbeiten können. Man kann aus der Tatsache, daß zwei - Boxen miteinander arbeiten können, also nicht schließen, daß man - nicht nach diesem Fehler suchen muß. - - - -Beispiel: - - Auf #on("bold")#list (4/public)#off("bold")# erfolgt keine Reaktion. - - - - Station 4 ist während dieser Sendung zusammengebrochen. - Abhilfe: Station 4 wieder starten. Die Bearbeitung des #on("bold")##ib#list#ie##off ("bold")#-Kommandos wird - automatisch wieder aufgenommen. - - - - PUBLIC auf Station 4 ist nicht im Managerzustand. - Abhilfe: PUBLIC in den Managerzustand versetzen. - - - - #ib#Fehler#ie# in der #ib#Netzhardware#ie#. - Überprüfen Sie, ob - - - die Boxen eingeschaltet sind, - - die Bereitlampe blinkt (wenn nicht: #ib#RESET#ie# an der Box), - - die #ib#V.24#ie#-Kabel richtig stecken, - - die Boxen untereinander verbunden sind (1 zu 1 Verbindungen der 5 poli­ - gen Diodenbuchsen). - - - - Fehler bei der #ib#Netzinstallation#ie#. - Überprüfen Sie, ob - - - alle Stationen an einem #ib#Strang#ie# gleiche oder kompatible Netzmodi einge­ - stellt haben [4], - - alle Stationen an einem #ib#Netzstrang#ie# auf die gleiche #ib#Nutzdatenlänge#ie# einge­ - stellt sind, - - bei der #ib#Kommunikation#ie# über #ib#Knoten#ie# alle Stationen die gleiche Nutzdaten­ - länge bei indirekten Sendungen eingestellt haben, - - die #ib#Route#ie#n auf allen beteiligten Stationen korrekt eingestellt sind. - - - -Beispiel: - - Auf #on("bold")#list (4/public)#off("bold")# erfolgt die Meldung '#ib(4)##ib#Collectortask#ie# fehlt#ie(4)#'. - - - Das Kommando #on("b")##ib#start#ie##off("b")# (bzw #on("b")##ib#aktiviere netz#ie##off("b")# in der #ib#Datei#ie# #on("b")#netz#off("b")#) wurde nicht gege­ - ben. Somit existiert #on("b")##ib#net port#ie##off("b")# nicht. - Abhilfe: Kommando #on("bold")#start#off ("bold")# in der Task #on("b")#net#off("b")# geben. - - - - Die #ib#Netzsoftware#ie# ist auf einen nicht vorhergesehenen #ib#Fehler#ie# gelaufen. Dieser - wird im #ib#Report#ie# vermerkt. #on("b")##ib#net port#ie##off("b")# wird dabei gelöscht. - Abhilfe: Geben Sie in der Task #on("bold")#net#off("bold")# das Kommando #on("bold")#start#off("bold")#. Dadurch wird die - Netzsoftware neu gestartet. Alle Netzkommunikationen dieser Station - gehen verloren. - - - -Beispiel: - - Nach #on("bold")##ib#fetch#ie# ("hugo",4/public)#off("bold")# sind Teile der Datei "hugo" verfälscht. - - - Die #ib#V.24#ie#-#ib#Verbindung#ie# zur Box ist nicht in Ordnung. - Abhilfe: Abstand zwischen Rechner und Box verkürzen; #ib#Baud#ie#rate ernie­ - drigen; durch Wechseln der #ib#V.24#ie#-#ib#Schnittstelle#ie# feststellen, ob diese - defekt ist. - Hinweis: Die Verbindung zwischen den Boxen ist durch #ib#Prüfsummen#ie# abge­ - sichert (Hardware). - -#page# - -1.7. Sicherheit im Netz - -#goalpage("1.7")# - -Bei Benutzung eines Rechnernetzes tauchen neue #ib#Sicherheitsprobleme#ie# auf. Um sie -verstehen und eingrenzen zu können, muß man sich mit dem #ib#Sicherheitskonzept#ie# des -Betriebssystems EUMEL vertraut machen: - -Eine Task im EUMEL kann nur manipuliert werden, wenn man sie entweder an ein -Terminal koppelt oder ihr Sendungen zustellt. - -Das Ankoppeln kann über #ib#Paßwort#ie# abgesichert werden. Nach dem Ankoppeln kann -die Task außerdem selbst bestimmen, wie sie die dann möglichen Eingaben behan­ -delt. So kann z.B. noch ein komplizierter Paßalgorithmus zu durchlaufen sein, bis -man auf einer offenen Programmierumgebung landet. - -Sendungen können eine Task auch nur mit ihrem Einverständnis beeinflussen, da -eine Sendung nur zugestellt wird, wenn die Task in der Prozedur #on("b")##ib#wait#ie##off("b")# steht. Insbe­ -sondere kann die Task den Absender einer Sendung überprüfen und gewisse Opera­ -tionen nur bei gewissen Absendern zulassen. So lehnt ein #on("b")##ib#global manager#ie##off("b")# z.B. alle -Dateimanagerkommandos ab, die nicht von Nachkommen (z.B. Söhnen) der Task -kommt. #on("b")##ib#free global manager#ie##off("b")# hingegen läßt Operationen wie #on("b")##ib#save#ie##off("b")# oder #on("b")##ib#erase#ie##off("b")# von -beliebigen Tasks, auch von fremden #ib#Station#ie#en, zu. Will man nur bestimmte Fremd­ -stationen zulassen, kann man z.B. folgendes Schema verwenden: - - PROC my #ib#manager#ie# - (DATASPACE VAR ds, INT CONST code, phase, TASK CONST source): - - IF station (source) = station (myself) OR station (source) = 10 - THEN - free manager (ds, code, phase, source) - ELSE - errorstop ("kein Zugriff") - FI - - END PROC my manager; - - global manager (PROC my manager) -#page# -Hier werden nur #on("b")#save#off("b")# usw. von Tasks der eigenen Station und der Station 10 zuge­ -lassen. Der Rest erhält die #ib#Fehlermeldung#ie# "kein Zugriff". - -Dieses Verfahren gewährt nur dann Sicherheit, wenn es nicht möglich ist, daß eine -beliebige Station sich als Station 10 ausgibt. - -Damit das Netz diese Sicherheit garantieren kann, müssen natürlich gewisse phy­ -sische Voraussetzungen erfüllt sein. Wenn z.B. die Station 10 über eine #ib#V.24#ie# ange­ -schlossen ist, aber jeder die Möglichkeit hat, an diese #ib#Schnittstelle#ie# seinen eigenen -Rechner anzuschliessen, dann kann das Netz natürlich nicht erkennen, ob es mit der -echten Station 10 verkehrt. - -Es muß also sichergestellt sein, daß an Kanälen für das Netz nicht manipuliert werden -kann. Bei einem #ib#Strang#ie# (Anschluß über #ib#Netzbox#ie#en) heißt das für die Boxen, daß sie -nur #ib#Telegramm#ie#e weitervermitteln, die die eingestellte #ib#Quellstationsnummer#ie# enthalten. -Sonst könnte jemand, der an denselben Strang wie #ib#Station#ie# 10 angeschlossen ist, -#ib#Telegramm#ie#e erzeugen, die so aussehen, als kämen sie von 10. - -Die #ib#Netzsoftware#ie# ihrerseits darf nur Telegramme auswerten, die über die richtige -#ib#Route#ie# (#ib#Kanal#ie# und #ib#Knotenstation#ie#) einlaufen. - -Leider hat dies die unangenehme Konsequenz, daß man automatisches Aufbauen und -Ändern von Routen verbieten muß, wodurch die Wartung der #ib#Netzkonfiguration#ie# -erschwert wird. - -Diese Version der #ib#Netzsoftware#ie# bietet den folgenden Kompromiß an: Nur für sicher­ -heitsrelevante #ib#Stationen#ie(1,", sicherheitsrelevante")# (im Beispiel Station 10) muß in der #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# die Route -angegeben werden. Dies muß in allen Stationen geschehen, für die die Station -sicherheitsrelevant ist, und in allen #ib#Knoten#ie# dazwischen. - -Für nicht sicherheitsrelevante Stationen werden #ib#Routeninformationen#ie# automatisch -aufgebaut und geändert. - -Hinweis: -Man wird oft ohne sicherheitsrelevante Stationen auskommen, indem man auf Ebenen -oberhalb der Netzebene Paßwortkontrollen einführt. So ist es z.B. ja möglich, Dateien -durch Paßworte zu schützen. Ein weiteres Beispiel ist ein #ib#Printerserver#ie#, der nur -ausdruckt, wenn eine mitgegebene Abrechnungskennung stimmt. Dabei ist es sogar -wünschenswert, daß die #ib#Station#ie# irrelevant ist, die den Druckauftrag gibt. -#pagenr ("%",21)##setcount (1)##block##pageblock##count per page# -#headeven# -#center#EUMEL Netzbeschreibung -#center#____________________________________________________________ - -#end# -#headodd# -#center#Teil 2 : Arbeitsweise der Netzsoftware -#center#____________________________________________________________ - -#end# -#bottomeven# -#center#____________________________________________________________ -Netz - % #right#GMD -#end# -#bottomodd# -#center#____________________________________________________________ -GMD #right#Netz - % -#end# -#page# - -Teil 2: Arbeitsweise der Netzsoftware -#goalpage("2")# - - - -2.1. Die Netztask -#goalpage("2.1")# - - -In diesem Kapitel wird beschrieben, wie eine #ib#Netztask#ie# in das System eingebettet ist -und welche Aufgaben sie hat. Unter Einhaltung dieser Konzepte kann die ausgeliefer­ -te Netzsoftware so geändert werden, daß sie beliebige andere #ib#Netzhardware#ie# unter­ -stützt. Die Netzsoftware ist so gegliedert, daß i.allg. nur eine hardwareabhängige -Komponente ausgetauscht werden muß (siehe Teil 3). - -Die Kommunikation zwischen Tasks im EUMEL-Betriebssystem basiert auf einem -#ib#Rendezvouskonzept#ie#: Die #ib#Zieltask#ie# einer Sendung muß empfangsbereit sein, wenn die -#ib#Quelltask#ie# sendet. - -Die Kommunikationsprozeduren auf der niedrigsten Ebene sind #on("bold")##ib#send#ie##off ("bold")# (Senden) und -#on("bold")##ib#wait#ie##off ("bold")# (Warten auf Empfang). Bei der Kommunikation werden ein Integer #on("bold")#code#off ("bold")# und ein -#ib#Datenraum#ie# #on("bold")#dr#off ("bold")# übergeben. #on("bold")#code#off ("bold")# muß >= 0 sein, da negative Codes systemintern ver­ -wandt werden. Ist die empfangende Task an einen #ib#Kanal#ie# gekoppelt (#on("bold")##ib#continue#ie##off ("bold")#), so -führt eine Zeicheneingabe auf diesem Kanal dazu, daß eine Sendung mit dem Code --4 ankommt. Die Eingabedaten müssen mit den üblichen #ib#Eingabeprozeduren#ie# (#on("bold")##ib#inchar#ie##off ("bold")# -usw.) abgeholt werden. Der übermittelte #ib#Datenraum#ie# und die Absendertask sind dabei -ohne Bedeutung und dürfen nicht interpretiert werden. - -Die Prozedur #on("bold")#send#off ("bold")# hat einen #ib#Rückmeldeparameter#ie#, der besagt, ob die Sendung -übermittelt wurde. Gibt es die Zieltask nicht oder steht sie nicht im #on("bold")#wait#off ("bold")#, so kann die -Sendung nicht übermittelt werden. - -Ein Entwicklungskriterium für das EUMEL-Netz war es, möglichst wenig Unterstüt­ -zung von der virtuellen EUMEL-Maschine (#ib#EUMEL0#ie#) zu fordern, damit weitgehend in -ELAN programmiert werden kann. Dadurch ist es möglich, eine (privilegierte) Task mit -der Netzabwicklung zu betrauen. -#page# -Zunächst wird auf die #ib#EUMEL0#ie#-Unterstützung eingegangen: - -a) Es gibt die Prozedur #on("bold")##ib#define collector#ie##off ("bold")#, mit der die für das Netz verantwortliche - Task der EUMEL0-Maschine bekannt gemacht wird. Diese Task wird im fol­ - genden #ib#Collector#ie# genannt. - -b) Es gibt die Prozedur #on("bold")##ib#define station#ie##off ("bold")#, die für den Rechner eine #ib#Stationsnummer#ie# - einstellt. Anhand dieser Nummer werden die Rechner eines Netzes unterschie­ - den. Das Einstellen bewirkt, daß für alle Tasks die Stationsnummer in ihre - #ib#Task-Id#ie# eingetragen wird (Task-Id's sind die Werte, die der Typ TASK anneh­ - men kann). - -c) Der Befehl #on("bold")##ib#station#ie# (task)#off ("bold")# liefert die Stationsnummer der #on("bold")#task#off ("bold")#. So liefert z.B. - #on("bold")##ib#station#ie# (myself)#off ("bold")# die #ib#Stationsnummer#ie# des eigenen Rechners. - -d) Eine Sendung, deren #ib#Zieltask#ie# auf einem anderen Rechner liegt (also station (ziel) - <> station (myself)), wird auf die #ib#Collectortask#ie# geleitet. - -e) Es gibt eine Prozedur #on("bold")##ib#collected destination#ie##off ("bold")#, die es dem Collector erlaubt, die - eigentliche Zieltask einer auf ihn geleiteten Sendung zu erfahren. - -f) Es gibt eine Variante der Prozedur #on("bold")##ib#send#ie##off ("bold")#, die es dem Collector gestattet, der - #ib#Zieltask#ie# eine andere Task als Absender vorzutäuschen. - -g) Es gibt eine spezielle #ib#Task-Id#ie# #on("bold")##ib#collector#ie##off ("bold")#, durch die der augenblicklich eingestell­ - te #ib#Collector#ie# erreicht wird. Diese wird als Zieltask beim Aufruf der Vermittlungs­ - dienste angegeben (siehe S. #topage("collector")#). Eine Sendung an #on("bold")#collector#off ("bold")# wird von EUMEL0 - an den derzeitig eingestellten Collector geschickt. - -Ein Collector kann also auf drei Wegen von den übrigen Tasks desselben Rechners -Sendungen erhalten: - - 1. Über ein normales #on("b")#send#off("b")# (z.B. bei #on("bold")#list (/"net port")#off ("bold")#, wenn #on("b")#net port#off("b")# der derzeitige - #ib#Collector#ie# ist), - - 2. über ein #on("b")#send#off("b")# an die Task #on("bold")#collector#off ("bold")# (s.u.) und - - 3. als umgeleitete Sendung (z.B. bei #on("bold")#list#off ("bold")# an eine Task auf einem anderen - Rechner). - -Der Collector kann diese Fälle anhand von #on("bold")#collected destination#off ("bold")# unterscheiden. - -Die Punkte d) bis f) dienen dazu, den Collector für über Netz kommunizierende Tasks -unsichtbar zu machen: Der Collector taucht nicht als Ziel oder #ib#Quelle#ie# von Sendungen -auf. Das ist notwendig, damit normale Tasks sich nicht darum kümmern müssen, ob -eine Sendung übers Netz geht oder im eigenen Rechner bleibt. - -Wenn ein #ib#Datenraum#ie# an einen anderen Rechner geschickt wird, muß der gesamte -Inhalt (z. Zt. max. 1 MB) übertragen werden. Dies macht bei der üblichen Netzhard­ -ware eine Zerlegung in #ib#Paket#ie#e nötig [5]. Bei der Zerlegung eines Datenraumes in -Pakete (#ib#Telegramm#ie#e) gelten folgende Einschränkungen: - - - Ein Paket kann maximal eine #ib#Datenraumseite#ie# als #ib#Nutzdaten#ie# enthalten. - - - Die #ib#Nutzdatenlänge#ie# ist für einen #ib#Übertragungsweg#ie# konstant. - - - Alle Stationen eines #ib#Netzstrang#ie#s senden mit gleicher Nutzdatenlänge (#on("b")##ib#data - length#ie##off("b")#). - - - Bei indirekter #ib#Kommunikation#ie(1,"indirekte")# (über #ib#Knoten#ie#) muß die Nutzdatenlänge für in­ - direkte Verbindungen (#on("b")##ib#data length via node#ie##off("b")#) auf allen beteiligten Stationen - gleich eingestellt sein. - - -Für Netze stehen spezielle Blockbefehle zur Verfügung: - - -g) #ib#blockin#ie# / #ib#blockout#ie# (dr,seite,512+abstand,anzahl,rest) - - Es werden maximal #on("bold")#anzahl#off ("bold")# Bytes transferiert. In #on("bold")#rest#off ("bold")# wird zurückgemeldet, wie - viele Bytes nicht bearbeitet wurden (z.B. weil der #ib#Kanal#ie# nichts anliefert). Bear­ - beitet werden die Bytes - - #on("bold")#seite#off ("bold")# * 512 + #on("bold")#abstand#off ("bold")# - - bis maximal - - #on("bold")#seite#off ("bold")# * 512 + #on("bold")#abstand#off ("bold")# + #on("bold")#anzahl#off ("bold")# - 1 - - Der Kanal, an den die Task gekoppelt ist, wird dabei über #ib#Stream-IO#ie# (d.h. - #on("bold")##ib#incharety#ie##off ("bold")#, bei #on("bold")#blockin#off ("bold")# bzw. #on("bold")#out#off ("bold")# bei #on("bold")#blockout#off ("bold")#) angesprochen. - - Hinweis: Die Anforderung darf nicht über #ib#Seitengrenze#ie# gehen, d.h. - - #on("bold")#abstand#off ("bold")# + #on("bold")#anzahl#off ("bold")# <= 512 - - muß erfüllt sein. - - -Eine Netzsendung läuft wie folgt ab: - -Die Task q auf Rechner rq mache ein #on("bold")##ib#send#ie##off ("bold")# an die Task z auf Rechner rz. - -1. Die Prozedur #on("bold")#send#off ("bold")# ist ein #ib#EUMEL0#ie#-Befehl. Die EUMEL0-Ebene erkennt, daß die - Sendung an die #ib#Station#ie# rz geht, da die #ib#Stationsnummer#ie# in der #ib#Task-Id#ie# enthalten - ist. Daher wird die Sendung zum #ib#Collector#ie# umgeleitet, den EUMEL0 wegen der - Einstellung durch #on("bold")##ib#define collector#ie##off ("bold")# kennt, umgeleitet. - -2. Die Task Collector empfängt über #on("bold")##ib#wait#ie##off ("bold")# den #ib#Datenraum#ie#, den #ib#Sendecode#ie# und die - Absendertask q. Die #ib#Zieltask#ie# z erfährt sie durch #on("bold")##ib#collected destination#ie##off ("bold")#. - -3. Der Collector nimmt Kontakt mit dem Collector des Rechners #on("b")#rz#off("b")# auf, dessen Sta­ - tionsnummer ja #on("bold")##ib#station#ie#(z)#off ("bold")# ist, und übermittelt diesem Sendecode, #ib#Quelltask#ie# (q), - eigentliche Zieltask (z) und den #ib#Datenraum#ie#. Da die Collectoren in ELAN geschrie­ - ben sind, können sie an beliebige #ib#Netzhardware#ie# und #ib#Protokoll#ie#e angepaßt werden. - -4. Der #ib#Collector#ie# auf Rechner #on("b")#rz#off("b")# verwendet das spezielle #on("bold")#send#off ("bold")#, um der Zieltask die - Sendung zuzustellen. Dadurch erscheint nicht der Collector, sondern die Task #on("b")#q#off("b")# - als Absender der Sendung. - -Zur Abwicklung der #ib#Vermittlungsebene#ie# (siehe S. #topage("vermittlung")#) muß der Collector noch spe­ -zielle Funktionen beherrschen. Diese sind - - der #on("b")##ib#/#ie#-Operator#off("b")# (Taskname in #ib#Task-Id#ie# wandeln) und - die #on("b")##ib#name#ie##off("b")#-Prozedur (Task-Id in Namen wandeln). - -Der #on("b")#/#off("b")#-Operator macht eine Sendung an den #on("bold")##ib#collector#ie##off ("bold")#, wobei im #ib#Datenraum#ie# der Name -der Task steht und der #ib#Sendecode#ie# gleich der Stationsnummer ist (siehe [6] ). Der -#ib#Collector#ie# setzt sich mit dem Collector dieser Station in Verbindung, damit dieser die -Task-Id ermittelt und zurückschickt. Der eigene Collector schickt dann dem #on("b")#/#off("b")#-Oper­ -ator als Antwort einen Datenraum, der die #ib#Task-Id#ie# enthält. - -Umgekehrt läuft #on("bold")##ib#name#ie##off ("bold")# ab: Wenn die Task-Id von einer fremden Station ist, schickt -#on("bold")#name#off ("bold")# eine Sendung an den #on("bold")##ib#collector#ie##off ("bold")#, wobei im Datenraum die Task-Id steht und -Sendecode = 256 ist. Der Collector entnimmt die #ib#Stationsnummer#ie# der Task aus der -Task-Id und läßt sich vom entsprechenden Collector den Tasknamen geben. Dieser -wird der #on("bold")#name#off ("bold")#-Prozedur im Antwortdatenraum übergeben. - -Netztasks bauen sich #ib#Routentabellen#ie# auf (#ib#Datei#ie#name #on("b")##ib#port intern#ie##off("b")#). Aufgrund dieser -Tabellen weiß jede #ib#Netztask#ie#, über welchen #ib#Kanal#ie# und welche #ib#Nachbarstation#ie# eine -#ib#Zielstation#ie# erreichbar ist. Wenn der #ib#Collector#ie# einen Sendeauftrag erhält, prüft er, ob -die Zielstation über seinen Kanal erreichbar ist. Wenn nicht, leitet er Parameter und -#ib#Datenraum#ie# der Sendung an die geeignete Netztask weiter. -#page# - -2.2. Ebenen - -#goalpage("2.2")# - -In diesem Kapitel werden die #ib#Protokollebenen#ie# für das Netz beschrieben, wie sie die -ausgelieferte Netzsoftware benutzt und erwartet. Bei anderer Netzhardware als Daten­ -boxen müssen die Ebenen a) bis c) ausgetauscht werden [4]. Unter Einhaltung der im -vorigen Kapitel beschriebenen Randbedingungen können auch die höheren Ebenen -geändert werden. - - -a) Physikalische Ebene - - - #ib#Station#ie# <--> Box - - #ib#V.24#ie#-#ib#Schnittstelle#ie# mit #ib#RTS/CTS#ie#-Handshake. Vollduplex. - - - Box <--> Box - - #ib#RS422#ie# über 2 verdrillte Leitungspaare (Takt und Daten). - - -b) Verbindungsebene - - - Station <--> Box - - Asynchron - 8 Bit - Even Parity - 2400/4800/9600/19200 #ib#Baud#ie# einstellbar über Lötbrücken) - - - Box <--> Box - - #ib#SDLC#ie# - 400 KBaud -#page# -c) #ib#Netzebene#ie# -#goalpage("quelle")# - - - Station <--> Box - - #ib#Telegrammformat#ie#: #ib#STX#ie#, , , <#ib#quelle#ie#>, <(n-4) byte> - - ist #ib#Längenangabe#ie# ( 8 <= n <= 160) - , sind #ib#Stationsnummer#ie#n. Diese müssen an den jeweiligen - Boxen eingestellt sein. - - Box --> Station: - - Ein #ib#Telegramm#ie# kommt nur bei der #ib#Station#ie# an, bei deren Box die Nummer - eingestellt ist. Dadurch ist ein Mithören fremder #ib#Übertragung#ie# nicht - möglich (Datenschutz). - - Zwischen Telegrammen können #ib#Fehlermeldung#ie#en der Box (Klartext) übermittelt - werden (z.B. 'skipped x', wenn ein #ib#STX#ie# von der Box erwartet wurde, aber 'x' - von der Station ankommt). - - Station --> Box: - - Ein Telegramm wird nur abgeschickt, wenn <#ib#quelle#ie#> mit der eingestellten - Nummer übereinstimmt (Datenschutz: Man kann nicht vorschwindeln, eine - beliebige Station zu sein, es sei denn, man hat physischen Zugriff zur Box und - stellt dort die Stationsnummer um). - - - Box <--> Box - - #ib#Telegrammformat#ie#: - FRAME, , <#ib#quelle#ie#>, , - - Eine #ib#Längenangabe#ie# ist nicht nötig, da #ib#SDLC#ie# eine Rekonstruktion der Länge - erlaubt. - - Telegramme mit falschen #ib#CRC-Code#ie# werden vernichtet. Auf höheren Ebenen - muß dies durch #ib#Zeitüberwachung#ie# erkannt und behandelt werden. - -#page# -d) Transportebene - - Diese Ebene wickelt das Rendezvous zwischen einer Task, die #on("bold")##ib#send#ie##off ("bold")# macht, und - einer Task, die im #on("bold")##ib#wait#ie##off ("bold")# steht, ab [1]. - - Der im #on("bold")#send#off ("bold")# angegebene #ib#Datenraum#ie# wird als Folge von #ib#Seiten#ie# (im EUMEL- - Sinne: Pagingeinheit und Allokiereinheit) übermittelt, wobei jede Seite ggf. noch in - n Byte große Stücke zerlegt wird. Es werden nur echt allokierte Seiten übermit­ - telt. Um nicht jedes #ib#Telegramm#ie# voll qualifizieren zu müssen, wird zunächst eine - Art virtuelle #ib#Verbindung#ie# durch ein #ib#OPEN#ie#-Telegramm eröffnet. Danach folgen - variabel viele #ib#DATA#ie#-Telegramme. Beide Sorten werden durch #ib#QUIT#ie#-Tele­ - gramme quittiert, um folgende Funktionen zu ermöglichen: - - #ib#Flußkontrolle#ie# (z.B. Zielrechner langsam), - Wiederaufsetzen (verlorene Telegramme), - Abbruch (z.B. weil Zieltask inzwischen beendet). - - Ein #ib#CLOSE#ie#-Telegramm ist nicht nötig, da das letzte DATA-Telegramm als - solches erkannt werden kann (siehe unten). -#page# - - #ib#OPEN#ie#-Telegramm - -#clear pos# - 0 1 2 3 4 5 6 7 8 9. Byte -+------+------+------+------+-------------+-------------+-------------------+ -I STX I 24 I Ziel IQuelleI Endziel I Endquelle I Strom I -+------+------+------+------+-------------+-------------+-------------------+ - - 10 11 12 13 14 15 16 17 -+-------------+-------------+---------------------------+ -I Sequenz I Seite I Quelltask I -+-------------+-------------+---------------------------+ - - 18 19 20 21 22 23 -+---------------------------+-------------+ -I Zieltask I Code I -+---------------------------+-------------+ - - - - <#ib#ziel#ie#>, <#ib#quelle#ie#> siehe S. #topage("quelle")# - - <#ib#endziel#ie#> Eigentliche #ib#Zielstation#ie#. Ist = , so ist - das #ib#Telegramm#ie# angekommen. Andernfalls muß die Station - den #ib#Nachbarn#ie# zum Erreichen des als - neues einsetzen und das Telegramm an diesen - Nachbarn weiterleiten. - - <#ib#endquelle#ie#> Eigentliche #ib#Absenderstation#ie#. ist dagegen immer - die Nummer der sendenden #ib#Nachbarstation#ie#. - - <#ib#strom#ie#> Die #ib#Stromnummer#ie# identifiziert die virtuelle #ib#Verbindung#ie#. Sie - muß in den #ib#QUIT#ie#-Telegrammen angegeben werden. - - <#ib#sequenz#ie#> -1 (Kennzeichen für OPEN) - - <#ib#seite#ie#> Nummer der ersten echt allokierten #ib#Seite#ie# des #ib#Datenraum#ie#s - (=-1, falls Nilspace) - - <#ib#quelltask#ie#> #ib#Task-Id#ie# der sendenden Task - - <#ib#zieltask#ie#> Task-Id der empfangenden Task - - Wert des im #on("bold")##ib#send#ie##off ("bold")# angegebenen Codes -#page# - - #ib#DATA#ie#-Telegramm - - - - - - 0 1 2 3 4 5 6 7 8 9. Byte -+------+------+------+------+-------------+-------------+-------------------+ -I STX I LängeI Ziel IQuelleI Endziel I Endquelle I Strom I -+------+------+------+------+-------------+-------------+-------------------+ - - 10 11 12 13 14 -+-------------+-------------+-----------------------------------------------+ -I Sequenz I Seite I n Byte Daten (Länge = 14 + n) I -+-------------+-------------+-----------------------------------------------+ - - - <#ib#laenge#ie#> Gesamtlänge des Telegramms. - #on("b")#laenge#off("b")# = #on("b")##ib#nutzlaenge#ie##off("b")# + 14. - Für #on("b")#nutzlaenge#off("b")# sind nur die Werte 64,128,256 und 512 - zugelassen (siehe 1). #on("b")#laenge#off("b")# wird codiert dargestellt (siehe - Teil 3). - - - <#ib#sequenz#ie#> wird von Telegramm zu Telegramm hochgezählt. Sie dient - der Überwachung bzgl. verlorengegangener Telegramme - bzw. durch #ib#Zeitüberwachung#ie# verdoppelter Telegramme. - - <#ib#seite#ie#> Nummer der x-ten echt allokierten Seite des #ib#Datenraum#ie#s - (x = (( DIV anzahl pakete pro seite) + 2) - - #ib#Nutzinformation#ie#. Diese gehört zur #ib#Adresse#ie# a des Daten­ - raums. - - a = - N ( DIV anzahl pakete pro seite + 1) * 512 - + ( MOD anzahl pakete pro seite) * n - - wobei N (x) die Nummer der x-ten Seite und - n die #ib#Nutzdatenlänge#ie# ist. - - Aus den Formeln ergibt sich, daß diese Nummer schon in - einem vorhergehenden DATA/OPEN-Telegramm über­ - mittelt wurde (im Feld ). - - - #ib#QUIT#ie#-Telegramm - - - 0 1 2 3 4 5 6 7 8 9. Byte -+------+------+------+------+-------------+-------------+-------------------+ -I STX I 12 I Ziel IQuelleI Endziel I Endquelle I Strom I -+------+------+------+------+-------------+-------------+-------------------+ - - 10 11 -+-------------+ -I Quit I -+-------------+ - - - - <#ib#strom#ie#> muß die #ib#Stromnummer#ie# sein, die in dem #ib#OPEN#ie#/#ib#DATA#ie#­ - Telegramm stand, das quittiert wird. - - 0 : ok. Nächstes Telegramm schicken. - - -1: #ib#Übertragung#ie# neu starten (mit #ib#OPEN#ie#), weil die Emp­ - fangsstation das OPEN nicht erhalten hat. - - -2: Übertragung ca. 20 Telegramme zurücksetzen. - - -3: Übertragung abbrechen. - - -4: #ib#Quittung#ie# für letztes Telegramm einer Sendung. - - -e) #ib#Vermittlungsebene#ie##goalpage("vermittlung")# #goalpage("collector")# - - Diese Ebene ist dafür zuständig, Namen von Tasks auf anderen Stationen in - #ib#Task-Id#ie#'s (Werte des Typs TASK) zu wandeln und umgekehrt. Hierzu wird im - entsprechenden #ib#OPEN#ie#-Telegramm der Code -6 (bzw. -7) als ein­ - getragen. Die #ib#Netzempfangstask#ie# erkennt diese #ib#Codes#ie# und wickelt die Aufgaben - selbst ab, so daß es dabei nicht nötig ist, irgendeine Task-Id der #ib#Zielstation#ie# zu - kennen. - - Dieses Verfahren ist möglich, weil im #on("bold")##ib#send#ie##off ("bold")# nur positive Codes erlaubt sind. -#page# -f) #ib#Höhere Ebenen#ie# - - Höhere Ebenen sind nicht mehr netzspezifisch. Sie basieren alle auf dem Send/ - Wait-Konzept des EUMEL. So gibt es z.B. den #on("bold")##ib#global manager#ie##off ("bold")#, der Aufbewah­ - rung und Zugriff von #ib#Datei#ie#en in einer Task regelt. Dabei darf diese Task (bei der - Variante #on("bold")##ib#free global manager#ie##off ("bold")#) auf einer beliebigen #ib#Station#ie# im Netz liegen. Wegen - des #ib#Rendezvous-Konzept#ie#s können beliebige Sicherheitsstrategien benutzt werden - (z.B.: keine Dateien an Station 11 ausliefern). Von großem Wert ist z.B., daß - man ohne weiteres das Archiv (Floppylaufwerk) einer anderen Station anmelden - und benutzen kann, wodurch eine einfache Konvertierung von Floppyformaten - möglich ist. Dies ist möglich, weil auch die Archiv-Task der Stationen sich an - das Globalmanagerprotokoll halten. - - - - - -Bemerkungen - -#ib#Fehlerbehandlung#ie# besteht bis Ebene c) darin, fehlerhafte #ib#Telegramm#ie#e einfach zu -entfernen. Die Ebene d) überwacht den Netzverkehr sowieso über #ib#Timeout#ie#s, die eine -Wiederholung eines Telegrammes bewirken, wenn die #ib#Quittung#ie# ausbleibt. - -Da bei der sendenden #ib#Station#ie# der ganze #ib#Datenraum#ie# zur Verfügung steht, ist eine -#ib#Fenstertechnik#ie# (wie bei #ib#HDLC#ie#) nicht nötig. Es kann zu jedem Zeitpunkt um beliebig -viele Telegramme zurückgesetzt werden. - -Da im EUMEL eine #ib#Textdatei#ie# ein #ib#Datenraum#ie# mit sehr komplexer Struktur ist (wegen -der Insert/Delete-Möglichkeiten, ohne den Rest der #ib#Datei#ie# zu verschieben), ist es ein -hoher Aufwand, von einem fremden Betriebssytem aus eine Textdatei in das -EUMEL-Netz zu senden. Für solche Zwecke muß noch eine einfachere Dateistruktur -definiert und entsprechende Dateikonverter erstellt werden. -#page# - -2.3. Stand der Netzsoftware - -#goalpage("2.3")# - -Das EUMEL-System wickelt die Prozedur #on("bold")##ib#send#ie##off("bold")# über das Netz ab, wenn die Sta­ -tionsnummer der #ib#Zieltask#ie# ungleich der eigenen #ib#Stationsnummer#ie# ist. Umgekehrt kann -man der von der Prozedur #on("bold")##ib#wait#ie##off("bold")# gelieferten Absendertask die #ib#Absenderstation#ie# entneh­ -men (siehe Prozedur #on("bold")##ib#station#ie##off("bold")# in Teil 1). - -Anders als bei einem #on("bold")##ib#send#ie##off("bold")# innerhalb einer Station meldet ein #on("bold")#send#off("bold")# an eine Task einer -fremden Station immer 0 zurück (Task gibt es und Task war im wait), obwohl dies -nicht der Fall sein muß. Ist die Sendung vollständig zur Zielstation übertragen, so -versucht der dortige #ib#Collector#ie# diese hundertmal im Sekundenabstand zuzustellen. -Bleibt das erfolglos, wird die Sendung vernichtet. -#pagenr ("%", 33)##setcount (1)##block##pageblock##count per page# -#headeven# -#center#EUMEL Netzbeschreibung -#center#____________________________________________________________ - -#end# -#headodd# -#center#Teil 3 : Netz Hardware Interface -#center#____________________________________________________________ - -#end# -#bottomeven# -#center#____________________________________________________________ -Netz - % #right#GMD -#end# -#bottomodd# -#center#____________________________________________________________ -GMD #right#Netz - % -#end# -#page# - -Teil 3: Netz-Hardware-Interface - - -#goalpage("3")# - - -3.1. Einführung - - #goalpage("3.1")# - -In diesem Teil der Netzbeschreibung wird die #ib#Schnittstelle#ie# beschrieben, über die -#ib#Netzhardware#ie# (also #ib#Datenbox#ie#en, #ib#Netzbox#ie#en oder Netzkarten) an die EUMEL-Netz­ -Software angepaßt werden kann. Dieser Teil der Beschreibung ist also nur für Netz­ -implementatoren wichtig. - -Das EUMEL-Netz wurde dazu konzipiert, zwei oder mehr EUMEL-Rechner über -#ib#V.24#ie#-Leitungen oder Datenboxen miteinander zu vernetzen. Dem heutigen Stand der -Technik entsprechend, werden auf dem Markt eine Reihe von Möglichkeiten ange­ -boten, um PC's zu vernetzen. Diese Netze unterscheiden sich auch dadurch, daß -unterschiedliche Medien zur Datenübertragung benutzt werden. Das #ib#EUMEL- -Datenboxen-Netz#ie# benutzt Telefonkabel, #ib#Ethernet#ie# beispielsweise Koax-Kabel. Auch -Lichtleiter werden zur Datenübertragung benutzt. Entsprechend gibt es eine ganze -Menge Hardware (#ib#Treiber#ie#, Netzzugangsgeräte, Datenboxen, Anschlußkarten), die die -Kopplung zwischen einem #ib#I/O-Kanal#ie# eines Rechners und dem Übertragungsmedium -(Kabel) übernimmt. Das Netz-Hardware-Interface soll als #ib#Schnittstelle#ie# zwischen der -Netz­Software und dem Treiber dienen. Damit wird es möglich, mehrere EUMEL- -Rechner über verschiedene (Teil-) Netze (in dieser Beschreibung Stränge genannt) -und unterschiedliche #ib#Netzhardware#ie# (Treiber) miteinander zu verbinden. Für den -EUMEL-Benutzer soll dabei kein Unterschied in der Benutzung des EUMEL-Netzes -feststellbar sein. -#page# -Neben unterschliedlichen Übertragungsmedien und Treibern gibt es weitere Unter­ -schiede zwischen Netzen: - - - in der Netztopologie (Bus-, Ring- oder Sternnetze), - - - in den Netzzugangsverfahren (Token passing, time slice token, slotting oder - CSMA/CD), - - - in der #ib#Übertragungsgeschwindigkeit#ie#, - - - im Aufbau der einzelnen #ib#Pakete#ie(1,", Aufbau der")# (#ib#Netztelegramm#ie#e). - -Alles, was mit den ersten drei Punkten zusammenhängt, wird von den Netzzugangs­ -geräten behandelt. - -Der Paketaufbau aber muß zumeist im Rechner geschehen und kann in den seltens­ -ten Fällen ganz vom Treiber übernommen werden. Ebenso kann der Treiber aus den -empfangenen Paketen nicht immer die Teile herausfiltern, die von der EUMEL- -#ib#Netzsoftware#ie# gebraucht werden. Diese Aufgaben übernimmt das #ib#Netz-Hardware- -Interface#ie#. Das Netz-Hardware-Interface stellt die #ib#Verbindung#ie# zwischen EUMEL- -#ib#Netzsoftware#ie# und den verschiedenen Netzhardwarearten dar. Ähnlich wie bei den -Drucker- und Terminal-Anpassungen wurde ein hardwareabhängiger Teil aus der -Netzsoftware abgetrennt und in einem eigenen #ib#Paket#ie# zusammengefaßt. Beim Start -des Netzes wird durch Angabe des entsprechenden #ib#Netzmodus#ie# für den jeweiligen -#ib#Kanal#ie# die entsprechende Anpassung für den benutzten Treiber ausgewählt. Wenn -andere, neue Treiber angepaßt werden sollen, so müssen lediglich in dem Paket #on("b")##ib#net -hardware interface#ie##off("b")# die entsprechenden Prozeduren hinzugefügt und die #ib#Sprungleisten#ie# -(#ib#SELECT#ie#-Statements) erweitert werden. - -Durch das #ib#Knotenkonzept#ie# in der #ib#Netzsoftware#ie# ist es möglich, über einen #ib#Knoten­ -rechner#ie# Teilnetze (Stränge), die mit unterschiedlicher #ib#Netzhardware#ie# arbeiten, mitein­ -ander zu verbinden. Es sind dann beispielsweise Verbindungen zwischen Rechnern, -die über #ib#Ethernet#ie# vernetzt sind, und Rechnern auf dem EUMEL-Datenboxen-Netz -möglich. Es ist auch möglich, mit einem Rechner Zugang zu einem Netz zu erhalten, -für das spezielle #ib#Netzhardware#ie# erforderlich ist (Datenboxen, Ethernet-Anschluß). Man -kann den Rechner über eine Rechner-Rechner-Kopplung (#ib#V.24#ie#) mit einem Rechner -verbinden, der bereits ans Netz angeschlossen ist, und so (allerdings auf Kosten der -Leistung des #ib#Knotenrechner#ie#s) Netzhardware einsparen. -#page# - -3.2. Arbeitsweise des - Netz-Hardware-Interfaces - - - - - - #goalpage("3.2")# - -Grob vereinfacht kann man sich die Arbeitsweise der #ib#EUMEL-Netz-Software#ie# so vor­ -stellen: - - reset box; - REP - IF zeichen da THEN lies telegramm ein - ELIF telegramm auszugeben THEN gib telegramm aus - FI - PER . - -(Es ist nur der Teil der Software beschrieben, der die Kanalbehandlung betrifft). - - -Das Zusammenspiel zwischen EUMEL-Netz und Netz-Hardware-Interface ge­ -schieht auf folgende Weise: - - - #on("b")#reset box;#off("b")# - REP - IF zeichen da THEN #on("b")#next packet start#off("b")#; - lies telegramm ein - ELIF telegramm auszugeben THEN gib telegramm aus - FI - PER. - - gib telegramm aus: - #on("b")#transmit header#off("b")#; - gib eumelnetztelegramm aus; - #on("b")#transmit trailer #off("b")#. - -Die fett gedruckten Programmteile werden im Netz-Hardware-Interface realisiert, die -anderen Teile stecken in den darüberliegenden Teilen der EUMEL-Netz-Software. -#page# -Beim Senden eines #ib#Telegramm#ie#s wird von der #ib#Netzsoftware#ie# zuerst der #ib#Vorspann#ie# in -einem #ib#Datenraum#ie# an das Hardware-Interface übergeben (#on("b")##ib#transmit header#ie##off("b")#). Im Hard­ -ware-Interface können aus dem Vorspann die entsprechenden Informationen (Tele­ -grammlänge, #ib#Zielstation#ie# usw.) entnommen werden. Dann wird von der Netzsoftware -das Telegramm (inklusive Vorspann) per #on("b")##ib#blockout#ie##off("b")# übergeben. Danach wird #on("b")##ib#transmit -trailer#ie##off("b")# aufgerufen, um dem Hardware-Interface das Ende des Telegramms zu mel­ -den. Beim Empfang ruft die Netzsoftware zuerst die #ib#I/O Control#ie# #ib#Telegrammfreigabe#ie# -auf [7]. Danach wird das erste #ib#Zeichen#ie# des Telegramms angefordert (#on("b")##ib#next packet -start#ie##off("b")#). Falls ein #ib#STX#ie# geliefert wurde, wird das Telegramm per #on("b")##ib#blockin#ie##off("b")# eingelesen. Falls -#ib#Niltext#ie# zurückgeliefert wird, wird von der Netzsoftware #ib#Timeout#ie# angenommen. Alle -anderen Zeichen werden so interpretiert, als ob Störungen aufgetreten wären. Die -Netzsoftware übernimmt die #ib#Fehlerbehandlung#ie#. Dazu wird u. U. ein Leerlesen des -Puffers vom Hardware-Interface verlangt (#on("b")##ib#flush buffers#ie##off("b")#). - -Bei der Einstellung der #ib#Nutzdatenlänge#ie# (#on("b")##ib#data length#ie##off("b")#) ist zu beachten, daß - -a) alle #ib#Station#ie#en, die an einem #ib#Strang#ie# hängen, auf die gleiche Nutzdatenlänge - eingestellt sein müssen. - -b) Wenn mehrere Stränge über #ib#Knoten#ie# miteinander verbunden sind, muß die Nutz­ - länge für Sendungen über Knoten (#on("b")##ib#data length via node#ie##off("b")#) auf allen Stationen des - gesamten Netzes gleich eingestellt sein. Die Zusammenfassung oder Aufteilung - von #ib#Telegramm#ie#en in Knoten ist nicht möglich. - -c) Als mögliche Nutzdatenlänge sind folgende Werte erlaubt: - - 64, 128, 256 und 512 Byte. - - Größere Nutzdatenlängen sind zur Zeit nicht möglich. - -d) Je größer die #ib#Nutzdatenlänge#ie# ist, desto geringer ist der Overhead an #ib#Zeichen#ie#, - die auf den Rechnern verarbeitet werden müssen. Allerdings muß der Rechner - leistungsfähig genug sein, die ankommenden Blöcke schnell genung zu verarbei­ - ten, und die Netztreiber müssen entsprechend große Puffer haben. - - -Alle implementierten Netzanpassungen sollen in einem Netz-Hardware-Interface -zusammengefaßt werden. Dies ist notwendig, um über #ib#Knotenrechner#ie# Netzstränge -verbinden zu können, die mit unterschiedlicher #ib#Netzhardware#ie# arbeiten. So können -zum Beispiel ein #ib#Strang#ie#, der mit Datenboxen aufgebaut ist, und ein #ib#Ethernet#ie#-#ib#Strang#ie# -über einen Knotenrechner miteinander verkoppelt werden. -#page# -Aus diesem Grund wurden #on("b")#Netzmodi#off("b")# eingeführt. Man kann dadurch, daß die Netz­ -modi, genau wie die #ib#Kanal#ie#angaben, in der #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# niedergelegt sind, ohne Aus­ -tausch einer Softwarekomponente die Netzhardware wechseln. Es gibt auch die -Möglichkeit, durch verschiedene Netzmodi unterschiedliche Treiber an ein und das­ -selbe Netz anzuschließen. Beispielsweise gibt es für einige Rechnertypen Steckkarten, -mit denen der Rechner an das Ethernet angeschlossen werden kann. Man kann, -wenn diese Karten angepaßt sind, den #ib#Ethernet#ie#-Zugang über verschiedene Netz­ -anschlußkarten realisieren. - -Das Netz-Hardware-Interface muß folgende Aufgaben übernehmen: - - Bei der Ausgabe an den Treiber: - - - Generieren und Ausgeben des #ib#Paket#ie#headers, - - Umsetzen von logischen Stationsadressen (#ib#Stationsnummer#ie#n) in phy­ - sische #ib#Adresse#ie#n, - - Ausgeben der Daten (EUMEL-Netz-#ib#Telegramm#ie#e), - - Generieren und Ausgeben des Trailers und evtl. Auffüllen des Pakets mit - #ib#Füllzeichen#ie#, falls auf dem Netz eine Mindestlänge für Pakete gefordert - wird. - - Bei der Eingabe vom Treiber: - - - Weglesen von #ib#Füllzeichen#ie#, - - Prüfen der #ib#Adresse#ie#n, - - Weglesen von #ib#Paket#ie#teilen, die in der EUMEL-Netz-Software nicht - gebraucht werden. - - Weiterhin können Funktionen wie - - - Reset des Treibers, - - Prüfung, ob Stationsadresse und #ib#Adresse#ie# im Treiber übereinstimmen, - - Statistik und Service - - durch das Netz-Hardware-Interface übernommen werden. - -Dazu wird ein Satz von Prozeduren über die #ib#DEFINES#ie#-#ib#Schnittstelle#ie# des Netz- -Hardware-Interfaces zur Verfügung gestellt. Wenn neue Treiber oder Netzarten -implementiert werden sollen, so muß an diesem Interface nichts geändert werden. Die -herausgereichten Prozeduren realisieren #ib#Sprungleisten#ie# (#ib#SELECT#ie#-Statements), über -die durch Erweiterung (#ib#CASE#ie#) die Prozeduren erreicht werden können, die den ent­ -sprechenden #ib#Netzmodus#ie# realisieren. Außerdem werden Informationsprozeduren für die -darüberliegenden Programmteile zur Verfügung gestellt. -#page# - -3.3. Netztreiber - - #goalpage("3.3")# -Unter #ib#Netztreiber#ie#n versteht man die Einheiten, die den Anschluß des Rechners an ein -Netz realisieren. Das können #ib#Netzbox#ie#en sein, die mit dem Rechner über eine #ib#V.24#ie#- -Leitung verbunden sind, aber auch Anschlußkarten, die direkt auf den Datenbus des -Rechners gehen. Falls die #ib#Schnittstelle#ie# der Treiber-Hardware eine andere als die -serielle #ib#V.24#ie# ist, muß in der Regel eine Anpassung für die Hardware im #ib#SHard#ie# vorge­ -nommen werden. - -Falls der Treiber über eine serielle #ib#V.24#ie#-#ib#Schnittstelle#ie# mit dem Rechner verbunden -ist, wie das auch bei der direkten Kopplung oder dem Datenboxennetz der Fall ist, -wird die hohe #ib#Übertragungsgeschwindigkeit#ie# auf dem eigentlichen Netz durch die -relativ geringe Übertragungsgeschwindigkeit auf der #ib#V.24#ie#-#ib#Schnittstelle#ie# zwischen -Rechner und Treiber (Box) gebremst. Über andere Schnittstellen im Rechner, wenn -sie mit #ib#Stream I/O#ie# [7] betrieben werden, kann man dies vermeiden. Diese Schnitt­ -stellen müssen vom SHard bedient werden. - -Wenn in den Rechner integrierte Netztreiber (Netzanschlußkarten) benutzt werden -sollen, so muß in der Regel die Behandlung dieser Netzanschlußkarte im SHard -durchgeführt werden. - -Um effizient implementieren zu können, sollte darauf geachtet werden, daß möglichst -wenig zusätzliche #ib#Zeichen#ie# von der #ib#Netzsoftware#ie# bzw. dem Netz-Hardware-Inter­ -face bearbeitet werden müssen. Das Auffüllen von Paketen auf eine Mindestlänge -sollte möglichst vom Treiber gemacht werden, ebenso wie das Weglesen dieser -Zeichen. - -Um einen sicheren und effektiven Netzbetrieb zu garantieren, sollten die Treiber -folgende Eigenschaften haben: - - - Die #ib#Stationsadresse#ie# ist im Treiber festgelegt, sie soll nicht ohne weiteres - verändert werden können (Datenschutz). - - Der Treiber reicht nur #ib#Paket#ie#e mit richtiger #ib#Zieladresse#ie#, keine #ib#Broad- oder - Multicasts#ie# an die Netzsoftware weiter. - - Der Treiber sendet nur #ib#Paket#ie#e mit richtiger #ib#Absenderadresse#ie# bzw. setzt die - Absenderadresse selbst ein. - - Die am Treiber eingestellte #ib#Adresse#ie# kann abgefragt werden, oder es wird, - wenn ein Paket mit falscher #ib#Absenderadresse#ie# vom Rechner kommt, eine - #ib#Fehlermeldung#ie# an den Rechner gegeben. Die Fehlermeldung muß durch das - Netz-Hardware-Interface in den #on("b")##ib#report#ie##off("b")# eingetragen werden. - - Falls Pakete mit #ib#Füllzeichen#ie# aufgefüllt werden müssen, sollten die Füll­ - zeichen durch den Treiber generiert und beim Empfang wieder entfernt - werden. - - Falls mehrere Betriebsmodi möglich sind, so sollten sie softwaremäßig - einstellbar sein. - - Falls die Treiber über eine serielle #ib#Schnittstelle#ie# an den Rechner angeschlos­ - sen werden, so sollte der Treiber konfigurierbar sein. In jedem Fall sollte die - serielle Schnittstelle mit #ib#Flußkontrolle#ie# (#ib#RTS/CTS#ie#) implementiert werden. - -Zusätzlich ist ein Transparent-Modus als #ib#Netzmodus#ie# von Vorteil: - - - Der Modus (transparent) kann zu Testzwecken benutzt werden. Beispiels­ - weise um auch mit Rechnern kommunizieren zu können, die über Netz - erreichbar sind, aber kein EUMEL-Netz-#ib#Protokoll#ie# benutzen. - - Modus n: transparent. - - Ausgabeseitig: Das #ib#Paket#ie# wird unverändert ausgegeben. - #ib#Adresse#ie#n usw. müssen schon im Paket vor­ - handen sein. Es wird nicht mit #ib#Füllzeichen#ie# - aufgefüllt. - Eingabeseitig: Das Paket wird unverändert an die Netzsoft­ - ware weitergegeben. - -#page# - -3.4. Prozedurschnittstelle - des EUMEL-Netzes - - - - - - #goalpage("3.4")# -Im PACKET #on("b")##ib#net hardware interface#ie##off("b")# sind folgende Prozeduren untergebracht: - - - - BOOL PROC #ib#blockin#ie# - (DATASPACE VAR ds, INT CONST seite, abstand, länge): - - Versucht, #on("b")#länge#off("b")# Zeichen vom #ib#Kanal#ie# einzulesen. Liefert TRUE, wenn alle - Zeichen eingelesen wurden, FALSE, wenn innerhalb einer bestimmten - Zeit nicht alle #on("b")#länge#off("b")# Zeichen eingelesen werden konnten (z.B. weil der - Kanal nicht mehr Zeichen anliefert). Die eingelesenen Zeichen werden im - #ib#Datenraum#ie# #on("b")#ds#off("b")# in #ib#Seite#ie# #on("b")#seite#off("b")# ab #on("b")#abstand#off("b")# bis #on("b")#abstand#off("b")# + #on("b")#länge#off("b")# - 1 abge­ - legt. - - #ib#Fehlerfall#ie#: - - #on("b")#blockin Abbruch#off("b")# - - Es werden weniger #ib#Zeichen#ie# innerhalb einer festgelegten Zeitspanne über - den Kanal angeliefert, als mit #on("b")#länge#off("b")# gefordert. - - Passiert z.B., wenn die Kabel während einer Netzübertragung unter­ - brochen werden, oder wenn die Gegenstelle abgeschaltet wird. Das - #ib#Telegramm#ie# wird vernichtet, die Prozedur liefert FALSE, es wird eine - entsprechende Meldung im #on("b")##ib#report#ie##off("b")# erzeugt. - - PROC #ib#blockout#ie# - (DATASPACE CONST ds, INT CONST seite, abstand, länge): - - Der Inhalt von Seite #on("b")#seite#off("b")# des #ib#Datenraum#ie#s #on("b")#ds#off("b")# wird von #on("b")#abstand#off("b")# bis - #on("b")#abstand#off("b")# + #on("b")#länge#off("b")# - 1 ausgegeben. -#page# - PROC #ib#set net mode#ie# (INT CONST mode): - - Es wird der #ib#Netzmodus#ie# #on("b")#mode#off("b")# eingestellt. Im Netz-Hardware-Interface - müssen alle Initialisierungen und Einstellungen vorgenommen werden, - damit die mit #on("b")#mode#off("b")# geforderte #ib#Netzhardware#ie# unterstützt wird. Diese - Prozedur wird bei jedem #on("b")##ib#start#ie##off("b")#-Kommando in der Netztask aufgerufen. - Kann als Initialisierungsprozedur für dieses PACKET verwendet werden. - Übergibt den in der #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# für diesen #ib#Kanal#ie# verlangten Netzmodus an - das Netz-Hardware-Interface. Nach Aufruf dieser Prozedur müssen die - wertliefernden Prozeduren #on("b")##ib#net mode#ie#, #ib#mode text#ie#, #ib#data length#ie##off("b")# und #on("b")##ib#data - length via node#ie##off("b")# korrekt initialisiert sein. Der Aufruf von #on("b")##ib#net addess#ie##off("b")# muß - die korrekten (physikalischen) #ib#Adresse#ie# der #ib#Station#ie#en liefern. - - TEXT PROC net address (INT CONST stationsnummer): - - Liefert die (Hardware-) Netz-#ib#Adresse#ie#, über die der EUMEL-Rechner - mit der Stationsnummer #on("b")##ib#stationsnummer#ie##off("b")# beim aktuell für diesen Kanal - eingestellten #ib#Netzmodus#ie# erreichbar ist. Auf diese #ib#Adresse#ie# muß der Treiber - des entsprechenden Rechners eingestellt sein. Auch die eigene Netz- - Adresse muß mit der im Treiber eingestellten #ib#Adresse#ie# übereinstimmen. - Insbesondere müssen alle Stationen, die auf dem Netz arbeiten, dieselbe - Netz-Adresse für eine #ib#Stationsnummer#ie# errechnen. - - TEXT PROC #ib#mode text#ie#: - - Liefert den Text (Namen) des eingestellten #ib#Netzmodus#ie#. Wird in #on("b")##ib#net - manager#ie##off("b")# benutzt, um den Netzmodus im #on("b")##ib#report#ie##off("b")# anzugeben. - - TEXT PROC mode text (INT CONST mode): - - Liefert den Text (Namen) zu dem #ib#Netzmodus#ie# #on("b")#mode#off("b")#. - - INT PROC #ib#data length#ie# (INT CONST mode): - - Liefert die #ib#Nutzdatenlänge#ie# (#ib#Länge#ie# der Nettodaten des Eumel- - Telegramms) im Netz. Wird von #on("b")##ib#basic net#ie##off("b")# beim Neustart aufgerufen. Muß - in einem Netz auf allen Stationen eines #ib#Strang#ie#s denselben Wert liefern. - - Erlaubte Werte: 64, 128, 256 und 512. -#page# - INT CONST #ib#data length via node#ie#: - - Liefert die #ib#Nutzdatenlänge#ie# für Sendungen, die über #ib#Knoten#ie# gehen. - Muß auf allen Stationen des Netzes gleich sein. - - Erlaubte Werte: 64, 128, 256 und 512. - - PROC #ib#decode packet length#ie# (INT VAR value): - - Die #ib#Länge#ie# eines Netztelegramms ist im #ib#Telegramm#ie# codiert enthalten. Mit - dieser Prozedur wird aus dem Telegrammkopf die Telegrammlänge ermit­ - telt: - - Falls beim Aufruf dieser Prozedur in #on("b")#value#off("b")# der Wert des Feldes #on("b")#head#off("b")# aus - der Struktur #on("b")#vorspann#off("b")#, die in #on("b")#ds#off("b")# per #on("b")##ib#transmit header#ie##off("b")# übergeben wurde, - enthalten ist, so wird in #on("b")#value#off("b")# die Länge des EUMEL-Netztelegramms - zurückgeliefert. - - PROC #ib#flush buffers#ie#: - - Liest den Eingabepuffer des #ib#Netzkanal#ie#s leer. Die eingelesenen Zeichen - werden vernichtet. Wird nach Erkennen von #ib#Übertragungsfehler#ie#n aufge­ - rufen. - - TEXT PROC #ib#next packet start#ie#: - - Liefert genau ein #ib#Zeichen#ie# (in der Regel das erste Zeichen des EUMEL- - Netztelegramms). Wird von der Netzsoftware immer dann aufgerufen, - wenn ein neues #ib#Paket#ie# erwartet wird. - - Bedeutung des gelieferten Zeichens für die #ib#Netzsoftware#ie#: - - #ib#STX#ie#: korrekter #ib#Telegrammanfang#ie# (ist das erste Zeichen des - EUMEL-Netztelegramms). Der Rest des EUMEL-Netztele­ - gramms steht im Eingabepuffer, ist also über #ib#blockin#ie# lesbar. - Vorher wurden nur Zeichen eingelesen, die zum verwendeten - #ib#Netzprotokoll#ie# gehören (z.B. #ib#Ethernet#ie#-#ib#Adresse#ie#n, #ib#Füllzeichen#ie# - usw.). - niltext: kein neues Telegramm da - - jedes andere Zeichen: - Fehler. Entweder wurden Störzeichen eingelesen oder es - gingen Zeichen verloren. #ib#Fehlerbehandlung#ie# erfolgt durch die - Netzsoftware. -#page# - PROC #ib#transmit header#ie# (DATASPACE CONST ds): - - Wird vor Ausgabe eines jeden #ib#Telegramm#ie#s aufgerufen. In dem #ib#Datenraum#ie# - #on("b")#ds#off("b")# wird von der EUMEL-Netz-Software der #on("b")##ib#Vorspann#ie##off("b")# übergeben. Über - den jeweiligs eingestellten #ib#Netzmodus#ie# kann für jede implementierte Netz­ - art über eine #ib#Sprungleiste#ie# (#ib#SELECT#ie#) die Prozedur angesprungen werden, - die den #ib#Header#ie# für den eingestellten Netzmodus erstellt und ausgibt. - Struktur des von der EUMEL-Netz-Software benutzten Headers: - - BOUND STRUCT - (INT head, - zwischenziel, - zielrechner, - quellrechner, - strom, - sequenz, - seitennummer ) VAR vorspann. - - Aus dem Inhalt des Feldes #on("b")#head#off("b")# kann mittels #on("b")##ib#decode packet length#ie##off("b")# die - Gesamtlänge des EUMEL-Netztelegramms errechnet werden. - - PROC #ib#transmit trailer#ie#: - - Wird nach Ausgabe eines jeden Telegramms aufgerufen. Evtl. notwendige - Nachspänne können ausgegeben werden. Die notwenigen Informationen - wurden in #on("b")##ib#transmit header#ie##off("b")# übergeben und müssen aufbewahrt werden, - falls sie im Trailer mitgeliefert werden müssen. Kann auch dazu benutzt - werden, den unter diesem Packet liegenden Schichten (#ib#SHard#ie# oder Hard­ - ware) das Ende des Telegramms mitzuteilen. Notwendige #ib#Füllzeichen#ie# - können in dieser Prozedur in das #ib#Paket#ie# eingebaut werden. - - PROC #ib#reset box#ie# (INT CONST net mode): - - Kann zur Initialisierung der #ib#Netzhardware#ie# benutzt werden. Wird von #on("b")##ib#basic - net#ie##off("b")# beim jedem Neustart aufgerufen. - - INT PROC #ib#max mode#ie#: - - Liefert den Wert des größten erlaubten (implementierten) #ib#Netzmodus#ie#. - - INT PROC #ib#net mode#ie#: - - Liefert den eingestellten Netzmodus. -#page# -#pagenr ("%", 45)##setcount (1)##block##pageblock##count per page# -#headeven# -#center#EUMEL Netzbeschreibung -#center#____________________________________________________________ - -#end# -#headodd# -#center#Anhang -#center#____________________________________________________________ - -#end# -#bottomeven# -#center#____________________________________________________________ -Netz - % #right#GMD -#end# -#bottomodd# -#center#____________________________________________________________ -GMD #right#Netz - % -#end# -#clear pos##lpos(1.0)##rpos(9.5)##goalpage("A")# - -Anhang: Netz-Meldungen#goalpage("A.1")# - -Mit dem Kommando #on("b")##ib#list#ie# (/"net list")#off("b")# (siehe Teil 1) erhalten Sie eine temporäre #ib#Datei#ie# -auf den Bildschirm. Diese Datei könnte ungefähr so aussehen: - -____________________________________________________________________________ - - N e u e r S t a r t 12:44 Stationsnummer : 38 - 01.06.87 12:55 net port 8:20:Nicht zustellbar. . Empfänger: "net dok". Quelle 34 Taskindex: 255 - 02.06.87 06:30 net port 8:1:wdh data. sqnr 7. Absender: "net dok". Ziel 34 Taskindex: 255 - 02.06.87 07:03 net port:20:Sequenzfehler: soll 13 ist 14. Empfänger: "POST". Quelle 33 Taskindex: - 02.06.87 07:03 net port:blockin abbruch - 02.06.87 07:03 net port:20:Sequenzreset von 13 auf 10. Empfänger: "POST". Quelle 33 Taskindex: 29 - 02.06.87 07:36 net port:Call gelöscht."net dok". Strom 1 - 02.06.87 07:43 net port 8:verbotene Route: 34 - 02.06.87 07:50 net port:Header inkorret eingelesen: %0 %2 - 02.06.87 07:50 net port:buffers flushed - 02.06.87 07:52 net port:Weiterleitung nicht möglich für 34 - 02.06.87 07:53 net port 8:skipped0 6 G O 1 0 . 0 %13 %10 2 8 0 6 0 6 G O 1 0 . 0 %13 %10 2 8 0 - 02.06.87 08:14 net port 8:skipped%13 %10 S p e c . R e c e i v e E r r o r C 2 - 02.06.87 08:21 net port:20:Reopen. Empfänger: "WÜFE". Quelle 40 Taskindex: 22 - 02.06.87 09:25 net port:1:etwas rueckgespult. Absender: "-". Ziel 33 Taskindex: 51 - 02.06.87 09:25 net port:1:wdh data. sqnr 20. Absender: "-". Ziel 33 Taskindex: 51 - 02.06.87 09:54 net port:20:Blocknummer falsch, neu: 192, alt : -1. Empfänger: "WÜFE". Quelle 44 - 02.06.87 10:12 net port:Daten ohne Eroeffnung von 40 Sequenznr 7 - 02.06.87 10:23 net port:Header inkorret eingelesen: O X 0 3 8 B O X 0 4 4 E U %2 - 02.06.87 10:23 net port:buffers flushed - 02.06.87 10:49 net port:1:wdh open. Absender: "-". Ziel 33 Taskindex: 255 - 02.06.87 10:49 net port:2:wdh open. Absender: "net dok". Ziel 33 Taskindex: 255 - 02.06.87 10:53 net port:1:Sequenzfehler: soll 2 ist 3. Empfänger: "net dok". Quelle 33 Taskindex: - 02.06.87 10:54 net port:1:Sequenzreset von 8 auf 5. Empfänger: "net dok". Quelle 33 Taskindex: 11 - 02.06.87 10:56 net port:2:etwas rueckgespult. Absender: "-". Ziel 33 Taskindex: 51 - bekannte Stationen: - 1(8,1) 2(8,2) 3(8,3) 4(8,4) 5(8,5) 6(8,6) 7(8,7) 8(8,8) 9(8,9) 10(8,10) - 11(8,11) 12(8,12) 13(8,13) 14(8,14) 15(8,15) 16(8,16) 17(8,17) 18(8,18) - 19(8,19) 20(8,20) 21(8,21) 22(8,22) 23(8,23) 24(8,24) 25(8,25) 26(8,26) - 27(8,27) 28(8,28) 29(8,29) 30(8,30) 31(8,31) 32(8,32) 33(9,33) 34(8,34) - 35(9,35) 36(9,36) 37(9,37) 39(9,39) 40(9,40) 41(9,41) 42(9,42) 43(9,43) - 44(9,44) 45(9,45) 46(9,46) 47(9,47) 48(9,48) - -------- - Eingestellte Netzmodi: - net port 8 haengt an Kanal 8, Modus: (1) EUMEL-Netz 64 Byte - net port haengt an Kanal 9, MODUS: (11) ETHERNET via V.24 512 Byte - - Nutzdatenlänge 512 Byte - Nutzdatenlänge bei indirekter Verbindung: 64 Byte - ******** - Netz-Software vom 23.05.87 - Rechner 38 um 11:11 - net port 8 - - Strom 1 (sqnr7/8) sendet an 34 . Absender ist "net dok". - net port - - Strom 1 (sqnr45/45) empfaengt von 40 . Empfaenger ist "PUBLIC". - -____________________________________________________________________________ -#page# -Die Datei enthält den aktuellen #on("b")##ib#report#ie##off("b")#, in dem #ib#Fehlermeldung#ie#en der einzelnen Tasks -gesammelt werden. Außerdem wird der Zustand aller Verbindungen (Ströme) von allen -#on("b")##ib#net port#ie##off("b")#'s angezeigt. Im #on("b")#report#off("b")#-Teil kann man drei Informationsblöcke unterscheiden: - -a) den Block mit den Fehlermeldungen. Es werden jeweils Datum, Uhrzeit, der Name - des betroffenen #on("b")#net port#off("b")# und, wenn notwendig, die #ib#Stromnummer#ie# angegeben. - Darauf folgt der Meldungstext, der auch Informationen über Absender und Emp­ - fänger enthalten kann. - - : [<#ib#Stromnummer#ie#> : ] - - -b) den Block mit der Liste der bekannten #ib#Station#ie#en. Ein Eintrag in dieser Liste ent­ - hält jeweils die Stationsnummer der bekannten Station und in Klammern dahin­ - ter die Nummer des Kanals auf diesem Rechner, über den die Station erreichbar - ist und die Nummer der nächsten #ib#Zwischenstation#ie#. - - (,) - - Bei direkt erreichbaren Stationen ist Zwischenstation gleich #ib#Zielstation#ie#. - - Hinweis: Auch #ib#gesperrt#ie#e Stationen erscheinen in dieser Liste. - - -c) den Block, der Auskunft über die Netzinstallation gibt. Es werden für jeden Netz­ - kanal die eingestellten Netzmodi angegeben. Des weiteren werden die beiden - Größen #on("b")##ib#data length#ie##off("b")# (#ib#Nutzdatenlänge#ie#) und #on("b")##ib#data length via node#ie##off("b")# (Nutzdatenlänge bei - indirekter Verbindung) angegeben. Zusätzlich erscheinen noch die #ib#Netzversion#ie# und - die genaue Uhrzeit, zu der dieser #on("b")#report#off("b")# erstellt wurde. - -#page# -Für jeden #on("b")##ib#net port#ie##off("b")# wird pro aktivem #ib#Strom#ie# folgende Meldung generiert: - -Strom (sqnr/) - - - #ib#Stromnummer#ie# - - #ib#Sequenznummer#ie# des gerade bearbeiteten #ib#Telegramm#ie#s - - Bei #ib#Sendeströme#ie#n die Nummer der letzten zu übertragenden - #ib#Sequenz#ie#, bei Empfangsströmen in der Regel die Nummer der - letzten Sequenz der gerade übertragenen #ib#Datenraumseite#ie#. - -<#ib#Zustand#ie#> Hier wird die Aktion (senden, empfangen usw.) und die Partner­ - station angegeben. - -<#ib#Partner#ie#> Der Name der Task mit der kommuniziert wird. - - -Die Meldungen, die in der #ib#Datei#ie# #on("b")##ib#report#ie##off("b")# protokolliert werden, kann man in verschiedene -Gruppen einordnen. Die eine Gruppe beschreibt Störungen durch #ib#Zeichenverluste#ie# -oder ­verfälschungen, eine andere Gruppe protokolliert besondere Situationen, bei­ -spielsweise den Abbruch von #ib#Übertragung#ie#en, und die letzte Gruppe befasst sich mit -#ib#Fehlermeldung#ie#en, die ein Eingreifen von aussen notwendig machen. Je nachdem, ob -die Station, auf der die Meldung protokolliert wird, Empfänger oder Absender ist, wird -bei den Meldungen #ib#Stationsnummer#ie# und Taskname des Kommunikationspartners mit -angegeben. - -Zur ersten Gruppe gehören: - -#ib(4)##ib#skipped#ie##ie(4)# - 'skipped' oder skipped mit einem Zusatztext erscheint, wenn Zei­ - chen eingelesen wurden, die zu keinem gültigen #ib#Telegramm#ie# ge­ - hören. Dies kann passieren, wenn auf der Leitung zwischen - Rechner und Box #ib#Zeichen#ie# verlorengegangen sind. Auch nach dem - Einschalten oder nach einem Reset auf Box oder Rechner kann - diese Meldung kommen. Mindestens ein Teil der eingelesenen - Daten wird mit ausgegeben, wobei Steuerzeichen durch % und den - Code des Steuerzeichens dargestellt werden. Die einzelnen Zeichen - werden durch ein Blank voneinander getrennt. -#page# -#ib(4)##ib#Sequenzfehler#ie##ie(4)# - Die #ib#Sequenznummer#ie# ist zu groß, es fehlen also Telegramme. Die - Gegenstation wird aufgefordert, ab einem früheren Telegramm zu - wiederholen. - -#ib(4)#wdh data#ie(4)# - Das letzte Telegramm wird erneut geschickt. Passiert, wenn die - #ib#Quittung#ie# für dieses Telegramm nach einer bestimmten Zeit nicht - angekommen ist. - -#ib(4)##ib#Sequenzreset#ie##ie(4)# - Die #ib#Sequenznummer#ie# des empfangenen Telegramms ist kleiner als - die Sequenznummer des vorher empfangenen Telegramms. Die - Verbindung wird bei der zuletzt empfangenen Sequenznummer - fortgesetzt. - -#ib(4)#Blocknummer falsch#ie(4)# - Die #ib#Seitennummer#ie# in dem #ib#Telegramm#ie# ist falsch. - -#ib(4)#etwas rueckgespult#ie(4)# - Auf Anforderung der Gegenseite werden die letzten drei #ib#Datenraum­ - seite#ie#n erneut übertragen. - -#ib(4)#Daten ohne Eroeffnung#ie(4)# - Es werden Telegramme mit einer #ib#Stromnummer#ie# empfangen, zu der - vorher kein OPEN-Telegramm empfangen wurde. In diesem Fall - wird die Gegenstation aufgefordert, die #ib#Übertragung#ie# von vorn zu - beginnen. Diese Meldung kann auch kommen, wenn das Netz neu - gestartet wurde. - -#ib(4)#wdh open#ie(4)# - Die Übertragung wird mit dem #ib#OPEN#ie#-Telegramm von vorn begon­ - nen. Passiert auf Aufforderung durch die Gegenstation oder wenn - das erste OPEN-Telegramm nicht quittiert wurde. - -#ib(4)##ib#buffers flushed#ie##ie(4)# - Alle bereits eingelesenen, aber noch nicht bearbeiteten Zeichen - wurden gelöscht (der #ib#Eingabepuffer#ie# wurde komplett gelöscht). Verur­ - sacht durch schwere Störungen (#ib#Zeichenverluste#ie# oder -verfäl­ - schungen). -#page# -#ib(4)#blockin abbruch#ie(4)# - Es wurden nicht alle Zeichen eines Telegramms innerhalb eines - bestimmten Zeitraums angeliefert. - -#ib(4)#Header inkorrekt eingelesen#ie(4)# - Es wurde ein Fehler in dem Teil des Netztelegramms gefunden, der - nicht zum EUMEL-Netz gehört. - -#ib(4)#Strom falsch in Quittung#ie(4)#: - In der #ib#Quittung#ie# wurde eine nicht zulässige #ib#Stromnummer#ie# festge­ - stellt. Zulässig sind Stromnummern zwischen 1 und 20. - -#ib(4)#Neustart#ie(4)# - Die Gegenstation hat die #ib#Verbindung#ie# von vorne begonnen. - -#ib(4)#Falsche Seitennummer#ie(4)# - Die #ib#Seitennummer#ie# in dem empfangenen Telegramm ist falsch. - Einige Telegramme werden wiederholt. - -#ib(4)#Absteigende Seitennummern#ie(4)# - Die Seitennummer in dem empfangenen Telegramm ist kleiner als - die Seitennummer im vorigen #ib#Telegramm#ie#. Es müssen einige Tele­ - gramme wiederholt werden. - - -Die folgenden Meldungen beschreiben Situationen, die nicht durch #ib#Zeichenverluste#ie# -entstehen, mit denen die #ib#Netzsoftware#ie# selbst fertig wird: - - -#ib(4)#Sendung von Gegenstelle gelöscht#ie(4)# - Die Verbindung wurde von der Gegenstelle abgebrochen. - -#ib(4)#Empfangseintrag freigegeben#ie(4)# - Die Verbindung wurde von der empfangenden #ib#Station#ie# gelöscht, weil - seit dem Eintreffen des letzten Telegramms zuviel Zeit vergangen ist - (#ib#Timeout#ie#). - -#ib(4)#Irrläufer#ie(4)# - Eine #ib#Intertaskkommunikation#ie# innerhalb der eigenen Station wurde - fälschlicherweise über den #on("b")##ib#Collector#ie##off("b")# abgewickelt. Dieser Vorgang - wird abgebrochen. -#page# -#ib(4)#Call-Löschung vorgemerkt#ie(4)# - Sobald der Call abgewickelt ist, wird diese Verbindung gelöscht. - Beispielsweise führt ein vom Benutzer abgebrochenes #on("b")##ib#name#ie##off("b")# zu - dieser Meldung. - -#ib(4)#Call gelöscht#ie(4)# - Die #ib#Verbindung#ie# wurde auf Anforderung durch den Auftraggeber - gelöscht. - -#ib(4)#Quellrechner#ie(4)# - Als #ib#Quellrechnernummer#ie# wurde ein unzulässiger Wert festgestellt. - Zulässig sind Zahlen zwischen 1 und 127. - -#ib(4)#Nicht zustellbar#ie(4)# - Innerhalb eines bestimmten Zeitraums war die #ib#Zieltask#ie# nicht emp­ - fangsbereit. Die Verbindung wird abgebrochen. - -Bei diesen Meldungen sollten die #ib#Routenanweisungen#ie# überprüft werden: - -#ib(4)#Verbotene Route bei Quittung#ie(4)# - Die #ib#Quittung#ie# kommt auf einer nicht erlaubten #ib#Route#ie# an. Dies kann - bei #ib#Vermaschung#ie# passieren, oder aber, wenn eine Station versucht, - sich für eine andere Station auszugeben. - -#ib(4)#Verbotene Route#ie(4)# - Die danach bezeichnete Station versucht, auf einer anderen Route - mit diesem Rechner zu kommunizieren, als auf der Route, die für - diesen Rechner in der Datei #on("b")##ib#netz#ie##off("b")# festgelegt wurde. - - Abhilfe: - #ib#Routentabellen#ie# der beiden (oder, falls die Meldung auf einer - #ib#Knotenstation#ie# erscheint, auf allen beteiligten) Stationen abgleichen. - -#ib(4)#Weiterleitung nicht möglich#ie(4)# - Die #ib#Routeninformationen#ie# auf dem #ib#Knotenrechner#ie#, wo diese Meldung - erscheint, und der sendenden #ib#Station#ie# stimmen nicht überein. Die - angegebene Station ist von dieser Station aus nicht erreichbar. - - Abhilfe: - #ib#Routentabellen#ie# der Stationen überprüfen. - -#ib(4)#Fremdzugriff#ie(4)# - Eine #ib#gesperrt#ie#e Station hat versucht, auf diesen Rechner mit #ib#Sende­ - codes#ie# > 6 zuzugreifen. - - -Folgende Meldungen betreffen '#ib#harte Fehler#ie#'. Diese Fehler werden von der Netzsoft­ -ware nicht abgefangen. In jedem Fall muß das Netz nach einer solchen #ib#Fehler­ -meldung#ie# neu gestartet werden. - -#ib(4)#++++++#ie(4)# - Meldungen dieser Form sind 'harte' Fehler. Der aufgetretene Fehler - wird mit angegeben. Das Netz muß neu gestartet werden, da die - Task, in welcher der Fehler aufgetreten ist, gelöscht wird. - -#ib(4)#Verbindungsengpaß#ie(4)# - Es sind mehr Verbindungen festgestellt worden, als zulässig sind. - Nach dieser Meldung wurde der entsprechende Netport gelöscht. - - -Literaturverzeichnis - - -#goalpage("A.2")# - -#clear pos# -#lpos(1.0)##lpos(2.5)# -#table# -[1] EUMEL-Systemhandbuch, Teil 5, Intertaskkommunikation - GMD St. Augustin, 1986 -[2] EUMEL-Systemhandbuch, Teil 2, Hardware und ihre Steuerung -[3] EUMEL-Systemhandbuch, Teil 8, Spooler -[4] EUMEL-Netz Installationsanweisung - GMD St. Augustin, 1987 -[5] EUMEL-Systemhandbuch, Teil 4, Blockorientierte Ein/Ausgabe -[6] EUMEL-Quellcode, Packet #on("b")#tasks#off("b")# - GMD St. Augustin, 1986 -[7] EUMEL-Portierungshandbuch 8086, Version 8 - GMD St. Augustin, 1987 - -#table end# - - diff --git a/net/netzhandbuch.anhang b/net/netzhandbuch.anhang deleted file mode 100644 index 17d1ece..0000000 --- a/net/netzhandbuch.anhang +++ /dev/null @@ -1,58 +0,0 @@ -#pagenr ("%", 51)##setcount##block##pageblock##count per page# -#headeven# -#center#EUMEL Netzbeschreibung -#center#____________________________________________________________ - -#end# -#headodd# -#center#Anhang -#center#____________________________________________________________ - -#end# -#bottomeven# -#center#____________________________________________________________ -Netz - % #right#GMD -#end# -#bottomodd# -#center#____________________________________________________________ -GMD #right#Netz - % -#end# -#clear pos##lpos(0.0)##rpos(11.0)##fillchar(".")# -Anhang: Netz-Fehlermeldungen - -#table# -++++++ 50 -Absteigende Seitennummern 48 -blockin abbruch 48 -Blocknummer falsch 47 -buffers flushed 47 -Call gelöscht 49 -Call-Löschung vorgemerkt 49 -Collectortask fehlt 8, 18 -Daten ohne Eroeffnung 47 -Empfangseintrag freigegeben 48 -etwas rueckgespult 47 -Falsche Seitennummer 48 -Fremdzugriff 50 -Header inkorrekt eingelesen 48 -Irrläufer 48 -kein Zugriff auf Station 14 -Neustart 48 -Nicht zustellbar 49 -Quellrechner 49 -Sendung von Gegenstelle gelöscht 48 -Sequenzfehler 47 -Sequenzreset 47 -skipped 46 -Station x antwortet nicht 8, 11, 16 -Station x gibt es nicht 9, 11, 13 -Strom falsch in Quittung 48 -Task "..." gibt es nicht 8 -Verbindungsengpaß 50 -Verbotene Route 49 -Verbotene Route bei Quittung 49 -wdh data 47 -wdh open 47 -Weiterleitung nicht möglich 49 -#table end# - diff --git a/net/netzhandbuch.index b/net/netzhandbuch.index deleted file mode 100644 index 01d8a0f..0000000 --- a/net/netzhandbuch.index +++ /dev/null @@ -1,259 +0,0 @@ -#pagenr ("%", 52)##setcount (1)##block##pageblock##count per page# -#headeven# -#center#EUMEL Netzbeschreibung -#center#____________________________________________________________ - -#end# -#headodd# -#center#Anhang -#center#____________________________________________________________ - -#end# -#bottomeven# -#center#____________________________________________________________ -Netz - % #right#GMD -#end# -#bottomodd# -#center#____________________________________________________________ -GMD #right#Netz - % -#end# -#clear pos##lpos(0.0)##rpos(11.0)##fillchar(".")# -Anhang: Index - -#table# -/ 8, 9, 24 -Absenderadresse 39 -Absenderstation 28, 32 -Adresse 29, 37, 39, 41, 42 -aktiviere netz 14, 15, 18 -basic net 41, 43 -Baud 6, 18, 25 -blockin 23, 36, 40, 42 -blockout 23, 36, 40 -Broad- oder Multicasts 38 -buffers flushed 47 -CASE 37 -CLOSE 27 -collected destination 22, 24 -Collector 22, 24, 32, 48 -Collectortask 8, 18, 22 -configurate 6 -continue 7, 21 -CRC-Code 26 -DATA 27, 29, 30 -data length 23, 36, 41, 45 -data length via node 23, 36, 41, 42, 45 -Datei 2, 5, 7, 12, 13, 14, 18, 20, 24, 31, 37, 41, 44, 46 -Datenbox 2, 6, 33 -Datenraum 13, 15, 21, 23, 24, 27, 28, 29, 31, 36, 40, 43 -Datenraumseite 23, 46, 47 -decode packet length 42, 43 -define collector 22, 24 -definere netz 15 -DEFINES 37 -define station 5, 22 -definiere netz 14 -Dreher 16 -Durchsatz 3 -Eingabeprozeduren 21 -Eingabepuffer 47 -Empfangspuffer 15 -Empfangsströme 13, 15 -endquelle 28 -endziel 28 -erase 13, 19 -erlaube 14 -Ethernet 33, 34, 36, 37, 42 -EUMEL0 21, 22, 24 -EUMEL-Datenboxen-Netz 33 -EUMEL-Netz-Software 35 -exists 11 -Fehler 8, 16, 17, 18 -Fehlerbehandlung 31, 36, 42 -Fehlerfälle 8 -Fehlerfall 11, 40 -Fehlermeldung 13, 15, 20, 26, 39, 45, 46, 50 -Fehlersituationen 12 -Fehlersuche 16 -Fenstertechnik 31 -fetch 10, 18 -flush buffers 36, 42 -Flußkontrolle 7, 15, 27, 39 -free global manager 10, 19, 31 -Füllzeichen 37, 39, 42, 43 -gesperrt 13, 14, 45, 50 -global manager 19, 31 -harte Fehler 50 -HDLC 31 -Header 43 -Höhere Ebenen 31 -inchar 21 -incharety 23 -Installation 2 -Installationsanleitung 2 -Intertaskkommunikation 48 -I/O Control 36 -I/O-Kanal 33 -Kanal 3, 6, 7, 12, 14, 15, 20, 21, 23, 24, 34, 37, 40, 41 -Kanalnummer 14 -Kanaltask 45 -Knoten 3, 4, 17, 20, 23, 36, 42 -Knotenkonzept 3, 34 -Knotenrechner 34, 36, 49 -Knotenstation 13, 14, 20, 49 -Kommunikation 17 -Kommunikationindirekte 23 -konfigurieren 6 -Länge 29, 41, 42 -Längenangabe 26 -list 10, 12, 17, 44 -listoption 12, 14, 15 -Löschversuche 13 -Manager 10, 19 -Masseschluß 16 -max mode 43 -mode text 41 -Nachbarn 4, 28 -Nachbarstation 24, 28 -name 11, 24, 49 -net 7, 12, 13 -net addess 41 -net hardware interface 34, 40 -net install 7 -net list 12, 15 -net manager 41 -net mode 41, 43 -net port 7, 8, 12, 13, 18, 45, 46 -net timer 14 -netz 7, 14, 15, 20, 37, 41, 49 -Netzbox 3, 6, 20, 33, 38 -Netzdefinition 14 -Netzebene 26 -Netzempfangstask 30 -Netzhardware 2, 17, 21, 24, 33, 34, 36, 41, 43 -Netz-Hardware-Interface 34 -Netzinstallation 17 -Netzkanal 13, 14, 42 -Netzknoten 3 -Netzkonfiguration 7, 20 -Netzmodus 34, 37, 39, 41, 43 -Netzprotokoll 42 -Netzsoftware 2, 3, 18, 20, 34, 36, 38, 42, 48 -Netzstrang 4, 17, 23 -Netztask 15, 16, 21, 24 -Netztelegramm 34 -Netztreiber 38 -Netzübertragungen 12 -Netzversion 2, 45 -next packet start 36, 42 -niltext 11, 36 -Nutzdaten 23 -Nutzdatenlänge 17, 23, 29, 36, 41, 42, 45 -Nutzinformation 29 -nutzlaenge 29 -OPEN 27, 28, 30, 47 -Paket 23, 34, 37, 38, 39, 42, 43 -Pakete, Aufbau der 34 -Partner 46 -Paßwort 19 -Pin-Belegung 6 -port intern 13, 15, 24 -Printerserver 20 -Protokoll 6, 13, 24, 39 -Protokollebenen 25 -Prüfsummen 18 -Quelle 23, 26, 28 -Quellrechnernummer 49 -Quellstationsnummer 20 -quelltask 21, 24, 28 -Querarchivierungen 10 -QUIT 27, 28, 30 -Quittung 30, 31, 47, 48, 49 -Rechnerkopplung 3 -Rendezvouskonzept 21, 31 -report 8, 12, 18, 39, 40, 41, 45, 46 -reserve 10 -RESET 17 -reset box 43 -Route 13, 15, 17, 20, 49 -routen 14 -Routenanweisungen 49 -routen aufbauen 13, 14, 15 -Routeninformationen 20, 49 -Routentabelle 9, 13 -Routentabellen 24, 49 -router 13 -RS422 25 -RTS/CTS 6, 25, 39 -Rückmeldeparameter 21 -run 13 -save 10, 19 -Schnittstelle 3, 15, 18, 20, 25, 33, 37, 38, 39 -SDLC 25, 26 -seite 28, 29, 40 -Seiten 27 -Seitengrenze 23 -Seitennummer 47, 48 -SELECT 34, 37, 43 -send 21, 22, 24, 27, 28, 30, 32 -Sendecode 24 -Sendecodes 50 -Sendeströme 13, 46 -Sendungskonzept 2 -sequenz 28, 29, 46 -Sequenzfehler 47 -Sequenznummer 46, 47 -Sequenzreset 47 -set net mode 41 -SHard 38, 43 -Sicherheitskonzept 19 -Sicherheitsprobleme 19 -skipped 46 -sperre 14 -Spoolmanager 5 -Sprungleiste 43 -Sprungleisten 34, 37 -start 5, 13, 16, 18, 41 -starte kanal 14, 15 -station 2, 5, 8, 10, 12, 13, 16, 19, 20, 22, 24, 26, 31, 32, 36, 41, 45, 48, 49 -Stationen, sicherheitsrelevante 20 -Stationsadresse 38 -Stationsnummer 5, 10, 16, 22, 24, 26, 32, 37, 41, 46 -Stationsnummer maximale 14 -Strang 3, 17, 20, 36, 41 -Stream I/O 23, 38 -strom 28, 30, 46 -Stromnummer 13, 28, 30, 45, 46, 47, 48 -STX 26, 36, 42 -Task-Id 5, 22, 24, 28, 30 -Telegramm 20, 23, 26, 27, 28, 31, 36, 37, 40, 42, 43, 46, 47, 48 -Telegrammanfang 42 -Telegrammformat 26 -Telegrammfreigabe 36 -Textdatei 31 -Timeout 31, 36, 48 -transmit header 36, 42, 43 -transmit trailer 36, 43 -Treiber 33 -Übertragung 26, 30, 46, 47 -Übertragungsfehler 42 -Übertragungsgeschwindigkeit 34, 38 -Übertragungsweg 23 -V24 3, 4, 15, 17, 18, 20, 25, 33, 34, 38 -Verbindung 3, 6, 16, 18, 27, 28, 34, 48, 49 -Vermaschung 4, 49 -Vermittlungsebene 24, 30 -Vorspann 36, 43 -wait 19, 21, 24, 27, 32 -Worker 5 -Zeichen 36, 38, 40, 42, 46 -Zeichenverluste 46, 47, 48 -Zeitüberwachung 26, 29 -ziel 28 -Zieladresse 38 -Zielstation 4, 8, 24, 28, 30, 36, 45 -Zieltask 21, 22, 24, 28, 32, 49 -Zustand 46 -Zwischenstation 45 -#table end# - -- cgit v1.2.3