@Part(CPKERM,root="kuser") @string(-cpmversion="@q<4.11>") @Chapter @index @case(device,file="********@* This document is formatted as an ordinary, plain text ASCII disk file. Typeset copies are available in the Kermit User Guide from Columbia University. Changes should be made to CPKERM.MSS.@*********") @Begin @i(Program:)@\Mike Freeman, Bonneville Power Administration, Vancouver, WA, USA, with contributions from many others. @i(Language:)@\8080 Assembler, LASM, M80, or MAC80 @i(Version:)@\@value(-cpmversion) @i(Date:)@\April 1, 1991 @i(Documentation:)@ @ Christine Gianone, Columbia University, with contributions from many others. @end @label<-k80> @i @begin @tabclear()@tabset(3.5inches,4.0inches) Local operation:@\Yes Remote operation:@\Partial, Auto-receive only Login scipts:@\Yes, limited Transfer text files:@\Yes Transfer binary files:@\Yes Wildcard send:@\Yes File transfer interruption:@\Yes Filename collision avoidance:@\Yes Can time out:@\Yes 8th-bit prefixing:@\Yes Repeat count prefixing:@\No Alternate block checks:@\Yes Terminal emulation:@\Yes, VT52 and others Communication settings:@\Yes Support for dial-out modems:@\No Transmit BREAK:@\Yes; most versions IBM communication:@\Yes Transaction logging:@\No Debug logging:@\No Session logging:@\Yes Raw file transmit:@\Yes Act as server:@\No Talk to server:@\Yes Advanced commands for servers:@\Yes Command/init files:@\Yes Command macros:@\No Local file management:@\Yes Handle file attributes:@\No Long packets:@\No International Character Sets:@\No Sliding Windows:@\No Printer control:@\Yes, limited @end @Section CP/M Kermit is the first of all the Kermit programs. It was originally written by Bill Catchings of Columbia University in 1981. Over the years, contributions have been added by many people, including Charles Carvalho (ACC), Bernie Eiben (DEC), Nick Bush (Stevens Institute of Technology), John Bray (University of Tennessee), Bruce Tanner (Cerritos College), Greg Small (University of California at Berkeley), Kimmo Laaksonen (Helskini University of Technology), Brian Robertson (Aberdeen University), A.J. Cole (Leeds University), John Shearwood (Birmingham University), Tony Addyman (Salford University), Godfrey Nix and Martin Carter (Nottingham University), Ian Young (Edinburgh University), Chris Miles (Manchester University), Richard Russell, Dave Roberts, and many, many others. Version 4.11 is the work of Mike Freeman of the Bonneville Power Administration in Vancouver, WA, USA, with assistance from Russell Lang of Monash University in Australia, Jay S Rouman of Mt Pleasant MI, and others. @section Features added since version 4.09 include: @begin SET COLLISION {BACKUP/DISCARD/OVERWRITE/RENAME} SET INCOMPLETE-FILES {DISCARD/KEEP} Many REMOTE commands, including some REMOTE SET commands RENAME command to rename CP/M files from within Kermit-80 SET RECEIVE/SEND PACKET-LENGTH nn (nn <= 94) SET AUTORECEIVE ON now implies that Kermit-80 ALWAYS tries to receive more files when a RECEIVE transaction has completed. The user can cancel with ^C. QUIT is now a synonym for EXIT. STAY is now a synonym for SET NO-EXIT. CONNECT, RECEIVE and SEND may be abbreviated to C, R and S, respectively. Cancellation of TAKE, TYPE, and PRINT commands from the keyboard. Many bug fixes. Kermit-80 Version 4.11 now supports the Microbee family of computers (56K, 64K, 128K and 256K) manufactured by Microbee Systems, Ltd, of Australia. Kermit-80 now supports the Ampro Little Board system. @end @section Use the SET command to establish necessary communication parameters like SPEED and PARITY. Use the CONNECT to establish a terminal connection to the remote computer. If you are dialing out with a modem, type the necessary dialing commands to the modem first. The dialing process can be automated to some extent using a TAKE command file containing INPUT, OUTPUT, and PAUSE commands. Then log in to the remote computer or service and conduct a session. To transfer a text file, start the Kermit program on the remote computer and tell it to SEND the desired file (if uploading) or to RECEIVE (if downloading). "Escape back" to CP/M Kermit, usually by typing Ctrl-] (hold down the Control key and press the right bracket key) and then type the letter C. At the CP/M Kermit prompt type RECEIVE (if you gave a SEND command to the remote Kermit) or SEND @i (if you gave a receive command to the remote Kermit). To transfer a binary file, give the command SET FILE TYPE BINARY to the remote Kermit and SET FILE-MODE BINARY to CP/M Kermit before issuing any SEND or RECEIVE commands. Multiple files of the same type (text or binary) can be transferred in a single operation using "wildcard notation" (including special characters like asterisk in the filename). When file transfer is complete, CONNECT back to the remote computer, use the EXIT command to exit from the remote Kermit program, finish your work on the remote computer, log out from it, escape back to CP/M Kermit again, and EXIT from CP/M Kermit. The remote Kermit may also be put into "server mode" to simplify these operations. Give the SERVER command to the remote Kermit, escape back to CP/M Kermit, and then issue SEND commands to send files (upload), GET @i commands to receive (download) files, REMOTE commands to request various other services (like directory listings) from the remote Kermit. When you are done, give a BYE command to terminate your remote session, or a FINISH command to tell the remote Kermit to return to its prompt so you can CONNECT back and conduct further business. That's all there is to it. @Section There are essentially two versions of CP/M - Versions 2.2 and 3.0 (sometimes also called CP/M PLUS.) CP/M-80 Version 2@q<.>2 is run in a single 64 Kbyte "page", usually the largest amount of memory on Z80 or 8080 systems. The BIOS (Basic input/output system), BDOS (Basic Disk Operating System) and CCP (Command console processor) all share memory with any transient program the user may wish to run. Some basic commands are available through the CCP, like DIR, ERA etc,while others are loaded from disk into the transient program area and run as a program, like PIP or STAT. CP/M Version 3@q<.>0 (or CP/M PLUS) effectively removes the requirement of having the CCP and BDOS along with a chunk of the BIOS code being resident in the single 64k byte page of memory. This allows even more space for programs in the TPA, but still a little less than the maximum of 64k. It is substantially different from CP/M version 2@q<.>2, with lots of added features. Kermit-80 uses very few additional version 3@q<.>0 features, and only where absolutely necessary. CP/M file specifications are of the form @q(DEV:XXXXXXXX.YYY), where @begin @q(DEV:)@\is a @i, normally the A:@ or B:@ floppy. If omitted, the device name defaults to your connected diskette. @q(XXXXXXXX)@\is a @i of up to 8 characters. @q(YYY)@\is the @i, up to 3 characters. @end File names and file types may contain letters, digits, and some special characters, including dash, dollar sign, and underscore, but no imbedded spaces. Upper and lower case letters are equivalent. "Wildcard" file-@|group specifications are permitted in file names and file types (but not device names) within certain contexts; a "@q(*)" matches a whole field, a "@q(?)" matches a single character, including space. Examples: "@q(*.F??)" specifies all files whose @i start with F and are 1, 2, or 3 characters long; "@q(F?.*)" specifies all files whose names start with F and are no more than two characters long (before the trailing spaces). The five CP/M commands are: @Begin DIR @i@\Lists the the names of the specified files. The default file specification is "*.*". Example: @w<"@q(DIR B:*.FOR)">. ERA @i@\Erases (deletes) the specified file(s); wildcards allowed. REN @i @i@\Changes the name of a file from @i to @i, e.g.@* @w<"@q(REN NEW.FOR=OLD.FOR)">. SAVE@\Saves the specified number of memory blocks into a file. (Not on CP/M Plus systems) TYPE @i@\Types the specified file on the screen, e.g. @w<"@q(TYPE FOO.TXT)">. @End The most important programs are: @Begin STAT@\Gives statistics on disk usage; sets and displays IOBYTE. (Not on CP/M Plus systems) PIP@\@u

eripheral @unterchange @u

rogram. Copies files. In response to the "@q(*)" prompt, give a command of the form @example Wildcards ("@q(*)" for a whole field or "@q(?)" for a letter) can be used. Examples: "@q(A:=B:*.*)" to copy a whole disk, "@q(A:=B:*.FOR)" to copy all the Fortran programs from disk B to disk A. If the disk specification is omitted, your "connected" disk is assumed. Command line arguments are also accepted, e.g. "@q(PIP A:=B:*.*)". @End There are equivalent commands for CP/M Version 3.0, but are not loaded into memory in the same way as for CP/M Version 2.2. For further information on CP/M, consult your microcomputer manual or a CP/M handbook. @Section Since Kermit-80 runs on a standalone micro, it is always in control of the screen -- it is always in "@i@index mode". It includes a terminal emulator for establishing a connection to a remote computer or service, and during file transfer, it keeps the screen updated with the file name and the packet number, whether sending or receiving. @index Kermit-80 is capable of an imprecise or "fuzzy" timeout on an input request, and can break deadlocks automatically. In most cases, this is not important, because the Kermit program on the other side is most likely able to handle the timeouts. The timeouts done by Kermit-80 are fuzzy because they depend on the speed of the processor and other factors that can vary from system to system. If, despite the timeout capability, the transmission appears to be stuck (and you can tell that this has happened if the screen fails to change for a while) you can type carriage return to have the micro do what it would have done on a @Index[Timeout] timeout, namely NAK@Index[NAK] the expected packet to cause theforeign host to send it again (or, if the micro is sending, to retransmit the last packet). Micro/@|micro or micro/@|IBM-@|mainframe transfers could require this kind of manual intervention. File transfers may be interrupted in several ways. @begin @Index[Control-C] Control-C@\This will return you to Kermit-80 command level immediately, so that you can connect back to the remote system, or take any other desired action. @Index[Control-X] Control-X@\When sending a file, this will terminate the sending of the current file with a signal to the KERMIT on the other side to discard what it got so far. If there are more files to be sent, KERMIT-80 will go on to the next one. When receiving a file, KERMIT-80 will send a signal to the remote KERMIT to stop sending this file. If the remote KERMIT understands this signal (not all implementations of KERMIT do), it will comply, otherwise the file will keep coming. In any case, the remote KERMIT will go on to the next file in the group, if any. @Index[Control-Z] Control-Z@\Like Control-X, except if a file group is being transmitted, this will stop the transmission of the entire group. If only a single file is being transmitted, it works exactly like Control-X. @Index[Carriage Return] @Index[CR] Carriage Return@\If you type a carriage return Kermit-80 will resend the current packet. You may do this repeatedly, up to the packet retry limit (somewhere between 5 and 16 times) for a particular packet. @end @heading Kermit-80 is an interactive program. It issues a prompt, you type a command. The process repeats until you give the EXIT command to leave the program. Commands consist of keywords, filenames, and numbers. Keywords may be abbreviated to minumum unique length. "?" may be typed to request a menu of the available options for the current field at any point in a command. ESC may be typed at any point in a command to fill out the current keyword or filename; if sufficient characters have not been typed to identify the current field uniquely, Kermit-80 will sound a beep and allow you to continue from that point. Here are Kermit-80's commands: @begin @Index[Break] BREAK@\Send a BREAK condition to the remote computer. This is only possible if your system is capable of sending breaks. It is intended to be used with PAUSE, OUTPUT, etc and the TAKE command to do wierd and wonderful things, like automatic logging on to a remote host. @Index[Bye] BYE@\When talking to a remote Kermit Server, this command shuts down the server and logs it out, and also exits from Kermit-80 to CP/M command level. @Index[Virtual Terminal]@Index[Escape Character]@Index[Connect] CONNECT@\Establish a terminal connection to the computer, service, or device that is connected to the serial port, i.e.@ pass all typein to the serial port and display all input from the serial port on the screen. Also, emulate a DEC VT52 to allow cursor control, screen clearing, etc., if VT52-EMULATION is ON (see below), in which case you should also set your terminal type on the remote host to VT52. (Some versions emulate other terminals.) The CONNECT command may be abbreviated by the single letter C. @\Warning: VT52 emulation is only successful if your system or its attached terminal can do the same sort of functions as a genuine VT52. Things to beware of are cursor addressing, clear to end of page and end of line, clear screen, home cursor, and clear-and-home functions. The useability of VT52 emulation depends entirely on how many of the VT52 functions can be emulated by your micro or terminal. @\The escape character differs from micro to micro; when you issue the CONNECT command, the micro will print a message telling you how to get back. The escape sequence is generally an uncommonly-@|used control character, like CTRL-backslash or CTRL-rightbracket, followed by a single letter "command": @begin C@\Close Connection, return to @q(Kermit-80>) command level. S@\Display Status of connection, but maintain remote connection. @q@\List available single-character commands. 0@\(zero) Send a null (0) character. B@\Send a BREAK signal. Most systems provide this function. D@\Drop the line. Used on the Apple with modem. Automatically closes the connection after dropping the line. The TORCH system acknowledges this command but does nothing. P@\Toggle printer on or off. Allows you to copy whatever goes to the screen to the printer. S@\Temporarily suspend logging to the log file. Q@\Restart logging to the log file @q<^]>@\(or whatever - a second copy of the escape character) Send the escape character itself to the remote host. @end @Index[Copy] @Index[File Copying] COPY @i @i @\Copy a named file to another file, either on the same drive or another drive. @Index[Directory] DIRECTORY@\This provides a directory listing of the specified files. If no files are specified, all files on the default disk are listed. File sizes, in K, are included. You may interrupt the listing at any time by typing any character. The listing (even if interrupted) concludes with a display of the amount of free storage left on the disk. You can inhibit the display of file sizes by SET DIRECTORY OFF. @Index[Erase] ERASE @i@\This executes the CP/M ERA command on the specified file(s). The names of the files being erased are not displayed. @Index[Exit] EXIT@\Quit back to CP/M. The return is made by a JMP 0 (Warmstart). QUIT is a synonym for EXIT. @Index[FINISH]FINISH@\Like LOGOUT, but shuts down the remote server without logging it out. Leaves you at Kermit-80 command level; subsequent CONNECT commands will put you back at host system command level. @Index[GET]GET @i [@i] @\When Kermit-80 is talking to a Kermit Server on the host, you should use the GET command to request the server to send files to you, for example: @example You may specify a local filename if you want to save the remote file under a different filename. Limitation: If you request an alternate block check type using the SET BLOCK command, the GET command will not communicate it to the remote server. If you want to have type 2 or 3 block checks done when getting files from the server, you have to issue the appropriate SET BLOCK command to the remote KERMIT before putting it in server mode. @Index[Help]HELP@\List all these commands, with a short description on what the commands do. A question mark will do the same. If you have already typed a command but do not know what the parameters are, type a space (to indicate the end of the command) and a question mark. You will be informed of what Kermit can expect at that stage. @Index[Input]INPUT @i @i@\Setup a text line and time delay for your CP/M system to expect from the host, then wait up to the given number of seconds (approximately) for text to be sent to your CP/M-80 system. @Index[LOG]LOG @i@\When CONNECTed to a foreign host as a terminal, log the terminal session to the specified diskette file. This functionality depends to some extent on the remote host's ability to do @Index[XON/XOFF]XON/XOFF flow control, and does not guarantee a complete transcript (after all, that's what the KERMIT protocol is for). The log file is closed when the connection is closed by typing the escape character followed by the single-@|character command "C". @Index[Append] @\It is possible to temporarily suspend logging during connect state. Typing an escape sequence can turn file logging on ( R for Resume) or off ( Q for quiet). @\Re-entering connect state will re-open the previously opened log file and append to that file. @Index[LOGOUT]LOGOUT@\Like BYE, but leaves you at Kermit-80 command level. @indexOUTPUT @i@\Send the text to the remote computer as if you had typed it. @Index[Pause]PAUSE @i@\If this command is issued your CP/M system will wait a while before proceeding with another command. This is intended for use in TAKE commands, where you may want to pause for a while before proceeding with the rest of the TAKE file. The actual delay is very variable between systems, and values should be determined on a trial and error basis. @Index[Print]PRINT@\Print a file to the console and printer. Output to the printer is buffered by the Kermit-maintained printer buffer. This routine is identical to TYPE but characters are echoed to the printer as well as to the screen. Suspending and canceling output is as described in TYPE. QUIT@\Synonym for EXIT. @Index[RECEIVE]@Index[File-Warning] RECEIVE @i@\Receive file(s) from the remote Kermit, and save them under the names provided in the file headers supplied by the remote host. If a local filespec is given, the file is saved under the given filename. If the names aren't legal, use as many legal characters from the name as possible (see the description of SET FILE-WARNING below). If there's a conflict, and FILE-WARNING is ON, warn the user and try to build a unique name for the file by adding "@q<&>" characters to the name. RECEIVE can be abbreviated to the single letter R. @indexREMOTE @i@\Send a command to a remote Kermit server. The results are sent back to your CP/M screen. When two arguments are required and specify less than two in the command, you will be prompted for the missing arguments. REMOTE commands include: @begin REMOTE CD [directory]@\Ask the remote server to change its default directory. If no directory is specified, the server changes to its login directory. REMOTE COPY file1 file2@\Ask the remote server to copy file1 to file2. REMOTE RENAME file1 file2@\Ask the remote server to rename file1 to file2. REMOTE DELETE filespec@\Ask the remote server to delete the named file or files. REMOTE DIRECTORY [filespec]@\Ask the remote server to display a directory listing of the given files or, if the filespec is omitted, all the files in the current device or directory. REMOTE DISK-USAGE@\Ask the remote server to display information about its disk usage (such as free or used space). REMOTE ERASE filespec@\Same as REMOTE DELETE. REMOTE FINISH@\Same as FINISH. REMOTE HELP@\Ask the remote server to display a list of the commands it can respond to. REMOTE HOST command@\Ask the remote server to have its operating system execute the given command. REMOTE KERMIT command@\Ask the remote server to execute the given Kermit command, given in the server Kermit's command syntax. REMOTE LOGIN user password@\Log in to a remote Kermit server which has been set up to require a username and password. REMOTE MESSAGE text@\Send the text to the remote server for display on its screen (useful with MS-DOS Kermit servers). REMOTE SET parameter value@\Ask the remote server to set the given parameter to the given value, for example REMOTE SET FILE TYPE BINARY. Type REMOTE SET ? to see a list of the REMOTE SET options. REMOTE SPACE@\Same as REMOTE DISK-USAGE. REMOTE STATUS@\Ask the remote server to provide a status report. REMOTE TYPE file@\Ask the remote server to display the named file on the micro's screen. REMOTE WHO [user]@\Ask the remote server for a list of users who are logged in, or if a user is specified, for a report on the named user. @end RENAME file1 file2@\Rename local CP/M file1 to file2. @Index[SEND]SEND @i@\Send file(s) specified by @i to the remote Kermit. The @i may contain CP/M wildcards. SEND may be abbreviated to the single letter S. @Index[SET]SET @i [@i]@\Set the specified parameter to the specified value. Possible parameter settings: @begin @Index[Autoreceive]AUTORECEIVE@\ON (or OFF). Allows several files to be received without having to type RECEIVE on the receiving machine. The routine simply looks for activity on the serial line, and if so fudges a RECEIVE command. The packet sent by the sender will be lost. @Index[Block Check]BLOCK-CHECK-TYPE @i