- 43 - (This is an extract from USER.DOC) 3.9. 8080/Z80 CP/M KERMIT Implementations of Kermit-80 presently exist for the DEC VT180 (Robin), the DEC Rainbow-100 and DECmate II, the Intertec Superbrain, the Heath/Zenith 89 and Z100, the Apple II with the Z80 SoftCard, the Osborne 1, the TRS-80 II with CP/M, the Telcon Zorba, and the Vector Graphics CP/M system. There is also a "generic" CP/M version that should run any any 8080-compatible CP/M system, but which may provide less performance. Warning -- The Rainbow-100 implementation only works at speeds of up to 1200 baud! Since Kermit-80 runs on a standalone micro, it is always in control of the screen -- it is always local. Thus, it always keeps the screen updated with the file name and the packet number, whether sending or receiving. Kermit-80 can't time out, so if the transmission gets 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 timeout, namely NAK the expected packet to cause to foreign host to send it again (or, if the micro is sending, to retransmit the last packet). If the foreign host is capable of timeouts (as the DEC-20 is) this action should not normally be necessary, but micro/micro or micro/IBM-mainframe transfers could require this kind of manual intervention. Most CP/M versions of Kermit only allow files to be received onto the default disk, the disk you are connected to. This means in order to receive files onto your B: disk you must give the CP/M command B: and see the B> prompt before running Kermit-80. CP/M file specifications are of the form DEV:NAME.TYP. DEV is a device, such as disk A: or B:. NAME may be up to 8 characters in length, TYP up to 3. NAME.TYP is sent in the Kermit file header packet. Kermit-80 Commands: CONNECT Establish a "virtual terminal" connection to any host that may be con- nected 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 escape character differs from micro to micro. Here is a list of the present versions and their default escape charac- ters ("^" indicates that the following character is typed while holding down the CTRL key), and what terminals they emulate: - VT180 (Robin) ^\ (CTRL-backslash) (VT100) - DECmate II ^\ (CTRL-backslash) (VT100) - Rainbow-100 ^\ (CTRL-backslash) (VT100, 1200b or below) - Heath/Zenith 89 ^\ (CTRL-backslash) (VT52) - Heath/Zenith Z100 ^\ (CTRL-backslash) (VT52) - Apple II (with SoftCard) ^] (CTRL-rightbracket) (VT52) - Osborne 1 ^\ (CTRL-backslash) (ADM3A) - TRS-80 II ^_ (CTRL-downarrow) (ADM3A) - 44 - - SuperBrain ^] (CTRL-rightbracket) (VT52) - Vector Graphics ~ (tilde) (VT52) - Ohio Scientific ^] (CTRL-rightbracket) (dumb terminal) - Telcon Zorba ^] (CTRL-rightbracket) (VT52) - Generic ^\ (CTRL-backslash) (dumb terminal) The available arguments to the escape character are: B Send a BREAK signal. No Kermit-80 currently implements this func- tion. C Close Connection, return to Kermit-80> command level. S Display Status of connection, but maintain remote connection. ? List available arguments. ^] (or whatever - a second copy of the escape character) Send the es- cape character itself to the remote host. SEND Send file(s) specified by to the remote Kermit. The may contain CP/M wildcards. RECEIVE Receive file(s) from the remote Kermit. Store them under the names provided in the file headers supplied by the remote host. 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 con- flict, and FILE-WARNING is ON, warn the user and try to build a unique name for the file. When Kermit-80 is talking to a Kermit Server on the host, you may include a filespec in order to request the server to send files to you, for example: receive hlp:k*.hlp LOG When CONNECTed to a foreign host as a terminal, log the terminal ses- sion to the specified diskette file. This functionality depends on the remote host's ability to do XON/XOFF flow control. 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. LOGOUT Like BYE, but leaves you at Kermit-80 command level. 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. SET [] Set the specified parameter to the specified value. Possible settings: FILE-WARNING ON (or OFF) Warn user of filename conflicts when receiving files from remote host. This is especially important when the remote host has less restrictive (e.g. longer) filenames than the local micro. ON by default. VT52-EMULATION ON (or OFF) When connected as a terminal to a foreign host, controls whether the micro emulates a VT52 or runs in "native mode". - 45 - VT52 emulation is ON by default, except on micros that already have terminal functionality built in, such as the DEC VT180 and Rainbow, that act as VT100-series terminals. The Osborne and TRS80 Kermits emulate the ADM3A. LOCAL-ECHO ON (or OFF) When you CONNECT to a remote host, you must set LOCAL-ECHO ON if the host is half duplex, OFF if full duplex. OFF by default. ESCAPE Change the escape character for virtual terminal connections. Kermit-80 will prompt you for the new escape character, which you enter literally. BAUD SuperBrain, VT180, and Osborne only. Display menu of available baud rates for serial port, allow user to select one of them. For other systems, you must set the port baud rate from CP/M or other setup mechanism before running Kermit-80. PARITY Sets parity for outgoing characters to one of the following: NONE, SPACE, MARK, EVEN, or ODD. On input, if parity is NONE, then the 8th bit is kept (as data), otherwise it is stripped and ignored. The parity setting applies to both terminal con- nection and file transfer. IBM ON (or OFF) Allow the transfer of files to and from the IBM VM/CMS system. This makes Kermit-80 wait for the IBM turnaround character (XON), ignore parity on input, send appropriate parity, and use local echoing during CONNECT. If you don't give this command, IBM mode is OFF. SET IBM, however, is equivalent to SET IBM ON. CPM-CREATED-FILE ON (or OFF) Indicate to Kermit-80 that the file to be sent was created by CP/M (e.g. by ED) rather than transferred to the micro by Ker- mit from some other kind of system. If you do not set this flag when sending files created under CPM they may wind up with extraneous characters at the end (after a CTRL-Z) on the remote host. The various versions of KERMIT-80 should be available in the KERMIT area on your host computer for downloading, under names like CPMROBIN.HEX, CPMHEATH.HEX, etc. See the section on installing KERMIT for more information. Work will continue on KERMIT-80. Some areas that need improvement include: 1. A better logging function for capturing remote session transcripts, "unguarded" capturing of remote files. The current facility loses characters at high baud rates. Double buffering, with larger buf- fers, might do the trick. 2. During terminal emulation, the ability to transmit a BREAK signal to the remote host. Very important for IBM mainframes. 3. 8th-bit quoting for exchanging binary files with systems that can't - 46 - control the parity bit. 4. More commands for servers -- remote directory, type, delete, etc. 5. Initialization files. 6. Printer control. 7. Isolation of system-dependent sections of code to allow new im- plementations to be added more easily, without even recompiling the system-independent part. 3.10. Generic KERMIT-80 "Generic Kermit-80" is a implementation of Kermit that should run on any 8080- compatible CP/M system no modification at all, or perhaps only a minor one. Unlike other Kermit-80 implementations, it contains no system-dependent manipulation of the serial port or keyboard. All I/O is done with standard CP/M BIOS calls, and I/O redirection is done using the CP/M IOBYTE function, which, according to the Digital Research CP/M Operating System Manual, is an optional feature of any particular CP/M implementation. If your system does not provide the IOBYTE function, Generic Kermit-80 will not work; furthermore, not all systems that implement IOBYTE do so in the same way. The reason all Kermit-80 implementations aren't generic is that a good deal of speed is sacrificed by getting all services from the operating system. While a specific implementation of Kermit-80 may be able to operate at 4800, 9600, or even 19200 baud, Generic Kermit will fail to work on some systems at speeds in excess of 1200 baud. Generic Kermit also differs from other Kermit-80 implementations in that it does not do fancy screen control during file transfer; it simply types the file names, packet numbers, and messages in sequence across and down the screen. This works best if you can put your micro or terminal in "autowrap" mode; otherwise the packet numbers will pile up in the rightmost column; the filenames and messages will always appear on a new line, however. Note that VT180, DECmate-II, and Rainbow-100 Kermit are simply adaptations of Generic Kermit that do VT100 (ANSI) screen control during file transfer. To get Generic Kermit on to your system (if you can't get it on a floppy disk), use whatever procedure is available to you on your micro to download the file KER:CPMGENERIC.HEX. The DDT program listed later will do the trick on most systems. DEC Rainbow users who also have access to a VT180 Robin can use the Robin's Kermit to get Generic Kermit-80 onto the Robin's floppy, which can then be read directly by the Rainbow.