% Diese Dokumentation ist in TeX 2.0 mit dem Macro-Paket PLAIN.TEX
% geschrieben.
% Autor: Gisbert W.Selke (RECK@DBNUAMA1.BITNET),
% Wisssenschaftliches Institut der Ortskrankenkassen,
% Kortrijker Strasse 1, D-5300 Bonn 2, West Germany
%
% Am Anfang definieren wir alles, was wir anders als normal haben wollen:
% Zuerst einige Fonts, die ggf. ge\"andert werden m\"ussen:
\font\med=cmbx10 scaled \magstep1
\font\small=cmr8
\font\smc=cmcsc10
% Ein at-Zeichen:
\def\at{\char'100 }
% kleiner horizontaler Abstand:
\def\,{\relax\ifmmode\mskip\thinmuskip\else$\mskip\thinmuskip$\fi
\relax}
% grosser horizontaler Abstand:
\def\;{\relax\ifmmode\mskip\thickmuskip\else$\mskip\thickmuskip$\fi
\relax}
% Backslash:
\def\bs{\relax\ifmmode\backslash\else$\backslash$\fi\relax}
% Eine neue Seite:
\def\newpage{\par\vfill\eject}
% Einige hilfreiche Makros:
% Kapitel-Ueberschrift:
\def\section#1{\bigskip\goodbreak{\bf #1}\hfill\medskip\nobreak}
% Schoenes Zeilenende:
\def\hb{\hfill\break}
% Ein Wort in spitzen Klammern:
\def\bw#1{$\langle$#1$\rangle$}
% 5 Makros fuer verschiedene Tabellen:
\def\sk#1#2#3{\hbox to .8cm{#1\hfil}\quad\hbox to 8cm{\tt #2\hfil}\quad
#3\hb}
\def\ska#1#2{\hbox to .8cm{#1\hfil}\quad{\tt #2\hb}}
\def\sq#1#2#3{\hbox to 5cm{\tt #1 {\it #2}\hfil}\quad#3\hb}
\def\st#1#2{\hbox to 5cm{\tt #1\hfil}\quad#2\hb}
\def\sta#1#2{\hbox to 6cm{#1\hfil}#2\hb}
% Jetzt einiges zum Stil:
% Abmessungen fuer DIN A 4:
\hsize 15.75cm
\vsize 24cm
\tolerance9000
% Keine schwarzen Balken an zu vollen Boxen:
\overfullrule=0pt
% Keine zusaetzlichen Abstaende hinter Satzzeichen:
\frenchspacing
%  Absaetze haben einen etwas groesseren Abstand:
\parskip 2pt
%
%   Und hier geht es endlich los:
%
\centerline{\med Eine Einf\"uhrung in Kermit}
\bigskip
{\small \openup -2pt \centerline{Gisbert W. Selke
(RECK\at{}DBNUAMA1.BITNET)}
\centerline{Wissenschaftliches Institut der Ortskrankenkassen}
\centerline{Kortrijker Stra{\ss}e 1, D-5300 Bonn 2, West Germany}
\centerline{Oktober 1987}
}
\section{1.   Allgemeines}
Kermit ist ein eingetragenes Warenzeichen der Henson Associates, der
Muppet-Erfinder, und au{\ss}erdem ein urheberrechtlich gesch\"utztes
Protokoll der Columbia-Universit\"at, New York, f\"ur sicheren Datentransfer
zwischen Computern. Programme, die auf diesem Protokoll beruhen, werden
kostenlos abgegeben (bis auf eine Geb\"uhr, um die Kopierkosten zu decken);
es gibt solche Programme mittlerweile f\"ur eine sehr gro{\ss}e, st\"andig
wachsende Zahl von Rechnern, so da{\ss} ein relativ problemloser Austausch
von Daten zwischen verschiedensten Systemen m\"oglich ist.

Ein solcher Transfer benutzt eine serielle Datenleitung; z.B. k\"onnen zwei PCs
\"uber Modems miteinander verbunden sein, oder ein Rechner -- der sog.
{\it lokale Rechner}  -- kann an die Terminal-Leitung eines anderen
Rechners -- des {\it entfernten Rechners} oder {\it Wirtsrechners} --
angeschlossen sein. (Wir werden es im weiteren nur mit dem zweiten Fall
zu tun haben.) In diesem Fall gaukelt der Kermit auf dem lokalen Rechner,
z.B. einem PC, dem Wirtsrechner, z.B. einer Modcomp oder einer VAX, vor,
er habe es mit einem ganz normalen Terminal zu tun.

Das Arbeiten mit Kermit beginnt also damit, lokal ein Kermit-Programm zu
starten -- wir benutzen im folgenden den MS-Kermit als Beispiel -- und dann
diesem den Befehl zu geben, die Verbindung zum Wirtsrechner herzustellen und
sich im weiteren wie ein Terminal zu verhalten. Kermit wird dadurch fast
v\"ollig transparent -- durch einen speziellen Tastendruck ist es aber
jederzeit m\"oglich, zur PC-Seite zur\"uckzukehren und dem lokalen Kermit
Befehle zu geben; man kann auch das Programm beenden und auf die
Betriebssystem-Ebene zur\"uckkehren. (Dann sollten allerdings keine
Daten mehr vom Wirtsrechner an sein -- vermeintliches -- Terminal
abgeschickt werden...)

F\"ur die eigentliche Aufgabe des Kermit-Protokolls, den sicheren
Datentransfer, ist es aber n\"otig, da{\ss} sich zwei Kermits miteinander
unterhalten. Dazu stellt man die Verbindung zum Wirtsrechner her und startet
den dortigen Kermit. Dann gibt man diesem Kermit -- dem
Wirtsrechner-Kermit also -- den Befehl, eine Datei
zu senden (bzw. zu empfangen), geht schnell zur\"uck auf die PC-Seite und
fordert den lokalen Kermit auf, eine Datei zu empfangen (bzw. zu senden).

Jetzt kann man sich bequem zur\"ucklehnen, denn alles weitere geht automatisch:
Die beiden Kermits unterhalten sich miteinander, wobei sie sicherstellen,
da{\ss} sie sich nicht gegenseitig mi{\ss}verstehen; im Laufe dieser
Unterhaltung werden die gew\"unschten Daten \"ubertragen. Der Fortschritt der
Unterhaltung wird auf dem Bildschirm angezeigt.

Nach Beendigung verbindet man sich wieder mit dem Wirtsrechner und gibt
dem dortigen Kermit neue Kommandos oder beendet das Programm auf ordentliche
Weise. Danach kann im Terminalbetrieb weitergearbeitet werden.

Die Benutzeroberfl\"achen verschiedener Kermits sind sich mehr oder weniger
\"ahnlich; jeder bietet zus\"atzlich zu den n\"otigsten Kommandos noch einige
weitere, z.B. zum Setzen von \"Ubertragungs\-parametern (Baud rate, parity,
\dots), oder eine Betriebssystem-Schnittstelle.
Jeder Kermit sollte das Kommando ``HELP''
verstehen; dar\"uber hinaus kann es weitere Hilfsmittel zur Benutzerf\"uhrung
geben. Wie man vom Wirtsrechner zum PC zur\"uckkehrt, wird i.a. auch
jederzeit angezeigt.

Wir werden in den Beispielen davon ausgehen, da{\ss} der Wirtsrechner eine
Modcomp ist und KERMIV (von Setpoint Inc.) als Kermit-Programm zur Verf\"ugung
steht. -- Wenngleich das gesamte Kermit-Protokoll auf der ASCII-Repr\"asentation
von Zeichen beruht, ist es \"ubrigens auch m\"oglich, mit EBCDIC-Wirtsrechnern
zu kommunizieren. Der Wirtsrechner-Kermit besorgt in diesem Fall die
Konversion.

-- Zusammengefa{\ss}t hei{\ss}t das also, da{\ss} Kermit zwei verschiedene
Aufgaben beherrscht, die Terminal-Emulation und den Dateitransfer.
W\"ahrend des Dateitransfers stellt das Kermit-Protokoll durch den Dialog
zweier Kermit-Programme sicher, da{\ss} die Daten korrekt \"ubertragen werden.
Der Emulationsbetrieb ist hingegen nicht durch das Protokoll abgedeckt; der
Betrieb ist nicht sicherer als der eines normalen Terminals. Der einzige
Vorteil ist, da{\ss} auf Knopfdruck wahlweise andere Dienste des lokalen
Rechners zur Verf\"ugung stehen.
%
\section{2. Der Ablauf einer Kermit-Sitzung
(PC-Wirtsrechner-Verbindung)}
(F\"ur Kermit-Befehle k\"onnen Gro{\ss}- und Kleinschreibung beliebig gemischt
werden;
Befehle k\"onnen abgek\"urzt werden, sofern sie eindeutig bleiben. Im folgenden
ist die Minimalform der Befehle durch gro{\ss}e Buchstaben gekennzeichnet.
{\it Kursiv} geschriebene W\"orter beschreiben, was der Benutzer hier eingeben
soll. Ein Semikolon markiert den Anfang eines Kommentars.)
\section{2.1  Terminalbetrieb}
\noindent
\ska{1.}{\it Starte den PC.}
\ska{2.}{\it W\"ahle das Directory an, das {\rm KERMIT.EXE} enth\"alt.}{}
\ska{3.}{KERMIT}
\ska{4.}{Connect}
\sk{5.}{Shift-Alt-F1}{; guten Morgen, Modcomp}
\ska{}{$\vdots$}
\sk{1000.}{Shift-Alt-F2}{; tsch\"us, Modcomp}
\sk{1001.}{Alt-C}{; zur\"uck zum PC}
\ska{1002.}{Quit}
\ska{1003.}{\it Schalte den PC aus.}
\smallskip
Die Schritte 5 bzw. 1000 sehen bei anderen Wirtsrechnern nat\"urlich anders
aus -- sie m\"ussen durch die jeweiligen Logon- bzw. Logoff-Schritte ersetzt
werden.
\section{2.2  Textdatei-Transfer}
Bei vielen Wirtsrechnern wird der Ablauf einfacher sein als hier gezeigt; das
liegt haupts\"achlich daran, da{\ss} auf der Modcomp keine allgemein
verbindliche
File-Manager-Schnittstelle vorliegt.
\medskip\noindent
\ska{1.}{\it Verbinde Dich mit der Modcomp wie in $2.1.1\dots 2.1.5$.}
\ska{2.}{\it Attache alle USLs, aus denen bzw. in die Du Daten
transferieren willst;}
\ska{}{\it w\"ahle als logical file name {\rm nicht} USL!}
\sk{3.}{KERMIT}{; jetzt l\"auft KERMIV.}
\sk{4.}{SET Usl {\it logical-file-name}}{;
             USL zeigt dann auf eine Deiner USLs}
\hbox to .8cm{5.a}\quad\hbox to 8cm{\hbox to 3cm {{\tt SENd}
{\it member-name}\hfill}\quad oder\;%
\hbox to .8cm{5.b}\quad\hbox to 3cm{\tt RECeive\hfill}}\quad; vom
Wirtsrechner aus gesehen\hb
\sk{6.}{Alt-C}{; zur\"uck zum PC}
\hbox to .8cm{7.a}\quad\hbox to 8cm{\hbox to 3cm {\tt Receive\hfill}
\quad oder\;%
\hbox to .8cm{7.b}\quad\hbox to 3cm{{\tt Send} {\it dateiname\hfill%
}}}\quad;
vom PC aus gesehen\hb
\sk{}{$\vdots$}{; warten!}
\sk{8.}{Connect}{; zur\"uck zur Modcomp}
\ska{}{\it Wiederhole Schritte  $4\dots 8$ so oft wie n\"otig.}
\sk{9.}{Quit}{; Ende KERMIV}
\ska{10.}{\it Beantworte ggf. alle Fragen, die {\rm KERMIV} Dir stellt.}
\ska{11.}{JOB}
\ska{}{\it Ab hier normaler Terminalbetrieb.}


KERMIV arbeitet nur mit USL-Eintr\"agen; empfangene Dateien werden
normalerweise unter einem Namen eingetragen, der dem PC-Dateinamen
\"ahnlich ist. Modcomp-Dateien werden auf dem PC normalerweise unter dem
Originalnamen abgelegt (mit leerer Extension).
\section{2.3  Transfer bin\"arer Dateien}
Bei vielen Wirtsrechnern wird sich diese Art von Dateitransfer nicht vom
Text-Transfer unterscheiden; bei richtigen Parametersetzungen (haupts\"achlich
Parit\"at) stellen die Kermits auch die \"Ubertragung von 8-Bit-Daten sicher.
Ob Daten in der bin\"aren Darstellung des einen Rechners f\"ur den anderen
Rechner \"uberhaupt einen Sinn ergeben, ist i.a. nat\"urlich nicht klar.
Die Modcomp-spezifische Art der Dateiverwaltung, die KERMIV benutzt,
bereitet auch hier Probleme. Deswegen m\"ussen solche Dateien vor- und
nachbehandelt werden. Eine M\"oglichkeit ist die einfache Hex-Codierung,
die jedes Byte durch zwei Textzeichen darstellt; in den Beispielen unten wird
eine kompaktere Form benutzt -- die BOO-Codierung --, die im wesentlichen
je 3 Bytes durch 4 ASCII-Zeichen darstellt.
\medskip
F\"ur den Transfer vom PC zur Modcomp:
\medskip\noindent
\ska{1.}{\it Bereite den Dateitransfer vor wie in $2.2.1\dots 2.2.4$.}
\sk{2.}{Alt-P}{; rufe den DOS-Kommando-Prozessor}
\sk{}{}{\phantom{; }des PC auf}
\sk{3.}{BIN2BOO {\it dateiname}}{; erzeugt ASCII-Datei gleichen Namens,}
\sk{}{}{\phantom{; }Extension .BOO}
\sk{4.}{EXIT}{; zur\"uck in KERMIVs feuchte Arme}
\ska{5.}{\it Transferiere die {\rm .BOO}-Datei wie gehabt.}
\ska{6.}{\it Beende {\rm KERMIV} ordentlich, aber ohne {\sl\$}JOB!}
\ska{7.}{\it Lege eine Datei an, die die bin\"aren Daten aufnehmen soll.}
\sk{8.}{BOO2BIN {\it usl-member-name \; usl-lfn \; output-kanal}}{;
                                        erzeugt bin\"are Datei}
\ska{9.}{JOB}
\ska{10.}{\it L\"osche irgendwann die {\rm .BOO}-Datei auf dem PC.}
\medskip
F\"ur den Transfer von der Modcomp zum PC:
\medskip\noindent
\ska{1.}{\it Verbinde Dich mit der Modcomp wie in $2.1.1\dots 2.1.5$.}
\ska{2.}{\it Attache die bin\"are Datei und eine USL zur Zwischenspeicherung.}
\sk{3.}{BIN2BOO {\it datei-kanal \; usl-member-name \; usl-lfn}}{;
 Asciifizieren}
\ska{4.}{\it Transferiere den erzeugten USL-Eintrag wie in $2.2.3\dots
2.2.7$.}
\sk{5.}{PUsh}{; Wir sind noch am PC.}
\sk{6.}{RENAME {\it dateiname dateiname}.BOO}{; Extension .BOO mu{\ss} sein!}
\sk{7.}{BOO2BIN {\it dateiname-mit-neuer-extension}}{;
ent-asciifiziert die Datei}
\sk{8.}{DEL {\it dateiname}.BOO}{; aufr\"aumen}
\sk{9.}{EXIT}{; zur\"uck zu MS-Kermit}
\sk{10.}{Connect}{; zur\"uck zu KERMIV}
\ska{11.}{\it Weiter wie gehabt.}
\section{3.   Die wichtigeren KERMIT-Befehle}
\section{3.1  KERMIV}
(Dies ist nat\"urlich ein Modcomp-spezifischer Abschnitt.)
\smallskip\noindent
\sq{SET Usl}{logical-file-name}{: gibt an, wo zu sendende Dateien stehen}
\sq{SENd}{membername}{: sende den Eintrag aus der vorgew\"ahlten USL}
\sq{SENd}{\at{}usl-lfn}{: sende alle Eintr\"age aus der angegebenen USL}
\sq{RECeive}{}{: empfange eine Datei oder eine Gruppe von Dateien}
\sq{Quit}{}{: Ende}
\sq{Help}{}{: liste die g\"ultigen Befehle}
\sq{STatus}{}{: zeige die gegenw\"artigen Parameter an}
\section{3.2  MS-Kermit}
\noindent
\sq{Connect}{}{: verbinde mit dem Wirtsrechner}
\sq{Send}{name}{: sende diese Datei oder Gruppe von Dateien}
\sq{Receive}{}{: empfange eine Datei oder eine Gruppe von Dateien}
\sq{Quit}{}{: Ende}
\sq{Help}{}{: liste die g\"ultigen Befehle}
\sq{STatus}{}{: zeige die gegenw\"artigen Parameter an}
\sq{SET Baud}{baudrate}{: \"andere die Baudrate}
\sq{SET PArity}{parit\"at}{: \"andere die benutzte Parit\"at}
\sq{SET DEFault-disk}{disk}{: \"andere die Default-Disk}
\sq{SET Key}{tastencode text}{: definiere eine Taste um (f\"ur
Emulationsmodus)}
\sq{DEFine}{name kommando}{: definiere ein Macro}
\sq{DO}{name}{: f\"uhre ein Macro aus}
\sq{PUsh}{}{: rufe den DOS-Kommando-Prozessor auf}
\sq{TAke}{name}{: f\"uhre die in der angegebenen Datei stehenden}
\sq{}{}{\phantom{: }Kermit-Kommandos aus}
\sq{\dots}{}{: zus\"atzlich einige DOS-Kommandos}
\medskip
An jeder Stelle w\"ahrend der Befehlseingabe kann man sich durch ``?'' anzeigen
lassen, wie man die angefangene Eingabe fortsetzen kann; dr\"uckt man
stattdessen die ``ESC''-Taste, wird der Befehl so weit vervollst\"andigt,
wie eindeutig m\"oglich ist. Noch nicht vollst\"andig eingegebene Kommandos
k\"onnen i.a. durch Ctrl-C abgebrochen werden.

W\"ahrend der Verbindung mit dem Wirtsrechner k\"onnen alle Tasten eine
spezielle Bedeutung haben; auch k\"onnen ankommende Zeichen in andere
\"ubersetzt werden. Einige \"Ubersetzungen, die sich bei uns als
sinnvoll erwiesen haben, sind im Anhang 1 verzeichnet; dar\"uberhinaus
kann f\"ur die richtige Handhabung deutscher Sonderzeichen gesorgt werden.
Alle diese Belegungen werden durch das Einlesen der Datei MSKERMIT.INI
erzeugt; ein Beispiel f\"ur deutsche Benutzer ist in Anhang 3 aufgelistet.
-- Dort sind auch zwei Macros {\smc deutsch} bzw. {\smc englisch} zum
einfachen Umschalten zwischen deutscher Anzeige (mit Umlauten) und
englischer Anzeige (mit eckigen Klammern usw.) enthalten sowie ein
Macro {\smc rundia} zum Einloggen und Verbinden.

Weitere Sonderbedeutungen k\"onnen in der Datei MSKERMIT.INI vorgegeben werden,
die beim Start des Programms sofort eingelesen wird.

MS-Kermit kann komplette Ablauf-Szenarios, sogenannte {\it Skripten}
oder {\it TAKE-Files}\,, verarbeiten; zum Beispiel lassen sich ganze
Datei-Transfers automatisieren. Beispiele daf\"ur sind in Anhang 2 aufgef\"uhrt.
\section{4. Weiterf\"uhrende Literatur und Bezugsquellen}
Zu jedem Kermit-Programm gibt es eine mehr oder weniger ausf\"uhrliche
Bedienungsanleitung, die zusammen mit dem Programm selber verteilt werden
sollte. Jeder Kermit-Benutzer darf (und sollte!) Programm und Dokumentation
an alle Interessenten kostenlos weitergeben. Wer im Rechnerverbund zu den
Computer-Netzen {\smc internet} oder {\smc bitnet} Zugang hat, kann sich
die aktuellen Programm-Versionen f\"ur alle verf\"ugbaren Systeme bei den
Rechnern {\smc cu20b.columbia.edu} oder {\smc cuvma.bitnet} besorgen;
{\smc internet}-Benutzer haben {\tt FTP}-Zugang, {\smc bitnet}-Benutzer
k\"onnen ein {\tt HELP}-Kommando (interaktiv oder als Mail) an den Server
{\smc kermsrv} schicken.
Dort gibt es auch viele weitere Informationen \"uber das Protokoll und seine
Implementierungen sowie ein elektronisches Diskussionsforum f\"ur Probleme
und Weiterentwicklungen des Systems.
\par
Von Frank da Cruz, einem der Initiatoren des Kermit-Protokolls, gibt es
au{\ss}erdem das Buch {\smc Kermit -- A File Transfer Protocol} (erschienen bei
Digital Press), das eine sehr gute und verst\"andliche Darstellung der
Probleme beim Datenaustausch zwischen Rechnern gibt und auch viele Hinweise
f\"ur Programmierer enth\"alt, die ein neues Kermit-Programm schreiben wollen
oder m\"ussen.
\newpage
\centerline{\bf Anhang 1: Ein Beispiel einer Tastenbelegung f\"ur MS-Kermit}
\medskip
Diese Tastenbelegungen gelten nur w\"ahrend des Emulations-Betriebs, also auf
der Wirtsrechner-Seite. Sie werden erzeugt durch das Einlesen der Datei
MSKERMIT.INI, die in Anhang 3 aufgelistet ist.
\section{1.   Kermit-Kommandos}\noindent
\st{Ctrl-A}{: \bw{BREAK}}
\st{Alt-A}{: \bw{BREAK}}
\st{Alt-C}{: zur\"uck zum PC}
\st{Alt-H}{: Kommando-Hilfsmen\"u}
\st{Alt-P}{: Aufruf des DOS-Kommando-Prozessors}
\st{Ctrl-PrtScr}{: Statuszeile an/aus}
\section{2.   Screen-Rollback}\noindent
\st{Ctrl-PgUp}{: eine Seite zur\"uck}
\st{Ctrl-PgDn}{: eine Seite nach unten}
\st{Shift-Ctrl-PgUp}{: eine Zeile zur\"uck}
\st{Shift-Ctrl-PgDn}{: eine Zeile nach unten}
\st{Ctrl-Home}{: an den Anfang des Rollback-Puffers}
\st{Ctrl-End}{: an das Ende des Rollback-Puffers}
\section{3. Zus\"atzliche Belegungen f\"ur ECMA-Terminals
(in VT102-Emulation)}\noindent
\st{Home}{: HOME (ECMA: Pfeil nach links oben)}
\st{Cursor-Tasten}{: wie \"ublich}
\st{PgUp}{: ECMA: PrevPage}
\st{PgDn}{: ECMA: NextPage}
\section{4.   Modcomp-Kurzbefehle}\noindent
\st{F1}{: JOB\bw{CR}}
\st{F2}{: DISKINFO\bw{CR}}
\st{F3}{: DUMP \-}
\st{F4}{: EXE SED\bw{CR}}
\st{F5}{: HELP \-}
\st{F6}{: EXE LIST LM\bw{CR}}
\st{F10}{: ' (Apostroph bzw. accent aigu)}
\st{Shift-Alt-F1}{: \bw{BREAK}RUN DIA\bw{CR}}
\st{Shift-Alt-F2}{: \bw{BREAK}STO DIA\bw{CR}}
\newpage
\centerline{\bf Anhang 2: N\"utzliche Dateien}
\medskip
Diese Szenarien sind nat\"urlich Wirtsrechner-spezifisch; weil aber die
Modcomp, f\"ur die sie geschrieben sind, keine sehr freundliche
Benutzer-Schnittstelle hat, sollte es nicht zu schwer sein, die Szenarien
f\"ur andere, freundlichere Rechner abzuwandeln. -- Der Inhalt der Dateien
ist in Anhang 4 aufgelistet.
\medskip\noindent\hangindent 30pt
1.   RUNDIA.SCR:\hb
     Startet Terminal-Sitzung auf der Modcomp und verbindet.\hb
     Vom Kermit-Prompt aus aufrufen mit {\tt TAKE RUNDIA.SCR}.
\par\noindent\hangindent 30pt
2.   SEND.BAT:\hb
     Schickt eine ASCII-Datei vom PC zur Modcomp und lagert sie dort in eine
     USL ein. Auf der Modcomp braucht vorher kein RUN DIA gegeben worden zu
     sein.\hb
     (Ben\"otigt die Dateien PRESDRC.SCR, SEND1.SCR, SEND2.SCR.)\hb
     Vom DOS-Prompt aus aufrufen mit
     {\tt SEND} {\it filename user-id usl-name}.
\par\noindent\hangindent 30pt
3.   RECV.BAT:\hb
     Schickt eine ASCII-Datei aus einer USL auf der Modcomp zum PC. Auf der
     Modcomp braucht vorher kein RUN DIA gegeben worden zu sein.\hb
     (Ben\"otigt die Dateien PRESDRC.SCR, RECV1.SCR, RECV2.SCR.)\hb
     Vom DOS-Prompt aus aufrufen mit
     {\tt RECV} {\it filename user-id usl-name}.
\par\noindent
4.   F\"ur bin\"aren Datei-Transfer:
\par\noindent\hangindent 30pt
a)   BIN2BOO.COM: formt bin\"are Datei um in eine ASCII-Datei. Die Ausgabe
     erfolgt auf eine Datei gleichen Namens, aber mit Extension .BOO.\hb
     Vom DOS-Prompt aus aufrufen mit {\tt BIN2BOO} {\it infile-name}.
\par\noindent\hangindent 30pt
b)   BOO2BIN.COM: kehrt den Proze{\ss} von BIN2BOO um.\hb
     Die Eingabedatei mu{\ss} den gleichen Namen, aber Extension .BOO haben.\hb
     Vom DOS-Prompt aus aufrufen mit {\tt BOO2BIN} {\it outfile-name}.
\par\noindent
\hphantom{b) }Auf der Modcomp-Seite stehen entsprechend als
     Prozeduren in der AJC zur Verf\"ugung:
\par\noindent\hangindent 30pt
c)   {\tt BIN2BOO} {\it user-id datei-fm-name usl-name} formt
     die bin\"are Datei
     {\sl user-id\_datei-fm-name} in eine ASCII-Datei um und
     lagert sie unter dem
     gleichen Namen in die USL {\sl user-id\_usl-name} ein.
\par\noindent\hangindent 30pt
d)   {\tt BOO2BIN} {\it user-id datei-fm-name usl-name} kehrt den
     Proze{\ss} von BIN2BOO um. Die Eingabe wird gelesen vom
     Eintrag {\sl datei-fm-name} in der USL
     {\sl user-id\_usl-name}, die Ausgabe erfolgt auf die Datei
     {\sl user-id\_datei-fm-name}, die vorher schon angelegt
     worden sein mu{\ss}.
\newpage
\centerline{\bf Anhang 3: Ein Beispiel f\"ur MSKERMIT.INI}
\medskip\noindent
{\tt
COMMENT --     MS-KERMIT-Initialisierungsfile f\"ur generellen Gebrauch
durch deutsche\hb
COMMENT --     Benutzer unter besonderer Ber\"ucksichtigung der
Modcomp-Erfordernisse\hb
COMMENT --     Gisbert W.Selke, WIdO, 19. November 1987               \hb
\hbox to 1cm{}                                                        \hb
COMMENT    *** DIESE DATEI SOLLTE NICHT GE\"ANDERT WERDEN! ***        \hb
COMMENT        (zwecks einfacherer Software-Wartung durch System-Menschen)\hb
\hbox to 1cm{}                                                        \hb
COMMENT --     Hier werden WIdO-Standard-Dinge definiert; am Ende wird\hb
COMMENT --     der TAKE-File MSLOCAL.INI aufgerufen, in dem jede      \hb
COMMENT --     Benutzerin eigene Dinge vereinbaren kann.              \hb
\hbox to 1cm{}                                                        \hb
\sta{set take-echo off}{; Das interessiert uns nicht.}
\sta{set terminal VT102}{; Emuliere ein DEC-VT102-Terminal}
\sta{set terminal roll on}{; Vor einer Eingabe zur\"uck an die richtige
Stelle}
\sta{set terminal wrap on}{; Am Zeilenende herumwickeln}
\sta{set display regular 8-bit}{; Damit wir Umlaute haben}
\sta{set warning on}{; Keine existierenden Dateien \"uberschreiben!}
\sta{set flow none}{; Kein xon/xoff}
\sta{set baud 19200}{; Die  meisten von uns k\"onnen so schnell laufen.}
\sta{set send start 30}{; Modcomp mag kein Ctrl-A als start-of-packet.}
\sta{set rec  start 30}{; Modcomp mag kein Ctrl-A als start-of-packet.}
\sta{set send packet 76}{; Sicherheitshalber nicht zu lange Pakete}
\sta{set retry 63}{; Manchmal hakt es\dots}
\hbox to 1cm{}\hb
COMMENT        Allgemeine Tastaturbelegung im WIdO:\hb
\sta{set key \bs  d1   \bs  Kbreak}{; CA: \bw{BREAK}}
\sta{set key \bs d270  $\lbrace\bs $d8$\rbrace$}{;
grauer gro{\ss}er Links-Pfeil wird Backspace}
\sta{set key \bs d315  $\lbrace$JOB\bs d13$\rbrace$}{;   F1 :
JOB\bw{CR}}
\sta{set key \bs d316  $\lbrace$DISKINFO\bs d13$\rbrace$}{;
F2 : DISKINFO\bw{CR}}
\sta{set key \bs d317  $\lbrace$DUMP \-$\rbrace$}{;   F3 : DUMP}
\sta{set key \bs d318  $\lbrace$EXE SED\bs d13$\rbrace$}{;
F4 : EXE SED\bw{CR}}
\sta{set key \bs d319  $\lbrace$HELP $\rbrace$}{;   F5 : HELP}
\sta{set key \bs d320  $\lbrace$EXE LIST LM\bs d13$\rbrace$}{;
F6 : EXE LIST LM\bw{CR}}
\sta{set key \bs d321  $\lbrace\rbrace$}{;   F7 : nix!}
\sta{set key \bs d322  $\lbrace\rbrace$}{;   F8 : nix!}
\sta{set key \bs d323  $\lbrace\rbrace$}{;   F9 : nix!}
\sta{set key \bs d324  $\lbrace$'$\rbrace$}{;   F10: Apostroph bzw.
accent aigu}
\sta{set key \bs d327  $\lbrace\bs $d27\lbrack H$\rbrace$}{;
Home: HOME (wer h\"atte das gedacht)}
\sta{; set key \bs d328  \bs Kuparr}{;
Aufw\"arts-Pfeil: (vordefiniert)}
\sta{set key \bs d329  $\lbrace\bs $d27\lbrack V$\rbrace$}{;
PgUp: PREV PAGE}
\sta{set key \bs d330  $\lbrace - \rbrace$}{;  graues Minus : -}
\sta{; set key \bs d331  \bs Klfarr}{;
Links-Pfeil  : (vordefiniert)}
\sta{; set key \bs d333  \bs Krtarr}{;
Rechts-Pfeil   : (vordefiniert)}
\sta{set key \bs d334  $\lbrace + \rbrace$}{;  graues Plus : +}
\sta{set key \bs d335  $\lbrace\rbrace$}{;  End : nix!}
\sta{; set key \bs d336  \bs Kdnarr}{;
Abw\"arts-Pfeil : (vordefiniert)}
\sta{set key \bs d337  $\lbrace\bs $d27$\lbrack$ U$\rbrace$}{;
PgDn: NEXT PAGE}
\sta{set key \bs d852  $\lbrace\rbrace$}{;  SF1 : nix!}
\sta{set key \bs d853  $\lbrace\rbrace$}{;  SF2 : nix!}
\sta{set key \bs d854  $\lbrace\rbrace$}{;  SF3 : nix!}
\sta{set key \bs d855  $\lbrace\rbrace$}{;  SF4 : nix!}
\sta{set key \bs d856  $\lbrace\rbrace$}{;  SF5 : nix!}
\sta{set key \bs d857  $\lbrace\rbrace$}{;  SF6 : nix!}
\sta{set key \bs d858  $\lbrace\rbrace$}{;  SF7 : nix!}
\sta{set key \bs d859  $\lbrace\rbrace$}{;  SF8 : nix!}
\sta{set key \bs d860  $\lbrace\rbrace$}{;  SF9 : nix!}
\sta{set key \bs d861  $\lbrace\rbrace$}{;  SF10: nix!}
\sta{set key \bs d1394 \bs Kmodeline}{; CPrtScr:
Statuszeile an/aus}
\sta{set key \bs d1397 \bs Kendscn}{;  CEnd:
roll down to end}
\sta{set key \bs d1398 \bs Kdnscn}{; CPgDn:
roll down one screen}
\sta{set key \bs d1399 \bs Khomscn}{; CHome:
roll up to beginning}
\sta{set key \bs d1412 \bs Kupscn}{; CPgUp:
roll up one screen}
\sta{set key \bs d1910 \bs Kdnone}{; SCPgDn:
roll down one line}
\sta{set key \bs d1924 \bs Kupone}{; SCPgUp:
roll up one line}
\sta{set key \bs d2329 \bs Kdos}{; AP   :
push to DOS}
\sta{set key \bs d2334 \bs Kbreak}{; AA   :
\bw{BREAK}}
\sta{set key \bs d2335 $\lbrace\rbrace$}{; AS   : nix!}
\sta{; set key \bs d2339 \bs Khelp}{; AH   :
connect help (vordefiniert)}
\sta{set key \bs d2349 $\lbrace\rbrace$}{; AX   : nix!}
\sta{set key \bs d2350 \bs Kexit}{; AC   :
zur\"uck zum PC}
\sta{set key \bs d2352 $\lbrace\rbrace$}{; AB   : nix!}
\sta{set key \bs d2434 $\lbrace\rbrace$}{; A$\sim$ : nix!}
\sta{set key \bs d2435 $\lbrace\rbrace$}{; A'   : nix!}
set key \bs d2920 $\lbrace\bs $d1\qquad\qquad\qquad
RUN DIA\bs d13$\rbrace$\hb
\sta{}{; SAF1 : \bw{BREAK}RUN DIA\bw{CR}}
set key \bs d2921 $\lbrace\bs $d1\qquad\qquad\qquad
STO DIA\bs d13$\rbrace$\hb
\sta{}{; SAF2 : \bw{BREAK}STO DIA\bw{CR}}
\hbox to 1cm{}\hb
COMMENT        Deutsche Spezialzeichen werden zu 7-Bit-ASCII:\hb
\sta{set key \bs d132  $\lbrace\bs $d123$\rbrace$}{; \"a wird zu
linker geschweifter Klammer}
\sta{set key \bs d142  $\lbrace\lbrack\rbrace$}{; \"A wird zu linker
eckiger Klammer}
\sta{set key \bs d148  $\lbrace\mid\rbrace$}{; \"o wird zu senkrechtem
Strich}
\sta{set key \bs d153  $\lbrace\bs \rbrace$}{; \"O wird zu
umgekehrtem Schr\"agstrich}
\sta{set key \bs d129  $\lbrace\bs $d125$\rbrace$}{; \"u wird zu
rechter geschweifter Klammer}
\sta{set key \bs d154  $\lbrace\rbrack\rbrace$}{; \"U wird zu rechter
eckiger Klammer}
\sta{set key \bs d225  $\lbrace\sim\rbrace$}{; {\ss}   wird zu Tilde}
\hbox to 1cm{}\hb
COMMENT        Empfangene Sonderzeichen werden richtig dargestellt:\hb
\sta{set trans inp $\lbrace\;\bs $d132}{; linke  geschweifte Klammer als
\"a}
\sta{set trans inp $\lbrack\;\bs $d142}{; linke  eckige Klammer als \"A}
\sta{set trans inp $\mid\;\bs $d148}{; senkrechter Strich als \"o}
\sta{set trans inp $\bs \;\bs $d153}{; umgekehrter Schr\"agstrich
als \"O}
\sta{set trans inp $\rbrace\;\bs $d129}{; rechte geschweifte Klammer als
\"u}
\sta{set trans inp $\rbrack\;\bs $d154}{; rechte eckige Klammer als \"U}
\sta{set trans inp $\sim\;\bs $d225}{; Tilde als {\ss}}
\hbox to 1cm{}\hb
COMMENT  Zwei Macros zum einfacheren Umschalten:\hb
\hbox to 8cm{define deutsch  set translation input on\hfill}
; deutsche  Darstellung\hb
\hbox to 8cm{define englisch set translation input off\hfill}
; englische Darstellung\hb
\sta{do deutsch}{; normalerweise deutsche Darstellung}
\hbox to 1cm{}\hb
\sta{define rundia  take rundia.scr}{; Zum einfacheren Einloggen}
\hbox to 1cm{}\hb
COMMENT Tabulatoren stehen da, wo der Editor SED sie erwartet:\hb
\sta{set terminal tabstops clear all}{; Erst alle weg, und dann:}
set terminal tabstops at 7 21 36 73\hb
\hbox to 1cm{}\hb
COMMENT IBM (Macro f\"ur Linemode-IBM-Mainframe-Verbindung) ist vordefiniert
\hbox to 1cm{}\hb
COMMENT        Macro f\"ur typisches IBM-Mainframe-7171-Front-End:\hb
define 7171 set timer on,set par ev,set flo x,set hand no,set loc off\hb
\hbox to 1cm{}\hb
COMMENT Macro f\"ur Kommunikation mit DEC \& anderen Full-Duplex-Rechnern:\hb
define DEC set timer off,set par no,set flo x,set hand no,set loc off\hb
\hbox to 1cm{}\hb
COMMENT Jetzt wird eine Benutzer-spezifische Konfigurations-Datei
eingelesen:\hb
take mslocal.ini\hb
\hbox to 1cm{}\hb
COMMENT -- Ende von MSKERMIT.INI\hb
\newpage
\centerline{\bf Anhang 4: Beispiele f\"ur TAKE- und Batch-Files}
\medskip\noindent
{\tt
\bw{\bw{RUNDIA.SCR}}\par\noindent
\sta{set take-echo off}{; das interessiert die Benutzerin nicht}
COMMENT           `Einloggen' bei der Modcomp\hb
COMMENT           Gisbert W.Selke, 29. Oktober 1987\hb
echo     Bitte Geduld - das RUN DIA dauert etwas\dots\bs d13\hb
\sta{set input echo on}{; das Echo der Modcomp interessiert aber}
\sta{clear}{; Putzen der Leitung}
\sta{set input timeout proceed}{; sicherheitshalber}
\sta{output \bs b;}{; ein BREAK}
\sta{pause 1}{; langsam!}
\sta{output \bs b;}{; noch ein BREAK -- sicherheitshalber}
\sta{input 2 >;}{; Ist er da, der TMP\dots}
\sta{pause 2}{; langsam!}
\sta{output RUN DIA\bs d13;}{; Start}
\sta{pause 1}{; falls sie schon lief:}
\sta{output \bs d32\bs d13;}{; ein \bw{CR}}
echo  Terminal-Sitzung ist gestartet!\bs d13\hb
\sta{connect}{; r\"uber auf die andere Seite}
COMMENT          Ende des RUNDIA-Scripts\hb
%
\medskip\noindent
\bw{\bw{SEND.BAT}}}\hb
echo off\hb
Rem  Datei-Transfer-Utility PC $\longrightarrow$ Modcomp\hb
Rem  Gisbert W.Selke, 19. November 1987, nach einer Idee von Joe Doupnik\hb
Rem  Zur Benutzung mit MS-Kermit 2.30 oder sp\"ater.\hb
if ``.\%2'' == ``.'' goto gebrauch\hb
if ``.\%3'' == ``.'' goto gebrauch\hb
if exist \%1 goto weiter\hb
echo       Angegebene Datei existiert nicht!\hb
:gebrauch\hb
echo       Gebrauchsanweisung:  SEND  filename  user-id usl-name\hb
goto fertig\hb
:weiter\hb
echo Ran an die Modcomp! Datei-Transfer von \%1 vom PC in die
Modcomp-USL \%2\_\%3\hb
kermit tak presdrc.scr,out AT \%2 UUU \%3\bs d13,tak send1.scr,s
\%1,tak send2.scr, \hb
if errorlevel 1 goto fehler\hb
echo Datei-Transfer von \%1 vom PC in die Modcomp-USL \%2\_\%3 ist
beendet\hb
goto fertig\hb
:fehler\hb
echo Datei-Transfer von \%1 vom PC in die Modcomp-USL \%2\_\%3 ist
schiefgegangen!\hb
:fertig\hb
echo on\hb
\medskip\noindent
%
\bw{\bw{PRESDRC.SCR}}\par\nobreak\noindent
\sta{set take-echo off}{; uninteressant}
COMMENT  Datei-Transfer-Utility , Vorbereitungsteil\hb
COMMENT         Gisbert W.Selke, 29. Oktober 1987\hb
echo \bs d13\bs d10 Vorbereiten des Transfers\dots\hb
\sta{set input echo on}{; was sagt die Modcomp dazu}
\sta{set input timeout proceed}{; notfalls am Ende eine Fehlermeldung}
\sta{clear}{; Leitung putzen}
COMMENT             sicherheitshalber ein Einloggen probieren\hb
echo  \bs d13\bs d10Einloggen bei der Modcomp -- bitte
etwas Geduld\hb
\sta{output \bs b;}{; ein \bw{BREAK}}
\sta{pause 1}{; langsam!}
\sta{output \bs b;}{; noch ein \bw{BREAK} -- sicherheitshalber}
\sta{input 2 >;}{; ist er da, der TMP\dots}
\sta{pause 1}{; langsam!}
\sta{output RUN DIA\bs d13;}{; Start}
\sta{pause 2}{; und falls sie schon lief:}
\sta{output \bs d32\bs d13;}{; nix tun, Modcomp}
\sta{output JOB\bs d13;}{; noch schnell aufr\"aumen}
\sta{input 60 \$;}{; in Ordnung}
COMMENT         Jetzt ein Attach, dann Take send1.scr / recv1.scr
\medskip\noindent
%
\bw{\bw{SEND1.SCR}}\par\nobreak\noindent
COMMENT  Datei-Transfer-Utility PC $\longrightarrow$ Modcomp, Teil 1\hb
COMMENT           Gisbert W.Selke, 29. Oktober 1987\hb
\sta{pause 1}{; langsam}
\sta{input 10 OPEN;}{; Attach abwarten}
\sta{input 2 \$;}{; Attach beendet}
\sta{output KERMIT\bs d13;}{; Kermiv starten}
\sta{input 40 MAXIV>;}{; Kermiv ist da}
\sta{output SET USL UUU\bs d13;}{; USL passend vorw\"ahlen}
\sta{input 10 MAXIV>;}{; Prompt abwarten}
\sta{output RECEIVE\bs d13;}{; Erwarte die Datei}
\sta{pause 1}{; langsam}
echo \bs d13\bs d10Datei-Senden beginnt\hb
COMMENT   Ende von Teil 1 - jetzt ein SEND ..., dann TAKE SEND2.SCR\hb
\medskip\noindent
%
\bw{\bw{SEND2.SCR}}\par\nobreak\noindent
COMMENT  Datei-Transfer-Utility PC $\longrightarrow$ Modcomp, Teil 2\hb
COMMENT       Gisbert W.Selke, 29. Oktober 1987\hb
echo \bs d13\bs d10Aufr\"aumen beginnt\hb
\sta{output \bs d32\bs d13;}{; einmal nix tun}
\sta{pause 1}{; langsam}
\sta{output quit\bs d13;}{; Schlu{\ss}, Kermiv}
\sta{input 10 (Y/N);}{; Default-Werte annehmen}
\sta{pause 1}{; langsam}
\sta{output Y\bs d13;}{; ja, Default-Werte sind OK}
\sta{input 3  (C/R);}{; Cat oder Recat}
\sta{pause 1}{; langsam}
\sta{output R\bs d13;}{; Recat sicherheitshalber}
\sta{input 60 \$END;}{; bist Du fertig}
\sta{input \$;}{; jetzt endg\"ultig}
\sta{pause 1}{; Gnadenfrist}
\sta{output JOB\bs d13;}{; Laden dicht machen}
\sta{input 60 \$;}{; das war's}
quit\hb
\medskip\noindent
%
\bw{\bw{RECV.BAT}}\par\nobreak\noindent
echo off\hb
Rem Datei-Transfer-Utility Modcomp $\longrightarrow$ PC\hb
Rem Gisbert W.Selke, 19. November 1987, nach einer Idee von Joe Doupnik\hb
Rem Zur Benutzung mit MS-Kermit 2.30 oder sp\"ater\hb
if ``.\%1'' == ``.'' goto gebrauch\hb
if ``.\%2'' == ``.'' goto gebrauch\hb
if ``.\%3'' == ``.'' goto gebrauch\hb
goto weiter\hb
:gebrauch\hb
echo Gebrauchsanweisung: RECV  membername  user-id usl-name\hb
goto fertig\hb
:weiter\hb
echo Ran an die Modcomp! Datei-Transfer von \%1 in der
Modcomp-USL %2\_\%3 zum PC\hb
kermit ta presdrc.scr,o AT \%2 USL \%3\bs d13,ta recv1.scr,o
SEN \%1\bs d13,ta recv2.scr\hb
if errorlevel 2 goto fehler\hb
echo Datei-Transfer von \%1 in der Modcomp-USL \%2\_\%3 zum PC ist
beendet\hb
goto fertig\hb
:fehler\hb
echo Datei-Transfer von \%1 in der Modcomp-USL \%2\_\%3 zum PC ist
schiefgegangen!\hb
:fertig
echo on\hb
\medskip\noindent
%
\bw{\bw{RECV1.SCR}}\par\nobreak\noindent
COMMENT  Datei-Transfer-Utility Modcomp $\longrightarrow$ PC, Teil 1\hb
COMMENT       Gisbert W.Selke, 29. Oktober 1987\hb
echo \bs d13\bs d10Modcomp-Kermiv wird gestartet\hb
\sta{input 10 OPEN;}{; Attach gelungen}
\sta{input 2 \$;}{; und beendet}
\sta{output KERMIT\bs d13;}{; Kermiv-Start}
\sta{input 40 MAXIV>;}{; da ist er}
\sta{output SET DELAY 1\bs d13;}{; voran jetzt}
\sta{input 5  MAXIV>;}{; da ist er}
COMMENT Jetzt ein SEND ..., dann TAKE RECV2.SCR\hb
\medskip\noindent
%
\bw{\bw{RECV2.SCR}}\par\nobreak\noindent
COMMENT  Datei-Transfer-Utility Modcomp $\longrightarrow$ PC, Teil 2\hb
COMMENT       Gisbert W.Selke, 29. Oktober 1987\hb
echo \bs d13\bs d10Datei-Empfang beginnt\hb
\sta{receive}{; MS-Kermit}
echo \bs d13\bs d10Aufr\"aumen beginnt\hb
\sta{output \bs d32\bs d13;}{; einmal nix tun}
\sta{output \bs d32\bs d13;}{; nochmal nix tun}
\sta{input 5 MAXIV>;}{; langsam zum Ende kommen}
\sta{output QUIT\bs d13;}{; Kermiv-Ende}
\sta{input 10 \$END;}{; Prozedur beendet}
\sta{pause 1}{; langsam\dots}
\sta{output JOB\bs d13;}{; und Schlu{\ss}}
\sta{pause 1}{; langsam}
\sta{quit}{; MS-Kermit Ende}
\medskip\noindent%
}%
\bw{\bw{Ende der Beispiel-Dateien}}
\bigskip\noindent
(Ende der Kermit-Einf\"uhrung)
\bye
