Overview of Cyber (NOS) Kermit.
 
Programmer         A. V. Le Blanc
Language           COMPASS 3.6-587
Documentation      A. V. Le Blanc
Date               March 1986
Operating System   NOS 2.2 at PSR level 596
Field length       2,922  (decimal)  words, including I/O buffers and
                   system text
 
Cyber Kermit capabilities at a glance:
 
Remote operation                 Yes
Local operation                  No
Transfer text files              Yes
Transfer binary files            Yes
Wildcard send                    No
File transfer interruption       Yes
Filename collisions avoided      Yes
Can time out                     No
8th bit prefixing                Yes (required for binary transfers)
Repeat count prefixing           Yes
Alternate block checks           No
Long packets                     No
Terminal emulation               No
Communication settings           Yes (where practical)
Transaction logging              Yes
Debug logging                    Yes
Packet logging                   Yes
Acts as a server                 Yes
Advanced server functions        Some
Local file management            No
Command/Init files               Yes (coded format)
File attribute packets           No
Command macros                   No
 
Note:  The value of parity must be selected at  compile  time.   Only
       one-character checksums are supported.   Because of the diffi-
       culty  of  appropriate  error recovery,  Cyber Kermit does not
       allow Remote Host commands;  however, packets of this type are
       accepted and used for remote status inquiry and for the remote
       selection of file types.   A further departure  from  Kermit's
       'official' definition is that the error count is reset to zero
       after each packet rather than after each file.
 
 
 
Files.
 
In addition to the present file, I am supplying three files:
 
(1)  The source code (in COMPASS).
 
(2)  A CCL procedure which creates  the structured help file required
     by the program.
 
(3)  Our Manchester user manual in line printer format (column 1 con-
     trol characters, but no underscores, italics, or bold print).
 
 
All files except the source code are ASCII 6/12 files; if you receive
the source in ASCII and convert it to 6-bit display code using
 
  $FCOPY,P=asciisource,N=sixbitsource,PC=ASCII,NC=DIS,R.
 
the source will be ready  to generate conditional code appropriate to
64-character or 63-character sites.  Before compiling the program you
must select one of the available parities, the one which accords best
with the default parity selected at your site.   At this time you may
alter the following assembly constants by editing the  following  EQU
statements which occur near the start of the source code:
 
   PARIT    EQU    2           parity: 0 = zero, 1 = odd, 2 = even
   TBUFL    EQU    301B        buffer length for terminal files
   WBUFL    EQU    501B        buffer length for mass storage files
   LBUFL    EQU    301B        buffer length for log file
   DEFPLEN  EQU    94          default packet length to request
   DEFESCA  EQU    3           default (ASCII code) local escape char
   DEFTIME  EQU    20          default timeout to request in seconds
   DEFRETR  EQU    5           default retries allowed per packet
 
The mass storage buffer  WBUFL may be increased slightly if you wish,
but the buffers are rather small to reduce the time needed to get the
program back into memory when it is swapped out.  The constant called
ILLEGIT limits the values to which the local escape character and the
packet marker may be set;  instructions for changing these values can
be found in the preceding comment.
 
If your site has access to the system  OPL,  attach it under the name
OPL and give the command
 
  $COMPASS,I=sixbitsource,B=KERMBIN,L=KERLIST.
 
If your site does not have access to the system  OPL,  delete the six
XTEXT lines (two at the start and four at the end of the source), re-
place the first line with the line
 
          IDENT   KERMIT
 
and delete the line 'ABS'.  Then you can compile a relocatable binary
with the command
 
  $COMPASS,I=sixbitsource,B=KERMBIN,L=KERLIST,S=NOSTEXT,S=PSSTEXT.
 
and produce an absolute binary with LOAD command and the NOGO option.
On our system the binary (45 PRU's in length) is stored as KERMBIN in
the user name LIBRARY.  If the source is named KERMITC, the following
procedure will extract its internal or external documentation:
 
 
.PROC,KERDOCS*I,
TYP[Type of documentation]=(INT,EXT),
FLN[File name]=(*F,*N=KERDOC).
  $RETURN(FLN,ZZZDOC)
.IF,FILE(KERMITC,.NOT.LO),GETIT.
  $GET(KERMITC)
.ENDIF,GETIT.
  $DOCMENT(I=ZZZZPRD,S=KERMITC,L=ZZZDOC,T=TYP)
$REVERT(NOLIST)
.DATA,ZZZZPRD.
 KERMIT -- FILE TRANSFER UTILITY
 
 
 
 
Cyber Kermit will not run unless there is a local file named ZZZKHLP.
This multi-record file contains long help messages.  Since it is dif-
ficult to transfer structured files on non-CDC equipment, I have pre-
pared  a  simple-minded CCL procedure which contains the text of this
file and writes appropriate ends-of-record when executed.  If needed,
changes should be made to this file before executing  the  procedure.
Changes  will probably be unnecessary if no assembly constants except
parity are changed.  Those help messages which can be sent to a micro
when Cyber Kermit is in server mode are 38 columns wide;  others  are
61 columns wide.  In our system the help file is stored as KERHELP in
the user name LIBRARY.  The help file contains the following informa-
tion specific to the Manchester implementation: default constants are
94 (packet length),  CTRL-C (escape character), 20 (requested timeout
interval), and 5 (retries per packet); the Manchester commands  DSAVE
and  DEPLACE  are mentioned; the escape character and the sync marker
may not be set to CONTROL with any of the following letters: H, J, M,
P, Q, S, T, or X.
 
The User Manual may be rather less useful since it contains much that
is peculiar to our system in Manchester.  The manual does not mention
the possibility of saving SET options in a file.  Simply SET whatever
variables you wish and stop execution with the PUSH command.  ZZZKDAT
is the local file which contains (in coded form) the options you have
selected.  Simply SAVE this (using another name if you wish) and then
GET it before starting the program.
 
Cyber Kermit writes a log file whenever it runs.  Since this log file
is a structured 6-12 file,  one can list all or part of it.   In Man-
chester this is done by the Kermit CCL procedure on a system library.
This procedure appears as follows when various site-specific elements
are removed:
 
 
 
.PROC,KERMIT*I
,ACT[Action]=(ALL,LOG,*N=RUN,LOCAL,*S3(ABCDEFGHIJKLMNOPQRSTUVWXYZ)).
.HELP,,NOLIST
  Procedure  KERMIT  is designed to help you run Kermit and view your
  Kermit logfile.  It will also print your Kermit logfile.
 
  Format:  KERMIT          Run the Kermit file transfer program.
           KERMIT,LOG      List the last part of your Kermit logfile.
           KERMIT,ALL      List all of your Kermit logfile.
           KERMIT,printer  Print your Kermit logfile on the specified
                           printer; for example, type  KERMIT,MBS  to
                           print your logfile on the MBS printer.
.ENDHELP
.IF,$ACT$=$RUN$,WHATNOW.
.IF,FILE(ZZZZKER,PM).AND.FILE(ZZZKHLP,PM),ITSHERE.
.EX.  ZZZZKER.
.ELSE,ITSHERE.
  $ATTACH,ZZZZKER=KERMBIN,ZZZKHLP=KERHELP/UN=LIBRARY,PN=0.
  $SETFS,ZZZZKER,ZZZKHLP/FS=NAD.
  $REVERT,EX.  ZZZZKER.
.ENDIF,ITSHERE.
.ELSE,WHATNOW.
.IF,FILE(ZZZKLOG,MS),WHATNOW.
.IF,$ACT$=$LOG$,WHATA.
  $CSET,ASCII.
  $SKIPEI,ZZZKLOG.
  $BKSP,ZZZKLOG,1.
  $COPYBR,ZZZKLOG.
.ELSE,WHATA.
.IF,$ACT$=$ALL$,WHATA.
  $CSET,ASCII.
  $REWIND,ZZZKLOG.
  $COPYBF,ZZZKLOG.
.ELSE,WHATA.
  $RETURN,ZZZZJOB.
  $REWIND,ZZZKLOG.
  $FCOPY,P=ZZZKLOG,N=ZZZZJOB,PC=ASCII,NC=ASCII8.
  $ROUTE,ZZZKLOG,DC=PR,UN=ACT,EC=A9,UJN=ZZZKLOG.
.ENDIF,WHATA.
$REVERT(NOLIST)
.ELSE,WHATNOW.
  $REVERT,ABORT. LOG FILE ZZZKLOG IS MISSING.
.ENDIF,WHATNOW.
