15.75cm 24cm 9000 =0pt
Eine Einführung in Kermit


-2pt

Gisbert W. Selke (RECK@DBNUAMA1.BITNET)
Wissenschaftliches Institut der Ortskrankenkassen
Kortrijker Straße 1, D-5300 Bonn 2, West Germany
Oktober 1987


1. Allgemeines


Kermit ist ein eingetragenes Warenzeichen der Henson Associates, der Muppet-Erfinder, und außerdem ein urheberrechtlich geschütztes Protokoll der Columbia-Universität, New York, für sicheren Datentransfer zwischen Computern. Programme, die auf diesem Protokoll beruhen, werden kostenlos abgegeben (bis auf eine Gebühr, um die Kopierkosten zu decken); es gibt solche Programme mittlerweile für eine sehr große, ständig wachsende Zahl von Rechnern, so daß ein relativ problemloser Austausch von Daten zwischen verschiedensten Systemen möglich ist.

Ein solcher Transfer benutzt eine serielle Datenleitung; z.B. können zwei PCs über Modems miteinander verbunden sein, oder ein Rechner – der sog. lokale Rechner – kann an die Terminal-Leitung eines anderen Rechners – des entfernten Rechners oder 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öllig transparent – durch einen speziellen Tastendruck ist es aber jederzeit möglich, zur PC-Seite zurückzukehren und dem lokalen Kermit Befehle zu geben; man kann auch das Programm beenden und auf die Betriebssystem-Ebene zurückkehren. (Dann sollten allerdings keine Daten mehr vom Wirtsrechner an sein – vermeintliches – Terminal abgeschickt werden...)

Für die eigentliche Aufgabe des Kermit-Protokolls, den sicheren Datentransfer, ist es aber nötig, daß 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ück auf die PC-Seite und fordert den lokalen Kermit auf, eine Datei zu empfangen (bzw. zu senden).

Jetzt kann man sich bequem zurücklehnen, denn alles weitere geht automatisch: Die beiden Kermits unterhalten sich miteinander, wobei sie sicherstellen, daß sie sich nicht gegenseitig mißverstehen; im Laufe dieser Unterhaltung werden die gewünschten Daten übertragen. 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ächen verschiedener Kermits sind sich mehr oder weniger ähnlich; jeder bietet zusätzlich zu den nötigsten Kommandos noch einige weitere, z.B. zum Setzen von Übertragungsparametern (Baud rate, parity, ...), oder eine Betriebssystem-Schnittstelle. Jeder Kermit sollte das Kommando ``HELP'' verstehen; darüber hinaus kann es weitere Hilfsmittel zur Benutzerführung geben. Wie man vom Wirtsrechner zum PC zurückkehrt, wird i.a. auch jederzeit angezeigt.

Wir werden in den Beispielen davon ausgehen, daß der Wirtsrechner eine Modcomp ist und KERMIV (von Setpoint Inc.) als Kermit-Programm zur Verfügung steht. – Wenngleich das gesamte Kermit-Protokoll auf der ASCII-Repräsentation von Zeichen beruht, ist es übrigens auch möglich, mit EBCDIC-Wirtsrechnern zu kommunizieren. Der Wirtsrechner-Kermit besorgt in diesem Fall die Konversion.

– Zusammengefaßt heißt das also, daß Kermit zwei verschiedene Aufgaben beherrscht, die Terminal-Emulation und den Dateitransfer. Während des Dateitransfers stellt das Kermit-Protokoll durch den Dialog zweier Kermit-Programme sicher, daß die Daten korrekt übertragen 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ß auf Knopfdruck wahlweise andere Dienste des lokalen Rechners zur Verfügung stehen.


2. Der Ablauf einer Kermit-Sitzung (PC-Wirtsrechner-Verbindung)


(Für Kermit-Befehle können Groß- und Kleinschreibung beliebig gemischt werden; Befehle können abgekürzt werden, sofern sie eindeutig bleiben. Im folgenden ist die Minimalform der Befehle durch große Buchstaben gekennzeichnet. Kursiv geschriebene Wörter beschreiben, was der Benutzer hier eingeben soll. Ein Semikolon markiert den Anfang eines Kommentars.)


2.1 Terminalbetrieb


to .8cm1.    Starte den PC.
to .8cm2.    Wähle das Directory an, das KERMIT.EXE enthält.
to .8cm3.    KERMIT
to .8cm4.    Connect
to .8cm5.    to 8cmShift-Alt-F1     ; guten Morgen, Modcomp
to .8cm    $\vdots$
to .8cm1000.    to 8cmShift-Alt-F2     ; tschüs, Modcomp
to .8cm1001.    to 8cmAlt-C     ; zurück zum PC
to .8cm1002.    Quit
to .8cm1003.    Schalte den PC aus.

Die Schritte 5 bzw. 1000 sehen bei anderen Wirtsrechnern natürlich anders aus – sie müssen durch die jeweiligen Logon- bzw. Logoff-Schritte ersetzt werden.


2.2 Textdatei-Transfer


Bei vielen Wirtsrechnern wird der Ablauf einfacher sein als hier gezeigt; das liegt hauptsächlich daran, daß auf der Modcomp keine allgemein verbindliche File-Manager-Schnittstelle vorliegt.


to .8cm1.    Verbinde Dich mit der Modcomp wie in 2.1.1...2.1.5.
to .8cm2.    Attache alle USLs, aus denen bzw. in die Du Daten transferieren willst;
to .8cm    wähle als logical file name nicht USL!
to .8cm3.    to 8cmKERMIT     ; jetzt läuft KERMIV.
to .8cm4.    to 8cmSET Usl logical-file-name     ; USL zeigt dann auf eine Deiner USLs
to .8cm5.a    to 8cmto 3cm SENd member-name    oder  to .8cm5.b    to 3cmRECeive    ; vom Wirtsrechner aus gesehen
to .8cm6.    to 8cmAlt-C     ; zurück zum PC
to .8cm7.a    to 8cmto 3cm Receive     oder  to .8cm7.b    to 3cmSend dateiname    ; vom PC aus gesehen
to .8cm    to 8cm$\vdots$     ; warten!
to .8cm8.    to 8cmConnect     ; zurück zur Modcomp
to .8cm    Wiederhole Schritte 4...8 so oft wie nötig.
to .8cm9.    to 8cmQuit     ; Ende KERMIV
to .8cm10.    Beantworte ggf. alle Fragen, die KERMIV Dir stellt.
to .8cm11.    JOB
to .8cm    Ab hier normaler Terminalbetrieb.

KERMIV arbeitet nur mit USL-Einträgen; empfangene Dateien werden normalerweise unter einem Namen eingetragen, der dem PC-Dateinamen ähnlich ist. Modcomp-Dateien werden auf dem PC normalerweise unter dem Originalnamen abgelegt (mit leerer Extension).


2.3 Transfer binärer Dateien


Bei vielen Wirtsrechnern wird sich diese Art von Dateitransfer nicht vom Text-Transfer unterscheiden; bei richtigen Parametersetzungen (hauptsächlich Parität) stellen die Kermits auch die Übertragung von 8-Bit-Daten sicher. Ob Daten in der binären Darstellung des einen Rechners für den anderen Rechner überhaupt einen Sinn ergeben, ist i.a. natürlich nicht klar. Die Modcomp-spezifische Art der Dateiverwaltung, die KERMIV benutzt, bereitet auch hier Probleme. Deswegen müssen solche Dateien vor- und nachbehandelt werden. Eine Möglichkeit 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.


Für den Transfer vom PC zur Modcomp:


to .8cm1.    Bereite den Dateitransfer vor wie in 2.2.1...2.2.4.
to .8cm2.    to 8cmAlt-P     ; rufe den DOS-Kommando-Prozessor
to .8cm    to 8cm     des PC auf
to .8cm3.    to 8cmBIN2BOO dateiname     ; erzeugt ASCII-Datei gleichen Namens,
to .8cm    to 8cm     Extension .BOO
to .8cm4.    to 8cmEXIT     ; zurück in KERMIVs feuchte Arme
to .8cm5.    Transferiere die .BOO-Datei wie gehabt.
to .8cm6.    Beende KERMIV ordentlich, aber ohne $JOB!
to .8cm7.    Lege eine Datei an, die die binären Daten aufnehmen soll.
to .8cm8.    to 8cmBOO2BIN usl-member-name   usl-lfn   output-kanal     ; erzeugt binäre Datei
to .8cm9.    JOB
to .8cm10.    Lösche irgendwann die .BOO-Datei auf dem PC.


Für den Transfer von der Modcomp zum PC:


to .8cm1.    Verbinde Dich mit der Modcomp wie in 2.1.1...2.1.5.
to .8cm2.    Attache die binäre Datei und eine USL zur Zwischenspeicherung.
to .8cm3.    to 8cmBIN2BOO datei-kanal   usl-member-name   usl-lfn     ; Asciifizieren
to .8cm4.    Transferiere den erzeugten USL-Eintrag wie in 2.2.3...2.2.7.
to .8cm5.    to 8cmPUsh     ; Wir sind noch am PC.
to .8cm6.    to 8cmRENAME dateiname dateiname.BOO     ; Extension .BOO muß sein!
to .8cm7.    to 8cmBOO2BIN dateiname-mit-neuer-extension     ; ent-asciifiziert die Datei
to .8cm8.    to 8cmDEL dateiname.BOO     ; aufräumen
to .8cm9.    to 8cmEXIT     ; zurück zu MS-Kermit
to .8cm10.    to 8cmConnect     ; zurück zu KERMIV
to .8cm11.    Weiter wie gehabt.


3. Die wichtigeren KERMIT-Befehle



3.1 KERMIV


(Dies ist natürlich ein Modcomp-spezifischer Abschnitt.)

to 5cmSET Usl logical-file-name    : gibt an, wo zu sendende Dateien stehen
to 5cmSENd membername    : sende den Eintrag aus der vorgewählten USL
to 5cmSENd @usl-lfn    : sende alle Einträge aus der angegebenen USL
to 5cmRECeive     : empfange eine Datei oder eine Gruppe von Dateien
to 5cmQuit     : Ende
to 5cmHelp     : liste die gültigen Befehle
to 5cmSTatus     : zeige die gegenwärtigen Parameter an


3.2 MS-Kermit


to 5cmConnect     : verbinde mit dem Wirtsrechner
to 5cmSend name    : sende diese Datei oder Gruppe von Dateien
to 5cmReceive     : empfange eine Datei oder eine Gruppe von Dateien
to 5cmQuit     : Ende
to 5cmHelp     : liste die gültigen Befehle
to 5cmSTatus     : zeige die gegenwärtigen Parameter an
to 5cmSET Baud baudrate    : ändere die Baudrate
to 5cmSET PArity parität    : ändere die benutzte Parität
to 5cmSET DEFault-disk disk    : ändere die Default-Disk
to 5cmSET Key tastencode text    : definiere eine Taste um (für Emulationsmodus)
to 5cmDEFine name kommando    : definiere ein Macro
to 5cmDO name    : führe ein Macro aus
to 5cmPUsh     : rufe den DOS-Kommando-Prozessor auf
to 5cmTAke name    : führe die in der angegebenen Datei stehenden
to 5cm    Kermit-Kommandos aus
to 5cm...    : zusätzlich einige DOS-Kommandos


An jeder Stelle während der Befehlseingabe kann man sich durch ``?'' anzeigen lassen, wie man die angefangene Eingabe fortsetzen kann; drückt man stattdessen die ``ESC''-Taste, wird der Befehl so weit vervollständigt, wie eindeutig möglich ist. Noch nicht vollständig eingegebene Kommandos können i.a. durch Ctrl-C abgebrochen werden.

Während der Verbindung mit dem Wirtsrechner können alle Tasten eine spezielle Bedeutung haben; auch können ankommende Zeichen in andere übersetzt werden. Einige Übersetzungen, die sich bei uns als sinnvoll erwiesen haben, sind im Anhang 1 verzeichnet; darüberhinaus kann für die richtige Handhabung deutscher Sonderzeichen gesorgt werden. Alle diese Belegungen werden durch das Einlesen der Datei MSKERMIT.INI erzeugt; ein Beispiel für 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önnen in der Datei MSKERMIT.INI vorgegeben werden, die beim Start des Programms sofort eingelesen wird.

MS-Kermit kann komplette Ablauf-Szenarios, sogenannte Skripten oder TAKE-Files  , verarbeiten; zum Beispiel lassen sich ganze Datei-Transfers automatisieren. Beispiele dafür sind in Anhang 2 aufgeführt.


4. Weiterführende Literatur und Bezugsquellen


Zu jedem Kermit-Programm gibt es eine mehr oder weniger ausführliche 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ür alle verfügbaren Systeme bei den Rechnern {\smc cu20b.columbia.edu} oder {\smc cuvma.bitnet} besorgen; {\smc internet}-Benutzer haben FTP-Zugang, {\smc bitnet}-Benutzer können ein HELP-Kommando (interaktiv oder als Mail) an den Server {\smc kermsrv} schicken. Dort gibt es auch viele weitere Informationen über das Protokoll und seine Implementierungen sowie ein elektronisches Diskussionsforum für Probleme und Weiterentwicklungen des Systems.

Von Frank da Cruz, einem der Initiatoren des Kermit-Protokolls, gibt es außerdem das Buch {\smc Kermit -- A File Transfer Protocol} (erschienen bei Digital Press), das eine sehr gute und verständliche Darstellung der Probleme beim Datenaustausch zwischen Rechnern gibt und auch viele Hinweise für Programmierer enthält, die ein neues Kermit-Programm schreiben wollen oder müssen.

Anhang 1: Ein Beispiel einer Tastenbelegung für MS-Kermit


Diese Tastenbelegungen gelten nur während des Emulations-Betriebs, also auf der Wirtsrechner-Seite. Sie werden erzeugt durch das Einlesen der Datei MSKERMIT.INI, die in Anhang 3 aufgelistet ist.


1. Kermit-Kommandos


to 5cmCtrl-A    : 〈BREAK〉
to 5cmAlt-A    : 〈BREAK〉
to 5cmAlt-C    : zurück zum PC
to 5cmAlt-H    : Kommando-Hilfsmenü
to 5cmAlt-P    : Aufruf des DOS-Kommando-Prozessors
to 5cmCtrl-PrtScr    : Statuszeile an/aus


2. Screen-Rollback


to 5cmCtrl-PgUp    : eine Seite zurück
to 5cmCtrl-PgDn    : eine Seite nach unten
to 5cmShift-Ctrl-PgUp    : eine Zeile zurück
to 5cmShift-Ctrl-PgDn    : eine Zeile nach unten
to 5cmCtrl-Home    : an den Anfang des Rollback-Puffers
to 5cmCtrl-End    : an das Ende des Rollback-Puffers


3. Zusätzliche Belegungen für ECMA-Terminals (in VT102-Emulation)


to 5cmHome    : HOME (ECMA: Pfeil nach links oben)
to 5cmCursor-Tasten    : wie üblich
to 5cmPgUp    : ECMA: PrevPage
to 5cmPgDn    : ECMA: NextPage


4. Modcomp-Kurzbefehle


to 5cmF1    : JOB〈CR〉
to 5cmF2    : DISKINFO〈CR〉
to 5cmF3    : DUMP
to 5cmF4    : EXE SED〈CR〉
to 5cmF5    : HELP
to 5cmF6    : EXE LIST LM〈CR〉
to 5cmF10    : ' (Apostroph bzw. accent aigu)
to 5cmShift-Alt-F1    : 〈BREAK〉RUN DIA〈CR〉
to 5cmShift-Alt-F2    : 〈BREAK〉STO DIA〈CR〉

Anhang 2: Nützliche Dateien


Diese Szenarien sind natürlich Wirtsrechner-spezifisch; weil aber die Modcomp, für die sie geschrieben sind, keine sehr freundliche Benutzer-Schnittstelle hat, sollte es nicht zu schwer sein, die Szenarien für andere, freundlichere Rechner abzuwandeln. – Der Inhalt der Dateien ist in Anhang 4 aufgelistet.


30pt 1. RUNDIA.SCR:
Startet Terminal-Sitzung auf der Modcomp und verbindet.
Vom Kermit-Prompt aus aufrufen mit TAKE RUNDIA.SCR.

30pt 2. SEND.BAT:
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.
(Benötigt die Dateien PRESDRC.SCR, SEND1.SCR, SEND2.SCR.)
Vom DOS-Prompt aus aufrufen mit SEND filename user-id usl-name.

30pt 3. RECV.BAT:
Schickt eine ASCII-Datei aus einer USL auf der Modcomp zum PC. Auf der Modcomp braucht vorher kein RUN DIA gegeben worden zu sein.
(Benötigt die Dateien PRESDRC.SCR, RECV1.SCR, RECV2.SCR.)
Vom DOS-Prompt aus aufrufen mit RECV filename user-id usl-name.

4. Für binären Datei-Transfer:

30pt a) BIN2BOO.COM: formt binäre Datei um in eine ASCII-Datei. Die Ausgabe erfolgt auf eine Datei gleichen Namens, aber mit Extension .BOO.
Vom DOS-Prompt aus aufrufen mit BIN2BOO infile-name.

30pt b) BOO2BIN.COM: kehrt den Prozeß von BIN2BOO um.
Die Eingabedatei muß den gleichen Namen, aber Extension .BOO haben.
Vom DOS-Prompt aus aufrufen mit BOO2BIN outfile-name.

b) Auf der Modcomp-Seite stehen entsprechend als Prozeduren in der AJC zur Verfügung:

30pt c) BIN2BOO user-id datei-fm-name usl-name formt die binäre Datei user-id_datei-fm-name in eine ASCII-Datei um und lagert sie unter dem gleichen Namen in die USL user-id_usl-name ein.

30pt d) BOO2BIN user-id datei-fm-name usl-name kehrt den Prozeß von BIN2BOO um. Die Eingabe wird gelesen vom Eintrag datei-fm-name in der USL user-id_usl-name, die Ausgabe erfolgt auf die Datei user-id_datei-fm-name, die vorher schon angelegt worden sein muß.

Anhang 3: Ein Beispiel für MSKERMIT.INI


COMMENT – MS-KERMIT-Initialisierungsfile für generellen Gebrauch durch deutsche
COMMENT – Benutzer unter besonderer Berücksichtigung der Modcomp-Erfordernisse
COMMENT – Gisbert W.Selke, WIdO, 19. November 1987
to 1cm
COMMENT *** DIESE DATEI SOLLTE NICHT GEÄNDERT WERDEN! ***
COMMENT (zwecks einfacherer Software-Wartung durch System-Menschen)
to 1cm
COMMENT – Hier werden WIdO-Standard-Dinge definiert; am Ende wird
COMMENT – der TAKE-File MSLOCAL.INI aufgerufen, in dem jede
COMMENT – Benutzerin eigene Dinge vereinbaren kann.
to 1cm
to 6cmset take-echo off; Das interessiert uns nicht.
to 6cmset terminal VT102; Emuliere ein DEC-VT102-Terminal
to 6cmset terminal roll on; Vor einer Eingabe zurück an die richtige Stelle
to 6cmset terminal wrap on; Am Zeilenende herumwickeln
to 6cmset display regular 8-bit; Damit wir Umlaute haben
to 6cmset warning on; Keine existierenden Dateien überschreiben!
to 6cmset flow none; Kein xon/xoff
to 6cmset baud 19200; Die meisten von uns können so schnell laufen.
to 6cmset send start 30; Modcomp mag kein Ctrl-A als start-of-packet.
to 6cmset rec start 30; Modcomp mag kein Ctrl-A als start-of-packet.
to 6cmset send packet 76; Sicherheitshalber nicht zu lange Pakete
to 6cmset retry 63; Manchmal hakt es...
to 1cm
COMMENT Allgemeine Tastaturbelegung im WIdO:
to 6cmset key
else \d1
else \Kbreak; CA: 〈BREAK〉
to 6cmset key
else \d270 {$\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2339#d8}; grauer großer Links-Pfeil wird Backspace
to 6cmset key
else \d315 {JOB
else \d13}; F1 : JOB〈CR〉
to 6cmset key
else \d316 {DISKINFO
else \d13}; F2 : DISKINFO〈CR〉
to 6cmset key
else \d317 {DUMP }; F3 : DUMP
to 6cmset key
else \d318 {EXE SED
else \d13}; F4 : EXE SED〈CR〉
to 6cmset key
else \d319 {HELP }; F5 : HELP
to 6cmset key
else \d320 {EXE LIST LM
else \d13}; F6 : EXE LIST LM〈CR〉
to 6cmset key
else \d321 {}; F7 : nix!
to 6cmset key
else \d322 {}; F8 : nix!
to 6cmset key
else \d323 {}; F9 : nix!
to 6cmset key
else \d324 {'}; F10: Apostroph bzw. accent aigu
to 6cmset key
else \d327 {$\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2385#d27&lsqb#lbrack;H}; Home: HOME (wer hätte das gedacht)
to 6cm; set key
else \d328
else \Kuparr; Aufwärts-Pfeil: (vordefiniert)
to 6cmset key
else \d329 {$\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2394#d27&lsqb#lbrack;V}; PgUp: PREV PAGE
to 6cmset key
else \d330 { - }; graues Minus : -
to 6cm; set key
else \d331
else \Klfarr; Links-Pfeil : (vordefiniert)
to 6cm; set key
else \d333
else \Krtarr; Rechts-Pfeil : (vordefiniert)
to 6cmset key
else \d334 { + }; graues Plus : +
to 6cmset key
else \d335 {}; End : nix!
to 6cm; set key
else \d336
else \Kdnarr; Abwärts-Pfeil : (vordefiniert)
to 6cmset key
else \d337 {$\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2413#d27[ U}; PgDn: NEXT PAGE
to 6cmset key
else \d852 {}; SF1 : nix!
to 6cmset key
else \d853 {}; SF2 : nix!
to 6cmset key
else \d854 {}; SF3 : nix!
to 6cmset key
else \d855 {}; SF4 : nix!
to 6cmset key
else \d856 {}; SF5 : nix!
to 6cmset key
else \d857 {}; SF6 : nix!
to 6cmset key
else \d858 {}; SF7 : nix!
to 6cmset key
else \d859 {}; SF8 : nix!
to 6cmset key
else \d860 {}; SF9 : nix!
to 6cmset key
else \d861 {}; SF10: nix!
to 6cmset key
else \d1394
else \Kmodeline; CPrtScr: Statuszeile an/aus
to 6cmset key
else \d1397
else \Kendscn; CEnd: roll down to end
to 6cmset key
else \d1398
else \Kdnscn; CPgDn: roll down one screen
to 6cmset key
else \d1399
else \Khomscn; CHome: roll up to beginning
to 6cmset key
else \d1412
else \Kupscn; CPgUp: roll up one screen
to 6cmset key
else \d1910
else \Kdnone; SCPgDn: roll down one line
to 6cmset key
else \d1924
else \Kupone; SCPgUp: roll up one line
to 6cmset key
else \d2329
else \Kdos; AP : push to DOS
to 6cmset key
else \d2334
else \Kbreak; AA : 〈BREAK〉
to 6cmset key
else \d2335 {}; AS : nix!
to 6cm; set key
else \d2339
else \Khelp; AH : connect help (vordefiniert)
to 6cmset key
else \d2349 {}; AX : nix!
to 6cmset key
else \d2350
else \Kexit; AC : zurück zum PC
to 6cmset key
else \d2352 {}; AB : nix!
to 6cmset key
else \d2434 {}; A∼ : nix!
to 6cmset key
else \d2435 {}; A' : nix!
set key
else \d2920 {$\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2476#d1                         RUN DIA
else \d13}
to 6cm; SAF1 : 〈BREAK〉RUN DIA〈CR〉
set key
else \d2921 {$\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2488#d1                         STO DIA
else \d13}
to 6cm; SAF2 : 〈BREAK〉STO DIA〈CR〉
to 1cm
COMMENT Deutsche Spezialzeichen werden zu 7-Bit-ASCII:
to 6cmset key
else \d132 {$\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2500#d123}; ä wird zu linker geschweifter Klammer
to 6cmset key
else \d142 {[}; Ä wird zu linker eckiger Klammer
to 6cmset key
else \d148 { | }; ö wird zu senkrechtem Strich
to 6cmset key
else \d153 {$\ifmmode$\$\else$tex2html_verbatim_mark>#math152#$\fi$}; Ö wird zu umgekehrtem Schrägstrich
to 6cmset key
else \d129 {$\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2517#d125}; ü wird zu rechter geschweifter Klammer
to 6cmset key
else \d154 {]}; Ü wird zu rechter eckiger Klammer
to 6cmset key
else \d225 {∼}; ß wird zu Tilde
to 1cm
COMMENT Empfangene Sonderzeichen werden richtig dargestellt:
to 6cmset trans inp {  $\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2527#d132; linke geschweifte Klammer als ä
to 6cmset trans inp [  $\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2532#d142; linke eckige Klammer als Ä
to 6cmset trans inp |  $\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2537#d148; senkrechter Strich als ö
to 6cmset trans inp $\ifmmode$\$\else$tex2html_verbatim_mark>#math163#$\fi$  $\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2546#d153; umgekehrter Schrägstrich als Ö
to 6cmset trans inp }  $\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2551#d129; rechte geschweifte Klammer als ü
to 6cmset trans inp ]  $\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2556#d154; rechte eckige Klammer als Ü
to 6cmset trans inp ∼  $\ifmmode$\$\else$tex2html_image_mark>#tex2html_wrap_inline2561#d225; Tilde als ß
to 1cm
COMMENT Zwei Macros zum einfacheren Umschalten:
to 8cmdefine deutsch set translation input on ; deutsche Darstellung
to 8cmdefine englisch set translation input off ; englische Darstellung
to 6cmdo deutsch; normalerweise deutsche Darstellung
to 1cm
to 6cmdefine rundia take rundia.scr; Zum einfacheren Einloggen
to 1cm
COMMENT Tabulatoren stehen da, wo der Editor SED sie erwartet:
to 6cmset terminal tabstops clear all; Erst alle weg, und dann:
set terminal tabstops at 7 21 36 73
to 1cm
COMMENT IBM (Macro für Linemode-IBM-Mainframe-Verbindung) ist vordefiniert to 1cm
COMMENT Macro für typisches IBM-Mainframe-7171-Front-End:
define 7171 set timer on,set par ev,set flo x,set hand no,set loc off
to 1cm
COMMENT Macro für Kommunikation mit DEC & anderen Full-Duplex-Rechnern:
define DEC set timer off,set par no,set flo x,set hand no,set loc off
to 1cm
COMMENT Jetzt wird eine Benutzer-spezifische Konfigurations-Datei eingelesen:
take mslocal.ini
to 1cm
COMMENT – Ende von MSKERMIT.INI

Anhang 4: Beispiele für TAKE- und Batch-Files


〈〈RUNDIA.SCR〉〉

to 6cmset take-echo off; das interessiert die Benutzerin nicht
COMMENT `Einloggen' bei der Modcomp
COMMENT Gisbert W.Selke, 29. Oktober 1987
echo Bitte Geduld - das RUN DIA dauert etwas...
else \d13
to 6cmset input echo on; das Echo der Modcomp interessiert aber
to 6cmclear; Putzen der Leitung
to 6cmset input timeout proceed; sicherheitshalber
to 6cmoutput
else \b;; ein BREAK
to 6cmpause 1; langsam!
to 6cmoutput
else \b;; noch ein BREAK – sicherheitshalber
to 6cminput 2 >;; Ist er da, der TMP...
to 6cmpause 2; langsam!
to 6cmoutput RUN DIA
else \d13;; Start
to 6cmpause 1; falls sie schon lief:
to 6cmoutput
else \d32
else \d13;; ein 〈CR〉
echo Terminal-Sitzung ist gestartet!
else \d13
to 6cmconnect; rüber auf die andere Seite
COMMENT Ende des RUNDIA-Scripts


〈〈SEND.BAT〉〉
echo off
Rem Datei-Transfer-Utility PC → Modcomp
Rem Gisbert W.Selke, 19. November 1987, nach einer Idee von Joe Doupnik
Rem Zur Benutzung mit MS-Kermit 2.30 oder später.
if ``.%2'' == ``.'' goto gebrauch
if ``.%3'' == ``.'' goto gebrauch
if exist %1 goto weiter
echo Angegebene Datei existiert nicht!
:gebrauch
echo Gebrauchsanweisung: SEND filename user-id usl-name
goto fertig
:weiter
echo Ran an die Modcomp! Datei-Transfer von %1 vom PC in die Modcomp-USL %2_%3
kermit tak presdrc.scr,out AT %2 UUU %3
else \d13,tak send1.scr,s %1,tak send2.scr,
if errorlevel 1 goto fehler
echo Datei-Transfer von %1 vom PC in die Modcomp-USL %2_%3 ist beendet
goto fertig
:fehler
echo Datei-Transfer von %1 vom PC in die Modcomp-USL %2_%3 ist schiefgegangen!
:fertig
echo on


〈〈PRESDRC.SCR〉〉

to 6cmset take-echo off; uninteressant
COMMENT Datei-Transfer-Utility , Vorbereitungsteil
COMMENT Gisbert W.Selke, 29. Oktober 1987
echo
else \d13
else \d10 Vorbereiten des Transfers...
to 6cmset input echo on; was sagt die Modcomp dazu
to 6cmset input timeout proceed; notfalls am Ende eine Fehlermeldung
to 6cmclear; Leitung putzen
COMMENT sicherheitshalber ein Einloggen probieren
echo
else \d13
else \d10Einloggen bei der Modcomp – bitte etwas Geduld
to 6cmoutput
else \b;; ein 〈BREAK〉
to 6cmpause 1; langsam!
to 6cmoutput
else \b;; noch ein 〈BREAK〉 – sicherheitshalber
to 6cminput 2 >;; ist er da, der TMP...
to 6cmpause 1; langsam!
to 6cmoutput RUN DIA
else \d13;; Start
to 6cmpause 2; und falls sie schon lief:
to 6cmoutput
else \d32
else \d13;; nix tun, Modcomp
to 6cmoutput JOB
else \d13;; noch schnell aufräumen
to 6cminput 60 $;; in Ordnung
COMMENT Jetzt ein Attach, dann Take send1.scr / recv1.scr


〈〈SEND1.SCR〉〉

COMMENT Datei-Transfer-Utility PC → Modcomp, Teil 1
COMMENT Gisbert W.Selke, 29. Oktober 1987
to 6cmpause 1; langsam
to 6cminput 10 OPEN;; Attach abwarten
to 6cminput 2 $;; Attach beendet
to 6cmoutput KERMIT
else \d13;; Kermiv starten
to 6cminput 40 MAXIV>;; Kermiv ist da
to 6cmoutput SET USL UUU
else \d13;; USL passend vorwählen
to 6cminput 10 MAXIV>;; Prompt abwarten
to 6cmoutput RECEIVE
else \d13;; Erwarte die Datei
to 6cmpause 1; langsam
echo
else \d13
else \d10Datei-Senden beginnt
COMMENT Ende von Teil 1 - jetzt ein SEND ..., dann TAKE SEND2.SCR


〈〈SEND2.SCR〉〉

COMMENT Datei-Transfer-Utility PC → Modcomp, Teil 2
COMMENT Gisbert W.Selke, 29. Oktober 1987
echo
else \d13
else \d10Aufräumen beginnt
to 6cmoutput
else \d32
else \d13;; einmal nix tun
to 6cmpause 1; langsam
to 6cmoutput quit
else \d13;; Schluß, Kermiv
to 6cminput 10 (Y/N);; Default-Werte annehmen
to 6cmpause 1; langsam
to 6cmoutput Y
else \d13;; ja, Default-Werte sind OK
to 6cminput 3 (C/R);; Cat oder Recat
to 6cmpause 1; langsam
to 6cmoutput R
else \d13;; Recat sicherheitshalber
to 6cminput 60 $END;; bist Du fertig
to 6cminput $;; jetzt endgültig
to 6cmpause 1; Gnadenfrist
to 6cmoutput JOB
else \d13;; Laden dicht machen
to 6cminput 60 $;; das war's
quit


〈〈RECV.BAT〉〉

echo off
Rem Datei-Transfer-Utility Modcomp → PC
Rem Gisbert W.Selke, 19. November 1987, nach einer Idee von Joe Doupnik
Rem Zur Benutzung mit MS-Kermit 2.30 oder später
if ``.%1'' == ``.'' goto gebrauch
if ``.%2'' == ``.'' goto gebrauch
if ``.%3'' == ``.'' goto gebrauch
goto weiter
:gebrauch
echo Gebrauchsanweisung: RECV membername user-id usl-name
goto fertig
:weiter
echo Ran an die Modcomp! Datei-Transfer von %1 in der Modcomp-USL kermit ta presdrc.scr,o AT %2 USL %3
else \d13,ta recv1.scr,o SEN %1
else \d13,ta recv2.scr
if errorlevel 2 goto fehler
echo Datei-Transfer von %1 in der Modcomp-USL %2_%3 zum PC ist beendet
goto fertig
:fehler
echo Datei-Transfer von %1 in der Modcomp-USL %2_%3 zum PC ist schiefgegangen!
:fertig echo on


〈〈RECV1.SCR〉〉

COMMENT Datei-Transfer-Utility Modcomp → PC, Teil 1
COMMENT Gisbert W.Selke, 29. Oktober 1987
echo
else \d13
else \d10Modcomp-Kermiv wird gestartet
to 6cminput 10 OPEN;; Attach gelungen
to 6cminput 2 $;; und beendet
to 6cmoutput KERMIT
else \d13;; Kermiv-Start
to 6cminput 40 MAXIV>;; da ist er
to 6cmoutput SET DELAY 1
else \d13;; voran jetzt
to 6cminput 5 MAXIV>;; da ist er
COMMENT Jetzt ein SEND ..., dann TAKE RECV2.SCR


〈〈RECV2.SCR〉〉

COMMENT Datei-Transfer-Utility Modcomp → PC, Teil 2
COMMENT Gisbert W.Selke, 29. Oktober 1987
echo
else \d13
else \d10Datei-Empfang beginnt
to 6cmreceive; MS-Kermit
echo
else \d13
else \d10Aufräumen beginnt
to 6cmoutput
else \d32
else \d13;; einmal nix tun
to 6cmoutput
else \d32
else \d13;; nochmal nix tun
to 6cminput 5 MAXIV>;; langsam zum Ende kommen
to 6cmoutput QUIT
else \d13;; Kermiv-Ende
to 6cminput 10 $END;; Prozedur beendet
to 6cmpause 1; langsam...
to 6cmoutput JOB
else \d13;; und Schluß
to 6cmpause 1; langsam
to 6cmquit; MS-Kermit Ende


〈〈Ende der Beispiel-Dateien〉〉


(Ende der Kermit-Einführung)