KERMIT UCSD is a version of KERMIT which runs under the UCSD psystem.  Due to
the limitations of UCSD Pascal, there are several routines which must be
written in assembly language.  This version was implemented on a Terak 8510A,
which is a PDP 11/2.  Detailed below are the functions of the routines, as
well as information needed for linking.
 
     The command parser is a separate compilation unit, which has the filename
PARSER.
 
     KERMIT uses assembly routines for host computer and keyboard
receiving. The file RCVHANDLR.TEXT contains all the routines for handling
the characters received from the host, KBDHANDLR.TEXT contains all the
routines for handling characters received from the keyboard, and SENDB contains
the routine for sending a continuous break to an IBM mainframe.
 
     To build KERMIT, first assemble PARSER, RCVHANDLR, KBDHANDLR & SENDB.
PARSER must then be linked into a library called PARSELIB.  Then compile
KERMIT then finally enter the following linker sequence:
 
     Host file? KERMIT
     Lib file? PARSELIB
     Lib file? SENDB
     Lib file? RCVHANDLR
     Lib file? KBDHANDLR
     Lib file? <cr>
     Map name? <cr>
     Output file? KERMIT.CODE
 
The order in which the library files are typed in makes a difference (for some
unknown reason), as does the '.CODE' extension on the output file name.
 
     The following declarations are needed for KBDHANDLR and RCVHANDLR
 
        CONST RCVQSIZE = <maximum number of queued characters>
 
        TYPE QUEUE = RECORD    (* These are order-dependent !!! *)
                       QSIZE: INTEGER
                       INP: INTEGER
                       OUTP: INTEGER
                       MAXCHAR: INTEGER
                       DATA: PACKED ARRAY [0..RCVQSIZE] OF CHAR
                     END
        VAR RCVQ: QUEUE     (* must be declared in outermost block *)
 
The routines RCVINIT and KBDINIT must be called at the beginning of the
program in order to set up interrupt vectors and handlers.  They are
declared as
 
     PROCEDURE RCVINIT (VAR Q: QUEUE; SIZE:INTEGER) EXTERNAL
     PROCEDURE KBDINIT (VAR Q: QUEUE; SIZE:INTEGER) EXTERNAL
 
and should be called appropriately.  RCVINIT takes care of setting other
system interrupt priorities so that keyboard and remote input override them.
KBDINIT only deals with the keyboard interupts, since others will be taken
care of by RCVINIT.

     The routines RCVFINIT and KBDFINIT should be Mcalled at the end of the
program in order to restore interrupt vectors, handlers and priorities.  They
are declared as
 
     PROCEDURE RCVFINIT; EXTERNAL;
     PROCEDURE KBDFINIT; EXTERNAL;
 
and are called with no parameters.
 
The queue handlers run continuously as interrupt-driven tasks at high
priority.  As characters come in, they advance the queue INP pointer and
keep track of the maximum number of characters in the queues in the MAXCHAR
variables.  Queue overflow is indicated by MAXCHAR > QSIZE.
 
     To send a break the routine SENDBRK is used, which sends a continuous
break and should be declared as
 
     PROCEDURE SENDBRK; EXTERNAL;
 
     KERMIT-UCSD is a version of KERMIT written primarily in UCSD Pascal
Version II.0.  There are four assembly language routines which manage special
keyboard and remote input interrupt handlers, and one more which sends a
continuous break signal.  The program was developed on a TERAK 8510A
microcomputer, which is a PDP-11/2.  With the rewriting of the above five
routines, plus two interrupt handlers, the program should be easily movable
to any UCSD psystem.
 
     KERMIT-UCSD has the following limitations:
 
  1) No wild card designations of file names.
  2) No eight-bit file quoting.
  3) No character repeat counts.
  4) No '?' and <esc> at the end of a command line.
  5) No server communications.
  6) Sending and receiving cannot be done for anything but .TEXT files
     (which contain a two-block header and space compression codes).
  7) Instead of using a clock to time out when waiting for a packet,
     KERMIT-UCSD has a limit on the number of times it will look for
     a response before giving up.
 
The commands recognized by KERMIT-UCSD are listed below.
 
  CONNECT     To make a "virtual terminal" connection to a remote
              system. To break the connection and "escape" back to the
              micro, type the escape sequence (CTRL-] C, that is Control
              rightbracket followed immediately by the letter C.)
 
  EXIT        To return to main psystem command level.
 
  HELP        To get a list of KERMIT commands.  HELP can be followed by
              any command, in which case the help will refer only to that
              command.
 
  RECEIVE     To accept a file from the remote system.
 
  SEND        To send a file or group of files to the remote system.
              Takes a filename as a parameter.
 
  SET         To establish system-dependent parameters.  The SET options
              are as follows:
 
              DEBUG            To set debug mode ON or OFF (default is OFF).
 
              END-OF-LINE      To change the character used at the end of
                               packets to something other than the default
                               of CR.  It must be a digit between 0 and 31.
 
              ESCAPE           To change the escape sequence that lets you
                               return to the PC Kermit from the remote host.
                               The default is CTRL-] c.
 
              FILE-WARNING     ON/OFF, default is OFF.  If ON, Kermit will
                               rename an incoming file so as not to
                               write over a file that currently exists with the
                               same name.

              IBM              ON/OFF, default is OFF.  This flaMg should be
                               ON only when transfering files between the PC
                               and an IBM VM/CMS system.  It also causes the
                               parity to be set appropriately and activates
                               local echoing.
 
              LOCAL-ECHO       ON/OFF, default is OFF.  This sets the duplex.
                               It should be ON when using the IBM and OFF for
                               the DEC-20.
 
              PARITY           EVEN, ODD, MARK, SPACE, or NONE.  NONE is the
                               default but if the IBM flag is set, parity is
                               set to MARK.  This flag selects the parity for
                               outgoing and incoming characters during CONNECT
                               and file transfer to match the requirements of
 
  SHOW        To see the values of parameters that can be modified
              via the SET command.  SHOW ALL shows all parameters;  SHOW
              followed by a parameter listed under SET will show the value
              of only that parameter.
 
This version of KERMIT does not have a SET BAUD command because the baud rate
is set by hardware on the TERAK.
