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 <CTL-A> (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 <CTL-A> through to
          KERMIT without waking up TMP.













                                                                 II.2



               The user must be aware that all input including the <CTL-A>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 <CTL-A> 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
                         (<CR> ).

                    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 (<CTL-A>). 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.