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.