UPDATE# NEW FASTER METHOD FOR TRANSFERRING BINARY FILES This feature allows you to improve MS-DOS Kermit's file transfer performance on connections that you know are transparent to a certain set of control characters. It lets you tell MS-DOS Kermit exactly which control characters need to be prefixed and which ones do not when it is sending files. SET CONTROL-CHARACTER UNPREFIXED { ..., ALL } Says that you think it is safe to include the control character represented by without prefixing in packets which MS-DOS Kermit sends. The is the numeric ASCII code for a control character, 0-31, 127-159, or 255. For example, linefeed (code 10) is normally sent as two printable characters, #J. SET CONTROL UNPREFIXED 10 lets linefeed be sent literally. You can include the word ALL to unprefix all control characters, or you can specify a list of one or more numeric values, separated by spaces. Examples: SET CONTROL UNPREFIXED 31 ; A single control character SET CONTROL UNPREFIXED 2 4 5 18 20 ; A list of control characters SET CONTROL UNPREFIXED ALL ; All control characters If you can safely declare a lot of control characters to be UNPREFIXED, you can send binary files (particularly precompressed ones) up to about 20-25 percent faster. If you include a control character in this category that causes trouble, however, the transfer will fail, so experimentation is necessary. NOTE: This command will not allow you to "unprefix" the following characters if MS-DOS Kermit's current FLOW-CONTROL setting is XON/XOFF: 17, 19, 145, 147; nor will it let you unprefix characters 127 or 255 on a TELNET (SET PORT TCP/IP) connection. SET CONTROL-CHARACTER PREFIXED { ..., ALL } Says that the given control character(s) must be prefixed in Kermit packets. By default, all control characters, 0-31, 127-159, and 255, are prefixed. NOTE: when sending files *to* MS-DOS Kermit, you must SET CONTROL PREFIXED (at least) 1 129 (assuming the start-of-packet character is Ctrl-A). SHOW CONTROL-PREFIXING Displays the code values of the control characters that are currently UNPREFIXED. The purpose of the SET CONTROL UNPREFIX command is to UNILATERALLY configure MS-DOS Kermit to skip prefixing and printable encoding of selected control characters to achieve higher performance when sending files. This feature takes advantage of the fact that most (not all) Kermit programs will accept control characters within packet data-fields literally, provided they get through at all, and provided they do not have a special meaning to the receiving Kermit program (such as, in many cases, the packet-start and packet-end characters). There is no protocol negotiation between the two Kermit programs to determine a "safe set" of control characters, and in fact any such negotiation would be largely meaningless, because in most cases the two Kermit programs don't have all the needed information. For example, there might be a terminal server or PAD between them that is sensitive to a particular control character, even though the two Kermit programs are not. If you include in your SET CONTROL UNPREFIXED list one or more control characters that are unsafe, any of several things might happen: 1. Transfer of any file containing these characters will fail. 2. The receiving Kermit program might be interrupted or halted. 3. Your connection might become hung, stuck, or broken. This includes the situation where a control character causes a PAD, terminal server, or similar device to change modes -- e.g. to go from online mode to command mode. The set of safe control characters depends on the two Kermit programs, their settings, the host operating systems and their settings, the communication and flow control methods, and all the devices, drivers, and protocols that lie between the two Kermit programs. You must be willing to experiment in order to achieve the optimal safe set. Under ideal conditions (totally transparent and clean serial connection, no Xon/Xoff, MS-DOS Kermit is not in SERVER mode, and C-Kermit has been told to SET TRANSFER CANCELLATION OFF), the minimum set of control characters that needs to be prefixed is: SENDER RECEIVER PREFIXED CONTROLS MS-DOS Kermit MS-DOS Kermit 1, 129 MS-DOS Kermit C-Kermit 0 C-Kermit MS-DOS Kermit 0, 1, 129 C-Kermit C-Kermit 0 For example, to set up C-Kermit to unprefix the minimum set of prefixed control characters for sending files to MS-DOS Kermit, tell C-Kermit to: SET FLOW NONE ; Or SET FLOW RTS/CTS SET CONTROL UNPREFIX ALL SET CONTROL PREFIX 1 129 ; C-Kermit always prefixes character 0 When the mininum set doesn't work, use the SET CONTROL PREFIX command to prefix additional control characters. Some experimentation will be required. Here is the list of control characters that are apt to cause trouble and therefore likely candidates for prefixing: set con p 0 ; Ctrl-@ = NUL, internal string terminator in C-Kermit. ; Also, often discarded as padding. set con p 1 ; Ctrl-A = Packet-start character. set con p 3 ; Ctrl-C = Packet breakout for remote-mode C-Kermit, ; packet breakout for server-mode MS-DOS Kermit, ; likely to cause interruptions on other systems. set con p 13 ; Ctrl-M = Carriage return, always prefix on TELNET connections. set con p 14 ; Ctrl-N = Shift Out set con p 15 ; Ctrl-O = Shift In set con p 16 ; Ctrl-P = Commonly-used X.25/X.3 PAD escape character set con p 17 ; Ctrl-Q = XON, must be prefixed with Xon/Xoff flow control set con p 19 ; Ctrl-S = XOFF, must be prefixed with Xon/Xoff flow control set con p 27 ; Ctrl-[ = ESC, prefix if going through some kind of ANSI device set con p 28 ; Ctrl-\ = CONNECT-mode escape for C-Kermit set con p 29 ; Ctrl-] = CONNECT-mode escape for TELNET set con p 30 ; Ctrl-^ = Cisco terminal server escape. set con p 127 ; Ctrl-? = DEL, often discarded as padding. ; Also becomes TELNET IAC if parity bit is added. set con p 128 ; = NUL + 128 set con p 129 ; = Ctrl-A + 128 set con p 131 ; = Ctrl-C + 128 set con p 141 ; = CR + 128 set con p 145 ; = XON + 128 set con p 147 ; = XOFF + 128 set con p 255 ; 255 = TELNET IAC, use P on TCP/IP TELNET connections Notes: . If MS-DOS Kermit has initiated a TCP/IP connection, prefixing of 255 (TELNET IAC) is forced automatically. . Kermit will not let you unprefix XON (17), XOFF (19), XON+128 (145), or XOFF+128 (147) if its FLOW-CONTROL setting is XON/XOFF. If you want to unprefix these, make sure *both* Kermits have been told to SET FLOW NONE (or RTS/CTS), and that XON/XOFF flow control is not in effect anywhere along the communication path between the two Kermits. . When sending files to C-Kermit, you should normally SET CONTROL PREFIX 3 and SET CONTROL PREFIX 131, because C-Kermit (by default) takes two Ctrl-C's (3 or 131) in a row as cancellation of packet-mode. However, you can UNPREFIX these characters if you know your file does not contain two Ctrl-C's in a row, or if you tell C-Kermit to SET TRANSFER CANCELLATION OFF, or SET TRANSFER CANCELLATION ON when you know that copies of do not occur in a row in the data. .