home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 3 Comm / 03-Comm.zip / ck190b.zip / CKERMIT.UPD < prev    next >
Text File  |  1994-08-24  |  230KB  |  4,828 lines

  1. File CKERMIT.UPD, Supplement to "Using C-Kermit" for OS/2          -*- text -*-
  2.  
  3.  - D - R - A - F - T -
  4.  
  5. As of version:      5A(190) BETA.18
  6. This file updated:  Sun Aug 21 19:50:01 1994
  7.  
  8. Authors: Frank da Cruz and Christine M. Gianone
  9. Address: Watson Laboratory, Columbia University Academic Information Systems,
  10.          612 West 115th Street, New York, NY 10025-7221, USA.
  11. Phone:   +1 212 854-5126
  12. Fax:     +1 212 662-6442  -- or --  +1 212 663-8202
  13. E-Mail:  kermit@columbia.edu (Internet), KERMIT@CUVMA (BITNET/EARN/CREN)
  14. And:     Jeffrey Altman
  15.          Altmania Productions
  16.          Great Neck, NY
  17.  
  18.   Copyright (C) 1985, 1994, Trustees of Columbia University in the City of New
  19.   York.  The C-Kermit software may not be, in whole or in part, licensed or
  20.   sold for profit as a software product itself, nor may it be included in or
  21.   distributed with commercial products or otherwise distributed by commercial
  22.   concerns to their clients or customers without written permission of the
  23.   Office of Kermit Development and Distribution, Columbia University.  This
  24.   copyright notice must not be removed, altered, or obscured.
  25.  
  26. ------------------------------
  27. WHAT IS IN THIS FILE
  28.  
  29. This file describes the changes made to C-Kermit since version 5A(188) was
  30. released and the first edition of the book "Using C-Kermit" was published to
  31. accompany it in early 1993.  Also incorporated are numerous hints & tips and
  32. questions & answers arising from years of help-desk experience.
  33.  
  34. ------------------------------
  35. CONTENTS
  36.  
  37.  I.  C-KERMIT DOCUMENTATION: Information about the C-Kermit manual.
  38.  
  39.  II. NEW FEATURES: Documentation for features added since 5A(188).
  40.  
  41.      (0) INSTALLATION AND OVERVIEW
  42.      (1) PROGRAM MANAGEMENT
  43.          1.1. Command Retry, Recall, and Typeahead
  44.          1.2. The System-Wide Initialization File
  45.          1.3. The SET EXIT Command
  46.          1.4. OS/2 C-Kermit Command Parsing Improvements
  47.          1.4. OS/2 C-Kermit DIRECTORY Command Improvements:
  48.      (2) MAKING AND USING CONNECTIONS
  49.          2.1. Using the Services Directory
  50.          2.2. Using Serial Communication Ports
  51.      (3) TERMINAL EMULATION
  52.          3.1. Auto Up- and Download
  53.          3.2. The CONNECT Command
  54.          3.3. The SET KEY Command
  55.          3.4. The SET TERMINAL Command
  56.          3.5. Using the Mouse
  57.          3.6. Printing While in CONNECT Mode
  58.          3.7. VT220 Emulation
  59.          3.8. ANSI Terminal Emulation
  60.          3.9. Hebrew Terminal Emulation
  61.         3.10. Screen Rollback
  62.         3.11. Other Terminal Emulation Changes
  63.         3.12. Terminal Emulation Frequently Asked Questions
  64.         3.13. Terminal Emulation Hints, Tips, and Cautions
  65.      (4) FILE TRANSFER
  66.          4.1. File Transfer Recovery
  67.          4.1.1. The RESEND Command
  68.          4.1.2. Manual Recovery: The PSEND Command
  69.          4.2. Control-Character Unprefixing
  70.          4.3. Keyboard Cancellation of Packet Mode
  71.          4.4. New RECEIVE Command Features
  72.          4.5. Automatic Directory Creation
  73.          4.6. Pausing Between Packets
  74.          4.7. Fullscreen File Transfer Display Improvements
  75.          4.7.1. Thermometer
  76.          4.7.2. Repainting the Screen
  77.          4.8. Transferring OS/2 Files with All of Their Attributes Intact
  78.          4.9. Transferring OS/2 Directory Trees
  79.         4.10. File Transfer Hints and Tips
  80.      (5) NEW CLIENT/SERVER FEATURES
  81.          5.1. New REMOTE Commands
  82.          5.2. "WHATAMI" -- Making Kermit GET more like FTP GET
  83.      (6) INTERNATIONAL CHARACTER SETS
  84.          6.1. Hebrew File Transfer
  85.          6.2. Hebrew Terminal Emulation
  86.          6.3. The Hewlett Packard Roman8 Character Set
  87.      (7) SCRIPT PROGRAMMING
  88.          7.1. New IF Commands
  89.          7.2. New \v() Variables
  90.          7.3. New \f() functions
  91.          7.4. INPUT and OUTPUT Command Improvements
  92.          7.5. The New MINPUT Command
  93.          7.6. Other New or Improved Script Programming Commands
  94.          7.8. The REXX Interface
  95.      (8) EXTERNAL PROTOCOLS
  96.          8.1. The REDIRECT Command
  97.          8.2. New Macros
  98.      (9) NEW COMMAND-LINE OPTIONS
  99.     (10) NETWORK COMMUNICATIONS
  100.         10.1. TCP/IP Networking
  101.         10.2. Using Named Pipes
  102.         10.3. Using NETBIOS
  103.         10.4. Using DECnet PATHWORKS
  104.         10.5. Using Asynchronous Communication Servers
  105.         10.6. OS/2 C-Kermit Networking Hints and Tips
  106.     (11) REMOTE ACCESS
  107.     (12) OS/2 C-KERMIT WISH LIST
  108.     (13) HINTS, TIPS, AND CAUTIONS
  109.         13.1. Performance
  110.         13.2. OS/2 Devices, Files, and Shells
  111.         13.3. The Deep Freeze
  112.         13.4. Modems and Dialing
  113.  
  114.  IV. ERRATA & CORRIGENDA
  115.  
  116. ------------------------------
  117. I. C-KERMIT DOCUMENTATION
  118.  
  119. The user manual for C-Kermit is:
  120.  
  121.   Frank da Cruz and Christine M. Gianone, "Using C-Kermit", Digital Press /
  122.   Butterworth-Heinemann, Woburn, MA, 1993, 514 pages, ISBN 1-55558-108-0
  123.  
  124.   US single-copy price: $34.95; quantity discounts available.  Available in
  125.   computer bookstores or directly from Columbia University:
  126.  
  127.     Kermit Development and Distribution
  128.     Columbia University Academic Information Systems
  129.     612 West 115th Street
  130.     New York, NY  10025  USA
  131.     Telephone: (USA) +1 212 854-3703
  132.  
  133.   Domestic and overseas orders accepted.  Price: $34.95 (US, Canada, and
  134.   Mexico), $45 elsewhere.  Orders may be paid by MasterCard or Visa, or
  135.   prepaid by check in US dollars.  Add $35 bank fee for checks not drawn on
  136.   a US bank.  Price includes shipping.  Do not include sales tax.
  137.   Inquire about quantity discounts.
  138.  
  139.   You can also order by phone from the publisher, Digital Press /
  140.   Butterworth-Heinemann, with MasterCard, Visa, or American Express:
  141.  
  142.     +1 800 366-2665 (Woburn, Massachusetts office for USA & Canada)
  143.     +44 993 58521   (Rushden, England office for Europe)
  144.     +61 02 372-5511 (Chatswood, NSW office for Australia & New Zealand)
  145.     +65 220-3684    (Singapore office for Asia)
  146.  
  147.   A German-language edition is also available:
  148.  
  149.     Frank da Cruz and Christine M. Gianone, "C-Kermit - Einfuehrung und
  150.     Referenz", Verlag Heinz Heise, Hannover, Germany (1994).
  151.     ISBN 3-88229-023-4.  Deutsch von Gisbert W. Selke.  Price: DM 90,00.  
  152.     Verlag Heinz Heise GmbH & Co. KG, Helstorfer Strasse 7, D-30625 Hannover.
  153.     Tel. +49 (05 11) 53 52-0, Fax. +49 (05 11) 53 53-1 29.
  154.  
  155. The Kermit file transfer protocol is specified in:
  156.  
  157.   Frank da Cruz, "Kermit, A File Transfer Protocol", Digital Press,
  158.   Bedford, MA, 1987, 379 pages, ISBN 0-932376-88-6.
  159.   US single-copy price: $29.95.  Availability as above.
  160.  
  161. News and articles about Kermit software and protocol are published
  162. periodically in the journal, Kermit News.  Subscriptions are free; contact
  163. Columbia University at the address above.
  164.  
  165. Online news about Kermit is published in the Kermit Digest and in the
  166. comp.protocols.kermit newsgroup.
  167.  
  168. ------------------------------
  169. II. NEW FEATURES
  170.  
  171. (0) INSTALLATION AND OVERVIEW
  172.  
  173. OS/2 C-Kermit 5A(190) is available in both 32-bit and 16-bit versions.  The
  174. 32-bit version is designed to take advantage of most OS/2 2.x features
  175. including:
  176.     
  177.  .  Multiple threads (6) for efficient task scheduling and low CPU load
  178.  .  Fast semaphores for intraprocess communication 
  179.  .  Extended attributes
  180.  .  VIO session mouse support
  181.  .  TCP/IP, NETBIOS, DecNET, and Named Pipes networking methods 
  182.  .  LAN Server remote modems
  183.  .  PM Clipboard
  184.  .  High Speed Asynchronus Communication Services
  185.  .  REXX Language Interface
  186.  
  187. Both the 16-bit and 32-bit versions support:
  188.  
  189.  .  HPFS
  190.  .  TCP/IP and DECnet networking methods 
  191.  .  And all of C-Kermit's file transfer, terminal emulation, script
  192.     programming, and character-set conversion features.
  193.  
  194. However, the 16-bit version lacks certain features of the 32-bit version due
  195. to architectural or compiler limitations: various printer operations, the REXX
  196. interface, SET FILE TYPE LABELED (OS/2 Extended Attribute) support, mouse
  197. support, Named Pipe support, NETBIOS networking, etc.
  198.  
  199. The 32-bit version should be used with OS/2 2.0 and above.  The 16-bit version
  200. is for use on OS/2 1.x systems or those running Microsoft Windows NT in OS/2
  201. compatibility mode.
  202.  
  203. C-Kermit should be installed by running the INSTALL.CMD REXX program.
  204. INSTALL.CMD installs the proper version of OS/2 C-Kermit for your system into
  205. the directory of your choice, configures the initialization files for the
  206. default values that you choose, and with your permission updates your
  207. CONFIG.SYS file by adding the C-Kermit directory to the PATH, LIBPATH, and
  208. DPATH lines.
  209.  
  210. To execute the install program, place the C-Kermit distribution diskette in
  211. the A: drive and then either click on the drive icon from the desktop or
  212. type "a:install" in an OS/2 command window.  (You can also use disk B:).
  213. Then simply follow the instructions on your screen.
  214.  
  215. To bypass the INSTALL procedure and install OS/2 C-Kermit manually, please
  216. read the installation instructions in the OS/2 Appendix of "Using C-Kermit".
  217.  
  218. (1) PROGRAM MANAGEMENT
  219.  
  220. 1.1. Command Retry, Recall, and Typeahead
  221.  
  222. These features apply only when you are typing commands at the C-Kermit>
  223. prompt, and not to command file or macro execution.  They were added in
  224. edit 190.
  225.  
  226. If you enter a command that contains a syntax error, C-Kermit now reprompts
  227. you automatically with the portion of the command that was correct, so you
  228. don't have to retype it.  Example:
  229.  
  230.   C-Kermit>set block-check oofa
  231.   ?No keywords match - oofa
  232.   C-Kermit>set block-check _
  233.  
  234. "_" shows the position of the cursor after you are reprompted.  At this
  235. point, you can type question mark (?) to find out what is legal here, or you
  236. can complete the command, or you can erase it with Ctrl-U, etc, just as if
  237. you had retyped the initial words yourself.  If you want to disable this
  238. feature, tell C-Kermit to:
  239.  
  240.   SET COMMAND RETRY OFF
  241.  
  242. As of edit 190, C-Kermit saves your commands in a command recall (history)
  243. buffer, which, by default, holds your last 10 commands.  To recall your
  244. previous command, press the Up-Arrow key or type Ctrl-B (that is, hold down
  245. the Control or Ctrl key and press the B or b key).  Type Up-Arrow (or Ctrl-B)
  246. again to recall the command before that, and so on.  If you try to go back too
  247. far, C-Kermit beeps at you.
  248.  
  249. Each time you recall a command, it appears before you as if you had typed it
  250. up to, but not including, the Enter (Carriage Return) that actually causes it
  251. to execute.  If you want to execute the command, press the Enter key.  If you
  252. want to edit it, use the editing keys, including Ctrl-U to erase it.
  253.  
  254. When you are viewing recalled commands, you can also go forwards in the
  255. command recall buffer by pressing the Down-Arrow key or typing Ctrl-N.  This
  256. is handy in case (for example) you went back too far.
  257.  
  258. You can change the size of the command recall buffer to hold any number of
  259. commands you like, subject to the memory limitations of your computer.  The
  260. command is:
  261.  
  262.   SET COMMAND RECALL-BUFFER-SIZE number
  263.  
  264. where "number" is the number of commands you want to keep.  The more you keep,
  265. the more memory C-Kermit uses.  If you enter a size of 0, the command recall
  266. feature is disabled.  Whenever you give the SET COMMAND RECALL-BUFFER-SIZE
  267. command, your previous command history is lost.  You can display the size of
  268. your command recall buffer, as well as your COMMAND RETRY setting, with
  269. SHOW COMMAND.
  270.  
  271.   CAUTION: Other versions of C-Kermit use Ctrl-P to go up in the command
  272.   buffer, but you should not use Ctrl-P in OS/2 because it is likely to
  273.   turn on your printer!  (An OS/2 feature.)
  274.  
  275. If you type Ctrl-P at the C-Kermit> prompt and nothing happens (no beep, no
  276. recalled command, but you hear some disk activity)), then type Ctrl-P once
  277. again to turn off the printer.
  278.  
  279. Typeahead is now permitted during entry of interactive commands.  Typeahead is
  280. not preserved, however, over execution of command files or macros, because
  281. these might themselves require keyboard input, or might enter CONNECT or file
  282. transfer protocol mode.
  283.  
  284. 1.2. The System-Wide Initialization File
  285.  
  286. This page intentionally left blank (does not apply to OS/2 C-Kermit).
  287.  
  288. 1.3. The SET EXIT Command
  289.  
  290. SET EXIT WARNING { ON, OFF } tells whether C-Kermit should issue a warning
  291. message and require confirmation if an EXIT command, or a SET LINE (SET PORT),
  292. SET HOST, or TELNET command is given and a connection (dialed or network)
  293. still appears to be open, since any of these commands would close the
  294. currently open connection.  The default is OFF, meaning no warnings.
  295.  
  296. If SET EXIT WARNING is ON, a warning is issued if a network connection appears
  297. to be open:
  298.  
  299.   C-Kermit>exit
  300.    A network connection to foo.bar.edu might still be active.
  301.   OK to exit?
  302.  
  303. at which point you can type Yes or No.
  304.  
  305. You will also get a warning if the serial SET LINE device has the carrier (CD,
  306. DCD) signal and C-Kermit has not been told to SET CARRIER OFF:
  307.  
  308.   C-Kermit>set line com2
  309.    A serial connection might still be active on com1
  310.   OK to close?
  311.  
  312. Note that not all versions of C-Kermit have access to the carrier signal; if
  313. your version of C-Kermit says "Modem signals not available" when you give a
  314. SHOW COMM command, then SET EXIT WARNING ON will always warn you about a
  315. possibly active serial connection when you try to exit after using a SET LINE
  316. (SET PORT) connection.
  317.  
  318. SET EXIT STATUS <number> tells C-Kermit to use the given number as its program
  319. exit (return) code.  This lets the user set program return code without
  320. actually having to exit; for example, the user can OR in various bits at
  321. different times.
  322.  
  323. Display the SET EXIT values with SHOW EXIT.  Edit 190.
  324.  
  325. 1.4. OS/2 C-Kermit Command Parsing Improvements
  326.  
  327. As of edit 190, it is possible to enter OS/2 and DOS file specifications in
  328. the natural way in most contexts, using backslash as the directory separator,
  329. for example:
  330.  
  331.   send c:\ckermit\ckermit.upd
  332.  
  333. This notation works in any command field where a file specification or a
  334. directory name is expected.  It does not ordinarily work in command fields
  335. that Kermit treats as ordinary text strings, as in the RUN command.  So, for
  336. example, while you can now type:
  337.  
  338.   delete \foo\x.x       ; (Kermit parses the filename)
  339.  
  340. You still must type:
  341.  
  342.   run del \\foo\\x.x    ; (This is just text that Kermit sends to OS/2)
  343.  
  344. However, if desired, you can temporarily turn off Kermit's processing of
  345. backslashes and question marks to allow these characters to be used naturally
  346. in any command, using the new SET COMMAND QUOTING { ON, OFF } command.  But as
  347. long as COMMAND QUOTING is ON, which is the normal situation, the rules are:
  348.  
  349.  1. When parsing the name of an existing file or directory, Kermit first
  350.     tries the literal string, and if it fails, then it evaluates the string
  351.     for backslash escapes and tries again.  For example, if you type:
  352.  
  353.       send c:\mupeen\oofa.txt
  354.  
  355.     and the file c:\mupeen\oofa.txt exists, Kermit will send it.  If you type:
  356.  
  357.       send c:\%a
  358.  
  359.     and a file named %A does not exist in the root directory of the C: disk,
  360.     Kermit will attempt to evaluate the \%a variable to obtain the name of
  361.     the file.  Affected commands include:
  362.  
  363.       CD, DELETE, DIRECTORY, IF [NOT] DIRECTORY, IF [NOT] EXIST,
  364.       IF [NOT] NEWER, MSEND, OPEN READ, PRINT, PSEND, RENAME, RESEND,
  365.       SEND, TAKE, TRANSLATE, TRANSMIT, TYPE
  366.  
  367.  2. When parsing the name of an output file, Kermit first prescans the
  368.     string to see if it contains any variable names, function calls, etc;
  369.     if so, it evaluates the string; if not, it takes the string literally.
  370.     For example, if you type:
  371.  
  372.       receive \%a
  373.  
  374.     Kermit will attempt to evaluate the variable \%a to obtain the filename,
  375.     rather than creating a file called %A in the root directory.  But if you
  376.     type:
  377.  
  378.       receive \letters\oofa.txt
  379.  
  380.     Kermit will take the backslashes literally and attempt to create the file
  381.     \letters\oofa.txt.  Affected commands include:
  382.  
  383.       multine GET, LOG, OPEN APPEND, OPEN WRITE, RECEIVE, RENAME,
  384.       TRANSLATE
  385.         
  386.  3. You can't mix single backslashes as directory separators and backslash
  387.     escapes in the same string.  If you want to include a directory
  388.     specification AND backslash escapes in the same string, the directory
  389.     separators must be either "/" or "\\", for example:
  390.  
  391.       send c:/ckermit/ckermit.\%a
  392.  
  393.     or:
  394.     
  395.       send c:\\ckermit\\ckermit.\%a
  396.  
  397.  4. You can't terminate a string with a single backslash, since that indicates
  398.     a line continuation; you must use either "/" or "\\".  For example, you
  399.     can't type:
  400.  
  401.       cd \
  402.  
  403.     but you can type:
  404.  
  405.       cd /
  406.     
  407.     or:
  408.  
  409.       cd \\
  410.  
  411.  5. You can avoid ambiguities by using "/" or "\\" as directory separators,
  412.     which is how you had to enter them before this change.  Thus this change
  413.     should be transparent to current users and existing scripts.
  414.  
  415. Exception: This change does not apply to the SET LINE / SET HOST / SET PORT
  416. command, so any backslashes that must be included in the port or host name
  417. must either be doubled or replaced by "forward" slashes.  For example, if you
  418. want to "set port \\server\modem", you must enter "set port //server/modem" or
  419. "set port \\\\server\\modem" (or "set port //server\\modem", or...)
  420.  
  421. Minutiae: So what if a file called \%A exists in the root directory, but you
  422. want to send the file whose name is stored in the variable \%A?  "send \%a"
  423. will send the former rather then the latter.  Well, you can always FORCE an
  424. item to be treated as a variable by using the \Fcontents() function: "send
  425. \fcontents(\%a)".
  426.  
  427. Here's another: single backslashes in a filename that is assigned to a
  428. variable won't behave as you might expect.  For example: "define \%a
  429. \letters\oofa.txt", "dir \%a".  The problem here is that \%a is evaluated
  430. recursively, and when the single backslashes are encountered in the first
  431. level evaluation, that triggers a second level, which destroys the string.
  432. Again, work around by using "/" or "\\".
  433.  
  434. Such problems will affect only the most advanced Kermit users (who should be
  435. able to cope with them) and are more than offset by the benefits to "ordinary"
  436. users.
  437.  
  438. SET COMMAND QUOTING { ON, OFF } gives you the ability to forget about these
  439. complicated rules.  When COMMAND QUOTING is OFF, you can enter OS/2 file and
  440. device names in the natural way, but you will not be able to get help by
  441. typing question-mark, nor enter variable names and so forth in commands (but
  442. backslash notation for control characters, e.g. "echo \7" for a beep, still
  443. works).  Examples:
  444.  
  445.   set command quoting off
  446.   send foo.bar c:\foo\bar\baz\oofa.txt
  447.   get d:\files\???.?
  448.   set command quoting on
  449.  
  450. instead of:
  451.  
  452.   send foo.bar c:\\foo\\bar\\baz\\oofa.txt
  453.   get d:\\files\\\?\?\?.\?
  454.  
  455. Or:
  456.  
  457.   set command quoting off
  458.   cd \
  459.   set port \\server\modem
  460.   directory e:\pictures\pic???.gif
  461.   set command quoting on
  462.  
  463. rather than:
  464.  
  465.   cd \\
  466.   set port \\\\server\\modem
  467.   directory e:\\pictures\\pic\?\?\?.gif
  468.   set command quoting on
  469.  
  470. 1.4. OS/2 C-Kermit DIRECTORY Command Improvements:
  471.  
  472. As of edit 190, the OS/2 C-Kermit DIRECTORY command, which works by asking the
  473. command shell specified in the COMSPEC environment variable to print a
  474. directory listing, has been improved to allow option switches and output
  475. redirection to be included.  The syntax is now:
  476.  
  477.   DIRECTORY [ filespec ] [ switches ] [ > file-or-device-name ]
  478.  
  479. The file specification (if any) must precede any switches, and a space or tab
  480. must separate the filespec from the switches.  If there is no file
  481. specification, then there can be no spaces in the switches or output
  482. redirection.  Examples:
  483.  
  484.   directory                  ; List all files in current directory
  485.   directory /p               ; List all files, pause between screens
  486.   directory >x.x             ; List all files to file x.x
  487.   directory /o-d>x.x         ; List all files by date to file x.x
  488.   directory a:               ; List all files on current directory of A: disk
  489.   directory a:\foo           ; List all files in FOO directory of A: disk
  490.   directory oofa             ; List all oofa files
  491.   directory oofa.*           ; List all oofa files
  492.   dir oofa.* /p              ; List all oofa files, pause between screens
  493.   dir oofa.* > prn           ; Print a listing of all oofa files
  494.   dir oofa.* /o-d > oofa.dir ; Chronological listing of oofa files to oofa.dir
  495.  
  496. (2) MAKING AND USING CONNECTIONS
  497.  
  498. 2.1. Using the Services Directory
  499.  
  500. In the original release of C-Kermit, 5A(188), the services directory feature
  501. was provided mainly as an illustration of how C-Kermit's script programming
  502. language can be used to build handy communications tools, and so it was not
  503. presented or explained until Chapter 13 of "Using C-Kermit", and therefore was
  504. probably missed by a lot of readers (and users).
  505.  
  506. Since then, the services directory feature has proven to be quite useful in
  507. its own right, and has also been improved in one small but important way.
  508. Here is a brief nontechnical explanation.
  509.  
  510. The services directory is a plain-text file in your Kermit directory,
  511. containing one line, or "entry", for each service that you want to access.
  512. Each service listed in your services directory can be connected to and logged
  513. in to automatically, no matter whether this involves dialing up a modem,
  514. making a network connection, or any other type of connection that C-Kermit can
  515. handle.  The name of the services directory file is CKERMIT.KSD.
  516.  
  517. The services directory can be used only if you are also using the standard
  518. C-Kermit initialization file.
  519.  
  520. Each line in the services directory has the following parts:
  521.  
  522.   <name-of-entry> <login-macro-name> <username> <connection-details>
  523.  
  524. For example:
  525.  
  526.   HP9000 unixlogin olga net tcp/ip hp.xyzcorp.com
  527.  
  528. where "HP9000" is the entry name, "unixlogin" is the login macro name,
  529. "olga" is the username, and "net tcp/ip hp.xyzcorp.com" are the connection
  530. details.
  531.  
  532. To use this entry, you would give the following command at the C-Kermit
  533. prompt:
  534.  
  535.   access hp9000
  536.  
  537. or:
  538.  
  539.   access hp9000 xxxxxx
  540.  
  541. where "xxxxxx" is your password on the computer you will be accessing.
  542. C-Kermit's ACCESS macro (defined in your C-Kermit initialization file) handles
  543. the connection details: "net" means it's a network connection; "tcp/ip" tells
  544. which type of network, and "hp.xyzcorp.com" tells the name or address (in this
  545. case, the name) of the computer or service on the network.  If you don't
  546. supply a password to the ACCESS command, you are prompted for it.  You do not
  547. (can not, and should not) include passwords in your services directory file.
  548.  
  549. Here's another example, in which the connection is made by dialing a modem:
  550.  
  551.   COMPUSERVE cislogin  765,4321  call hayes com1 2400 93,876-5432
  552.  
  553. Here, "COMPUSERVE" is the entry name, "cislogin" is the name of the login
  554. macro, "765,4321" is your CompuServe user ID, and the connection details are:
  555. "call hayes com1 2400 93,876-5432".  "Call" means we will be making a phone
  556. call; "hayes" tells which type of modem, "com1" is the name of the device that
  557. modem is connected to, "2400" tells the communication speed, and "93,876-5432"
  558. is the phone number to dial.
  559.  
  560. 2.1.1. Login Macros
  561.  
  562. Each login macro looks for the appropriate prompts from the host or service
  563. and responds accordingly with your username, password, and/or other
  564. information, and then waits until it sees the main prompt of the host or
  565. service, or other indication that you have been logged in successfully.
  566.  
  567. The following login macros are available in the standard C-Kermit
  568. initialization file, CKERMIT.INI:
  569.  
  570. UNIXLOGIN
  571.   For logging in to all types of UNIX systems: Solaris, HP-UX, Linux, IRIX,
  572.   DG/UX, NeXTSTEP, OSF/1, SunOS, etc etc.  The default system prompt
  573.   (explained below) is "\13\10$\32"; that is, carriage return, linefeed,
  574.   dollar sign, space.
  575.  
  576. VMSLOGIN 
  577.   For logging in to DEC VAX/VMS or OpenVMS systems.  The default system prompt
  578.   is "\10\13$\32"; that is, linefeed, carriage return, dollar sign, space.
  579.   This macro can also be used for logging in to DG AOS/VS systems if you
  580.   specify a different prompt ("\13\10)\32").  NOTE: The VMSLOGIN macro has
  581.   been updated to account for new procedures for use with VMS 6.0 and/or 6.1,
  582.   while retaining comptability with earlier VMS releases.
  583.  
  584. VMLINELOGIN
  585.   For logging into IBM mainframes with VM/CMS over linemode connections.
  586.  
  587. VMFULLOGIN
  588.   For logging into IBM mainframes with VM/CMS over fullscreen connections.
  589.  
  590. CISLOGIN
  591.   For logging in to CompuServe.
  592.  
  593. DOWLOGIN
  594.   For logging in to Dow Jones News/Retrieval.
  595.  
  596. DJNRSPRINT
  597.   For logging in to Dow Jones News/Retrieval over SprintNet.
  598.  
  599. NOLOGIN
  600.   For accessing computers or services that do not require logging in.
  601.  
  602. Each login macro name must be followed by a username, even NOLOGIN.
  603. For NOLOGIN, just include a "dummy" name, like "xxxx", that will not be used.
  604.  
  605. Other login macros can be easily constructed, modeled on those above.  Read
  606. Chapters 11-13 of "Using C-Kermit" for full instructions.  If you add or
  607. modify login macros, you should put their definitions in your C-Kermit
  608. customization file, CKERMOD.INI.
  609.  
  610. There was a problem with the login macros in C-Kermit 5A(188-189), namely that
  611. the system prompt was hard-coded into the macro.  For example, the UNIXLOGIN
  612. macro assumed that the UNIX shell prompt was "$ " (dollar sign followed by
  613. space), but in many cases it might be something else, and the only way to
  614. allow for different prompts was to edit the macro itself.  In C-Kermit 5A(190)
  615. and later, you may include the system prompt in your services directory by
  616. grouping it together in curly braces with the login macro name:
  617.  
  618.   {macroname prompt}
  619.  
  620. For example:
  621.  
  622.   CSHELL    {unixlogin \13\10%\32} olga net tcp/ip bsd.xyzcorp.com
  623.   CHEMISTRY {vmslogin \10\13CHEM$} OLGA net tcp/ip chemlab.xyzcorp.com
  624.   DG        {vmslogin \13\10)\32}  olga net tcp/ip aosvs.xyzcorp.com
  625.  
  626. The first example specifies the C-Shell prompt, "% ", rather than using the
  627. default UNIX (Bourne Shell, K-Shell) prompt of "$ ".  The second example
  628. accesses a system that has a custom prompt.  The third uses the VMSLOGIN macro
  629. to access a Data General AOS/VS system by specifying the AOS/VS prompt, ") ",
  630. since otherwise the Username: and Password: prompts are the same as for VMS.
  631.  
  632. The "backslash-number" notation is a way of including special (usually
  633. nonprintable) characters in C-Kermit commands and files, explained on pages
  634. 21-22 of "Using C-Kermit".  The number is the ASCII character number, such as
  635. 10 for linefeed, 32 for space.
  636.  
  637. 2.1.2. Connection Details
  638.  
  639. The Connection Details part of a services directory entry starts with one
  640. of the following words:
  641.  
  642.   CALL     - The connection is made with a phone call through a modem.
  643.   SERIAL   - The connection is a direct (dedicated) serial connection.
  644.   NET      - The connection is made on a network.
  645.  
  646. The subsequent information depends on the type of connection.
  647.  
  648. CALL must be followed by the following information, in this order:
  649.  
  650.   1. The modem type (a valid SET MODEM value).
  651.   2. The name of the device on your computer that the modem is connected to.
  652.   3. The speed, in bits per second, at which to use the device.
  653.   4. The telephone number to dial.  This can also be the name of an entry
  654.      in your dialing directory.
  655.  
  656. SERIAL must be followed by the following information, in this order:
  657.  
  658.   1. The serial device name.
  659.   2. The communication speed.
  660.  
  661. NET must be followed by:
  662.  
  663.   1. The network type: TCP/IP, X.25, DECNET, etc (a valid SET NET value).
  664.   2. The name or address of the host or service you want to connect to.
  665.   3. Additional network-specific information, like a service or socket number.
  666.  
  667. For TCP/IP network connections, you can include a socket number by appending
  668. to the IP name or address with a colon, for example:
  669.  
  670.   WEATHER  nologin  xxxx  net tcp/ip madlab.sprl.umich.edu:3000
  671.  
  672. Create your services directory file using a text editor, as a plain-text
  673. (ASCII) file.  If you are using a word processor, be sure to save your
  674. services directory as a plain text (ASCII) file.
  675.  
  676. To use your services directory, just type "access" and the service name at the
  677. C-Kermit prompt, for example:
  678.  
  679.   C-Kermit> access hp9000
  680.    olga's password: __________
  681.  
  682. To list your services directory, type "list" at the C-Kermit prompt.  To look
  683. up a particular services directory entry, type "list" and then the name, for
  684. example "list hp9000".
  685.  
  686. 2.2. Using Serial Communication Ports
  687.  
  688. In OS/2 C-Kermit, SET LINE and SET PORT are synonyms, they do exactly the same
  689. thing: select the communication device.  The syntax is the same for both:
  690.  
  691.   SET LINE [ <device-name> ]
  692.   SET PORT [ <device-name> ]
  693.  
  694. If you omit the device name, C-Kermit reverts to its default communications
  695. device, COM1.  If you include a device name:
  696.  
  697.  1. If the device name is a single digit, 1 through 8, C-Kermit converts
  698.     this digit to the corresponding COM port name, COM1 through COM8.
  699.     For example, "set port 2" is converted to "set port com2".
  700.  
  701.  2. If the device name begins with an underscore character (_), and all of
  702.     the following characters are numeric (for example, _12), the number is
  703.     assumed to be a file descriptor for an already-open communication device
  704.     (more about this below).  If the device name begins with an underscore,
  705.     but any non-numeric characters follow, a syntax error results.
  706.  
  707.  3. Any other sequence of characters (including "COM1", etc) is accepted
  708.     literally as a device name.  This includes Universal Naming Convention
  709.     (UNC) designations such as "\\server\modem" (which, due to Kermit's use
  710.     of the backslash character as command-escape, must be entered as
  711.     "\\\\server\\modem" or "//server/modem").  (Hint: But see the SET COMMAND
  712.     QUOTING command description.)
  713.  
  714. In cases (1) and (3), C-Kermit attempts to open the device, and then, if
  715. successful, checks to see whether it is a real communications device.  If not,
  716. the SET LINE / SET PORT command fails.  In case (2) above, no checking
  717. is done.  NOTE: You can also pass an open file descriptor to C-Kermit on
  718. the command line, e.g. "ckermit -l 4".
  719.  
  720. If you have problems using COM3, COM4, or higher, specify the address and
  721. interrupt number (IRQ) in your OS/2 CONFIG.SYS file, in the line that starts
  722. the serial communication driver, COM.SYS (or SIO.SYS):
  723.  
  724.   DEVICE=C:\OS2\COM.SYS (number,base-address,irq) ...
  725.  
  726. This example gives the addresses and IRQs for COM3 and COM4 but leaves the
  727. values for COM1 and COM2 alone:
  728.  
  729.   DEVICE=C:\OS2\COM.SYS (3,3E8,10) (4,2E8,15)
  730.  
  731. and this example gives values for COM1 through COM4:
  732.  
  733.   DEVICE=C:\OS2\COM.SYS (1,3F8,4) (2,2F8,3) (3,3E8,10) (4,2E8,15)
  734.  
  735. WARNING: the addresses and IRQs for COM3 and COM4 are not standardized, and
  736. can vary depending on the design and configuration of your communication board
  737. or internal modem.  Consult the documentation that came with your device.
  738. Make sure you don't have multiple devices using the same IRQ.
  739.  
  740. If you are unable to communicate at all on a serial connection, one possible
  741. reason might be that you have SET FLOW RTS/CTS (which is the default), but
  742. the serial device is not receiving the CTS signal.  This can happen even if
  743. you have give a prior MODE COMx OCTS=OFF command.  Try SET FLOW NONE.  If that
  744. doesn't work, try rebooting your PC to reset the communications device driver.
  745.  
  746. SET FLOW XON/XOFF prevents you from transmitting Ctrl-S and Ctrl-Q characters
  747. to the host.  These characters are commands (Search and Quote) in EMACS.  To
  748. use Ctrl-S and Ctrl-Q as commands to host applications, you must SET FLOW NONE
  749. or SET FLOW RTS/CTS.
  750.  
  751. (3) TERMINAL EMULATION
  752.  
  753. VT220 and ANSI terminal emulations have been added in edit 190, along with
  754. mouse support and numerous other features described in this section.
  755.  
  756. In OS/2 C-Kermit 5A(190), screen rollback (normally accomplished by using the
  757. Page Up and Down keys) is instantaneous, and the maximum number of saved
  758. screens is virtually unlimited in the 32-bit version.
  759.  
  760. The active screen may be sized to any length up to 100 lines using the MODE
  761. command, e.g.:
  762.  
  763.   MODE CON CO80,55
  764.  
  765. You can do this from the C-Kermit> prompt too:
  766.  
  767.   C-Kermit> MODE CON CO80,55
  768.  
  769. The status line and the popup help screen have been totally redesigned to
  770. be more informative, and there are more of them.  For example, you get a 
  771. different status line and popup help screens if you are in regular "online
  772. mode", or if your screen is rolled back, or if you are composing an
  773. accented character, etc.
  774.  
  775. The new \v(keyboard) variable indicates the keyboard model: "88", "101", or
  776. "122".  Unknown keyboards are reported as 4-digit hexidecimal values.
  777.  
  778. 3.1. Auto Up- and Download
  779.  
  780. As of edit 190, OS/2 C-Kermit is able to respond automatically to "autoupload",
  781. "autodownload", or auto-anything-else directives from the remote computer
  782. during CONNECT mode.  These directives come in the form of an Application
  783. Program Command escape sequence, or APC, when C-Kermit's terminal emulation is
  784. ANSI, VT100, VT102, or VT220.
  785.  
  786. The APC is sent by a host application to the terminal emulator, containing one
  787. or more commands to be executed by the terminal emulation program.  This
  788. mechanism lets the host application software control your communications
  789. software, allowing an unprecedented degree of automation and convenience.
  790.  
  791. Good uses for this feature include: (a) automatic communications, protocol,
  792. terminal, keyboard, or other setups by the host application; (b) automatic
  793. initiation of file transfer by the host application.
  794.  
  795. The form of an APC is "<ESC>_text<ESC>\", where "<ESC>" is ASCII character 27
  796. (Escape), and "text" is a command or a list of commands separated by commas.
  797. The APC sequence was originally defined by Digital Equipment Corporation for
  798. its VT300-series and higher terminals.
  799.  
  800. There are two "ends" to an APC operation, and you need to understand how
  801. to control each end.  Let's call the application which sends an APC escape
  802. sequence the "APC sender", and the application that receives it, and which is
  803. supposed to execute the commands it contains, the "APC receiver".
  804.  
  805. Any host application can be an APC sender.  To send an APC, all it needs to do
  806. is display the desired commands on your terminal screen, enclosed in <ESC>_
  807. and <ESC>\.  C-Kermit 5A(189) (and later) has a command for doing this:
  808.  
  809.   APC text
  810.  
  811. where the "text" is a command (or commands) for the APC receiver.  Leading and
  812. trailing spaces are removed from the text unless it is enclosed in braces:
  813.  
  814.   APC { text }
  815.  
  816. Here's an example that sets OS/2 C-Kermit parameters from UNIX (or VMS)
  817. C-Kermit's command line, while OS/2 C-Kermit is in CONNECT mode:
  818.  
  819.   C-Kermit>apc set receive packet-length 2000, set window 4
  820.  
  821. This command causes UNIX C-Kermit to send the following characters to the
  822. terminal (i.e. OS/2 C-Kermit's terminal emulator):
  823.  
  824.   <ESC>_set receive packet-length 2000, set window 4<ESC>\
  825.  
  826. OS/2 C-Kermit recognizes the APC sequence, extracts the commands from it, and
  827. processes them automatically, according to the rules listed below.
  828.  
  829. Here's an example in which you define and then execute a UNIX C-Kermit macro to
  830. send a file from UNIX C-Kermit, causing OS/2 C-Kermit to receive it
  831. automatically without your having to escape back and type "receive".  You do
  832. not need to CONNECT again after the transfer is done, either; this too happens
  833. automatically.
  834.  
  835.   C-Kermit>define autosend apc receive, send \%1
  836.   C-Kermit>autosend oofa.txt
  837.  
  838. A macro is used because if you type APC RECEIVE at the UNIX C-Kermit prompt,
  839. OS/2 C-Kermit goes immediately into RECEIVE mode and you have no way to give
  840. the SEND command to UNIX C-Kermit.  Conversely, if you type the SEND command
  841. first, UNIX C-Kermit goes into SEND mode, and you have no opportunity to give
  842. it an APC command.  When the macro (or a TAKE command file) is the source of
  843. commands, the "Catch-22" is avoided because the keyboard is out of the picture.
  844.  
  845. The APC receiver can be:
  846.  
  847.  . MS-DOS Kermit 3.13 or later
  848.  . C-Kermit 5A(190) for OS/2
  849.  . C-Kermit 5A(190) for UNIX
  850.  . C-Kermit 5A(190) for VMS
  851.  
  852. When one of these Kermit programs is in CONNECT mode, and an APC escape
  853. sequence arrives, the commands it contains are executed if:
  854.  
  855.   1. Terminal emulation is VT100, VT102, VT220, VT320, or ANSI, and:
  856.   2. SET TERMINAL APC is ON and the commands are not "dangerous", or:
  857.   3. SET TERMINAL APC is UNCHECKED.
  858.  
  859. After processing the APC sequence, whether its commands are executed or not,
  860. the APC receiver returns to CONNECT mode automatically.
  861.  
  862. The C-Kermit initialization file defines several macros to let you take
  863. advantage of the APC feature.  They are to be used at the C-Kermit> prompt,
  864. when you are accessing C-Kermit through an APC receiver.  They include:
  865.  
  866. PCSEND <filespec> [ <as-name> ]
  867.   Sends the file or files from C-Kermit to the "PC" that's on your desk.
  868.   (Of course, the PC might also be a UNIX workstation, etc).  If the <filespec>
  869.   does not contain wildcard characters (that is, it is the name of a single
  870.   file), you can include the optional "as-name" to send it under a different
  871.   name.  The file or files are sent according to C-Kermit's current FILE TYPE
  872.   setting, text or binary (except in VMS, where VMS C-Kermit determines the
  873.   file type and transfer automatically for each file).  In other words, the
  874.   PCSEND macro is exactly like the SEND command, except it automatically puts
  875.   your local Kermit program into RECEIVE mode, and then back into CONNECT mode
  876.   again when the transfer is complete.  This process is sometimes referred to
  877.   as "autodownloading".
  878.  
  879. PCGET <filespec> [ <as-name> ]
  880.   This tells C-Kermit to get the specified file or files from your "PC".
  881.   It puts your local Kermit program into server mode, GETs the specified
  882.   files from it, then sends it a FINISH command and puts it back in CONNECT
  883.   mode automatically.  The transfer type is governed by C-Kermit's current
  884.   FILE TYPE setting.
  885.  
  886. This process can be called "autouploading".
  887.  
  888. C-Kermit's response to APC sequences is controlled by the following command:
  889.  
  890.   SET TERMINAL APC { ON, OFF, UNCHECKED }
  891.  
  892. The default setting is OFF, meaning that C-Kermit ignores APC sequences unless
  893. you tell it otherwise.  In the OS/2 version, they are harmlessly absorbed and
  894. not displayed.
  895.  
  896. To activate the APC feature, use:
  897.  
  898.   SET TERMINAL APC ON
  899.  
  900. This allows execution of all commands received in APC sequences except those
  901. considered dangerous, such as: PUSH, RUN, !, REDIRECT, DELETE, RENAME, OUTPUT,
  902. ENABLE, DISABLE, SCRIPT, and SET TERMINAL APC.  With this setting, for
  903. example, it would not be possible for someone to send you a "letter bomb" or
  904. screen message that contained an APC sequence to execute a command on your
  905. computer (because RUN and ! are disabled).  The commands allowed by SET
  906. TERMINAL APC ON are only the ones which affect Kermit itself, including the
  907. initiation of Kermit file transfers.
  908.  
  909. Should you want to enable APC execution off ALL commands, which can be
  910. dangerous and is therefore not recommended unless you know exactly what you
  911. are doing, you can:
  912.  
  913.   SET TERMINAL APC UNCHECKED
  914.  
  915. Use UNCHECKED at your own risk.
  916.  
  917. Note that when TERMINAL APC is not OFF, the CONNECT command might run a bit
  918. slower than when TERMINAL APC is OFF.
  919.  
  920. 3.2. The CONNECT Command
  921.  
  922. (The CONNECT /QUIETLY command does not apply to OS/2 C-Kermit.)
  923.  
  924. 3.3. The SET KEY Command
  925.  
  926. As of edit 190, OS/2 C-Kermit's key mapping facility uses "Kermit keyboard
  927. verbs" rather than scan codes to denote actions that can be mapped to keys.
  928. All functions previously available are still available, but rather than being
  929. tied to hardwired scan codes, they are tied to \Kverbs.  This means:
  930.  
  931.  . You can move them anywhere you want.
  932.  . You can't "lose" them, as you could before if you mapped something else
  933.    over a sacred key, and therefore you can redefine sacred keys.
  934.  . That is, NO keys are sacred; no keys are preempted by Kermit in any
  935.    way that you can't overcome; you can undefine/redefine any and all keys.
  936.  . Key mapping files now contain descriptive verbs rather than magic numbers
  937.    as the definitions.
  938.  . SHOW KEY shows the \Kverb, rather than an obscure numeric cross-reference.
  939.  
  940. Furthermore:
  941.  
  942.  . The \Kverbs are totally compatible with MS-DOS Kermit (even if some
  943.    of the scan codes are not).
  944.  . You can combine characters, strings, and \Kverbs arbitrarily in a
  945.    key definition; e.g. you can put two or more verbs on one key, etc.
  946.  
  947. Examples (for the F1 key):
  948.  
  949.  . set key \315 \161             ; Any single character
  950.  . set key \315 \27b             ; Escape and "b"
  951.  . set key \315 Any string       ; Any string of ordinary characters
  952.  . set key \315 { Any string }   ; String with leading & trailing spaces
  953.  . set key \315 \KupArr          ; Up-Arrow
  954.  . set key \315 \KupArr\KrtArr   ; Up-Arrow and Right-Arrow
  955.  . set key \315 abc\{KupArr}xyz  ; "abc", then Up-Arrow, then "xyz"
  956.  . set key \315 abc\KupArr xyz   ; "abc", then Up-Arrow, then " xyz"
  957.  . set key \315 \v(time)         ; Time when SET KEY was executed (constant)
  958.  . set key \315 \\v(time)        ; Time when key is pressed (variable)
  959.  
  960. Braces are not required except to resolve ambiguity or to preserve leading
  961. and/or trailing spaces in the definition.  Note that \\v(name) is a special
  962. case.  Other backslash quantities cannot have their evaluation postponed by
  963. "double quoting" in this way; they are simply emitted literally, e.g.
  964. "set key \315 \\%a" causes F1 to send "\%a".
  965.  
  966. The new command:
  967.  
  968.   SET KEY CLEAR
  969.  
  970. restores all default key definitions (listed below).
  971.  
  972. IMPORTANT: The key-mapping commands and command files of C-Kermit 5A(188) and
  973. 5A(189) don't work any more, and the instructions here supersede the ones
  974. given in the OS/2 appendix of "Using C-Kermit".  In particular, the CKOVTK.INI
  975. command file is superseded by the CKOVTK2.INI file.
  976.  
  977. User-defined macros can also be assigned to keys by using their names as
  978. kverbs.  Example:
  979.  
  980.   define download receive, connect
  981.   set key \417 \Kdownload
  982.  
  983. This example puts the act of receiving a file from a remote Kermit that has
  984. already been told to send it on a "hot key", in this case Alt-Page-Down on the
  985. PC.  C-Kermit will not automatically reenter terminal emulation upon
  986. completion of the macro unless the macro includes a CONNECT command, as in the
  987. example above.
  988.  
  989. Keyboard verbs are of the form \Kname, where "name" is the name of the verb.
  990. A keyboard verb may be written \Kname, or \K{name}.  The latter form is needed
  991. when the name is adjacent to other text, for example:
  992.  
  993.   set key \315 \K{decF1}0
  994.  
  995. The following Keyboard Verbs are supported.  Capitalization does not matter:
  996.  
  997.   \KupArr   Send what the DEC Up Arrow key sends
  998.   \KdnArr   Send what the DEC Down Arrow key sends
  999.   \KrtArr   Send what the DEC Right Arrow key sends
  1000.   \KlfArr   Send what the DEC Left Arrow key sends
  1001.  
  1002.   \Kgold    Send what the DEC Gold key sends
  1003.   \Kpf1     Send what the DEC PF1 key sends (same as Gold)
  1004.   \Kpf2     Send what the DEC PF2 key sends
  1005.   \Kpf3     Send what the DEC PF3 key sends
  1006.   \Kpf4     Send what the DEC PF4 key sends
  1007.  
  1008.   \Kkp0     Send what the DEC Numeric Keypad 0 key sends
  1009.   \Kkp1     Send what the DEC Numeric Keypad 1 key sends
  1010.   \Kkp2     Send what the DEC Numeric Keypad 2 key sends
  1011.   \Kkp3     Send what the DEC Numeric Keypad 3 key sends
  1012.   \Kkp4     Send what the DEC Numeric Keypad 4 key sends
  1013.   \Kkp5     Send what the DEC Numeric Keypad 5 key sends
  1014.   \Kkp6     Send what the DEC Numeric Keypad 6 key sends
  1015.   \Kkp7     Send what the DEC Numeric Keypad 7 key sends
  1016.   \Kkp8     Send what the DEC Numeric Keypad 8 key sends
  1017.   \Kkp9     Send what the DEC Numeric Keypad 9 key sends
  1018.  
  1019.   \KkpComa    Send what the DEC Numeric Keypad comma (,) key sends
  1020.   \KkpMinus   Send what the DEC Numeric Keypad minus (-) key sends
  1021.   \KkpDot     Send what the DEC Numeric Keypad period (.) key sends
  1022.   \KkpEnter   Send what the DEC Numeric Keypad Enter key sends
  1023.  
  1024.   \KdecF6     Send what the DEC F6 key sends
  1025.   \KdecF7     Send what the DEC F7 key sends
  1026.   \KdecF8     Send what the DEC F8 key sends
  1027.   \KdecF9     Send what the DEC F9 key sends
  1028.   \KdecF10    Send what the DEC F10 key sends
  1029.   \KdecF11    Send what the DEC F11 key sends
  1030.   \KdecF12    Send what the DEC F12 key sends
  1031.   \KdecF13    Send what the DEC F13 key sends
  1032.   \KdecF14    Send what the DEC F14 key sends
  1033.   \KdecF15    Send what the DEC F15 key sends
  1034.   \KdecHelp   Send what the DEC Help key sends (same as F15)
  1035.   \KdecF16    Send what the DEC F16 key sends
  1036.   \KdecDo     Send what the DEC Do key sends (same as F16)
  1037.   \KdecF17    Send what the DEC F17 key sends
  1038.   \KdecF18    Send what the DEC F18 key sends
  1039.   \KdecF19    Send what the DEC F19 key sends
  1040.   \KdecF20    Send what the DEC F20 key sends
  1041.  
  1042.   \KdecFind    Send what the DEC Find key sends
  1043.   \KdecInsert  Send what the DEC Insert key sends
  1044.   \KdecRemove  Send what the DEC Remove key sends
  1045.   \KdecSelect  Send what the DEC Select key sends
  1046.   \KdecPrev    Send what the DEC Previous Screen key sends
  1047.   \KdecNext    Send what the DEC Next Screen key sends
  1048.  
  1049.   \KdnOne      Screen rollback: down one line
  1050.   \KdnScn      Screen rollback: down one screen
  1051.   \KupOne      Screen rollback: Up one line
  1052.   \KupScn      Screen rollback: Up one screen
  1053.   \KendScn     Screen rollback: Latest (bottom, newest) screen
  1054.   \KhomScn     Screen rollback: Oldest (top) screen in buffer
  1055.  
  1056.   \Kexit       Exit terminal emulator, return to command prompt,
  1057.                but do not break the connection.
  1058.  
  1059.   \Kbreak      Send a BREAK signal.  For serial connections, this is
  1060.                a 250 millisecond spacing condition.  For TELNET conditions,
  1061.                this is a TELNET BREAK command.
  1062.   \KlBreak     Send a Long BREAK (1.5 msec serial, or TELNET BREAK)
  1063.  
  1064.   \KkbHebrew   Enter Hebrew keyboard mode (see below).
  1065.   \KkbEnglish  Enter English keyboard mode.
  1066.  
  1067.   \Kreset      Reset the terminal emulator.
  1068.   \Kdos        Push to DOS (i.e. OS/2) (\Kos2 is a synonym).
  1069.   \Kdump       Print screen, or copy it to a file, depending on SET PRINTER.
  1070.   \Khangup     Hang up the connection
  1071.   \Knull       Send a NUL (binary 0) character
  1072.   \Khelp       Pop-up help screen
  1073.   \KholdScrn   Hold screen
  1074.   \Kignore     Ignore this key, don't even beep
  1075.   \KprintFF    Send a form feed to the printer
  1076.   \KprtScn     Toggle copy-incoming-screen-text-to-printer on and off
  1077.   \KflipScn    Flip screen video normal/reverse
  1078.   \Kdebug      Toggle debugging
  1079.   \Ktn_ip      Send TELNET Interrupt Process
  1080.   \Ktn_ayt     Send TELNET Are You There
  1081.  
  1082. The default mapping, which applies when C-Kermit starts up, and which is
  1083. restored whenever you give a SET KEY CLEAR command, is as follows.  It should
  1084. apply to almost any keyboard, and does not require the gray keypads.
  1085.  
  1086.  Verb             IBM Key
  1087.  
  1088.   \KholdScrn       Scroll Lock             Alternate (with Num Lock off)
  1089.  
  1090.   \KupArr          Gray keypad up arrow    and Numeric keypad up arrow
  1091.   \KdnArr          Gray keypad down arrow  and Numeric keypad down arrow
  1092.   \KrtArr          Gray keypad right arrow and Numeric keypad right arrow
  1093.   \KlfArr          Gray keypad left arrow  and Numeric keypad left arrow
  1094.  
  1095.   \KupScn          Gray Page Up            and Numeric keypad PgUp
  1096.   \KupOne          Ctrl Gray Page Up       and Numeric keypad Ctrl-PgUp
  1097.   \KdnScn          Page Gray Down          and Numeric keypad PgDn
  1098.   \KdnOne          Ctrl Gray Page Down     and Numeric keypad Ctrl-PgUp
  1099.   \KhomScn         Gray Home               and Numeric keypad Home
  1100.   \KendScn         Gray End                and Numeric keypad End
  1101.  
  1102.   \Kpf1            F1
  1103.   \Kpf2            F2
  1104.   \Kpf3            F3
  1105.   \Kpf4            F4
  1106.  
  1107.   \Kkp0            Alt-0, Top Rank
  1108.   \Kkp1            Alt-1, Top Rank
  1109.   \Kkp2            Alt-2, Top Rank
  1110.   \Kkp3            Alt-3, Top Rank
  1111.   \Kkp4            Alt-4, Top Rank
  1112.   \Kkp5            Alt-5, Top Rank
  1113.   \Kkp6            Alt-6, Top Rank
  1114.   \Kkp7            Alt-7, Top Rank
  1115.   \Kkp8            Alt-8, Top Rank
  1116.   \Kkp9            Alt-9, Top Rank
  1117.  
  1118.   \KkpMinus        Alt-Minus,  Top Rank
  1119.   \KkpPeriod       Alt-Period, Main Keypad
  1120.   \KkpComa         Alt-Comma,  Main Keypad
  1121.   \KkpEnter        Alt-Enter,  Main Keypad
  1122.  
  1123.   \Kreset          Alt-r
  1124.   \Kbreak          Alt-b
  1125.   \Kexit           Alt-x
  1126.   \KlBreak         Alt-l
  1127.   \Kdump           Alt-f
  1128.   \Kflipscn        Alt-v
  1129.   \Kdebug          Alt-d
  1130.   \Khelp           Alt-h
  1131.   \Khangup         Alt-u
  1132.  
  1133. Other default assignments:
  1134.  
  1135.   Keypad Del           sends DEL (127)
  1136.   Gray Delete          sends DEL (127)
  1137.   Backspace            sends DEL (127)
  1138.   Ctrl-Backspace       sends DEL (127)
  1139.   Alt-Backspace        sends Backspace (Ctrl-H, 8)
  1140.   Backtab (Shift Tab)  sends Backspace (Ctrl-H, 8)
  1141.   Ctrl-2               sends NUL (0)
  1142.   Ctrl-Space Bar       sends NUL (0)
  1143.   Enter                sends carriage return (CR, 13)
  1144.   Ctrl-Enter           sends linefeed (LF, 10)
  1145.  
  1146. The Alt key may be used with the numeric keypad to generate accented and
  1147. special characters.  Hold down the Alt key and press 3 keypad digits
  1148. representing the code of the desired character in the current PC code page,
  1149. for example Alt-161 sends lowercase letter i with acute accent.
  1150.  
  1151. Other keys send themselves (e.g. a, Shift-a, Ctrl-A, etc), or, if nothing
  1152. is assigned, nothing is sent and a beep is sounded.
  1153.  
  1154. Key names that appear in the status line and popup help screens are in
  1155. "English", giving the keytop associated with a particular scan code on the
  1156. USA keyboard.
  1157.  
  1158. The PC arrow keys are mapped to send what DEC arrow keys send.  The DEC arrow
  1159. keys are known as the "cursor keypad", and these keys always transmit escape
  1160. sequences on a DEC terminal.  The exact sequences depend on what "mode" the
  1161. terminal and keypad are in:
  1162.  
  1163.                Mode............................
  1164.   Key          Application    Cursor     VT52     Kermit Verb   PC Scan code
  1165.    Up Arrow     ESC O A        ESC [ A    ESC A    \KupArr       \584
  1166.    Down Arrow   ESC O B        ESC [ B    ESC B    \KdnArr       \592
  1167.    Right Arrow  ESC O C        ESC [ C    ESC C    \KrtArr       \589
  1168.    Left Arrow   ESC O D        ESC [ D    ESC D    \KlfArr       \587
  1169.  
  1170. The first two modes can be set by either the host (ESC [ ? 1 h / l) or by the
  1171. SET TERMINAL ARROW-KEYS { APPLICATION, CURSOR } command.  The VT52 mode can be
  1172. set via ESC [ ? 2 l and can be reset via ESC [ ? 2 h or by ESC <, and of
  1173. course the terminal type can also be controlled by Kermit's SET TERMINAL TYPE
  1174. command.  The default (startup) arrow-key mode is CURSOR.
  1175.  
  1176. Of course, you can assign any other sequences you want to the arrow keys.  For
  1177. example, to assign EMACS commands to them:
  1178.  
  1179.   set key \584 \16  ; Ctrl-P to Up Arrow
  1180.   set key \592 \14  ; Ctrl-N to Down Arrow
  1181.   set key \589 \6   ; Ctrl-F to Right Arrow
  1182.   set key \587 \2   ; Ctrl-B to Left Arrow
  1183.  
  1184. Numeric (auxilliary) keypad keys are similar to arrow keys, in that they, too,
  1185. send different sequences depending on the mode and the emulation:
  1186.  
  1187.                VT1xx/2xx Mode........    VT52 Mode.......
  1188. DEC Key        Application    Numeric    Application    Numeric    Kermit Verb
  1189.   PF1 (Gold)    ESC O P       ESC O P     ESC P          ESC P     \Kpf1,\Kgold
  1190.   PF2           ESC O Q       ESC O Q     ESC Q          ESC Q      \Kpf2
  1191.   PF3           ESC O R       ESC O R     ESC R          ESC R      \Kpf3
  1192.   PF4           ESC O S       ESC O S     ESC S          ESC S      \Kpf4
  1193.    0            ESC O p          0        ESC ? p          0        \Kkp0
  1194.    1            ESC O q          1        ESC ? q          1        \Kkp1
  1195.    2            ESC O r          2        ESC ? r          2        \Kkp2
  1196.    3            ESC O s          3        ESC ? s          3        \Kkp3
  1197.    4            ESC O t          4        ESC ? t          4        \Kkp4
  1198.    5            ESC O u          5        ESC ? u          5        \Kkp5
  1199.    6            ESC O v          6        ESC ? v          6        \Kkp6
  1200.    7            ESC O w          7        ESC ? w          7        \Kkp7
  1201.    8            ESC O x          8        ESC ? x          8        \Kkp8
  1202.    9            ESC O y          9        ESC ? y          9        \Kkp9
  1203.    -            ESC O m          -        ESC ? m          -        \KkpMinus
  1204.    ,            ESC O l          ,        ESC ? l          ,        \KkpComa
  1205.    .            ESC O n          .        ESC ? n          .        \KkpDot
  1206.  Enter          ESC O M      CR or CRLF   ESC ? M      CR or CRLF   \KkpEnter
  1207.  
  1208. The Enter key Numeric-Mode assignment depends on whether the terminal
  1209. (emulator) is in "ANSI Line Mode", which is controlled by the host via
  1210. ESC [ 20 h (Line Mode) and ESC [ 20 l (small letter el, No Line Mode), or by
  1211. Kermit's SET TERMINAL NEWLINE-MODE command.  By default, the emulator is not
  1212. in newline mode, and sends only Carriage Return (Ctrl-M, ASCII 13) when you
  1213. press the Return or Enter key.
  1214.  
  1215. The keypad mode is controlled by the host: ESC = puts it in Application Mode;
  1216. ESC > puts it in Numeric Mode.  Or you can control it yourself with the
  1217. SET TERMINAL KEYPAD-MODE command.  The default (startup) keypad state is
  1218. Numeric.
  1219.  
  1220. Characters that exist in Latin-1-like (Western European) character sets can
  1221. now be entered using Compose-key sequences.  Press the Compose key (verb
  1222. \Kcompose, assigned by default to Alt-c, then two more keys to produce the
  1223. desired character, for example ' and A to send A-acute.  Don't hold the
  1224. \Kcompose key down while typing the two other keys -- it does not work like a
  1225. shift key.  You can watch your progress in the status line, and you push the
  1226. help key (Alt-h by default) while a compose sequence is active, you get a
  1227. special help screen.
  1228.  
  1229. If you want to cancel a compose-key sequence, just press the space bar.  If
  1230. you enter a valid sequence, it is translated according to the terminal
  1231. character-set and transmitted.
  1232.  
  1233. Below is a complete listing of the valid compose-key sequences; if you enter a
  1234. character combination that is not in this list, C-Kermit beeps and ignores it.
  1235. Notice that case (shift key) matters for letters, but not for most symbols,
  1236. and that in most cases, the order of the two characters doesn't matter.  The
  1237. compose sequences supported by C-Kermit are the same as those supported by DEC
  1238. US-model VT220 terminals in "ISO" mode.  There are no "dead keys".  The full
  1239. repertoire listed below is possible only if your OS/2 code page is 850.  If
  1240. you are using another code page (437, 852, etc), some of these characters
  1241. might appear as questions marks.
  1242.  
  1243.  Letters...
  1244.  
  1245.     A `    A grave                      a `    a grave
  1246.     ` A    A grave                      ` a    a grave
  1247.     A '    A acute                      a '    a acute
  1248.     ' A    A acute                      ' a    a acute
  1249.     A ^    A circumflex                 a ^    a circumflex
  1250.     ^ A    A circumflex                 ^ a    a circumflex
  1251.     A ~    A tilde                      a ~    a tilde
  1252.     ~ A    A tilde                      ~ a    a tilde
  1253.     A "    A diaeresis                  a "    a diaeresis
  1254.     " A    A diaeresis                  " a    a diaeresis
  1255.     A *    A ring above                 a *    a ring above
  1256.     * A    A ring above                 * a    a ring above
  1257.     A E    A with E                     a e    a with e
  1258.     C ,    C Cedilla                    c ,    c cedilla
  1259.     , C    C Cedilla                    , c    c cedilla
  1260.     E `    E grave                      e `    e grave
  1261.     ` E    E grave                      ` e    e grave
  1262.     E '    E acute                      e '    e acute
  1263.     ' E    E acute                      ' e    e acute
  1264.     E ^    E circumflex                 e ^    e circumflex
  1265.     ^ E    E circumflex                 ^ e    e circumflex
  1266.     E "    E diaeresis                  e "    e diaeresis
  1267.     " E    E diaeresis                  " e    e diaeresis
  1268.     I `    I grave                      i `    i grave
  1269.     ` I    I grave                      ` i    i grave
  1270.     I '    I acute                      i '    i acute
  1271.     ' I    I acute                      ' i    i acute
  1272.     I ^    I circumflex                 i ^    i circumflex
  1273.     ^ I    I circumflex                 ^ i    i circumflex
  1274.     I "    I diaeresis                  i "    i diaeresis
  1275.     " I    I diaeresis                  " i    i diaeresis
  1276.     - D    Icelandic Eth                - d    Icelandic eth
  1277.     D -    Icelandic Eth                d -    Icelandic eth
  1278.     H T    Icelandic Thorn              h t    Icelandic thorn
  1279.     T H    Icelandic Thorn              t h    Icelandic thorn
  1280.     N ~    N tilde                      n ~    n tilde
  1281.     ~ N    N tilde                      ~ n    n tilde
  1282.     O `    O grave                      o `    o grave
  1283.     ` O    O grave                      ` o    o grave
  1284.     O '    O acute                      o '    o acute
  1285.     ' O    O acute                      ' o    o acute
  1286.     O ^    O circumflex                 o ^    o circumflex
  1287.     ^ O    O circumflex                 ^ o    o circumflex
  1288.     O ~    O tilde                      o ~    o tilde
  1289.     ~ O    O tilde                      ~ o    o tilde
  1290.     O "    O diaeresis                  o "    o diaeresis
  1291.     " O    O diaeresis                  " o    o diaeresis
  1292.     O /    O oblique stroke             o /    o oblique stroke
  1293.     / O    O oblique stroke             / o    o oblique stroke
  1294.     U `    U grave                      u `    u grave
  1295.     ` U    U grave                      ` u    u grave
  1296.     U '    U acute                      u '    u acute
  1297.     ' U    U acute                      ' u    u acute
  1298.     U ^    U circumflex                 u ^    u circumflex
  1299.     ^ U    U circumflex                 ^ u    u circumflex
  1300.     U "    U diaeresis                  u "    u diaeresis
  1301.     " U    U diaeresis                  " u    u diaeresis
  1302.     Y '    Y acute                      y '    y acute
  1303.     ' Y    Y acute                      ' y    y acute
  1304.     s s    German sharp s               y "    y diaeresis
  1305.                                         " y    y diaeresis
  1306.  Symbols...
  1307.  
  1308.     ' '    Acute accent                 U /    Micro sign
  1309.     A A    At sign                      u /    Micro sign
  1310.     a a    At sign                      . ^    Middle dot
  1311.     / /    Backslash                    X X    Multiplication sign
  1312.     / <    Backslash                    x x    Multiplication sign
  1313.     | |    Broken bar                   - ,    Not sign
  1314.     , ,    Cedilla                      + +    Number sign
  1315.     C /    Cent sign                    S !    Paragraph sign
  1316.     c /    Cent sign                    S 0    Paragraph sign
  1317.     C 0    Copyright sign               S O    Paragraph sign
  1318.     C O    Copyright sign               s !    Paragraph sign
  1319.     c 0    Copyright sign               s 0    Paragraph sign
  1320.     c o    Copyright sign               s o    Paragraph sign
  1321.     X 0    Currency sign                P !    Pilcrow sign
  1322.     X O    Currency sign                p !    Pilcrow sign
  1323.     x 0    Currency sign                + -    Plus or minus sign
  1324.     x o    Currency sign                L -    Pound sterling sign
  1325.     0 ^    Degree sign                  l -    Pound sterling sign
  1326.     - :    Division sign                R O    Registered Trademark
  1327.     A _    Feminine ordinal             r o    Registered Trademark
  1328.     a _    Feminine ordinal             > >    Right angle quotation
  1329.     1 2    Fraction one half            ) -    Right brace
  1330.     1 4    Fraction one quarter         ) )    Right bracket
  1331.     ! !    Inverted exclamation         - -    Soft hyphen
  1332.     ? ?    Inverted question mark       1 ^    Superscript 1
  1333.     < <    Left angle quotation         2 ^    Superscript 2
  1334.     ( -    Left brace                   3 ^    Superscript 3
  1335.     ( (    Left bracket                 / ^    Vertical bar
  1336.     - ^    Macron                       Y -    Yen sign
  1337.     O _    Masculine ordinal            y -    Yen sign
  1338.     o _    Masculine ordinal
  1339.  
  1340. 3.4. The SET TERMINAL Command
  1341.  
  1342. The following SET TERMINAL commands have been added or modified since
  1343. version 5A(188):
  1344.  
  1345. SET TERMINAL TYPE { ANSI, VT52, VT100, VT102, VT220 }
  1346.   Allows selection of the terminal emulations listed.  The default is VT220.
  1347.  
  1348.   For the DEC VT family of emulations, Kermit identifies itself accordingly in
  1349.   response to DECID or DA; SHOW TERMINAL displays current type and ID string.
  1350.   VT100 is exactly like VT102, but without character insert/delete.  8-bit
  1351.   controls like CSI (= 155) are accepted in VT220 mode, but you must SET
  1352.   TERMINAL BYTESIZE 8 (and, of course SET PARITY NONE) in order to use them,
  1353.   and you must also set your terminal character set to something other than
  1354.   TRANSPARENT or any of the IBM code pages or other sets that put graphic
  1355.   characters in the C1 area.  C-Kermit will also send C1 controls (e.g. when
  1356.   you push the arrow keys) if these conditions are met AND the host has
  1357.   commanded it to do so.
  1358.  
  1359.   The default emulation is VT220.  VT220 emulation is almost fully implemented
  1360.   (lacking mainly: ISO 2022 host-directed character-set designation and
  1361.   invocation, downline-loadable user-defined keys, downline-loadable fonts),
  1362.   and works well with most VMS applications, such as EVE (EDIT/TPU).  VT100
  1363.   and VT220 emulation added in edit 190.
  1364.  
  1365.     NB: To use VT220 emulation with EVE or VAX Notes, you must either:
  1366.     (a) tell C-Kermit to SET TERMINAL BYTESIZE 8, or (b) tell VMS to
  1367.     SET TERM /NOEIGHT.
  1368.  
  1369.   ANSI is so-called ANSI terminal emulation, used with BBS's ("so-called"
  1370.   because ANSI stands for American National Standards Organization, which
  1371.   knows nothing about this).  This is a subset of VT100 with several other
  1372.   other features added (color, etc), using the 8-bit IBM Code Page 437
  1373.   characters for box- and line-drawing.  It is approximately equivalent to
  1374.   the OS/2 console driver and to DOS ANSI.SYS.  Colors are automatically
  1375.   set to black on white, TERMINAL BYTESIZE is automatically set to 8, TERMINAL
  1376.   CHARACTER-SET is forced to TRANSPARENT, and your code page is set to CP437
  1377.   (provided you have CP437 prepared; otherwise your code page is not changed).
  1378.  
  1379.   If you SET TERMINAL TYPE anything-but-ANSI after having SET TERMINAL TYPE
  1380.   ANSI, your previous code page, TERMINAL BYTESIZE, COLOR, and CHARACTER-SET
  1381.   are restored.  More about ANSI terminal emulation below.
  1382.  
  1383. SET TERMINAL MOUSE { ON, OFF }
  1384.   Enable / Disable use of the mouse during CONNECT mode.  32-bit version
  1385.   only.  Explained below.
  1386.  
  1387. SET TERMINAL CHARACTER-SET { HEBREW-ISO, HEBREW-7, CP862, HPROMAN8 } ...
  1388.   The Hebrew and HP character sets have been added to the terminal emulator's
  1389.   previous repertoire.  Type SET TERMINAL CHAR ? to see a complete list.
  1390.  
  1391. SET TERMINAL CODE-PAGE <number>
  1392.   Changes the "hardware" code page (video adapter and keyboard character set)
  1393.   used by Kermit and any processes that Kermit creates.  Typical code page
  1394.   numbers are 437 (original US code page) and 850 (multinational code page).
  1395.   Use SHOW TERMINAL to display the current code page and to list the code
  1396.   pages that are available for use on your PC.  OS/2 allows only two code
  1397.   pages to be prepared at once; this is done via the CODEPAGE statement in
  1398.   CONFIG.SYS, for example "CODEPAGE=437,850".  If you try to prepare a code
  1399.   page that is not supplied with your OS/2 system (for example, Hebrew code
  1400.   page 862 on a US system) you will get an error message when the system
  1401.   starts up.  You might be able to get around this by opening your System
  1402.   Setup folder, executing Selective Install, and changing your Country.
  1403.   But note that "Code pages 862 and 864 [Hebrew and Arabic] are supported with
  1404.   a country supplement available only in certain countries", and "Code pages
  1405.   932, 938, 944, and 948 [Japanese, Chinese, and Korean] are supported only
  1406.   with the DBCS version of the OS/2 operating system on DCBS hardware" [from
  1407.   OS/2 "help codepage"].
  1408.  
  1409. SET TERMINAL SCROLLBACK <number>
  1410.   Size of terminal scrollback buffer.  <number> is how many screen lines to
  1411.   save.  The default is 240 (10 screens if your screen length is 24).  The
  1412.   maximum is 240 for the 16-bit version and about 2,000,000 for the 32-bit
  1413.   version.  Every 1024 lines in scrollback buffer size will result in a
  1414.   potential increase in the size of the SWAPPER.DAT file of 264k.
  1415.  
  1416. SET TERMINAL ROLL { ON, OFF }
  1417.   This controls what happens when screens are rolled back.  OFF (the default)
  1418.   means a rolled-back screen is treated just like a normal screen: you can
  1419.   communicate with the host without affecting the rollback status -- this
  1420.   allows you to send characters while viewing a rolled-back screen, and allows
  1421.   arriving characters to be displayed on an "old" screen.  ON means you are
  1422.   constrained to typing only rollback-control keys while the screen is rolled
  1423.   back; no characters are sent to the host, and newly arrived characters are
  1424.   displayed only after rolling forward to the bottom of the rollback buffer,
  1425.   i.e. in their "proper place".
  1426.  
  1427. SET TERMINAL ANSWERBACK { OFF, ON }
  1428.   Controls whether or not OS/2 C-Kermit's terminal emulator treats incoming
  1429.   Ctrl-E characters as ENQ requests or simply ignores them.  ON means ENQ
  1430.   causes C-Kermit to send an Answerback message, which is "OS/2 C-Kermit" in
  1431.   edit 189 & earlier, and in edit 190 and later "OS/2 C-Kermit <version><CR>",
  1432.   where <version> is the numeric C-Kermit program version number, e.g. 501190
  1433.   for version 5A(190), and <CR> is a carriage return.  OFF, the default, means
  1434.   C-Kermit ignores Ctrl-E's.  Edit 189.  In edit 190, the terminal emulation
  1435.   was added to the answerback string, e.g. "OS/2 C-Kermit 501190 VT220<CR>".
  1436.  
  1437. SET TERMINAL TRANSMIT-TIMEOUT <seconds>
  1438.   During CONNECT mode (terminal emulation), if Kermit can't transmit your
  1439.   keystrokes for some reason, it puts up a special status line saying
  1440.   TRANSMISSION BLOCKED, and then shows a countdown timer.  When the countdown
  1441.   timer expires, Kermit returns to the prompt.  This will happen, for example,
  1442.   if you are using RTS/CTS flow control with a modem, and the modem turns off
  1443.   its CTS signal (e.g. during retraining).  The countdown timer is set to 15
  1444.   seconds by default, but you can change it with SET TERMINAL TRANSMIT-TIMEOUT.
  1445.   You can put the transmit timer on hold by typing or holding down certain
  1446.   keys, such as the Alt key.  You can also escape back to the prompt while the
  1447.   BLOCKED message is visible, but other "hot key" functions are disabled.
  1448.  
  1449. SET TERMINAL OUTPUT-PACING <milliseconds>
  1450.   Tells how many milliseconds to pause between sending each character to the
  1451.   host during CONNECT mode.  This applies to keys that you type, function key
  1452.   escape sequences, key macros, and (most importantly) to material that is
  1453.   pasted into the terminal window, but ONLY ON SERIAL CONNECTIONS.  On network
  1454.   connections, application-level pacing is not needed.  Use this command if
  1455.   you see TRANSMISSION BLOCKED messages in the status line when entering data;
  1456.   these usually indicate serial port hardware buffer overruns, or if data is
  1457.   lost when pasting into the terminal screen.  The default OUTPUT-PACING value
  1458.   is 0 (none).  -1 means: A 50 millisecond pause between the characters
  1459.   generated by function keys, arrow keys, and keys that have character strings
  1460.   assigned to them via SET KEY, but no pausing otherwise.  Any number greater
  1461.   than zero applies to ALL characters sent to the host during CONNECT mode on
  1462.   a serial connection.  The maximum value is 10000, or 10 seconds.
  1463.  
  1464. SET TERMINAL BELL { AUDIBLE, VISIBLE, NONE }
  1465.   Controls handling of Control-G (BEL) characters during terminal emulation.
  1466.   AUDIBLE sounds a short beep.  VISIBLE flashes the screen for 1/4 second.
  1467.   NONE ignores BELs entirely.  Edit 190.
  1468.  
  1469. SET TERMINAL HIDE-CURSOR { ON, OFF }
  1470.   Unless you say otherwise, C-Kermit employs a trick to make screen updates
  1471.   faster:  The cursor disappears briefly while the screen is being updated and
  1472.   appears again within a few milliseconds after screen activity stops.  Since
  1473.   this can be somewhat disconcerting at times, edit 190 adds a new command,
  1474.   SET TERMINAL HIDE-CURSOR { ON, OFF } to let you turn this feature off (or
  1475.   back on).
  1476.  
  1477. SET PRINTER <device-or-filename>
  1478.   Where to send transparent-print or screen-copy material during CONNECT.
  1479.   Default is PRN.  You can also specify a disk file name, in which case the
  1480.   given file is created if it does not exist, or is appended to if it already
  1481.   exists.  Use SET PRINTER NUL to discard transparent print output.  SHOW
  1482.   PRINTER displays the current setting.  This command does not affect the
  1483.   PRINT command itself, which always uses the underlying OS/2 PRINT command.
  1484.   It also does not affect the Print Screen key, since this is handled by OS/2
  1485.   directly, and is never seen by C-Kermit.  Edit 190.
  1486.  
  1487. SET DEBUG SESSION
  1488.   Previously had no effect in OS/2 C-Kermit.  As of edit 190, this command can
  1489.   be used to turn OS/2 C-Kermit's CONNECT command into a "software line
  1490.   analyzer" to watch exactly what characters (or other information) is being
  1491.   received; also can be used as a TELNET protocol analyzer.
  1492.    . TELNET negotiations are written out in highlighted words.
  1493.    . C0 control characters (0 - 31) are displayed as the corresponding
  1494.      letter (e.g. A for Ctrl-A), but using the underline-simulation color
  1495.      (SET TERMINAL COLOR UNDERLINE <foreground> <background>).
  1496.      Carriage-Return/Linefeed pairs are shown as MJ in underline color,
  1497.      but also start a new line on the screen for readability.
  1498.    . DEL (127) is displayed as a question mark with underline coloring.
  1499.    . C1 control characters (128 - 159) are displayed literally in the current
  1500.      code page, but using underline color.
  1501.    . Escape sequences are shown in reverse video.
  1502.    . All other characters are shown as is.  This means that characters
  1503.      32-126 are shown as normal ASCII graphics; 160-255 are shown as 8-bit
  1504.      graphics in the current code page.
  1505.   NOTE: Incoming 8th bits are still stripped if PARITY is not NONE or if
  1506.   TERMINAL BYTESIZE is not 8.  If you want to see parity bits, SET TERMINAL
  1507.   BYTESIZE 8, SET PARITY NONE.
  1508.  
  1509. SET TERMINAL DEBUG { ON, OFF }
  1510.   SET TERMINAL DEBUG ON is a synonym for SET DEBUG SESSION.
  1511.   SET TERMINAL DEBUG OFF turns off session debugging without interfering
  1512.   with any other debugging that might be active (such as LOG DEBUG;
  1513.   previously there was no way to turn off session debugging except SET
  1514.   DEBUG OFF, which also closed the debug log if one was open).
  1515.   Session debugging status is displayed in the SHOW TERMINAL display.
  1516.  
  1517. Debug screens can be rolled back for quiet contemplation, and C-Kermit's
  1518. Print-Screen feature (Alt-P or <esc-char>F) can be used to record terminal
  1519. debugging screens (even rolled-back ones) on the printer or in a disk file,
  1520. but, of course, the colors and highlighting are lost.
  1521.  
  1522. The session debugging feature can be toggled on and off during terminal
  1523. emulation via Alt-D (\Kdebug), and the status is shown in the terminal-type
  1524. field of the status line ("DEBUG" replaces "VT102" or "VT52").
  1525.  
  1526. 3.5. Using the Mouse
  1527.  
  1528. Mouse support (edit 190, 32-bit version only): If you SET TERMINAL MOUSE ON,
  1529. you can use the mouse during CONNECT mode.
  1530.  
  1531. Mouse support works better when running in a Window then when running
  1532. fullscreen.  C-Kermit mouse support does not interfere with OS/2 Mark, Copy,
  1533. Paste functions on VIO Windows.  And it does not interfere with TWCP (a 
  1534. shareware program used to provide a similar function VIO applications which
  1535. do not support a mouse).
  1536.  
  1537. The following mouse functions are supported:
  1538.  
  1539.   Copy To Host
  1540.   Mark and Copy
  1541.   Paste To Host
  1542.   Terminal Cursor Positioning
  1543.  
  1544. C-Kermit mouse support uses the OS/2 Clipboard with one limitation.  Terminal
  1545. data which is "Marked and Copied" is placed into the PM Clipboard and is
  1546. accessible from other applications and may be "Pasted to the Host" by
  1547. C-Kermit.  However, C-Kermit is unable to see PM Clipboard data which was
  1548. placed there by applications other than C-Kermit.  This limitation is a result
  1549. of not being a PM application.
  1550.  
  1551. Non-C-Kermit data can still be pasted into a Windowed Session using the Paste
  1552. command on the Window System Menu.
  1553.  
  1554. The mouse functions are hardwired to the left and right mouse buttons.  
  1555.  
  1556. Text is marked using a word-processing style selection.  It does not use the
  1557. rectangular selection used by the OS/2 VIO Window Mark command.
  1558.  
  1559. Copy To Host:
  1560.   Press Left and hold.  Drag the mouse to mark the text.  Press Right and 
  1561.   release.  Marked text will be copied directly to the keyboard buffer 
  1562.   (bypassing the PM clipboard) and sent to the host.  Release Left.
  1563.  
  1564. Mark and Copy:
  1565.   Press Left and hold.  Drag the mouse to mark the text.  Release Left. 
  1566.   Marked text will be copied to the PM Clipboard.
  1567.  
  1568. Paste To Host:
  1569.   Double Click Right.  Text in PM Clipboard will be copied to the keyboard 
  1570.   buffer (if it placed in the PM Clipboard by C-Kermit) and sent to the host.  
  1571.   Terminal cursor position will not be changed.
  1572.  
  1573. Terminal Cursor Positioning:
  1574.   Double Click Left.  Gray arrow-key sequences will be placed in the keyboard
  1575.   buffer and sent to the host in an attempt to move the terminal cursor to
  1576.   where the mouse cursor is.
  1577.  
  1578. All "copies" strip extraneous spaces from the end of each marked line.
  1579.  
  1580. All "pastes" strip the final end-of-line terminator.
  1581.  
  1582. Mouse-directed cursor movements send whatever the arrow keys would have sent
  1583. when pressed the number of times needed to move the terminal cursor to the
  1584. mouse cursor location.  By default, these are the VT terminal arrow key
  1585. sequences, according to the current cursor keypad mode.  If you redefine the
  1586. arrow keys to send something else (e.g. EMACS or VI up/down/left/right
  1587. commands), then the mouse will send those instead.  Arrow key sequences,
  1588. whether sent by pressing the arrow keys or with the mouse, only have the
  1589. desired effect if the host application software understands them.
  1590.  
  1591. 3.6. Printing While in CONNECT Mode
  1592.  
  1593. The good news:
  1594.  
  1595.  . The PRINT command works (if you have a printer).
  1596.  . SET PRINTER filename allows transparent-print material to be redirected
  1597.    to the specified file or device (32-bit version only).
  1598.  . Files can be transferred to PRN in the 32-bit version only.
  1599.  . LOG SESSION PRN works in the 32-bit version.
  1600.  . The Print-Screen key prints the current terminal emulation screen in the
  1601.    32-bit version.  If C-Kermit runs in a fullscreen session, Print-Screen
  1602.    prints a text copy of the display while if C-Kermit runs in a PM window, a
  1603.    graphical copy of the whole PM screen is printed (if your printer is
  1604.    capable of that).  This is an OS/2 feature, having nothing to do with
  1605.    C-Kermit.
  1606.  . There is also a Print-Screen/Dump-Screen feature built into C-Kermit
  1607.    5A(190) and later, that follows the SET PRINTER setting, for both the 16-
  1608.    and 32-bit versions, and works with both the current screen and with
  1609.    rolled-back screens.  This feature is activated by the CONNECT-mode
  1610.    escape character, normally Ctrl-], followed by the letter F.  It is also
  1611.    accomplished by the keyboard verbs, \Kdump or \KprtScn, which can be
  1612.    assigned to any key.
  1613.  . The keyboard verb, \KprintFF, sends a formeed to the printer.  Most
  1614.    printers eject the current page upon receipt of a formfeed.  Like all
  1615.    keyboard verbs, it can be assigned to any key or key combination.
  1616.  . Host initiated "print current cursor line" and "print current screen"
  1617.    are supported in the 32-bit version as of version 5A(190).
  1618.  . Host-initiated transparent print operations work correctly in the 32-bit
  1619.    version. 
  1620.  . As of version 5A(190), VT52 printer functions are also supported.
  1621.  
  1622. The bad news:
  1623.  
  1624.  . All host-initiated print operations are presently ignored by the 16-bit
  1625.    version (because of architectural limitations).
  1626.  . All host-initiated autoprint requests are treated like transparent
  1627.    print requests.
  1628.  . Print operations, when attempted on an OS/2 system that has no printer
  1629.    installed, might hang the Kermit program.  To avoid this, use SET PRINTER
  1630.    to direct print data to a file or to the NUL device if you don't have a
  1631.    printer.
  1632.  
  1633. As of edit 190, transparent-print material no longer appears on the screen;
  1634. it is directed exclusively to the printer (or print file).
  1635.  
  1636. As of edit 190, there is a new screen copy facility.  It honors the current
  1637. SET PRINTER setting -- i.e. the screen material goes either to the printer or
  1638. to a disk file, depending on SET PRINTER (the printer by default).  To copy
  1639. either the current screen or a rolled-back screen use Alt-P (or Alt-p) or the
  1640. CONNECT-mode escape character followed by the letter F (or f).  Characters are
  1641. dumped or printed "plain", without attributes (bold, reverse, underline,
  1642. blink, colors).
  1643.  
  1644. Note: in the following escape sequence listings, "ESC [" means the Escape
  1645. character (27) followed by a left bracked, OR, on an 8-bit connection, the
  1646. CSI character (155).
  1647.  
  1648. Other printer-control improvements:
  1649.   ESC [0i (and ESC [i) can be used to print the current screen
  1650.   ESC [?19h sets the print region (for ESC [0i and ESC [i) to the whole screen
  1651.   ESC [?19l sets the print region (ditto) to the current scrolling region
  1652.   ESC [?1i  prints the current cursor line
  1653.   ESC [?18h means to send a formfeed after every print-screen operation
  1654.   ESC [?18l means NOT to send a formfeed after every print-screen operation
  1655.  
  1656. Printer control is now available in VT52 emulation also (edit 190):
  1657.   ESC V prints the current cursor line
  1658.   ESC ] prints the current screen
  1659.   ESC W starts transparent printing (also ESC ^)
  1660.   ESC X stops transparent printing (also ESC _)
  1661.  
  1662. 3.7. VT220 Emulation
  1663.  
  1664. As of edit 190, the VT102/220 emulator now supports SRM (send/receive mode)
  1665. directives from the host:
  1666.   ESC [ 12 l turns on local echoing
  1667.   ESC [ 12 f turns off local echoing
  1668.  
  1669. And it also now correctly responds to DECSCNM (screen mode) commands (which
  1670. apply to the entire current screen and subsequently received characters):
  1671.   ESC [ ? 5 l puts the whole screen in reverse video
  1672.   ESC [ ? 5 h puts the whole screen in normal video
  1673.  
  1674. And to:
  1675.   ESC F   DEC arrow & function keys send only 7-bit sequences
  1676.   ESC G   DEC arrow & function keys can send 8-bit sequences
  1677.  
  1678. And it also supports the following VT220-and-above escape sequences for
  1679. turning off character attributes selectively:
  1680.   ESC [ 22 m turns bold off
  1681.   ESC [ 24 m turns (simulated) underline off
  1682.   ESC [ 25 m turns (simulated) blink off
  1683.   ESC [ 27 m turns reverse video off
  1684.   ESC [ 28 m turns invisible off
  1685.   ESC [ ? 25 h/l enables/disables the cursor
  1686.  
  1687. As well as the VT220 DECDSR report requests (printer status, etc).
  1688.  
  1689. C-Kermit's VT220 emulation lacks the following VT220 features:
  1690.  . Host-directed ISO 2022 character-set designation and invocation
  1691.    (use the SET TERMINAL CHARACTER-SET command for this).
  1692.  . Protected fields (because we don't have enough attribute bits):
  1693.      CSI Ps " q (Ps = 0, 1, 2) - select characters to be erasable or not
  1694.      CSI ? Ps K (Ps = 0, 1, 2) - erase erasable characters in line
  1695.      CSI ? Ps J (Ps = 0, 1, 2) - erase erasable characters in display     
  1696.  . Various host-initiated printing controls (highly dependent on DEC printers):
  1697.      CSI ? 43 h/l - Large/normal characters
  1698.      CSI ? 44 h/l - Color/monochrome
  1699.      CSI ? 45 h/l - RGB vs HLS color system
  1700.      CSI ? 46 h/l - Background+foreground/only-foreground to printer
  1701.      CSI ? 47 h/l - Rotated/normal printing
  1702.  . Downline-Loadable Character sets (DRCS) (graphics mode would be required)
  1703.  . VT240 Tektronix, Sixel, or ReGIS graphics (graphics mode would be required)
  1704.  . UDK's (can be done if there is a demand, but it might be tough finding
  1705.    fifteen keys with unique and unused scan codes to map them to!).
  1706.  
  1707. 3.8. ANSI Terminal Emulation
  1708.  
  1709. So-called ANSI terminal emulation is a subset of VT100 emulation, but with
  1710. host-controlled colors and using 8-bit IBM code-page 437 characters for line
  1711. and box drawing, plus some unique escape sequences for cursor save/restore.
  1712. ANSI terminal emulation is generally used to communicate with BBSs, and has
  1713. nothing to do with ANSI (the American National Standards Institute); the
  1714. misappropriated term "ANSI" seems to derive from the MS-DOS (and OS/2)
  1715. ANSI.SYS console driver, itself misnamed.  C-Kermit supports ANSI terminal
  1716. emulation as of edit 190, via SET TERMINAL TYPE ANSI.
  1717.  
  1718. C-Kermit's ANSI emulation does nothing special with the keys; in particular,
  1719. there is no attempt at "PCTERM" keyboard handling, in which unique key-down
  1720. and key-up sequences are transmitted separately for every single IBM key
  1721. (including Shift, Alt, etc), apparently needed for the SCO UNIX console
  1722. terminal (also called "DOORWAY mode)", but evidently not needed for BBS's.
  1723. There is also no support for so-called ANSI music, which violates every
  1724. conceivable rule (laid down by ANSI itself!) about the structure and form of
  1725. escape sequences.
  1726.  
  1727. 3.9. Hebrew Terminal Emulation
  1728.  
  1729. If your PC has CP862 -- the Hebrew Code Page -- available, then you can
  1730. use OS/2 C-Kermit for VT220-level Hebrew terminal emulation.  The following
  1731. special features are available, over and above the ones listed in the
  1732. Hebrew language support section earlier in this document:
  1733.  
  1734.  . The \KkbHebrew verb, which may be assigned to any key.  It switches the
  1735.    main keypad (mostly the lowercase letters) into Hebrew mode (see keymap
  1736.    below).  When the keyboard is in Hebrew mode, the terminal type in the
  1737.    status line has "-H" appended to it, for example "VT220-H".
  1738.  
  1739.  . The \KkbEnglish verb to switch the main keypad back to English mode.
  1740.  
  1741.  . The \KkbHebrew function is performed automatically if the host application
  1742.    sends CSI ? 35 h, and the \KkbEnglish function with CSI ? 35 l.
  1743.  
  1744.  . Hebrew keyboard mode is cleared when you execute the \Kreset (reset
  1745.    terminal) function, assigned to Alt-r by default.
  1746.  
  1747. The Hebrew key layout associated with these verbs is NOT customizable.  It
  1748. follows follows the layout used by Hebrew WordPerfect, Windows, and Word.
  1749. The names of the Hebrew letters are from the ISO 8859-8 Standard.  These are
  1750. the key assignments when the keyboard is in Hebrew mode:
  1751.  
  1752. Hebrew Order             Roman Order              QWERTY Keyboard Order
  1753.  
  1754.   q = Slash                , = Taw                  q = Slash
  1755.   w = Apostrophe           . = Terminal Zade        w = Apostrophe
  1756.   ' = Comma                ' = Comma                e = Qoph
  1757.   / = Period               / = Period               r = Resh
  1758.   t = Aleph                ; = Terminal Pe          t = Aleph
  1759.   c = Bet                  a = Shin                 y = Tet
  1760.   d = Gimel                b = Nun                  u = Waw
  1761.   s = Dalet                c = Bet                  i = Terminal Nun
  1762.   v = He                   d = Gimel                o = Terminal Mem
  1763.   u = Waw                  e = Qoph                 p = Pe
  1764.   z = Zain                 f = Kaph                 a = Shin
  1765.   j = Chet                 g = Ayin                 s = Dalet
  1766.   y = Tet                  h = Yod                  d = Gimel
  1767.   h = Yod                  i = Terminal Nun         f = Kaph
  1768.   l = Terminal Kaph        j = Chet                 g = Ayin
  1769.   f = Kaph                 k = Lamed                h = Yod
  1770.   k = Lamed                l = Terminal Kaph        j = Chet
  1771.   o = Terminal Mem         m = Zade                 k = Lamed
  1772.   n = Mem                  n = Mem                  l = Terminal Kaph
  1773.   i = Terminal Nun         o = Terminal Mem         ; = Terminal Pe
  1774.   b = Nun                  p = Pe                   ' = Comma
  1775.   x = Samech               q = Slash                z = Zain
  1776.   g = Ayin                 r = Resh                 x = Samech
  1777.   ; = Terminal Pe          s = Dalet                c = Bet
  1778.   p = Pe                   t = Aleph                v = He
  1779.   . = Terminal Zade        u = Waw                  b = Nun
  1780.   m = Zade                 v = He                   n = Mem
  1781.   e = Qoph                 w = Apostrophe           m = Zade
  1782.   r = Resh                 x = Samech               , = Taw
  1783.   a = Shin                 y = Tet                  . = Terminal Zade
  1784.   , = Taw                  z = Zain                 / = Period
  1785.  
  1786. To use OS/2 C-Kermit with host-based Hebrew software such as ALEPH
  1787. (the Hebrew University library software), give these commands to Kermit:
  1788.  
  1789.   set terminal bytesize 8
  1790.   set term code-page 862
  1791.   set term character-set hebrew-iso cp862
  1792.   set key \319 \KkbHebrew      ; F5 = Enter Hebrew keyboard mode
  1793.   set key \320 \KkbEnglish     ; F6 = Enter English keyboard mode
  1794.   set key \321 \KdecF7         ; F7 = DEC F7 (used with ALEPH software)
  1795.  
  1796. Of course, you can assign the \KkbHebrew, \KkbEnglish, and \KdecF7 verbs
  1797. to any other keys of your choice.
  1798.  
  1799. 3.10. Screen Rollback
  1800.  
  1801. Rollback works differently in edit 190.  Previously, you could only look at
  1802. rolled back screens, but you couldn't do any work in them; while rolled back,
  1803. only the rollback keys were operative.  You couldn't type any of the special
  1804. keys, like pop-up help, or Alt-x to get back, etc, and you couldn't transmit
  1805. any characters to the host, which was a big pain, because you often want to be
  1806. looking at rolled-back material when typing stuff to the host.  Also, arriving
  1807. characters were not displayed until unrolled all the way down to bottom.  Now,
  1808. all of these restrictions are lifted (see SET TERMINAL ROLL).
  1809.  
  1810. 3.11. Other Terminal Emulation Changes
  1811.  
  1812. Other OS/2 C-Kermit terminal emulation improvements and changes (edit 190):
  1813.  
  1814.  . Many bugs relating to character attributes, rollback, etc, fixed.
  1815.  
  1816.  . SET TERMINAL COLOR REVERSE is no longer operative; reverse video is now
  1817.    reverse video, period - foreground and background colors are exchanged.
  1818.    More about this in the Q&A section below.
  1819.  
  1820.  . Host-directed switching between US ASCII and UK ISO 646 (number sign /
  1821.    Pound sign) reactivated, but only if TERMINAL CHARACTER-SET is ASCII.
  1822.    All other character-set selections must be accomplished by SET TERMINAL
  1823.    CHARACTER-SET commands.
  1824.  
  1825.  . The CONNECT command now prints a helpful hint if it fails because
  1826.    of "No carrier detected."
  1827.  
  1828. 3.12. Terminal Emulation Frequently Asked Questions
  1829.  
  1830. Q: I tried to CONNECT to my modem and C-Kermit popped back to the prompt right
  1831.    away, saying "No carrier detected".
  1832.  
  1833. A: C-Kermit's default handling of carrier is to not require it during DIALing,
  1834.    but to require it at other times.  If you CONNECT to a modem before you
  1835.    have a dialed connection, there is no carrier signal, so i/o operations
  1836.    fail.  If you need to CONNECT to a serial device that does not present the
  1837.    carrier signal (for example, to dial a modem "manually"), first tell
  1838.    C-Kermit to SET CARRIER OFF.
  1839.  
  1840. Q: Does C-Kermit support multiple sessions?
  1841.  
  1842. A: No. If you SET PORT 1 and make a connection, and escape back and SET
  1843.    PORT 2, the connection on port 1 is closed, dropped, and hung up.  The same
  1844.    happens for network sessions.  To achieve multiple C-Kermit sessions, run
  1845.    separate copies in different OS/2 windows.  As of edit 190, C-Kermit will
  1846.    put a unique identifier in the window list for each session, such as
  1847.    "C-Kermit COM1", "C-Kermit COM2", "C-Kermit KERMIT.COLUMBIA.EDU", etc.
  1848.  
  1849.    If you have TCP/IP installed on your OS/2 system, you can set up a SLIP
  1850.    connection, and then you can run multiple copies of C-Kermit over it, using
  1851.    C-Kermit's TELNET command to make the connections.  This lets you achieve
  1852.    multiple sessions over a single serial port, a single modem, and a single
  1853.    phone call.
  1854.  
  1855. Q: When I run C-Kermit with VT220 emulation to access either the DEC EVE
  1856.    (EDIT/TPU) editor or DEC VAX Notes, the screen is filled with gibberish
  1857.    like "m0lJ3l24rl6l7l8h;2'z;3'{4;H'z;H;H".
  1858.  
  1859. A: Either tell C-Kermit to SET TERMINAL BYTESIZE 8 or tell VMS to
  1860.    SET TERMINAL /NOEIGHT.
  1861.  
  1862. Q: How do I get Kermit to simulate all the functions of a DEC VT220 keyboard,
  1863.    including arrow keys, numeric keypad, Gold key, PF keys, F keys, etc?
  1864.  
  1865. A: TAKE the CKOVTK2.INI file that is distributed with C-Kermit.  Read this
  1866.    file to find out which PC key is mapped to which DEC key.  If you don't
  1867.    like the mapping, edit this file to suit your taste.  If you always want
  1868.    these mappings in effect, put the command "take c:\ckermit\ckovtk2.ini"
  1869.    in your CKERMOD.INI file (or whatever your C-Kermit directory is)
  1870.    (Note: The install script will do this for you if you say yes.)
  1871.  
  1872. Q: Key mapping does not work as described in Appendix V of "Using C-Kermit".
  1873.  
  1874. A: That's right.  In version 5A(190) and later it works just like in MS-DOS
  1875.    Kermit, using \Kverbs that can be assigned to any key.  See the section
  1876.    above on key mapping for a complete description of the new key mapping
  1877.    method, or read the material on key mapping in "Using MS-DOS Kermit".
  1878.  
  1879. Q: Screen rollback doesn't work the way it used to in versions 189 and
  1880.    earlier.  I liked it better the old way!
  1881.  
  1882. A: As of edit 190, there are two options for screen scrolling: SET TERMINAL
  1883.    ROLL OFF (the default, and the new way) and SET TERMINAL ROLL ON (the old
  1884.    way).  The new way allows you to carry on a dialog with the host while in a
  1885.    rolled-back screen, which is handy when you need to refer to text that has
  1886.    scrolled away while conversing with the host.  To get the old behavior
  1887.    back, SET TERMINAL ROLL ON.
  1888.  
  1889. Q: The SET TERM COLOR REVERSE command is gone!  Version 190 now says "Sorry,
  1890.    this command has been retired.  Reverse video is now accomplished simply by
  1891.    exchanging the fore- and background colors."  I prefer the ability to set
  1892.    reverse video to whichever color scheme I wish.
  1893.  
  1894. A: The old way was simply not workable -- it appeared to work only by
  1895.    accident.  When all the VT100 features were fixed and VT220 and ANSI
  1896.    features were added, plus the cell-coloring extensions, there was no way to
  1897.    keep this Feature.  Color is used not only for regular characters, but also
  1898.    to denote underlining, blinking, and (naturally) also for explicitly-
  1899.    colored characters.  So it makes no sense to have one fore- and background
  1900.    color for reverse video.  How, for example, does one flip the screen
  1901.    between normal video and reverse video when it has 128 different colors
  1902.    showing?  This is a required feature of VT100 and higher DEC terminals
  1903.    (DECSCNM = ESC [ ? 5 h/l).
  1904.  
  1905. Q: Reverse video doesn't always seem to actually reverse fore/background 
  1906.    colors. For example, if I have the terminal set to black on white, 
  1907.    reverse video comes out a rather muddy light gray on dark gray. If the 
  1908.    terminal is set to light gray on dark gray, reverse is black on white.  If
  1909.    the terminal is black on light gray, reverse video really is reverse.
  1910.  
  1911. A: The explanation for this is a bit technical:
  1912.  
  1913.    The video adapter stores each screen character in a two-byte cell.  The
  1914.    first byte of each cell contains the 8-bit character value.  The second
  1915.    byte contains the video attributes for the character, and looks like this:
  1916.  
  1917.           Background |    Foreground
  1918.           Color      |    Color
  1919.      +---+---+---+---+---+---+---+---+
  1920.      | b | R | G | B | i | R | G | B |
  1921.      +---+---+---+---+---+---+---+---+
  1922.        b = blink       i = intensity
  1923.        0 = nonblinking 0 = normal
  1924.        1 = blinking    1 = high
  1925.  
  1926.    The i bit applies to the foreground color.  The meaning of the b bit
  1927.    depends on the VIO state; it can mean (a) the foreground character blinks,
  1928.    or (b) the background color is high-intensity.  C-Kermit uses (b) because
  1929.    blinking only works in a fullscreen session.  The RGB bits select the
  1930.    desired mixture of Red, Green, and Blue.
  1931.  
  1932.    When video is reversed, only the colors -- the RGB bits and not the i or
  1933.    b bits are swapped.  Otherwise, we would obtain effects that are even more
  1934.    surprising and undesirable: highlighted characters would no longer be
  1935.    highlighted, etc.  If blinking were implemented by real blinking rather
  1936.    than color simulation, then a bright foreground could become a blinking
  1937.    foreground, etc.  The confusion arises because many of the colors in the
  1938.    SET TERMINAL COLOR command are not "true" (3-bit) colors, but rather
  1939.    effects obtained with the high-intensity bit, as shown in Table 1.  If you
  1940.    stick to non-intense colors in your terminal screen, then reverse video
  1941.    will work as expected.
  1942.    
  1943.    Table I: OS/2 C-Kermit Colors
  1944.    ----------------------------------
  1945.     Name      Intensity   Remarks
  1946.  
  1947.     BLACK      Normal
  1948.     BLUE       Normal
  1949.     BROWN      Normal
  1950.     CYAN       Normal
  1951.     DGRAY      High       Dark gray
  1952.     GREEN      Normal
  1953.     LBLUE      High       Light gray
  1954.     LCYAN      High       Light cyan
  1955.     LGRAY      Normal
  1956.     LGREEN     High       Light green
  1957.     LMAGENTA   High       Light magenta
  1958.     LRED       High       Light red
  1959.     MAGENTA    Normal
  1960.     RED        Normal
  1961.     WHITE      High
  1962.     YELLOW     High
  1963.    ----------------------------------
  1964.  
  1965. Q: Is it possible to quit Kermit and NOT have the phone line hung up?
  1966.    That is, quit out of Kermit leaving the modem connection open, so I can
  1967.    then start SLIP?
  1968.  
  1969. A: No.  When an OS/2 process exits, all of its file handles are closed.
  1970.    One of the penalties we pay for using a real operating system, as opposed
  1971.    to (say) DOS.  It might be possible to run the SLIP process "under" Kermit.
  1972.    It is also possible for Kermit to inherit the file descriptor of a serial
  1973.    device from a superior process, in which case it is not closed when Kermit
  1974.    exits.
  1975.  
  1976. Q: What does "TRANSMISSION BLOCKED: 15" mean?
  1977.  
  1978. A: When you are typing normal characters in CONNECT mode, C-Kermit should
  1979.    normally have no trouble transmitting them.  An exception occurs on dialed
  1980.    serial connections with RTS/CTS flow control when the modem might drop its
  1981.    CTS (Clear To Send) signal because of noise on the connection that causes
  1982.    the two modems to enter a "retraining" sequence.  If you type a character
  1983.    under these conditions, C-Kermit will write "TRANSMISSION BLOCKED 15" in
  1984.    the status line, and then will attempt to retransmit the character every
  1985.    100 milliseconds for up to 15 seconds (the "15" is a countdown timer).  If
  1986.    the countdown timer expires, C-Kermit returns to the prompt with a message
  1987.    like:
  1988.  
  1989.      Serial port blocked
  1990.      Tx waiting for CTS to be turned ON
  1991.  
  1992.    (the second line will tell you the reason for the blockage).  Fifteen
  1993.    seconds is usually long enough for modems to retrain, but you can increase
  1994.    (or diminish) the retransmission timeout interval using the command:
  1995.  
  1996.      SET TERMINAL TRANSMIT-TIMEOUT <seconds>
  1997.  
  1998.    You can put the transmit timer on hold by typing or holding down certain
  1999.    keys, such as the Alt key.  You can also escape back to the prompt while
  2000.    the BLOCKED message is visible, but other "hot key" functions are disabled.
  2001.    Note that the BLOCKED message might not appear right away -- depending on
  2002.    the buffering capabilities of the UART and the configuration of the OS/2
  2003.    communication port driver, a transmission error might not be reported back
  2004.    to C-Kermit by OS/2 until the second or later blocked character.
  2005.  
  2006. 3.13. Terminal Emulation Hints, Tips, and Cautions
  2007.  
  2008. When switching away from C-Kermit's terminal screen and then switching back
  2009. to it, certain video items might become confused:
  2010.  
  2011.  . The cursor might be lost or misplaced
  2012.  . The entire screen might be blinking (more about this below)
  2013.  . The screen border might have disappeared
  2014.  . Colors might have changed
  2015.  
  2016. These problems appear to be confined only to certain systems, and do not
  2017. occur on others.  It is believed that they are related to the particular
  2018. video adapter or driver; the problems are most commonly reported on SVGA
  2019. and XGA systems.  You can usually work around these problems in various ways:
  2020.  
  2021.  . Use Alt-R to reset the terminal emulator
  2022.  . Escape back to the prompt and CONNECT again
  2023.  . Escape back to the prompt, PUSH, EXIT, and CONNECT again
  2024.  . Escape back to the prompt, run MODE CO80 (or whatever), and CONNECT again
  2025.  
  2026. SET TERMINAL CODE PAGE only seems to work in fullscreen sessions.  For that
  2027. matter, the same seems to be true of OS/2's own CHCP program, so this is
  2028. apparently an OS/2 limitation (noted in OS/2 2.1 GA).
  2029.  
  2030. SET TERMINAL CODE PAGE (and OS/2's own CHCP program) seem to have no effect
  2031. at all when the Hebrew NLV is installed.  The code page simply does not change.
  2032.  
  2033. If the host sends the escape sequence to put the terminal into 132-column
  2034. mode, and subsequently sends data that would appear in the rightmost 52
  2035. columns, this might interfere with existing data on the screen.  If C-Kermit
  2036. is started in an OS/2 132-column fullscreen session under OS/2 2.0 (only
  2037. possible on certain video adapters), it will display such data correctly but
  2038. will always be in 132-column mode, even if only 80-column mode is used.
  2039.  
  2040. Shift-in/Shift-Out works only if you SET TERMINAL LOCKING-SHIFT ON (except
  2041. in the case of the DEC Technical Character Set, used for line- and box-
  2042. drawing, etc, which is handled specially).
  2043.  
  2044. Host-directed US/UK character-set switching (ASCII 35 interpreted as
  2045. number sign in US, Pound Sterling sign in UK) works only if you have SET
  2046. TERM CHARACTER-SET ASCII.
  2047.  
  2048. Under certain conditions on certain systems, OS/2 C-Kermit has been observed
  2049. to put the entire screen (or subsequent help screens) in blinking mode.  For
  2050. example, when running in a fullscreen session, CONNECT mode active, background
  2051. color is high-intensity, and using Alt-Esc to get to the desktop, then
  2052. resuming the Kermit window can produce this effect; reportedly, this is caused
  2053. by a bug in some of OS/2's video drivers.  Alt-R (reset) makes the blinking
  2054. stop.  To avoid the problem altogether, don't use high-intensity background
  2055. colors.  See Table I above.
  2056.  
  2057. (4) FILE TRANSFER
  2058.  
  2059. 4.1. File Transfer Recovery
  2060.  
  2061. C-Kermit 5A(190) (the UNIX, OS/2, AOS/VS, and Amiga versions) and MS-DOS
  2062. Kermit 3.14 now have the ability to continue interrupted binary-mode file
  2063. transfers, and also allow you to "manually" recover from certain other types
  2064. of failures.
  2065.  
  2066. 4.1.1. The RESEND Command
  2067.  
  2068. The new RESEND command lets you continue a file transfer from the point where
  2069. it was interrupted (for example, because of a telephone disconnection) without
  2070. having to retransmit the data that was already successfully transmitted.
  2071. Imagine, for example, transferring a ten-megabyte file over a 2400-bps modem
  2072. connection when, after 9 megabytes have been sent, your call-waiting feature
  2073. kicks in and drops the modem connection.  9 megabytes at 240 cps takes about
  2074. 11 hours.  The remaining megabyte would take about 1.2 hours.  The recovery
  2075. feature lets you complete the failed transfer in the amount of time it takes
  2076. to send the as-yet-untranmsitted part of the file, rather than sending the
  2077. entire file again from the beginning -- in this example, a savings of 11
  2078. hours.
  2079.  
  2080. Before seeing how to use this feature, let's look at the restrictions:
  2081.  
  2082.  1. Recovery works only for binary-mode transfers between computers that
  2083.     have stream-oriented file systems (such as DOS, UNIX, OS/2, etc).  It
  2084.     does not work with any other transfer modes, including text or labeled.
  2085.     In other words, if you want to be able to use the recovery feature, you
  2086.     must tell the file sender to:
  2087.  
  2088.       SET FILE TYPE BINARY
  2089.  
  2090.  2. The original transfer must have been done with SET FILE INCOMPLETE KEEP
  2091.     in effect at the receiver, meaning that incompletely received files are
  2092.     kept rather than discarded.  In C-Kermit 5A(190) and later, this is the
  2093.     default, which is a change from previous releases.
  2094.  
  2095.  3. Recovery only works between two Kermit programs that have this capability
  2096.     and negotiate it successfully.  As of this writing, these programs include
  2097.     C-Kermit 5A(190) and later for UNIX, OS/2, and the Commodore Amiga, and
  2098.     MS-DOS Kermit 3.14 and later for DOS and Windows.  (But see below for a
  2099.     way around this.)
  2100.  
  2101.  4. You should never use SET FILE COLLISION RENAME if you intend to use the
  2102.     recovery feature (see the CKCKER.BWR file for an explanation).
  2103.  
  2104. To recover a failed upload: reestablish the connection, access the same
  2105. account and directory to which you were sending the file previously, start
  2106. Kermit there and put it in RECEIVE or SERVER mode.  Then escape back to the
  2107. local Kermit program and give it these commands:
  2108.  
  2109.   SET FILE TYPE BINARY
  2110.   RESEND filename [ as-name ]
  2111.  
  2112. The RESEND command should use exactly the same names (and SET FILE NAME
  2113. options) as the SEND command that was interrupted.  When you RESEND a file,
  2114. the receiving Kermit, upon getting the filename, looks up the file and gets
  2115. its size; it sends the size back to the sending Kermit, and the sending Kermit
  2116. resumes sending from that point; the receiving Kermit appends incoming
  2117. material to the partial file rather than creating a new file.
  2118.  
  2119. You can recover a failed download in the same way.  Just make sure you are
  2120. accessing the same directories as before, and the files have (or are being
  2121. sent with) the same names as before.
  2122.  
  2123. The RESEND command ignores your SET FILE COLLISION setting; thus you need not
  2124. change your FILE COLLISION setting when RESENDing, and you will not find it
  2125. altered afterwards either.  (But please, as mentioned earlier, do not use SET
  2126. FILE COLLISION RENAME if you ever intend to use the RESEND command.)
  2127.  
  2128. If the RESEND command is used, but a partial file of the same name does not
  2129. exist on the receiving end, RESEND behaves just like SEND -- it sends the
  2130. whole file.  If the file on the receiving is the same size as the sender's
  2131. copy, RESEND does nothing; both files are left alone.  These properties let
  2132. you resume the interrupted transfer of a group of files.  Suppose you had
  2133. originally done this:
  2134.  
  2135.   Receiver:                         Sender:
  2136.    SET FILE INCOMPLETE KEEP          SET FILE TYPE BINARY
  2137.    RECEIVE (or SERVER)               SEND *.ZIP
  2138.  
  2139. and the phone hung up in the middle of one of the ZIP files.  Just reestablish
  2140. the connection, and recover this way:
  2141.  
  2142.   Receiver:                         Sender:
  2143.    SET FILE INCOMPLETE KEEP          SET FILE TYPE BINARY
  2144.    RECEIVE (or SERVER)               RESEND *.ZIP
  2145.  
  2146. The files that were already sent are skipped, the file that was partially
  2147. sent is recovered, and the files that were not sent yet are sent.
  2148.  
  2149. In order for the recovery feature feature to be useful at all, the default for
  2150. SET FILE INCOMPLETE was changed from DISCARD to KEEP when the RESEND command
  2151. was added in edit 190.  Otherwise an interrupted transfer would leave no
  2152. partial file behind unless you had remembered to change the default.  But now
  2153. you have to pay closer attention to Kermit's messages to know whether a
  2154. transfer succeeded or failed -- previously, if it failed, the file would not
  2155. show up on the receiving end at all; in edit 190 and later, you'll get a
  2156. partial file which could easily be mistaken for the complete file unless you
  2157. change the default back to DISCARD or read the screen messages, or keep a
  2158. transaction log.
  2159.  
  2160. Watch out for SET FILE COLLISION RENAME, especially when used in conjunction
  2161. with recovery.  Recall that this option (which is NOT the default) renames
  2162. the incoming file if a file already exists with the same name (the default is
  2163. to rename the previously existing file, and store the incoming file with its
  2164. own name).  It is strongly recommended that you do not use SET FILE COLLISION
  2165. RENAME if you ever intend to use the recovery feature:
  2166.  
  2167.  . When the file is first received by C-Kermit, its name will be changed if
  2168.    another file already has the same name.  When you RESEND the same file
  2169.    after a failure, C-Kermit will probably try to append the re-sent portion
  2170.    to the wrong file.
  2171.  
  2172.  . Assuming that you get RESEND to work with FILE COLLISION RENAME, C-Kermit,
  2173.    when receiving the remainder of the file during a RESEND operation, will
  2174.    report back the wrong name.  Nothing can be done about this because the
  2175.    name is reported back before the receiving Kermit program finds out that
  2176.    it is a recovery operation.   
  2177.  
  2178. Using RESEND, you can write a script program to REALLY, REALLY send a file.
  2179. Here is a sample, in which we dial up to a UNIX computer and send the MS-DOS
  2180. Kermit distribution ZIP file.  This script program runs under C-Kermit 5A(190)
  2181. or later on OS/2 (and with a change in the dialout device name, under UNIX
  2182. too), and under MS-DOS Kermit 3.14 or later.  If the transfer fails, we
  2183. reestablish the connection and restart the transfer from the point of failure,
  2184. as many times as it takes to get the file across.
  2185.  
  2186. ---(cut here)---
  2187. ask \%u { username: }
  2188. askq \%p { \%u's password: }
  2189. ;
  2190. ; Settings for entire session.
  2191. ;
  2192. define \%s 20             ; Seconds to pause between each try
  2193. define \%n 7654321        ; Phone number
  2194. set modem hayes           ; Modem type
  2195. set port com1             ; Communication port
  2196. set speed 19200           ; Speed
  2197.  
  2198. set file type binary      ; File transfer mode must be binary
  2199. set input timeout quit    ; This is just to keep the script program short...
  2200. set count 50              ; Try up to 50 times to send the file
  2201. goto nomsg                ; Skip message the first time
  2202.  
  2203. :LOOP                     ; Come here to redial
  2204. hangup                    ; Give the phone a rest
  2205. echo CONNECTION BROKEN.
  2206. echo Pausing for \%s seconds...
  2207. sleep \%s
  2208. Echo redialing...
  2209.  
  2210. :NOMSG
  2211. dial \%n                  ; Dial the phone number
  2212. if fail goto AGAIN        ; Keep trying...
  2213. output \13                ; System answered, send a carriage return
  2214. input 15 login:           ; Get login prompt
  2215. output \%u\13             ; Send user ID
  2216. input 8 Password:         ; Get password prompt
  2217. output \%p\13             ; Send password
  2218. input 60 {$ }             ; Get system prompt
  2219. cd /kermit                ; CD to desired source directory
  2220. output cd mskermit\13     ; and destination directory
  2221. input 8 {$ }              ; Get system prompt
  2222. out kermit -r\13          ; kermit -r(eceive) on remote system
  2223. input 10 KERMIT READY     ; Wait for READY message
  2224. pause 1                   ; Plus a second for safety
  2225. resend msvibm.zip         ; RESEND the file
  2226. if success goto done      ; Success means file is completely transferred
  2227.  
  2228. :AGAIN
  2229. if count goto LOOP        ; Otherwise, try again.
  2230. Stop 1 Too many tries.    ; Too many tries, give up.
  2231.  
  2232. :DONE
  2233. echo File transferred OK  ; Success, give message
  2234. output exit\13            ; Log out from remote computer
  2235. pause 5                   ; Give it time...
  2236. hangup                    ; Hang up
  2237. stop 0 Script succeeded   ; Finished, the end.
  2238. ---(cut here)---
  2239.  
  2240. 4.1.2. Manual Recovery: The PSEND Command
  2241.  
  2242. The PSEND ("partial send") command is like the SEND command, but it begins
  2243. sending from a specified position in the file:
  2244.  
  2245.   PSEND <filename> <position> [ <as-name> ]
  2246.  
  2247. <filename> must refer to a single file, not a file group.  <position> is the
  2248. byte position in (offset into) the file; 0 means the beginning, 1000 means the
  2249. 1001st byte.  As with the SEND command, the file is sent under its own name
  2250. unless you specify an "as-name".  Unlike RESEND, PSEND can be used for both
  2251. text and binary transfers, and no special capabilities are required of the
  2252. Kermit program on the receiving end.  The PSEND command can be viewed as part
  2253. of a "do-it-yourself" recovery feature to be used when the other Kermit
  2254. program does not support recovery.  For example, suppose you were sending a
  2255. file called OOFA when the connection hung up, and that the receiving Kermit
  2256. program had been instructed to keep incompletely received files (SET FILE
  2257. INCOMPLETE KEEP).  If the transfer was in binary mode, you could note the
  2258. length of the partial file on the receiving end; let's say it was 123456.
  2259. Then tell the file receiver to:
  2260.  
  2261.   SET FILE COLLISION APPEND
  2262.   RECEIVE
  2263.  
  2264. and tell the sender to:
  2265.  
  2266.   SET FILE TYPE BINARY
  2267.   PSEND OOFA 123456
  2268.  
  2269. If the receiver does not support SET FILE COLLISION APPEND, you could just
  2270. use PSEND to create a new file:
  2271.  
  2272.   SET FILE TYPE BINARY
  2273.   PSEND OOFA 123456 OOFA.NEW
  2274.  
  2275. and then, after the transfer is complete, join the two pieces together on
  2276. the receiving end, using a system command or utility.
  2277.  
  2278. 4.2. Control-Character Unprefixing
  2279.  
  2280. This feature allows you to improve C-Kermit's file transfer performance on
  2281. connections that you know are transparent to certain control characters.  It
  2282. lets you tell C-Kermit exactly which control characters need to be prefixed
  2283. and encoded, and which ones can be transmitted "bare" when sending files.
  2284.  
  2285. SET { SEND, RECEIVE } CONTROL-PREFIX <code>
  2286.   Sets the control-character prefix which C-Kermit uses to the ASCII character
  2287.   represented by the numeric <code>.  The <code> must be in the range 33-63 or
  2288.   96-126.  Normally it is 35 (#, number sign).  SEND is the one that C-Kermit
  2289.   should use in packets it is sending.  RECEIVE should normally never be used,
  2290.   except to override some kind of protocol negotiation foulup with a buggy
  2291.   commercial or shareware Kermit implementation.
  2292.   Synonym: SET { SEND, RECEIVE } QUOTE.
  2293.  
  2294. SET CONTROL-CHARACTER UNPREFIXED { <code>..., ALL }
  2295.   Says you think it's safe to include the control character represented by
  2296.   <code> without prefixing in packets which C-Kermit sends.  The <code> is the
  2297.   numeric ASCII code for a control character, 1-31, 127-159, or 255.  For
  2298.   example, linefeed (code 10) is normally sent as two printable characters,
  2299.   #J.  SET CONTROL UNPREFIXED 10 lets linefeed be sent literally.  Include the
  2300.   word ALL to unprefix all control characters (except 0).  Or you can specify
  2301.   a list of one or more numeric values, separated by spaces, e.g.:
  2302.  
  2303.      SET CONTROL UNPREFIXED 2 4 5 18 20
  2304.  
  2305.   If you can safely declare a lot of control characters to be UNPREFIXED, you
  2306.   can send binary files (esp. precompressed ones) up to about 20-25% faster.
  2307.   If you include a control character in this category that causes trouble,
  2308.   however, the transfer will fail, so experimentation is necessary.  This
  2309.   command will not let you "unprefix" the NUL character (0), nor the following
  2310.   characters if C-Kermit's current FLOW-CONTROL setting is XON/XOFF: 17, 19,
  2311.   145, 147.  Nor can you unprefix character 255 on a TELNET connection (if
  2312.   C-Kermit *knows* it's a TELNET connection).
  2313.  
  2314. SET CONTROL-CHARACTER PREFIXED { <code>..., ALL }
  2315.   Says that the given control character(s) must be prefixed in Kermit packets.
  2316.   By default, all control characters, 0-31, 127-159, and 255, are prefixed.
  2317.  
  2318. SHOW CONTROL-PREFIXING
  2319.   Displays the current control prefix and a table of all control-character
  2320.   values, showing 1 for each one that will be prefixed and 0 for each one that
  2321.   will not be prefixed.
  2322.  
  2323. SET REPEAT PREFIX <code>
  2324.   Sets the repeat-count prefix to the ASCII character represented by the
  2325.   numeric <code>.  Normally it is 126 (tilde).  The <code> must be in the
  2326.   range 33-63 or 96-126.
  2327.  
  2328. SET REPEAT COUNTS { OFF, ON }
  2329.   Turns the repeat-count compression mechanism off and on.  REPEAT COUNTS are
  2330.   ON by default.  Turn them OFF in case they cause trouble when used against a
  2331.   faulty Kermit implementation in a shareware or commercial communications
  2332.   program.  Or when transferring precompressed files (like .ZIP or .Z files),
  2333.   since it is very rare to find runs of repeated characters, and disabling the
  2334.   repeat-count mechanism frees another character from prefixing, thus
  2335.   resulting in slightly more efficient transfers.
  2336.  
  2337. The purpose of the SET CONTROL UNPREFIX command is to UNILATERALLY configure
  2338. C-Kermit to skip prefixing and printable encoding of selected control
  2339. characters to achieve higher performance when sending files.  This feature
  2340. takes advantage of the fact that most Kermit programs will accept control
  2341. characters within packet data-fields literally, provided they get through at
  2342. all, and provided they do not have a special meaning to the receiving Kermit
  2343. program (such as, in many cases, the packet-start and packet-end characters).
  2344.  
  2345. There is no protocol negotiation between the two Kermit programs to determine
  2346. a "safe set" of control characters, and in fact any such negotiation would be
  2347. largely meaningless, because in most cases the two Kermit programs don't have
  2348. all the needed information.  For example, there might be a terminal server or
  2349. PAD between them that is sensitive to a particular control character, even
  2350. though the two Kermit programs are not.
  2351.  
  2352. If you include in your SET CONTROL UNPREFIXED list one or more control
  2353. characters that are unsafe, any of several things might happen:
  2354.  
  2355.  1. Transfer of any file containing these characters will fail.
  2356.  
  2357.  2. The receiving Kermit program might be interrupted or halted.
  2358.  
  2359.  3. Your connection might become hung, stuck, or broken.  For example because
  2360.     a control character causes a PAD, terminal server, modem, or similar
  2361.     device to go from online mode to command mode.
  2362.  
  2363. The set of safe control characters depends on the two Kermit programs, their
  2364. settings, the host operating systems and their settings, the communication and
  2365. flow control methods, and all the devices, drivers, and protocols that lie
  2366. between the two Kermit programs.  Therefore, this feature is recommended only
  2367. for use on well-known and often-used connections, so the time invested in
  2368. finding an optimal unprefixed control-character set will pay off over many
  2369. file transfers.
  2370.  
  2371. You must be willing to experiment in order to achieve the optimal safe set.
  2372. Here is one way.  Create a short file containing all 256 possible bytes in
  2373. sequence and also in pairs, as well as several text strings surrounded by
  2374. CRLFs; for example, compile and run the following program, redirecting its
  2375. output to a file:
  2376.  
  2377. ---(cut here)---
  2378. #include <stdio.h>
  2379. main() {
  2380.     int i;
  2381.     puts("\r\n256-byte test pattern:\r\n");
  2382.     for (i = 0; i < 256; i++) putchar(i); /* singles */
  2383.     puts("\r\n256-double-byte test pattern:\r\n");
  2384.     for (i = 0; i < 256; i++) { putchar(i); putchar(i); } /* in pairs */
  2385.     puts("\r\nEnd of test patterns\r\n");
  2386. }
  2387. ---(cut here)---
  2388.  
  2389. To send the file to MS-DOS Kermit from either C-Kermit or MS-DOS Kermit,
  2390. try the following settings:
  2391.  
  2392.   SET CONTROL UNPREFIXED ALL ; Turn prefixing off for all but 0
  2393.   SET CONTROL PREFIXED 1     ; Turn it back on for packet-start character
  2394.   SET CONTROL PREFIXED 129   ; and 8-bit version thereof
  2395.  
  2396. (HINT: Abbreviate SET CON U and SET CON P)
  2397.  
  2398. Or to send the file from MS-DOS Kermit to C-Kermit, tell MS-DOS Kermit to:
  2399.  
  2400.   SET CON U ALL   ; Turn prefixing off for all
  2401.   SET CON P 0     ; Turn it back on for NUL
  2402.   SET CON P 3     ; and for Ctrl-C
  2403.   SET CON P 131   ; as well as Ctrl-C + parity bit
  2404.  
  2405. NOTE 1: 3 and 131 normally need not be prefixed when sending to C-Kermit
  2406. 5A(190) or later, nor to 5A(189) if you have SET TRANSFER CANCELLATION OFF.
  2407.  
  2408. NOTE 2: 1 and 129 need not be prefixed when sending files *to* C-Kermit, but
  2409. must be prefixed when sending files to MS-DOS Kermit.
  2410.  
  2411. NOTE 3: 13 (carriage return, the customary packet terminator) normally need
  2412. not be prefixed when sending files to either C-Kermit or MS-DOS Kermit,
  2413. except on a TELNET connection (because TELNET servers are likely to change
  2414. CRLF into CR).
  2415.  
  2416. Try to send the test file in binary mode.  If it works, fine.  If not, try
  2417. prefixing some of the other likely control characters (see below).  Once you
  2418. find the minimum set of prefixed control characters for the test file, it is
  2419. likely they will also work for any other file on the same connection.  Try
  2420. sending a large precompressed (e.g. ZIP or .Z or GZIP) file.  And, of course,
  2421. for maximum performance, also use a window size greater than 1 (say, 3) and a
  2422. packet length of 1000 or more.
  2423.  
  2424. Under ideal conditions (totally transparent and clean serial connection, no
  2425. Xon/Xoff, and C-Kermit has been told to SET TRANSFER CANCELLATION OFF, see
  2426. below), the minimum set of control characters that need to be prefixed is:
  2427.  
  2428.   SENDER          RECEIVER         PREFIXED CONTROLS
  2429.    MS-DOS Kermit   MS-DOS Kermit    1 129
  2430.    MS-DOS Kermit   C-Kermit         0
  2431.    C-Kermit        MS-DOS Kermit    0 1 129
  2432.    C-Kermit        C-Kermit         0
  2433.  
  2434. For example, to set up C-Kermit to unprefix the minimum set of prefixed
  2435. control characters for sending files to MS-DOS Kermit, tell C-Kermit to:
  2436.  
  2437.   SET FLOW NONE            ; Or SET FLOW RTS/CTS
  2438.   SET CONTROL UNPREFIX ALL
  2439.   SET CONTROL PREFIX 1 129 ; C-Kermit always prefixes character 0
  2440.  
  2441. When the mininum set doesn't work, consult this list of control characters
  2442. that are apt to cause trouble and are therefore likely candidates for
  2443. prefixing.  In particular, note that unprefixing of the packet-start character
  2444. (normally 1 and 129), can cause problems when sending to C-Kermit if the
  2445. communication link (including device input buffers) is noisy or apt to lose
  2446. characters.
  2447.  
  2448. set con p 0   ; Ctrl-@ = NUL, internal string terminator in C-Kermit.
  2449.               ;          Also, often discarded as padding.
  2450. set con p 1   ; Ctrl-A = Packet-start character.
  2451. set con p 3   ; Ctrl-C = Packet breakout for remote-mode C-Kermit,
  2452.               ;          packet breakout for server-mode MS-DOS Kermit,
  2453.               ;          likely to cause interruptions on other systems.
  2454. set con p 13  ; Ctrl-M = Carriage return, packet-end character.
  2455.               ;          Always prefix on TELNET connections.
  2456. set con p 14  ; Ctrl-N = Shift Out
  2457. set con p 15  ; Ctrl-O = Shift In
  2458. set con p 16  ; Ctrl-P = Commonly-used X.25/X.3 PAD escape character
  2459. set con p 17  ; Ctrl-Q = XON, must be prefixed with Xon/Xoff flow control
  2460. set con p 19  ; Ctrl-S = XOFF, must be prefixed with Xon/Xoff flow control
  2461. set con p 27  ; Ctrl-[ = ESC, prefix if going through some kind of ANSI device
  2462. set con p 28  ; Ctrl-\ = CONNECT-mode escape for C-Kermit
  2463. set con p 29  ; Ctrl-] = CONNECT-mode escape for TELNET
  2464. set con p 30  ; Ctrl-^ = Cisco terminal server escape.
  2465. set con p 127 ; Ctrl-? = DEL, often discarded as padding.
  2466.               ;          Also becomes TELNET IAC if parity bit is added.
  2467. set con p 128 ; = NUL    + 128 (i.e. NUL + parity bit)
  2468. set con p 129 ; = Ctrl-A + 128
  2469. set con p 131 ; = Ctrl-C + 128
  2470. set con p 141 ; = CR     + 128
  2471. set con p 145 ; = XON    + 128
  2472. set con p 147 ; = XOFF   + 128
  2473. set con p 255 ; 255 = TELNET IAC, must be prefixed on TCP/IP TELNET connections
  2474.                 INCLUDING TELNET connections through terminal servers!
  2475.  
  2476. Note, by the way, that nothing special need be done for SLIP connections,
  2477. since the four special SLIP characters are in the G1 printable range:
  2478.  
  2479.   192 SLIP END character
  2480.   219 SLIP ESC character
  2481.   220 SLIP END quote
  2482.   221 SLIP ESC quote
  2483.  
  2484. Here is a suggested (conservative) starting point for experimenting with
  2485. control-character unprefixing.  Tell the file sender to:
  2486.  
  2487.   SET CONTROL UNPREFIX ALL
  2488.   SET CONTROL PREFIX 0 1 3 13 17 19 127 129 131 141 145 147 255
  2489.  
  2490. Perhaps some of these can be removed, depending on the connection, and maybe
  2491. others need to be added.  If you are going through a terminal server or an
  2492. intermediate Kermit or TELNET program, also add the appropriate escape
  2493. character values (bare, and plus 128).
  2494.  
  2495. PREFIXING NOTES:
  2496.  
  2497. If C-Kermit or MS-DOS Kermit has initiated a TELNET connection, prefixing of
  2498. 255 (TELNET IAC) is forced automatically.
  2499.  
  2500.   IMPORTANT WARNING: When you have a TELNET connection through a
  2501.   terminal server, neither one of the Kermit programs knows that
  2502.   it's a TELNET connection, and in this case unprefixing of 255 is
  2503.   NOT automatically disabled.  This can cause file transfer failures.
  2504.   When in doubt, do not unprefix 255.
  2505.  
  2506. Kermit will not let you unprefix XON (17), XOFF (19), XON+128 (145), or
  2507. XOFF+128 (147) if its FLOW-CONTROL setting is XON/XOFF.  If you want to
  2508. unprefix these, make sure *both* Kermits have first been told to SET FLOW
  2509. NONE (or RTS/CTS), and that XON/XOFF flow control is not in effect anywhere
  2510. along the communication path between the two Kermits.
  2511.  
  2512. When sending files to C-Kermit 189 or earlier, and C-Kermit is in remote
  2513. mode, you should normally tell the file sender to SET CONTROL PREFIX 3 and
  2514. SET CONTROL PREFIX 131, because C-Kermit 189 and earlier (by default) takes
  2515. two Ctrl-C's (3 or 131) in a row as cancellation of packet-mode.  However,
  2516. you can UNPREFIX these characters if you know your files do not contain two
  2517. Ctrl-C's in a row, or if you tell C-Kermit to SET TRANSFER CANCELLATION OFF,
  2518. or SET TRANSFER CANCELLATION ON <code> <number> when you know that <number>
  2519. copies of <code> do not occur in a row in the data.  When sending files to
  2520. edit 190 of C-Kermit and later, you can leave 3 and 131 unprefixed unless you
  2521. have disabled repeat-count compression.
  2522.  
  2523. 4.3. Keyboard Cancellation of Packet Mode
  2524.  
  2525. (This feature does not apply to OS/2 C-Kermit)
  2526.  
  2527. 4.4. New RECEIVE Command Features
  2528.  
  2529. In edit 190 and later, the RECEIVE command can accept a device or directory
  2530. name as an argument, and all incoming files will go into the specified device
  2531. or directory under the names they were sent with, for example:
  2532.  
  2533.   RECEIVE D:
  2534.  
  2535. or:
  2536.  
  2537.   RECEIVE D:\BUDGET\1995
  2538.  
  2539. If the name is not a device or directory name, it is treated as before: as
  2540. a name under which to store the (first) incoming file.  This change also
  2541. affects the '-a' ("as-name") command-line option.
  2542.  
  2543. When SET FILE NAMES LITERAL is in effect, and a file arrives that is to be
  2544. stored on a FAT (i.e. DOS) volume but its name is illegal for FAT, the file
  2545. is no longer refused.  Instead, the file is created with a legal FAT name
  2546. and the original name is saved in the file's Extended Attributes, so it is
  2547. visible on the desktop and usable on HPFS volumes.  Edit 190.
  2548.  
  2549. 4.5. Automatic Directory Creation
  2550.  
  2551. File names are treated according to the SET FILE NAMES command (see p.114 of
  2552. "Using C-Kermit"), CONVERTED (the default) or LITERAL.  SET FILE NAMES LITERAL
  2553. means:
  2554.  
  2555.  . When sending files, put the filespec into the outgoing file header packet
  2556.    exactly as the user typed it.  What happens on the receiving end is
  2557.    entirely up to the receiver.
  2558.  
  2559.  . When receiving files, use the file specification from the incoming file
  2560.    header exactly as given, so if it happens to include a device or directory
  2561.    specification, C-Kermit attempts to use it, and if the device and/or
  2562.    directory does/do not exist or are not write-accessible, the transfer fails.
  2563.  
  2564. SET FILE NAMES CONVERTED, which is the default, transforms outgoing filenames
  2565. by (a) removing device, directory, and other "extraneous" information, (b)
  2566. uppercasing all lowercase letters, (c) making sure there is no more than one
  2567. period, and (d) translating all "uncommon" characters to X's.
  2568.  
  2569. A new command allows us to strike a compromise between these two methods:
  2570.  
  2571.   SET { SEND, RECEIVE } PATHNAMES { ON, OFF }
  2572.  
  2573. SET SEND PATHNAMES ON means to leave pathnames ON outbound file names, which
  2574. is the default for compatibility with earlier behavior.  Note, however, that
  2575. PATHNAMES are always stripped from outbound filenames when FILE NAMES are
  2576. CONVERTED, and in OS/2, disk letters are always stripped.
  2577.  
  2578. SET SEND PATHNAMES OFF means to strip OFF path information, leaving only the
  2579. file's name.  SET SEND PATHNAME applies only to the filename given directly to
  2580. a SEND or MSEND command, and not to the "as-name", which is always sent
  2581. literally and without modification, regardless of SEND PATHNAME or FILE NAMES
  2582. settings.
  2583.  
  2584. SET RECEIVE PATHNAMES applies to the filenames in incoming file header
  2585. packets; ON means to leave the name alone and attempt to use it as-is, OFF
  2586. means to attempt to strip the path information ON THE ASSUMPTION that any path
  2587. information found there would be in the notation of the local file system, and
  2588. therefore recognizable.  If not, the results are unpredictable; for example,
  2589. if a file called MYVAX::DUA0:[OLAF.PICS]MONA_LISA.GIF;17 arrives on an OS/2
  2590. system, OS/2 C-Kermit can not be expected to distinguish the path information
  2591. from the name (it is a general principle of communication protocols that a
  2592. particular computer must not be expected to understand the conventions and
  2593. formats of some other kind of computer).
  2594.  
  2595. When a file arrives whose name includes a directory specification (with either
  2596. '/' or '\' as the directory separator), OS/2 C-Kermit will attempt to put it
  2597. in the specified directory.
  2598.  
  2599. In the 32-bit version only: If the incoming file name contains OS/2 directory
  2600. information (such as C:\TEXT\LETTERS\ANGRY\OOFA.TXT) -- either absolute or
  2601. relative, then, if the named directory, or any of its ancestors, does not
  2602. exist, Kermit attempts to create it (or them) before opening the output file.
  2603.  
  2604. For example, suppose your current directory is C:\USR\OLGA\BUDGET, and
  2605. a file arrives under the name AAA\BBB\CCC\DDD\BANKRUPT.TXT, and that the
  2606. C:\USR\OLGA\BUDGET\AAA directory already exists, but it does not have a BBB
  2607. subdirectory.  Then Kermit will create the BBB subdirectory, and then the CCC
  2608. subdirectory under BBB, and then the DDD subdirectory under CCC, and then it
  2609. will store the BANKRUPT.TXT file in the C:\USR\OLGA\BUDGET\AAA\BBB\CCC\DDD
  2610. directory.
  2611.  
  2612. If a non-existent or non-writable drive is specified in the directory path,
  2613. the directory creation will fail.
  2614.  
  2615. Use the SHOW FILE command to display the SEND/RECEIVE PATHNAME settings.
  2616.  
  2617. 4.6. Pausing Between Packets
  2618.  
  2619. The new command:
  2620.  
  2621.   SET { SEND, RECEIVE } PAUSE <number>
  2622.  
  2623. tells C-Kermit to pause the given number of milliseconds (thousandths of
  2624. seconds) before sending each packet.  This might be necessary when
  2625. communicating with certain devices or over certain kinds of connections.
  2626. Don't use this except as a final resort, since it slows transfers down.  SHOW
  2627. PROTOCOL displays the current setting.  SET SEND PAUSE and SET RECEIVE PAUSE
  2628. do exactly the same thing.  Edit 190.
  2629.  
  2630. 4.7. Fullscreen File Transfer Display Improvements
  2631.  
  2632. 4.7.1. Thermometer
  2633.  
  2634. OS/2 C-Kermit now shows a file-transfer "thermometer" (percent bar-graph) to
  2635. graphically represent the progress of the file transfer.  It can be explicitly
  2636. selected or deselected via the new trailing argument to this command:
  2637.  
  2638.   SET FILE DISPLAY FULLSCREEN { THERMOMETER, NO-THERMOMETER }
  2639.  
  2640.  
  2641. A running display of the transfer speed in characters per second (CPS) is
  2642. also shown; it is computed as a weighted average of actual file characters
  2643. transferred so far versus elapsed time, with progressively higher weight being
  2644. given to the most recent time period.
  2645.  
  2646. 4.7.2. Repainting the Screen
  2647.  
  2648. In case your screen should become confused or badly formatted during file
  2649. transfer, you can make C-Kermit clear and repaint the file transfer display
  2650. screen by typing Ctrl-L (or L or R or r) while the display is active.
  2651. Control-W is also accepted for this purpose.  Edit 190.
  2652.  
  2653. 4.8. Transferring OS/2 Files with All of Their Attributes Intact
  2654.  
  2655. Edit 190 also adds support for SET FILE TYPE LABELED, as in the VMS version of
  2656. C-Kermit.  This allows OS/2 files to be transferred with all their extended
  2657. attributes intact -- i.e. the desktop stuff; icons, long file names on FAT
  2658. partitions, etc.  Consult the VMS appendix of "Using C-Kermit" for information
  2659. on labeled file transfer.  Briefly, the idea is that an OS/2 file can be
  2660. transferred from one OS/2 system to another with all its extended attributes
  2661. intact.  It can also be transferred to an intermediate (non-OS/2) system for
  2662. archival, and later transferred to another OS/2 system and restored to its
  2663. original form.  An OS/2-specific SET FILE LABEL command is also provided for
  2664. controlling how regular OS/2 file attributes are handled in labeled file
  2665. transfers:
  2666.  
  2667.   SET FILE LABEL {ARCHIVE, READ-ONLY, HIDDEN, SYSTEM, EXTENDED} {ON, OFF}
  2668.  
  2669. By default, all but ARCHIVE are ON.  All of a file's attributes are always
  2670. transmitted; this command tells the file receiver whether to pay attention to
  2671. them (ON) or not (OFF).  Use SHOW LABELED-FILE-INFO to display the values of
  2672. these settings.
  2673.  
  2674. 4.9. Transferring OS/2 Directory Trees
  2675.  
  2676. Using the new REXX interface C-Kermit provides a XSEND command similar to 
  2677. that provided for years with MS-DOS Kermit.  The syntax is:
  2678.  
  2679.   XSEND <path> <filespec>
  2680.  
  2681. For example:
  2682.  
  2683.   XSEND C:\ *
  2684.  
  2685. (note the space between the <path> and the <filespec>.)
  2686.  
  2687. XSEND recursively traverses the directory tree pointed to by the path and
  2688. sends all files meeting the filespec requirements to another computer.  To
  2689. send an entire drive (desktop) from one OS/2 machine to another:
  2690.  
  2691.  . Place the remote PC's C-Kermit into server mode.
  2692.  . Issue the REMOTE SET FILE TYPE LABELED command to the local PC's Kermit.
  2693.  . Change the current working directory on the remote machine to where you 
  2694.    want the files to be sent by giving a REMOTE CD command.
  2695.  . Issue an XSEND command on the local PC.
  2696.  
  2697. The entire directory tree will be replicated on the remote system including
  2698. the Extended Attributes.
  2699.  
  2700. 4.10. File Transfer Hints and Tips
  2701.  
  2702. Some communication software claims to implement sliding windows, but does so
  2703. incorrectly.  If sliding window transfers fail, set C-Kermit's window size to
  2704. the smallest one that works, for example:
  2705.  
  2706.   SET WINDOW 1
  2707.  
  2708. There is no way send the complete contents of a file in text mode if the file
  2709. contains a Ctrl-Z character that is not the last character in the file.  In
  2710. other words, Ctrl-Z is always treated as end-of-file when the FILE TYPE is set
  2711. to TEXT.  There should be a SET EOF {CTRLZ, NOCTRLZ} command as in MS-DOS
  2712. Kermit to control the treatment of Ctrl-Z characters in text files.
  2713.  
  2714. SET FILE COLLISION UPDATE has the following peculiarity: On FAT (i.e. DOS)
  2715. file systems, a file's date/time is recorded with a granularity of 2 seconds,
  2716. whereas on most other kinds of file systems (UNIX, VMS, OS/2 HPFS, etc), it is
  2717. recorded to at least the exact second.  Thus when OS/2 C-Kermit records the
  2718. timestamp of an incoming file, the "one's place" of its time is truncated.  If
  2719. it was an odd number, therefore, it will be one second "older" than the
  2720. date/time of the original file.  Downloading the same file again with SET FILE
  2721. COLLISION UPDATE would result in a second, unnecessary transfer of the file,
  2722. since the remote file would appear to be newer than the local file.
  2723. Therefore, OS/2 C-Kermit, when making this comparison, will treat two times as
  2724. equal if (a) the local file's time is an even number, (b) the remote time is
  2725. equal to (of course) or exactly one second greater than the local time, and
  2726. (c) the local file system is FAT.
  2727.  
  2728. (5) NEW CLIENT/SERVER FEATURES
  2729.  
  2730. 5.1. New REMOTE Commands
  2731.  
  2732. The following features are all new to edit 190.
  2733.  
  2734. REMOTE PWD
  2735.   Allows the client to ask for the server's current directory in
  2736.   system-independent way.  Formerly, this could only be done via system-
  2737.   dependent REMOTE HOST commands.  The response is displayed on the screen.
  2738.  
  2739. REMOTE SET FILE TYPE { TEXT, BINARY, LABELED }
  2740.   The LABELED option has been added to this command in the VMS and OS/2
  2741.   versions only.  Also, the file type specified in this command also takes
  2742.   effect locally.  Previously, it was only sent to the server.  Edit 190.
  2743.  
  2744. REMOTE QUERY { KERMIT, SYSTEM, USER } <name>
  2745.   Asks the server to send the value of the variable of the given type that has
  2746.   the given name.  If the query succeeds, the value is displayed on your
  2747.   screen and it is also stored in a local read-only Kermit variable, \v(query)
  2748.   If the query fails, an error message is printed and the \v(query) variable
  2749.   is set to the empty string.
  2750.  
  2751.   In C-Kermit and MS-DOS Kermit, "KERMIT" variables are the \v(name) kind,
  2752.   such as \v(time), \v(version), \v(date), etc.  "SYSTEM" variables are DOS or
  2753.   UNIX environment variables, such as PATH, USER, HOME, or VMS logical names,
  2754.   etc.  USER variables are everything else -- \%a-z, \%1-9, and macro names
  2755.   used as long variable names.
  2756.  
  2757.   The <name> of a KERMIT or SYSTEM variable must be given in an
  2758.   implementation-independent format without special syntax, e.g. TIME, DATE,
  2759.   VERSION, PATH, USER, etc, rather than (say) \v(time), \$(PATH).  However,
  2760.   in most cases, case matters in system variables.  The <name> of a USER
  2761.   variable is given in the syntax of the server, e.g. \%a.
  2762.  
  2763. Examples:
  2764.  
  2765.   C-Kermit>remote query kermit time
  2766.   13:25:18
  2767.   C-Kermit>echo The server's time is: \v(query)
  2768.   The server's time is: 13:25:18
  2769.   C-Kermit>rem q k dir ; Note, abbreviations allowed.
  2770.   /usr/olga/letters
  2771.   C-Kermit>echo The server's current directory is: \v(query)
  2772.   The server's current directory is: /usr/olga/letters
  2773.   C-Kermit>rem q system USER
  2774.   olga
  2775.   C-Kermit>echo user = \v(query)
  2776.   user = olga
  2777.  
  2778. REMOTE ASSIGN <name> [ <value> ]
  2779.   Asks the server to assign the given <value> to the remote user variable
  2780.   denoted by <name>.  The <value> is fully evaluated LOCALLY before being sent
  2781.   to the Kermit server.  The maximum length for the value is governed by the
  2782.   maximum negotiated packet length, i.e. the server's RECEIVE PACKET-LENGTH.
  2783.   Synonym: REMOTE ASG.
  2784.  
  2785. Examples:
  2786.  
  2787.   C-Kermit>remote assign \%a \v(time) ; Assign client's time to server's \%a
  2788.   C-Kermit>remote query user \%a   
  2789.   13:41:18                            ; This is the client's time
  2790.   C-Kermit>rem asg myname Olga        ; Assign my name to server's myname macro
  2791.  
  2792. To force a string corresponding to a local variable name to be sent literally,
  2793. use two backslashes:
  2794.  
  2795.   C-Kermit>remote assign \%a \\v(time) ; Assign "\v(time)" to server's \%a.
  2796.   C-Kermit>remote query user \%a   
  2797.   13:41:18                             ; This is the server's time.
  2798.   C-Kermit>
  2799.  
  2800. You can disable and enable the server's handling of REMOTE QUERY and ASSIGN
  2801. with the commands:
  2802.  
  2803.   DISABLE QUERY    The server should not respond to REMOTE QUERY commands
  2804.   DISABLE ASSIGN   The server should not respond to REMOTE ASSIGN commands
  2805.   ENABLE QUERY     The server should respond to REMOTE QUERY commands
  2806.   ENABLE ASSIGN    The server should respond to REMOTE ASSIGN commands
  2807.  
  2808. By default, like all other ENABLE/DISABLE items, the initial state is ENABLEd.
  2809.  
  2810. 5.2. "WHATAMI" -- Making Kermit GET more like FTP GET
  2811.  
  2812. Those who are accustomed to using client/server applications such as FTP
  2813. expect that certain kinds of commands, when given to the client, will affect
  2814. the server correspondingly.  Most notable among these commands (in FTP's case)
  2815. are those that set the transfer mode: BINARY, ASCII, etc.
  2816.  
  2817. In Kermit, however, the transfer mode has always been determined by the file
  2818. sender, a concept totally unrelated to the client/server distinction, and less
  2819. than obvious to most people.  Furthermore, Kermit programs do not always have
  2820. a client/server relationship -- there is also the send/receive arrangement.
  2821.  
  2822. C-Kermit 5A(190) and MS-DOS Kermit 3.14 (when it becomes available) implement
  2823. a new "What Am I" feature, which operates transparently to the user (i.e.
  2824. there are no commands to control it), and results in FTP-like operation when:
  2825.  
  2826.  1. One Kermit program is in SERVER mode, the other is a client, AND:
  2827.  
  2828.  2. Both Kermit programs support the WHATAMI feature.  Currently, these are
  2829.     limited to C-Kermit 5A(190), MS-DOS Kermit 3.14.  A forthcoming release
  2830.     of IBM Mainframe Kermit will support it too.
  2831.  
  2832. Presently, the WHATAMI feature affects only the GET command, and addresses the
  2833. following scenario:
  2834.  
  2835.  1. User starts a Kermit server, giving it no special settings.
  2836.  
  2837.  2. User tells the client to:
  2838.  
  2839.       SET FILE TYPE BINARY
  2840.       SET FILE NAMES LITERAL
  2841.       GET cku190.tar.Z
  2842.     
  2843.  3. The file is transferred in text mode when the user expected a binary
  2844.     transfer, and the name was converted even though the user wanted it not
  2845.     to be changed.
  2846.     
  2847. At the beginning of any protocol transaction, the two Kermits exchange "What
  2848. Am I" information as part of the S or I packet data.  This information
  2849. includes (a) whether I am a client or server; (b) my transfer mode (text or
  2850. binary); and (c) my file name handling (literal or converted).
  2851.  
  2852. Then, when the server receives a GET-command packet from the client, AND if
  2853. WHATAMI information has been successfully exchanged, then the server switches
  2854. its file transfer mode and file name handling to the client's corresponding
  2855. modes.  Nothing special happens when files are sent TO the server, since this
  2856. works right anyway, using the previous mechanisms.
  2857.  
  2858. Hopefully this change will result in more pleasant surprises than unpleasant
  2859. ones.  One Beta tester (a seasoned Kermit user), however, was unpleasantly
  2860. surprised when he sent the following commands from a client to a server:
  2861.  
  2862.   REMOTE SET FILE TYPE BINARY
  2863.   GET OOFA.ZIP
  2864.  
  2865. The file arrived in text mode because the client was in text mode.  The user
  2866. was relying of the old rule, by which the file sender informs the file
  2867. receiver of the transfer mode via the attribute packet, but since the WHATAMI
  2868. exchange took place after the REMOTE SET, it changed the server's mode back to
  2869. text.  To cure this situation, REMOTE SET FILE TYPE now sets the local file
  2870. transfer mode too.
  2871.  
  2872. Should all this sound confusing, remember that the WHATAMI feature (and the
  2873. other mechanisms for reconciling file transfer mode) make a difference only
  2874. when the sender and receiver's file transfer modes do not agree.  The rules
  2875. can be summarized like this:
  2876.  
  2877.  1. To be certain of the file transfer mode, give the same SET FILE TYPE
  2878.     command to both Kermits (exception: when VMS C-Kermit is sending a file,
  2879.     it determines the transfer mode for each file automatically).
  2880.  
  2881. In case you did not do this, and the transfer modes of the two Kermit programs
  2882. disagree when the file transfer starts:
  2883.  
  2884.  2. If the file sender is VMS C-Kermit, it determines the file type 
  2885.     automatically unless its file type has been set to IMAGE or LABELED.
  2886.     Otherwise:
  2887.  
  2888.  3. If both Kermits have the WHATAMI feature, the client program's transfer
  2889.     mode prevails.  Otherwise:
  2890.  
  2891.  4. If both Kermit programs have Attribute-packet capability, the sender will
  2892.     inform the receiver of the transfer mode, and the receiver will switch to
  2893.     the sender's transfer mode automatically.  Otherwise:
  2894.  
  2895.  5. The transfer proceeds with each Kermit program using the transfer mode
  2896.     that the user has told it to use.  This can result in mismatches, which
  2897.     are usually not what was intended.
  2898.  
  2899. Since not all Kermit implementations -- particularly those found in commercial
  2900. or shareware software packages -- implement the WHATAMI feature or Attribute
  2901. packets, it is always safest to inform both Kermit programs of the transfer
  2902. mode prior to file transfer.
  2903.  
  2904. (6) INTERNATIONAL CHARACTER SETS
  2905.  
  2906. Since "Using C-Kermit" was published:
  2907.  
  2908.  . Edit 189 of C-Kermit added support for Hebrew character sets.
  2909.  . Edit 190 added Hebrew terminal emulation to OS/2 C-Kermit.
  2910.  . Edit 190 added support for the Hewlett-Packard Roman8 character set.
  2911.  
  2912. 6.1. Hebrew File Transfer
  2913.  
  2914. C-Kermit 5A(189) has the following new commands for Hebrew file transfer:
  2915.  
  2916.   SET TRANSFER CHARACTER-SET HEBREW-ISO = ISO 8859-8 Latin/Hebrew Alphabet
  2917.  
  2918.   SET FILE CHARACTER-SET HEBREW-ISO     = ISO 8859-8 Latin/Hebrew Alphabet
  2919.   SET FILE CHARACTER-SET CP862          = Hebrew PC Code Page
  2920.   SET FILE CHARACTER-SET HEBREW-7       = DEC 7-Bit (VT100) Hebrew
  2921.  
  2922. These commands work just like the corresponding commands for Cyrillic
  2923. character sets, described in Chapter 9 of "Using C-Kermit".  When receiving
  2924. files, C-Kermit recognizes Hebrew files automatically if the file sender tags
  2925. the file as Hebrew in the Attribute packet, which the file sender should do if
  2926. it has been given the SET TRANSFER CHARACTER-SET HEBREW command; C-Kermit does
  2927. not, however, switch automatically to a Hebrew file character-set, so you must
  2928. choose one in advance if that's what you want.  The tag is "I6/138" (these are
  2929. ISO registration numbers).  When sending files in Hebrew mode, of course,
  2930. C-Kermit includes the same tag.
  2931.  
  2932. An invertible translation table between Latin/Hebrew and CP862 is used during
  2933. both terminal emulation and file transfer.  The translation table between
  2934. Hebrew-7 and Latin/Hebrew, however, is not invertible because these character
  2935. sets are different sizes.
  2936.  
  2937. Here is an example of uploading a Hebrew file from a PC to UNIX.  The PC
  2938. version is coded in the Hebrew PC code page, and the UNIX version is to be
  2939. stored in the 7-bit Hebrew character-set so it can be sent as network e-mail:
  2940.  
  2941.   C-Kermit> set file character-set hebrew-7 ; I want a 7-bit version for email
  2942.   C-Kermit> receive                         ; Wait for the file.
  2943.   <Alt-X>                                   ; Escape back to the PC
  2944.   MS-Kermit> set file type text             ; Make sure we are in text mode
  2945.   MS-Kermit> set file character-set cp862   ; File coded in Hebrew PC code page
  2946.   MS-Kermit> set xfer character-set hebrew  ; Send using ISO Latin/Hebrew
  2947.   MS-Kermit> send rab.oof                   ; Send the file
  2948.  
  2949. The file sender automatically tells the file receiver that the transfer
  2950. character-set is Hebrew.
  2951.  
  2952. The three Hebrew character sets are also available for use in C-Kermit's
  2953. TRANSLATE command, which translates a local file from one character-set to
  2954. another.  Thus you can use C-Kermit to convert a local file from, say,
  2955. Latin/Hebrew to Hebrew-7.
  2956.  
  2957. C-Kermit's Hebrew file transfer features can be used in conjunction with
  2958. MS-DOS Kermit 3.13 and later (with which C-Kermit shares the same translation
  2959. tables to ensure consistent translations) and IBM Mainframe Kermit 4.2 or
  2960. later, which translates between Latin/Hebrew and IBM CECP 424 (the Hebrew
  2961. EBCDIC Country Extended Code Page).
  2962.  
  2963. 6.2. Hebrew Terminal Emulation
  2964.  
  2965. There is no support for right-to-left screen-writing direction or other
  2966. terminal emulation features in C-Kermit, since C-Kermit (except the OS/2 and
  2967. Macintosh versions) does not do terminal emulation itself, but just provides a
  2968. terminal-independent "pipe" to your terminal emulator.  However, you can still
  2969. have C-Kermit provide the character translations during CONNECT mode:
  2970.  
  2971.   SET TERMINAL CHARACTER-SET { HEBREW-ISO, HEBREW-7, CP862 } [ local-cset ]
  2972.  
  2973. The terminal character-set affects not only CONNECT mode, but also the session
  2974. log and the TRANSMIT command.
  2975.  
  2976. Please refer to section 3.9 for additional details.
  2977.  
  2978. 6.3. The Hewlett Packard Roman8 Character Set
  2979.  
  2980. C-Kermit 5A(190) adds support for Hewlett Packard ROMAN8 as a file
  2981. character-set and a terminal character-set.  This is an 8-bit character-set
  2982. roughly equivalent, but not identical, to Latin-1, and (of course) with
  2983. entirely different encoding.  The translations between HP ROMAN8 and Latin-1
  2984. are invertible.
  2985.  
  2986. (7) SCRIPT PROGRAMMING
  2987.  
  2988. 7.1. New IF Commands
  2989.  
  2990. IF DIRECTORY <name> succeeds if <name> is the name of a directory or a
  2991.   file-structured device, fails otherwise.  Edit 190.
  2992.  
  2993. IF NEWER <file1> <file2> compares modification (or creation) date/times of two
  2994.   files, succeeds if first file is newer than second file.  Edit 190.
  2995.  
  2996. IF REMOTE-ONLY succeeds if C-Kermit was started with the -R (uppercase)
  2997.   command-line option, fails otherwise.  This lets you advise C-Kermit that you
  2998.   only intend to use it in remote mode; the initialization and customization
  2999.   files can (and the standard ones do) include IF REMOTE-ONLY commands to skip
  3000.   over time-and-space-consuming items, such as the dialing and services
  3001.   directories, that will not be used in remote mode.  This allows Kermit to
  3002.   start more quickly.  For examples of use, see the standard initialization
  3003.   file, ckermit.ini / .kermrc.  Edit 190.
  3004.  
  3005. IF EQUAL, IF LLT, IF LGT string comparison commands, as of edit 190, allow the
  3006.   use of braces around comparands that contain imbedded spaces, for
  3007.   example:
  3008.  
  3009.     IF EQUAL \%a {sentence with four words} echo They are equal.
  3010.  
  3011.   Prior to edit 190, constructions like this would cause a parse error (see
  3012.   p.239, "Using C-Kermit").
  3013.  
  3014. 7.2. New \v() Variables
  3015.  
  3016. \v(charset) C-Kermit's local character set.  Use this (e.g.) in scripts
  3017.   for deciding which character set to use when printing screen messages.
  3018.  
  3019. \v(connection) When C-Kermit has made a SET LINE or SET HOST connection, this
  3020.   variable tells the connection type: "serial", "tcp/ip telnet", "decnet lat",
  3021.   "decnet cterm", "x.25", etc.  If C-Kermit is in remote mode -- i.e. it has
  3022.   not made a connection to another computer -- the value of this variable is
  3023.   "remote".
  3024.  
  3025. \v(cps) gives speed in characters (bytes) per second of the most recent
  3026.   file transfer.  If a group of files was transferred, the figure applies
  3027.   to the whole group.
  3028.  
  3029. \v(dialstatus) contains a numeric result code for the most recent DIAL command:
  3030.  
  3031.   -1 No DIAL command given yet
  3032.    0 DIAL succeeded
  3033.    1 Modem type not specified
  3034.    2 Communication device not specified
  3035.    3 Device can't be opened
  3036.    4 Communication speed not specified
  3037.    5 Hangup failure
  3038.    6 Internal error (memory allocation, etc)
  3039.    7 Device input/output error
  3040.    8 DIAL TIMEOUT expired
  3041.    9 Dialing interrupted by user
  3042.   10 Modem not ready
  3043.   11-19 (reserved)
  3044.   20 Modem command error
  3045.   21 Failure to initialize modem
  3046.   22 Phone busy
  3047.   23 No carrier
  3048.   24 No dialtone
  3049.   25 Ring (incoming call)
  3050.   26 No answer
  3051.   27 Disconnected
  3052.   28 Answered by voice
  3053.   29 Access denied, forbidden call
  3054.   98 Unknown error
  3055.   99 Unspecified failure detected by modem
  3056.  
  3057. \v(ftype) = current FILE TYPE setting: "text" or "binary".  In OS/2 and VMS,
  3058.   also "labeled".  In VMS only, also "image".
  3059.  
  3060. \v(keyboard) (OS/2 only), the keyboard model: "88", "101", or "122".
  3061.  
  3062. \v(parity) = current PARITY setting: "even", "odd", "mark", "none", or "space".
  3063.  
  3064. \v(newline) is the newline character or sequence appropriate to the operating
  3065.   system where C-Kermit is running, for example linefeed (\10) for UNIX,
  3066.   carriage return (\13) for OS-9, carriage-return linefeed (\13\10) for OS/2.
  3067.  
  3068. \v(minput) = number telling which MINPUT search string was matched: 0 = none
  3069.   of them; 1 = the first one, etc. (see section on MINPUT below).
  3070.  
  3071. \v(rexx) (os/2 32-bit only) = the return value from the last Rexx command 
  3072.   issued.  
  3073.  
  3074. \v(rows) = the number of rows (lines) on the console terminal / screen,
  3075.   i.e. its length, -1 if unknown.
  3076.  
  3077. \v(cols) = the number of columns on the console terminal / screen,
  3078.   i.e. its width, -1 if unknown..
  3079.  
  3080. \v(terminal) = terminal type, if known, otherwise "unknown".
  3081.  
  3082. \v(query) = result of most recent REMOTE QUERY command.
  3083.  
  3084. \v(space) = number of free bytes on current storage device (OS/2 only).
  3085.  
  3086. \v(startup) (OS/2 only) Disk:Directory from which C-Kermit was started.
  3087.  
  3088. \v(sysid) = Kermit system/OS code, from pp.275-278 of the Kermit book:
  3089.        U8 = MS-DOS (and Windows)
  3090.        U1 = UNIX
  3091.        D7 = VMS
  3092.        UD = OS-9
  3093.        L3 = Amiga
  3094.        A3 = Macintosh
  3095.        UO = OS/2
  3096.        F3 = AOS/VS
  3097.        K2 = Atari ST
  3098.        MV = Stratus VOS
  3099.        etc...
  3100.  
  3101. 7.3. New \f() Functions
  3102.  
  3103. \Fdate(filename) returns the modification (or creation) date of the given
  3104.   file in "yyyymmdd hh:mm:ss" format, or else the empty string upon failure.
  3105.   Edit 190.
  3106.  
  3107. \Freplace(s1,s2,s3).  This function replaces all occurrences of the string s2
  3108.   in the string s1 by the string s3.  s1 and s2 must be at least one character
  3109.   long.  s3 can be omitted, in which case all occurrences of s2 are removed
  3110.   from s1.  If s2 is omitted, s1 is returned unchanged.  Examples:
  3111.  
  3112.     \freplace(oofa,o,O)  = OOfa
  3113.     \freplace(oofa,o,oo) = oooofa
  3114.     \freplace(oofa,o)    = fa
  3115.     \freplace(oofa)      = oofa
  3116.  
  3117.   or (more practically for OS/2):
  3118.  
  3119.     \freplace(\v(cmdfile),\\,/) ; replace backslashes by forward slashes
  3120.  
  3121. \Fsize(filename) tells the size, in characters (bytes), of the given file.
  3122.  
  3123. 7.4. INPUT and OUTPUT Command Improvements
  3124.  
  3125. As of edit 190, the INPUT and OUPUT commands are buffered, which results
  3126. in greater speed of execution.
  3127.  
  3128. The new command:
  3129.  
  3130.   SET OUTPUT PACING <number>
  3131.  
  3132. causes C-Kermit to pause for (at least) the indicated number of milliseconds
  3133. (thousandths of a second) between each character in the OUTPUT string.  Use
  3134. this option when OUTPUT'ing characters to a device that can't receive
  3135. characters at the full communication speed without losing or garbling them.
  3136. The default OUTPUT PACING is 0, i.e. no pauses.  Display with SHOW SCRIPTS.
  3137. Edit 189.
  3138.  
  3139. 7.5. The New MINPUT Command
  3140.  
  3141. The new command, MINPUT ("multiple input") is a version of the INPUT command
  3142. that looks for more than one string.  Syntax:
  3143.  
  3144.   MINPUT <sec> [ string1 [ string2 [ string2 [ ... ] ] ] ]
  3145.  
  3146. Strings are separated by spaces.  If any of the search strings is encountered
  3147. within the timeout interval, the command succeeds and the \v(minput) variable
  3148. is set to the number of the string that was found: 1, 2, 3, etc.  If none of
  3149. the search strings is found, the command times out, fails, and \v(minput) is
  3150. set to 0.  All SET INPUT paramaters apply - SET INPUT CASE, etc.  Example:
  3151.  
  3152.   minput 30 Login:, Username:, Ready
  3153.   if success goto LBL\v(minput)
  3154.   end 1 Prompt didn't arrive.
  3155.  
  3156. looks for any of the three strings "Login:", "Username:", or "Ready" and
  3157. then goes to one of the labels "LBL1", "LBL2", or "LBL3", depending on which
  3158. string was matched.
  3159.  
  3160. To include a space in a string, enclose it in { braces }.
  3161.  
  3162.   minput 20 {a b} c
  3163.  
  3164. This searches for either "a b" or "c".
  3165.  
  3166. As in the regular INPUT and REINPUT commands, leading and trailing spaces are
  3167. stripped from each search string unless it is enclosed in { braces }.  Example:
  3168.  
  3169.   minput 20 {  abc  }, {{ def }},    ghi
  3170.  
  3171. searches for "  abc  ", "{ def }", or "ghi".
  3172.  
  3173. 7.6. Other New or Improved Script Programming Commands
  3174.  
  3175. EVALUATE <arithmetic-expression>
  3176.   The new EVALUATE command evaluates arithmetic expressions for you, printing
  3177.   the answer.  It is exactly like the \feval() function described in the book,
  3178.   but for interactive use: you can type the expression directly, and the
  3179.   answer is printed, e.g.:
  3180.  
  3181.     C-Kermit> evaluate 1+1
  3182.     2
  3183.     C-Kermit> eval 6!
  3184.     720
  3185.     C-Kermit> def \%a (7 + 8)
  3186.     C-Kermit> ev (1 + 2) * (\%a - 3)
  3187.     36
  3188.  
  3189. FORWARD <label>
  3190.   Like GOTO, except the label search begins at the current position in
  3191.   the macro or command file, rather than at the beginning.  It will not find
  3192.   labels that have already been passed.  The major use for a command like
  3193.   this would be to improve the performance of script programs that contain
  3194.   a lot of forward GOTOs, especially when that program is a command file that
  3195.   will be executed from a diskette.  This is obviously not good programming
  3196.   practice -- since such programs can easily break of blocks of code are
  3197.   moved around -- but then neither are GOTOs themselves.  If the FORWARD
  3198.   label search fails in the current macro or TAKE file, the search continues
  3199.   in the forward direction only in superior macros macros and TAKE files.
  3200.  
  3201.     NOTE: The FORWARD command has been used extensively in the CKERMIT.INI
  3202.     file for C-Kermit 5A(190), resulting in a dramatic decrease in startup
  3203.     time.
  3204.  
  3205. GETC <variable-name> [ <prompt-string> ]
  3206.   The new GETC command (edit 190) lets a script program prompt the user to
  3207.   type a single character.  Example:
  3208.  
  3209.     GETC \%a Press any key to continue:
  3210.  
  3211.   The character is stored in the given variable.
  3212.  
  3213. WRITE-LINE <file> <text>
  3214.   This is exactly like the WRITE command, which is used to send text to the
  3215.   specified file or log.  The difference is that WRITE-LINE always formats the
  3216.   output text as a line, or record, appropriate to the underlying operating
  3217.   system's file format.  This allows Kermit script programs to create text
  3218.   files in a system-independent fashion.  Synonym: WRITELN.  WR, WRI, and WRIT
  3219.   are still accepted as abbrevitions for WRITE.  Also see the \v(newline)
  3220.   variable.  Edit 190.
  3221.  
  3222. RENAME <oldfilename> <newfilename>
  3223.   The second argument (normally the new name for the file) is allowed to be a
  3224.   directory name (or, in OS/2, a device and directory name), in which case the
  3225.   file is moved to the given (device and) directory, keeping its original
  3226.   name.  Edit 190.
  3227.  
  3228. RETURN and END
  3229.   These commands may now be given, with the expected results, from
  3230.   within the command-lists of FOR, WHILE, or XIF commands.  Edit 190.
  3231.  
  3232. ASK and ASKQ
  3233.   These commands now allow question mark and backslash to be entered just like
  3234.   any other text character.  Prior to edit 190, question mark would make a
  3235.   help message pop up, and backslash would fulfill its normal function of
  3236.   introducting a variable or quoting a special character.  However, these
  3237.   commands are unlikely ever to be used by somebody who will reply to a
  3238.   question with a Kermit variable name and expect it to be evaluated.  Nor
  3239.   should they be expected to "quote" question marks.  This change makes for
  3240.   smoother dialogs between Kermit scripts and users, and it also allows users
  3241.   to type DOS-like filenames such as C:\TEMP\OOFA.TXT, which could not
  3242.   otherwise be entered except by doubling each backslash.  However, script
  3243.   writers should note that the mere fact that a DOS path name can be entered
  3244.   into a variable via:
  3245.  
  3246.     ask \%f { Please type the DOS path name: }
  3247.      Please type the DOS path name: c:\123\files\widgets.wks
  3248.  
  3249.   does not mean that the resulting variable can be used bare and unprotected.
  3250.   For example:
  3251.  
  3252.     send foo.bar \%f
  3253.  
  3254.   will not do what you think, because the SEND command will evaluate \%f "too
  3255.   much" (in this case "\123" becomes becomes "{", i.e. ASCII character number
  3256.   123, and \files looks like the beginning of a Kermit function, and results
  3257.   in a syntax error).  The needed protection comes from \fcontents():
  3258.  
  3259.     send foo.bar \fcontents(\%f)
  3260.  
  3261.   which evaluates to the variable's definition ("contents") but does not
  3262.   evaluate it any further.
  3263.  
  3264. There is also a new command in edit 190 to turn the backslash and question-
  3265. mark features on and off for any commands at all:
  3266.  
  3267. SET COMMAND QUOTING { ON, OFF }
  3268.   When ON (which is the default), backslash and question mark fulfill their
  3269.   normal roles in C-Kermit commands.  When OFF, backslash and question mark
  3270.   are treated just like any other ordinary text characters by the command
  3271.   reader.
  3272.  
  3273. You can display the current command quoting setting with:
  3274.  
  3275.   SHOW COMMAND
  3276.  
  3277. Before this feature was added to C-Kermit, users C-Kermit for UNIX, VMS, etc,
  3278. had to do something like this when referring to DOS files (because DOS uses
  3279. backslash as a directory separator and question mark as a wildcard character):
  3280.  
  3281.   send foo.bar c:\\foo\\bar\\baz\\oofa.txt
  3282.   get d:\\files\\\?\?\?.\?
  3283.  
  3284. Now it is possible to allow natural DOS notation:
  3285.  
  3286.   set command quoting off
  3287.   send foo.bar c:\foo\bar\baz\oofa.txt
  3288.   get d:\files\???.?
  3289.   set command quoting on
  3290.  
  3291. This feature is also handy on computers that have DOS-like files systems,
  3292. such as PCs with OS/2:
  3293.  
  3294.   set command quoting off
  3295.   cd \
  3296.   set port \\server\modem
  3297.   directory e:\pictures\pic???.gif
  3298.   set command quoting on
  3299.  
  3300. rather than:
  3301.  
  3302.   cd \\
  3303.   set port \\\\server\\modem
  3304.   directory e:\\pictures\\pic\?\?\?.gif
  3305.   set command quoting on
  3306.  
  3307. Caution: Expect unpleasant results if you try to run script programs with
  3308. COMMAND QUOTING OFF.
  3309.  
  3310. Also new to edit 190 is the ability to include multiple words in any command
  3311. field that requires a single word, by use of braces for grouping.  For
  3312. example:
  3313.  
  3314.   define \%a two words
  3315.   if equal \%a {two words} echo Equal.
  3316.  
  3317. 7.8. The REXX Interface
  3318.  
  3319. As of edit 190, OS/2 C-Kermit (32-bit version only) has a REXX programming
  3320. interface consisting of the single command, REXX.  REXX <command> executes the
  3321. given REXX command, for example:
  3322.  
  3323.   REXX SAY "Hello"
  3324.  
  3325. or:
  3326.  
  3327.   REXX RETURN "Goodbye"
  3328.  
  3329. or:
  3330.  
  3331.   REXX CALL <filename> [ <text> ]
  3332.  
  3333. which executes a REXX program from the given file.  The <text>, if any, is
  3334. passed to the REXX program, where it is available as ARG(1).
  3335.  
  3336. A REXX command or program invoked via C-Kermit's REXX command can also execute
  3337. C-Kermit commands from within REXX procedures that are invoked via C-Kermit's
  3338. REXX CALL command, by enclosing them in single quotes, for example:
  3339.  
  3340.         'set parity none'
  3341.         'return \v(parity)'
  3342.         say rc
  3343.  
  3344. The RETURN value from the REXX command or program is available in the
  3345. C-Kermit variable \v(rexx).  Set this by including a RETURN <value> command
  3346. in your REXX command or program.
  3347.  
  3348. Q: Why would you want to use REXX from within C-Kermit?
  3349.  
  3350. A: Many reasons:
  3351.  
  3352.    . Easier-to-use math functions
  3353.    . Running a REXX program without the overhead of starting a command shell
  3354.    . C-Kermit access to additional OS/2 specific functionality (e.g. Create
  3355.      WPS objects, perform directory searchs, ...)
  3356.    . Add your own functions to C-Kermit's script language
  3357.  
  3358. There are three types of functionality provided in the C-Kermit/REXX interface:
  3359.  
  3360.  . Ability to execute a REXX command line.
  3361.  . Ability to execute a REXX command file.
  3362.  . Ability to call C-Kermit commands from a REXX program that is executing
  3363.    under C-Kermit.
  3364.  
  3365. Let's say you want to execute a one-line REXX program from within C-Kermit.
  3366. You would use the new C-Kermit "REXX" command.  The format of the command is:
  3367.  
  3368.   rexx <REXX command>
  3369.  
  3370. where <REXX command> is everything after the keyword REXX to the end of the
  3371. line.  A simple example:
  3372.  
  3373.   rexx say "hello" 
  3374.  
  3375. will execute the REXX command SAY with the parameter "hello".  "hello" will
  3376. now be printed on your screen.
  3377.  
  3378. Another example, returning a value from REXX.
  3379.  
  3380.   rexx return 4 * 4
  3381.  
  3382. the REXX command "return 4 * 4" will calculate the value "16" and then return
  3383. it to C-Kermit.  C-Kermit stores the return value from the last REXX command
  3384. in \v(rexx):
  3385.  
  3386.   echo \v(rexx)
  3387.   16
  3388.  
  3389. Let's say you want to execute a series of REXX commands, but don't want to
  3390. create a file.
  3391.  
  3392.   rexx say "hello"\13 return 0
  3393.  
  3394. This will print the string "hello" and then return the value "0" to C-Kermit.
  3395. Notice that \13 (Carriage Return, Ctrl-M) was placed between the commands.
  3396. This is necessary because REXX expects to find each command separated by a
  3397. return character just as if it was being read from a file.
  3398.  
  3399. To execute a REXX command file, use:
  3400.  
  3401.   C-Kermit> rexx call oofa.cmd
  3402.  
  3403. where "oofa.cmd" is the name of your REXX command file.
  3404.  
  3405. Now let's you want to be able to gain access to a C-Kermit variable value from
  3406. within a REXX program, change a C-Kermit setting, or execute a C-Kermit
  3407. command.  You could alter your program so it is called in separate parts from
  3408. a C-Kermit TAKE file or macro.  But there is a better way.  Just include the
  3409. C-Kermit command in your REXX program.  For example, you want to set Kermit's
  3410. parity from within your REXX program:
  3411.  
  3412.   /* beginning of REXX program file */
  3413.   parity = "None"
  3414.   set parity parity
  3415.  
  3416. Let's say we want to set a REXX variable to the value of a C-Kermit variable.
  3417. Here is how we would do it:
  3418.  
  3419.   parity = '\v(parity)'
  3420.  
  3421. Notice the single quotes around the C-Kermit statement.  This tells REXX to
  3422. pass the statement to C-Kermit for evaluation before performing the
  3423. assignment.
  3424.  
  3425. Q: What happens if you create a REXX program file that contains C-Kermit
  3426.    commands and you try to execute it outside of the C-Kermit environment?
  3427.  
  3428. A: A Syntax Error.  
  3429.  
  3430. This is because the C-Kermit commands are only available when C-Kermit is 
  3431. executing the REXX command file.  
  3432.  
  3433. Q: Can C-Kermit be used with REXX programming tools such as Watcom's 
  3434.    VX-REXX?
  3435.  
  3436. A: Yes and No.  C-Kermit and VX-REXX work together too.  To run a VX-REXX
  3437.    program from within C-Kermit, first generate a .VRM file and then invoke it
  3438.    with the C-Kermit REXX CALL command.  However, the VX-REXX program is not
  3439.    allowed to make Presentation Manager calls, because VIO applications (like
  3440.    C-Kermit) can't do that.
  3441.  
  3442. (8) EXTERNAL PROTOCOLS
  3443.  
  3444. 8.1. The REDIRECT Command
  3445.  
  3446. Syntax:   REDIRECT command [ arguments... ]
  3447. Synonym:  <command [ arguments... ]
  3448.  
  3449. Edit 190.  This command allows you to run another program from the C-Kermit
  3450. prompt, and have its standard input and output redirected to the SET LINE /
  3451. SET PORT connection.
  3452.  
  3453. It is useful for running "external protocols" over the C-Kermit connection
  3454. when you have made a connection to a computer or service that does not support
  3455. the Kermit protocol.  REDIRECT works only with software that uses standard
  3456. input and output.
  3457.  
  3458. In OS/2 C-Kermit, the REDIRECT command works only for serial connections,
  3459. and not with network connections.
  3460.  
  3461. 8.2. New Macros
  3462.  
  3463. The following new macro packages are available for calling external protocols
  3464. from OS/2 C-Kermit:
  3465.  
  3466.   p101.ini     - OS/2 P 1.01.
  3467.   p200.ini     - OS/2 P 2.00.
  3468.   m2zmodem.ini - OS/2 M2Zmodem.
  3469.  
  3470. (9) NEW COMMAND-LINE OPTIONS
  3471.    
  3472. Command-line options are commands that can be given to C-Kermit on the same
  3473. line with which you invoke it, for example:
  3474.  
  3475.   kermit -s oofa.txt -p s
  3476.  
  3477. Command-line help and error messages have been improved, and the following
  3478. command-line options or new features have been added:
  3479.  
  3480. -a name ("as-name" for a transferred file) now allows "name" to be a device
  3481.   or directory name, when used in conjunction with '-r' (RECEIVE), to specify
  3482.   a device and/or directory into which all incoming files are to be stored
  3483.   under the names they were sent with.  If "name" is not a device or directory
  3484.   name, the (first) incoming file is stored under the given name, as before.
  3485.   Edit 190.
  3486.  
  3487. -D n, where "n" is a number, is equivalent to the interactive command SET
  3488.   DELAY n (has no use in OS/2 C-Kermit).
  3489.  
  3490. -N n, where "n" is a number, is the NETBIOS adapter number to be used with
  3491.   NETBIOS connections (32-bit version only).
  3492.   
  3493. -R advises C-Kermit that it will be used in remote mode only.  Of no use in
  3494.   OS/2 C-Kermit, which always operates in local mode.
  3495.  
  3496. (10) NETWORK COMMUNICATIONS
  3497.  
  3498. C-Kermit for OS/2 now contains a generous selection of networking options.
  3499. Support is provided for the most commonly used networking protocols, including
  3500. TCP/IP, NETBIOS (32-bit only), Named Pipes (32-bit only), DECnet (PATHWORKS),
  3501. and LAN modem servers.
  3502.  
  3503. 10.1. TCP/IP Networking
  3504.  
  3505. TCP/IP networking was added in edit 189, exactly as documented in "Using
  3506. C-Kermit" (Chapters 3 and 4, etc) for the UNIX, VMS, and AOS/VS versions of
  3507. C-Kermit.  C-Kermit's TCP/IP support works with:
  3508.  
  3509.  . IBM TCP/IP (both the 1.2.1 16-bit DLL and the 2.0 32-bit DLL)
  3510.  . Essex Systems TCP/2 (both the 16-bit and 32-bit DLLs)
  3511.  
  3512. It is not known whether it works with Novell LAN Workplace for OS/2,
  3513. Wollongong, or others.  If a TCP/IP package includes an IBM-compatible
  3514. TCPIPDLL.DLL library, then C-Kermit should work with it.  Support for other
  3515. OS/2 TCP/IP packages is planned and will be implemented as time permits and
  3516. development toolkits become available.
  3517.  
  3518.   NOTE: FTP Software's PC/TCP version 1.3 does not work with the current
  3519.   release of C-Kermit.  Support should be added soon so keep in touch with
  3520.   the Kermit Project for further information.
  3521.  
  3522. Commands:
  3523.  
  3524.   SET NETWORK TCP/IP
  3525.   SHOW NETWORK
  3526.   SET HOST [ <ip-name-or-address> [ <service> ] ]
  3527.   TELNET [ <ip-name-or-address> [ <service> ] ]
  3528.   <esc-char>I or \Ktn_ip  in CONNECT mode (Interrupt Process)
  3529.   <esc-char>A or \Ktn_ayt in CONNECT mode (Are You There?)
  3530.   <esc-char>B or \Kbreak  in CONNECT mode (Break)
  3531.   etc, the same as for UNIX, (Open)VMS, and AOS/VS.
  3532.  
  3533. as described on pages 67-74 of "Using C-Kermit".
  3534.  
  3535. As of edit 190, the TELNET feature also has an added "window-size" negotiation
  3536. capability, which lets C-Kermit automatically inform the TELNET server of its
  3537. screen dimensions (if the remote TELNET server also supports this capability,
  3538. known as NAWS, "negotiate about window size", use of which is negotiated
  3539. automatically).
  3540.  
  3541. On a TCP/IP TELNET connection, you should normally have PARITY set to NONE and
  3542. FLOW-CONTROL also set to NONE.  If file transfer does not work with these
  3543. settings (for example, because the remote TELNET server only gives a 7-bit
  3544. data path), use SET PARITY SPACE.  Do not use SET PARITY MARK, EVEN, or ODD on
  3545. a TELNET connection -- it interferes with TELNET protocol.
  3546.  
  3547. TELNET sessions are treated just like serial communications sessions as far as
  3548. "terminal bytesize" and "command bytesize" are concerned.  If you need to view
  3549. and/or enter 8-bit characters during a TELNET session, you must tell C-Kermit
  3550. to SET TERMINAL BYTESIZE 8, SET COMMAND BYTESIZE 8, and SET PARITY NONE.
  3551.  
  3552. If you SET TERMINAL DEBUG ON or SET DEBUG SESSION (same thing), TELNET
  3553. protocol negotiations will be displayed on your screen.  But most of the
  3554. interesting negotiations happen at the time the SET HOST or TELNET command
  3555. is given, before CONNECT mode is entered, so you won't see them on your
  3556. screen.  However, you can still capture them in the debug log ("log debug").
  3557.  
  3558. Q: Why use Kermit on a TCP/IP connection rather than TELNET and FTP?
  3559.  
  3560. A: Many reasons: Unlike TELNET, C-Kermit can also transfer files.  C-Kermit
  3561.    has a script programming language, a powerful key mapping facility,
  3562.    screen rollback, and many other amenities lacking in most TELNET
  3563.    programs.  It also has a unique ability to translate character sets, both
  3564.    during terminal emulation and file transfer.  Many services are coming on
  3565.    the Internet which do not provide FTP, but do provide Kermit file
  3566.    transfer.
  3567.  
  3568. Q: Why is Kermit file transfer over a TCP/IP connection slower than FTP?
  3569.  
  3570. A: Because the Kermit program on the remote end of the connection is not
  3571.    running directly on a TCP socket, but rather running underneath a TELNET
  3572.    server, usually on a pseudoterminal and under a login shell, with the vast
  3573.    amounts of per-character overhead all of that implies (future Kermit
  3574.    releases will be able to act directly as TCP servers, eliminating all this
  3575.    overhead).  Still, you can get reasonably fast transfer rates by using
  3576.    large window sizes and long packets.
  3577.  
  3578. 10.2. Using Named Pipes
  3579.  
  3580. As of version 5A(190), OS/2 C-Kermit (32-bit) supports NAMED PIPES as an
  3581. interprocess communication mechanism.  Named Pipes support for local processes
  3582. is built into OS/2.  In order to use them to communicate across a local area
  3583. network both computers must have installed Named Pipe network support
  3584. software. Each computer may be a Client, a Server or both.  Each server on a
  3585. particular network has a unique Named Pipe Server Name assigned as part of the
  3586. Named Pipe software installation.
  3587.  
  3588. C-Kermit has been tested with the following products:
  3589.  
  3590.   IBM LAN Server Requester (Client) to LAN Server (Server)
  3591.   Microsoft LAN Manager Requester (Client) to LAN Manager (Server)
  3592.   Novell NetWare Requester (Client) to Novell NetWare Requester (Server)
  3593.  
  3594. To have a named pipe connection connection between two Kermit programs, one
  3595. Kermit program must be the "server" and the other must be the "client".  The
  3596. server is the one that is started first, and which waits for a connection to
  3597. come in from the client.  The server is started this way:
  3598.  
  3599.   SET NETWORK NAMED-PIPE [ pipename ]
  3600.   SET HOST *
  3601.  
  3602. If the pipename is omitted from the SET NETWORK NAMED-PIPE command, a
  3603. pipename of "kermit" is used.  "SET HOST *" means to wait for a connection
  3604. to come in from another Kermit program.
  3605.  
  3606. Then the client makes a connection to the server:
  3607.  
  3608.   SET NETWORK NAMED-PIPE [ pipename ]  
  3609.   SET HOST servername
  3610.  
  3611. where "pipename" is the pipename used by the server you want to communicate
  3612. with (default "kermit"), and "servername" is the name of the server on the 
  3613. network.  If you specify a servername of "." (period), this means your
  3614. own computer; you can set up such local connections even if you don't have
  3615. Named Pipes network support installed, e.g. between two copies of C-Kermit 
  3616. running in different windows.
  3617.  
  3618. Both pipename and servername are case-independent, and can contain spaces.
  3619.  
  3620. There is no particular restriction on what Kermit commands can be used on
  3621. a named-pipe connection.  Here are some useful scenarios:
  3622.  
  3623.  1. The named-pipe server is in Kermit SERVER mode.  Clients can perform
  3624.     SEND, GET, REMOTE, FINISH, and similar commands.
  3625.  
  3626.  2. Both Kermit programs are in CONNECT mode, allowing two network users to
  3627.     "chat" with each other.  Each user should give the following commands:
  3628.  
  3629.        set terminal echo local
  3630.        set terminal cr-display crlf
  3631.        connect
  3632.  
  3633. To close a named-pipe connection, give the HANGUP command (or the SET HOST
  3634. command, specifying no hostname) to either the client or the server.
  3635.  
  3636. Unlike with TCP/IP connections, the C-Kermit named-pipe server can wait for a
  3637. client to connect.  After the client disconnects, the connection will be reset
  3638. to await the next client.  This allows for the use of kermit "server" as a
  3639. pseudo-FTP site for those without IBM TCP/IP.
  3640.  
  3641. Note: when using Named Pipes with LAN Server or LAN Manager, only the machine
  3642. which has the Network Server software is capable of successfully using the SET
  3643. HOST * command.  This is because the client network requesters do not
  3644. implement the server side of the named-pipe network redirection.
  3645.  
  3646. Novell NetWare Requester for OS/2, on the other hand, implements both the
  3647. named-pipes client and server code on the client workstation and does not
  3648. require the existence of a Network server to operate.
  3649.  
  3650. 10.3. Using NETBIOS
  3651.  
  3652. Added in edit 190: NETBIOS support, both the original NETBIOS 3.0 (NETAPI)
  3653. interface and the newer NETBIOS 4.0 (ACSBNET) interface.  C-Kermit has been
  3654. tested with the following products:
  3655.  
  3656.   NETBIOS 4.0 interface (ACSNETB.DLL):
  3657.     IBM LAN Adapter and Protocol Support (LAPS) as found in:
  3658.        IBM Network Transport Services/2
  3659.        IBM LAN Distance
  3660.        IBM Communication Manager/2
  3661.        IBM LAN Server 3.x
  3662.        IBM LAN Requester 3.x
  3663.  
  3664.   NETBIOS 3.0 interface (NETAPI.DLL):
  3665.     Microsoft LAN Manager Requester
  3666.     IBM Extended Services 1.x
  3667.     IBM LAN Server 2.x Requester
  3668.     Novell NetWare 2.x Requester 
  3669.  
  3670. To have a NETBIOS connection connection between two Kermit programs, one
  3671. Kermit program must the "server" and the other must be the "client".  The
  3672. server is the one that is started first, and which waits for a connection to
  3673. come in from the client.  The server is started this way:
  3674.  
  3675.   SET NETWORK NETBIOS [ localname ]
  3676.   SET HOST *
  3677.  
  3678. If the localname is omitted from the SET NETWORK NETBIOS command, then if a
  3679. HOSTNAME environment variable is defined, that is used; otherwise if a
  3680. SYSTEMNAME environment variable is defined, that is used; otherwise "kermit"
  3681. is used (the HOSTNAME variable is created by TCP/IP installation, SYSTEMNAME
  3682. by DECnet PATHWORKS installation; if you don't have TCP/IP or PATHWORKS
  3683. installed, you can add a "SET HOSTNAME=blah" or "SET SYSTEMNAME=blah"
  3684. statement to your CONFIG.SYS file).  The localname must be unique on the
  3685. NETBIOS network; if not, the SET NETWORK command will fail.
  3686.  
  3687. "SET HOST *" means to wait for a connection to come in from another Kermit
  3688. program.
  3689.  
  3690. Then the client makes a connection to the server:
  3691.  
  3692.   SET NETWORK NETBIOS [ localname ]  
  3693.   SET HOST servername
  3694.  
  3695. where "localname" is the new name used to identify the client Kermit session,
  3696. and "servername" is the localname of the server's Kermit session.
  3697.  
  3698. The localname and servername are case-dependent, and can contain spaces.
  3699.  
  3700. There is no particular restriction on what Kermit commands can be used on a
  3701. NETBIOS connection.  Here are some useful scenarios:
  3702.  
  3703.  1. The NETBIOS server is in Kermit SERVER mode.  Clients can perform
  3704.     SEND, GET, REMOTE, FINISH, and similar commands.
  3705.  
  3706.  2. Both Kermit programs are in CONNECT mode, allowing two network users to
  3707.     "chat" with each other.  Each user should give the following commands:
  3708.  
  3709.        set terminal echo local
  3710.        set terminal cr-display crlf
  3711.        connect
  3712.  
  3713. To close a NETBIOS connection, give the HANGUP command (or the SET HOST
  3714. command, specifying no hostname) to either the client or the server.
  3715.  
  3716. Unlike with TCP/IP connections, the C-Kermit NETBIOS server can wait for a
  3717. client to connect.  After the client disconnects, the connection will be reset
  3718. to await the next client.  This allows for the use of kermit "server" as a
  3719. pseudo-FTP site for those without IBM TCP/IP.
  3720.  
  3721. NETBIOS is the preferred protcol to use when transfering files with MS-DOS
  3722. Kermit or C-Kermit for OS/2 in a peer-to-peer local area network.  NETBIOS is
  3723. supported over most networking protocols including: Netbeui, IPX, IP, and
  3724. LU6.2.  In addition, it has lower overhead than all other OS/2 implemented
  3725. networking protocols.
  3726.  
  3727. NETBIOS configuration:
  3728.  
  3729. Each C-Kermit session requires the following resources from the NETBIOS
  3730. provider: 1 Name, 32 Commands, and 1 session.  For example, if you wish to
  3731. have three C-Kermit sessions running simultaneously in Server mode, NETBIOS
  3732. must be configured to support at least 3 Names, 96 Commands, and 3 sessions.
  3733.  
  3734. If the number of available NETBIOS commands is unavailable, NETBIOS support
  3735. for the current C-Kermit session will not be installed. 
  3736.  
  3737. The default settings for IBM and NetWare NETBIOS implementations are:
  3738.  
  3739.                       Config File    Sessions       Commands        Names 
  3740. Novell (ipxnb)        NET.CFG            16             32            24 
  3741. IBM NTS/2 (Netbeui)   PROTOCOL.INI        5             95            21 
  3742.  
  3743. The maximum settings for IBM and NetWare NETBIOS implementations are:
  3744.  
  3745.                       Config File    Sessions       Commands        Names 
  3746. Novell (ipxnb)        NET.CFG            64            128           128 
  3747. IBM NTS/2 (Netbeui)   PROTOCOL.INI      254            255           254 
  3748.  
  3749. The method for modifying NETBIOS resources depends on the NETBIOS product;
  3750. it is normally done by executing the configuration program (LAPS, INSTALL, ...)
  3751. or by manually modifying the configuration files and restarting OS/2.
  3752.  
  3753. It is possible to have two or more products each providing NETBIOS services by
  3754. running multiple NETBIOS protocol stacks.  All products which use LAPS may be
  3755. mixed together.  And LAPS may be mixed with up to one product which uses the
  3756. NETAPI.DLL product.  However, there are limitations.  In particular, you can
  3757. not successfully run Novell NETBIOS support with IBM Extended Services.
  3758.  
  3759. The most common dual stack combination is of IBM Netbeui (LAPS) and Novell
  3760. IPXNB (NetWare Requester).  The installation procedure for each package is
  3761. completely ignorant of the other protocol.  The dual stack requires that the
  3762. configuration files be manually modified with a text editor (e.g. E.EXE).  The
  3763. NETBIOS configuration is defined by statements in two files: NET.CFG and
  3764. PROTOCOL.INI.  These files contains statements defining how many NETBIOS
  3765. Names, Commands, and Sessions are available to each protocol stack.  The
  3766. settings for each protocol stack must be consistent between the two files.
  3767.  
  3768. For both protocols to coexist the following section to the must be added to
  3769. the end of the PROTOCOL.INI file:
  3770.  
  3771. [NETBIOS]
  3772.    DriverName=NETBIOS$
  3773.    <virtual adapter>=<driver>,<physical adapter>,<sessions>,<commands>,<names>
  3774.    <virtual adapter>=<driver>,<physical adapter>,<sessions>,<commands>,<names>
  3775.    ...
  3776.  
  3777. where:
  3778.    <virtual adapter> is ADAPTER0 through ADAPTER3.  The adapter numbers must be
  3779.         used in sequence. 
  3780.    <driver> is either ipxnb$ for Novell or netbeui$ for IBM.
  3781.    <physical adapter> is almost always 0 since there is usually only 
  3782.         one physical network adapter in the machine.
  3783.    <sessions>, <commands>, and <names> must match the settings in NET.CFG 
  3784.         (NetWare NETBIOS section) if <driver> is ipxnb$; or PROTOCOL.INI 
  3785.         (Netbeui section) if <driver> is netbeui$.
  3786.  
  3787. Without this additional section in PROTOCOL.INI, only IBM Netbeui will be
  3788. available to C-Kermit.  This section defines up to 4 virtual adapters (0-3),
  3789. each of which is assigned a specific NETBIOS protocol stack implementation.
  3790. C-Kermit allows you to choose which NETBIOS implementation you want to use by
  3791. using the '-N' (note uppercase) command-line option.  To use the driver
  3792. assigned to ADAPTER1 in the [NETBIOS] section of PROTOCOL.INI use:
  3793.  
  3794.    ckermit -N 1
  3795.  
  3796. The syntax of the option is:
  3797.  
  3798.    -N <adapter>
  3799.  
  3800. where <adapter> is one of the virtual adapter numbers (default = 0).
  3801.  
  3802. It is important to know which NETBIOS protocol stack you are using as both
  3803. machines must be using the same stack type for them to successfully
  3804. communicate.
  3805.  
  3806. The following provide examples of valid [NETBIOS] sections in PROTOCOL.INI.
  3807.  
  3808. Example 1: Both IBM and Novell NETBIOS implementations and one physical 
  3809. adapter.  Novell NETBIOS is the default.
  3810.  
  3811. [NETBIOS]
  3812.    DriverName=NETBIOS$
  3813.    Adapter0=ipxnb$,0,48,128,16
  3814.    Adapter1=netbeui$,0,48,255,16
  3815.  
  3816. Example 2: Both IBM and Novell NETBIOS implementations and one physical 
  3817. adapter.  IBM NETBIOS is the default.
  3818.  
  3819. [NETBIOS]
  3820.    DriverName=NETBIOS$
  3821.    Adapter0=netbeui$,0,48,255,16
  3822.    Adapter1=ipxnb$,0,48,128,16
  3823.  
  3824. Example 3: Only Novell NETBIOS implementation and one physical adapter.  
  3825.  
  3826. [NETBIOS]
  3827.    DriverName=NETBIOS$
  3828.    Adapter0=ipxnb$,0,48,128,16
  3829.  
  3830. Example 4: Both IBM and Novell NETBIOS implementations and two physical
  3831. adapters.  IBM NETBIOS is the default.  (Novell NETBIOS cannot be assigned to
  3832. two physical adapters.)
  3833.  
  3834. [NETBIOS]
  3835.    DriverName=NETBIOS$
  3836.    Adapter0=netbeui$,0,48,255,16
  3837.    Adapter1=netbeui$,1,48,255,16
  3838.    Adapter2=ipxnb$,0,48,128,16
  3839.  
  3840. 10.4. Using DECnet PATHWORKS
  3841.  
  3842. DECnet LAT (Local Area Transport) support works in conjunction with DEC's
  3843. PATHWORKS For OS/2 product, which must be installed, and LATCALLS.DLL must be
  3844. in your LIBPATH.  To make LAT connections from C-Kermit:
  3845.  
  3846.   SET NETWORK DECNET
  3847.   SET HOST <hostname>
  3848.  
  3849. and then use all of Kermit's communication features -- terminal emulation,
  3850. file transfer, etc -- in the same way you would on a serial or TCP/IP
  3851. connection.
  3852.  
  3853. 10.5. Using Asynchronous Communication Servers
  3854.  
  3855. There are two methods for using remote modems accessed via LAN server
  3856. (asynchronous communication server):
  3857.  
  3858.  1. Map the remote port (modem) to a local port name (e.g. COM3)
  3859.     with a NET USE command before starting Kermit, and then unmap
  3860.     it afterwards:
  3861.  
  3862.       net use com3 \\server\modem
  3863.       ckermit -l com3
  3864.       net use com3 /d
  3865.  
  3866.  2. Simply use the Universal Naming Convention (UNC) resource name as
  3867.     the port name:
  3868.  
  3869.       ckermit -l \\server\modem
  3870.  
  3871.     Inside C-Kermit, because \ is the escape character, / can also be used:
  3872.  
  3873.       set line //server/modem
  3874.  
  3875. 10.6. OS/2 C-Kermit Networking Hints and Tips
  3876.  
  3877. The SET HOST command uses your current SET NETWORK type.  For example:
  3878.  
  3879.   SET NETWORK DECNET
  3880.   SET HOST OOFA
  3881.  
  3882. will try to make a DECnet (PATHWORKS) LAT connection to DECnet node OOFA.
  3883. However, please be aware that a SET NETWORK command will fail if the given
  3884. type of network is not installed, or if (in the case of NETBIOS) the given
  3885. name is already in use.  Thus a safer construction would be:
  3886.  
  3887.   SET NETWORK NETBIOS OOFA
  3888.   IF FAIL STOP 1 Can't access NETBIOS network
  3889.   SET HOST MUPEEN
  3890.   IF FAIL STOP 1 Can't make NETBIOS connection
  3891.  
  3892. The default network type (which is used if give a SET HOST command without
  3893. first giving a SET NETWORK command) depends on which network products you have
  3894. installed on your OS/2 system, chosen in this order of preference:
  3895.  
  3896.   TCP/IP, DECnet, Named Pipes
  3897.  
  3898. NETBIOS cannot be a default choice because it requires a user-assigned name.
  3899.  
  3900. On a TCP/IP TELNET connection, you should normally have PARITY set to NONE and
  3901. FLOW-CONTROL also set to NONE.  If file transfer does not work with these
  3902. settings (for example, because the remote TELNET server only gives a 7-bit
  3903. data path), use SET PARITY SPACE.  Do not use SET PARITY MARK, EVEN, or ODD on
  3904. a TELNET connection -- it interferes with TELNET protocol.
  3905.  
  3906. TELNET sessions are treated just like serial communications sessions as far as
  3907. "terminal bytesize" and "command bytesize" are concerned.  If you need to view
  3908. and/or enter 8-bit characters during a TELNET session, you must tell C-Kermit
  3909. to SET TERMINAL BYTESIZE 8, SET COMMAND BYTESIZE 8, and SET PARITY NONE.
  3910.  
  3911. If you SET TERMINAL DEBUG ON or SET DEBUG SESSION (same thing), TELNET
  3912. protocol negotiations will be displayed on your screen.  But most of the
  3913. interesting negotiations happen at the time the SET HOST or TELNET command
  3914. is given, before CONNECT mode is entered, so you won't see them on your
  3915. screen.  However, you can still capture them in the debug log ("log debug").
  3916.  
  3917. (11) REMOTE ACCESS
  3918.  
  3919. If your OS/2 2.x system is running IBM TCP/IP, it is possible to TELNET to
  3920. your OS/2 system to have a CMD session, in which you can run only
  3921. character-mode commands and applications.
  3922.  
  3923. Depending on the kind of machine you are TELNETing from, you might be able to
  3924. run only programs which use standard (or real keyboard) input and standard
  3925. output.  If the program does VIO screen output it will run in a TELNET session
  3926. only if you TELNETed into the OS/2 PC from another OS/2 PC, not from (for
  3927. example) a UNIX or VMS machine.  The reason is that intercepting and relaying
  3928. VIO screen output to a remote machine is only possible with support from the
  3929. remote machine, which is only implemented in the OS/2 TELNET client.  Since
  3930. C-Kermit does VIO output, it will not work if you TELNET into the OS/2 machine
  3931. from a non-OS/2 machine.  It will also only work if you TELNET into the OS/2
  3932. machine from another OS/2 machine using the real IBM OS/2 TELNET program, not
  3933. with any other TELNET client application (including C-Kermit) because the
  3934. mentioned client support is implemented only in the IBM TELNET application.
  3935.  
  3936. If you run a PM application (such as "help") while TELNETed to your OS/2
  3937. system, your session will hang because control will have been transferred to
  3938. the real keyboard, mouse, and screen.  Similarly, if you manage to invoke the
  3939. OS/2 critical error handler during a character-mode application (for example,
  3940. "dir a:" when there is no diskette in the A: drive).
  3941.  
  3942. You can run C-Kermit in a remote TCP/IP session and tell OS/2 C-Kermit to SET
  3943. LINE to a serial device and call up a third computer.  Thus OS/2 C-Kermit can
  3944. be used as a modem server in the TCP/IP environment.
  3945.  
  3946. However, at present you cannot transfer files between your local Kermit
  3947. program and OS/2 C-Kermit when TELNET'd *to* OS/2 because sockets are
  3948. different from file handles in OS/2 and are not passed to child processes via
  3949. the "tty" file handle, as they are in UNIX in the same situation.
  3950.  
  3951. It is also possible to get an OS/2 CMD session on a serial connection when
  3952. dialing into your OS/2 system if you are running a product such as OS2YOU, but
  3953. C-Kermit file transfer does not yet work in this environment either.
  3954.  
  3955. (12) OS/2 C-KERMIT WISH LIST
  3956.  
  3957. Items marked with (*) require conversion of C-Kermit from a VIO to a PM
  3958. application, which will make it a much bigger and slower program.
  3959.  
  3960.  . OS/2-style graphical user interface (*).
  3961.  . 132-column mode via horizontal scrolling.
  3962.  . True 80/132-column mode switching (*).
  3963.  . True, rather than simulated, double-width, double-height lines (*).
  3964.  . True, rather than simulated, underline and blink attributes (*).
  3965.  . Tektronix and other graphics terminal emulations (*).
  3966.  . Ability to execute VX-REXX programs (*).
  3967.  . LK250/LK450 keyboard support.
  3968.  . Improved VT-220 emulation, including character set designation and
  3969.    invocation via ISO 4873 and 2022 rules.
  3970.  . User-controllable beep pitch and duration.
  3971.  . Support for non-IBM-compatible TCP/IP packages (e.g. Novell LWOS/2).
  3972.  . Ability to run in remote mode on both serial (OS2YOU) and network (TELNET)
  3973.    connections.
  3974.  . 3270 terminal emulation
  3975.  . APPC/CPI-C Network support
  3976.  . DEC VTxxx font (*)
  3977.  
  3978. (13) HINTS, TIPS, AND CAUTIONS
  3979.  
  3980. 13.1. Performance
  3981.  
  3982. Scrolling is slower in an OS/2 Window.  This is because OS/2 is operating in
  3983. graphics mode (to simulate text mode) and must draw each dot (pixel)
  3984. individually.  Fullscreen scrolling, which uses character mode, is much faster.
  3985. But when running C-Kermit in fullscreen mode you lose the ability to cut and
  3986. paste between applications.
  3987.  
  3988. C-Kermit's performance on serial connections -- and the performance of any
  3989. other OS/2 communication software program -- can be improved significantly by
  3990. using a 16550A(FN) communications port controller (UART) rather than an 8250,
  3991. 16450, 16550 (no A), or other unbuffered UART.  Unbuffered UARTs interrupt
  3992. the CPU once per character, whereas a buffered UART interrupts every 8-14 (or
  3993. more) characters.  Measurements during C-Kermit file transfer on an otherwise
  3994. unloaded i486/50 EISA system under OS/2 2.0 show approximately 10%-25% CPU
  3995. usage with a buffered UART and 75%-100% using an unbuffered one.  And of
  3996. course, as with all other OS/2 applications (and OS/2 itself), a faster CPU
  3997. and more memory also help.
  3998.  
  3999. In any case, native OS/2 serial communications software is NOT as fast as DOS
  4000. communications software (particularly MS-DOS Kermit) under DOS on the same
  4001. machine because OS/2 communications must go the serial device driver, which
  4002. adds the overhead of context switching; preservation of registers, stack
  4003. adjustment, call gate, etc, whereas DOS applications can access the bare
  4004. hardware directly.
  4005.  
  4006. On the other hand, differences in speed of file transfers between native DOS
  4007. and OS/2 programs should be marginal or even non-existent for current
  4008. widely-used high-speed modems and CPU speeds.  In addition, the fact that all
  4009. communication must be done through a device driver ensures device independence
  4010. (as long as the driver's programming interface is compatible to the standard
  4011. COM.SYS) and efficient use of the system resources, because all known OS/2
  4012. communications device drivers are interrupt-driven, while many DOS
  4013. communications software packages (other than MS-DOS Kermit) might not be.  The
  4014. OS/2 device driver also allows multiple file transfers on one machine at the
  4015. same time (if multiple modems are connected to it, for example), and allows
  4016. other (even very CPU-intensive) tasks to run concurrently without affecting
  4017. the file transfer speed(s), as long as enough CPU power is available.
  4018.  
  4019. 13.2. OS/2 Devices, Files, and Shells
  4020.  
  4021. If you refer to a disk drive that is not ready, or to a file on such a disk
  4022. drive, the OS/2 critical error handler might pop up and require action from
  4023. the keyboard.  This occurs during execution of commands by inferior processes,
  4024. such as DIRECTORY, REMOTE DIRECTORY, DELETE, REMOTE DELETE, etc.  It should
  4025. not occur in file transfer operations.  The "hard error box" will put a halt
  4026. to unattended, scripted operations, and it stops the operation of the OS/2
  4027. C-Kermit server if there is no human in attendance.  To work around: add the
  4028. line "AUTOFAIL=YES" to CONFIG.SYS and reboot.  This eliminates the hard error
  4029. box, but it applies system-wide, not just to C-Kermit.  (The equivalent of
  4030. AUTOFAIL=YES can be set on a per-process basis and C-Kermit does so for itself
  4031. but it can't do this for any inferior processes started by it.)
  4032.  
  4033. If the PUSH command, and related commands, do not work for you, check the
  4034. definition of your OS/2 COMSPEC environment variable, i.e. make sure it
  4035. contains the fully-specified pathname of a valid OS/2 executable shell program
  4036. (such as C:\OS2\CMD.EXE), and/or the named program is in your OS/2 PATH.
  4037.  
  4038. C-Kermit works with JP Software's 4OS2.EXE and any other replacement Command
  4039. Shell.  The directory containing the shell must be located in the PATH
  4040. in order for the replacement shell to be called correctly.
  4041.  
  4042. 13.3. The Deep Freeze
  4043.  
  4044. There have been isolated reports of C-Kermit "freezing" on some systems.  This
  4045. problem is not confined to C-Kermit, and has also been observed with a variety
  4046. of other communications software packages:
  4047.  
  4048.  . The most likely cause for freezing would be an interrupt conflict.  Make
  4049.    sure your serial ports, CD ROM drive / controller and/or SCSI adapter,
  4050.    Soundblaster, ISA card, network adapter, etc, are all using different and
  4051.    unique IRQs.
  4052.  
  4053.  . One user reported that the problem disappeared when he moved his serial
  4054.    communication board farther away from his SCSI adapter board.  This might
  4055.    have reduced electromagnetic interference, or altered the priority of
  4056.    the adapters.  Sometimes, simply reseating the card can help.
  4057.  
  4058.  . Another user (different system) made the problem go away by rebooting
  4059.    the PC, which had been up for many weeks.
  4060.  
  4061.  . The problem might be caused by a poorly built or configured system: noisy
  4062.    bus, spurious interrupts, buggy internal modems, or buggy serial port
  4063.    driver software.  For example, one user who noted that Kermit froze
  4064.    whenever he told it to SET PORT COM2 also discovered that the same thing
  4065.    would happen if he issued a MODE COM2 command at the CMD prompt, even
  4066.    when this is done immediately after starting the system.
  4067.  
  4068.  . Finally, mysterious problems like this are often cleared up by installing
  4069.    patches (CSDs) or new releases of the software involved (e.g. TCP/IP or
  4070.    other DLLs, serial drivers, OS/2 itself, etc).
  4071.  
  4072. 13.4. Modems and Dialing
  4073.  
  4074. MODEMS AND DIALING
  4075.  
  4076. The list of modem types supported by C-Kermit is obtained by typing:
  4077.  
  4078.   set modem ?
  4079.  
  4080. at the C-Kermit> prompt.  If you have a high-speed, error-correcting,
  4081. data-compressing modem, you should generally use the following settings:
  4082.  
  4083.   set speed 57600 ; Or 38400, the highest supported by both Kermit & the modem
  4084.   set dial speed-matching off ; Use speed buffering.
  4085.   set flow rts/cts            ; Use hardware flow control.
  4086.  
  4087. Always use hardware flow control if it is available (some operating systems
  4088. do not support it).  If it is not, use Xon/Xoff ("software") flow control
  4089. between your computer and the modem, which means you must tell C-Kermit to
  4090. "set flow xon/xoff" and you must configure your modem for this too.
  4091.  
  4092. If you have a modem that is not directly supported by C-Kermit, you can define
  4093. a new modem type for it.  For example, suppose you have a Practical
  4094. Peripherals PM14400FXMT V.32bis/V.42/V.42bis/MNP modem and you want to take
  4095. full advantage of its features.  You can dial with this modem, taking
  4096. advantage of the support for Hayes-like modems that is already built into
  4097. C-Kermit, but substituting an initialization string particular to the PP14400:
  4098.  
  4099.   set modem hayes        ; Use Hayes-like dialog
  4100.   set line <whatever>        ; Select the device your modem is on
  4101.   set speed 57600        ; Use high speed
  4102.   set dial speed-matching off    ; Lock the speed
  4103.   set flow rts/cts        ; Use hardware flow control
  4104.   set dial init ATQ0S2=43N1S37=11&K3&Q5S36=7S46=2S82=128\13
  4105.  
  4106. where:
  4107.  
  4108.   Q0         Result codes enabled
  4109.   S2=43      Escape character is "+"
  4110.   N1         Enable modulation negotiation
  4111.   S37=11     Enable V.32.bis
  4112.   &K3        Enable RTS/CTS (only if your C-Kermit version supports it)
  4113.   &Q5        Enable error correction
  4114.   S36=7       and compression with
  4115.   S46=2       automatic speed buffering
  4116.   S82=128    Pass BREAK signals through
  4117.  
  4118. This can be turned into a dialing macro, PPDIAL, which you can use in place of
  4119. the DIAL command:
  4120.  
  4121. define PPDIAL -
  4122.   set modem hayes, -
  4123.   set port 1, -          ; Change this appropriately
  4124.   set speed 57600, -
  4125.   set dial speed-matching off, -
  4126.   set dial init ATQ0S2=43N1S37=11&K3&Q5S36=7S46=2S82=128\13, -
  4127.   dial \%1, -
  4128.   if success set flow rts/cts, -  ; (If your C-Kermit version supports it)
  4129.   else end 1
  4130.  
  4131. If you put this definition into your CKERMOD.INI file, then it will always be
  4132. available for you to use, for example:
  4133.  
  4134.   C-Kermit> ppdial 7654321
  4135.  
  4136. And you can also use REDIAL in the normal way.
  4137.  
  4138. See your modem manual for details about initialization strings.  Most modern
  4139. modems should be set up as in the example above but, naturally, the specific
  4140. modem commands differ.  
  4141.  
  4142. Here are some sample modem initialization strings that should obtain settings
  4143. equivalent to those made for the PP14400, for various other types of
  4144. high-speed, error-correcting, data-compressing modems that are not
  4145. specifically supported by Kermit's DIAL command.  The maximum speed is shown
  4146. after the modem name.  These are offered in a form suitable for use in the SET
  4147. DIAL INIT-STRING command (modem-command backslashes doubled, \13 at the end
  4148. for carriage return), but with no guarantees -- see your modem manual for
  4149. explanations of the commands and for further details.  Each of these
  4150. initialization strings attempts to:
  4151.  
  4152.  . Start modulation negotation at V.32bis (14400bps), enabling fallback.
  4153.  . Fix the interface speed at 57600 or 38400 bps.
  4154.  . Enable error correction and compression, enabling fallback.
  4155.  . Allow BREAK signals to be passed through transparently.
  4156.  
  4157. AT&T DataPort 14400, 57600 bps:
  4158.   AT Q0 X6 &C1 &D2 &Q0 S84=0 \\Q3 %B14400 S41=1 S78=0 \\N7 %C1 \\K5\13
  4159.  
  4160. Boca 14.4 Faxmodem, 57600 bps:
  4161.   AT Q0W1&D2X4 S95=47 F10 S37=11 N1 &K3 S82=128 &Q5 S36=7 S46=138 \\N3 S48=7\13
  4162.  
  4163. Hayes Ultra 144, 38400 bps:
  4164.   AT Q0W1X4 S87=28 &D2 S95=46 S37=11 N1 &K1 &K3 &Q5 S36=7 S38=1 S46=2 S48=7\13
  4165.  
  4166. Multitech MT1432, 57600 bps:
  4167.   AT Q0 &Q1 X4 $SB57600 $MB14400 &E4 %E1 &E1 &E15 $BA0\13
  4168.  
  4169. Practical Peripherals 14400FXMT, 57600 bps:
  4170.   AT Q0 W1 S95=47 &D2 X4 S2=43 N1 S37=11 &K3 &Q5 S36=7 S46=2 S82=128\13
  4171.  
  4172. USR Sportster or Courier, 57600 bps:
  4173.   AT Q0 &S0 X4 &A3 &D2 &B1 &H1 &R2 &N0 &K1 &M4 &Y3\13
  4174.  
  4175. Zoom Telephonics 14400, 57600 bps:
  4176.   AT Q0 W1 &D2 S95=47 X4 S37=11 &K3 S82=128 &Q5 S36=7 S46=138 S38=1\13
  4177.  
  4178. CAUTION: Reportedly, these strings might be too long for some modems.  If
  4179. that is the case with yours, you can do one of the following:
  4180.  
  4181.  . Shorten the string by removing spaces and/or commands that are not
  4182.    necessary because they correspond to your modem's normal settings.
  4183.  
  4184.  . Change your dialing macro to simply OUTPUT these commands in small
  4185.    groups before issuing the DIAL command.
  4186.  
  4187. DIALING HINTS AND TIPS
  4188.  
  4189. Remember: you can't CONNECT to a modem and type the modem's dialing command
  4190. (like "ATDT7654321") manually, unless you first tell C-Kermit to:
  4191.  
  4192.   SET CARRIER OFF
  4193.  
  4194. This is because (in these implementations), the CONNECT command requires the
  4195. modem's Carrier Detect (CD) signal to be on, but the CD signal doesn't come on
  4196. until after dialing is complete.  This requirement is what allows C-Kermit to
  4197. pop back to its prompt automatically when the connection is hung up.  See the
  4198. description of SET CARRIER in "Using C-Kermit".
  4199.  
  4200. Similarly, if your dialed connection drops when CARRIER is set to AUTO or ON,
  4201. you can't CONNECT back to the (now disconnected) screen to see what might
  4202. have happened unless you first SET CARRIER OFF.
  4203.  
  4204. Automatic redialing:  Here is a simple macro that dials and keeps redialing
  4205. every thirty seconds until it gets an answer.  Obviously, it can be elaborated
  4206. with messages, counters, etc:
  4207.  
  4208.   define keep_on_dialing dial \%1, while failure { sleep 30, redial }
  4209.  
  4210. Don't SET FLOW RTS/CTS if your modem is turned off, or if it is not presenting
  4211. the CTS signal.  Otherwise, the serial device driver might get stuck waiting
  4212. for this signal to appear.  When dialing, it is better to give the SET FLOW
  4213. RTS/CTS command after the DIAL command than before it.
  4214.  
  4215. Here are a few points to clarify the purpose of SET DIAL SPEED-MATCHING:
  4216.  
  4217.  1. This command does not do anything at all to the modem.  Rather, it is used
  4218.     to inform C-Kermit about the modem's configuration: whether the modem's
  4219.     interface speed is "fixed", or it changes its interface speed when a
  4220.     connection is made.  In the latter case, C-Kermit changes its own speed in
  4221.     response to the speed given in the modem's CONNECT message.  By default,
  4222.     SPEED-MATCHING is ON, so Kermit does indeed attempt to change its speed.
  4223.     If your modem is set to have a fixed interface speed, you must SET DIAL
  4224.     SPEED-MATCHING OFF.
  4225.  
  4226.  2. When DIAL SPEED-MATCHING is ON:
  4227.  
  4228.     (a) Your modem must be configured to report its *interface* speed in the
  4229.         CONNECT message, rather than the connection (modulation) speed.
  4230.  
  4231.     (b) Your computer (and C-Kermit) must support all connection speeds that
  4232.         might be reported by your modem.  SET SPEED ? will give you a list of
  4233.         the speeds that your version of C-Kermit knows about.
  4234.  
  4235.  3. If conditions (a) and (b) cannot be satisfied, then you must:
  4236.  
  4237.     (a) Configure your modem to lock its interface speed
  4238.  
  4239.     (b) Tell C-Kermit to SET DIAL SPEED-MATCHING OFF
  4240.  
  4241. To illustrate, suppose you have a V.32bis modem.  When it connects to a
  4242. remote V.32bis modem, it might issue a message like:
  4243.  
  4244.   CONNECT 14400
  4245.  
  4246. But 14400 bps is not a speed that is supported by certain operating systems
  4247. and so C-Kermit might fail to adjust its speed according to this report.
  4248. Therefore, you must lock the modem's interface speed at a higher speed (such
  4249. as 19200, 38400, or 57600) that is supported by C-Kermit, set C-Kermit to the
  4250. same speed, and tell C-Kermit to SET DIAL SPEED-MATCHING OFF.
  4251.  
  4252. If you have a high-speed, error-correcting, data-compressing, speed-buffering
  4253. modem, you should always SET DIAL SPEED-MATCHING OFF, and you should fix the
  4254. modem's interface speed as high as possible, preferably four times higher than
  4255. its maximum connection (modulation) speed to allow compression to work at full
  4256. advantage.  In this type of setup, you must also have an effective means of
  4257. flow control enabled between C-Kermit and the modem, preferably hardware
  4258. (RTS/CTS) flow control.
  4259.  
  4260. C-Kermit knows about a large number of modems, depending on how it was built
  4261. (type "set modem ?" and "show features" for further info).  This knowledge is
  4262. imbedded in the SET MODEM and DIAL commands.  If you are having trouble
  4263. dialing your modem, SET DIAL DISPLAY ON to watch the dialing interactions
  4264. between C-Kermit and your modem.  Consult pages 65-66 of "Using C-Kermit" for
  4265. modem-dialing troubleshooting instructions.
  4266.  
  4267. If it takes your call longer to be completed than the timeout interval that
  4268. C-Kermit calculates, you can use the SET DIAL TIMEOUT command to override
  4269. C-Kermit's value.  But beware: the modem has its own timeout for completing
  4270. the call.  If it is a Hayes-like modem, C-Kermit adjusts the modem's value
  4271. too by setting register S7.  But the maximum value for S7 might be smaller
  4272. than the time you need!  In that case, C-Kermit sets S7 to 0, 255, or other
  4273. (modem-specific) value to signify "no timeout".
  4274.  
  4275. WARNING: Certain modems might have a maximum dial timeout shorter than what
  4276. Kermit expects it to be.  If Kermit attempts to set register S7 to a value
  4277. higher than your modem's maximum, the modem will say "ERROR" and you will get
  4278. a "Failure to initialize modem" error.  In that case, use SET DIAL TIMEOUT to
  4279. override C-Kermit's calculation of the timeout value with the highest value
  4280. that is legal for your modem, e.g. 60.
  4281.  
  4282. How to DIAL from a TCP/IP reverse terminal server (modem server):
  4283.  
  4284.  1. (only if neccessary) SET TELNET ECHO REMOTE
  4285.  2. SET HOST <terminal-server-ip-name-or-address> [ <port> ]
  4286.  3. SET MODEM <modem-type>
  4287.  4. (only if necessary) SET DIAL HANGUP OFF
  4288.  5. DIAL <phone-number>
  4289.  
  4290. The order is important.
  4291.  
  4292. Although various modem-dialing strings are configurable, the DIAL MODEM-HANGUP
  4293. string is not.  For Hayes and Hayes-like modems it is ATQ0H0; the Q0 is to
  4294. ensure that a result code is produced.  In case the Q0 interferes with your
  4295. normal setup (for example, if you keep your modems set to Q2), and dropping
  4296. the connection does not restore the normal connection, you can define Kermit's
  4297. ON_EXIT macro to send the appropriate modem configuration commands when Kermit
  4298. exits, for example:
  4299.  
  4300.   define on_exit if > \v(local) 0 output ATQ2\13
  4301.  
  4302. The SET DIAL KERMIT-SPOOF command works only for Telebit and US Robotics modem
  4303. types; it is OFF by default.  You may wish to experiment with large packets
  4304. (1K or greater) and various window sizes with spoofing disabled in the modem.
  4305. In most situations the transfer rates achieved by Kermit with sliding windows
  4306. and long packets are better than with protocol spoofing turned on.  Also,
  4307. attribute (A) packets are not passed by current Telebit modems with spoofing
  4308. enabled so if they are desired spoofing must be turned off.
  4309.  
  4310. If C-Kermit's dialing methods are insufficient for your purposes, you can
  4311. write a C-Kermit script program to do the dialing.  Or you can use (or write)
  4312. another program to accomplish the dialing, and then run C-Kermit "underneath"
  4313. your dialing program by giving it the open file descriptor:
  4314.  
  4315.   kermit -l <n> -m unknown
  4316.  
  4317. where <n> is the numeric file desciptor.  Or you can modify the ckudia.c
  4318. module.
  4319.  
  4320. NOTE: When you give a SET DIAL DIRECTORY command, C-Kermit keeps your dial
  4321. directory file open until you give another SET DIAL DIRECTORY command, or
  4322. until you EXIT.  So, for example, you can't edit the dialing directory while
  4323. you have it open.  If you want to edit the dialing directory from within
  4324. Kermit, you can close it by giving a SET DIAL DIRECTORY command with no file
  4325. name.  Then you can open it again with SET DIAL DIRECTORY <filename>.
  4326.  
  4327. HAYES AND COMPATIBLE MODEMS
  4328.  
  4329. C-Kermit should work correctly with Hayes and other modems that use the AT
  4330. command set.  These include Hayes 1200, Hayes 2400, and Hayes 9600 bps modems,
  4331. compatibles, as well as Telebit and HST modems.  See the next section for
  4332. Telebit information.  C-Kermit sends AT commands to the modem and then reads
  4333. the modem's response.  The software is designed to work whether the modem is
  4334. configured to echo its commands (E1) or not (E0), and whether it replies with
  4335. numeric (V0) or word (V1) result codes.  C-Kermit does not change the echoing
  4336. state or result code mode of the modem.  However, C-Kermit issues the Q0
  4337. command to the modem to ensure that it *does* produce result codes.  C-Kermit
  4338. assumes the modem's Command Line Terminator (S3) is 13 (carriage return).  If
  4339. it isn't, C-Kermit's dialog with the modem probably won't work correctly.
  4340.  
  4341. TELEBIT MODEM DIALING SUPPORT
  4342.  
  4343. There are numerous Telebit modem models, with differing capabilities and
  4344. features.  C-Kermit tries to support them all in a model-independent way.  
  4345. To use a Telebit modem, any model, SET MODEM as follows:
  4346.  
  4347. TELEBIT
  4348.   Dial and attempt to connect using the highest protocol appropriate to
  4349.   the interface speed between the computer and the modem, and fall back
  4350.   automatically to the highest protocol and speed supported by the answering
  4351.   modem.  For example, if your interface speed is 19200 bps and you have a
  4352.   PEP-capable Telebit, it will start in PEP mode, fall back to one of the
  4353.   2400-bps standards, then one of the 1200 bps standards, etc, depending on
  4354.   its configuration (see your Telebit manual).
  4355.  
  4356. PEP-TELEBIT
  4357.   Dial in PEP mode, and connect only if the remote modem answers in PEP mode.
  4358.   Does not work with Telebit models that do not support PEP.  See Table III.
  4359.  
  4360. V32-TELEBIT
  4361.   Dial in V.32 mode (9600 bps), fall back from there.  Works only with Telebit
  4362.   models that support V.32; see Table III.  NOTE: V.32 calls are supposed to
  4363.   work no matter what your interface speed is, but it has been observed that
  4364.   when calling certain non-Telebit V.32 modems, the connection is not made
  4365.   successfully unless C-Kermit's interface speed to the Telebit is 9600.
  4366.  
  4367. V42-TELEBIT
  4368.   Enable V.42 error correction, allowing fallback to MNP, and from there to
  4369.   direct (no error correction).  NOTE: Fallback to MNP from V.42 is allowed
  4370.   even if DIAL MNP-ENABLE is OFF.  Works only with Telebit models supporting
  4371.   V.42 error control.  See Table III.
  4372.  
  4373. SLOW-TELEBIT
  4374.   Dial at 2400 bps (V.22bis), fall back from there.
  4375.  
  4376. Before attempting to use Telebits at high speeds, there is one problem you
  4377. should be aware of: Most Telebit models do not "autobaud" at speeds higher
  4378. than 19200 or 38400.  If you want to make a high-speed call on such a modem,
  4379. you must access it first at a lower speed, then give it a command to change to
  4380. a higher speed, and then change Kermit's speed to match.  For example, on the
  4381. Telebit T3000:
  4382.  
  4383.   C-Kermit> set speed 19200
  4384.   C-Kermit> connect
  4385.   AT                           (make sure it can read you)
  4386.   OK                           (it can)
  4387.   ATS51=7                      (change it to 57600 bps)
  4388.   OK                           (it says OK, then changes its speed)
  4389.   ^\c                          (escape back to Kermit)
  4390.   C-Kermit> set speed 57600    (set Kermit to agree) 
  4391.  
  4392. Of course, you can automate this process using a script program.  Or if you
  4393. always want to dial out at 57600, you can save this setting in the modem,
  4394. and then it will always use this speed (and won't autobaud any more).
  4395.  
  4396. Telebit modems come in many models that differ not only as to features but
  4397. also which commands control which features.  The features, commands, and
  4398. acceptable S-register values (and their meanings) can vary not only among
  4399. models, but even among different ROM versions on the same model.  Rather than
  4400. have dozens of separate SET MODEM TELEBIT-xxx commands, C-Kermit queries the
  4401. modem for its model number with an ATI command, and then adjusts its modem
  4402. commands accordingly.  Responses to the ATI command are shown in Table I.
  4403.  
  4404. ---------------------------------------------------------------------------
  4405. Table I: Telebit Modem ATI Command Responses
  4406. ---------------------------------------------------------------------------
  4407.   ATI  Model Numbers           Examples
  4408.   ---  -------------           --------
  4409.   123                          Telebit in "total Hayes-1200" emulation mode
  4410.   960                          Telebit in Conventional Command (Hayes) mode
  4411.   961  RA12C                   IBM PC internal original Trailblazer
  4412.   962  RA12E                   External original Trailblazer, DCA Fastlink,
  4413.                                  or Racal-Milgo RM1822
  4414.   963  RM12C                   Rackmount original Trailblazer
  4415.   964  T18PC                   IBM PC internal Trailblazer-Plus (TB+)
  4416.   965  T18SA, T2SAA, T2SAS     External TB+, T1600, T2000, T3000, WB, and later
  4417.                                  or Ven-Tel Pathfinder EC18K (see below)
  4418.   966  T18RMM                  Rackmount TB+
  4419.   967  T2MC                    IBM PS/2 internal TB+
  4420.   968  T1000                   External T1000
  4421.   969  ?                       QBlazer
  4422.   971  T25SA                   External T2500 or T1500 (see below)
  4423.   972  T25RM                   Rackmount T2500
  4424. ---------------------------------------------------------------------------
  4425.  
  4426. Certain incompatible models show the same response to ATI.  The ATI3
  4427. command is used to differentiate among them, as shown in Table II.
  4428.  
  4429. ---------------------------------------------------------------------------
  4430. Table II: Telebit Modem ATI3 Command Responses
  4431. ---------------------------------------------------------------------------
  4432. ATI        If ATI3 Response 
  4433. Response   Contains            Telebit Model Is
  4434. --------   -----------------   ----------------
  4435.  965       "T1600"             T1600
  4436.  965       "T3000"             T3000
  4437.  965       "World"             WorldBlazer
  4438.  965       "Version B"         TrailBlazer-Plus or T2000 external version 1
  4439.  965       "TBSA"              TrailBlazer-Plus or T2000 external version 2
  4440.  965       "TBRM"              TrailBlazer-Plus or T2000 rackmount version 2
  4441.  965       "DC"                Ven-Tel Pathfinder EC18K (= TB+ version 1)
  4442.  971       "T1500"             T1500
  4443.  971       (anything else)     T2500
  4444. ----------------------------------------------------------------------------
  4445.  
  4446.  
  4447. The features of the various models and the commands used by Kermit to control
  4448. them are shown in Table III.  The commands in the PEP column are used to force
  4449. PEP and allow compression (SET MODEM PEP-TELEBIT).  The commands in the V.32
  4450. column are used with SET MODEM V32-TELEBIT.  The commands in the V.42 column
  4451. are used with SET MODEM V42-TELEBIT.  The commands in the MNP column are used
  4452. if SET DIAL MNP-ENABLE is ON and the modem type is TELEBIT, PEP-TELEBIT, or
  4453. V32-TELEBIT, SLOW-TELEBIT, but not V42-TELEBIT; if SET MNP-ENABLE is OFF, the
  4454. S-registers in the MNP column are set to 0.  The Pass BREAK column shows the
  4455. commands used to ensure that the modem passes the BREAK signal through (rather
  4456. than treating it as an "escape-to-command-mode" signal).
  4457.  
  4458. -------------------------------------------------------------------------------
  4459. Table III.  Telebit Modem Features and Commands
  4460. ------+---------------------+-------+--------+--------+-------------+----------
  4461.       |                     |       |        |        |             | Kermit
  4462. Model |      PEP            | V.32  |  V.42  | MNP    | Pass BREAK  | Spoof
  4463. ------+---------------------+-------+--------+--------+-------------+----------
  4464. TB    | S50=255 S110=1      |  No   |  No    | S95=2  |    S54=3    | PEP only
  4465. TB+   | S50=255 S110=1      |  No   |  **    | S95=2  |    S54=3    | PEP only
  4466. T2000 | S50=255 S110=1      |  No   |  **    | S95=2  |    S54=3    | PEP only
  4467. T1000 | S50=255 S110=1      |  No   |  No    | S95=2  |    S54=3    | PEP only
  4468. T2500 | S50=255 S110=1      | S50=6 |  No    | S95=2  |    S54=3    | PEP only
  4469. T1500 |      No             | S50=6 |  **    | S95=2  |    S54=3    | PEP,V.32
  4470. ------+---------------------+-------+--------+--------+-------------+----------
  4471. T1600 |      No             | S50=6 | S180=2 | S180=3 | S61=0 S63=0 | PEP,V.32
  4472. T3000 |      No             | S50=6 | S180=2 | S180=3 | S61=0 S63=0 | PEP,V.32
  4473. QB    |      No             | S50=6 | S180=2 | S180=3 | S61=0 S63=0 | No
  4474. WB    | S50=255S190=1S191=7 | S50=6 | S180=2 | S180=3 | S61=0 S63=0 | PEP,V.32
  4475. ------+---------------------+-------+--------+--------+-------------+----------
  4476. **  For V.42 error control: "S50=0 S95=2 S97=1 S98=3 S106=1".
  4477.  
  4478. All models but the QBlazer support Kermit spoof (but see below).
  4479.  
  4480. Group I (old command set):
  4481.  
  4482.           TB = Original TrailBlazer (PEP, MNP, V.22bis, V.22, Bell 212A & 103)
  4483.          TB+ = TrailBlazer-Plus = TrailBlazer + V.42 (but only in new ROMs)
  4484.        T1000 = TrailBlazer-Plus, speed <= 9600, no PEP compression
  4485.        T2000 = TrailBlazer-Plus + SDLC (not used by Kermit, so same as TB+)
  4486.        T2500 = TrailBlazer-Plus + V.32 (9600 bps)
  4487.        T1500 = T2500 minus PEP
  4488.  
  4489. Group II (new command set):
  4490.  
  4491.        T1600 = V.32, MNP, V.22bis, V.22, V.23, Bell 212A & 103
  4492. QB = QBlazer = T1600 without Kermit spoof and minus some other options
  4493.        T3000 = T1600 + V.32bis (14400 bps)
  4494.  WorldBlazer = T3000 + PEP + LZ and V.42bis compression + 76800 & 115200 bps.
  4495.  
  4496. C-Kermit does not attempt to control whether the modem changes its interface
  4497. speed to match the connection speed -- that is up to you; you can configure
  4498. the modem any way you prefer (using S51 or, to some extent on new-style modems
  4499. S180 and S181), but make sure that the modem's configuration agrees with
  4500. C-Kermit's DIAL SPEED-MATCHING setting.  When DIAL SPEED-MATCHING is ON (the
  4501. default), C-Kermit changes its interface speed automatically according to the
  4502. speed reported in the modem's CONNECT message; when it is OFF, C-Kermit does
  4503. not change speed.
  4504.  
  4505. Most Telebit modems do not autobaud at speeds above 9600 or 19200 bps unless
  4506. specially configured to do so, and even then most (maybe all) models will not
  4507. autobaud at all at 57600 bps.  Thus, to make a high-speed modem call with
  4508. a Telebit, follow these steps:
  4509.  
  4510.   set modem telebit
  4511.   set line <whatever>
  4512.   set speed 19200
  4513.   connect
  4514.  
  4515. Now type AT and carriage return to make sure you get an OK result.  Then type:
  4516.  
  4517.   ats51=7
  4518.  
  4519. and then carriage return.  This changes the Telebit's interface speed to
  4520. 57600 (use ats51=6 if your modem's or computer's top speed is 38400).
  4521. Now escape back to Kermit and give these commands:
  4522.  
  4523.   set speed 57600 ; or 38400
  4524.   set dial speed-matching off
  4525.   set dial mnp on
  4526.     
  4527. and now you can place a high-speed, error-correcting, data-compressing call.
  4528.  
  4529. The DIAL KERMIT-SPOOF command is only effective for the Telebit models that
  4530. supply a Kermit spoof, that is, all but the QBlazer.  If the Telebit model is
  4531. TrailBlazer, TrailBlazer-Plus, T1000, T2000, or T2500, PEP mode is forced even
  4532. if your SET MODEM command specified a Telebit modem type other than
  4533. PEP-TELEBIT, because the Kermit spoof only works in PEP mode on those models.
  4534. On the other models supporting the Kermit spoof, it works on both PEP
  4535. connections and V.32 MNP (but not V.42) connections.  Thus, you might also
  4536. have to SET MODEM MNP-ENABLE ON in order to get the Kermit Spoof to work on
  4537. these newer models when making a V.32 connection.
  4538.  
  4539. SHOW DIAL does not show the complete initialization string for Telebit modems.
  4540. Telebit modems are initialized in several steps, and the initialization
  4541. command depends upon your current communication parameters, which model of
  4542. Telebit modem you have (which C-Kermit learns during the modem initialization
  4543. process), and other factors.  If you use the SET DIAL INIT-STRING command to
  4544. change the initialization string, this disables the multistep process and uses
  4545. only the string that you have specified.
  4546.  
  4547. If you want to use the built-in multi-step process, but you also want to
  4548. override one or more of the settings that are done in this process, or add
  4549. additional settings, you can use SET DIAL DIAL-COMMAND to add commands to the
  4550. dial string (which is normally ATD%s\13), for example "SET DIAL DIAL-COMMAND
  4551. AT&C1&D2S181=1DT%s\13".
  4552.  
  4553. DIALING AND FLOW CONTROL
  4554.  
  4555. If you have SET FLOW to any of the hardware options supported by your version
  4556. of C-Kermit, such as RTS/CTS, and if C-Kermit knows how to set the flow
  4557. control on your modem, it will do this as part of the DIAL command.  Caution:
  4558.  
  4559.   If C-Kermit's FLOW-CONTROL setting is Xon/Xoff or other type of software
  4560.   flow control, C-Kermit will not attempt to change your modem's flow control
  4561.   setting, since software flow control is most commonly used end-to-end.  One
  4562.   way to engage Xon/Xoff flow control directly between C-Kermit and the
  4563.   local modem is to change your modem's DIAL INIT-STRING to do it.
  4564.  
  4565. Hardware flow control options are presently handled only for Telebit modems.
  4566. On other modem types, you can set the flow control outside of Kermit, or
  4567. change Kermit's DIAL INIT-STRING.
  4568.  
  4569. A "TIES" (Time-Independent Escape Sequence) modem does not require any guard
  4570. time around its escape sequence.  The following text:
  4571.  
  4572. +++ATH0
  4573.  
  4574. if sent through a TIES modem, for example because you were uploading this
  4575. file through it, could pop the modem back into command mode and make it hang
  4576. up the connection.  Newer versions of the Telebit T1600 and T3000 (version
  4577. LA3.01E firmware and later), and all WorldBlazers, use TIES.
  4578.  
  4579. Although the probability of "+++" appearing in a Kermit packet is markedly
  4580. lower than with most other protocols (see the File Transfer section below), it
  4581. can still happen under certain circumstances.  It can also happen when using
  4582. C-Kermit's TRANSMIT command.  If you are using a Telebit TIES modem, you can
  4583. change the modem's escape sequence to an otherwise little-used control
  4584. character such as Ctrl-_ (Control-Underscore):
  4585.  
  4586.   AT S2=31
  4587.  
  4588. A sequence of three consecutive Ctrl-_ characters will not appear in a
  4589. Kermit packet unless you go to extraordinary lengths to defeat more than a few
  4590. of Kermit's built-in safety mechanisms.  And if you do this, then you should
  4591. also turn off the modem's escape-sequence recognition altogether:
  4592.  
  4593.   AT S48=0 S2=255
  4594.  
  4595. But when escape sequence recognition is turned off, "modem hangup"
  4596. (<pause>+++<pause>ATH0<CR>) will not work, so you should also be sure to SET
  4597. DIAL MODEM-HANGUP OFF.
  4598.  
  4599. ------------------------------
  4600. IV. ERRATA & CORRIGENDA
  4601.  
  4602. The following errors in "Using C-Kermit" (first edition, first printing)
  4603. have been noted, most of them by Gisbert W. Selke, while translating the
  4604. book into German:
  4605.  
  4606. PAGE    REMARKS
  4607.  xviii  Fridrik Skulason's name is spelled with an eth, not a d.
  4608.  xx     Ditto.
  4609.  13-14  The list of systems supported by C-Kermit is not exhaustive.
  4610.     New systems discovered since the printing date are listed in
  4611.     the file CKCxxx.UPD, where xxx is the current edit number, e.g. 189.
  4612.  46     The SET CARRIER description says that it doesn't take effect until the
  4613.         next SET LINE command.  In fact, it can have an effect at certain
  4614.         other times too, such as when you issue any communication-oriented
  4615.         command that changes the communication device modes.  The SET CARRIER
  4616.         AUTO description should say: "Requires carrier during CONNECT,
  4617.         TRANSMIT, INPUT, OUTPUT, and SCRIPT commands, but not during DIAL
  4618.         operations or file transfer."  These fine distinctions in SET CARRIER
  4619.         operation apply mainly to System-V or POSIX based UNIX C-Kermit
  4620.         implementations and OS/2 C-Kermit, but (in general) not to others.
  4621.  53     Table 3-2, HST-COURIER, contains extraneous typesetting information
  4622.     ("Courier10PitchBT-Roman").  (This probably happened because an
  4623.     error-correcting protocol was not used to download the final
  4624.     PostScript to the printer :-)  Two new modem types, COURIER and
  4625.     SPORTSTER have been added, which are the same as HST-COURIER.  The
  4626.     description should say "US Robotics modems".
  4627.  85     The command in the final line in the example, "send olga It's
  4628.     765-4321", should be underlined.
  4629.  91     SET KEY CLEAR added in 5A(190), restores default key mapping.
  4630.  93     The description of SET SESSION-LOG fails to mention that XON and
  4631.     XOFF are removed from a text-mode session log.
  4632. 101     In the HINT inset, the words SEND and RECEIVE should be exchanged.
  4633. 144     In REMOTE CD [ directory ] description, the brackets should be
  4634.         in italics.
  4635. 145     There should be no right parenthesis in REMOTE DIRECTORY [ filespec) ].
  4636. 150     "Now start C-Kermit on the VAX..." should say "Now start C-Kermit on
  4637.         the UNIX system..."
  4638. 164     The description of compression predates the new SET REPEAT command,
  4639.         described below.
  4640. 172     Table 9-2.  The text fails to mention that the Chinese Roman,
  4641.     Icelandic, and Japanese Roman sets are not used by C-Kermit.
  4642.     All nine occurrences of accent acute (') by itself in column 6/00
  4643.     should be accent grave (`).  Column 7/14 for Norwegian should show
  4644.     macron (overline) rather than vertical bar.
  4645. 174     Table 9-4, row 03, column 13 should be O-acute, not O-grave.
  4646. 178     Next-to-last paragraph: "rlogin -8", not "rsh -8".
  4647. 185     C-Kermit>set unknown-char-set (not "sent unknown-char-set").
  4648. 189     The description of JIS X 0201 says that it differs from a
  4649.     Latin Alphabet in that the right half has some empty positions.
  4650.     Some Latin Alphabets (e.g. Latin/Hebrew) also have empty positions.
  4651. 195     Second example: "type diab.asc" instead of "type diab.lat".
  4652. 197     6th line from bottom: MSCUSTOM.INI, not MSKERMIT.INI.
  4653. 203     Examples should say XM (XMIT) rather than XF (XFER).
  4654. 215     Example should say "duplex" rather than "duplux".
  4655. 226     \m() variables are really not like \%a-style global variables,
  4656.         in that the do not get recursively evaluated -- on the literal
  4657.         definition is returned.
  4658. 239     Line 3: "secret" should be "oofa".
  4659.         Middle paragraph, material beginning "In these commands, literal
  4660.         strings to be compared must not contain any spaces..."  As of version
  4661.         5A(190), this is no longer true.  Multiple words can be grouped
  4662.         together within braces, e.g. "if equal \%a {here are four words} ..."
  4663. 242     First line should have no comma at the end.
  4664. 246     Description of label syntax should state that in a macro definition,
  4665.         labels are set off by commas.
  4666. 249     In the syntax description of the FOR command, the words "initial",
  4667.     "final", and "increment" should be in italics, and there should be
  4668.     no right angle bracket (>) following the word "increment".  Also,
  4669.         the description of the FOR command fails to state explicitly that
  4670.         the increment can be negative for counting backwards, in which case
  4671.         the completion test is that the variable becomes less than the
  4672.         final value, not greater than the final value.  Also, the book
  4673.         does not mention that the value of the loop variable can be changed
  4674.         by the commands in the loop contents, and this will affect the
  4675.         execution of the loop.
  4676. 250     In the wakeup-call example, the tests should be "if llt" rather than
  4677.         "if not lgt".
  4678. 252     Comments on the example should say "third is smaller or equal".
  4679. 252     Text fails to mention that functions can not change their arguments
  4680.         (i.e. arguments are passed by value).
  4681. 254     \Flower() and \Fupper() functions only work correctly on 7-bit ASCII
  4682.         letters.
  4683. 258     Table 12-2, operator |.  Example should say \%a | 4 gives value 6.
  4684. 264     Table 12-3, entry "double width line" should be \27#6, not \27#4.
  4685. 264     Table 12-3, entry "set scrolling region" should refer to top row,
  4686.         bottom row; not to row, column.
  4687. 264     Table 12-3, entry "Stops transparent printing", Kermit Notation
  4688.         column, should say "\27[4i", not "\27[0i".
  4689. 264     Table 12-3, entry "Starts transparent printing", Kermit Notation
  4690.         column, should say "\27[5i", not "\27[0i".
  4691. 264     Table 12-3, entry "VT200 ID" should say "ESC [ 62c", not "ESC [ 6c".
  4692. 264     Table 12-3, entry "VT300 ID" should say "ESC [ 63c", not "ESC [ 6c".
  4693. 266-267 The section File Transfer Shortcuts does not apply to file transfer
  4694.     with MS-DOS Kermit 3.13 or later.  The escape sequences associated
  4695.     with the TERMINALR and TERMINALS macros in MS-DOS Kermit 3.12 and
  4696.     earlier are now used for changing screen-writing direction during
  4697.     terminal emulation, as on real DEC Hebrew VT terminals.  See the
  4698.     MS-DOS Kermit 3.13 update notes (KERMIT.UPD) for detailed information.
  4699. 267     The description of the RETURN command says it may not be used in the
  4700.         command list of a FOR, WHILE, or XIF command.  As of edit 190, this
  4701.         is no longer the case.
  4702. 268     Carl, not Karl, Friedrich Gauss.
  4703. 269     The OPEN !READ command example for VMS should use /EXCLUDE= rather
  4704.     than /EXCEPT=.
  4705. 272     Line 14 of example should say "if = \%n \%d", not "if = \%i \%d".
  4706. 275     Comma missing after closing brace of FOR loop in CALL macro.
  4707. 276     Line 13: When you give a SERIAL (not LINE), NET, or CALL command...
  4708. 286     The OUTPUT command in the middle of the page should say
  4709.         "\27[\?6c" rather than "\27[\?1c".
  4710. 287     SET INPUT TIMEOUT QUIT in the VMSLOGIN macro should be
  4711.         SET INPUT TIMEOUT PROCEED.  The continuation hyphen is missing from
  4712.         three lines.  The VMSLOGIN macro in the distributed CKERMIT.INI file
  4713.         corrects these errors.
  4714. 294     The CISLOGIN macro has several mistakes.  The following section:
  4715.       input 5 User ID:,-
  4716.       output \%2\13,-
  4717.       input Password:,-
  4718.       output \%3\13,-
  4719.       input 20 Enter Choice!,-
  4720.         Should be replaced by:
  4721.       input 5 User ID:,-
  4722.       output \%1\13,-
  4723.       input 5 Password:,-
  4724.       output \%2\13,-
  4725.       input 20 CompuServe Information Service,-
  4726. 299     Paragraph after "define ACCESS": "and assigned to the local temporary
  4727.         variable \%9" should be removed.  Towards the bottom of the page, the
  4728.         example and the last two paragraphs should be adjusted to discuss the
  4729.         ACCESS macro definition as it appears at the top of the page!  The
  4730.         \%9 variable is not used.  The example "if def \%9 doaccess { \%2} \%9"
  4731.         should read "if success doaccess { \%2} \v(return)".  In the first line
  4732.         of the last paragraph, "\%9" should be changed to "\v(return)".
  4733. 315     VMS examples:
  4734.         $ define compuserve $sys$system:kermit.exe sys$login:compuserve.cmd
  4735.         $ define sprintnet  $sys$system:kermit.exe sys$login:sprintnet.cmd
  4736.         Should be:
  4737.         $ compuserve :== $sys$system:kermit.exe sys$login:compuserve.cmd
  4738.         $ sprintnet  :== $sys$system:kermit.exe sys$login:sprintnet.cmd
  4739. 323-324 The description of C-Kermit program exit status codes fails to
  4740.     mention the special method used by (Open)VMS, in which these codes
  4741.     are assigned to the symbol CKERMIT_STATUS (see CKVKER.BWR).
  4742. 336     PRINT, PING, and similar commands work by running the corresponding
  4743.         system command (PRINT, lp, lpr, etc), which must be in the user's PATH
  4744.         with execute permission, otherwise an error message appears stating
  4745.         "command not found" or "permission denied", etc.
  4746. 346     SET KEY CLEAR added in 5A(190), restores default key mapping.
  4747. 352     The syntax of SET TELNET TERMINAL-TYPE should include italicized
  4748.     square brackets around "text" to indicate that the text is optional,
  4749.     and that if it is omitted, the TELNET TERMINAL-TYPE reverts to the
  4750.     default, usually the terminal type of your login session.
  4751. 352     The entries for SET TERMINAL ANSWERBACK, ARROW-KEYS, KEYPAD-MODE, and
  4752.     SCROLLBACK, etc, are missing.  These are OS/2-specific commands (all of
  4753.         these except those new to edits 189 and 190 -- are described in the
  4754.         OS/2 Appendix on page 432).  See the OS/2 updates file.
  4755. 353     The entries for SET TERMINAL TYPE and WRAP are missing.
  4756.     These are also OS/2-specific commands (described on page 432).
  4757. 354     SET TRANSMIT PAUSE description is inaccurate.  An accurate description
  4758.         appears on page 204.
  4759. 366     In Table II-2, "ATSO=0" should be "ATS0=1".
  4760. 402-403 "define sys$input" and "define sys$output" in the examples on these
  4761.         two pages should be "define /user_mode sys$input", etc.  This makes
  4762.         the definitions effective only for the next program invocation.  In
  4763.         that case the "deassign sys$input", "deassign sys$output" commands
  4764.         can be removed.
  4765. 403     The section "Running C-Kermit in DCL Command Procedures" fails to
  4766.     describe how to use C-Kermit's exit status codes (see CKVKER.BWR).
  4767. 409     The Backup date in the example at the top of the pages should not
  4768.         be earlier than the Created and Revised dates.  The maximum record
  4769.         length is 65534, not 32767.
  4770. 419     The "stepping-stone" at the beginning of the OS/2 Appendix fails
  4771.     to refer readers to the CKCKER.BWR and CKOKER.BWR files, and the
  4772.         OS/2 updates file CKOKER.UPD.
  4773. 420     Footnote.  The COMDMA driver, though discussed in the OS/2
  4774.     documentation, never actually existed.  The regular COM.SYS driver
  4775.     is used instead.
  4776. 425     The first paragraph in the Serial Communications section fails to
  4777.     mention that other serial-port device names are also acceptable.
  4778. 425     Bottom -- OS/2 C-Kermit now also supports VT100, VT220, and ANSI 
  4779.         terminal emulation.
  4780. 428-432 These pages are largely obsolete as of version 5A(190).  The CONNECT-
  4781.         mode actions shown in Table V-1, as well as the Arrow keys (Table V-2),
  4782.         Keypad keys (Table V-3), now have \Kverbs associated with them,
  4783.         exactly as in MS-DOS Kermit.  Additional \Kverbs are provided for
  4784.         VT220 (LK201) F keys and editing keys.  See the OS/2 updates file.
  4785. 430     Table V-3 fails to include the Num Lock key, and the accompanying
  4786.     text does not mention the fact the fact that it can be assigned
  4787.     with SET KEY.  See CKOKER.BWR, CKOVTK2.INI, and the OS/2 updates file
  4788.         for further information.
  4789. 431     Third paragraph.  "F1 through F4" should be "F1 through F10".
  4790.     Also, the Home key should be included in the list of keys that
  4791.     control screen rollback.
  4792. 432     The description of SET TERMINAL ANSWERBACK is missing.
  4793.         Also, numerous new SET TERMINAL commands have been added for OS/2;
  4794.         see the OS/2 updates file.
  4795. 435-439 Tables V-4 through V-9 need to be augmented with VT220 sequences.
  4796.         See the OS/2 updates file.
  4797. 438     No explanation of "nbits".  1=8-bit characters, 2=7-bit characters.
  4798.     "baud" should be "bps".
  4799. 440     Table V-10.  ESC W misplaced (alphabetically).
  4800. 447     "SET FILENAMES" should be "SET FILE NAMES".
  4801. 462     The text at the top of the page should say "ISO 8859", not "ISO 8858".
  4802. 463     Table VIII-3.  Same as for Table 9-2, page 172.  Plus: Fr-Canadian
  4803.         should be listed as Canadian-French.
  4804. 486     The Cyrillic expansion for "KOI" is misspelled.
  4805. 491     Reference [6].  The third Cyrillic word is misspelled.
  4806. 495     Reference [48].  "Unterschiessheim" should be "Unterschleissheim".
  4807.     Reference [50].  Second Cyrillic word misspelled.
  4808. ...     Hebrew character set tables need to be added.
  4809. Index   Needs entries for:
  4810.       Command-line options
  4811.       Delay
  4812.       Encryption
  4813.       Grouping of words in commands
  4814.       Commands, grouping of words in
  4815.       Length, of packets
  4816.       Length, of files
  4817.       Prompt, how to set
  4818.       Spaces, in commands
  4819.           Telenet (see SprintNet)
  4820.       Terminal servers, dialing out from
  4821.       umask
  4822.  
  4823. Please send reports of other errors to the authors, as well as suggestions for
  4824. improvements, additional index entries, and any other comments.
  4825.  
  4826. ------------------------------
  4827. END OF CKERMIT.UPD
  4828.