MODCOMP MAXIV KERMIT USER'S MANUAL by Richard D. Burke Robert A. Borgeson of SETPOINT Inc. 10245 Brecksville Rd. Brecksville, Ohio 44141 KERMIT is a copyrighted protocol of Columbia Univ. The authors of this version hereby grant permission to copy this document provided that it is not used for any explicitly commercial purpose and that proper credit be given. SETPOINT Inc. makes no warranty whatsoever regarding the accuracy of this document or the software described within and will assume no liability resulting from its use. TABLE OF CONTENTS ________ Page No. Introduction .......................... I.1 Overview .......................... II.1 KERMIT commands .......................... III.1 HELP .......................... III.1 STATUS .......................... III.1 SET .......................... III.1 DELAY .......................... III.2 EOL .......................... III.2 ESCAPE .......................... III.2 MYQUOTE .......................... III.2 PACKET .......................... III.2 SOH .......................... III.2 USL .......................... III.3 QUIT / EXIT .......................... III.3 SEND .......................... III.3 RECEIVE .......................... III.3 Technical Appendix .......................... A.1 I.1 A. INTRODUCTION KERMIT provides an easy, reliable way to transfer text files between a MODCOMP Classic running under MAXIV and other machines which have a KERMIT implementation on them. KERMIT is a packet-oriented telecommunications protocol copyright by Columbia University. Documentation available from them thoroughly covers the formal details of the protocol.(1) The purpose of this manual is to detail the specific features of this implementation and to provide instruction on how to use KERMIT on a MODCOMP. This manual assumes that the reader has a general knowledge of a MODCOMP running under MAXIV. A Technical Appendix follows which details how to allocate resources and install KERMIT on your machine. MAXIV KERMIT is adapted from a version written by John Lee of RCA Labs for an HP-1000. It is implemented in Fortran IV except for one subroutine in assembler. (1) KERMIT Distribution Columbia University Center for Computing Activities Seventh Floor, Watson Laboratory 612 West 115th Street New York, N.Y. 10025 II.1 II. OVERVIEW MAXIV KERMIT is run by activating a job control procedure which makes the necessary logical assignments and then, executes the program. Each site will probably wish to create their own job control for this, taking into account the requirements addressed in the Technical Appendix. The original MAXIV KERMIT distribution contains a simple command file which may be used as a guide. The file's name is KERMIV. The syntax for activating this procedure is: $KERMIV co,oc where co - logical assignment for file transfer output (Default = CO) oc - logical assignment for file transfer input (Default = OC ) Operator input is always from OC and informational output is to CO. Therefore, if no parameters are specified, KERMIT will expect operator input and file transfer to occur at the same ports. MAXIV KERMIT may be run in either remote or local mode. In remote mode, the data transfer occurs at the same terminal port which is controlling the program. Presumably, the user is accessing the MODCOMP from some computer which has the ability to emulate a terminal as part of a communications package. Local mode implies that KERMIT is controlled by a terminal which is on an I/O port different from the port assigned to the data transfer. This is most likely to be used when neither machine has a communications software package. When MAXIV KERMIT is initially run, it senses the current logical assignments and chooses the appropriate mode automatically. In the initial release ( Version 1.0 ), it is not possible to alter the file transfer port or the local/remote mode once KERMIT is invoked. MAXIV KERMIT is designed with a command structure that reflects MAXIV's division of files into libraries. KERMIT is always logically assigned to a directorized source library. (by default, USL) If the user does not intervene, all files to be sent must be cataloged in USL. All received files will by default be cataloged to USL. The methods to modify these defaults are discussed later. KERMIT's choice of (ASCII 01) as the start-of-packet character presents special problems under MAXIV since this is the standard break character for getting the TMP prompt. Short of requiring that the break character be redefined in the SYSGEN, there is no bulletproof way to always pass the through to KERMIT without waking up TMP. II.2 The user must be aware that all input including the s will be passed through into a 132 byte buffer. This is sufficient for at least one packet. However, if the other KERMIT sends a number of unexpected packets it could fill up the buffer. One possible scenario that could cause this is when the other KERMIT begins to send initialization packets before MAXIV KERMIT is told to receive. If this buffer is ever filled up an outstanding read request is terminated and the next received will be interpreted as the break character. In this case, the user has no choice other than to exit KERMIT and start over. In local mode, the buffer is activated immediately upon execution but, no check for incoming packet data is made until MAXIV KERMIT is told to SEND or RECEIVE. In remote mode, it is activated as soon as the SEND or RECEIVE command is entered. Once the initial connection is made, the buffer is checked periodically for packet data and refreshed after each packet so that it should not overflow. It is important to remember that this checking only occurs in SEND and RECEIVE mode. At other times the user must exercise discretion regarding sending unexpected packets. The conclusion is that MAXIV KERMIT is more sensitive to the initial connection sequence than many other KERMITs. The following general principles may be helpful: Local mode Invoke MAXIV KERMIT first. In the case of MODCOMP to MODCOMP transfer start the receiving KERMIT first. Remote mode Issue the command to the remote machine first. III.1 III. MAXIV KERMIT COMMANDS After executing KERMIT, the prompt "MAXIV KERMIT>" will appear. The user may enter the following commands: HELP STATUS SET EXIT / QUIT SEND RECEIVE CONNECT These commands may or may not require additional parameters. In all cases, the parameters must be separated by spaces. The commands and parameters may be abbreviated so long as they may be uniquely identified. For example, HELP may be shortened to H, but SEND can only be shortened to SEN so that it may be distinguished from SET. The CONNECT command is recognized but the function is not supported in Version 1.0 . The other commands are discussed below. HELP The command HELP prints out a description of each available command to the terminal. STATUS The command STATUS prints out the current values for a number of user-definable parameters. SET The command SET allows the user to change various parameters according to your current needs. The syntax of the command is: SET option value III.2 The options and their applicable values are: SET DELAY x This command controls how long KERMIT waits before sending an initialization packet. The values 1 - 60 seconds are acceptable. The default is 10 seconds. SET EOL x This command sets the end-of-line character which this KERMIT is expecting to terminate each received packet. This value does not have to match the EOL expected by the other KERMIT. The values 1 - 31 are acceptable with the default being 13 ( ). SET ESCAPE x This command sets the character which terminates CONNECT mode. Since CONNECT is not currently supported, this command has no operational effect. SET MYQUOTE x This command sets the value for the character which prefixes all ASCII translated control characters. The valid values are 33 - 126. The default is 35 (<#>). SET PACKET x This command sets the maximum packet length we want to receive. The valid values are 31 - 94 characters. The default is 90. SET SOH x This command sets the start-of-packet character. The acceptable values are 1 - 31. The default value is 1 (). This is not a parameter which is adjusted by the initial exchange. Therefore, both KERMIT's must agree before the connection is made. III.3 SET USL usl This command changes the library which KERMIT is logically pointed at. This library must be a SED directorized partition or dataset. The default is USL. QUIT / EXIT Either command will end this KERMIT session. If any files were received, the user will then be prompted to catalog them away properly. SEND This command has two forms: SEND file_id SEND @usl The first command will send a single file with the specified name. The file must be cataloged in the current USL. (see the SET USL command) The second command will send every file in the specified library. This library is not required to be the same as the current source library. It may be a library in a scratch partition. This allows the operator to create a directorized library in scratch and catalog files from several libraries to be sent as a group. RECEIVE When the command RECEIVE is issued, MAXIV KERMIT will receive as many files as are sent until the sender KERMIT issues an end-of-transmission. The files are placed in a scratch partition to be cataloged at the end of the session. When MAXIV KERMIT is EXITed, the user is prompted to name and catalog the received files. The answers to these questions are used to create a Job Control procedure which places the files in the desired libraries. The default file name is the received file name truncated to 8 characters with any non-cancodeable characters replaced by "$". The user may elect to accept all the default names. In this case, you will be asked whether all the files should be CATaloged or RECATaloged to the current source library. If all the defaults are not accepted, you will be prompted to name each file, specify the library to use, and whether to CAT or RECAT. When the questions have all been answered, the command procedure is automatically invoked to perform the desired file operations. III.4 In the event that a file name conflict causes the cataloging operation to fail, all is not lost! The command procedure is in KE9 under the name "STORE" and can be edited to correct the problem. Then reinvoke the procedure to complete the operation. Care must be exercised to preserve the received text while the procedure is being modified. A.1 TECHNICAL APPENDIX ___________________________ A. Building KERMIT from Source The KERMIT source files are intended to reside in a single, directorized SED USL library. Procedures are provided to compile, assemble, and link all modules and to create KERMIT as a load module overlay. All subroutines should be compiled to a single, directorized object library. This library will then be referenced to link the main program. The procedure which builds KERMIT is called BLDKER and it requires 3 arguments. BLDKER could be invoked as follows: $ASSIGN JC=KER,UJC=KER $BLDKER KER,KUL,BM where - KER is the source library containing KERMIT source, KUL is a directorized object library to contain object versions of all KERMIT subroutines, BM is the load module library to contain the KERMIT overlay. The fourth argument to BLDKER is an optional switch which tells whether or not to generate listing output. For example, to generate hardcopy listings during the build invoke BLDKER as follows: $ASSIGN JC=KER,UJC=KER,LO=LP $BLDKER KER,KUL,BM,LO __________________________________ B. Logical file assignments and usage KERMIT requires several logical files which must be assigned to I/O channels and scratch disk partitions. They are as follows: KE1 - Terminal output KE2 - Terminal input KE3 - KERMIT data output KE4 - KERMIT data input KE5 - List of file names received during the current session KE8 - Received text files KE9 - List of file names to be sent to the remote KERMIT, and Job Control procedure to catalog received files away KEH - Directorized source library containing HELPFILE A.2 One or two full duplex or half duplex asynchronous I/O ports may be used for KERMIT. If KE2 and KE4 are assigned to the same device (port) then remote operation is assumed. If they are assigned to different ports then KERMIT is set up for local operation. As files are received, the text is written to the disk partition to which KE8 is assigned, and the name of the file is written to KE9. When the user EXITs, several questions are asked concerning the disposition of the files. The file name list in KE9 is then used as the basis for creating a Job Control procedure to catalog all the received files to directorized libraries. KE9 is also used to contain a list of file names to be transmitted to the remote KERMIT. This file will contain either a single name, specified by the "SEND filename" command or the names of all the files in a directory if the "SEND @usl" command is used. For most applications, the disk resources of a BATxxx task are adequate for KERMIT. The procedure KERMIV which is provided as a template uses SCA for keeping received files, SCB for the received file list, and SC for the sending file list and Job Control procedure. KERMIV also provides the capability of designating the logical device(s) to be used for KERMIT file transfer input and output. __________________________________________ C. Control-A collision between KERMIT and TMP Many systems use Control-A as the TMP attention character. It is also used by KERMIT as the start-of-packet character. This causes problems if the asynch port used for KERMIT transfers is on the MAX IV break list. This is only a problem when KERMIT is operating in local mode. When KERMIT is invoked in local mode, a non-standard binary read is immediately issued to intercept any unsolicited packets which could cause a BREAK. However if the number of unsolicited characters exceeds the size of the read (132 bytes) the read will complete and the next control-A will cause a BREAK. To avoid this anomaly it is necessary to initiate the SEND and RECEIVE operations at roughly the same time. The user may want to customize KERMIT by increasing the size of the incoming data buffers, but must take note that only the first packet in the buffer is interpreted. A.3 _______________________________ D. Warning about SEND @usl command This command causes the specified directory to be read and the names of all active file entries to be extracted. This logic will only work correctly for 128 word-per-sector disks. Systems with sector sizes different from 128 words should avoid this command. ________________________________________ E. BATxxx task resources required by KERMIT The number of concurrent I/O operations and the number of vacant logical file assignments for Batch tasks which will be running KERMIT may have to be increased. 3 I/O operations and 15 vacant logfiles are adequate for KERMIT's use. The partitions assigned for scratch use for KERMIT must be large enough to hold the data that KERMIT will temporarily store there. The critical file is KE8 which holds the received text files. Received files are written in compressed format so as to conserve disk resources, but the user must still make sure that KE8, or any other disk partitions are not overfilled. ________________________________ F. Communications port conditioning The configuration (baud rate, frame size, parity, and stop bits) of the I/O port used for KERMIT file transfers must be set up to match the parameters of the remote KERMIT before the MAX IV KERMIT is invoked. Modification of those parameters is not supported in this release of KERMIT. ___________________ G. Future Enhancements This version of KERMIT implements only some of the basic features of a KERMIT program. Time permitting several additions are planned. Those include: 1) SET LINE and CONNECT commands to allow going from local to remote operation after KERMIT is invoked and to support a dumb terminal emulation. 2) SERVER commands to simplify the transfer of files to KERMIT versions which support server commands. 3) TAKE command which allows command sequences to be stored in an external disk file and invoked from inside KERMIT. 4) Use of the SET command to modify the KERMIT I/O port parameters such as baud rate, parity, frame size, or stop bits. A.4 5) A STATISTICS feature which would summarize information about the current session and the current transaction, including bytes transferred, packets transferred, and effective transfer rate.