File KERMIT.UPD (MSKERM.UPD) January 1995 SUPPLEMENT TO "USING MS-DOS KERMIT": CHANGES AND NEW FEATURES SINCE VERSION 3.11 Most recent update: Fri Jan 5 10:08:09 1996 MS-DOS Kermit is: Copyright (C) 1982, 1995, Trustees of Columbia University in the City of New York. The MS-DOS Kermit software may not be, in whole or in part, licensed or sold for profit as a software product itself, nor may it be included in or distributed with commercial products or otherwise distributed by commercial concerns to their clients or customers without written permission of the Office of Kermit Development and Distribution, Columbia University. This copyright notice must not be removed, altered, or obscured. Kermit software is furnished without warranty of any kind. Neither Columbia University, nor the individual authors, nor Digital Press, nor Data General Corporation, nor any other institution or individual that has contributed to the development or documentation warrant the software in any way. See the file KERMIT.HLP (MSKERM.HLP) for contact information. CONTENTS: INTRODUCTION (0) THE "KERMIT" ENVIRONMENT VARIABLE (1) DIALING AND THE DIALING DIRECTORY (2) FOSSIL DRIVERS, ISDN, HAYES ESP SERIAL BOARD (3) FILE TRANSFER RECOVERY (4) FASTER METHOD FOR TRANSFERRING BINARY FILES (5) OTHER FILE TRANSFER IMPROVEMENTS (6) IMPROVED CLIENT/SERVER OPERATION (7) IBM MAINFRAME FILE TRANSFER (8) NEW CHARACTER-SET SUPPORT (9) CONNECT-MODE STATUS LINE AND POPUP HELP SCREENS (10) THE APC ESCAPE SEQUENCE (11) VT320 TERMINAL EMULATION (12) ANSI TERMINAL EMULATION (13) DATA GENERAL DASHER TERMINAL EMULATION (14) WYSE-50 TERMINAL EMULATION (15) COMPOSE-KEY SEQUENCES FOR ENTERING SPECIAL CHARACTERS (16) WIDE SCREENS AND HORIZONTAL SCROLLING (17) EXPANDED MEMORY (18) GRAPHICS TERMINAL EMULATION (19) OTHER TERMINAL EMULATION CHANGES AND IMPROVEMENTS (20) SCRIPT PROGRAMMING CHANGES AND ADDITIONS (22) GENERAL COMMUNICATIONS (22) COMMAND PARSER (23) TCP/IP NETWORKING (24) MULTIPLE TCP/IP SESSIONS -- KERMIT'S TCP/IP SESSION MANAGER (25) SMALL MEMORY-SIZE EDITIONS (26) BBS OPERATORS GUIDE APPENDIX I: NEW TERMINAL EMULATIONS - TECHNICAL SUMMARY ------------------------------ INTRODUCTION MS-DOS Kermit 3.11 was released in September 1991, and is fully described in Chapter 14 of "Using MS-DOS Kermit", second edition. Subsequent releases add a few features not described in the book. This file describes these new features. MS-DOS Kermit 3.12 was released in September, 1992: . Networking and communications improvements, including ODI support. . Japanese Kanji text-file transfer translation. . Locking-shift protocol for efficient 8-bit file transfer on 7-bit links. . A new method for transferring files with IBM mainframes. . Ability to SET PORT TCP/IP to non-TELNET ports. MS-DOS Kermit 3.13, July 1993: . A new faster method for transferring binary and precompressed files . Larger packets and windows allowed, up to 9024 x 31. . Switching among multiple simultaneous TCP/IP sessions . Data General DASHER terminal emulation . Graphics-mode support for 132-column operation on EGA & VGA video adapters . Text-mode support for 132-column operation on ET4000 & other VESA adapters . Horizontal scrolling of wide terminal screens . Expanded-memory option for screen rollback and graphics image retention . Hebrew character-set translation and Hebrew terminal emulation . East European character-set translation . Icelandic CP861 code page support . Separate code page selection for terminal emulation and file transfer . Compose-key sequences for entering accented characters . New KERMIT PATH environment variable . Support for Novell SLIP_PPP ODI driver and other networking improvements . BOOTP improvements . TELNET improvements, including option negotiation display . DIAL-command support for additional modem types MS-DOS Kermit 3.14, January 1995: . ANSI terminal emulation . Wyse-50 terminal emulation . Data General DASHER and DEC VT terminal emulation improvements . Kanji character-set translation during terminal emulation . HP-Roman8 terminal character-set . Control over timeslicing method in Windows, DesqView, OS/2, NT . Control over automatic video-mode switching . Selectable fore- and background colors for underline simulation . Additional scan codes for Alt/Ctrl/Shift - SpaceBar/Esc combinations . Revised printer support for better interoperation with Novell CAPTURE . Additional control over TCP/IP and TELNET protocol features . Debugging display of TELNET options negotiation . Networking support for Telebit PPP . TCP/IP fixes, speedups, and refinements . Multiple TCP/IP sessions to the same host now allowed . Support for Artisoft Int14 redirector . Support for Meridian Technology SuperLAT network connections . SET SPEED 28800 . Workarounds for buggy SMC FDC37C665 UART simulator on Pentium motherboards . Support for Hayes ESP serial communications board in 16550A mode . Support for Fossil Drivers . User control over treatment of carrier signal on serial connections . Binary-mode file transfer recovery . Ability to send partial files manually . Control of run-length encoding . Improved client/server operation . Prompt string value now evaluated each time prompt is issued . ASK/ASKQ responses now taken literally . New APC command sends APC strings . Incoming APC strings ignored by default for safety . Revised CONNECT-mode status line for additional information . Separate CONNECT-mode help and one-character command menus . New script programming commands . Improved consistency of backslash-quoting in commands . New built-in string, file, and numeric functions . Additional built-in variables . Revised command-line handling of substitution variables . Transaction log of file transfers now records detailed rejection reason if based on file attributes . Available also in special reduced forms for limited memory See the READ.ME file in the top-level directory of the Kermit diskette for installation instructions and an overview of what's included on the disk. ------------------------------ (0) THE "KERMIT" ENVIRONMENT VARIABLE The DOS environment variable KERMIT may be used for setting certain parameters, even if Kermit doesn't read its initialization file. Set this environment variable in your AUTOEXEC.BAT file: SET KERMIT=text can be one or more MS-DOS Kermit startup parameters of the form , separated by semicolons. Startup parameters include: INPUT (allocates storage for INPUT command buffer) ROLLBACK (allocates storage for rollback screens) WIDTH (allocates sorage for given screen width, 80-207) COMn
(sets COM1, COM2, COM3, or COM4 address and IRQ) PATH (where Kermit looks for TAKE files) PATH and WIDTH are new to v3.13. WIDTH defines the width of the terminal- screen rollback memory. If you want to roll back wide screens, you should specify the width, e.g. 132. AUTOEXEC.BAT example: SET KERMIT=ROLLBACK 50;WIDTH 132;PATH C:\KERMIT PATH affects the init-file search, the TAKE command, and IF INPATH. (1) DIALING AND THE DIALING DIRECTORY MS-DOS Kermit includes flexible and extensible facilities for dialing with most of today's popular modems. (1.1) The Standard Dialing Method If you installed Kermit from the distribution disk according to instructions, you'll have the standard DIAL macro, defined in Kermit's initialization file, MSKERMIT.INI, at your disposal. The DIAL macro: . Uses your dialing directory if you have one. . Uses a modem-specific script to configure and dial your modem. . Redials several times automatically if the line is busy. . Is entirely scripted, so you can change it if you want to. To use the dial macro, simply type "dial" followed by the phone number at the MS-Kermit> prompt, for example: MS-Kermit> dial 9876543 or: MS-Kermit> dial 1 800 987-6543 The DIAL macro uses two additional files: xxxxx.SCR, a script program for dialing your modem ("xxxxx" is HAYES, T3000, ROLM, etc), and DIALUPS.TXT, your dialing directory (optional). (1.1.1) Telling Kermit Which Kind of Modem You Have Kermit comes with dialing scripts lots of modems. Different modems have different commands and capabilities, so each kind must be handled separately. The scripted approach allows new modems to be added easily, without changing the Kermit program itself. It also allows for bugs to be fixed, parameters changed, behavior altered, etc, without changing the program. Modem scripts are ordinary text files in Kermit's MODEMS subdirectory that anybody can type, print, or edit. The script language, and modem scripts in particular, are described in detail in "Using MS-DOS Kermit". Unless you say otherwise, Kermit assumes you have a Hayes 2400 modem and uses MODEMS\HAYES.SCR for dialing. How to say otherwise? The modem script is chosen in any of the following ways (using the Telebit T3000 modem as an example, which has a T3000.SCR file in the KERMIT\MODEMS directory): 1. Set a DOS environment variable, MODEM, to be the name of your modem; add the following line to your AUTOEXEC.BAT file: SET MODEM=T3000 or give this command at the DOS prompt before starting Kermit. 2. Or use the following Kermit command: DEFINE _MODEM T3000 ; Note the underscore! 3. Or, in v3.14 and later, tell Kermit to: SET MODEM T3000 ; Note: no underscore, no "=" sign. which is equivalent to "define _modem t3000". Methods 2 and 3 are both regular Kermit commands. You can put them in your MSCUSTOM.INI file if you want them in effect every time you start Kermit, or you can type them at the MS-Kermit> prompt. Each method has the same effect. It tells Kermit to look for a file called T3000.SCR in Kermit's MODEMS subdirectory. You can substitute any string for "T3000", as long as there is a corresponding .SCR file in the MODEMS subdirectory. For example, SET MODEM PP14400 tells Kermit to look in its MODEMS subdirectory for PP14400.SCR. See MODEMS\READ.ME for a list of the dialing scripts that are included in the standard Kermit package and a full description of how they work. If you have a modem for which no suitable dialing script is provided, you can write a new script program for dialing, modeled after one of the other dialing scripts (see "Using MS-DOS Kermit") and put it in the MODEMS subdirectory, and then tell Kermit about it using one of the three methods above. Note that some dialing scripts might work with multiple brands of modems, perhaps less than optimally. For example HAYES.SCR will probably work with any Hayes- compatible modem; PP14400.SCR reportedly also works with Zoltrix modems, etc. (1.1.2) Creating a Dialing Directory Kermit's dialing directory lets you: . Use names instead of phone numbers for dialing . Choose a particular speed or parity automatically for each entry For example, suppose you regularly make a modem call to XYZ Corporation at 1 800 765-4321. Rather than type: DIAL 18007654321 every time you want to make this call, you could type: DIAL XYZ Your dialing directory is a plain-text file in your Kermit directory (the same directory as your MSKERMIT.INI file) called DIALUPS.TXT. A DIALUPS.TXT file is already supplied on the Kermit diskette, which you can edit (using any text editor, such as the DOS EDIT program). The file contains one line per entry: name number speed parity comments The "name" is the name you want to use for this entry in your DIAL commands. "number" is the telephone number; "speed" is the dialing speed in bits per second, "parity" is the parity to use (even, odd, mark, space, or none). The name, number, speed, and parity are separated from each other by one or more spaces. Any words after the parity are ignored, so you can use them for comments. If trailing fields (speed, parity) are omitted, Kermit's current values are used (but then you can't have a comment). If you want to tell Kermit explicitly to use its current value for speed or parity, use an equal sign (=). Examples: xyz 18007654321 sprintnet 7654321 2400 mark oofanet 6543210 1200 odd This entry has a comment. tymnet 93,876-5432 2400 even You can put punctuation in the phone #. hometone T5551212 1200 none T in number forces tone dialing homepulse P5551212 1200 none P in number forces pulse dialing anyspeed 999-9999 = none Use current speed, whatever it is. anyparity 888-8888 9600 = Use current parity, whatever it is. whocares 777-7777 = = Use current speed and parity. defaults 987-6543 To use the dialing directory, just type DIAL followed by the name, spelled out in full (case doesn't matter), for example: MS-Kermit>dial xyz If you type a name or number that is not in the directory, Kermit dials exactly the characters you type, for example DIAL 5552370 dials the number 5552370. DIAL FRED (if FRED is not in the directory) tells Kermit to dial the letters FRED, which won't accomplish anything useful with most modems (unless the modem itself has an internal dialing directory). IMPORTANT: Kermit assumes neither Tone nor Pulse dialing. Kermit's dialing command for Hayes-like modems is ATD, not ATDT or ATDP because Tone dialing is not available in many areas. If you want to force (say) Tone dialing, include a "T" at the beginning of the phone number (e.g. "dial T76543231") or configure your modem beforehand for Tone dialing. To view your dialing directory, type LIST. To view particular entries in your dialing directory, type LIST XXX, where XXX is a sequence of characters that appears in the desired entries (usually the name): MS-Kermit>list tymnet tymnet 93,876-5432 2400 even You can put punctuation in the phone #. The DIAL command assumes your dialing directory is stored on your PC as DIALUPS.TXT in your Kermit directory, i.e. the same directory as your MS-DOS Kermit initialization file. If you want to keep it someplace else or use some other name, create a DOS environment variable in your AUTOEXEC.BAT file: SET DIALFILE=C:\PHONES\MSKERMIT.KDD or in your MSCUSTOM.INI file: DEFINE _DIALFILE C:\PHONES\DIALING.DIR ; (Note underscore) If you want to use the directory sometimes but not others, define a separate macro for dialing without it, e.g.: define call take C:\KERMIT\MODEMS\\\m(_modem).SCR As of MS-DOS Kermit 3.14, dialing scripts are available for about 20 different modems; many new ones were added in 3.13 and 3.14; see the READ.ME file in MODEMS directory for details. NOTE: Most of the dialing scripts for high-speed modems (V.32 and above) ignore Kermit's current speed as well as any speeds given in your dialing directory. Instead, Kermit uses a fixed high interface speed (usually 57600 bps) and configures the modem to negotiate the best connection speed and then automatically buffer between the connection speed and the interface speed. (1.2) The Default Dialing Method As of version 3.14, even if you did not install Kermit according to instructions, or if you did not start it with the standard initialization file, you'll still have a simple DIAL capability. The new built-in dialing method is used if you give a DIAL command, but no DIAL macro is defined. The built-in method does the following: . Gets and saves the SET CARRIER setting. . Executes the SET CARRIER OFF command. . Sends ATD, then the phone number, then carriage return to the modem. . Waits up to 90 seconds for the CD signal to come on. If it comes on at any time within 90 seconds, the DIAL command completes immediately and sets a success code; otherwise (after 90 seconds, or if you interrupt it with Ctrl-C), it completes with a failure code. . Upon completion, it restores your previous SET CARRIER setting. Thus, the default dialing method assumes a Hayes-like modem, but only to the extent that it uses ATD as its dialing command. It does not change your current speed, parity, flow control, or other parameters; it does not look for a dialing directory, it does not attempt to reconfigure the modem, and it does not rely on any responses from the modem, other than the CD signal coming on when the connection is complete. This dialing method is used whenever you give a DIAL command and no DIAL macro is defined. This implies, by the way, that you can define your own DIAL command to do anything you want, replacing the standard definition from the MSKERMIT.INI file. As always, whenever you want to do override or remove any definitions or settings that are made in MSKERMIT.INI, please do this in your MSCUSTOM.INI file rather than by editing MSKERMIT.INI itself. For example: define dial ; Remove DIAL macro definition, use built-in default DIAL. define dial blah blah blah ... ; Replace standard DIAL definition The internal default dialing macro is called __DIAL (the word "DIAL" preceded by two underscores). Type "show macro __dial" to view its definition. (1.3) Manual Dialing Of course, Kermit also lets you dial "manually" in CONNECT mode. Simply type CONNECT and then, in the terminal-emulation screen, type AT commands or whatever commands are appropriate for your modem. If Kermit won't let you CONNECT, then give a SET CARRIER OFF command first (SET CARRIER OFF means Kermit does not care about the CD signal; SET CARRIER ON, which is NOT the default, means Kermit requires carrier to communicate). Normally, the modem does not present the CD signal if it doesn't have a connection. And of course, you can also write your own script programs to dial the modem. You don't have to use the ones that are supplied with Kermit. (2) FOSSIL DRIVERS, ISDN, HAYES ESP SERIAL BOARD (2.1) FOSSIL DRIVERS MS-DOS Kermit supports Fossil serial port drivers through the SET PORT BIOSn (n = 1-4) communications channel. The presumption is an external agent has selected the speed (Fossil redefines some IBM PC slow speeds to be higher speeds) and flow control. Kermit will not touch the serial port hardware if the SET PORT BIOSn command is given before any command inquires about port information. Thus a BBS may have a Fossil driver managing serial port hardware and Kermit is a polite user of one port via Interrupt 14h. A Fossil driver can also be used with the new (v3.14) SET PORT option: SET PORT FOSSIL <1..99> to select Fossil COM port 1 through 99, thus lifting the normal upper limit of 4 on the port number, and also enabling block reads and writes, which are more efficient (particularly in multitasking environments) than BIOS single- character I/O. Here again, speed and flow control must be set in the fossil driver itself, and can't be set from Kermit. Using this method, it is not possible to test whether a Fossil driver is really active. If a call fails in a common way because no driver is present, Kermit declares the port to be inoperative and quits the connection. Thus there is a user-assumed risk in SET PORT FOSSIL, since we can't check first to be sure a proper driver is present. If in doubt go back to SET PORT BIOSn which are normal, safe (probably slower) BIOS serial port channels. Note: Kermit supports only a single Fossil connection at time. Another note: although Kermit supports the fossil driver specification, this does not mean that we necessarily support particular fossil drivers, or can provide help about them. Some fossil drivers might have bugs; these are the responsibility of the fossil driver authors. One such bug, reportedly, is that a certain fossil driver will stop working after its first connection has been closed. The workaround is to fully reinitialize the driver by giving Kermit another SET PORT FOSSIL n command. Applications that use fossil drivers, such as BBS packages, differ in their expectations about what "external protocols" (such as Kermit, when invoked from another program) should do with the fossil driver; some expect the external application to "deinitialize" the fossil driver (fossil function 05h), others expect it not to do so. MS-DOS Kermit will behave either way, according to: SET FOSSIL DISABLE-ON-CLOSE { ON, OFF } When OFF (the default), Kermit does NOT deinitialize the fossil driver upon exit. When ON, Kermit issues fossil function 05h to deinitialize the fossil driver. If you experience problems with your software after invoking Kermit on it as an external protocol on a fossil port, then try changing this setting. (2.2) ISDN Integrated Services Digital Network (ISDN) boards serve ISDN digital telephones, which provide (among other things) 64Kbps data transmission. ISDN boards are not serial boards, and therefore require special drivers. There is a Common Application Programming Interface (CAPI) for ISDN boards, defined by German Telecom and German ISDN manufacturers. CAPI drivers are supplied by ISDN board manufacturers. MS-DOS Kermit 3.14 does not support CAPI directly, but shims exist that allow Kermit to be used with ISDN anyway, by disguising CAPI as the Fossil, Int 14, or Packet Driver interface, all of which are supported by Kermit. Examples: . cFos is a shareware fossil driver for CAPI, written by Martin Winkler & Christoph Lueders of Bonn, Germany. It is available via anonymous ftp from ftp.dfv.rwth-aachen.de:/pub/network/isdn/cfos, or by dialup to the Zaphods BBS in Bonn: +49 228 9111041. It supports both the Fossil and Int 14 interfaces, and presents ISDN controls in the form of Hayes-like AT commands. . PAPI is free software, GNU Public License, providing a SLIP-class packet driver interface to a CAPI driver, written by Dietmar Friede, Friede Consulting, Munich (Muenchen), German . Available via ftpmail to ftp.germany.eu.net (send email to archive-server@germany.eu.net containing the word "help"), or by ftp directly from ftp.dfv.rwth-aachen.de. (2.3) HAYES ESP The Hayes ESP serial board emulates 16550A UARTs, but with more buffering and several specialized modes of operation. Kermit works fine with the ESP board when the board is running in 16550A emulation mode, and when the Hayes Windows ESP drivers are active. In this mode no drivers are needed at DOS level; just run the Hayes DOSSETUP.EXE program to define serial port address and IRQ values. If those port values differ from IBM conventions, or refer to COM3 or COM4 then use SET COMn (n=1-4) to inform Kermit of the board's operating values. A dual-port ESP board has been tested successfully in DOS and Windows, with and without the extra Windows drivers, with MS-DOS Kermit 3.13 and 3.14. (3) FILE TRANSFER RECOVERY Version 3.14 adds the ability to continue interrupted binary-mode file transfers, and also allows you to "manually" recover from certain other types of failures. The new RESEND command lets you continue a file transfer from the point where it was interrupted (for example, because of a telephone disconnection) without having to retransmit the data that was already successfully transmitted. Before seeing how to use this feature, let's look at the restrictions: 1. Recovery works only for binary-mode transfers between computers that have a Kermit program that support this feature. It can not be used with text-mode transfers. In other words, if you want to be able to use the recovery feature, you must tell the file sender to: SET FILE TYPE BINARY 2. The original transfer must have been done with SET FILE INCOMPLETE KEEP in effect at the receiver, meaning that incompletely received files are kept rather than discarded. In MS-DOS Kermit 3.14 and C-Kermit 5A(190), this is the default, which is a change from previous releases. 3. Recovery only works between two Kermit programs that have this capability and negotiate it successfully. As of this writing, these programs include MS-DOS Kermit 3.14 and later for DOS and Windows and C-Kermit 5A(190) and later for UNIX, VMS, OS/2, AOS/VS, Stratus VOS, and the Commodore Amiga. 4. You should never use SET FILE COLLISION RENAME if you intend to use the recovery feature, since that will change the partially-transmitted file's name and Kermit won't be able to locate it during recovery operations or, worse, will append the incoming data to the wrong file. To recover a failed upload: reestablish the connection, access the same account and directory to which you were sending the file previously, start Kermit there and put it in RECEIVE or SERVER mode. Then escape back to MS-DOS Kermit and give it these commands: SET FILE TYPE BINARY RESEND filename [ as-name ] The RESEND command should use exactly the same names as the SEND command that was interrupted. When you RESEND a file, the receiving Kermit, upon getting the filename, looks up the file and gets its size; it sends the size back to the sending Kermit, and the sending Kermit resumes sending from that point; the receiving Kermit appends incoming material to the partial file rather than creating a new file. You can recover a failed download in the same way. Just make sure you are accessing the same directories as before, and the files have (or are being sent with) the same names as before. When a file is being resent, the file file receiver ignores its SET FILE COLLISION setting; thus you need not change your FILE COLLISION setting when RESENDing, and you will not find it altered afterwards either. If the RESEND command is used, but a partial file of the same name does not exist on the receiving end, RESEND behaves just like SEND -- it sends the whole file. If the file on the receiving is the same size as the sender's copy (or larger), RESEND does nothing; both files are left alone. These properties let you resume the interrupted transfer of a group of files. Suppose you had originally done this: Receiver: Sender: SET FILE INCOMPLETE KEEP SET FILE TYPE BINARY RECEIVE (or SERVER) SEND *.ZIP and the phone hung up in the middle of one of the ZIP files. Just reestablish the connection, and recover this way: Receiver: Sender: SET FILE INCOMPLETE KEEP SET FILE TYPE BINARY RECEIVE (or SERVER) RESEND *.ZIP The files that were already sent are skipped, the file that was partially sent is recovered, and the files that were not sent yet are sent. For the recovery feature feature to be useful at all, the default for SET FILE INCOMPLETE was changed from DISCARD to KEEP when the RESEND command was added in version 3.14. Otherwise an interrupted transfer would leave no partial file behind unless you had remembered to change the default. But now you have to pay closer attention to Kermit's messages to know whether a transfer failed; previously, if it failed, the file would not show up on the receiving end at all; now, you'll get a partial file which could easily be mistaken for a complete file unless you change the default back to DISCARD or read the screen messages, or keep a transaction log. Using RESEND, you can write a script program to really, REALLY send a file. Here is a sample, in which we dial up a UNIX computer and send the MS-DOS Kermit distribution ZIP file. This script program runs under C-Kermit 5A(190) or later on OS/2 (and with a change in the dialout device name, under UNIX too), and under MS-DOS Kermit 3.14 or later. If the transfer fails, we reestablish the connection and restart the transfer from the point of failure, as many times as it takes to get the file across. ---(cut here)--- ask \%u { username: } askq \%p { \%u's password: } ; Settings for entire session. ; define \%s 20 ; Seconds to pause between each try define \%n 7654321 ; Phone number def _modem hayes ; Modem type set port com1 ; Communication port set speed 19200 ; Speed set file type binary ; File transfer mode must be binary set input timeout quit ; This is just to keep the script program short... set count 50 ; Try up to 50 times to send the file goto nomsg ; Skip message the first time :LOOP ; Come here to redial hangup ; Give the phone a rest echo CONNECTION BROKEN. echo Pausing for \%s seconds... sleep \%s Echo redialing... :NOMSG dial \%n ; Dial the phone number if fail goto AGAIN ; Keep trying... output \13 ; System answered, send a carriage return input 15 login: ; Get login prompt output \%u\13 ; Send user ID input 8 Password: ; Get password prompt output \%p\13 ; Send password input 60 {$ } ; Get system prompt cd \budget ; CD to desired local source directory output cd budget\13 ; and remote destination directory input 8 {$ } ; Get system prompt out kermit -r\13 ; kermit -r(eceive) on remote system input 10 KERMIT READY ; Wait for READY message pause 1 ; Plus a second for safety resend fy9495.wks ; RESEND the file if success goto done ; Success means file is completely transferred :AGAIN if count goto LOOP ; Otherwise, try again. Stop 1 Too many tries. ; Too many tries, give up. :DONE echo File transferred OK ; Success, give message output exit\13 ; Log out from remote computer pause 5 ; Give it time... hangup ; Hang up stop 0 Script succeeded ; Finished, the end. ---(cut here)--- Manual Recovery: The PSEND Command The PSEND ("partial send") command is like the SEND command, but it begins sending from a specified position in the file: PSEND [ ] must refer to a single file, not a file group. is the byte position after which to begin sending; 0 means the beginning, 1000 means the 1001st byte. As with the SEND command, the file is sent under its own name unless you specify an "as-name". Unlike RESEND, PSEND can be used for both text and binary transfers; no special capabilities are required of the Kermit program on the receiving end. The PSEND command can be viewed as a "do-it-yourself" recovery feature to be used when the other Kermit program does not support recovery, or when a text file transfer was interrupted. For example, suppose you were sending a file called OOFA when the connection hung up, and that the receiving Kermit program had been instructed to keep incompletely received files (SET FILE INCOMPLETE KEEP). If the transfer was in binary mode, you could note the length of the partial file on the receiving end; let's say it was 123456. Then tell the file receiver to: SET FILE COLLISION APPEND RECEIVE and tell the sender to: SET FILE TYPE BINARY PSEND OOFA 123456 If the receiver does not support SET FILE COLLISION APPEND, you could just use PSEND to create a new file: SET FILE TYPE BINARY PSEND OOFA 123456 OOFA.NEW and then, after the transfer is complete, join the two pieces together on the receiving end, using a system command or utility. If the file transfer was in text mode, you would could use the same method IF the other computer also used CRLF for line termination (like DOS does), but if the other computer was (say) UNIX, which uses LF for line termination, the sizes would be different, and you would have to figure out the correspondence by inspection. (4) FASTER METHOD FOR TRANSFERRING BINARY FILES This feature (v3.13) lets you improve MS-DOS Kermit's file transfer performance on connections 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 -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 pointless 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 5A(189) and earlier, 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. In C-Kermit 5A(190) and later, this precaution should not be necessary (see C-Kermit 5A(190) update documentation). (5) OTHER FILE TRANSFER IMPROVEMENTS . More SET FILE COLLISION options, that goven what happens when an incoming file has the same name as an existing file: APPEND Append the incoming file to the existing file. BACKUP (default) Rename the EXISTING (old) file. RENAME Rename the incoming (new) file. OVERWRITE Overwrite the existing file. DISCARD Refuse to accept the incoming file. UPDATE Refuse to accept the incoming file if its creation date is earlier than that of the existing file -- works only if the other Kermit supplies this information. . Bigger file transfer window sizes and packet buffers, depending on available memory. Packets may be up to 9024 bytes in length, and the window can contain up to 31 packets of the maximum length (32 in version 3.14). Use the regular commands to select these sizes: SET RECEIVE PACKET-LENGTH and SET WINDOW. Also see the Memory Management section of KERMIT.BWR (MSKERM.BWR). . Locking shifts for efficient transfer of 8-bit text on 7-bit connections (version 3.12, important for Cyrillic, Hebrew, and Japanese text): SET TRANSFER LOCKING-SHIFT { OFF, ON, FORCED } The default setting is ON, meaning that MS-DOS Kermit will attempt to negotiate use of this feature with the other Kermit if the parity is not NONE, in which case locking shifts will be used if the other Kermit agrees (C-Kermit 5A and IBM Mainframe Kermit 4.2.4 will agree, others will not). OFF means don't negotiate locking shifts, and FORCED means to use them regardless of negotiations. . Dynamically varying packet length to adapt automatically to changing noise conditions. This happens automatically when MS-DOS Kermit is sending files. No commands are needed. If packets are damaged by noise or timeouts occur, MS-DOS Kermit cuts the packet length in half and then gradually grows it back to the maximum negotiated size as (if) transmission errors subside. . A file transfer "thermometer" (3.13), improved statistics reporting including, for serial connections only, the efficiency of the transfer expressed as a percent, the ratio of actual file characters transferred per second to the connection speed. SET REPEAT { COUNTS {ON, OFF}, PREFIX } Turns repeat-count prefixing (run-length encoding) on and off, and lets you select the repeat-count prefix. . Control over pathnames (3.14): SET { SEND, RECEIVE } PATHNAMES { ON, OFF } RECEIVE PATHNAMES OFF is useful on BBSs or other unattended systems to restrict incoming files to the current directory. SEND is OFF and RECEIVE is ON by default (except in minimal-size "Kermit Lite", which is designed for use as an external Kermit protocol, where both are OFF) by default. SEND PATHNAMES, even when ON, never includes the disk letter. RECEIVE PATHNAMES ON expects DOS syntax; does not result in creation of directories; OFF can be overridden by "RECEIVE filename". . File Lists (3.14): SEND @filename If the SEND command is given an "indirect file name" (i.e. a filename that starts with an at-sign (@)), it will read the name(s) of the file(s) to send from the given file. This provides a convenient method for sending an arbitrary group of files in a single operation. The list of filenames can contain one filename per line, or it can contain a comma-separated list of names, or any mixture of the two. Filenames can contain disk letters, directory names, and DOS-format wildcards. (6) IMPROVED CLIENT/SERVER OPERATION "What Am I" protocol (3.14) allows the client in a Kermit client/server relationship to announce the transfer mode (text or binary) and the filename conversion method (converted, literal) to the server. In other words, in a client/server connection, these items are now controlled by the CLIENT rather than by the FILE SENDER, which is hopefully more what one would expect. Various REMOTE SET commands are now effective simultaneously at the client and the server, e.g.: REMOTE SET FILE TYPE { TEXT, BINARY } In version 3.14 and C-Kermit 5A(190), it is possible for the Kermit client to set and query variables in the Kermit server: REMOTE ASSIGN The length of the name plus the value must be less than 510 bytes. Syntax for the variable name is that of the other Kermit, and the variable is \%letter or a macro name (a "user" class in remote query). The value is interpreted fully by the local Kermit before transmission; protect remote variable names with double backslashes. Example: remote assign \%c sending time is \v(time) var time is \\v(time). remote query user \%c yields: sending time is 09:05:00 var time is \v(time) REMOTE QUERY {KERMIT, SYSTEM, USER} Asks the server to send the value of the given type of variable that has the specified name. Responses are also recorded in \v(query) if they are short enough to fit within one Kermit packet. Longer results will be displayed on the screen but not in \v(query). KERMIT-class objects are \v(..) items, not settable by the user. SYSTEM-class objects are in the operating system's enviroment (PATH and similar). USER-class objects are variables and macros creatable by the user, such as \%letter or a macro name. ENABLE or DISABLE REMOTE ASSIGN and QUERY Security controls for an MS-DOS Kermit server. Defaults are ENABLE. The status of a file transfer was changed in v3.14 to report SUCCESS if a file was rejected by the receiver because of date/time when SET FILE COLLISION UPDATE is in effect. The rejection simply means the transmitted file is not newer than the current file so no transfer is needed. A new bit-value, 256, is introduced into the \v(status) variable if a file transfer fails because of file attribute mismatches. (7) IBM MAINFRAME FILE TRANSFER "Doomsday Kermit" (DDK) techniques allow file transfer with IBM mainframes through 3270 protocol converters that do NOT support transparent mode, to be used in conjunction with IBM Mainframe Kermit's SET CONTROLLER FULLSCREEN command on VM/CMS, MVS/TSO, or CICS. MS-DOS Kermit 3.13 or later and IBM Mainframe Kermit 4.2.3 or later required. Commands: SET PARITY EVEN ; Or whatever SET FLOW XON/XOFF ; Or whatever SET SEND START 62 ; Greater-than sign SET RECEIVE START 62 ; Ditto SET BLOCK BLANK-FREE-2 ; New block-check type SET HANDSHAKE NONE BLANK-FREE-2 is a new block-check type, exactly like type 2, except encoded to never contains blanks. Give IBM Mainframe Kermit the following commands: SET CONTROLLER FULL SET SEND START 62 SET RECEIVE START 62 SET BLOCK BLANK-FREE-2 SET HANDSHAKE 0 Doomsday Kermit file transfers are not as reliable as regular Kermit protocol transfers, and they are much slower. Use this method only as a last resort; that is, only when you can't get a transparent-mode fullscreen connection or a linemode connection to the mainframe. (8) NEW CHARACTER-SET SUPPORT (8.1) HP Roman8 The Hewlett Packard Roman8 character set is supported in version 3.14 as a terminal character set. (8.2) SET TERMINAL CODE-PAGE A command is available in version 3.13 and later to tell MS-DOS Kermit what your actual code page is, for purposes of character-set translation during terminal emulation: SET TERMINAL CODE-PAGE CPnnn where nnn are digits. This command is necessary because most PCs fail to report active code pages other than CP437 and CP850 correctly, and so Kermit generally has no way to find out when you have some other code page loaded. This command is distinct from SET FILE CHARACTER-SET, so you can select translations for terminal emulation and file transfer separately if you want to. MS-DOS Kermit knows about the following code pages: Code Page File-Xfer Term-Emul Comments CP437 Y Y Original PC, and usually hardware, code page CP850 Y Y Multilingual West European code page CP852** Y Y Multilingual East European code page CP860 Y Y Portuguese code page CP861** Y Y Icelandic code page CP862** Y Y Hebrew code page CP863 Y Y Canadian-French code page CP865 Y Y Norwegian/Danish code page CP866 Y N Cyrillic code page Shift-JIS* Y* Y*** Japanese Kanji multibyte code page = CP982 * New to version 3.12 ** New to version 3.13 *** New to version 3.14 Specific code pages are discussed in the following sections. Some of them can use (or must use) fonts supplied in the PCFONTS directory of the Kermit diskette. The macros that are supplied to work with these fonts assume a screen size of 25x80. Other screen sizes are possible; please read the file PCFONTS\READ.ME for further information. (8.3) East European Character Sets Roman character sets for East European languages (Czech, Polish, Hungarian, Romanian, etc) (version 3.13). Commands: SET TERMINAL CHARACTER-SET LATIN2 ; ISO 8859-2 Latin Alphabet 2 SET TRANSFER CHARACTER-SET LATIN2 ; ISO 8859-2 Latin Alphabet 2 SET TERMINAL CODE-PAGE CP852 ; Code page 852 SET FILE CHARACTER-SET CP852 ; Code page 852 MS-DOS 5.0 and later include the East European Code Page, CP852. To use it: 1. Add the following lines to your AUTOEXEC.BAT file and then reboot: C:\DOS\MODE CON: CP PREPARE=((850,,437,852) C:\DOS\EGA.CPI) 4. To load the East European code page, use this DOS command: C:\DOS\MODE CON: CP SELECT=852 Or just use LOADFONT CP852.F16 in the Kermit diskette PCFONTS directory (Kermit macro EFONT). (8.4) The Icelandic Code Page New Icelandic code page support (version 3.13). Commands: SET TERMINAL CHARACTER-SET LATIN1 (or DEC-MCS, or whatever) SET TRANSFER CHARACTER-SET LATIN1 SET TERMINAL CODE-PAGE CP861 SET FILE CHARACTER-SET CP861 Use MODE CON CP PREPARE, if necessary, to install this code page. Use MODE CON CP SELECT=861 to load it. Or use LOADFONT CP861.F16 in the Kermit PCFONTS directory (IFONT macro). (8.5) Cyrillic Cyrillic text-file transfer has been part of Kermit since version 3.11, and is documented in "Using MS-DOS Kermit". For Cyrillic terminal emulation, please refer to the READ.ME and other files in the CYRILLIC subdirectory of the Kermit diskette, new to version 3.14. (8.6) Japanese Kanji MS-DOS Kermit supports conversion of multibyte Kanji character sets in both file transfer and terminal emulation. (8.6.1) Kanji File Transfer The Japanese Kanji code page for PCs is CP982 (this is the FILE CHARACTER-SET). The Kanji code on the wire (in the file transfer packets) is Japanese Extended UNIX Code (EUC). For file transfer, the commands are: SET TRANSFER CHARACTER-SET JAPANESE-EUC SET FILE CHARACTER-SET SHIFT-JIS (8.6.2) Kanji File Terminal Emulation Special Japanese-model IBM PCs have Kanji fonts in firmware, allowing display of Kanji characters in Japanese-DOS. It is also possible to display Kanji on USA-model IBM PCs and compatibles with VGA adapters. In this case, Japanese-DOS/V (not Japanese-DOS) must be used. You can display Kanji even in English DOS/V if you have the Japanese font (software) driver and Japanese (software) keyinput driver (you can even use the 101 English keyboad). Japanese-DOS/V is a revolutionary operating system that opens the Japanese IBM-PC market. Prior to DOS/V, Japanese customers had to buy expensive special Kanji PC models that could not run English applications. Japanese DOS/V consists of: Baseline DOS/V + Japanese font driver + Japanese fonts + Japanese keyinput driver + Japanese dictionary The Japanese font driver displays Japanese characters in VGA 640 x 480 graphic mode, and sometimes it might conflict with English applications. However you can easily switch back and forth because the baseline DOS/V is the same. As of v3.14, terminal emulation works in Kanji mode on Japanese DOS/V computers when CP982 is loaded and you choose a Japanese character set with the following command: SET TERMINAL CHARACTER-SET JIS-KANJI JIS-KANJI should work for all host-based multibyte Kanji character sets; it is the same as Japanese EUC, which is a superset of all the other Kanji sets, such as JIS X 0208, DEC Kanji, and JIS7, and includes double-width JIS-ROMAN in G0 and double-width JIS-KATAKANA in G2. NOTE: In JIS-KANJI, GR points to G3 instead of G2 (as it does in the Japanese VT382 terminal). For single-width, single-byte Roman and Katakana characters, use: SET TERMINAL CHARACTER-SET { JIS-KATAKANA, JIS-ROMAN } JIS-KATAKANA refers to the Katakana character set of JIS X 0201, and JIS-ROMAN refers to the Roman character set of same standard, which is identical to ASCII except in two positions. JIS-ROMAN and JIS-KATAKANA can be combined into a single 8-bit character set as follows: SET TERMINAL CHARACTER-SET JIS-ROMAN G0 SET TERMINAL CHARACTER-SET JIS-KATAKANA G1 (or G2 or G3) Because the PC local Kanji-code is Shift-JIS (CP982), TRANSPARENT can be used if the remote Kanji code is Shift-JIS. When sending characters from the keyboard (or with the TRANSMIT command), you must first turn off the status line, because this line is used for composing Kanji characters: SET MODE-LINE OFF Then you must specify, in addition to the host character set, a shifting method: SET TERMINAL OUTPUT-SHIFT { EUC-KANJI, DEC-KANJI, JIS7-KANJI } These work as follows: EUC-Kanji Shift-JIS Roman/ASCII -> US-ASCII/JIS-Roman (1 byte) Shift-JIS Katakana -> SS2 + JIS X 0201 (in GR) (2 bytes) Shift-JIS Kanji -> JIS X 0208 (in GR) (2 bytes) DEC-Kanji Shift-JIS Roman/ASCII -> 1 byte US-ASCII/JIS-Roman (1 byte) Shift-JIS Katakana -> JIS X 0208 Katakana (in GR) (2 bytes) Shift-JIS Kanji -> JIS X 0208 Kanji (in GR) (2 bytes) JIS7-Kanji This is not actually a shift-machanism, but rather changes the G0 character set between ASCII/Roman and Kanji by using ISO-2022 designation sequences. For Shift-JIS Katakana characters, Kermit maps to JIS X 0208 Katakana if you set TERMINAL CHARACTER-SET to JIS-KANJI. On the other hand, if you SET TERMINAL CHARACTER-SET to JIS-KATAKANA, the Shift-In/Shift-Out mechanism is used. For ASCII/Roman and Kanji character sets, there are several possibilities: For Kanji Final Character 4/0 (@) JIS C 6226 (1978) so-called JIS78 Kanji 4/2 (B) JIS X 0208 (1983) so-called JIS83 Kanji For ASCII/Roman Final Character 4/2 (B) US-ASCII 4/10 (J) JIS-Roman (JIS X 0201) 4/8 (H) This is wrong but still used in same cases, perhaps due to a misprint in JIS C 6228 (1975). To choose one of the combinations, you can specify one of the following with SET TERMINAL OUTPUT-SHIFT JIS7-KANJI command: Kanji desig. ASCII/Roman desig. JIS83-US $ B ( B JIS83-Roman $ B ( J JIS83-75Roman $ B ( H JIS78-US $ @ ( B JIS78-Roman $ @ ( J JIS78-75Roman $ @ ( H For example, if your host uses JIS78-75Roman combination, use the following command: SET TERMINAL OUTPUT-SHIFT JIS7-KANJI JIS78-75ROMAN (8.7) Hebrew File Transfer and Terminal Emulation Hebrew terminal emulation and file transfer were added in version 3.13. Commands: SET TRANSFER CHARACTER-SET HEBREW SET FILE CHARACTER-SET CP862 SET TERMINAL CHARACTER-SET { HEBREW-ISO, HEBREW-7 } SET TERMINAL DIRECTION { RIGHT-TO-LEFT, LEFT-TO-RIGHT } SET TERMINAL CODE-PAGE CP862 Version 3.14 adds a complete Hebrew support package -- keyboard mappings, fonts, special documentation, and so on. See the HEBREW.DOC in the HEBREW directory for details. (8.8) Character-set Translation Goal Selection SET TRANSFER TRANSLATION { READABLE, INVERTIBLE } Default is READABLE. INVERTIBLE attempts to use code points as much in common between the transfer and file character sets as possible, with the transfer character set having priority. Thus INVERTIBLE can create code points which do not display correctly on the destination machine but yield the closest match when a file is sent back to the originator. (8.9) Terminal-to-Host Keyboard Character Shifting SET TERMINAL OUTPUT-SHIFT { NONE, AUTOMATIC, SI/SO, SS2, SS3, JIS7, EUC } Allows you to type 8-bit characters on a 7-bit terminal connection. MS-DOS Kermit supplies the selected type of shifting: NONE - (Default) No shifting SI/SO - Shift-In Shift-Out around each 8-bit character (GR = G1) SS2 - Single-Shift 2 before each 8-bit character (GR = G2) SS3 - Single-Shift 3 before each 8-bit character (GR = G3) AUTO - Shift type depends on current character set GR assignment JIS7 - For sending JIS7-coded Kanji EUC - For sending EUC-coded Kanji (8.10) CHINESE There is nothing new here except for this explanation, courtesy of Ching Mo Chang of Washington State University. MS-DOS Kermit may be used on regular IBM PCs and compatibles equipped with regular USA keyboard and VGA video adapter, running at least the following Chinese versions of DOS (both of which are available via anonymous ftp as indicated): . KCDOS - Big5 (ROC) encoding. Host cnd.org, /pub/software/dos/chinese-sys. . ZWDOS - GB 2312-80 (PRC) encoding. Host cnd.org, /pub/software/dos/ZWDOS. The two encodings correspond to the two major encodings used on host computers and services. So you would run the appropriate DOS version, and then simply tell Kermit to: set parity none set terminal bytesize 8 set terminal character-set transparent This allows Chinese characters to be viewed, typed, and transmitted during terminal emulation. Input is according to the input method supplied in the particular version of DOS. (9) CONNECT-MODE STATUS LINE AND POPUP HELP SCREENS In version 3.14, the status line was changed to say: Esc:Alt-x help:Alt-h bp1 echo:xxx .... This means you should use Alt-x to escape back to the prompt. The old method (the CONNECT-mode escape character, normally Ctrl-], followed by the letter C) still works too. Alt-h pops up a help screen listing the special characters. WARNING: If you remap the special characters, the status line and popup help screens will not know about it, so it is best not to do this, particularly with \Kexit (Alt-x) and \Khelp (Alt-h). In v3.14, if you type the escape character, a help screen pops up automatically so you will always know what to do next. In the status line, "bp1" replaces the "parity" designation, which took up too much space. "b" is the character size, 7 or 8 bits (7 if Kermit's PARITY is not NONE *or* if TERMINAL BYTESIZE is 7); "p" is the parity (n, e, o, m, s = None, Even, Odd, Mark, or Space), and "1" means 1 stop bit (this can't be changed, but we display it anyway). Example: Esc:Alt-x help:Alt-h COM1 19200 7n1 echo:rem VT320 .... The four dots represent the VT100 keyboard LEDs. (10) THE APC ESCAPE SEQUENCE ...For Auto-Upload, Auto-Download, Auto-Anything-Else... The handling of the CSI ? 34 h / l escape sequences by the VT220 and VT320 terminal emulators changed between versions 3.12 and 3.13 in order to support Hebrew VT220/320/420 terminal emulation, and because DEC software such as DECforms expects to use these sequences to control screen-writing direction. Old way (described on pages 180-181 of "Using MS-DOS Kermit"): CSI ? 34 h / l invoked the TERMINALR and TERMINALS macros, if you had them defined. This required each Kermit user to define them, for example in their MSCUSTOM.INI files, a big management problem for large user communities. New way: CSI ? 34 h / l controls screen-writing direction, left-to-right or right-to-left (for Hebrew and Arabic), as it does on real Hebrew-model VT terminals. To replace the TERMINALR/TERMINALS function, MS-DOS Kermit 3.13 and later support the Application Program Command (APC) escape sequence, which is accepted by Kermit's VT emulators, VT100 and above: APC ST In the 7-bit environment, APC is ESC _ and ST (string terminator) is ESC \. In the 8-bit environment, APC is decimal 159 and ST is 156 decimal. The can be any MS-DOS Kermit command or list of commands, separated by commas, and can be up to 1024 bytes in length. Upon receipt of this escape sequence, MS-DOS Kermit executes the command(s) in the string and then automatically resumes CONNECT mode. NOTE: In this respect, APC differs from the old TERMINALR/TERMINALS mechanism, which did NOT automatically re-enter CONNECT mode. Thus, if you are recycling your TERMINALR/TERMINALS macros for APC use, be sure to remove the ", connect" from the end of their definitions, or else you will have to escape back twice the next time you want the MS-Kermit> prompt. For safety, the APC mechanism is disabled unless you say otherwise. This is controlled by the command: SET TERMINAL APC { ON, OFF, UNCHECKED } OFF (the default) means Kermit will not execute any commands and will ignore APCs. ON means that Kermit will execute only commands that are relatively safe. UNCHECKED means Kermit will execute ANY commands sent via APC, including commands that might delete your files, etc. UNCHECKED is required for RUN, i.e. to run DOS commands or external programs. Use UNCHECKED at your own risk. APC is much more flexible than the old TERMINALS/TERMINALR mechanism, and can be used for any purpose at all. For example, it can be used to configure MS-DOS Kermit for use with a particular host or application by sending the appropriate list of SET commands: communication parameters like parity, protocol parameters like packet-length and window size, key mappings, etc. It can also be used to initiate file transfers automatically from the host without having to escape back to MS-DOS Kermit. Here's an example you can use with C-Kermit 5A. In your C-Kermit 5A customization file (.mykermrc or CKERMOD.INI), add commands like this: define autosend set delay 0, apc receive, send \%1 \%2, statistics define autoreceive apc {send \%1 \%2}, receive, statistics The APC command is new to C-Kermit 5A(189); if you have an earlier release of C-Kermit you can define APC as a macro: define apc output \27_\%1\27\92 You can set up similar procedures with IBM mainframe Kermit, e.g. in VM/CMS by stacking commands and using XECHO to emit the escape sequences. You can expand these commands to handle text and binary mode if you want to: ; Text transfers define tsend set del 0, set file type text, apc receive, send \%1, stat define treceive apc {set fil typ text, send \%1 \%2}, stat ; ; Binary transfers define bsend set del 0, set file type binary, apc receive, send \%1, stat define breceive apc {set fil typ binary, send \%1 \%2}, stat Use your imagination, the possibilities are endless! (11) VT320 TERMINAL EMULATION The following features added in v3.14: Select character attribute ; CSI Ps " q Ps - 0 or 2, erasable. PS - 1, not erasable. Selective erase in display ; CSI ? Ps J Ps - 0, cursor to end (default). Ps - 1, beginning to cursor. Ps - 2, complete display. Selective erase in line ; CSI ? Ps K Ps - 0, cursor to end (default). Ps - 1, beginning to cursor. (12) ANSI TERMINAL EMULATION "ANSI" terminal emulation, useful primarily for accessing BBSs, is available as of version 3.14 via the command: SET TERMINAL TYPE ANSI ANSI emulation is similar to VT100 emulation, but with host-controlled colors and using 8-bit IBM code-page 437 characters for line and box drawing, plus some unique escape sequences for cursor save/restore, and different interpretation of several other escape sequences used by the VT100. Terminal screen colors are automatically set to black on white, TERMINAL BYTESIZE is automatically set to 8, TERMINAL CHARACTER-SET is forced to TRANSPARENT, and your code page is set to CP437 (provided you have CP437 prepared; otherwise your code page is not changed). Kermit's ANSI emulation does nothing special with the keys; in particular, there is no attempt at "PCTERM" keyboard handling, in which unique key-down and key-up sequences are transmitted separately for every single IBM key (including Shift, Alt, etc), apparently needed for the SCO UNIX console terminal (also called "DOORWAY mode)", but evidently not needed for BBS's. There is also no support for so-called ANSI music. If you SET TERMINAL TYPE anything-but-ANSI after having SET TERMINAL TYPE ANSI, your previous code page, TERMINAL BYTESIZE, COLOR, and CHARACTER-SET are restored. Hint: Some BBS's send a "cursor position report request" when you log in, ESC [ 6 n. When writing login scripts for BBS's, you should account for this. For example: input 10 \27[6n ; Cursor position report request if success output \27[24;1R ; Cursor position report (13) DATA GENERAL DASHER TERMINAL EMULATION MS-DOS Kermit 3.13 added built-in emulation of the Data General DASHER D463 (monochrome) and D470 (color) text/graphics terminals: SET TERMINAL TYPE { D463, D470 } Because DASHER escape sequences can include XON and XOFF characters, you must also tell MS-DOS Kermit not to use regular bidirectional Xon/Xoff flow control during DASHER terminal emulation. Instead, on network connections, SET FLOW NONE; on serial connections, SET FLOW RTS/CTS if available, or else use unidirectional Xon/Xoff with the new command: SET FLOW OUTGOING-XON/XOFF For using Western European languages on a Data General host: SET TERMINAL CHARACTER-SET DG-INTERNATIONAL DG function and special keys are supported via new keyboard verbs, which can be assigned as desired with SET KEY: \KdgF1..F15, \KdgC1..C4, arrow keys, Home, \KdgPoint, \KdgSPCL, \KdgNC. These verbs are not assigned automatically, you must assign them yourself. Here, for example, is a sample macro that assigns the DG F1-F12 keys to the PC's F1-F12 keys: define dasher set key cle,set flow outgoing-xon/xoff,set term type d463,- set ke \315 \kdgf1,set ke \316 \kdgf2,set ke \317 \kdgf3,- set ke \318 \kdgf4,set ke \319 \kdgf5,set ke \320 \kdgf6,- set ke \321 \kdgf7,set ke \322 \kdgf8,set ke \323 \kdgf9,- set ke \324 \kdgf10,set ke \389 \kdgf11,set ke \390 \kdgf12 Verbs \KdgSF1 thru \KdgSF15, for the shifted DASHER function keys, were added in v3.14. Arrow-key codes (\Klfarr, etc) are adjusted automatically according to the terminal type (VT52/Heath, VT100/102, VT220/320, Data General, or Wyse). For SPCL key operation, see the Compose Key section below. A comprehensive set of DG DASHER key assignments is given in the DASHER.INI (MSIDGK.INI) file, supplied by Data General Corporation. This mapping follows that used in DG's CEO Connection product. Compressed text (see section 16 below) is supported in either text or graphics mode, depending on your video adapter and preferences; in graphics mode, regular and compressed text can be mixed on the same screen. Full-color DG graphics are also supported including polygon fill, and the mouse (Microsoft or compatible) is supported for CEO Drawing Board and other graphics applications; mouse movements control the crosshair cursor and the left mouse button sends \KdgF1. The DG International Character Set (DGI) is supported during terminal emulation, with conversion to CP437 if CP437 is active, otherwise to CP850. CP850 is recommended, since it is the closest match to DGI. Other code pages are not supported in DG terminal emulation, nor are Hebrew, Latin/2, and Kanji terminal emulation. Also not supported for DG terminal emulation: downloadable fonts/character-sets; retention of graphics screens after escaping back or switching to text mode; compressed fonts for monochrome, CGA, or Hercules video adapters. Technical details of DG terminal emulation are listed in Appendix I. (14) WYSE-50 TERMINAL EMULATION MS-DOS Kermit 3.14 adds built-in emulation of the Wyse-50 text terminal. This emulation is about the same as Wyse-60 in "Wyse mode", since the Wyse-60 is essentially a Wyse-50 with additional emulations added. To emulate a Wyse-50: SET TERMINAL TYPE WYSE50 Wyse function keys are supported via the keyboard verbs \KwyseFn (n = 1 through 16), and shifted Wyse functions keys via \KwyseSFn. The regular \KxxArr verbs (xx = Up, Dn, Lf, Rt) automatically switch to Wyse mode in Wyse emulation. Restrictions include: . No function key labels, nor local or host message fields. . No erasing with the NUL character; space is used in all cases. . Video attribute Blank is ignored. . Split screens are ignored because insufficent information is available. . Local printing is severely curtailed because much makes little sense to DOS systems. . No block mode nor host controllable duplex. . No local editing. . No host control of the keyboard. . No host-initiated transmission of screen contents or fields. . No host-controlled monitor mode (use Kermit's instead). Enhancements: . Transparent printing a`la the Wyse 60 and 50+ terminals Technical details of Wyse terminal emulation are listed in Appendix I. (15) COMPOSE-KEY SEQUENCES FOR ENTERING SPECIAL CHARACTERS Special characters (accented letters, etc) may be entered in the normal ways described in "Using MS-DOS Kermit", second edition, Chapter 13, and, starting in version 3.13, as compose-key sequences via two new compose-key verbs: \Kcompose ; DEC Compose key \KdgSPCL ; Data General SPCL ("special") key These two verbs are identical, and are assigned to Alt-c by default. To enter a special character, press this key followed by two more keys. For example, you can enter A-acute like this: Alt-c ' A That is, press Alt-c (or other key or key combination you have assigned \Kcompose or \KdgSPCL to), then acute accent (apostrophe), then capital A. In general, compose-key combinations are intuitive: letter+grave accent, letter+acute accent (apostrophe), letter+doublequote (for umlaut or diaeresis), letter+asterisk (ring above), etc; complete listing below. When you press the compose key, the letter C appears at the right of the CONNECT-mode status line and remains there until you type the next two keys. If the two keys form a valid compose sequence, the corresponding character is sent to the host. If not, Kermit beeps. In both cases, the C disappears from the status line at the end of the compose sequence. To cancel a compose sequence in progress, just type one or two Ctrl-C characters (or any two characters that are not a legal compose sequence). Compose sequences are available only for those 8-bit Latin1-class (i.e. Western European) terminal character-sets that are valid for Kermit's current terminal emulation: Terminal Type: Character Sets: VT220 or 320 LATIN1, DEC-MCS D463 or D470 LATIN1, DG-INTERNATIONAL Compose sequences are entirely independent of your PC's current code page. MS-DOS Kermit's compose-key sequences are: Case and order insensitive: Input pair DG Int Latin1 Graphic ++ 23h n/a # AA 40h n/a @ (( 5Bh n/a [ // or /< 5Ch n/a \ )) 5Dh n/a ] ^ 7Eh n/a ^ (- 7Bh n/a { /^ 7Ch n/a | )- 7Dh n/a } << B1h ABh << (Left guillemot) 0^ or * BCh B0h Degree, ring above +- B6h B1h +- >> B0h BBh >> (Right guillemot) SS FCh DFh German double s (Ess-Zet) /U A3h B5h Greek mu 2^ A4h B2h 2 superscript 3^ A5h B3h 3 superscript C/ or C| A7h A2h Cent sign L- or L= A8h A3h Pound Sterling Y- or Y= B5h A5h Yen sign SO or S! or S0 BBh A7h Paragraph sign XO or X0 A6h A5h Currency sign A- A9h A4h Feminine ordinal CO or C0 ADh A9h Copyright sign PP or P! B2h B6h Pilcrow sign .^ B9h B7h Middle dot O- AAh BAh Masculine ordinal 12 A2h BDh Fraction one-half !! ABh A1h Inverted exclamation ?? ACh BFh Inverted query mark T- AFh n/a Not equals sign TM B3h AEh Trademark sign FF B4h n/a Florin sign (DGI only) <= B7h n/a Less than or equals sign (DGI only) >= B8h n/a Greater than or equals sign (DGI only) ,- A1h ACh Not sign "" BDh A8h Diaeresis '' BEh B4h Accent acute RO AEh AEh Registered sign || n/a A6h Vertical broken bar -- n/a ADh Soft hyphen -^ n/a AFh Macron ,, n/a B8h Cedilla 34 n/a BEh Fraction three-fourths XX n/a D7h Multiplication sign -: n/a F7h Division sign 1^ n/a B9h Superscript 1 14 n/a BCh Fraction one-fourth Case and order sensitive: Input pair DG Int Latin1 Graphic EO D7h n/a OE digraph AE C6h C6h AE digraph ae E6h E6h ae digraph ,C C7h C7h Cedilla ,c E7h E7h cedilla /O D6h D8h O oblique stroke /o F6h F8h o oblique stroke HT n/a DEh Icelandic Thorn (yes, HT, not TH) ht n/a FEh Icelandic thorn (ht, not th) -D n/a D0h Icelandic Eth -d n/a F0h Icelandic eth Case sensitive, order insensitive: Input pair DG Int Latin1 Graphic 'A C0h C1h A-acute 'a E0h E1h a-acute `A C1h C0h A-grave `a E1h E0h a-grave ^A C2h C2h A-circumflex ^a E2h E2h a-circumflex "A C3h C4h A-diaeresis "a E3h E4h a-diaeresis ~A C4h C3h A-tilde ~a E4h E3h a-tilde *A C5h C5h A-ring *a E5h E5h a-ring 'E C8h C9h E-acute 'e E8h E9h e-acute `E C9h C8h E-grave `e E9h E8h e-grave ^E CAh CAh E-circumflex ^e EAh EAh e-circumflex "E CBh CBh E-diaeresis "e EBh EBh e-diaeresis 'I CCh CDh I-acute 'i ECh EDh i-acute `I CDh CCh I-grave `i EDh ECh i-grave ^I CEh CEh I-circumflex ^i EEh EEh i-circumflex "I CFh CFh I-diaeresis "i EFh EFh i-diaeresis ~N D0h D1h N-tilde ~n F0h F1h n-tilde 'O D1h D3h O-acute 'o F1h F3h o-acute `O D2h D2h O-grave `o F2h F2h o-grave ^O D3h D4h O-circumflex ^o F3h F4h o-circumflex "O D4h D6h O-diaeresis "o F4h F6h o-diaeresis ~O D5h D5h O-tilde ~o F5h F5h o-tilde 'U D8h DAh U-acute 'u F8h FAh u-acute `U D9h D9h U-grave `u F9h F9h u-grave ^U DAh D8h U-circumflex ^u FAh F8h u-circumflex "U DBh DCh U-diaeresis "u FBh FCh u-diaeresis "Y DDh n/a Y-diaeresis "y FDh FFh y-diaeresis 'Y n/a DDh Y-acute 'y n/a FDh y-acute (16) WIDE SCREENS AND HORIZONTAL SCROLLING Kermit changes between 80 and 132 column mode at host request (CSI ? 3 h / l) or when you give an explicit SET TERMINAL WIDTH { 80, 132 } command. Until version 3.13, 132-column screens were possible only on PCs with video adapters that have a 132-column text mode. Now MS-DOS Kermit also includes support for DEC VT 132-column mode and Data General compressed text on EGA and VGA video adapters that do not have a 132-column text mode, by entering graphics mode and writing the characters dot by dot. 128 columns are displayed rather than 132 due to the PC's screen geometry but you can use MS-DOS Kermit's horizontal scrolling feature to see the rightmost 4 columns. Wide screens are handled according to the following commands: SET TERMINAL VIDEO-CHANGE {ENABLED, DISABLED, DOS-ONLY} Enable or disable the video screen from switching between 80 and 132 columns. By default, this is enabled in DOS only (DOS-ONLY). Video-mode switching can wreak havoc on some (but not all) PCs when done in a Microsoft Windows window and so by default video-mode switching is disabled in Windows. Use ENABLED to enable it AT YOUR OWN RISK. If it works, Windows will probably force Kermit into a fullscreen session. If it doesn't work, then disable it again and use horizontal scrolling instead, or run Kermit under plain DOS or in a fullscreen DOS window under Windows. v3.14. SET TERMINAL COMPRESSED-TEXT {GRAPHICS, TEXT} Tells whether Kermit should use text (fast) or graphics (slow) mode for compressed text (wide screens). By default, it will use whichever method it thinks is appropriate to your video adapter. Graphics is allowed on EGA, VGA or higher video systems. v3.13. Text mode will not actually display compressed text unless your video adapter supports this function, but Kermit's virtual screen is adjusted to the terminal-emulation width. For example, if your screen shows 80 characters per line, but your terminal width is 132, then wrapping occurs at column 132 (perhaps off the screen) rather than column 80, and Kermit reports its screen width as 132 (e.g. in response to a report-request escape sequence). Of course, for 132-column operation, it is always better if your video adapter supports 132 columns directly -- the video board does all the work, which is much faster than writing screen dots in software! This works if Kermit knows which kind of video adapter you have (Kermit determines this from a hopefully unique "signature" in the video BIOS, provided it has not been hidden from Kermit by Windows or your memory manager, see KERMIT.BWR). Here is a list of such boards: ATI EGA and VGA Wonder AST, Dell, and other boards based on Western Digital VGA boards AT&T / Olivetti Everex Viewpoint EV-659, FVGA-673, EV-678, Micro Enhancer Deluxe IBM SVGA (= Tseng ET4000, e.g. on PS/ValuePoint) IBM XGA Paradise AutoSwitch EGA Mono Paradise Professional Paradise VGA Plus 16 (ROM BIOS 003056-xxx firmware) Paradise VGA Plus (ROM BIOS 003056-xxx firmware) Paradise VGA Professional (ROM BIOS 003056-xxx firmware) Paradise VGA1024 STB VGA/EM (Tseng TVGA) STB VGA/EM Plus (Tseng 4000), VGA/EM-16, VGA/EM-16 Plus Tseng Labs EVA board with 132-column kit installed Tseng Labs UltraPAK mono/Hercules with 132 column modes Tseng Labs ET4000 SVGA VESA-compatible video BIOS Video 7 Vega Deluxe with 132X25.COM driver installed and Video 7 VGA If you have an adapter capable of 132-column operation, but Kermit does not know how to activate it, set up your COLS132.BAT and COLS80.BAT files to do the switching, as described in "Using MS-DOS Kermit". For Data General DASHER terminal emulation, screen widths up to 207 are supported for purposes of horizontal scrolling. DG terminal emulation is in text mode by default. As soon as the host commands the terminal to display compressed text, Kermit switches the entire screen to 132-column text mode if your video adapter supports it, and otherwise switches to (slower) graphics mode. As in VT terminal emulation, this behavior is controlled by the SET TERMINAL COMPRESSED-TEXT command. Unlike VT terminals, DASHER terminals (and MS-DOS Kermit, when in graphics mode) can display compressed and regular text on the screen at the same time. (16.1) WIDE SCREENS AND ROLLBACK Normally, Kermit only keeps 80 columns in its screen-rollback memory. If you want to be able to roll back screens of 132 (or, for DG terminal emulation, up to 207) columns, you must set the KERMIT environment variable WIDTH to 132 (or the desired number) in your AUTOEXEC.BAT file, for example: SET KERMIT=WIDTH 132 The KERMIT environment variable must contain a WIDTH definition before you start MS-DOS Kermit in order for it to take effect. Wide rollback screens need more memory than regular ones. NOTE: The KERMIT=WIDTH value and SET TERMINAL WIDTH value are two different things. The former controls memory allocation in the rollback buffer, the latter controls the actual display width (virtual or real) of your screen. (16.2) HORIZONTAL SCROLLING If your logical screen width is greater than the physical screen width, MS-DOS Kermit 3.13 lets you scroll the screen horizontally by pushing keys. The new keyboard verbs are: \Klfpage Scroll left one "page" (= 20 columns) (screen moves right) \Klfone Scroll left one column \Krtpage Scroll right one page (screen moves left) \Krtone Scroll right one column These verbs are unassigned by default. Here are the commands you could add to your MSCUSTOM.INI file if you wanted to assign them to the gray (T-pad) arrow keys on the extended (101) PC keyboard: SET KEY \2459 \Krtpage ; Alt-Left arrow makes screen move left on page SET KEY \5491 \Krtone ; Ctrl-Left arrow moves screen one column to left SET KEY \2461 \Klfpage ; Alt-Right arrow makes screen move right one page SET KEY \5492 \Klfone ; Ctrl-Right arrow moves screen one column right When these keys are used in combination with the PageUp/Down keys, your screen becomes a "virtual window" on your session, which you can move around in arbitrary directions. By analogy with SET TERMINAL ROLLBACK { ON, OFF }, which tells Kermit whether to move a rolled-back screen automatically to the bottom when new characters arrive from the host, the new command: SET TERMINAL HORIZONTAL-SCROLL { AUTOMATIC, MANUAL } tells Kermit whether to scroll horizontally when a character arrives that would be displayed to the left or right of the visible screen. By default, horizontal scrolling is MANUAL during VT terminal emulation, and AUTOMATIC during DASHER emulation. MANUAL means you have to push keys to scroll the screen horizontally, AUTOMATIC means that Kermit moves the screen to "catch" incoming characters. (17) EXPANDED MEMORY Graphics screens and terminal rollback screens can now be kept in expanded memory (EMS), and the size of the screen rollback buffer can selected and changed at runtime. When sufficient expanded memory is available, you can have up to 8000 rollback screens. SET ROLLBACK Specifies the number of text screens to be kept in the rollback buffer. Each 24x80 screen occupies about 4K; bigger screens need more space. Don't confuse this command with SET TERMINAL ROLLBACK, which tells what to do when characters arrive for the screen while it is rolled back. SET TERMINAL EXPANDED-MEMORY { ON, OFF } Whether to use expanded memory for retention of graphics screens and for text terminal-emulation rollback screens. Default is OFF, use conventional memory. ON leaves extra room in conventional memory for running other programs, does not rely on your video adapter's memory for storing graphics images, and allows more rollback screens, limited only by the size of your PC's available physical memory. ON requires that an expanded memory manager, such as EMM386 or QEMM, be used correctly to configure EMS memory. See the Memory Management section of KERMIT.BWR (MSKERM.BWR) for further info. (18) GRAPHICS TERMINAL EMULATION SET TERMINAL GRAPHICS { ..., VESA, ...} VESA now supported for graphics terminal emulation (Tektronix, Sixel, etc). This is an 800x600 display on display adapters (e.g. SVGA) that support it. This in comparison to VGA with 640x480 (v3.14). TIFF dumps of graphics screens have improved coloration, especially among black and shades of gray (v3.14). SAS 6.10 and later on UNIX platforms (MIPS, Intel, and Alpha as of this writing) includes new SAS/GRAPH drivers that take advantage of Kermit's color Sixel graphics capabilities: KRMTVGA Requires VGA video adapter. You must tell Kermit to SET TERM GRAPHICS VGA or SET TERM GRAPHICS VESA. KRMTAUTO Requires that you set your terminal graphics to auto-sensing (SET TERM GRAPHICS AUTO, which is the default). To view a graph from an interactive SAS/GRAPH session, use this syntax at the beginning of your graphics program: GOPTIONS DEVICE=KRMTVGA; -or- GOPTIONS DEVICE=KRMTAUTO; Users running release 6.08 of SAS have access to a driver called KERMIT that does Tektronix 4014 emulation. Prior to that release, they can use this syntax in their GOPTIONS statement to get a monochrome graph: GOPTIONS DEVICE=TEK4014 GPROLOG='1b5b3f333868'x GEPILOG='1b5b3f33386c'; For more information on these device drivers, contact SAS Institute Technical Support at (919)-677-8008 and ask for the GRAPHICS group. (19) OTHER TERMINAL EMULATION CHANGES AND IMPROVEMENTS SET TERMINAL ANSWERBACK { ON, OFF } Whether Kermit should respond with string "MS-DOS-KERMIT nnn_ttt" if, during terminal emulation, it receives Ctrl-E (ENQ) from host. Default is OFF, no reply. As of v3.14 nnn = Kermit version number, ttt = terminal type, e.g. "MS-DOS-KERMIT 314_VT320", terminated by a carriage return. SET TERMINAL ANSWERBACK { MESSAGE [ text ] } The text, if any, is appended to the standard answerback message, separated by an underscore, e.g. "MS-DOS-KERMIT 314_VT320_123 Science Hall". The text can be up to 30 characters long, and may contain \nnn codes, and is shown in the SHOW TERMINAL display as "ab msg: text". It is not possible to replace the standard message, only to append additional text to it. Thus, programs sending ENQ to MS-DOS Kermit programs can depend on finding the program name, version, and terminal type as the first three items. v3.14. SET TERMINAL COLOR 20 If Kermit receives a "reset visual attributes" escape sequence (CSI 0 m) from the host, this does not affect the screen coloration. However, some applications expect it to restore the default fore- and background colors. SET TERMINAL COLOR 20 tells Kermit to do this. v3.14. SET TERMINAL ERASE {NORMAL-BACKGROUND, CURRENT-COLOR} What Kermit should do about color when it receives a screen erasure command from the host, such as CSI Pn J, CSI Pn K, etc. Default is NORMAL: fill the erased area with the default (SET TERMINAL COLOR) background color. CURRENT-COLOR means to use the background color most recently set by a host-generated CSI 4x m escape sequence. v3.14. SET TERMINAL RESET Causes the terminal emulator to reset to startup defaults when CONNECT mode is entered the next time. The dynamic reset is still keyboard verb \Kreset. SET TERMINAL TIMESLICE-RELEASE {ENABLE, DISABLE} ENABLE (default) lets Kermit release a CPU time slice to mulitasking systems Windows, OS/2, NT, and DESQview when idle. Unfortunately, under at least OS/2, a Packet Driver loaded into the same DOS box may not receive enough CPU cycles to work effectively unless we disable timeslice-release. Enabling frees CPU cycles for other tasks; disabling may improve performance of Kermit and related comms drivers. The timeslice release mechanism is active only while in CONNECT mode; the operating system's normal scheduler takes care of matters while at the Kermit prompt. SET TERMINAL UNDERSCORE Lets you select the fore- and background colors for underscore simulation on color monitors. Syntax is the same as SET TERM COLOR, 3x and 4x numbers. Downloadable DEC function keys now have their own \Kverbs, \KudkF6..F20; unassigned by default. SET KEY now recognizes separate scan codes for the Esc, Space, and Enter keys when combined with Ctrl, Shift, and Alt keys: Unmodified Ctrl Shift Alt C-S C-A S-A C-S-A Space 313 1337 825 2361 1849 3385 2873 3897 Enter 284 1308 796 2332 1820 3356 2844 3868 Esc 257 1281 769 2305 1793 3329 2817 3841 Now you can make separate SET KEY assignments to each combination of Space, Enter, and Esc with the Alt, Shift, and Ctrl keys. (20) SCRIPT PROGRAMMING CHANGES AND ADDITIONS \\ quoting now works. Also \; etc. Semicolons not preceeded by whitespace and not at the beginning of a line are now considered to be part of the text. All-new string, numeric, and file functions: \Fcharacter(number) The character whose numeric value is given \Fcode(character) The numeric code for the character \Fcontents(variable) The contents of the variable (variable name is literal) \Fdate(filename) The creation date of the given file \Fdefinition(macro) The literal definition of the given macro \Ffiles(filespec) The number of files that match the filespec \Findex(s1,s2,p) The position of string s1 in s2 starting at position p \Flength(string) The length of the given string \Fliteral(string) The string, literally, unevaluated \Flower(string) The string with uppercase letters changed to lowercase \Flpad(string,len,char) The string left padded to given length with char \Fmaximum(n1,n2) The maximum of the two numbers, which may be variables \Fminimum(n1,n2) The minimum of the two numbers, ditto \Fnextfile() Next file from \Ffiles() list \Frepeat(string,num) num repetitions of the string \Freverse(string) The string, reversed left to right \Freplace(s1,s2,s3) Replace all occurrences of s2 in the string s1 with s3 \Fright(string,num) The rightmost num characters of the string \Frpad(string,len,char) The string right-padded to given length with char \Fsize(file) The size (bytes) of the given file \Fsubstr(string,p,len) Substring of string, starting at p, of given length \Fupper(string) The string with lowercase letters changed to uppercase Built-in variables (* are new to 3.14): \v(argc) Number of arguments to current macro *\v(carrier) SET CARRIER setting *\v(charset) Code Page currently active, such as CP437 *\v(cmdfile) Name of currently executing command file, if any *\v(console) ANSI if ANSI.SYS loaded, else NONE \v(count) Current SET COUNT value *\v(cmdlevel) Command level (for macros & TAKE files) 0 or 1 = top level, 2 = 2nd level, 3 = 3rd level, ... *\v(cps) Characters per second, most recent file transfer \v(date) Current date *\v(inidir) Full pathname of MSKERMIT.INI's directory \v(ndate) Current date, numeric format \v(directory) Current directory \v(dosversion) Numeric DOS version, e.g. 500 for 5.00 \v(errorlevel) ERRORLEVEL value *\v(inpath) Drive:\path\ resulting from last IF INPATH command *\v(input) INPUT buffer, first string ending in LF, CR, or FF \v(keyboard) Keyboard type, e.g. 88, 101 \v(line) Synonym for \v(port) *\v(monitor) Monitor type - COLOR, MONO *\v(parity) Current SET PARITY setting \v(platform) IBM-PC (or other) \v(port) Current SET PORT setting \v(program) MS-DOS_KERMIT *\v(prompt) Current SET PROMPT setting *\v(query) Result of last REMOTE QUERY command, if not a file \v(session) Current TCP/IP session number (1 through 6) *\v(tcpip_status) Status of current TCP/IP session *\v(space) Free space on current disk, bytes \v(speed) Current SET SPEED setting *\v(startup) Disk:\Directory\ from which Kermit was started \v(status) Status of most recent command, 0 = success *\v(sysid) System identification in Kermit packets (U8) \v(system) MS-DOS \v(tcp_status) TCP connection status \v(terminal) Current SET TERMINAL TYPE setting \v(time) Current time \v(ntime) Current time, numeric (seconds since midnight) \v(version) MS-DOS Kermit numeric version number, e.g. 314 Note: \v(ndate) and \v(ntime) are suitable for construction of filenames. New or changed commands: ASK[Q] prompt Modified to retain the response string literally rather than expand embedded substitution variables (version 3.14). APC text Sends text string (Kermit commands to be executed on the other end) with prefix of ESC _ and postfix of ESC \ out the currently selected port. This is an Applications Program Command to receptive VT200 and above terminal emulators. C-Kermit 5A(190) and MS-DOS Kermit 3.13 and later understand APC sequences while in CONNECT mode. CD \ Now works in DOS 5.00 (previously DOS would object to the trailing backslash). Numerically named directories, such as CD \123 should be denoted with double slashes, as CD \\123, to prevent conversion to an internal binary number during command reading. v3.14. CHECK {TCP/IP, NETWORKS, GRAPHICS, TERMINALS} Tests if these conditional-build items are present in MS-DOS Kermit. Reports success or failure. GETC Like ASK, but reads a single character from the keyboard. v3.14. END [ [ ] ] Stops execution of the current macro or TAKE file and returns immediately to the level which invoked it, i.e. the next higher level. and are used as in the STOP command. v3.13. POP is a synonym for END. IF DIRECTORY Executes the if is the name of an existing directory. v3.14. IF INPATH filename Saves the resulting path, if the file were found, in variable \v(inpath). Command success or failure indication continues to work as before. v3.13. IF NEWER Executes the if is newer than . v3.14. IF NUMERIC Executes the if contains only digits. v3.14. IF < IF = IF > IF COUNT, IF NUMERIC, IF VERSION Now all work with 32-bit numbers, v3.14. IF [ NOT ] EXIST Succeeds if the given file exists, fails otherwise. IF [ NOT ] INPATH Succeeds if the given file can be found by normal DOS search rules, i.e. if it is in the current disk/directory, or in the DOS PATH, and if it succeeds, sets \v(inpath) to the path where the file was found. v3.14. INCREMENT [ ] Adds the , which must be a positive number (or a variable that evaluates to a positive number), to the value of the given variable. If the is not specified, then 1 is added. If the is not defined or has a non numeric value, the command fails and the value of the variable is not altered. As of v3.14, INCREMENT works with 32-bit numbers. DECREMENT [ ] Subtracts the , which must be a positive number (or a variable that evaluates to a positive number), from the value of the given variable. If the is not specified, then 1 is subtracted. If the is not defined or has a non numeric value, the command fails and the value of the variable is not altered. As of v3.14, works with 32-bit numbers. MPAUSE Like PAUSE, but pauses for the given number of milliseconds. v3.14. OUTPUT \L Sends a Long BREAK (1.5 sec) (v3.13). OUTPUT \B continues to send a regular BREAK (250 msec). On TELNET connections, both of these send a TELNET BREAK. READ No longer processes the data it reads; it is stored literally in the variable. v3.14. SET TAKE { ERROR, ECHO } { ON, OFF } SET MACRO ERROR { ON, OFF } Separate control of echoing and error handling in macros and TAKE files. ECHO ON means to echo commands as they are read from the file or macro definition. ERROR ON means to exit from the command file or macro definition if an error occurs; ERROR OFF means don't exit, continue processing (e.g. let errors be handled by IF FAILURE / IF SUCCESS). v3.14. SET MODEM [ ] Synonym for DEFINE _MODEM . v3.14. SET PROMPT now evaluated each time prompt is printed. So "SET PROMPT [\v(dir)] MS-Kermit>" always shows your current directory, "SET PROMPT \v(time)>" shows the current time, etc. v3.14. SLEEP { , } Like PAUSE, but does not sample the communications device. But it does sample the keyboard (like PAUSE) and wakes up if a key is pressed. v3.14. STOP [ [ ] ] Stops execution of the current macro or TAKE file and returns immediately to top command level. The and operands are new to v3.13. is a return code that can be tested by IF SUCCESS. It is also assigned to \v(status). Text is an optional message to be printed. Hidden script support commands, v3.14: _ASSIGN and _DEFINE These are the same as ASSIGN and DEFINE, except the destination macro name is subject to expansion of embedded substitution variables, as in "_define foo\%a this is a definition". FORWARD label Like GOTO except the label search starts at the current position and looks only forward rather than from the beginning as GOTO does. Failures pop up through the command stack, all searches are still only forward. (21) GENERAL COMMUNICATIONS SET CARRIER { ON, OFF } specifies treatment of Carrier Detect signal: OFF = ignore it. ON = require it at all times except during DIAL macro execution. SET STOP-BITS { 1, 2 } Set serial port stop-bits to 1 (default) or 2. 2 is hardly ever needed. v3.14. SET EXIT WARNING { ON, OFF } If you try to EXIT from Kermit while a connection (serial or network) appears to be active, Kermit warns you and gives you a chance to change your mind if SET EXIT WARNING is ON. If OFF, it just EXITs with no questions asked (as in v3.13 and earlier). v3.14. SET PORT SUPERLAT Support for Meridian Technology SuperLAT network interface. v3.14. TEST COMx Tests to see if COMx (x = 1..4) is present and usable. v3.14. (22) COMMAND PARSER Display of substitution variables and functions changed in v3.14. Now the original typing (or TAKE file content) is displayed without showing the replacement text. Character and word deletion thus operate on what is visible rather than on the underlying contents. This simplifies the presentation and makes it more intuitive. Context sensitive help, "?", extends to functions and variables nested within functions and variables. (23) TCP/IP NETWORKING See the networks sections in KERMIT.HLP, KERMIT.BWR, and NETWORKS\SETUP.DOC for additional information. New networking features since "Using MS-DOS Kermit", second edition, was published include: . Support for ODI, SLIP, and Novell SLIP_PPP drivers, support for Telebit PPP drivers. . Up to six simultaneous TCP/IP sessions. . TCP/IP fixes, speedups, and refinements (packet fragment reassembly, additional ICMP responses, user-selectable maximum segment size, tighter round trip timing estimation, much higher long-distance throughput, and ensuring the TCP PUSH bit is always set to help some older servers.) New commands: SET PORT BWTCP (v3.14) Make a TCP/IP connection using the Beame & Whiteside TCP/IP protocol stack. SET TCP ADDRESS TELEBIT-PPP (v3.14) Use Telebit's PPP ODI driver, and get my TCP address from there. Section PROTOCOL KERMIT of Novell's NET.CFG can hold a line such as MYIP below which will have the IP number filled in by the PPP driver: Protocol KERMIT bind telebit MYIP 123.123.123.2 < MYIP word to match ODIPPP < ODIPPP writes IP number Link Driver ODIPPP Frame PPP Protocol IPX 0 PPP Protocol IP 0800 PPP Protocol ARP 0806 PPP Protocol RARP 8035 PPP IPCP DYNAMIC "PROTOCOL KERMIT: MYIP:" < matches spelling above SET TCP/IP MSS (v3.14) Maximum TCP Segment Size, to override built-in defaults of 1046 bytes local and 536 bytes if routed (plus 40 bytes TCP and IP headers). This may be considered MTU (maximum transmission unit) but smarter because TCP informs the other side. Maximum size is 1460 bytes (1500 byte pkt). SET TCP/IP PACKET-DRIVER-INTERRUPT { , ODI } (v3.12) Normally Kermit searches from 0x60 to 0x7e for a packet driver. This command allows you to (a) specify a particular interrupt, in case you have more than one packet driver loaded, or (b) tell Kermit to skip the packet-driver interrupt search and use the ODI interface. Note: the ODI interface is used by default for TCP/IP connections if a packet driver cannot be found but an ODI driver can be found. . The ability to select a particular TCP port when making a connection: SET PORT TCP/IP [ ] The default TCP port number is 23, which is the TELNET protocol socket. You can specify any other port number except 25. Version 3.12. . New TCP/IP server mode accepts incoming TCP/IP connections (v3.12): SET PORT TCP/IP * [ ] If you specify asterisk (*) instead of an IP host name or address, MS-DOS Kermit waits for an incoming connection on the specified TCP port (23 by default). This connection is useful only when MS-DOS Kermit is in SERVER mode or, for chatting, CONNECT mode. It does not give clients a DOS command processor. . RFC 1395 BOOTP compliance allows MS-DOS Kermit to receive its fully qualified domain name from a BOOTP server. Also, MS-DOS Kermit's SHOW COMMUNICATIONS command now displays the IP address of the BOOTP server from which its TCP/IP parameters were received. . New commands to govern TELNET protocol: SET { TCP/IP == TELNET } (TCP/IP and TELNET are synonyms) SET TELNET TERM-TYPE Normally, MS-DOS Kermit sends its actual terminal-emulation type when the remote TELNET server asks for a terminal type report. But the remote computer might not support Kermit's current terminal type, or might know it by a different name. This command lets you specify a terminal-type name for Kermit to send instead of the normal one. SET TELNET NEWLINE-MODE { OFF, ON, RAW } During terminal emulation on a TCP/IP connection, MS-DOS Kermit follows the TELNET specification and transmits carriage and line feed (CRLF) whenever you type carriage return (the Enter key). If the remote TELNET server is confused by this, use SET TCP/IP NEWLINE-MODE OFF to make Kermit send CR and NUL rather than CR and LF, or RAW to send CR "bare". SET TELNET MODE { NVT-ASCII, BINARY } NVT-ASCII is the normal TELNET mode; you may also select BINARY if needed. Mode selection is effective only when starting a connection, and can be overriden by TELNET negotiations. SET TELNET DEBUG-OPTIONS { ON, OFF } = OFF In v3.14 you can display TELNET option negotiations on the screen capture them in screen dump or session log files, or print them, just like any other CONNECT-mode screen text. DEBUG-OPTIONS is useful for debugging misbehaving TELNET sessions. Refer to the TELNET RFCs, or a TCP/IP book, for an explanation of what they mean. . MS-DOS Kermit now replies to traceroute requests, handles ICMP redirects. . TELNET window (i.e. screen) size (NAWS) negotiation. When using Kermit's internal Telnet and the remote host has agreed to the TELNET option to receive screen dimensions each time the Kermit screen changes size, then Kermit sends the appropriate TELNET Option report. (24) MULTIPLE TCP/IP SESSIONS -- KERMIT'S TCP/IP SESSION MANAGER MS-DOS Kermit 3.13 and later support up to six simultaneous TCP/IP sessions. Each session is identified by a digit, 1 to 6. The commands are: SET PORT TCP [ ] Starts a new session and assigns it a session number, 1 to 6. In v3.14, command syntax was added to allow you to say whether a SET PORT TCP command should continue an existing session or start a new session, so now it's possible to have multiple sessions to the same host: SET PORT TCP/IP [ NEW ] Starts a new session to the given host, even if there is an existing session to that same host. NEW is the default. SET PORT TCP/IP RESUME Resumes a current session on the given host. SET PORT TCP/IP Resumes a current session whose session identification is 1..6. Use SHOW SESSION to see which session numbers are defined. \v(session) This variable contains the current TCP/IP session number, 1 to 6. \KnextSession New CONNECT-mode keyboard verb to toggle instantaneously among active TCP/IP sessions, round-robin style. Alt-n This is the default key assignment for the \KnextSession verb. SHOW SESSIONS Displays current sessions. DEFINE SESSION1 Defines a macro to be executed when switching to session 1. SESSION2 is for session 2, and so on, through SESSION6. The terminal-emulation status line shows current session number and name. Most communication- and terminal-related settings are preserved for each session, including the last terminal screen, the key map, the terminal type, echoing, etc. Use the SESSIONn macros to take care of any items that are not preserved. The screen rollback buffer is common to all sessions. Suppose you normally access two TCP/IP hosts, a DEC VMS and a Data General AOS/VS system, and you would like to keep sessions to both alive at once. Alt-n switches between them instantaneously, and you can also define convenient macros for use at the command prompt or in script programs, such as the following, which make the initial connection to each host, and then redefine themselves to continue the same session thereafter: define vax - telnet vax 23 vt320,- if success assign vax telnet \v(session) define dg - telnet dg 23 d463,- if success assign dg telnet \v(session) (TELNET is a macro defined in the MS-DOS Kermit MSCUSTOM.INI file. See KERMIT.HLP for more information.) When a connection is closed, the port number is lost. So if you had a TCP/IP session to a non-TELNET port (i.e. not 23), and it was closed, and you continue the session, it will connect to port 23 rather than to the session's previous port. (25) SMALL MEMORY-SIZE EDITIONS A special "medium" edition of MS-DOS Kermit v3.14 shrinks the program executable from about 262KB to 181KB (before packing; see next paragraph) by removing all networking support and graphics terminal emulation. A "lite" edition removes all terminal emulation and networking support, and so communication is possible only in remote mode (e.g. on a BBS), or via script programs. The size is about 121KB. Features omitted are displayed on the startup herald and are also CHECK-able with the CHECK command. Lite editions require separate patch files. In version 3.14, Kermit executables are built (for the first time) with the "pack" linker option, which shrinks the size of the .EXE file. Normal Packed Savings Full 262K 228K 34K Medium 181K 158K 23K Lite 121K 103K 18K (26) BBS OPERATORS GUIDE Most BBSs today either lack support for Kermit protocol, or supply a poor implementation. Now BBSs can use the Real Thing, MS-DOS Kermit itself, as an external protocol. "Kermit Lite" is a tiny but full-featured Kermit protocol and script execution engine. Why add or upgrade Kermit file transfer? 1. Make your BBS accessible to Kermit software programs, which do not include support for other protocols. Recent releases of MS-DOS and OS/2 C-Kermit include ANSI terminal emulation, favored by BBSs. 2. Kermit file transfer is (at least arguably) more robust than other protocols used on BBSs. That is, it works better when connections are noisy. And, properly implemented and configured, it is just as fast or faster than other protocols. 3. Kermit protocol survives 7-bit connections; most other protocols do not. This is important when callers arrive over public data networks and other non-direct paths. 4. Kermit protocol can be used by Internet-accessible BBSs and other services. It works well over TELNET connections, even 7-bit ones, and Kermit TELNET clients are available for most popular operating systems: DOS, Windows, OS/2, UNIX, VMS, etc. 5. Only Kermit protocol is capable of converting from one text character set to another during text-file transfer: This is vital as the BBS world becomes more international, and the BBS client hardware more heterogeneous. Remember: Not all computers use IBM Code Pages to to represent non-English text! 6. MS-DOS Kermit can "autoconfigure" callers for maximum performance, and can initiate "autoupload" and "autodownload" operations without user intervention, provided the client software is MS-DOS Kermit 3.13 or later, or C-Kermit 5A(190) or later for UNIX, OS/2, or VMS. Follow the instructions that come with your BBS software for installing external protocols. Generally, you must disable the internal Kermit protocol, if there is one. For example, set the security level of the internal Kermit to "sysop", or at least out of reach of the normal caller. Then add Kermit as an external protocol. This typically involves assigning a command letter to the protocol and defining two MS-DOS batch files to be executed for uploads and downloads, respectively. (26.1) USING PORTS AND DRIVERS MS-DOS Kermit operates over existing drivers and over existing settings of standard serial ports. It leaves modem signal DTR asserted (high) when it exits so a connection can persist beyond Kermit's use of the line. It uses the existing port speed unless instructed otherwise, and it expects the port to configured for 8 bits no parity (parity is handled internally by software). If the communications hardware employs parity in hardware then tell Kermit to use the same parity (command SET PARITY). Fossil drivers (see Section 2 above) can be used by telling Kermit to SET PORT FOSSIL n, where n is the Fossil port number (1 to 99). This enables efficient block-mode i/o with the fossil driver. Speed and flow control must be set in the fossil driver, not in Kermit. You can also use SET PORT BIOSn, n=1-4; less efficient, but might work if SET PORT FOSSIL does not. If the hardware ports are accessed via SET PORT COM1 or SET PORT 1 then the fossil driver might or might not survive; please be careful. Of course, you can also use Kermit's built-in COM port driver via SET PORT COM1 thru COM4; this method will be fastest of all, but is limited to standard COM ports. Non-standard serial port hardware and IRQs for COM1 to 4 are stated to Kermit with command SET COMn , where again n=1-4. COM ports above 4 (e.g. on Digiboards) can be accessed via Fossil drivers or by other tricks (see KERMIT.BWR). (26.2) GENERAL SETUP Kermit commands appearing in the BBS's MSKERMIT.INI file might be: SET PARITY NONE ; Usually no parity on BBS SET BLOCK 3 ; CRC checking for security SET RECEIVE PACKET 2000 ; Long packets from client, upper limit SET WINDOW 4 ; Sliding windows, upper limit SET FILE TYPE BINARY ; Fine for all DOS to DOS transfers(*) SET CONTROL UNPREFIX ALL ; Unprefix all control characters except... SET CON P 0 1 3 13 17 19 129 131 141 145 147 SET RECEIVE PATH OFF ; Restrict uploads to current directory SET FILE COLL OVERWRITE ; Incoming files overwrite old files of same name SET CARRIER ON ; Recover from hangups immediately SET FILE DISPLAY QUIET ; No file transfer display SET BELL OFF ; Be quiet SET EXIT WARNING OFF ; Unattended, don't ask for permission to exit LOG TRANSACTION ; Log transfers to TRANSACT.LOG if desired(**) DEFINE BSEND SET FILE TYPE BINARY, SEND \%1 ; Use macros for command DEFINE TSEND SET FILE TYPE TEXT, SEND \%1 ; line brevity... (*) Unless character-set translation is needed. (**) Or specify a different filename; generate a unique one using \v(ndate) and \v(ntime). The MSKERMIT.INI settings can be overriden on the Kermit command line as illustrated below. The BBS software should invoke MS-DOS Kermit with "command-line arguments", i.e. commands to be executed, given on the same line as the "kermit" command. Multiple commands can be separated by commas. Kermit will execute the commands and then exit automatically when done. WARNING: There is a limit to how long a command line can be, usually about 127. If you need to issue more commands than will fit on the command line, simply collect them into a file, and then invoke Kermit with a TAKE command for that file. Communication parameters should be given on the Kermit command line for each session, along with the file transfer commands. The initialization file is read and executed, then the command line material is executed, and finally Kermit exits when done. Examples (note the use of BSEND and TSEND macros): kermit set port fossil 17, bsend foo.zip kermit set port 2, set speed 57600, set flow rts/cts, bsend bar.zip kermit set com3 \x3e8 5, set por 3, set flow rts/cts, set sp 57, bs baz.zip kermit set port bios1, tsend oofa.txt Real Kermit software, including MS-DOS Kermit 3.13 and later and C-Kermit 5A(190) and later (OS/2, UNIX, and VMS versions), when used to dial up a BBS, can be configured automatically by the BBS software provided the caller has "set terminal apc on" to enable this feature. The BBS software can then set the optimal file transfer parameters in calling Kermit program, and also initiate up- and downloads automatically. Read section 10, THE APC ESCAPE SEQUENCE, in this document. For example: kermit -f download.scr, set file type , send where DOWNLOAD.SCR might look like this: SET BLOCK 3 ; etc etc, as above APC SET WINDOW 4, SET REC PACK 2000, RECEIVE (26.3) FILE TRANSFER When MS-DOS Kermit is to receive files, it can be invoked in several ways. The transfer mode (text or binary) is determined by the file sender, unless it is an extremely primitive Kermit implementation that does not support attribute (A) packets (in which it must be given an explicit SET FILE TYPE command first): 1. Receive a file or files, and store them according to the name they come with; if the incoming name includes a disk letter or directory name, use them when storing the file: kermit set receive pathnames on, receive 2. Receive files, store them with the name they were sent with, but in the current directory: kermit set receive pathnames off, receive 3. Receive files, store them under their own names, but in the TEMP directory on the D disk: kermit receive d:\temp 4. Receive a file, store it with the name "oofa.txt" in the current directory, no matter what name it was sent with: kermit receive oofa.txt 5. Receive a file, store it as d:\uploads\abc.xyz, no matter what name it was sent with: kermit receive d:\uploads\abc.xyz When MS-DOS Kermit is to send files, it can be given the name(s) of the file(s) to send in several ways. In this case, Kermit should be told what mode, text or binary, in which to send the file. The default mode is text, but since the MSKERMIT.INI file might have changed the default, it is best to be explicit about it. 1. A single filename on the command line, as in these examples: kermit set file type text, send oofa.txt kermit set file type binary, send oofa.zip kermit set file type binary, send d:\zips\oofa.zip or, using the BSEND and TSEND macros (defined above) for brevity: kermit set tsend oofa.txt kermit set bsend oofa.zip kermit set bsend d:\zips\oofa.zip 2. A DOS-format wildcard specification on the command line, as in: kermit tsend *.txt kermit bsend *.zip 3. An indirect file specification, denoted by "@" as the first letter in the filename, in which the named file contains a list of the names of the files to be sent: kermit set file type text, send @files.lst The list of filenames can contain one filename per line, or it can contain a comma-separated list of names, or any mixture of the two. Filenames can contain disk letters, directory names, and DOS-format wildcards. 4. Any other way you can think of, such as telling Kermit to execute a command file: kermit take download.scr Kermits negotiate operating modes to find the greatest common denominator. The sending Kermit makes the initial offer and the receiver responds. Thus the BBS operator should place upper limits on packet length, sliding window slots, and so on which suit the highest-performance clients and still let the client negotiate operating conditions within those limits. We recommend long packets, say 2000 bytes each, and four window slots as efficient parameters; this consumes 8KB of file buffer memory (allocated dynamically from DOS for each file transfer). For most PC-based BBSs a default setting of SET FILE TYPE BINARY is suitable because the transfers are between like file systems (DOS to DOS). File transfer operations may be logged to a file with the command LOG TRANSACTION (by default, the file is called TRANSACT.LOG). Uploads can be restricted to the current directory using SET RECEIVE PATHNAMES OFF. This is the default for KERLITE.EXE, but for larger versions (those with terminal emulators) the default is ON. To increase throughput to the last bit per second you may unprefix selected control codes via the SET PREFIX command. Kermit will not unprefix XON/XOFF codes if they are used for flow control, though we do recommend hardware flow control (RTS/CTS) for best efficiency. Beware that many intervening communications boxes may not pass all control codes, and which codes are fatal is not testable from the outside. The biggest gain from unprefixing control codes is usually seen with pre-compressed files, and that gain is about 25% (which is the proportion of control to printable bytes in a random mixture). APPENDIX I: NEW TERMINAL EMULATIONS - TECHNICAL SUMMARY DEC VT, Heath, and Tektronix terminal emulation specifications are given in Appendix II of "Using MS-DOS Kermit". The following sections briefly specify Kermit's ANSI, Data General, and Wyse emulations. I.1. ANSI TERMINAL EMULATION ANSI terminal emulation is a VT100 subset but with: . SET TERMINAL CHARACTER-SET TRANSPARENT, with PC code page 437 is used transparently, favored by BBSs. . The cursor goes to the home (upper left corner) after an erase in display operation (ESC [ Pn J). . Ctrl-L is treated as "home and clear screen". . Ctrl-N (normally Shift-Out) is ignored. . Host queries about terminal are answered as if a VT100. . The initial screen coloring is forced to be dim white on black. . The terminal status line shows terminal type ANSI. I.2. DATA GENERAL DASHER TERMINAL EMULATION Items marked with a * are not implemented in MS-DOS Kermit. XON/XOFF flow control should be set to outgoing only or none or RTS/CTS because Ctrl-Q/S are used as D463/D470 commands. Special D463/D470 Kermit command: SET TERMINAL COMPRESSED-TEXT {GRAPHICS, TEXT-132} The default is GRAPHICS, meaning compressed font characters are drawn as 5x14 dot pattern cells in IBM PC graphics mode, simulating a text screen. The compressed font used in Graphics mode is Code Page CP437 or CP850. TEXT-132 means switch to 132-column EGA/VGA text mode and show all text with that font, which only works if your graphics adapter supports this mode. Graphics is way slower than text and only 128 character cells are available across the screen (640 dots / 128 yields 5 dots per character cell including a separation dot). If text is commanded and the display adapter cannot be switched to 132 column mode, graphics is used instead. Compressed fonts are available only on EGA/VGA adapters and above, not on Mono, CGA, or Hercules. Note on line drawing, RS L and the RS G series of commands: the drawing remains intact as long as the graphics screen is viewed. It is not preserved if the user returns to the Kermit prompt or switches to the text screen (the ALT - key, keyboard verb \ktermtype): the basic screen is first drawn from the text screen and then line drawing dots are superimposed. Leaving this screen means the text screen could change and thus a fresh version of it will always overwrite the existing material. The line drawings are not preserved separately from the underlying simulated text screen. The Data General CEO_DRAW program provides a REFRESH command to restore graphics images. A D463 terminal is a monochrome high-resolution text and graphics terminal, a D470 is a similar full-color terminal. The D470 has fewer screen dots than the D463 and uses a smaller graphics crosshair. A D463 graphics screen is 800 dots across by 576 high, a D470 graphic screen is 640 across by 480 high with 16 colors. Aside from a few status reports and the graphics details both terminals use the same core emulator. VTxxx submode is not supported on either terminal; please use Kermit's VT320 instead. When the display adapter is in graphics mode character fonts are sought from the display adapter and, when Code Pages are active, from the DOS Code Page file EGA.SYS. Normal-width characters can be drawn from that file, but compressed characters will be shown from a CP850 font if the current Code Page is other than CP437. The DOS file EGA.SYS must be in the current directory on along the PATH. CGA, monochrome, and Hercules video display adapters cannot use Code Pages; only EGA/VGA and above can. Special codes sent by DG keyboard function keys, not preassigned to PC keys DG Key name Kermit Verb D463/D470 Data General native mode prefix second character F1..F15 dgF1..dgF15 RS q,r,s,t,u, v,w,x,y,z, {,|,},~,p shift F1..F15 dgSF1..dgSf15 RS a,b,c,d,e, f,g,h,i,j, k,l,m,n,` control F1..F15 none RS 1,2,3,4,5, 6,7,8,9,:, ;,<,=,>,0 ctrl-shft F1..F15 none RS !,",#,$,%, &,',(,),*, +,comma,-,., C1..C4 dgC1..dgC4 RS \,],^,_ shift C1..C4 none RS X,Y,Z,[ Uparrow uparr Control-W Rightarrow rtarr Control-X Leftarrow lfarr Control-Y Downarrow dnarr Control-Z Home none Control-H shift Uparrow none RS Control-W shift Rightarrow none RS Control-X shift Leftarrow none RS Control-Y shift Downarrow none RS Control-Z shift Home none RS Control-H Erase EOL none Control-K Erase Page none Control-L Cmd-Print none RS Control-U shift Cmd-Print none RS Control-A POINT dgPoint Full graphics cursor position report SPCL dgSPCL none, used as prefix for compounds NC dgNC none, toggles screen between Normal and Compress fonts, same as if the host sent RS F J or RS F K. The mouse: When Kermit is in graphics mode, a Microsoft-compatible mouse may be used to control the graphics crosshair. The left mouse button sends the POINT command, and the right button sends the dgF1 keyboard verb. The DG F1 key frequently means "execute" to many utilities. On DG keyboards POINT is the key combination CMD CURSOR-TYPE. RECEIVED CODES AND ACTIONS Note: is the lower four bits of a byte, is the lower four bits of two consecutive bytes as high- then low-order portions of an 8-bit result. Such input bytes may have anything in the upper four bits. Control Seq Hex Description of Action Control-@ 00h Used as data within a command Control-A 01h Print form. Only bold characters in current window at cursor row and below, followed by sending a Control-F character to the host. Control-B 02h Reverse video off Control-C 03h Blink enable, affects only new chars in Kermit Control-D 04h Blink disable, affects only new chars Control-E 05h Read window address Report is Control-_ in binary Control-G 07h Bell Control-H 08h Window home, go upper left corner of window Control-I 09h Tab horizontally Control-J 0Ah Newline, can scroll window if Roll Mode is on, else cursor wraps to upper left corner (Home). Landing on a protected character yields a cursor right operation. Control-K 0Bh Erase cursor to end of line (stops on first protected mode character) Control-L 0Ch Erase window, cursor to window home Control-M 0Dh Carriage return. Go to left margin. If that character is protected then a cursor right is performed. Control-N 0Eh Blink on Control-O 0Fh Blink off Control-P 10h Write window address, 255 is do not change. Addresses are in unencoded binary. Control-Q 11h Print window. All characters in current window at cursor row and below, followed by sending a Control-F character to the host. Control-R 12h Roll Mode enable (default) Control-S 13h Roll Mode disable Control-T 14h Underscore on Control-U 15h Underscore off Control-V 16h Reverse video on Control-W 17h Cursor up. Wraps top to bottom in the window. Landing on a protected character yields a cursor left operation. Control-X 18h Cursor right. End of line wrap executes New Line. Landing on a protected character repeats the cursor right command (stops at start). Control-Y 19h Cursor left. Start of line wrap executes a cursor up at right margin. Repeats if a protected mode character is encountered, and stops at starting point if looping. Control-Z 1Ah Cursor down, one line, same column. Wraps in window bottom to top, landing on a protected character yields a cursor right. Control-[ 1Bh Escape char Control-\ 1Ch Dim on Control-] 1Dh Dim off Control-^ 1Eh DG escape char (ASCII name RS) Control-_ 1Fh Used as data within a command DG Escape Seq Description of Action RS A Set foreground color (D470). A D463 uses this only for polygon fill. Kermit uses D470 style. is a color code whose 4 lower bits mean: 0 = black, 1..8 = bold blue, green, cyan, red, magenta, yellow, white, respectively, and 9 = dark grey, 10..16 = dim versions of above. RS B Set background color (D470). As above RS C Read model id Report is RS o # is ASCII 6 (D463/D413) or 44 decimal (D470) is 010CP000 binary byte C = 0 if 7 bit, = 1 if 8 bit comms P = 0 if not, = 1 if printer is available is 0101LLLL binary byte LLLL is keyboard nationality 0010 Norwegian 0011 Swiss/French (French in Kermit) 0100 Swiss/German (Swiss in Kermit) 1010 French-Canadian 0110 Katakana (not implemented in Kermit) 1000 French-Canadian 1001 US English 1010 United Kingdom 1011 French 1100 German 1101 Swedish/Finnish 1110 Spanish 1111 Danish/Norwegian RS D Reverse video on RS E Reverse video off RS H Scroll up RS I Scroll down RS J Insert character RS K Delete character RS F 7 *Select printer NRC RS F 8 *Display char generator contents, diagnostics RS F 9 Fill screen with grid, diagnostics RS F ? 0 Simulprint off (print and display together) RS F ? 1 Simulprint on (print and display together) RS F ? 2 Print pass through off (transparent printing) RS F ? 3 Print pass through on (transparent printing) RS F ? 5 *Window bit dump RS F ? 6 *Form bit dump RS F ? 7 VT style autoprint off (whole line printing) RS F ? 8 VT style autoprint on (whole line printing) RS F ? : Print Screen. All characters on the screen, followed by sending a Control-F character to the host. RS F ; *Data trap mode, debugging (use SET DEBUG ON) RS F < *Perform UART loopback, diagnostics RS F > Fill screen with character, diagnostics RS F A Reset the terminal emulator RS F B .. Set Windows (each is full width of screen and each scrolls h/v independently) number of lines in window (24 == full screen) =0/1 normal/compressed (compress=graphics fake-text or 132 columns, user selectable, in Kermit) Command ends on 24 lines or on <00>. Screen is auto centered. Cursor to screen home. RS F C Scroll left columns (if Horiz scroll is enabled) RS F D Scroll right columns (ditto) RS F E Erase screen, cursor to screen home, window settings are preserved. RS F F Erase unprotected characters from the cursor position to the end of the window. RS F G Screen home, go to upper left corner of screen. Landing on a protected character yields a cursor right operation. RS F H Insert line, text moves down in window RS F I Delete line, text moves up in window. If the cursor is on a protected character a cursor right command is executed. RS F J Select normal spacing (80 column mode) RS F K Select compressed spacing (132 column mode) RS F L Protect on, applies to chars until Protect off, RS F M Protect off RS F N Change attributes in current window number of chars to change, starting at cursor attributes to set bit 3 dim bit 2 reverse video bit 1 underscore bit 0 blink attributes to reset, as above Both set and reset means toggle. RS F O Read horizontal scroll offset Report is RS o : where is window horizontal scroll value (columns) RS F P Write screen attributes absolute screen column for cursor absolute screen row for cursor RS F Q Set cursor type cursor type 0 disable/hide, and save current 1 blinking 2 reverse video block (PC cursors always blink) 3 blinking reverse video block 4 underscore 5 display cursor with saved attributes RS F R
..
*Define character, 12 or 10
items, 10x12 cell for D463, 8x10 for D470. RS F S Select Character Set character set 00 keyboard language 01 US ASCII 02 UK ASCII (sharp sign # relaced by Pound Sterling) 03 NRC French 04 NRC German 05 NRC Swedish/Finnish 06 NRC Spanish 07 NRC Danish/Norwegian 08 NRC Swiss 09 NRC Kata Kana (G0) not supported in Kermit 0E DG International 0F Kata Kana (G1) not supported in Kermit 11 Line Drawing 13 DG Special Graphics (CP437 GR) 14 DEC Multinational 15 DEC Special Graphics (line drawing) 1D Low PC Term (CP437 GL) 1E High PC Term (CP437 GR) 1F Latin1 (ISO 8859-1) 20 et seq soft fonts not supported in Kermit RS F T *Set scroll rate 0 disable smooth scroll 1 enable smooth scroll at 5 rows/sec 2 enable smooth scroll at 10 rows/sec RS F U Select 7/8 bit operation , 0 = 7-bits, 1 = 8-bits in and out RS F V Protect enable, permit protect on/off to work RS F W Protect disable RS F X Set margins , first is left margin, second is right margin both in the range of 0 to 206, inclusive. Screen may be scrolled to make both margins visible (left margin dominates). Cursor moves to left margin. RS F Y Set alternate margins, relative to current row to place cursor on, 0..24, wrt window top. column of new left margin, wrt permanent left. column of new right margin, wrt new left. 255 value means do not change Disables horizontal scrolling RS F Z Restore normal margins, removes alt margins, reenables horizontal scrolling RS F ] Horizontal scroll disable RS F \ Delete line between margins (push up) RS F [ Insert line between margins (push up) RS F ^ Horizontal scroll enable (default) RS F _ Show columns (align window l/r to show text) left most col to display, 0..206 right most col to display, 0..206 Screen may be scrolled to make both margins visible (left margin dominates). RS F ` Print Pass Through on (not transparent print) RS F a Print Pass Through off RS F b Read screen address (cursor position) Report is RS o 8 for col,row RS F c *Set color map, D470. Use Kermit command Set Terminal Color. RS F d Read characters remining Report is RS o 9 (binary) Always zero remaining in Kermit RS F e Reserve character (no action in Kermit, none is needed.) RS F f Set keyboard language 0 set language to default (National) 1 set language to GL=ASCII, GR=DG International 2 set language to GL=ASCII, GR=Latin1 ISO 8859.1 RS F h *Push RS F i *Pop RS F k *Host programmable function keys RS F m 0 *Read cursor contents, diagnostics RS F m 4 *Character loopback, diagnostics RS F m 5 *Hot key switch, dual emulation RS F m 6 *Read bit contents, diagnostics RS F r