summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2016-10-09 11:34:18 +0200
committerLars-Dominik Braun <lars@6xq.net>2016-10-09 11:34:18 +0200
commit25512363eb9f619299c336c60c4333c8c759d6d9 (patch)
tree62a3dd3ca0ce3d871afcbe07e74755adc8d8ddf2 /doc
parentafd4c3c448381f6eb706090911a15c162fdaf8af (diff)
downloadeumel-src-25512363eb9f619299c336c60c4333c8c759d6d9.tar.gz
eumel-src-25512363eb9f619299c336c60c4333c8c759d6d9.tar.bz2
eumel-src-25512363eb9f619299c336c60c4333c8c759d6d9.zip
Move dos and net manuals to doc/
Diffstat (limited to 'doc')
-rw-r--r--doc/dos/dos-dat-handbuch650
-rw-r--r--doc/net/netzhandbuch2045
-rw-r--r--doc/net/netzhandbuch.anhang58
-rw-r--r--doc/net/netzhandbuch.index259
4 files changed, 3012 insertions, 0 deletions
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#, <n>, <ziel>, <#ib#quelle#ie#>, <(n-4) byte>
+
+ <n> ist #ib#Längenangabe#ie# ( 8 <= n <= 160)
+ <ziel>, <quelle> 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
+ <ziel> 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, <ziel>, <#ib#quelle#ie#>, <daten>, <CRC-Code>
+
+ 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 <ziel> = <endziel>, so ist
+ das #ib#Telegramm#ie# angekommen. Andernfalls muß die Station
+ <ziel> den #ib#Nachbarn#ie# zum Erreichen des <endziel> als
+ neues <ziel> einsetzen und das Telegramm an diesen
+ Nachbarn weiterleiten.
+
+ <#ib#endquelle#ie#> Eigentliche #ib#Absenderstation#ie#. <quelle> 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
+
+ <code> 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 = ((<sequenz> DIV anzahl pakete pro seite) + 2)
+
+ <n byte> #ib#Nutzinformation#ie#. Diese gehört zur #ib#Adresse#ie# a des Daten­
+ raums.
+
+ a =
+ N (<sequenz> DIV anzahl pakete pro seite + 1) * 512
+ + (<sequenz> 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 <seite>).
+
+ - #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.
+
+ <quit> 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 <code> 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.
+
+ <Datum> <Zeit> <Name der #ib#Kanaltask#ie#> : [<#ib#Stromnummer#ie#> : ] <Meldung>
+
+
+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#.
+
+ <Zielstation> (<Kanalnr>,<Zwischenstation>)
+
+ 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 <Stromnr> (sqnr<akt Seqnr>/<max Seqnr>) <Zustand> <Partner>
+
+
+<Stromnr> #ib#Stromnummer#ie#
+
+<akt Seqnr> #ib#Sequenznummer#ie# des gerade bearbeiteten #ib#Telegramm#ie#s
+
+<max Seqnr> 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#
+