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? Map name? 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 = 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 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.