home *** CD-ROM | disk | FTP | other *** search
/ kermit.columbia.edu / kermit.columbia.edu.tar / kermit.columbia.edu / uclkermit / cuclkerdoc.txt < prev    next >
Text File  |  1988-08-15  |  38KB  |  1,123 lines

  1. INDRA Note No.1792                                UCL  INDRA
  2.                                                    INTERNAL
  3. 27th Aug 1985                                    Working Paper
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.                       U C L   K E R M I T
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.                        C. J. Kennington
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.         ABSTRACT:
  38.              A description of UCL's portable
  39.              implementation of a mainframe Kermit
  40.              file-transfer system, with notes on how
  41.              to obtain and use copies of Kermit.
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.                 Department of Computer Science
  49.  
  50.                    University College London
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60. [UCL Kermit]                - 1 -           [IN1792, Aug 1985]
  61.  
  62.  
  63.                            CONTENTS
  64.                                                   page
  65.  
  66.  
  67.  
  68.           0.  Introduction.                        1
  69.  
  70.           1.  UCL Kermit.                          1
  71.  
  72.           2.  Invoking UCL Kermit.                 2
  73.  
  74.           3.  Command-Line Flags.                  3
  75.  
  76.           4.  Debug-File Handling                  4
  77.  
  78.           5.  CR/LF Expansion.                     5
  79.  
  80.           6.  Automatic (Server) Mode.             5
  81.  
  82.           7.  Cancelling Kermit.                   6
  83.  
  84.           8.  Source Text and Dependent Routines.  6
  85.  
  86.           9.  Operating System Assumptions.        7
  87.  
  88.  
  89.  
  90.             APPENDIX I - The Kermit System.        8
  91.  
  92.           1.  Kermit.                              8
  93.  
  94.           2.  UCL Kermit.                          9
  95.  
  96.           3.  Kermit Performance.                 10
  97.  
  98.  
  99.  
  100.             APPENDIX II - Kermit Availability.    12
  101.  
  102.           1.  University of Columbia.             12
  103.  
  104.           2.  UK Distribution.                    12
  105.  
  106.           3.  Other Sources.                      13
  107.  
  108.           4.  Information Distribution.           13
  109.  
  110.  
  111.  
  112.             APPENDIX III - A Kermit Session.      15
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121. [UCL Kermit]                - 1 -           [IN1792, Aug 1985]
  122.  
  123.  
  124. 0.  Introduction.
  125.  
  126.         This document describes the version of Kermit
  127.   produced at University College London during the first half
  128.   of 1985.  To avoid duplication, it is intended to serve
  129.   both as a chapter of the U. of Columbia Kermit Manual and
  130.   as a UCL internal document.  General information about
  131.   Kermit is given in Appendix I, which should be read before
  132.   the rest of the document by those not familiar with Kermit
  133.   file-transfer and the Kermit world.  Information about
  134.   obtaining and running Kermit programs on various micros
  135.   etc. is given in Appendix II.  A simple guide to running a
  136.   Kermit session comprises Appendix III.
  137.  
  138.  
  139. 1.  UCL Kermit.
  140.  
  141.        UCL Kermit is a fairly simple mainframe-only Kermit,
  142.   written at UCL at about the same time that 1985 C-Kermit
  143.   was being written at Columbia.  It contains a certain
  144.   amount of the code from 1983 Unix-Kermit (as printed in the
  145.   1984 Kermit Protocol Manual), and its user-interface
  146.   derives also from that Kermit.  It is being made available
  147.   generally because it is believed to have something to offer
  148.   in the fields of portability, diagnostic capacity, and
  149.   possibly efficiency.  These matters are discussed further
  150.   in later parts of this document.
  151.  
  152.        UCL Kermit Capabilities At A Glance:
  153.  
  154.     Local operation:                 No
  155.     Remote operation:                Yes
  156.     User Interface:                  Command-line
  157.     Transfers text files:            Yes (CR/LF checks)
  158.     Transfers binary files:          Yes (image/prefixed)
  159.     Wildcard send:                   Yes (on command-line)
  160.     ESC interruption:                Yes
  161.     Filename collision avoidance:    No
  162.     Can time out:                    Yes
  163.     8th-bit prefixing:               Yes
  164.     Repeat count prefixing:          Yes
  165.     Alternate block checks:          No
  166.     Terminal emulation:              No
  167.     Communication settings:          Depends on system
  168.     Transmit BREAK:                  No
  169.     IBM communication:               No
  170.     Diagnostic logging:              Yes
  171.     Session logging:                 No
  172.     Raw upload/download:             No
  173.     Act as server:                   Yes
  174.     Talk to server:                  No
  175.     Advanced commands for servers:   No
  176.     Local file management:           No
  177.     Handle file attributes:          No
  178.     Command/init files:              No
  179.     Printer control:                 No
  180.  
  181.  
  182. [UCL Kermit]                - 2 -           [IN1792, Aug 1985]
  183.  
  184.  
  185.        UCL Kermit handles only the file-transfer aspects of
  186.   Kermit (including a modest Server capability).  It has no
  187.   facilities for routing through the mainframe to work with
  188.   another (remote) Kermit, nor does it support the Kermit
  189.   "remote session" facilities.  It is designed for an
  190.   environment in which effective terminal access to
  191.   mainframes is already available over general-purpose
  192.   networks.
  193.  
  194.        Further development of UCL Kermit is unlikely.  The
  195.   status of the code is "Copyright UCL and U. of Columbia",
  196.   but free permission is given to copy and use it for all
  197.   non-commercial purposes.  Commercial use is governed by the
  198.   U. of Columbia regulations on the subject.
  199.  
  200.        UCL Kermit has been developed on PDP 11/44s running
  201.   Unix(tm) (Berkeley 2.8), but has been ported to a number of
  202.   other systems.  When discussing mainframe-system-oriented
  203.   matters, this document uses unix terminology, but the
  204.   principles remain valid even if the program has been ported
  205.   to a system with different characteristics
  206.  
  207.  
  208. 2.  Invoking UCL Kermit.
  209.  
  210.        UCL Kermit runs as a normal unix program.  It is
  211.   started by the user issuing a normal command-line to the
  212.   unix shell, and terminates when its work is finished,
  213.   leaving the user again in communication with the shell.
  214.   All its command-information comes from either the
  215.   parameters on the command-line invoking it, or by way of
  216.   commands from the local Kermit.  It has no interactive
  217.   command mode, neither does it make use of any init-file to
  218.   alter its various defaults.  It is fairly verbose, both
  219.   when starting up and when logging in its debug file.  Where
  220.   appropriate, it identifies its output with the prefix
  221.   "KmUCL".
  222.  
  223.        Kermit is invoked with a command-line of the following
  224.   format:-
  225.  
  226.           kermit    [-flags] [-Ddebugfile] [filename(s)]
  227.  
  228.   where the flags and debugfile are as described in the next
  229.   sections and the filenames are normal references to unix
  230.   files.  Since the command-line is processed by the unix
  231.   shell, wildcards may be used in filenames as in any other
  232.   unix command.  The filenames are included only in the case
  233.   where a "s" parameter (send files) is included in the
  234.   flags.  The "-" preceding the flags is optional, but that
  235.   before the "D" is mandatory.
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243. [UCL Kermit]                - 3 -           [IN1792, Aug 1985]
  244.  
  245.  
  246. 3.  Command-Line Flags.
  247.  
  248.        The following flags are valid.  Each consists of a
  249.   single lower-case character only.  Where they define
  250.   mutually-exclusive actions, to include more than one from
  251.   the mutually-exclusive group constitutes an error, which is
  252.   detected.  Invalid characters in the flags also consititues
  253.   an error.  On detecting any such error, UCL Kermit displays
  254.   a short summary of the valid flag-codes and terminates.
  255.  
  256.  
  257.               s  -  send-flag
  258.               r  -  receive-flag
  259.               a  -  automatic-flag
  260.  
  261.   These form a mutually exclusive group.  UCL Kermit, after
  262.   outputting banners etc, switches to send, receive or
  263.   automatic (server) mode according to which one is entered.
  264.   If none is included in the flags, automatic is assumed.
  265.  
  266.        Iff a "s"-flag has been included, then one of more
  267.   filenames must be appended.  These specify the files to be
  268.   sent.  Wildcards (as accepted by unix) may be included.
  269.  
  270.  
  271.               h  -  help-flag  (alternative: ?)
  272.  
  273.   This flag overrides all others and causes 2 screensfull
  274.   (about 45 lines) of help-information to be displayed.
  275.  
  276.  
  277.               f  -  filename-conversion flag
  278.  
  279.   If this flag is present, then the filenames sent will be
  280.   allowed to remain in upper or lower (or mixed) case, as
  281.   found on the disks.  By default, UCL Kermit converts all
  282.   unix filenames (typically lower-case) to upper-case before
  283.   sending them as the name of the file to be transferred.
  284.  
  285.  
  286.               7  -  7-bit flag
  287.               8  -  8-bit-prefixing flag
  288.               i  -  binary-image flag
  289.  
  290.   These form a mutually exclusive group.  "7" specifies that
  291.   the files are to be treated as files of ASCII character
  292.   data; characters received are masked to 7 bits (discarding
  293.   any parity-bits) before storing, and characters sent have
  294.   the top bit zero; CR/LF expansion is activated (see section
  295.   5).  "8" specifies that UCL Kermit should attempt to
  296.   negotiate 8th-bit prefixing with the local (micro) Kermit;
  297.   this is the default if no such flag is included.  If the
  298.   local Kermit refuses to use 8th-bit prefixing, then the
  299.   transfer reverts to 7-bit mode as described above.
  300.   "i" (image-mode) specifies that the file is to be
  301.   sent/received as 8-bit characters.  CR/LF expansion is
  302.   inhibited in 8th-bit prefixing and image-modes.
  303.  
  304. [UCL Kermit]                - 4 -           [IN1792, Aug 1985]
  305.  
  306.  
  307.        Repeat-count-prefixing (data-compression) is always
  308.   "on".  It will be used if the local Kermit agrees.  Use of
  309.   this facility makes no difference to the accuracy of the
  310.   transfer, but can materially affect the time needed.
  311.  
  312.  
  313. 4.  Debug-File Handling and Information Recorded.
  314.  
  315.        The second (optional) parameter of the command-line
  316.   consists of a minus sign, one or more capital D's and the
  317.   name of a file into which debugging information is to be
  318.   written.  If no debug is required, then the whole parameter
  319.   should be omitted.  There may be up to three capital D's,
  320.   controlling the debugging level to be used; they are
  321.   followed without a space by the name of the file into which
  322.   debug is to be written.  (This precludes the use of a file
  323.   whose name starts with a capital D.)  A null filename is an
  324.   error and results in debug being switched off.
  325.  
  326.        UCL Kermit always checks rigorously that incoming
  327.   packets conform to the Kermit protocol as laid down.
  328.   Protocol errors are always reported (in ERROR-packets) to
  329.   the local Kermit; if debug is switched on details will also
  330.   be logged in the debug file.
  331.  
  332.        The debug file is opened in "append" mode, so that one
  333.   file may hold the debug output from several runs.  At the
  334.   beginning and end of each run a banner is put into the file
  335.   so that the start of each run may be easily located.  No
  336.   check is performed to prevent the debug-file from also
  337.   being specified as a file to be sent.
  338.  
  339.        Level-1 debug (a single D) consists of a record of the
  340.   way in which the program is used, plus a note of the files
  341.   sent or received, packet by packet.  The details of the I-
  342.   packet negotiation are logged; error-packets sent by or to
  343.   the local Kermit are also logged, as are the details of any
  344.   transmission errors which may be detected.  Level 1 debug
  345.   is intended to serve as a record of activity and to
  346.   identify errors at the protocol level, especially when a
  347.   revised or new local Kermit is in use.
  348.  
  349.        Level-2 debug (2 D's) prints in addition the details
  350.   of each packet as it is sent or received.  It is intended
  351.   for use where there is some problem to do with the
  352.   formatting of the packets exchanged or the data in them.
  353.  
  354.        Level-3 debug (3 D's) adds a subroutine-trace through
  355.   the program, plus a record of each character sent or
  356.   received on the communications line (in hex).  The main use
  357.   of this is where there is a communications problem such
  358.   that no packets are ever received successfully, or some
  359.   packets are entirely lost.
  360.  
  361.  
  362.  
  363.  
  364.  
  365. [UCL Kermit]                - 5 -           [IN1792, Aug 1985]
  366.  
  367.  
  368. 5.  CR/LF Expansion.
  369.  
  370.        In the case of 7-bit file transfers only, care is
  371.   taken to ensure that each line of text in the file is sent
  372.   terminated by a single CR/LF pair, and each line of text
  373.   received is terminated by a single LF before being stored.
  374.   If a file is found to contain strings of repeated or
  375.   intermixed CRs, LFs and CR/LF pairs, these are processed so
  376.   that each CR/LF or LF/CR, and each CR or LF which does not
  377.   pair with a LF or CR respectively, converts to a CR/LF pair
  378.   for transmission or a single LF for storage.  This is
  379.   believed to be what is needed for all unix-based systems.
  380.   The routine which carries out this transformation is
  381.   included in the "machine-dependent" section (see below) so
  382.   that it may be easily modified if necessary when porting
  383.   the program to a new mainframe.
  384.  
  385.        CR/LF expansion is essential if files are to be
  386.   transferred correctly between unix (which uses LF as a
  387.   line-terminator) and systems such as CP/M which use CR
  388.   instead.  For this reason care should be taken that, if a
  389.   text-file is being transferred, 8th-bit-prefixing is not
  390.   accidentally switched on.  See Appendix III.
  391.  
  392.  
  393. 6.  Automatic (Server) Mode.
  394.  
  395.        When in automatic mode, UCL Kermit behaves as a rather
  396.   simple Kermit server.  It is not really a server, since it
  397.   is running as the creature of the user-shell which invoked
  398.   it.  It will accept the following commands from the local
  399.   Kermit:-
  400.  
  401.        SEND - allow local Kermit to send files (as many as
  402.   the local Kermit may wish);
  403.  
  404.        GET - send one or more files to the local Kermit; the
  405.   names should be entered into the get-request assuming the
  406.   path which was in existence when UCL Kermit was invoked; no
  407.   wildcards are allowed.
  408.  
  409.        BYE and LOGOUT - both cause UCL Kermit to terminate
  410.   gracefully and leave the remote Kermit (if still online)
  411.   connected to the unix shell.
  412.  
  413.        An ERROR packet  -  this has the same effect as BYE.
  414.  
  415.        After automatic mode, as after send or receive modes,
  416.   UCL Kermit terminates like any other unix program, leaving
  417.   the shell in control.
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426. [UCL Kermit]                - 6 -           [IN1792, Aug 1985]
  427.  
  428.  
  429. 7.  Cancelling Kermit.
  430.  
  431.        Any error packet received at any time, or any
  432.   substantial protocol error, will cause UCL Kermit to
  433.   terminate (fairly) gracefully.  Situations can, however,
  434.   arise where UCL Kermit has not received an error but the
  435.   local Kermit has failed or been inadvertently cancelled.
  436.   In these cases UCL Kermit will repeatedly time out, sending
  437.   a NAK (and a message in clear as well) each time it does
  438.   so.  In all cases except automatic-mode, the timeouts will
  439.   eventually reach a limit and UCL Kermit will quit, but it
  440.   is not convenient to have to wait this long.
  441.  
  442.        If the local Kermit has a "send-error-packet"
  443.   facility, this may be used to cancel UCL Kermit.
  444.   Alternatively, using the local Kermit in connect-mode, the
  445.   sequence "ESC-C" will be recognized and cause UCL Kermit to
  446.   abort gracefully, restoring the communications line to
  447.   "cooked" before it does so.  The only time when this is not
  448.   effective is if UCL Kermit times out between the ESC and
  449.   the C.
  450.  
  451.  
  452. 8.  Source Text and Machine Dependent Routines.
  453.  
  454.        The source of UCL Kermit consists of a single large
  455.   file of code which it is believed will run unchanged under
  456.   any operating system (subject to the provisos below) plus a
  457.   short file containing about 10 procedures which are thought
  458.   to be potentially machine- or system- or compiler-
  459.   dependent.  These are fairly heavily commented, but the
  460.   following notes may be useful.
  461.  
  462.        CR/LF processing is controlled by routines ascedit()
  463.   and ascout().  These are called whenever a CR or LF is
  464.   encountered in text-data to be sent or received
  465.   respectively.  (See above, section 5.)
  466.  
  467.        Errors when reading/writing data from/to disk are
  468.   controlled by routine filerr(), whose function is to return
  469.   a sensible error-code (for logging in the debug file and
  470.   reporting to the local Kermit), and to distinguish errors
  471.   from normal end-of-file conditions.
  472.  
  473.        Routine flushinput() is called whenever there is a
  474.   need to discard characters already received.
  475.  
  476.        Functions rawtty() and cooktty() are called when it is
  477.   necessary to convert the mode of the terminal connection
  478.   from that normally used by the system to one in which all
  479.   characters are passed to/from the program without editing.
  480.   Function unbuffer() is called during initiation to ensure
  481.   that input/output on the communications line is not delayed
  482.   e.g.  by waiting for end-of-line characters.
  483.  
  484.  
  485.  
  486.  
  487. [UCL Kermit]                - 7 -           [IN1792, Aug 1985]
  488.  
  489.  
  490.        The whole of the main character-input routine,
  491.   nextin(), is included in the machine-dependent section,
  492.   together with the the timeout-setting routine, timoset().
  493.   These interact because there is a fundamental difference
  494.   between systems in which a timeout expiring will cause an
  495.   unsatisfied character-read to abort and one in which it
  496.   will not.  The "#ifdef" parameter "BSD42" controls which of
  497.   these situations is expected; but systems other than unix
  498.   may require yet other types of logic.  The timeout handling
  499.   is intentionally kept very simple so that there is no
  500.   reliance on unix-oriented features of C such as "longjump".
  501.  
  502.  
  503. 9.  Operating System Assumptions.
  504.  
  505.        In considering the portability of UCL Kermit, certain
  506.   assumptions were made about the environment in which it
  507.   would be running.  These certainly include:-
  508.  
  509.     -- that the system stores its files (or at least
  510.   retreives them from storage) in ASCII with line-terminators
  511.   rather than record-delimiters or carriage-control
  512.   characters;
  513.  
  514.     -- that the system supports users on teletype-like
  515.   terminals, and that these terminal-users can invoke
  516.   programs and access files without unreasonable restraint;
  517.  
  518.     -- that the terminal-line can be set into such a mode
  519.   that it will pass a character-set comprising all printable
  520.   characters plus SOH (01) transparently to and from the
  521.   user's program.
  522.  
  523.        It is believed that UCL Kermit can be ported to any
  524.   system which meets these (and possibly a few other
  525.   unrecognized) criteria, with only a small amount of
  526.   attention to the routines discussed in section 8.  The
  527.   author would be interested to receive reports from anyone
  528.   who carries out such porting.
  529.  
  530.           ********************************************
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548. [UCL Kermit]                - 8 -           [IN1792, Aug 1985]
  549.  
  550.  
  551.               APPENDIX I  -  The Kermit System.
  552.  
  553.  
  554.             [This Appendix provides a general
  555.           description of Kermit file-transfer and the
  556.           way in which UCL Kermit fits into the
  557.           general picture.]
  558.  
  559.  
  560. 1.  Kermit.
  561.  
  562.        Kermit is a system designed at the University of
  563.   Columbia, New York to permit file transfer between
  564.   computers, both micro and mainframe, and access to a
  565.   substantial proportion of a mainframe's file-handling and
  566.   general organizing ability.  It requires no special
  567.   communications facilities beyone those normally provided
  568.   for direct "time-sharing" terminal access to a mainframe.
  569.   The U. of Columbia Kermit User Manual and Kermit Protocol
  570.   Manual provide the basic documentation of Kermit and
  571.   describe its facilities and a selection of its
  572.   implementations.  A more general discussion of the reasons
  573.   which led to the production of Kermit is contained in an
  574.   edited version of an article from Byte magazine.  All these
  575.   documents may be obtained from Columbia, but are also held
  576.   online at various centres (including, at the time of
  577.   writing, UCL).  See Appendix II.
  578.  
  579.        Kermit does not make use of the sort of reliable
  580.   connections over computer communications which are provided
  581.   by the various ISO and other protocols.  It must be
  582.   considered to belong to an earlier generation of
  583.   communications activities.  Its great advantage is that
  584.   there are now in existence implementations for almost the
  585.   whole range of general-purpose computers, micro mini and
  586.   mainframe, all of which can be expected to interwork
  587.   without difficulty.  It therefore provides a practical
  588.   state-of-the-art solution to the problems of transferring
  589.   files between micro computers and mainframes, or between
  590.   micros of differing natures.  The files transferred may be
  591.   either text or binary, but must be of a sequential nature.
  592.  
  593.        Kermit protocol includes packet-numbering and
  594.   checksums with error-recovery to ensure that any file
  595.   transfer which completes normally will actually have
  596.   transferred a correct copy of the file.  The only
  597.   exceptions to this general rule are:-
  598.  
  599.     --  where 8-bit-image transfers are used, the 8th bit
  600.           may not be checked effectively.
  601.  
  602.     --  where systems use different conventions for end-
  603.           of-line, CR/LF expansion must be activated (see
  604.           above section 5).
  605.  
  606.  
  607.  
  608.  
  609. [UCL Kermit]                - 9 -           [IN1792, Aug 1985]
  610.  
  611.  
  612.     --  where a binary file (8-bit data) is to be
  613.           transferred, but one end or other has not
  614.           implemented the neccessary option.
  615.  
  616.        Kermit also provides a mainframe-to-mainframe
  617.   capability, enabling a terminal user on one mainframe to
  618.   acquire a link to another and conduct a substantial remote
  619.   session on it, including file-transfer between the two.  In
  620.   the U.S.A. this is apparently much used.  The U.K. Academic
  621.   Community has a well-developed system of access to remote
  622.   mainframes, using X25 protocols.  In this environment,
  623.   Kermit-based inter-mainframe working seems superfluous (and
  624.   likely to consume excessive resources).  It is for this
  625.   reason, among others, that UCL Kermit has been designed to
  626.   a specification which is restricted compared with that used
  627.   for some of the American implementations.
  628.  
  629.        Kermit is, of course, only one of a family of
  630.   protocols designed to transfer files between micros and
  631.   mainframes, mostly using rather similar techniques.  Its
  632.   main advantages are widespread availability and the fact
  633.   that it is free.  Kermit is not "public domain" but
  634.   "copyright, freely available"; as such all Kermits must be
  635.   made available either without charge or at cost-of-
  636.   distribution.  This policy of Columbia's has resulted in
  637.   widespread distribution of Kermits as they have come into
  638.   existence.  See also Appendix II.
  639.  
  640.  
  641. 2.  UCL Kermit.
  642.  
  643.        UCL Kermit was produced at the Department of Computer
  644.   Science to provide at UCL a simple reliable Kermit to run
  645.   on all the Department's unix systems.  The immediate
  646.   objective was the transfer of text files to and from
  647.   various micros (BBCs, Sirius etc.), but the opportunity was
  648.   taken to write a version which would move easily to almost
  649.   any environment in which asynchronous ASCII terminals were
  650.   supported for command-input.  See sections 8 & 9 above.
  651.  
  652.        Since there is in fact no real problem in letting
  653.   terminals at one UK academic site access the computers at
  654.   another (using JANET and X29), no facilities were provided
  655.   for routing through the mainframe to the outside world.  In
  656.   Kermit terminology, this is a "remote-only" Kermit.  This
  657.   policy also had the advantage of avoiding the areas in
  658.   which many facilities are provided in highly system-
  659.   specific (and hence non-portable) ways.
  660.  
  661.        UCL Kermit used as a starting-point the C-coded
  662.   example version included in the Protocol Manual.  This was
  663.   designed to run under unix, and does not provide a
  664.   conversational interface to the user.  UCL Kermit therefore
  665.   also expects to get its full commands from an OS command-
  666.   line, entering either file-transfer or automatic mode as
  667.   soon as it has output its informative banners.
  668.  
  669.  
  670. [UCL Kermit]                - 10 -          [IN1792, Aug 1985]
  671.  
  672.  
  673.        While UCL Kermit was in gestation, Columbia released
  674.   their completely new C-Kermit, which provides almost all
  675.   possible Kermit facilities on a wide range of unix-like and
  676.   other systems.  C-Kermit is a much fuller implementation
  677.   than UCL Kermit, and could be preferred in many
  678.   circumstances.  The principal areas in which it is believed
  679.   that UCL Kermit scores are in ease of porting to new
  680.   systems and in its very full diagnostic tools (see above).
  681.   There may also be installations in which the system
  682.   managers would prefer not to provide the full Kermit
  683.   facilities to route through from one mainframe to another
  684.   over lines intended for terminal access.
  685.  
  686.  
  687. 3.  Kermit Performance.
  688.  
  689.        Few systematic measurements of Kermit performance have
  690.   been published.  The implementations for various computers
  691.   differ widely in techniques, languages and in the operating
  692.   systems for which they are designed.  It is known that some
  693.   of the implementations for "generic" micros, e.g. those
  694.   running under CP/M, are cpu-intensive and cannot drive fast
  695.   communications lines.  However, many of the more specific
  696.   Kermits are very efficient.
  697.  
  698.        Since the data is transferred over a normal terminal-
  699.   line in asynchronous mode, the actual line speed (e.g. 960
  700.   char/sec for a 9600baud line) is an upper limit to the
  701.   possible character rate.  This has to be reduced for the
  702.   overhead of the envelope of each packet and for the
  703.   acknowledgments, but these are arranged to be quite small.
  704.   Kermit data (except in image-mode) is encoded by a
  705.   prefixing system to allow control-characters and 8-bit
  706.   characters to be passed over a medium with a restricted
  707.   character-set.  The degradation caused by this is
  708.   potentially large; but in practice the majority of text-
  709.   files incur quite low overheads (less than 10%) from this
  710.   encoding.  Against this can be set the compression effected
  711.   by using repeat-counts, which can often be greater than 20%
  712.   in files such as formatted program source.  The largest
  713.   delays are usually the inter-block times caused by
  714.   scheduling in the mainframe and by cross-network time on
  715.   long connections.  Disk operations can also cause
  716.   substantial delays on some micro operating systems.
  717.  
  718.        In good conditions, e.g. with back-to-back micros,
  719.   Kermit will often achieve net transfer rates greater than
  720.   60% of the limit imposed by the line-speed (i.e. more than
  721.   600 char/sec at 9600baud).  Working between a micro and a
  722.   mainframe, provided that the latter is not so heavily
  723.   loaded as to show a degraded response time, rates greater
  724.   than 40% of line-speed have been observed.  These speeds
  725.   cannot be expected to compare with those achieved by
  726.   protocols such as NIFTP over X25 using fast (48Kbaud)
  727.   lines, but are adequate for the majority of micro-mainframe
  728.   and micro-micro transfers.
  729.  
  730.  
  731. [UCL Kermit]                - 11 -          [IN1792, Aug 1985]
  732.  
  733.  
  734.       It is perhaps more relevant to compare the transfer
  735.   speeds achieved by Kermit with those of other similar
  736.   micro-file-transfer systems.  Kermit is believed to achieve
  737.   higher net transfer rates than most of its competitors.
  738.  
  739.        UCL Kermit has been designed so that it will give high
  740.   performance while making only modest demands on the cpu-
  741.   power of the system on which it is running.
  742.  
  743.           ********************************************
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792. [UCL Kermit]                - 12 -          [IN1792, Aug 1985]
  793.  
  794.  
  795.             APPENDIX II  -  Kermit Availability.
  796.  
  797.  
  798.             [This Appendix provides information on
  799.           the sources from which copies of Kermit
  800.           programs and further information about
  801.           Kermit may be obtained by users in the UK.]
  802.  
  803.  
  804. 1.  University of Columbia Distribution.
  805.  
  806.        The Center for Computing Activities at the University
  807.   Of Columbia maintain a database containing copies of all
  808.   known Kermit implementations and documentation.  This is
  809.   held online (on a TOPS-20 machine), accessible over ARPANET
  810.   as CU20B, using "anonymous ftp" and arpaftp protocol (log
  811.   in as "anonymous").  UK users can obtain further
  812.   information about use of Arpanet from the Liason section at
  813.   UCL Dept. of Computer Science.  Columbia will also supply
  814.   copies of the bulk of this database on magnetic tape in
  815.   various formats at a distribution cost of (currently) 100
  816.   dollars.  Printed copies of the User and Protocol Manuals
  817.   are available at (currently) 10 dollars each.  Application
  818.   should be made to:-
  819.  
  820.               Kermit Distribution
  821.               Center for Computing Activities
  822.               Columbia University
  823.               New York,   N.Y.   USA    10027
  824.  
  825.        There are a number of other copies of this database
  826.   accessible in the USA, notably one held on a unix system
  827.   which can be reached via UUCP.  Details are given
  828.   intermittently in the Columbia Kermit Information-Digests.
  829.   These are edited versions of electronic mail exchanged
  830.   between Columbia and Kermit users, plus announcements of
  831.   general interest etc.  They are issued approximately weekly
  832.   by electronic mail to a mailing-list held at Columbia.
  833.   Various UK sites receive copies, including UCL and
  834.   Lancaster.  Copies of all back issues are held in the
  835.   Columbia database.
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853. [UCL Kermit]                - 13 -          [IN1792, Aug 1985]
  854.  
  855.  
  856. 2.  UK Distribution.
  857.  
  858.        [This information is correct at time of writing but
  859.   obviously may change with time.]
  860.  
  861.        The University of Lancaster obtain copies of the
  862.   Columbia distribution tapes several times a year and keep
  863.   the majority of the information available in a database on
  864.   their VAX computer.  They also update this from time to
  865.   time by direct arpaftp transfers from Columbia.  This
  866.   database is available to UK Academic Community over JANET
  867.   by NIFTP or Kermit.  Further information may be obtained
  868.   from:-
  869.  
  870.               Alan Phillips
  871.               The Computer Centre
  872.               University of Lancaster
  873.               LANCASTER
  874.  
  875.   or by sending JANET mail to "syskermit@lancs.vax1", or by
  876.   telephoning 0524-65201 Xtn 4881.
  877.  
  878.        Lancaster are themselves the authors of the
  879.   implementaion of Kermit for the BBC micro.  They will
  880.   supply this on request either in a PROM or on floppy.  They
  881.   are also able to supply on floppy the version for the IBM-
  882.   PC family (and clones).  Kermit for Research Machines
  883.   micros (480Z and Nimbus) is obtainable from Tech. Support
  884.   at RML, Oxford.  Kermit for Apricots is available form
  885.   Ralph Mitchell at Brunel University.
  886.  
  887.        Versions of Kermit for PRIME computers are available
  888.   from Teesside Polytechnic; and for GEC 4000-series from
  889.   Paul Bryant at the Rutherford-Appleton Laboratory.
  890.  
  891.  
  892. 3.  Other Sources.
  893.  
  894.        The Kermit fraternity is not highly organized; in
  895.   particular there is little contact in the UK between the
  896.   Academic and Commercial users.  It is known however that
  897.   both DECUS and the IBM-PC User Group hold and distribute
  898.   copies of Kermit for the machines in which they are
  899.   interested.
  900.  
  901.        Kermit is widely in use in the UK Academic community.
  902.   There are obvious bootstrapping problems in transferring a
  903.   Kermit from the disks at Lancaster to a micro, but most of
  904.   the micro-Kermits are probably now in use somewhere in the
  905.   UK.  Any user wanting to obtain a copy on floopy of some
  906.   particular Kermit (not mentioned above) is advised to send
  907.   an appeal out to "info-kermit@ucl.cs".  The Kermit
  908.   fraternity is supposed to practice self- and mutual-help.
  909.  
  910.  
  911.  
  912.  
  913.  
  914. [UCL Kermit]                - 14 -          [IN1792, Aug 1985]
  915.  
  916.  
  917. 4.  Information Distribution.
  918.  
  919.        At the time of writing, UCL are maintaining a mail
  920.   distribution list "info-kermit@ucl.cs".  Anyone who wishes
  921.   may send mail to this list, which contains names of some 50
  922.   UK Kermiteers.  Requests for inclusion on the list should
  923.   be addressed to "cjk@ucl.cs".  [This situation is likely to
  924.   change radically by early 1986.]
  925.  
  926.        Both Lancaster and UCL hold copies of the Columbia
  927.   Information-Digests, which are accessible by NIFTP, Kermit
  928.   or normal login.  For information on accessing the UCL
  929.   copies, contact Liason at UCL Dept. Computer Science.  UCL
  930.   notify the info-kermit list as new issues are placed
  931.   online.
  932.  
  933.        Lancaster issue "Mailshots" a few times a month to the
  934.   info-kermit distribution list giving information on current
  935.   activities.
  936.  
  937.           ********************************************
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975. [UCL Kermit]                - 15 -          [IN1792, Aug 1985]
  976.  
  977.  
  978.          APPENDIX III  -  Running a Kermit Session.
  979.  
  980.  
  981.             [This Appendix assumes that Kermit is
  982.           being used between a micro and the UCL
  983.           systems.  Much of it is obviously
  984.           applicable to other Kermit connections.]
  985.  
  986.  
  987.        Running a Kermit session is complicated by the fact
  988.   that the user, sitting at the keyboard of a micro, is in
  989.   contact both with the micro-OS (e.g. CP/M) plus the Kermit
  990.   running on it (called the "local Kermit"), and also with
  991.   the mainframe-OS (unix) plus the mainframe Kermit (UCL
  992.   Kermit).  At any one time keyboard input will be going
  993.   either to the local system or to unix; screen output may
  994.   however contain information originating from both.  The
  995.   behaviour of UCL Kermit is discussed above, and it is
  996.   assumed that the user has some familiarity with unix.  The
  997.   behaviour of the local setup depends however on the actual
  998.   micro being used.
  999.  
  1000.        When obtaining the Kermit for the micro, you will have
  1001.   acquired at least some instructions for running it.
  1002.   Instructions for the most common micro-Kermits are also
  1003.   included in the Columbia Kermit User Manual, a copy of
  1004.   which is invaluable.  Most micro-Kermits, however, work in
  1005.   much the same way.
  1006.  
  1007.        At the risk of stating the obvious, Kermit will not
  1008.   run between micro and mainframe until the hardware
  1009.   communications link has been established.  If no other
  1010.   software tools are available, put the micro-Kermit into
  1011.   "connect" mode while doing this.  When you have managed to
  1012.   log on to the mainframe and list a file by "type", "cat" or
  1013.   etc., then you are ready to proceed with file-transfers.
  1014.  
  1015.        The micro-Kermit will probably supply four modes of
  1016.   working:
  1017.  
  1018.     --  CONNECT, in which it behaves as a normal terminal;
  1019.     --  SEND, in which it will transfer files to the
  1020.           mainframe;
  1021.     --  RECEIVE, in which it will accept incoming files
  1022.           from the mainframe;
  1023.     --  COMMAND, in which it will send commands to the
  1024.           mainframe to send or get (receive) files
  1025.           or do a number of other things.
  1026.  
  1027.   It may be that COMMAND mode is in fact represented by a
  1028.   number of commands such as GET etc.
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036. [UCL Kermit]                - 16 -          [IN1792, Aug 1985]
  1037.  
  1038.  
  1039.        CONNECT is used, working as a terminal, to log on to
  1040.   the mainframe, do any necessary housekeeping and then start
  1041.   the mainframe Kermit.  It is probably also needed at the
  1042.   end of the session for logging out etc.  What sort of a
  1043.   terminal the micro is emulating depends on the details of
  1044.   the local Kermit.
  1045.  
  1046.        SEND / RECEIVE  and  COMMAND  represent two different
  1047.   ways of using Kermit, which will be described separately.
  1048.   UCL Kermit supports both; not all Kermits support COMMAND.
  1049.   (COMMAND is often referred to as "Send Server Command"
  1050.   mode, because the local Kermit is in fact sending
  1051.   specially-formatted commands to the mainframe Kermit,
  1052.   expecting it to be in "Server" mode.  UCL Kermit's
  1053.   "automatic" mode corresponds to this.)
  1054.  
  1055.        To use SEND, you must first (while in CONNECT) start
  1056.   UCL Kermit to receive files by a command-line such as:-
  1057.  
  1058.                   kermit  r7
  1059.  
  1060.   After UCL Kermit's initial banners have been received, you
  1061.   must escape out of CONNECT (see local Kermit instructions)
  1062.   and issue a SEND command to the local Kermit.  This will
  1063.   probably prompt you for a list of files to be sent.  When
  1064.   this has been entered, the two Kermits should transfer the
  1065.   files without more ado.  Your micro-Kermit will give you
  1066.   some information as to how the transfer is progressing; the
  1067.   amount depends very much on which particular micro-Kermit
  1068.   you are running.  At the end of the transfer, UCL Kermit
  1069.   will terminate and leave the unix shell in control.  The
  1070.   micro-Kermit will tell you that this has happenned.  You
  1071.   should put it back into CONNECT and carry on working unix.
  1072.  
  1073.        To use RECEIVE, you must first (while in CONNECT)
  1074.   start UCL Kermit to send files by a command-line such as:-
  1075.  
  1076.                   kermit  s7  foo data1 fudge*
  1077.  
  1078.   After UCL Kermit's initial banners have been received, you
  1079.   must escape out of CONNECT (see local Kermit instructions)
  1080.   and issue a RECEIVE command to the local Kermit.  The two
  1081.   Kermits should then proceed much as they did for SEND, but
  1082.   with the file going in the opposite direction.  You end up
  1083.   back with unix.
  1084.  
  1085.        To use COMMAND (in whatever way the local Kermit
  1086.   implements it), you must first (while in CONNECT) start up
  1087.   UCL Kermit in automatic mode by a command-line such as:-
  1088.  
  1089.                   kermit  a7
  1090.  
  1091.   The initial banners will tell you to send commands.  Escape
  1092.   back to your local Kermit and follow its instructions for
  1093.   working with server Kermits.  In this mode you can do a
  1094.   succession of SENDs or GETs; UCL Kermit simply waits for
  1095.   the next command.  To get back to unix you have to use the
  1096.  
  1097. [UCL Kermit]                - 17 -          [IN1792, Aug 1985]
  1098.  
  1099.  
  1100.   BYE or LOGOUT or FINISH command of the local Kermit (or go
  1101.   into CONNECT and send ESC-C).  Note that UCL Kermit does
  1102.   not implement the esoteric commands such as DIR and FINGER;
  1103.   to list directories or see who's online you must get back
  1104.   to unix.
  1105.  
  1106.        You are most likely to be transferring a text-file.
  1107.   if this is the case, it is often essential that CR/LF
  1108.   expansion is active (see above section 5).  Therefore make
  1109.   sure that one or other of the two Kermits is firmly set to
  1110.   transfer 7-bit data.  If both ends are set to deal with
  1111.   8th-bit-prefixed (binary) data, then CR/LF expansion will
  1112.   get switched off.  UCL Kermit's default is 8th-bit-prefixed
  1113.   (see section 2 above).  See the instructions of the local
  1114.   Kermit for its default and settings.
  1115.  
  1116.        Unfortunately, as with all communications, lots can go
  1117.   wrong.  Discussing this is beyond the scope of this Note.
  1118.   However, a sensible connection to unix (to let you start
  1119.   again) should always be possible by escaping back into
  1120.   CONNECT on the micro and sending ESC-C to UCL Kermit.
  1121.  
  1122.           ********************************************
  1123.