Kermit-MPX Program: L. Tate, Simulation Associates Inc. Derived from CYBER-170 version 1.0, Jim Knutson, University of Texas. Language: Gould Fortran 77 4.2, with some assembler routines Version: 2.3 Date: May 1986 Documentation: L. Tate, Simulation Associates Inc., Mike Niswonger, Computer Science and Applications Kermit-MPX Capabilities at a glance: Local operation Yes; MPX 3.2B or later Remote operation Yes Transfers text files Yes Transfers binary files No Wildcard send No ^X/^Y interruption No Filename collision avoidance No Can time out Yes 8th-bit prefixing No Repeat count prefixing No Alternate block checks No Terminal emulation No Communication settings No Transmit Break Yes IBM communication Yes Transaction logging No Session logging Yes Raw upload No Act as server Yes Talk to server Yes Advanced commands for servers No Local file management No Handle file attributes No Command/init files Yes Printer control No 14.1 Kermit-MPX Description Kermit-MPX runs on Gould's Concept and Series computers running MPX 2.X or MPX 3.X operating systems. MPX 3.2B and later versions allow true full duplex terminal operations so these installations may use the Kermit program in a local mode although the response is very poor. This Kermit requires the use of an eight line asynchronous (8LAS) interface (sorry ALIM and ADS users) on an IOP. This interface buffers the input, performing some rudimentary translations like lower to upper case and block reads and writes. Unfortunately, it's efficiency is very poor for single byte reads and writes, thus the connect mode's effective throughput is only about 300 baud. To make matters worse when the type-ahead buffer is full (40-128 characters) then the buffer empties and a program interruption (break) is generated. Also a break can be generated by recognition by the 8LAS of a 'wake- up' character. Convenient for the terminal processor, but really bad for file transfer if the wake-up character is a '?' or any other printable character. This Kermit has a timeout that functions at random intervals. If the timeout doesn't work then sending a break should wake it up. The initialization file KERMIT.INI may be used to initialize Kermit. The file must be in the current directory when starting Kermit up. Any valid Kermit- MPX command may be included. 14.2 Kermit-MPX Commands Kermit-MPX uses the DECSYSTEM-20 keyword style command language. Each keyword may be abbreviated to its minimum length. "?" may be type to request a menu of the available options for the current field at any point in a command. Kermit-MPX prompts with 'Kermit-' with the machine type concatenated on to it. For example on a Concept 32/27 machine, the prompt will be 'Kermit-27>'. BYE Sends a message to the remote server to log out the remote Kermit and exits local Kermit to system level. Since Kermit-MPX cannot log itself off, it just exits the task. CONNECT Enter terminal emulation mode. Presents the illusion of being directly connected as a terminal to the remote system. When escape character is typed, interprets next character as follows: 0 (zero) transmits a null B transmits a BREAK C close a connection, return to local Kermit Q quit logging (if being done) R resume logging ? show available arguments escape character transmits the escape character Invalid arguments are beeped and reenters connect mode. EXIT Exit from local Kermit. FINISH Sends a message to the remote server to shut itself down, leaving the local Kermit at command level, and the remote at system level. GET remote-filename Tells a remote Kermit to send a file. HELP topic Typing HELP alone prints a brief summary of Kermit and its commands. You can also type HELP command for any Kermit command, e.g. "HELP SEND", to get more detailed information about a specific command. Type HELP ? to see a list of all the available help commands, or consult the Kermit Users Guide. QUIT Exit from local Kermit. RECEIVE Expects one or more files to arrive. SEND local-filename Sends a file to remote Kermit. SERVER Act as a server for another Kermit. Take all further commands from the other Kermit. After issuing this command, escape back to your local system and issue SEND, GET, BYE or other server-oriented command from there. If your local Kermit does not have a BYE command, it does not have the full ability to communicate with a Kermit server (in which case you can only use the send command). SET Establish system-dependent parameters. You can examine their values with the SHOW command. Numeric values may be decimal, octal (postfixed with an O or B), or hexadecimal (postfixed with an H). The following may be SET: DEBUG options Show packet traffic explicitly. Options are: ALL Set all debug options. LOG-FILE local-filename Log states and packets to the specified file. The default log-file is file L.KERMLOG OFF Don't display debugging information. (this is the default). If debugging was in effect, turn it off and close any log file. PACKETS Display each incoming and outgoing packet (lengthy) STATES Show Kermit state transitions and packet numbers (brief). LOG options Log all inputs from remote port during connection. Options are: LOG-FILE local-filename Log inputs to specified file. The default log-file is file L.SESSION OFF Turn off the session logging ON Turn on the session logging PORT terminal-address Sets the communication port; to which connect, send, receive and server interact with. Any MPX terminal address may be used. Examples: TY7EC0, U17CC4, or UT. Default is UT. ESCAPE number Control character used to escape from connect mode. Default is 29, (^]) ECHO on/off Turns on or off the echo by Kermit during connect mode. Echo is normally off. DELAY number How many seconds to wait before sending the first packet. This gives you time to "escape" back and issue a RECEIVE command. Delay defaults to 5 seconds. INIT-RETRY number Set the maximum number of retries allowed for the initial connection before giving up. Default is 20. RETRY number Set the maximum number of retries allowed for sending a particular packet. Defaults to 5. SEND parameter Parameters for outgoing packets as follows: EOLCHR number The octal value of the ASCII character to be used as a line terminator for packets, if one is required by the other system. Carriage return (0DH) by default. PACKLEN number Maximum packet length to send, decimal number, between 20 and 94. 94 by default. PADCHR number Character to use for padding. Default is NUL. PADLEN number How much padding to send before a packet. Default is no padding. QUOTECHR number What printable character to use for quoting of control characters. The default is '#' (23H). There should be no reason to change this. SYNCCHR number The control character that marks the beginning of the packet. Normally SOH (Control-A, ASCII 1). There should be no reason to change this. TIMEOUT number How many seconds the other Kermit wants before being asked for retransmission. Default is 10 seconds. RECEIVE parameter Parameters to request or expect for incoming packets, as follows: EOLCHR number The octal value of the ASCII character to be used as a line terminator for packets, if one is required by the other system. Carriage return (0DH) by default. PACKLEN number Maximum packet length to send, decimal number, between 20 and 94. 94 by default. PADCHR number Character to use for padding. Default is NUL. PADLEN number How much padding to send before a packet. Default is no padding. QUOTECHR number What printable character to use for quoting of control characters. The default is '#' (23H). There should be no reason to change this. SYNCCHR number The control character that marks the beginning of the packet Normally SOH (Control-A, ASCII 1). There should be no reason to change this. TIMEOUT number How many seconds the other Kermit wants before being asked for retransmission. Default is 10 seconds. SHOW Display current SET parameters, version of Kermit, and other info. STATUS Give statistics about the most recent file transfer. TAKE local-filename Read and execute Kermit commands from a local file. X Exit from Kermit. 14.3 Software Installation MPX-3.2B and later operating systems support true full duplex TSM terminals. With these operating system versions set the LOCALON flag .TRUE. in the include file KVER.INS. This allows the local commands to be used; BYE, CONNECT, FINISH and GET. Otherwise, Kermit-MPX is good as a remote server (which is it's prime function anyway). The source is a series of files; KVER.INS version include file KDEF.INS Kermit definitions KPROT.COM protocol common KPACK.COM communication parameters of Kermits KFILE.COM I/O package common data KTIME.COM Timing of connect mode KDBUG.COM Debug output control KMSG.COM Prompt and version message GM2KERM.INS Consolidated include file (has all above files in it) GM2KERM.F77 main Kermit code GM2KERM.ASM assembler routines for I/O system GM2KERM.BAT batch deck to compile, assemble and catalog task image The small COM and INS files are found in the larger GM2KERM.INS file. Use a text editor to split out the smaller files for the Fortran compiler to access. When creating the task, edit the batch deck for appropriate directory names and file names. 14.4 Hardware Requirements The front end of a Gould can be quite trouble-some, requiring some expertise to overcome some of the 8LAS shortcomings. The wakeup character on many system is the '?'. This is a valid Kermit character, but every time it is sent, it breaks the terminal thus ending the packet. To avoid this we change the wakeup character to a non-valid Kermit character such as control-E (05H). The connect mode is rather slow, having an aggregate rate of 300 baud, if system load is low. However, we usually like to transfer at 9600 or 19.2k baud. In one installation, we set the baud rate to maximum. Since the remote system is sending characters back at the same high rate, it outpaces the local Kermit and we lose the buffer (remember the break) in connect mode. Note that this does not affect the server mode where transfers occur at full channel speed. Logging in and activating the server does not require much system interaction and dropped characters can be tolerated for the short duration of the connect mode required. This limitation of connect mode emphasizes the primary use of Kermit-MPX as a file server, not as an interactive connect terminal program. The other solution is to dynamically change the baud rate from 300 to 9600 and back. This requires a program to change the baud rate dynamically and a direct linkage between computers. The procedure is to log on to the remote's terminal, change the baud rate to desired rate, close your local connection, change the baud rate of connect port, then reopen connection. A port characteristic changing program was not built into Kermit because of it's system dependence. All that's needed is a program to translate the port characteristics to a 3 byte ACE code used 8LAS. This may be sent to the port using the M.WRITE macro, with the data format inhibit (DFI) bit set and the transmit ACE parameter bit set. See MPX reference manual, volume I for details. A good future enhancement. 14.5 Future Work Install a port setting capability to Kermit. Improve CONNECT speed. Suggested alternatives could be; Block reads with 1 sec timeouts and special character detect. Total interrupt driven. This requires assembler routine, and use of M.CALL to IOCS since M.WRITE/M.READ does not perform well in interrupt driven environment. Activate Kermit to get higher priority. This sounds cheap. Added server commands for file management, particularly; cd change directory copy copy file rename rename file delete delete file list list file dir directory listing, These commands are most needed since it's difficult to use volume manager at 9600 baud connected. Correct error reporting. Error packets are not displayed and for some reason, sent error packets are not displayed by other Kermits. 14.5 Kermit-MPX Revision List 2.3 Added to SERVER the ability to recognize the I packet. This packet is used by advanced Kermits (at least MS-Kermit 2.27 and up) to initialize the server. Changed the method by which nowait is established so that if ECHO was off before Kermit operation, then it will remain so afterwards. Good for network operation. Corrected the error reporting code such that the error messages are produced. However, they can be very cryptic. What is needed is a general method of handling text, like help and error messages, such that memory is not filled but ready access is available. L. Tate, SAI, May 1986. 2.2 Improved receive/get reliability by moving the terminal reporting before the ACK/NAK is sent. The problem seems to have been during the reporting time, the sending flooded the 8-line buffer and caused a break, losing data. Also corrected error in printl routine which wrote to stdout instead of the parameter fd. L. Tate, SAI, Mar. 1986. 2.1 Correct bug in SUDT. When use the SVC 1,X'27' which set full duplex on a terminal it previously used a trashed file control block. This had caused unpredictable results in a lot of the I/O including 2 reads pending at once. Correcting this problem allowed removal of HIOALL routine. Files to be read are opened with OPENMODE='R' and files to be written are opened with OPENMODE='U'. Also added the TAKE command. L. Tate, SAI, Mar. 1986. 2.0 Added the CONNECT, GET, FINISH, BYE commands. This required significant changes to the io interface. The local on/off option was also part of this. L. Tate, SAI, Nov. 1985. 1.0 This Kermit was the direct implementation of the Cyber-170 version, University of Texas. L. Tate, SAI, Sept. 1985.