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 Remote operation Transfers text files Transfers binary files Wildcard send ^X/^Y interruption Filename collision avoidance Can time out 8th-bit prefixing Repeat count prefixing Alternate block checks Terminal emulation Communication settings Transmit Break IBM communication Transaction logging Session logging Raw upload Act as server Talk to server Advanced commands for servers Local file management Handle file attributes Command/init files Printer control Yes; MPX 3.2B or later Yes Yes No No No No Yes No No No No No Yes Yes No Yes No Yes Yes No No No Yes 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 interface (sorry ALIM input, requires the use of an eight line asynchronous and ADS users) on an IOP. This interface (8LAS) buffers the 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 'wakeup' 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. timeout doesn't work then sending a break should wake it up. If the 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 KermitMPX 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. escape character is typed, interprets next character as follows: 0 (zero) transmits a null When B C transmits a BREAK close a connection, return to local Kermit quit logging (if being done) resume logging show available arguments Q R ? 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 ? consult to see a list of all the available help commands, the Kermit Users Guide. or 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. the other Kermit. Take all further commands from your After issuing this command, escape back to 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 (in which case you can only use the send command). server Kermit SET Establish system-dependent parameters. with SHOW You can examine their values the 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 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. be 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 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 packet. the a 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 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. a 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 terminals. With these operating include file KVER.INS. This FINISH and GET. Otherwise, prime function anyway). operating systems support true full duplex TSM system versions set the LOCALON flag .TRUE. in the allows the local commands to be used; BYE, CONNECT, Kermit-MPX is good as a remote server (which is it's The source is a series of files; KVER.INS KDEF.INS KPROT.COM KPACK.COM KFILE.COM KTIME.COM KDBUG.COM KMSG.COM version include file Kermit definitions protocol common communication parameters of Kermits I/O package common data Timing of connect mode Debug output control Prompt and version message GM2KERM.INS Consolidated include file (has all above files in it) main Kermit code assembler routines for I/O system batch deck to compile, assemble and catalog task image GM2KERM.F77 GM2KERM.ASM GM2KERM.BAT 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. Added server cd copy rename delete list dir This sounds cheap. commands for file management, particularly; change directory copy file rename file delete file list file 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 up) used by advanced Kermits (at least MS-Kermit 2.27 and to initialize nowait the server. Changed the method by which 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, that memory is not filled but ready access is available. L. Tate, SAI, May 1986. 2.2 reporting Improved receive/get reliability by moving the terminal such 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 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. including 2.0 required Added the significant CONNECT, GET, FINISH, BYE changes to the io interface. commands. This The local on/off option was also part of this. L. Tate, SAI, Nov. 1985. 1.0 version, This Kermit was the direct implementation of the Cyber-170 University of Texas. L. Tate, SAI, Sept. 1985.