@Comment(-*-SCRIBE-*-) @make(text) @style(spacing 1,indentation 0,justification off) @style(hyphenation on,hyphenbreak off,widestblank 1.4) @define(section,use B,above 2, below 1, need 6, break) @modify(itemize,above 1,below 1,numbered<. >) @modify(verbatim,above 1,below 1) 11/82 (This is somewhat obsolete, see also FLYER.*) @Heading(KERMIT) KERMIT is a protocol for transferring files between computers over telecommunication lines. It does packetizing, checksumming, and retransmission to ensure data integrity. Microcomputer implementations of KERMIT also provide terminal connection at any speed allowed by both the micro and the host. KERMIT is like many other such proto@_cols, but with several differences: @begin(itemize) It's free. It's documented. It's well tested and in wide use. Implementations exist for many different systems, including DEC and IBM mainframes and many microcomputers. Each implementation is written in the language best suited for a particular machine or operating system. @end(itemize) KERMIT was developed at the Columbia University Center for Computing Activities primarily to facilitate offline storage of DECSYSTEM-20 files on microcomputer floppy disks. The first implementations were for the DECSYSTEM-20, IBM VM/CMS systems, and 8080/Z80-@|based microcomputers running CP/M. The KERMIT specification has since served as the basis for new KERMITs. Any KERMIT can communicate with any other KERMIT. Here's a list of known KERMITs as of November, 1982: @begin(description,leftmargin +12,indent -12) KERMIT-20@\TOPS-20, native mode. Written in MACRO-20. KERMIT-10@\TOPS-10, adapted from KERMIT-20 at Stevens Institute of Technology. KERMIT-CMS@\IBM VM/CMS systems on machines with the 370 instruction set. Written in assembly language. Does ASCII/EBCDIC conversion. KERMIT-80@\For 8080 and Z80 based micros running CP/M. Written in 8080 assembler. VT52 emulation is provided unless otherwise indicated. Minor customizations (mainly the specification of serial port addresses, and details of screen control) are required for specific manufacturers. The following are presently available: @begin(itemize,spread 0) Intertec SuperBrain. DEC VT-180 "Robin", operates as VT100 (adapted by DEC). Apple II with Z80 Soft Card and D.C.@ Hayes Micromodem II. Heath/Zenith-89. Operates as H19 terminal. Vector Graphics. @end(itemize) The Apple and Heath versions were adapted privately by DEC employees. KERMIT-86@\For the IBM Personal Computer running PC DOS. Written in 8086 assembler. VT52 emulation. KERMIT-C@\For any system that has a C compiler. Versions have been successfully built for PDP-11 and VAX UNIX systems. @end(description) All implementations listed above, with the exception of KERMIT-C, provide a TOPS-20-@|style command parser, including keyword recognition and built-@|in help. KERMIT-20 uses the COMND JSYS, KERMIT-10 uses GLXMAC/@|ORNMAC, KERMIT-80 and KERMIT-86 simulate the COMND JSYS, KERMIT-CMS simulates COMND as much as is possible on a half-@|duplex system. Work is in progress on other implementations, and on improvements in current ones. KERMIT does not rely on any host system software or servers. All actions are initiated explicitly by the user. Typically, the user starts KERMIT on a microcomputer, "connects" through KERMIT to the remote host, logs in, starts KERMIT on the remote host, "escapes" back to the micro, then sits back and watches the packets fly. KERMIT can transfer files singly or in wildcard groups. KERMIT can be used between mainframes when appropriate connections exist. Unlike its predecessors, KERMIT is neither truly full duplex nor "asyn@_chro@_nous". In order to accommodate itself to half-@|duplex systems and to machines like the KL that cannot accept sustained high-@|speed input over terminal lines, KERMIT does not "stack" packets and it does not send long packets; it always waits for a reply to each packet it sends. Thus transfer rates cannot be achieved that are as high as for truly asynchronous full duplex protocols. Nevertheless, KERMIT has been clocked at up to 70% efficiency (user bits / baud rate). @section KERMIT assumes the following: @begin All hosts can communicate in ASCII. KERMITs running on non-ASCII hosts are responsible for character set conversion. All printable ASCII characters (in the range 40-176 octal) are acceptable as input to the host and will not be transformed in any way. A single nonprintable ASCII character can be used for packet synchronization. The character is normally Control-A (SOH, ASCII 1). If a host requires a line terminator for terminal input, that terminator must be a single ASCII character, such as CR or LF. The host's terminal input buffer is at least long enough to receive the longest ACK packet (about 15 characters). If a host requires padding, the padding character is in the range ASCII 0-37 or ASCII 177 (octal). If KERMIT is to transfer binary files, both communicating hosts must be capable of 8-bit terminal communication, i.e.@ they must be able to ignore parity. @end KERMIT does @i assume: @begin Anything about baud rate. That the host can do XON/XOFF or any other kind of flow control. This kind of flow control can be initiated behind KERMIT'S back by commands to the host computers. If the hosts support any kind of flow control, then it can be used to cut down on retransmission due to buffering problems. That the host is capable of full duplex operation. Any mixture of half and full duplex hosts is supported. @end In addition, KERMIT does not assume that the host has the ability to time out; if neither host participating in a KERMIT connection can do so, then KERMIT allows for manual intervention to wake up protocol deadlocks. @section The complete KERMIT distribution tape may be obtained free of charge from Columbia University by sending a magnetic tape and a cover letter telling what machines and operating systems KERMIT will be used on. A return mailer would be appreciated. 9-track tapes can be produced at 800, 1600, or 6250 bpi in TOPS-20 DUMPER format, TOPS-10 BACKUP format, or in IBM EBCDIC OS standard label or CMS format. Please indicate the desired tape format. The tape includes source and binary (or hex) for all implementations of KERMIT, plus the KERMIT manual and specification document. A printed copy of the document is also included. Send requests to: @begin KERMIT Distribution Columbia University Center for Computing Activities 7th Floor, Watson Laboratory 612 West 115th Street New York, N.Y. 10025 @end If you make any changes to KERMIT, or produce a new version, you are encouraged to send your work (including documentation) to the above address, so that other KERMIT users might benefit from it. Full credit will be given to contributors.