From C20211@UK.AC.PLYMOUTH.PRIME-A Wed Apr  7 14:15 GMT 1993
Via: uk.ac.plymouth; Wed, 7 Apr 93 14:15:46 GMT
Date:         Wed, 07 Apr 93 15:13:41
From: John Horne  <C20211@UK.AC.PLYMOUTH.PRIME-A>
Subject:      Prime Kermit 8.15 - file 3
To: syspds
In-Reply-To:  Your message of  Fri, 19 Mar 1993 16:21:30 +0000 (GMT)
Status: RO


   From : John Horne, Computing Service, Polytechnic South West.
   Email : C20211 @ UK.AC.PSW.PA

      Kermit - Version 8.00, for PRIMOS revisions 21 and 22.

   This new version of Kermit (8.00) replaces the previous version (7.57).

   Initially I was asked to investigate some problems our users were having
   with large (>100k) files. However, the code seemed to be getting a bit
   old and messy. So it seemed somewhat easier to look at all of the code.
   This version should work exactly as the old version, but there is more
   functionality in it and the use of packets should be more efficient.
   The error handling has been much improved, and I think that this will
   cure most problems that users use to have. All the previous known bugs
   have been sorted out in the code.

   Where possible version 6 of the Kermit Protocol Manual has been followed.

   The documentation included will show users the new commands available.
   Below are some of the main changes, but for more details it will be
   necessary to look at the code. Options on the command line and to parameter
   settings may be abbreviated to some extent; i.e. YES may be given as Y, OK,
   or just Carriage Return; FILE_TYPE may be abbreviated to FT, and so on.

   The following changes are in the new version of Kermit :

   1)                                                               17/01/90 :
      Many commonly used constants have been put into COMMON, these include
      character constants, CTRL-A in 7-bit and 8-bit ASCII, etc.

   2)                                                               17/01/90 :
      All of the code has been looked at, and "cosmetically" tidied up.

   3)                                                               17/01/90 :
      Unused subroutines/functions have been removed; others have been replaced
      as in-line code; and yet others re-written to make more use of COMMON
      variables.

   4)                                                               17/01/90 :
      "Transparent" mode has been made available. This is basically when NO
      parity is used; 8-bit parity checks are done. The code was there before
      but not available to the user (why?). This also means that parity can
      be SET or given on the command line itself.

   5)                                                               17/01/90 :
      Most of the previous code did not check for ANY error messages from the
      PRIMOS subroutines used - I think this is where most of the bugs came
      from. Nearly all of the subroutines are now checked for errors and
      appropriate action is taken. Meaningful messages will be displayed to the
      user, or a number given. A number means real big trouble! Some of the old
      subroutines have been replaced by new ones, and some old code replaced by
      PRIMOS subroutines. Only inconsequential subroutines have been left
      un-checked, e.g. file-units not closed, but since file-units are
      dynamically allocated it doesn't matter whether they are closed or not.

   6)                                                               17/01/90 :
      The use of pathnames has been extensively adopted. This will allow more
      flexibility for the user; they don't have to continuously change
      directories now. The code is also more robust, since the subroutines will
      easily handle pathnames, rather than the code having to attach all over
      the place and then to attach back (this is asking for trouble).

   7)                                                               17/01/90 :
      The LOG file is now checked to see if it is already in use. The CLOSE
      command has been added, so that the user may close it now if they wish.

   8)                                                               17/01/90 :
      The type of file system object being SENT is now checked. It is only
      possible to send SAM, DAM, or CAM files. An error message is displayed
      if the user tries to send a directory of any sort.

   9)                                                               17/01/90 :
      There are more command line options available; -HELP will show you them.
      The help message has been tidied up, and -USAGE added just to show the
      syntax. The options may also be used before entering interactive mode.
      The options -SEND, -RECEIVE, and -SERVER are checked for compatability;
      and if none of them are present then interactive mode is entered. The
      values of any command line options are also checked for syntax; the code
      is now more robust.

  10)                                                               17/01/90 :
      Some subroutines/functions have had their arguments changed or removed;
      whilst others have become functions and vice-versa.

  11)                                                               17/01/90 :
      The INCOMPLETE variable may now be SET. This will/will not keep files
      that arrive incomplete depending on the setting.

  12)                                                               17/01/90 :
      The POUND variable may also be SET. This will convert pound signs
      correctly for files sent to and from DOS machines. If it causes problems,
      then SET it to OFF.

  13)                                                               17/01/90 :
      The CONVERT command has been made available. This will "convert" a file
      to PRIME format. Basically it sets the 8th-bit throughout the file, and
      sets the end of line correctly to line-feed. The code was there before,
      but not shown in HELP at all.

  14)                                                               17/01/90 :
      File attributes may be used now by Kermit - this is SETtable. For files
      sent, the file size is sent in bytes and Kbytes; and the files date/time
      of creation (DTC) is sent. For files received the file size is checked
      against the available disk space quota; the DTC is set if present and the
      user has O or P rights in the directory, and the file type is used to
      determine the method of storage. Note that according to the Protocol the
      DTC should be used, NOT the date/time last modified which was previously
      coded. Any files which are too big to be sent or received result in a
      warning message. If wildcards are used then it will continue with smaller
      files. This keeps in line with the Protocol. The last part is also useful
      when transfering large files; previously the whole thing would just bomb
      out, and the user would have to start again.

  15)                                                               17/01/90 :
      The TAKE command may now be nested to 25 levels. Previously the user
      would simply tread on the previous file with no warning or anything!
      POP is available to exit the current TAKE file, and return to the
      previous file - if any. Also STOP has been coded to exit ALL of the users
      TAKE files.

  16)                                                               17/01/90 :
      More generic commands are available; Disk USAGE (or SPACE), RENAME, COPY,
      WHO (although this isn't too good), and SEND (or MESSAGE).

  17)                                                               17/01/90 :
      Some of the messages displayed have been "cosmetically" changed.

  18)                                                               17/01/90 :
      Sending files with DOS wildcards from the PRIME is a dubious area since
      it requires knowing what the user MEANS! The special case "*.*" is taken
      to mean send ALL files, not just ones of 2 components. Other cases are
      translated as "*" to "@", and "?" to "+".

  19)                                                               17/01/90 :
      The received timeout is now used, rather than just using 2 minutes as a
      fixed time. If necessary it may be possible to reset the timeout on the
      local Kermit.

  20)                                                               17/01/90 :
      The PUSH command has been added to enable the user to jump to PRIMOS.
      Kermit is re-entered either by using the S (START) command, or REN
      (for Re-ENter). REN is a bit more reliable; it depends on what the user
      does at PRIMOS level. Kermit itself may be invoked again, and PUSHed from
      again. The limit to this is set per-user by the sites' PRIME system
      administrator. (Here at PSW users can do it about 10 times.)

  21)                                                               17/01/90 :
      The code is more robust in the checking of values given for the quoting
      and 8-bit quoting characters, and for the parity being used. Previously
      it would have violated the Protocol by allowing the characters to be the
      same.

  22)                                                               17/01/90 :
      It is now possible to avoid received file name collisions. This is a
      SETtable option. The new file name is sent with the F packet
      acknowledgement, so this may be printed out by the local Kermit. The new
      file name tries to append four digits to the files' prefix, or if
      necessary it will overwrite the last characters of the prefix.

  23) *>SOURCE>(XFER_MODE, CONVERT_FILE).PLP,
      *>INSERT>COMMON.INS.PLP                                       26/01/90 :
      The subroutine XFER_MODE had some octal characters in it which prevented
      sites from receiving the file correctly from Lancaster (U.K.). Extra
      variables in COMMON are now used to hold these values, which are
      calculated when Kermit is invoked.
      The CONVERT command was not working correctly (if at all). The code has
      been changed to handle end-of-file conditions better. The subroutine used
      to write out the file has been changed, as have some of the error
      messages produced by the CONVERT command.

  24) *>SOURCE>@@, *>INSERT>@@                                      02/02/90 :
      To enable the source code to be transmitted over various networks
      successfully some of the code lines have been reduced in length. All of
      the source code lines are now 80 characters or less in length. This may
      make the code a little bit less readable, but does not affect its
      functionality in any way.

  25) *>KERMIT.BUILD.CPL, *>INSERT>(KERMIT, PRIMOS).INS.PLP,
      *>SOURCE>(UTILITIES, SETUP_TRANS_CHAR).PLP                    09/02/90 :
      The build program will now allow the -BINARY option to be passed to
      the PLP compiler. This allows the redirection of the binary file, or
      the prevention of any binary file being produced by using the relevant
      PLP -BINARY options. The default is still to the sub-directory *>OBJ.
      The above 5 files have had their initial comment lines changed so that
      all of the build and source files received from a distribution site
      may be more easily identified. Each file is seperated by a line of
      hyphens. This is then followed by a blank line, and then a single
      comment line. This begins with the characters "/* ". The upper case
      characters following it are the subroutine name, and end with the
      character sequence " -- ". It is intended that an editor is used to
      seperate out the files. The build file and insert files will need to be
      seperated individually. I hope this is of some help.

  26) *>SOURCE>(SEND_PACKET, COMND).PLP                             12/02/90 :
      Minor changes to some of the conditional statements logic in the
      subroutine SEND_PACKET.
      In the subroutine COMND a window size of 0 will now display a message
      stating that no windowing will be performed. An invalid window size
      will now show the correct message; previously it gave garbage at the
      end of the message.

  27) *>INSERT>(COMMON, CONSTANTS).INS.PLP,
      *>SOURCE>(KERMIT_INIT, OPEN_INPUT, READ_INPUT, SET_PARAMS, GET_DTC,
                PRS_SEND_INIT, LOG_PACKET, CHANGE_DIR, COMND, GENERIC_CMD,
                WRITE_OUTPUT, CONVERT_FILE, REC_SWITCH).PLP         15/02/90 :
      Peter Mason's (SHEFFIELD UNIVERSITY, U.K.) code has been incorporated to
      allow ASCII files containing long lines to be transmitted. This worked
      fine for binary files, but ASCII/Text files would previously be truncated
      to 1022 characters.
      Some more commonly used constants have been replaced by variables or
      %REPLACE identifiers.

  28) *>SOURCE>(CLOSE_OUTPUT, GET_DTC).PLP                          16/02/90 :
      If file attributes are in use then the files' Date/Time last modified
      (DTM) attribute is set as well as the Date/Time of creation (DTC).
      Whilst the Kermit Protocol states that the DTC should be used, this is
      historical and the DTM is of more use to users. The DTM is also sent
      instead of the DTC in the attribute packet.
      This is now version 8.01 (unreleased).

  29) *>SOURCE>(UTILITIES, WRITE_IBUF, WRITE_OUTPUT, OPEN_OUTPUT,
                KERMIT_INIT).PLP,
      *>INSERT>COMMON.INS.PLP                                       07/03/90 :
      Lines ending in just a LF are handled correctly now. This will allow
      POSTSCRIPT files to be transferred. A NUL character is appended to the
      LF, if necessary, to maintain the word alignment.
      When receiving a file the file type (text or binary) cannot change once
      the file has started to be written to disk. Previously it was possible
      for certain files to change type when the last part of the file was
      received. The logic of some conditional tests has also been changed.

  30) *>SOURCE>(READ_INPUT, KERMIT_INIT, WRITE_IBUF, OPEN_OUTPUT).PLP,
      *>INSERT>COMMON.INS.PLP                                       21/03/90 :
      Corrected the handling of repeat characters. Sometimes the packet would
      become too large when two characters were repeated, since these two are
      actually written out individually and NOT packed together. This has also
      enabled us to simplify some other parts of the code.

  31) *>SOURCE>GENERIC_CMD.PLP, *>INSERT>PRIMOS.INS.PLP             29/03/90 :
      The generic command COPY now uses different subroutines to perform the
      copy. This makes it faster, and also allows the copying of binary files.
      Previously these files would become corrupted. The declared entry for
      the Primos subroutine RDLIN$ has been removed since it is not used.

  32) *>SOURCE>PRS_SEND_INIT.PLP                                    06/04/90 :
      Removed a redundant WHEN statement.

  33) *>SOURCE>(SEND_SWITCH, KERMIT_INIT, READ_INPUT).PLP,
      *>INSERT>COMMON.INS.PLP                                       10/04/90 :
      The bug fix 30 above caused the packet length to drop to about 86
      characters for most packets. This seemed to be getting too low a value.
      The character handling code in READ_INPUT has been re-written so as to
      get the packet as full as possible before sending it. Most packets are
      now filled to about 93 characters.

  34) *>SOURCE>(NEXT_FILE, OPEN_LOG, KERMIT, GET_ERROR_MSG, COMND,
                LOG_PACKET, CHANGE_DIR, REC_SWITCH, GENERIC_CMD,
                SET_PATH).PLP                                       11/04/90 :
      Minor changes to some logical character comparisons where null strings
      are involved.

  35) *>SOURCE>@@, *>INSERT>@@, *>KERMIT.BUILD.CPL                  18/04/90 :
      Version 8.10 (unreleased) received from Matthew Sutter in U.S.A.
      New functionality with the CONNECT command for connecting the Prime to
      other Computers, rather than just to micro-computers. Also allows the
      SETting of the AMLC line number and baud rate for the CONNECT command.
      Code included to SET the ESCAPE character for the CONNECT command, and
      also recognition of some escape sequences as sub-commands to CONNECT.
      Added code for BYE, FINISH, GET, INPUT, OUTPUT, PAUSE, and CLEAR
      commands. Help screens updated for the new commands.

  36) *>SOURCE>@@, *>INSERT>@@                                      20/04/90 :
      Version 8.11 (unreleased) received from Matthew Sutter in U.S.A. Some bug
      fixes and code improvements to version 8.10. The MORE subroutine added
      for the help screens.

  37) *>SOURCE>@@, *>INSERT>@@                                      23/04/90 :
      Version 8.12. Further bug fixes and some code improvements. Code added
      for the "0" sub-command to CONNECT, and allow the PAUSE command to accept
      a 24-hour clock time.

  38) *>SOURCE>COMND.PLP                                            01/05/90 :
      Test for the remote server being present in the BYE and FINISH commands.
      Made the SET FILE_TYPE command identical to the FILE_TYPE command line
      option. It now recognizes "FT" or any sub-string of "FILE_TYPE". The SHOW
      command has similarly changed. Minor text message changes.

  39) *>SOURCE>(ASSIGN, XFER_MODE).PLP                              27/06/90 :
      Changed the half-duplex settings so as NOT to echo LF after a CR.
      Requested by Ted Flory (BRIDGEWATER COLLEGE, U.S.A).

  40) *>SOURCE>(ASSIGN, COMND, KERMIT_INIT, BK_HNDLR, REC_PACKET, REC_AMLC,
                PRS_SEND_INIT).PLP,
      *>INSERT>CONSTANTS.INS.PLP                                    06/07/90 :
      The receive timeout has been changed from minutes to seconds, previously
      the timeout would be rounded up to the nearest minute, but this is not
      necessary. Also the timer is turned off as soon as a valid start-of-packet
      character has been received, and NOT after the packet has been processed.
      Some minor code changes in parameter passing now prevent Primos
      POINTER_FAULT$ errors occuring when receiving data using an AMLC line.
      The AMLC baud rates of 9600, 2400, 4800, 19200 have now been replaced
      by CLOCK, JUMPER_1, JUMPER_2, and JUMPER_3. This now allows for the fact
      that these values are machine/configuration dependant. The default values
      are shown, but the actual values will have to be obtained from the system
      administrator. The other baud rates of 110, 134.5, 300, and 1200 are fixed
      within Primos, so the Kermit default baud rate has now also changed to
      1200, the Prime default baud rate.

  41) *>SOURCE>(KERMIT, KERMIT_INIT, OPEN_LOG, COMND).PLP,
      *>INSERT>(COMMON, CONSTANTS).INS.PLP                          17/07/90 :
      The log file pathname is now shown with the "SHOW ALL" or "SHOW LOG"
      commands. The send and receive packet maximum retry count is now settable,
      and will also be shown with the "SHOW" or "SHOW RETRIES" commands. The
      send and receive packet timeout may also be shown with the "SHOW" or
      "SHOW TIMEOUT" commands. The send packet timeout is also settable.

  42) *>SOURCE>OPEN_INPUT.PLP                                       23/07/90 :
      The internal subroutine to perform automatic file type checking was
      actually doing a bit more than it ought to, and likewise for specific file
      types some internal buffers were not being initialised. This gave rise to
      the problem that interrupted file transfers would corrupt the next file
      sent if a specific file type was previously set.

  43) *>SOURCE>(REC_SWITCH, SEND_SWITCH, KERMIT_INIT, SET_PARAMS, COMND).PLP,
      *>INSERT>COMMON.INS.PLP                                       07/08/90 :
      The sliding windows code has been corrected. The default window value is
      6, but it is, of course, settable. A value of 0 is now illegal, non-
      windowing is actually performed by the windowing code but with a window
      size of 1. All of the previous non-windowing code has been removed.

  44) *>SOURCE>SERVER.PLP                                           08/08/90 :
      Timeouts by the server are not now NAKed since this only seems to cause
      problems for the local kermit. The Prime will still log that timeouts
      have occured though.

  45) *>SOURCE>@@, *>INSERT>@@                                      09/08/90 :
      Version 8.12 received from Matt Sutter (U.S.A). New code for seperate
      packet and/or session logging. Bug fixes to the repeat character
      processing, and AMLC line handling.

  46) *>SOURCE>@@, *>INSERT>@@                                      10/08/90 :
      Version 8.13 (unreleased). Merged version 8.12 (U.S.A) with all known
      previous bug fixes.

  47) *>KERMIT.BUILD.CPL, *>INSERT>@@,
      *>SOURCE>(ASSIGN, COMND, CONNECT, DISCARD_OUTPUT, GENERIC_CMD, GET_LEN,
                INPUT, KERMIT_INIT, MATCH_FILE, OPEN_INPUT, OPEN_LOG,
                OPEN_OUTPUT, REN_HNDLR, SEND_PACKET, SERVER, SET_PATH,
                XFER_MODE).PLP                                      25/10/90 :
      Version 8.14. Corrected the setting of the terminal to/from
      half/full-duplex mode, the initial setting is now correctly restored.
      The REMOTE SPACE command will now also show the disk space available,
      since it is useful for those users without quota restrictions.
      The asynchronous line baud rate is now only checked for a valid rate when
      set. Valid rates are determined by PRIME. When the line is assigned to
      set the baud rate, checking will be done by PRIMOS as to whether the
      hardware actually supports the requested rate.
      The CLOSE command with no option will now close any one open log file,
      but not if both are open.
      Unimplemented server commands are now reported as such.
      Files which are at the MFD level are now handled correctly, previously
      their pathname would become corrupted.
      GET_USER_INFO is a new subroutine to determine some of the users PRIMOS
      environment variables. It is called when Kermit is invoked, and when the
      user re-enters Kermit after a PUSH command since they may have changed
      their environment whilst at PRIMOS level.
      For ASCII files the exact file length in bytes is now sent. Previously
      the length did not take account of space compression characters, so the
      file length sent was usually less than its true length.

  48) *>INSERT>(CONSTANTS, COMMON).INS.PLP,
      *>SOURCE>(KERMIT, KERMIT_INIT, COMND).PLP                     11/02/91 :
      Added the -INIT option to the command line. By default an initialization
      file, called PRIME_KERMIT.INIT, will be run if it exists in the current
      directory. An alternate pathname may be used if it is specified on the
      command line.

  49) *>SOURCE>(COMND, CONNECT, READ_INPUT, SETUP_TRANS_CHAR,
                WRITE_OUTPUT).PLP                                   28/04/92 :
      Version 8.15. The use of Kermit over asynchronous lines with no parity
      did not work very well. There is now better checking, and clearing of the
      parity bit, for lines which do not have parity set. Requested by Andy
      Kurtz at Lincoln National Information Services.

  50) *>SOURCE>KERMIT_INIT.PLP                                      01/05/92 :
      Initialize the variable REM_NPAD which indicates the number of remote
      padding characters to use. This is needed for the first packet sent to
      the remote system.

