1 - KERMIT-GUTS February 11, 1985 - 1. Introduction +_______________ 0KERMIT is a set of programs that transfer files between computers over normal terminal communication lines. It implements the "KL10 Error-Free Reciprocol Microcomputer Interchange over TTY-Lines" protocol. Originally designed to be used between a microcomputer and the DEC-20, the protocol will also transfer files to and from a microcomputer and IBM mainframe systems running under MVS/GUTS. 0KERMIT transfers data by creating packets with information regarding the type of packet being sent, it's length, a packet number, and a checksum to determine whether the data has been modified during transmission. If a packet is lost or garbled, KERMIT will attempt to resend it. 0Written in IBM 370 assembly language to run under MVS/GUTS on IBM 370-series mainframes (System/370, 303x, 43xx, 308x, ...). These are half duplex systems; the communication line must "turn around" before any data can be sent to it. The fact that a packet has been received from the IBM system is no guarantee that it is ready for a reply. Thus any Kermit talking to this system must wait for the line turnaround character (XON) before transmitting the next character. 0IBM systems talk to their terminals through a communications front end (IBM 3705, 3725, COMTEN 3805, etc). These front ends generally insist on using the 8th bit of each character for parity. This means that binary files (files con-taining other than ordinary letters, digits, punctuation, carriage returns, tabs, and so forth) can not be correctly sent or received by these systems with Kermit (protocol version 1). 0The IBM system under MVS/GUTS is unable to interrupt a read on its "console". This means that the IBM version of Kermit cannot timeout. The only way to "timeout" GUTS Kermit is from the other side -- typing a carriage return to the micro's Kermit causing it to retransmit its last packet, or an automatic timeout as provided by Kermit-20. For this reason, GUTS Kermit waits twenty seconds before sending its first packet when sending files from MVS/GUTS. This gives the user sufficient time to return to the local Kermit and issue the Receive command. Otherwise, a protocol deadlock would arise requiring manual intervention by the user. 0Also, MVS/GUTS stores files as records rather byte streams. MVS/GUTS Kermit has to worry about assembling incoming data packets into records and stripping CRLFs from incoming lines, and also appending CRLFs to - and stripping trailing blanks from -- outgoing records. 0You must be using an ASCII terminal to run KERMIT-GUTS. 0KERMIT-GUTS can only work with OS files, not with GUTS files. This 0 - 1 - 1 - KERMIT-GUTS February 11, 1985 0means that if you want to transfer a GUTS file you will have to copy it first to an OS file. The KERMIT-GUTS receives a file from a micro he will store it as an OS file. You can then after transmission copy the OS file to a GUTS file. For more information see chapter 5. -Please note that this document should be used in conjunction with the Kermit manual, and assumes you have read the sections pertaining to the IBM/PC microcomputer. For more information regarding the manual, see the Reference section at the end of this report. - - - - - - - - - - - - - - - 2 - 1 - KERMIT-GUTS February 11, 1985 02. GUTS Command Syntax and Options +__________________________________ -/KERMIT 0You simply type a carriage return after issuing the KERMIT command. 0Commands: 0 Send 0 Receive 0 Set 0 Show 0 Status 0 Help 0 Exit 0 Quit 0 ? -2.1. GUTS KERMIT Command Options +________________________________ 0SEND Send the specified dataset. KERMIT-GUTS will send only one file per request, no wildcarding is allowed. If the dataset name is not specified, KERMIT-GUTS will prompt for one. Note, dataset must be cataloged. Kermit will only search on the volume(s) specified with the /SET UNIT= command. Kermit will add your &INDEX prefix to the dataset name unless you have written a leading and trailing apostrophy. 0RECEIVE Receive the file sent from the micro. If the dataset name is not specified KERMIT-GUTS will prompt for one. If no dataset previously exists with this name a file will be created using the value of the SPACE parameter. (NOTE, at this time KERMIT-GUTS does not trap for abends, and if the file being received excedes the space allocated KERMIT-GUTS will abnormally terminate.) The attributes for the dataset will be taken from the RECFM, LRECL, and BLKSIZE parameters. If a dataset exists KERMIT-GUTS will prompt to see if you wish to overwrite the dataset. Note| Kermit will create an OS dataset, not a GUTS 0 - 3 - 1 - KERMIT-GUTS February 11, 1985 0 file. The OS dataset will be plased on the volume, or one of the volumes you have specified by the /SET UNIT= command. 0SET Set the parameter to the specified value. Legal Set commands are: - SPACE Specifies the number of tracks to be allocated to the dataset. The default is 5 tracks. Both the primary and secondary allocation are set to the value specified. 0 RECFM Denotes the record format to be used when creating the dataset. Only fixed and variable length records are allowed, where variable is the default. Indicate the desired record format by either an F or a V. 0 BLKSIZE Indicates the block size for creating the dataset. The default is 80 and the maximum is 32767. If the RECFM is F the blocksize must be a multiple of the value specified in the LRECL parameter. If RECFM is F then the BLOCKSIZE must be at least LRECL + 4. 0 LRECL Indicates the logical record length for creating the dataset. The default is set to 80, and the maximum allowed is 255. If the RECFM is V the value must include the 4 bytes for the record descriptor word (RDW). 0 QUOTE The quote character you wish to use in place of the default (#). It must be a single, printable character from among the following: 33-62, 96, or 123-126 (decimal). 0 START Indicates the start-of-header character which you choose to send and receive. The default is a CNTL-A (ASCII 01), but can be set to any two digit number between 00 and 31 (dec). 0 END Indicates the end-of-line character you choose to send. The default is a CR (ASCII 13), but can be set to any two digit number between 00 and 31 (dec). - - 4 - 1 - KERMIT-GUTS February 11, 1985 0 PAC Allows the user to specify the packet size the micro should use when sending to KERMIT-GUTS. The range is 26-94 (decimal), where 94 is the default. 0 DEBUG Allows the user to specify whether a trace of packet information will be writen to a dataset. Before using this option the user must have allocated a dataset to file name (ddname) "DEBUG". 0 DELAY Allow the user to specify the length of time in seconds that KERMIT-GUTS will wait after the user issues a SEND. The default is 20 seconds. This will give the user time to escape back to his micro KERMIT and issue the neccesary commands. -SHOW STATUS Displays the current value of all variables that can be changed via the SET command. 0STATUS Returns the status of the previous execution of KERMIT-GUTS. Therefore, STATUS will either display the message "Kermit completed successfully", or the last error encountered prior to aborting. 0HELP Displays a message that briefly explains KERMIT-GUTS commands. 0EXIT Exit from KERMIT-GUTS. 0QUIT Same as EXIT. 0? Lists all legal KERMIT-GUTS commands. - - - - - - 5 - 1 - KERMIT-GUTS February 11, 1985 03. Examples under GUTS +______________________ 0Here is a brief example of how to use the IBM/PC in conjunction with KERMIT-GUTS to send a file to the IBM-PC. 0 A>kermit 0 Kermit-86>set loc on ; Indicate half duplex Kermit-86>set ibm on ; Cause line turn around wait Kermit-86>set baud 1200 ; Set the baud rate Kermit-80>connect 0 < The micro will act as a regular terminal from now on. > < Logon here as you normally would, and run KERMIT-GUTS.> 0 /KERMIT KERMIT-GUTS Version 1.00 at GUC. 0 KERMIT-GUTS>? Legal Commands are: Receive, Send, Help, Exit, Quit, Set, Status, Show KERMIT-GUTS>send finger.database ; Send this file 0 Waiting 20 seconds before sending. ^$C ; Return to the micro - 0 ; by typing $C 0 Kermit-86> Kermit-86>receive ; Micro receives the file 0 0 Kermit-86>connect 0 0 KERMIT-GUTS>status Kermit completed successfully KERMIT-GUTS>ex _ /OFF TSC0018I ABCAA logged off at 13.47.10, Monday, February 11, 1985 ...... 0 ^$C ; Return to the micro ; by typing C 0 Kermit-86>exit 0 - 6 - 1 - KERMIT-GUTS February 11, 1985 0 A> 0In order to send a file from the IBM/PC to the IBM mainframe repeat the above procedure swapping the command SEND with RECEIVE and vice versa. - - - - - - - - - - - - - - - - - 7 - 1 - KERMIT-GUTS February 11, 1985 04. Additional Information +_________________________ 0 The commands are supplied with a help option, so a question +1. mark can be typed to get the appropriate format or a list of options. The question mark, however, must be followed by a carriage return; KERMIT-GUTS will respond and display the prompt again. For instance, SET ? will list all valid options for the SET command. 0 When receiving files, if the record format is fixed, any +2. record longer than the logical record length will be truncated. The record length can be as high as 255. For receiving files, the maximum record length is 255. 0 Before connecting to the IBM mainframe, three flags must be +3. set. You should set the IBM flag on, set the LOCAL-ECHO flag on (used to indicate half duplex), and specify the baud rate you will be using. To turn a flag on, type to the micro's prompt "Set XXX On" where XXX is the flag name. Indicate the baud rate by typing "Set baud", and choose from among a list the IBM-PC supplies. These flags will remain in effect as long as you do not exit from the micro's version of Kermit. See the example of a session for further clarification. 0 The current version of KERMIT-GUTS does not support timeouts. +4. The user, therefore, should hit the carriage return key after a long period of inactivity (that is, when the screen display does not change.) 0 Since the micro does not send an error packet when it aborts, +5. KERMIT-GUTS does not know the micro has stopped sending it information. Therefore, when you connect back to the IBM, KERMIT-GUTS may still be sending packets (they will appear on the screen). The user must hit a carriage return until KERMIT- GUTS has sent the maximum number of packets allowed and aborts. The error message, however, will not indicate that communication stopped because the micro aborted, but rather that no start of header character was found. 0 The minimum send packet size KERMIT-GUTS will allow is 26. +6. This is necessary to avoid an error while sending the filename or an error packet. If the micro tries to set the value to be less than 26, KERMIT-GUTS will immediately abort with an error of "Bad send-packet size." 0 During the initialization process with the micro, KERMIT-GUTS +7. sends all six pieces of information (that is, the receive packet size, the timeout data, the number of padding characters, the character used for padding, the line terminator, and the quote character.) When receiving this data from the micro, KERMIT-GUTS ignores the data regarding timeouts and padding; they do not effect the program's execution. 0 - 8 - 1 - KERMIT-GUTS February 11, 1985 0 Therefore, if the quote and end-of-line characters used are the defaults, the micro need only send KERMIT-GUTS its buffer size. Only if the defaults are not used must ALL the information be sent (since the data is organized positionally). If, however, the micro sends all the information even when not required, KERMIT-GUTS will simply ignore the irrelevant portion. 0 When sending packets to KERMIT-GUTS, the micro must use a +8. carriage return as the end-of-line character. GUTS requires a carriage return to terminate a read from the terminal; thus, if any other character is used, KERMIT-GUTS will never get the packets. 0 KERMIT-GUTS translates the data it reads back to ASCII +9. (characters not representable in ASCII are replaced by a null). Not only is it easier to work with ASCII characters, but it makes things more consistent throughout the many versions of Kermit. When the packets are sent to the micro, KERMIT-GUTS converts all data back to EBCDIC. The ASCII to EBCDIC translation table can be found in Appendix V of the Kermit manual. - - - - - - - - - - 0 - 9 - 1 - KERMIT-GUTS February 11, 1985 04.1. Error Messages +___________________ 0KERMIT-GUTS supplies the micro and the user with numerous error messages. If the execution must be aborted, an error packet is sent to the micro before KERMIT-GUTS stops. The same message can be retrieved via the STATUS command when KERMIT-GUTS returns and displays the prompt. If KERMIT-GUTS aborted because the maximum amount of retries was exceeded (20 on initialization packets and 5 on others), the error message will display the most recent error (i.e. - the last NAK KERMIT-GUTS encountered). If execution stops because the micro aborted, the error message will convey that to the user, but it is the micro's responsibility to pinpoint the error. The messages KERMIT-GUTS gives are as follows : 0 "Bad send-packet size" Sent when the micro attempts to set its receive buffer size to a value that is less than 26 (the minimum that KERMIT-GUTS will accept) or larger than 94, the maximum. It will also occur if KERMIT-GUTS tries to send a packet that is larger than the maximum specified. 0 "Bad message number" If the packet number is less than zero or greater than 63 (at which point it should "wrap around" back to zero). This message is returned if the packet type does not fall between A-Z. 0 "Unrecognized State" If KERMIT-GUTS is in a state not previously defined by the protocol, it will abort with this message. 0 "No SOH encountered" This error arises if KERMIT-GUTS reads the entire packet without encountering an SOH character. The result is that it sends a NAK to the micro, and marks this error as the most recent one. 0 "Bad Checksum" If the checksum calculated by KERMIT-GUTS does not match the one sent by the micro, KERMIT-GUTS NAK's the packet and flags this error. 0 "Bad character count" This error is set if KERMIT-GUTS receives a packet whose size is illegal (that is, if the size parameter was garbled during transmission of the packet.) 0 "Micro sent a NAK" Keep track of who rejected the packet. 0 - 10 - 1 - KERMIT-GUTS February 11, 1985 - "Lost a packet" When a packet is received and the sequence number is different from the number KERMIT-GUTS expected, the packet is NAK'ed. 0 "Micro aborted" Tells you that the micro aborted unexpectedly. 0 "Invalid RECFM, only fixed or variable supported" KERMIT-GUTS will abort on any file-system error it encounters when reading from the file it is to send. It can only send files with variable or fixed length record formats, therefore, Wylbur Edit or Packed format files will cause an error. 0 "BLKSIZE not a multiple of LRECL for RECFM=F" KERMIT-GUTS will refuse RECEIVE request and return to the KERMIT prompt. The BLOCKSIZE is not an integral multiple of the LRECL when RECFM F (fixed) is specified. 0 "LRECL not less than BLKSIZE-4 for RECFM=V' KERMIT-GUTS will refuse RECEIVE request and return to the KERMIT prompt. The LRECL for RECFM=V (variable) must be four less than the BLKSIZE to include the block descriptor work (BDW). 0 "Open for dataset failed" Indicates a problem opening the dataset. - - - - - - - - - 11 - 1 - KERMIT-GUTS February 11, 1985 0 5. Sending and receiving a GUTS file. + _____________________________________ - KERMIT-GUTS can only send and receive OS files. If you want to send a GUTS file you must first copy it to an OS file. If you want to receive a GUTS file, you must copy the OS file to a GUTS file. The following examples will illustrate how to do this: - Sending a GUTS file to a micro + ______________________________ 0 /ALLCAT PUB001,TESTFILE -- Allocate and catalog an OS file called -- -- TESTFILE on PUB001. -- (Note. The Volumename must corresponde with the volume or volumes you have specified with the /SET UNIT= command. See GUTS referense Manual for further information.) 0 /TSOS DATA,TESTFILE -- Copy the GUTS file "DATA" to the OS file -- -- TESTFILE -- 0 /KERMIT -- Start up the KERMIT-GUTS program -- KERMIT-GUTS version 1.00 at GUC. 0 KERMIT-GUTS> SEND TESTFILE Waiting 20 seconds before sending. 0 (Now go back to your micro and tell it to receive a file) 0 (After successful transmission you connect back to KERMIT-GUTS) KERMIT-GUTS> EXIT /SCRUNC TESTFILE -- Scratch and uncatalog the OS file -- - - - - - - - - 12 - 1 - KERMIT-GUTS February 11, 1985 0 Receiving a GUTS file from a micro. + ___________________________________ 0 /KERMIT -- Start the KERMIT-GUTS program -- KERMIT-GUTS version 1.00 at GUC. 0 KERMIT-GUTS> RECEIVE TESTFILE (Tell KERMIT-GUTS to receive a file from the micro and call the OS file "TESTFILE") 0 (Now go back to your micro and ask it to send your file to GUTS. After successful transmission go connect back to KERMIT-GUTS.) 0 KERMIT-GUTS> EXIT 0 /OSTS TESTFILE,TEST -- Copy the OS file "TESTFILE" to -- -- a GUTS file and call it "TEST" -- 0 /SCRUNC TESTFILE -- Scratch and uncatalog the OS file -- -- called TESTFILE -- - - - - - - - - - - - - - 13 - 1 - KERMIT-GUTS February 11, 1985 0 6. Reference + ____________ 0 For a more detailed explanation of Kermit or information regarding the IBM-PC, consult the Kermit manual, Kermit Users Guide and Specification. The manual is available at Gothenburg Universities' Computing centre. - - - - - - - - - - - - - - - 0 - 14 -