home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / archives / ckc190.zip / ckcker.upd < prev    next >
Text File  |  1996-03-21  |  115KB  |  2,481 lines

  1. File CKCKER.UPD, Supplement to "Using C-Kermit".                   -*- text -*-
  2.  
  3. As of C-Kermit version:  5A(190)
  4. This file last updated:  October 4, 1994
  5.  
  6. Authors: Frank da Cruz and Christine M. Gianone
  7. Address: Watson Laboratory, Columbia University Academic Information Systems,
  8.          612 West 115th Street, New York, NY 10025-7221, USA.
  9. Phone:   +1 212 854-5126
  10. Fax:     +1 212 662-6442  -- or --  +1 212 663-8202
  11. E-Mail:  kermit@columbia.edu
  12.  
  13.   Copyright (C) 1985, 1994, Trustees of Columbia University in the City of New
  14.   York.  The C-Kermit software may not be, in whole or in part, licensed or
  15.   sold for profit as a software product itself, nor may it be included in or
  16.   distributed with commercial products or otherwise distributed by commercial
  17.   concerns to their clients or customers without written permission of the
  18.   Office of Kermit Development and Distribution, Columbia University.  This
  19.   copyright notice must not be removed, altered, or obscured.
  20.  
  21. ------------------------------
  22. WHAT IS IN THIS FILE
  23.  
  24. This file lists changes made to C-Kermit since version 5A(188) was released
  25. and the first edition of the book "Using C-Kermit" was published.  Use this
  26. file as a supplement to "Using C-Kermit".  If the "most recent update" shown
  27. above is long ago, contact Columbia University to see if there is a newer
  28. release.
  29.  
  30. For further information, also see the CKCKER.BWR ("C-Kermit beware") file for
  31. hints, tips, tricks, restrictions, frequently asked questions, etc, plus the
  32. system-specific "beware file", e.g. CKUKER.BWR for UNIX, CKVKER.BWR for VMS,
  33. etc, and also any system-specific update files such as CKOKER.UPD for OS/2.
  34.  
  35. ------------------------------
  36. CONTENTS
  37.  
  38.  I.  C-KERMIT DOCUMENTATION: Information about the C-Kermit manual.
  39.  
  40.  II. NEW FEATURES: Documentation for features added since 5A(188) --
  41.  
  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.      (2) MAKING AND USING CONNECTIONS
  47.          2.1. Using the Services Directory
  48.      2.1.1. Login Macros
  49.      2.1.2. Connection Details
  50.      (3) TERMINAL CONNECTION
  51.      3.1. Auto Up- and Download
  52.      3.2. The CONNECT Command
  53.      3.3. The SET KEY Command
  54.      3.4. The SET TERMINAL Command
  55.          3.5. The SET TELNET Command
  56.      (4) FILE TRANSFER
  57.      4.1. File Transfer Recovery
  58.      4.1.1. The RESEND Command
  59.      4.1.2. Manual Recovery: The PSEND Command
  60.      4.2. Control-Character Unprefixing
  61.      4.3. Keyboard Cancellation of Packet Mode
  62.      4.4. New RECEIVE Command Features
  63.      4.5. Automatic Directory Creation
  64.      4.6. Pausing Between Packets
  65.      4.7. Fullscreen File Transfer Display Improvements
  66.      4.7.1. Thermometer
  67.      4.7.2. Repainting the Screen
  68.          4.8. Improved Status Codes
  69.      (5) NEW CLIENT/SERVER FEATURES
  70.      5.1. New REMOTE Commands
  71.      5.2. "WHATAMI" -- Making Kermit GET more like FTP GET
  72.      (6) INTERNATIONAL CHARACTER SETS
  73.      6.1. Hebrew File Transfer
  74.      6.2. Hebrew Terminal Emulation
  75.      6.3. The Hewlett Packard Roman8 Character Set
  76.      (7) SCRIPT PROGRAMMING
  77.      7.1. New IF Commands
  78.      7.2. New \v() Variables
  79.      7.3. New \f() functions
  80.      7.4. INPUT and OUTPUT Command Improvements
  81.      7.5. The New MINPUT Command
  82.      7.6. Other New or Improved Script Programming Commands
  83.      (8) EXTERNAL PROTOCOLS
  84.      8.1. The REDIRECT Command
  85.      8.2. New Macros
  86.      (9) NEW COMMAND-LINE OPTIONS
  87.  
  88. III. APPENDICES  
  89.  
  90.      Appendix 1: UNIX C-KERMIT
  91.      Appendix 2: VMS C-KERMIT
  92.      Appendix 3: OS/2 C-KERMIT
  93.      Appendix 4: MACINTOSH KERMIT
  94.      Appendix 5: STRATUS VOS C-KERMIT
  95.   
  96. IV. ERRATA & CORRIGENDA: Corrections to "Using C-Kermit"
  97.  
  98. ------------------------------
  99. I. C-KERMIT DOCUMENTATION
  100.  
  101. The user manual for C-Kermit is:
  102.  
  103.   Frank da Cruz and Christine M. Gianone, "Using C-Kermit", Digital Press /
  104.   Butterworth-Heinemann, Woburn, MA, 1993, 514 pages, ISBN 1-55558-108-0
  105.  
  106.   US single-copy price: $34.95; quantity discounts available.  Available in
  107.   computer bookstores or directly from Columbia University:
  108.  
  109.     Kermit Development and Distribution
  110.     Columbia University Academic Information Systems
  111.     612 West 115th Street
  112.     New York, NY  10025  USA
  113.     Telephone: (USA) +1 212 854-3703
  114.  
  115.   Domestic and overseas orders accepted.  Price: $34.95 (US, Canada, and
  116.   Mexico), $45 elsewhere.  Orders may be paid by MasterCard or Visa, or
  117.   prepaid by check in US dollars.  Add $35 bank fee for checks not drawn on
  118.   a US bank.  Price includes shipping.  Do not include sales tax.
  119.   Inquire about quantity discounts.
  120.  
  121.   You can also order by phone from the publisher, Digital Press /
  122.   Butterworth-Heinemann, with MasterCard, Visa, or American Express:
  123.  
  124.     +1 800 366-2665   (Woburn, Massachusetts office for USA & Canada)
  125.     +44 1865 314627   (Oxford, England distribution centre for UK & Europe)
  126.     +61 03 9245 7111  (Melbourne, Vic, office for Australia & NZ)
  127.     +65 356-1968      (Singapore office for Asia)
  128.  
  129.   A German-language edition is also available:
  130.  
  131.     Frank da Cruz and Christine M. Gianone, "C-Kermit - Einfuehrung und
  132.     Referenz", Verlag Heinz Heise, Hannover, Germany (1994).
  133.     ISBN 3-88229-023-4.  Deutsch von Gisbert W. Selke.  Price: DM 90,00.  
  134.     Verlag Heinz Heise GmbH & Co. KG, Helstorfer Strasse 7, D-30625 Hannover.
  135.     Tel. +49 (05 11) 53 52-0, Fax. +49 (05 11) 53 53-1 29.
  136.  
  137. The Kermit file transfer protocol is specified in:
  138.  
  139.   Frank da Cruz, "Kermit, A File Transfer Protocol", Digital Press,
  140.   Bedford, MA, 1987, 379 pages, ISBN 0-932376-88-6.
  141.   US single-copy price: $29.95.  Availability as above.
  142.  
  143. News and articles about Kermit software and protocol are published
  144. periodically in the journal, Kermit News.  Subscriptions are free; contact
  145. Columbia University at the address above.
  146.  
  147. Online news about Kermit is published in the Kermit Digest and in the
  148. comp.protocols.kermit newsgroup.
  149.  
  150. ------------------------------
  151. II. NEW FEATURES
  152.  
  153. Items are grouped together by major topic, roughly corresponding to the
  154. chapters of "Using C-Kermit".
  155.  
  156. (1) PROGRAM MANAGEMENT
  157.  
  158. 1.1. Command Retry, Recall, and Typeahead
  159.  
  160. These features apply only when you are typing commands at the C-Kermit>
  161. prompt, and not to command file or macro execution.  They were added in
  162. edit 190.
  163.  
  164. If you enter a command that contains a syntax error, C-Kermit now reprompts
  165. you automatically with the portion of the command that was correct, so you
  166. don't have to retype it.  Example:
  167.  
  168.   C-Kermit>set block-check oofa
  169.   ?No keywords match - oofa
  170.   C-Kermit>set block-check _
  171.  
  172. "_" shows the position of the cursor after you are reprompted.  At this
  173. point, you can type question mark (?) to find out what is legal here, or you
  174. can complete the command, or you can erase it with Ctrl-U, etc, just as if
  175. you had retyped the initial words yourself.  If you want to disable this
  176. feature, tell C-Kermit to:
  177.  
  178.   SET COMMAND RETRY OFF
  179.  
  180. C-Kermit versions that are built with the "DYNAMIC" memory allocation option
  181. now support command recall (type "show features" and look for DYNAMIC and/or
  182. CK_RECALL).  C-Kermit saves your commands in a command recall (history)
  183. buffer, which, by default, holds your last 10 commands.  To recall your
  184. previous command, type Ctrl-P (that is, hold down the Control or Ctrl key and
  185. press the P or p key) or Ctrl-B.  Type Ctrl-P (or Ctrl-B) again to recall the
  186. command before that, and so on.  If you try to go back too far, C-Kermit beeps
  187. at you.
  188.  
  189.   NOTE: In OS/2, you should use Ctrl-B rather than Ctrl-P because, at least in
  190.   certain kinds of sessions, depending on your system's configuration, Ctrl-P
  191.   is trapped by OS/2 itself as a "toggle printer" command, as in MS-DOS.
  192.  
  193. Each time you recall a command, it appears before you as if you had typed it
  194. up to, but not including, the Enter (Carriage Return) that actually causes it
  195. to execute.  If you want to execute the command, press the Enter (Carriage
  196. Return) key.  If you want to edit it, use the editing keys, including Ctrl-U
  197. to erase it.
  198.  
  199. When you are viewing recalled commands, you can also go forwards in the
  200. command recall buffer by typing Ctrl-N.  This is handy in case (for example),
  201. you typed too many Ctrl-P's, and went back too far.
  202.  
  203.   NOTE: In general, arrow keys (and mice, etc) can not be used for command
  204.   recall.  Why?  Because C-Kermit would have to grow to twice its size to
  205.   include all the operating-system, version, hardware, keyboard, and terminal
  206.   dependent code to make these devices work uniformly on all (or even some) of
  207.   the computers where C-Kermit runs.  EXCEPTION: The up- and down-arrow keys
  208.   can be used in OS/2 to scroll up and down in the command recall buffer.
  209.  
  210. You can change the size of the command recall buffer to hold any number of
  211. commands you like, subject to the memory limitations of your computer.  The
  212. command is:
  213.  
  214.   SET COMMAND RECALL-BUFFER-SIZE number
  215.  
  216. where "number" is the number of commands you want to keep.  The more you keep,
  217. the more memory C-Kermit uses.  If you enter a size of 0, the command recall
  218. feature is disabled.  Whenever you give the SET COMMAND RECALL-BUFFER-SIZE
  219. command, your previous command history is lost.  You can display the size of
  220. your command recall buffer, as well as your COMMAND RETRY setting, with:
  221.  
  222.   SHOW COMMAND
  223.  
  224. (Note: SET CMD and SHOW CMD are synonyms for SET COMMAND and SHOW COMMAND)
  225.  
  226. Typeahead is now permitted during entry of interactive commands.  Typeahead is
  227. not preserved, however, over execution of command files or macros, because
  228. these might themselves require keyboard input, or might enter CONNECT or file
  229. transfer protocol mode.  Edit 190.
  230.  
  231. 1.2. The System-Wide Initialization File
  232.  
  233. As of edit 190, C-Kermit can be configured to execute its initialization file
  234. from a single system-wide directory, rather than requiring a copy in each
  235. user's home directory.  This is particularly important for UNIX; VMS C-Kermit
  236. already had a facility for this.  A common initialization file saves disk
  237. space and management headaches.  It is recommended that all the features of
  238. the standard initialization file (dialing directory and services directory
  239. setup, chaining to customization file, etc) be kept intact.
  240.  
  241. 1.3. The SET EXIT Command
  242.  
  243. SET EXIT WARNING { ON, OFF } tells whether C-Kermit should issue a warning
  244. message and require confirmation if an EXIT command, or a SET LINE (SET
  245. PORT), SET HOST, or TELNET command is given and a connection (dialed or
  246. network) still appears to be open, since any of these commands would close
  247. the currently open connection.  The default is OFF, meaning no warnings.
  248.  
  249. If SET EXIT WARNING is ON, a warning is issued if a network connection appears
  250. to be open:
  251.  
  252.   C-Kermit>exit
  253.    A network connection to foo.bar.edu might still be active.
  254.   OK to exit?
  255.  
  256. at which point you can type Yes or No.
  257.  
  258. You will also get a warning if the serial SET LINE device has the carrier (CD,
  259. DCD) signal and C-Kermit has not been told to SET CARRIER OFF:
  260.  
  261.   C-Kermit>set line /dev/acu
  262.    A serial connection might still be active on /dev/ttyh6.
  263.   OK to close?
  264.  
  265. Note that not all versions of C-Kermit have access to the carrier signal; if
  266. your version of C-Kermit says "Modem signals not available" when you give a
  267. SHOW COMM command, then SET EXIT WARNING ON will always warn you about a
  268. possibly active serial connection when you try to exit after using a SET LINE
  269. / SET PORT connection.
  270.  
  271. SET EXIT STATUS <number> tells C-Kermit to use the given number as its program
  272. exit (return) code.  This lets the user set program return code without
  273. actually having to exit; for example, the user can OR in various bits at
  274. different times.
  275.  
  276. Display the SET EXIT values with SHOW EXIT.  Edit 190.
  277.  
  278. (2) MAKING AND USING CONNECTIONS
  279.  
  280. 2.1 Using The Services Directory
  281.  
  282. In the original release of C-Kermit, 5A(188), the services directory feature
  283. was provided mainly as an illustration of how C-Kermit's script programming
  284. language can be used to build handy communications tools, and so it was not
  285. presented or explained until Chapter 13 of "Using C-Kermit", and therefore was
  286. probably missed by a lot of readers (and users).
  287.  
  288. Since then, the services directory feature has proven to be quite useful in
  289. its own right, and has also been improved in one small but important way.
  290. Here is a brief nontechnical explanation.
  291.  
  292. The services directory is a plain-text file in your home directory, containing
  293. one line, or "entry", for each service that you want to access.  Each service
  294. listed in your services directory can be connected to and logged in to
  295. automatically, no matter whether this involves dialing up a modem, making a
  296. network connection, or any other type of connection that C-Kermit can handle.
  297. The name of the services directory file is .ksd in UNIX and OS-9, and
  298. CKERMIT.KSD in OS/2, VMS, and elsewhere.
  299.  
  300. The services directory can be used only if you are also using the standard
  301. C-Kermit initialization file.
  302.  
  303. Each line in the services directory has the following parts:
  304.  
  305.   <name-of-entry> <login-macro-name> <username> <connection-details>
  306.  
  307. For example:
  308.  
  309.   HP9000 unixlogin olga net tcp/ip hp.xyzcorp.com
  310.  
  311. where "HP9000" is the entry name, "unixlogin" is the login macro name,
  312. "olga" is the username, and "net tcp/ip hp.xyzcorp.com" are the connection
  313. details.
  314.  
  315. To use this entry, you would give the following command at the C-Kermit
  316. prompt:
  317.  
  318.   access hp9000
  319.  
  320. or:
  321.  
  322.   access hp9000 xxxxxx
  323.  
  324. where "xxxxxx" is your password on the computer you will be accessing.
  325. C-Kermit's ACCESS macro (defined in your C-Kermit initialization file) handles
  326. the connection details: "net" means it's a network connection; "tcp/ip" tells
  327. which type of network, and "hp.xyzcorp.com" tells the name or address (in this
  328. case, the name) of the computer or service on the network.  If you don't
  329. supply a password to the ACCESS command, you are prompted for it.  You do not
  330. (can not, and should not) include passwords in your services directory file.
  331.  
  332. Here's another example, in which the connection is made by dialing a modem:
  333.  
  334.   COMPUSERVE cislogin  765,4321  call hayes /dev/cua 2400 93,876-5432
  335.  
  336. Here, "COMPUSERVE" is the entry name, "cislogin" is the name of the login
  337. macro, "765,4321" is your CompuServe user ID, and the connection details are:
  338. "call hayes /dev/cua 2400 93,876-5432".  "Call" means we will be making a
  339. phone call; "hayes" tells which type of modem, "/dev/cua" is the name of the
  340. device that modem is connected to, "2400" tells the communication speed, and
  341. "93,876-5432" is the phone number to dial.
  342.  
  343. 2.1.1. Login Macros
  344.  
  345. Each login macro looks for the appropriate prompts from the host or service
  346. and responds accordingly with your username, password, and/or other
  347. information, and then waits until it sees the main prompt of the host or
  348. service, or other indication that you have been logged in successfully.
  349.  
  350. The following login macros are available in the standard C-Kermit
  351. initialization file (.kermrc on UNIX and OS-9, CKERMIT.INI elsewhere):
  352.  
  353. UNIXLOGIN
  354.   For logging in to all types of UNIX systems: Solaris, HP-UX, Linux, IRIX,
  355.   DG/UX, NeXTSTEP, OSF/1, SunOS, etc etc.  The default system prompt
  356.   (explained below) is "\13\10$\32"; that is, carriage return, linefeed,
  357.   dollar sign, space.
  358.  
  359. VMSLOGIN 
  360.   For logging in to DEC VAX/VMS or OpenVMS systems.  The default system prompt
  361.   is "\10\13$\32"; that is, linefeed, carriage return, dollar sign, space.
  362.   This macro can also be used for logging in to DG AOS/VS systems if you
  363.   specify a different prompt ("\13\10)\32").  NOTE: The VMSLOGIN macro has
  364.   been updated to account for new procedures for use with VMS 6.0 and/or 6.1,
  365.   while retaining comptability with earlier VMS releases.
  366.  
  367. VMLINELOGIN
  368.   For logging into IBM mainframes with VM/CMS over linemode connections.
  369.  
  370. VMFULLOGIN
  371.   For logging into IBM mainframes with VM/CMS over fullscreen connections.
  372.  
  373. CISLOGIN
  374.   For logging in to CompuServe.
  375.  
  376. DOWLOGIN
  377.   For logging in to Dow Jones News/Retrieval.
  378.  
  379. DJNRSPRINT
  380.   For logging in to Dow Jones News/Retrieval over SprintNet.
  381.  
  382. NOLOGIN
  383.   For accessing computers or services that do not require logging in.
  384.  
  385. Each login macro name must be followed by a username, even NOLOGIN.
  386. For NOLOGIN, just include a "dummy" name, like "xxxx", that will not be used.
  387.  
  388. Other login macros can be easily constructed, modeled on those above.  Read
  389. Chapters 11-13 of "Using C-Kermit" for full instructions.  If you add or
  390. modify login macros, you should put their definitions in your C-Kermit
  391. customization file (.mykermrc in UNIX and OS-9, CKERMOD.INI elsewhere).
  392.  
  393. There was a problem with the login macros in C-Kermit 5A(188-189), namely that
  394. the system prompt was hard-coded into the macro.  For example, the UNIXLOGIN
  395. macro assumed that the UNIX shell prompt was "$ " (dollar sign followed by
  396. space), but in many cases it might be something else, and the only way to
  397. allow for different prompts was to edit the macro itself.  In C-Kermit 5A(190)
  398. and later, you may include the system prompt in your services directory by
  399. grouping it together in curly braces with the login macro name:
  400.  
  401.   {macroname prompt}
  402.  
  403. For example:
  404.  
  405.   CSHELL    {unixlogin \13\10%\32} olga net tcp/ip bsd.xyzcorp.com
  406.   CHEMISTRY {vmslogin \10\13CHEM$} OLGA net tcp/ip chemlab.xyzcorp.com
  407.   DG        {vmslogin \13\10)\32}  olga net tcp/ip aosvs.xyzcorp.com
  408.  
  409. The first example specifies the C-Shell prompt, "% ", rather than using the
  410. default UNIX (Bourne Shell, K-Shell) prompt of "$ ".  The second example
  411. accesses a system that has a custom prompt.  The third uses the VMSLOGIN macro
  412. to access a Data General AOS/VS system by specifying the AOS/VS prompt, ") ",
  413. since otherwise the Username: and Password: prompts are the same as for VMS.
  414.  
  415. The "backslash-number" notation is a way of including special (usually
  416. nonprintable) characters in C-Kermit commands and files, explained on pages
  417. 21-22 of "Using C-Kermit".  The number is the ASCII character number, such as
  418. 10 for linefeed, 32 for space.
  419.  
  420. 2.1.2. Connection Details
  421.  
  422. The Connection Details part of a services directory entry starts with one
  423. of the following words:
  424.  
  425.   CALL     - The connection is made with a phone call through a modem.
  426.   SERIAL   - The connection is a direct (dedicated) serial connection.
  427.   NET      - The connection is made on a network.
  428.  
  429. The subsequent information depends on the type of connection.
  430.  
  431. CALL must be followed by the following information, in this order:
  432.  
  433.   1. The modem type (a valid SET MODEM value).
  434.   2. The name of the device on your computer that the modem is connected to.
  435.   3. The speed, in bits per second, at which to use the device.
  436.   4. The telephone number to dial.  This can also be the name of an entry
  437.      in your dialing directory.
  438.  
  439. SERIAL must be followed by the following information, in this order:
  440.  
  441.   1. The serial device name.
  442.   2. The communication speed.
  443.  
  444. NET must be followed by:
  445.  
  446.   1. The network type: TCP/IP, X.25, DECNET, etc (a valid SET NET value).
  447.   2. The name or address of the host or service you want to connect to.
  448.   3. Additional network-specific information, like a service or socket number.
  449.  
  450. For TCP/IP network connections, you can include a socket number by appending
  451. to the IP name or address with a colon, for example:
  452.  
  453.   WEATHER  nologin  xxxx  net tcp/ip madlab.sprl.umich.edu:3000
  454.  
  455. Create your services directory file using a text editor, as a plain-text
  456. (ASCII) file.  If you are using a word processor, be sure to save your
  457. services directory as a plain text (ASCII) file.
  458.  
  459. To use your services directory, just type "access" and the service name at the
  460. C-Kermit prompt, for example:
  461.  
  462.   C-Kermit> access hp9000
  463.    olga's password: __________
  464.  
  465. To list your services directory, type "list" at the C-Kermit prompt.  To look
  466. up a particular services directory entry, type "list" and then the name, for
  467. example "list hp9000".
  468.  
  469. (3) TERMINAL CONNECTION
  470.  
  471. 3.1 Auto Up- and Download
  472.  
  473. As of edit 190, the OS/2, UNIX, and VMS versions of C-Kermit are able to
  474. respond automatically to "autoupload", "autodownload", or auto-anything-else
  475. directives from the remote computer during CONNECT mode.  These directives
  476. come in the form of an Application Program Command escape sequence, or APC.
  477.  
  478. The APC is sent by a host application to a terminal emulator, containing one
  479. or more commands to be executed by the terminal emulation program.  This
  480. mechanism lets the host application software control your communications
  481. software, allowing an unprecedented degree of automation and convenience.
  482.  
  483. Good uses for this feature include: (a) automatic communications, protocol,
  484. terminal, keyboard, or other setups by the host application; (b) automatic
  485. initiation of file transfer by the host application.
  486.  
  487. The form of an APC is "<ESC>_text<ESC>\", where "<ESC>" is ASCII character 27
  488. (Escape), and "text" is a command or a list of commands separated by commas.
  489. The APC sequence was originally defined by Digital Equipment Corporation for
  490. its VT300-series and higher terminals.
  491.  
  492. There are two "ends" to an APC operation, and you need to understand how
  493. to control each end.  Let's call the application which sends an APC escape
  494. sequence the "APC sender", and the application that receives it, and which is
  495. supposed to execute the commands it contains, the "APC receiver".
  496.  
  497. Any host application can be an APC sender.  To send an APC, all it needs to do
  498. is display the desired commands on your terminal screen, enclosed in <ESC>_
  499. and <ESC>\.  C-Kermit 5A(189) (and later) has a command for doing this:
  500.  
  501.   APC text
  502.  
  503. where the "text" is a command (or commands) for the APC receiver.  Leading and
  504. trailing spaces are removed from the text unless it is enclosed in braces:
  505.  
  506.   APC { text }
  507.  
  508. Here's an example that sets MS-DOS Kermit parameters from the C-Kermit command
  509. line.  It assumes that C-Kermit is being accessed from MS-DOS Kermit 3.13 or
  510. later, which is in CONNECT mode:
  511.  
  512.   C-Kermit>apc set receive packet-length 2000, set window 4
  513.  
  514. This command causes C-Kermit to send the following characters to the terminal
  515. (i.e. MS-DOS Kermit's terminal emulator):
  516.  
  517.   <ESC>_set receive packet-length 2000, set window 4<ESC>\
  518.  
  519. MS-DOS Kermit recognizes the APC sequence, extracts the commands from it,
  520. and processes them automatically, according to the rules listed below.
  521.  
  522. Here's an example in which you define and then execute a C-Kermit macro to
  523. send a file from C-Kermit, causing MS-DOS Kermit to receive it automatically
  524. without your having to escape back and type "receive".  You do not need to
  525. CONNECT again after the transfer is done, either; this too happens
  526. automatically.
  527.  
  528.   C-Kermit>define autosend apc receive, send \%1
  529.   C-Kermit>autosend oofa.txt
  530.  
  531. A macro is used because if you type APC RECEIVE at the C-Kermit prompt, MS-DOS
  532. Kermit goes immediately into RECEIVE mode and you have no way to give the SEND
  533. command to C-Kermit.  Conversely, if you type the SEND command first, C-Kermit
  534. goes into SEND mode, and you have no opportunity to give it an APC command.
  535. When the macro (or a TAKE command file) is the source of commands, the
  536. "Catch-22" is avoided because the keyboard is out of the picture.
  537.  
  538. The APC receiver can be:
  539.  
  540.  . MS-DOS Kermit 3.13 or later
  541.  . C-Kermit 5A(190) for OS/2
  542.  . C-Kermit 5A(190) for UNIX
  543.  . C-Kermit 5A(190) for VMS
  544.  
  545. When one of these Kermit programs is in CONNECT mode, and an APC escape
  546. sequence arrives, the commands it contains are executed if:
  547.  
  548.   1. Terminal emulation is VT100, VT102, VT220, VT320, or ANSI, and:
  549.   2. SET TERMINAL APC is ON and the commands are not "dangerous", or:
  550.   3. SET TERMINAL APC is UNCHECKED.
  551.  
  552. After processing the APC sequence, whether its commands are executed or not,
  553. the APC receiver returns to CONNECT mode automatically.
  554.  
  555. The C-Kermit initialization file defines several macros to let you take
  556. advantage of the APC feature.  They are to be used at the C-Kermit> prompt,
  557. when you are accessing C-Kermit through an APC receiver.  They include:
  558.  
  559. PCSEND <filespec> [ <as-name> ]
  560.   Sends the file or files from C-Kermit to the "PC" that's on your desk.
  561.   (Of course, the PC might also be a UNIX workstation, etc).  If the <filespec>
  562.   does not contain wildcard characters (that is, it is the name of a single
  563.   file), you can include the optional "as-name" to send it under a different
  564.   name.  The file or files are sent according to C-Kermit's current FILE TYPE
  565.   setting, text or binary (except in VMS, where VMS C-Kermit determines the
  566.   file type and transfer automatically for each file).  In other words, the
  567.   PCSEND macro is exactly like the SEND command, except it automatically puts
  568.   your local Kermit program into RECEIVE mode, and then back into CONNECT mode
  569.   again when the transfer is complete.  This process is sometimes referred to
  570.   as "autodownloading".
  571.  
  572. PCGET <filespec> [ <as-name> ]
  573.   This tells C-Kermit to get the specified file or files from your "PC".
  574.   It puts your local Kermit program into server mode, GETs the specified
  575.   files from it, then sends it a FINISH command and puts it back in CONNECT
  576.   mode automatically.  The transfer type is governed by C-Kermit's current
  577.   FILE TYPE setting.
  578.  
  579. This process can be called "autouploading".
  580.  
  581. C-Kermit's response to APC sequences is controlled by the following command:
  582.  
  583.   SET TERMINAL APC { ON, OFF, UNCHECKED }
  584.  
  585. The default setting is OFF, meaning that C-Kermit ignores APC sequences unless
  586. you tell it otherwise.  In the OS/2 version, they are harmlessly absorbed and
  587. not displayed.  In the UNIX and VMS versions of C-Kermit, they are passed
  588. through transparently, in case you want them acted upon by your actual
  589. terminal or terminal emulator.
  590.  
  591. To activate the APC feature, use:
  592.  
  593.   SET TERMINAL APC ON
  594.  
  595. This allows execution of all commands received in APC sequences except those
  596. considered dangerous, such as: PUSH, RUN, !, REDIRECT, DELETE, RENAME, OUTPUT,
  597. ENABLE, DISABLE, SCRIPT, and SET TERMINAL APC.  With this setting, for
  598. example, it would not be possible for someone to send you a "letter bomb" or
  599. screen message that contained an APC sequence to execute a command on your
  600. computer (because RUN and ! are disabled).  The commands allowed by SET
  601. TERMINAL APC ON are only the ones which affect Kermit itself, including the
  602. initiation of Kermit file transfers.
  603.  
  604. Should you want to enable APC execution off ALL commands, which can be
  605. dangerous and is therefore not recommended unless you know exactly what you
  606. are doing, you can:
  607.  
  608.   SET TERMINAL APC UNCHECKED
  609.  
  610. Use UNCHECKED at your own risk.
  611.  
  612. Note that when TERMINAL APC is not OFF, the CONNECT command might run a bit
  613. slower than when TERMINAL APC is OFF.
  614.  
  615. 3.2. The CONNECT Command
  616.  
  617. The CONNECT command now has an optional "switch", /QUIETLY, to suppress the
  618. verbose CONNECT message on versions of C-Kermit (such as UNIX, VMS, etc) that
  619. normally give one:
  620.  
  621.   C-Kermit>CONNECT /QUIETLY
  622.  
  623. or:
  624.  
  625.   C-Kermit>C /Q
  626.  
  627. or even just:
  628.  
  629.   C-Kermit C /
  630.  
  631. This switch has no effect on versions of C-Kermit that contain true terminal
  632. emulators, such as the OS/2 and Macintosh versions.
  633.  
  634. 3.3. The SET KEY Command
  635.  
  636. The SET KEY command now allows you to press the Return or Enter key after
  637. the word KEY to be prompted for a keystroke and then a definition separately.
  638. Using this form of the command lets you assign material to a key or key
  639. combination without having to know its key code.  After you press the key to
  640. be assigned, you are shown its current definition, if any.  You can cancel by
  641. typing Ctrl-C, restore the default definition by pressing the Return or Enter
  642. key, or enter a new definition.  Example:
  643.  
  644.   C-Kermit>set key
  645.    Press key:
  646.    Key code \16 => Character: \16 (self, no translation)
  647.    Definition: blah
  648.   C-Kermit>
  649.  
  650. NOTE: There are many changes and additions to the key mapping facility in
  651. OS/2 C-Kermit.  Please refer to the OS/2-specific update file for details.
  652.  
  653. 3.4. The SET TERMINAL Command
  654.  
  655. SET TERMINAL DEBUG { ON, OFF }
  656.   SET TERMINAL DEBUG ON is a synonym for SET DEBUG SESSION.
  657.   SET TERMINAL DEBUG OFF turns off session debugging without interfering
  658.   with any other debugging that might be active (such as LOG DEBUG).
  659.   Session debugging status is displayed in the SHOW TERMINAL display.
  660.   Edit 190.
  661.  
  662. NOTE: There are numerous other new SET TERMINAL commands for OS/2 C-Kermit.
  663. Please refer to the OS/2-specific update file for details.
  664.  
  665. 3.4. The SET TELNET Command
  666.  
  667. SET TELNET NEWLINE-MODE { ON, OFF, RAW }
  668.   This command tells C-Kermit what to send during CONNECT mode on a TELNET
  669.   connection when you type Carriage Return (Return or Enter key).  ON (the
  670.   default) means to send Carriage Return and Linefeed (CRLF); OFF means to
  671.   send Carriage Return and NUL (ASCII 0).  The TELNET protocol Network Virtual
  672.   Terminal specification says that Carriage Return must always be followed by
  673.   LF or NUL.  However, certain TCP/IP services do not like CRLF or CR-NUL,
  674.   and so in edit 190, the RAW option was added, which means to send CR as 
  675.   itself, i.e. a plain carriage return.
  676.  
  677. (4) FILE TRANSFER
  678.  
  679. 4.1. File Transfer Recovery
  680.  
  681. C-Kermit 5A(190) (the UNIX, OS/2, AOS/VS, and Amiga versions) and MS-DOS
  682. Kermit 3.14 now have the ability to continue interrupted binary-mode file
  683. transfers, and also allow you to "manually" recover from certain other types
  684. of failures.
  685.  
  686. 4.1.1. The RESEND Command
  687.  
  688. The new RESEND command lets you continue a file transfer from the point where
  689. it was interrupted (for example, because of a telephone disconnection) without
  690. having to retransmit the data that was already successfully transmitted.
  691. Imagine, for example, transferring a ten-megabyte file over a 2400-bps modem
  692. connection when, after 9 megabytes have been sent, your call-waiting feature
  693. kicks in and drops the modem connection.  9 megabytes at 240 cps takes about
  694. 11 hours.  The remaining megabyte would take about 1.2 hours.  The recovery
  695. feature lets you complete the failed transfer in the amount of time it takes
  696. to send the as-yet-untranmsitted part of the file, rather than sending the
  697. entire file again from the beginning -- in this example, a savings of 11
  698. hours.
  699.  
  700. Before seeing how to use this feature, let's look at the restrictions:
  701.  
  702.  1. Recovery works only for binary-mode transfers between computers that have
  703.     Kermit programs that support this feature.  It does not work with any
  704.     other transfer modes, including text or labeled.  In other words, if you
  705.     want to be able to use the recovery feature, you must tell the file sender
  706.     to:
  707.  
  708.       SET FILE TYPE BINARY
  709.  
  710.     In VMS, C-Kermit will switch to binary mode automatically if the file
  711.     has a fixed record format.  You can also force binary-mode transfer in
  712.     VMS via SET FILE TYPE IMAGE.
  713.  
  714.  2. The original transfer must have been done with SET FILE INCOMPLETE KEEP
  715.     in effect at the receiver, meaning that incompletely received files are
  716.     kept rather than discarded.  In C-Kermit 5A(190) and later, this is the
  717.     default, which is a change from previous releases.
  718.  
  719.  3. Recovery only works between two Kermit programs that have this capability
  720.     and negotiate it successfully.  As of this writing, these programs include
  721.     C-Kermit 5A(190) and later for UNIX, OS/2, VMS, VOS, and the Commodore
  722.     Amiga, and MS-DOS Kermit 3.14 and later for DOS and Windows.  (But see
  723.     below for a way around this.)
  724.  
  725.  4. You should never use SET FILE COLLISION RENAME if you intend to use the
  726.     recovery feature (see the CKCKER.BWR file for an explanation).
  727.  
  728. Hint: You can also resend text files as long as you transfer them in binary
  729. mode.  You can transfer text files in binary mode as long as (a) both
  730. computers represent text files in stream-CRLF format, and (b) you do not
  731. need character-set translation.
  732.  
  733. To recover a failed upload: reestablish the connection, access the same
  734. account and directory to which you were sending the file previously, start
  735. Kermit there and put it in RECEIVE or SERVER mode.  Then escape back to the
  736. local Kermit program and give it these commands:
  737.  
  738.   SET FILE TYPE BINARY
  739.   RESEND filename [ as-name ]
  740.  
  741. The RESEND command should use exactly the same names (and SET FILE NAME
  742. options) as the SEND command that was interrupted.  When you RESEND a file,
  743. the receiving Kermit, upon getting the filename, looks up the file and gets
  744. its size; it sends the size back to the sending Kermit, and the sending Kermit
  745. resumes sending from that point; the receiving Kermit appends incoming
  746. material to the partial file rather than creating a new file.
  747.  
  748. You can recover a failed download in the same way.  Just make sure you are
  749. accessing the same directories as before, and the files have (or are being
  750. sent with) the same names as before.
  751.  
  752. The RESEND command ignores your SET FILE COLLISION setting; thus you need not
  753. change your FILE COLLISION setting when RESENDing, and you will not find it
  754. altered afterwards either.  (But please, as mentioned earlier, do not use SET
  755. FILE COLLISION RENAME if you ever intend to use the RESEND command.)
  756.  
  757. If the RESEND command is used, but a partial file of the same name does not
  758. exist on the receiving end, RESEND behaves just like SEND -- it sends the
  759. whole file.  If the file on the receiving is the same size as the sender's
  760. copy, RESEND does nothing; both files are left alone (exception: when VMS
  761. C-Kermit is receiving a resend, it will replace the file's final block).
  762. These properties let you resume the interrupted transfer of a group of files.
  763. Suppose you had originally done this:
  764.  
  765.   Receiver:                         Sender:
  766.    SET FILE INCOMPLETE KEEP          SET FILE TYPE BINARY
  767.    RECEIVE (or SERVER)               SEND *.ZIP
  768.  
  769. and the phone hung up in the middle of one of the ZIP files.  Just reestablish
  770. the connection, and recover this way:
  771.  
  772.   Receiver:                         Sender:
  773.    SET FILE INCOMPLETE KEEP          SET FILE TYPE BINARY
  774.    RECEIVE (or SERVER)               RESEND *.ZIP
  775.  
  776. The files that were already sent are skipped, the file that was partially
  777. sent is recovered, and the files that were not sent yet are sent.
  778.  
  779. In order for the recovery feature feature to be useful at all, the default for
  780. SET FILE INCOMPLETE was changed from DISCARD to KEEP when the RESEND command
  781. was added in edit 190.  Otherwise an interrupted transfer would leave no
  782. partial file behind unless you had remembered to change the default.  But now
  783. you have to pay closer attention to Kermit's messages to know whether a
  784. transfer succeeded or failed -- previously, if it failed, the file would not
  785. show up on the receiving end at all; in edit 190 and later, you'll get a
  786. partial file which could easily be mistaken for the complete file unless you
  787. change the default back to DISCARD or read the screen messages, or keep a
  788. transaction log.
  789.  
  790. Watch out for SET FILE COLLISION RENAME, especially when used in conjunction
  791. with recovery.  Recall that this option (which is NOT the default) renames
  792. the incoming file if a file already exists with the same name (the default is
  793. to rename the previously existing file, and store the incoming file with its
  794. own name).  It is strongly recommended that you do not use SET FILE COLLISION
  795. RENAME if you ever intend to use the recovery feature:
  796.  
  797.  . When the file is first received by C-Kermit, its name will be changed if
  798.    another file already has the same name.  When you RESEND the same file
  799.    after a failure, C-Kermit will probably try to append the re-sent portion
  800.    to the wrong file.
  801.  
  802.  . Assuming that you get RESEND to work with FILE COLLISION RENAME, C-Kermit,
  803.    when receiving the remainder of the file during a RESEND operation, will
  804.    report back the wrong name.  Nothing can be done about this because the
  805.    name is reported back before the receiving Kermit program finds out that
  806.    it is a recovery operation.   
  807.  
  808. Using RESEND, you can write a script program to REALLY, REALLY send a file.
  809. Here is a sample, in which we dial up to a UNIX computer and send the MS-DOS
  810. Kermit distribution ZIP file.  This script program runs under C-Kermit 5A(190)
  811. or later on OS/2 (and with a change in the dialout device name, under UNIX
  812. too), and under MS-DOS Kermit 3.14 or later.  If the transfer fails, we
  813. reestablish the connection and restart the transfer from the point of failure,
  814. as many times as it takes to get the file across.
  815.  
  816. ---(cut here)---
  817. ask \%u { username: }
  818. askq \%p { \%u's password: }
  819. ;
  820. ; Settings for entire session.
  821. ;
  822. define \%s 20             ; Seconds to pause between each try
  823. define \%n 7654321        ; Phone number
  824. set modem hayes           ; Modem type
  825. set port com1             ; Communication port (use /dev/whatever for UNIX)
  826. set speed 19200           ; Speed
  827.  
  828. set file type binary      ; File transfer mode must be binary
  829. set input timeout quit    ; This is just to keep the script program short...
  830. set count 50              ; Try up to 50 times to send the file
  831. goto nomsg                ; Skip message the first time
  832.  
  833. :LOOP                     ; Come here to redial
  834. hangup                    ; Give the phone a rest
  835. echo CONNECTION BROKEN.
  836. echo Pausing for \%s seconds...
  837. sleep \%s
  838. Echo redialing...
  839.  
  840. :NOMSG
  841. dial \%n                  ; Dial the phone number
  842. if fail goto AGAIN        ; Keep trying...
  843. output \13                ; System answered, send a carriage return
  844. input 15 login:           ; Get login prompt
  845. output \%u\13             ; Send user ID
  846. input 8 Password:         ; Get password prompt
  847. output \%p\13             ; Send password
  848. input 60 {$ }             ; Get system prompt
  849. cd /kermit                ; CD to desired source directory
  850. output cd mskermit\13     ; and destination directory
  851. input 8 {$ }              ; Get system prompt
  852. out kermit -r\13          ; kermit -r(eceive) on remote system
  853. input 10 KERMIT READY     ; Wait for READY message
  854. pause 1                   ; Plus a second for safety
  855. resend msvibm.zip         ; RESEND the file
  856. if success goto done      ; Success means file is completely transferred
  857.  
  858. :AGAIN
  859. if count goto LOOP        ; Otherwise, try again.
  860. Stop 1 Too many tries.    ; Too many tries, give up.
  861.  
  862. :DONE
  863. echo File transferred OK  ; Success, give message
  864. output exit\13            ; Log out from remote computer
  865. pause 5                   ; Give it time...
  866. hangup                    ; Hang up
  867. stop 0 Script succeeded   ; Finished, the end.
  868. ---(cut here)---
  869.  
  870. 4.1.2. Manual Recovery: The PSEND Command
  871.  
  872. The PSEND ("partial send") command is like the SEND command, but it begins
  873. sending from a specified position in the file:
  874.  
  875.   PSEND <filename> <position> [ <as-name> ]
  876.  
  877. <filename> must refer to a single file, not a file group.  <position> is the
  878. byte position in (offset into) the file; 0 means the beginning, 1000 means the
  879. 1001st byte.  As with the SEND command, the file is sent under its own name
  880. unless you specify an "as-name".  Unlike RESEND, PSEND can be used for both
  881. text and binary transfers, and no special capabilities are required of the
  882. Kermit program on the receiving end.  The PSEND command can be viewed as part
  883. of a "do-it-yourself" recovery feature to be used when the other Kermit
  884. program does not support recovery.  For example, suppose you were sending a
  885. file called OOFA when the connection hung up, and that the receiving Kermit
  886. program had been instructed to keep incompletely received files (SET FILE
  887. INCOMPLETE KEEP).  If the transfer was in binary mode, you could note the
  888. length of the partial file on the receiving end; let's say it was 123456.
  889. Then tell the file receiver to:
  890.  
  891.   SET FILE COLLISION APPEND
  892.   RECEIVE
  893.  
  894. and tell the sender to:
  895.  
  896.   SET FILE TYPE BINARY
  897.   PSEND OOFA 123456
  898.  
  899. If the receiver does not support SET FILE COLLISION APPEND, you could just
  900. use PSEND to create a new file:
  901.  
  902.   SET FILE TYPE BINARY
  903.   PSEND OOFA 123456 OOFA.NEW
  904.  
  905. and then, after the transfer is complete, join the two pieces together on
  906. the receiving end, using a system command or utility.
  907.  
  908. 4.2. Control-Character Unprefixing
  909.  
  910. This feature allows you to improve C-Kermit's file transfer performance on
  911. connections that you know are transparent to certain control characters.  It
  912. lets you tell C-Kermit exactly which control characters need to be prefixed
  913. and encoded, and which ones can be transmitted "bare" when sending files.
  914.  
  915. SET { SEND, RECEIVE } CONTROL-PREFIX <code>
  916.   Sets the control-character prefix which C-Kermit uses to the ASCII character
  917.   represented by the numeric <code>.  The <code> must be in the range 33-63 or
  918.   96-126.  Normally it is 35 (#, number sign).  SEND is the one that C-Kermit
  919.   should use in packets it is sending.  RECEIVE should normally never be used,
  920.   except to override some kind of protocol negotiation foulup with a buggy
  921.   commercial or shareware Kermit implementation.
  922.   Synonym: SET { SEND, RECEIVE } QUOTE.
  923.  
  924. SET CONTROL-CHARACTER UNPREFIXED { <code>..., ALL }
  925.   Says you think it's safe to include the control character represented by
  926.   <code> without prefixing in packets which C-Kermit sends.  The <code> is the
  927.   numeric ASCII code for a control character, 1-31, 127-159, or 255.  For
  928.   example, linefeed (code 10) is normally sent as two printable characters,
  929.   #J.  SET CONTROL UNPREFIXED 10 lets linefeed be sent literally.  Include the
  930.   word ALL to unprefix all control characters (except 0).  Or you can specify
  931.   a list of one or more numeric values, separated by spaces, e.g.:
  932.  
  933.      SET CONTROL UNPREFIXED 2 4 5 18 20
  934.  
  935.   If you can safely declare a lot of control characters to be UNPREFIXED, you
  936.   can send binary files (esp. precompressed ones) up to about 20-25% faster.
  937.   If you include a control character in this category that causes trouble,
  938.   however, the transfer will fail, so experimentation is necessary.  This
  939.   command will not let you "unprefix" the NUL character (0), nor the following
  940.   characters if C-Kermit's current FLOW-CONTROL setting is XON/XOFF: 17, 19,
  941.   145, 147.  Nor can you unprefix character 255 on a TELNET connection (if
  942.   C-Kermit *knows* it's a TELNET connection).
  943.  
  944. SET CONTROL-CHARACTER PREFIXED { <code>..., ALL }
  945.   Says that the given control character(s) must be prefixed in Kermit packets.
  946.   By default, all control characters, 0-31, 127-159, and 255, are prefixed.
  947.  
  948. SHOW CONTROL-PREFIXING
  949.   Displays the current control prefix and a table of all control-character
  950.   values, showing 1 for each one that will be prefixed and 0 for each one that
  951.   will not be prefixed.
  952.  
  953. SET REPEAT PREFIX <code>
  954.   Sets the repeat-count prefix to the ASCII character represented by the
  955.   numeric <code>.  Normally it is 126 (tilde).  The <code> must be in the
  956.   range 33-63 or 96-126.
  957.  
  958. SET REPEAT COUNTS { OFF, ON }
  959.   Turns the repeat-count compression mechanism off and on.  REPEAT COUNTS are
  960.   ON by default.  Turn them OFF in case they cause trouble when used against a
  961.   faulty Kermit implementation in a shareware or commercial communications
  962.   program.  Or when transferring precompressed files (like .ZIP or .Z files),
  963.   since it is very rare to find runs of repeated characters, and disabling the
  964.   repeat-count mechanism frees another character from prefixing, thus
  965.   resulting in slightly more efficient transfers.
  966.  
  967. The purpose of the SET CONTROL UNPREFIX command is to UNILATERALLY configure
  968. C-Kermit to skip prefixing and printable encoding of selected control
  969. characters to achieve higher performance when sending files.  This feature
  970. takes advantage of the fact that most Kermit programs will accept control
  971. characters within packet data-fields literally, provided they get through at
  972. all, and provided they do not have a special meaning to the receiving Kermit
  973. program (such as, in many cases, the packet-start and packet-end characters).
  974.  
  975. There is no protocol negotiation between the two Kermit programs to determine
  976. a "safe set" of control characters, and in fact any such negotiation would be
  977. largely meaningless, because in most cases the two Kermit programs don't have
  978. all the needed information.  For example, there might be a terminal server or
  979. PAD between them that is sensitive to a particular control character, even
  980. though the two Kermit programs are not.
  981.  
  982. If you include in your SET CONTROL UNPREFIXED list one or more control
  983. characters that are unsafe, any of several things might happen:
  984.  
  985.  1. Transfer of any file containing these characters will fail.
  986.  
  987.  2. The receiving Kermit program might be interrupted or halted.
  988.  
  989.  3. Your connection might become hung, stuck, or broken.  For example because
  990.     a control character causes a PAD, terminal server, modem, or similar
  991.     device to go from online mode to command mode.
  992.  
  993. The set of safe control characters depends on the two Kermit programs, their
  994. settings, the host operating systems and their settings, the communication and
  995. flow control methods, and all the devices, drivers, and protocols that lie
  996. between the two Kermit programs.  Therefore, this feature is recommended only
  997. for use on well-known and often-used connections, so the time invested in
  998. finding an optimal unprefixed control-character set will pay off over many
  999. file transfers.
  1000.  
  1001. You must be willing to experiment in order to achieve the optimal safe set.
  1002. Here is one way.  Create a short file containing all 256 possible bytes in
  1003. sequence and also in pairs, as well as several text strings surrounded by
  1004. CRLFs; for example, compile and run the following program, redirecting its
  1005. output to a file:
  1006.  
  1007. ---(cut here)---
  1008. #include <stdio.h>
  1009. main() {
  1010.     int i;
  1011.     puts("\r\n256-byte test pattern:\r\n");
  1012.     for (i = 0; i < 256; i++) putchar(i); /* singles */
  1013.     puts("\r\n256-double-byte test pattern:\r\n");
  1014.     for (i = 0; i < 256; i++) { putchar(i); putchar(i); } /* in pairs */
  1015.     puts("\r\nEnd of test patterns\r\n");
  1016. }
  1017. ---(cut here)---
  1018.  
  1019. To send the file to MS-DOS Kermit from either C-Kermit or MS-DOS Kermit,
  1020. try the following settings:
  1021.  
  1022.   SET CONTROL UNPREFIXED ALL ; Turn prefixing off for all but 0
  1023.   SET CONTROL PREFIXED 1     ; Turn it back on for packet-start character
  1024.   SET CONTROL PREFIXED 129   ; and 8-bit version thereof
  1025.  
  1026. (HINT: Abbreviate SET CON U and SET CON P)
  1027.  
  1028. Or to send the file from MS-DOS Kermit to C-Kermit, tell MS-DOS Kermit to:
  1029.  
  1030.   SET CON U ALL   ; Turn prefixing off for all
  1031.   SET CON P 0     ; Turn it back on for NUL
  1032.   SET CON P 3     ; and for Ctrl-C
  1033.   SET CON P 131   ; as well as Ctrl-C + parity bit
  1034.  
  1035. NOTE 1: 3 and 131 normally need not be prefixed when sending to C-Kermit
  1036. 5A(190) or later, nor to 5A(189) if you have SET TRANSFER CANCELLATION OFF.
  1037.  
  1038. NOTE 2: 1 and 129 need not be prefixed when sending files *to* C-Kermit, but
  1039. must be prefixed when sending files to MS-DOS Kermit.
  1040.  
  1041. NOTE 3: 13 (carriage return, the customary packet terminator) normally need
  1042. not be prefixed when sending files to either C-Kermit or MS-DOS Kermit,
  1043. except on a TELNET connection (because TELNET servers are likely to change
  1044. CRLF into CR).
  1045.  
  1046. Try to send the test file in binary mode.  If it works, fine.  If not, try
  1047. prefixing some of the other likely control characters (see below).  Once you
  1048. find the minimum set of prefixed control characters for the test file, it is
  1049. likely they will also work for any other file on the same connection.  Try
  1050. sending a large precompressed (e.g. ZIP or .Z or GZIP) file.  And, of course,
  1051. for maximum performance, also use a window size greater than 1 (say, 3) and a
  1052. packet length of 1000 or more.
  1053.  
  1054. Under ideal conditions (totally transparent and clean serial connection, no
  1055. Xon/Xoff, and C-Kermit has been told to SET TRANSFER CANCELLATION OFF, see
  1056. below), the minimum set of control characters that need to be prefixed is:
  1057.  
  1058.   SENDER          RECEIVER         PREFIXED CONTROLS
  1059.    MS-DOS Kermit   MS-DOS Kermit    1 129
  1060.    MS-DOS Kermit   C-Kermit         0
  1061.    C-Kermit        MS-DOS Kermit    0 1 129
  1062.    C-Kermit        C-Kermit         0
  1063.  
  1064. For example, to set up C-Kermit to unprefix the minimum set of prefixed
  1065. control characters for sending files to MS-DOS Kermit, tell C-Kermit to:
  1066.  
  1067.   SET FLOW NONE            ; Or SET FLOW RTS/CTS
  1068.   SET CONTROL UNPREFIX ALL
  1069.   SET CONTROL PREFIX 1 129 ; C-Kermit always prefixes character 0
  1070.  
  1071. When the mininum set doesn't work, consult this list of control characters
  1072. that are apt to cause trouble and are therefore likely candidates for
  1073. prefixing.  In particular, note that unprefixing of the packet-start character
  1074. (normally 1 and 129), can cause problems when sending to C-Kermit if the
  1075. communication link (including device input buffers) is noisy or apt to lose
  1076. characters.
  1077.  
  1078. set con p 0   ; Ctrl-@ = NUL, internal string terminator in C-Kermit.
  1079.               ;          Also, often discarded as padding.
  1080. set con p 1   ; Ctrl-A = Packet-start character.
  1081. set con p 3   ; Ctrl-C = Packet breakout for remote-mode C-Kermit,
  1082.               ;          packet breakout for server-mode MS-DOS Kermit,
  1083.               ;          likely to cause interruptions on other systems.
  1084. set con p 13  ; Ctrl-M = Carriage return, packet-end character.
  1085.               ;          Always prefix on TELNET connections.
  1086. set con p 14  ; Ctrl-N = Shift Out
  1087. set con p 15  ; Ctrl-O = Shift In
  1088. set con p 16  ; Ctrl-P = Commonly-used X.25/X.3 PAD escape character
  1089. set con p 17  ; Ctrl-Q = XON, must be prefixed with Xon/Xoff flow control
  1090. set con p 19  ; Ctrl-S = XOFF, must be prefixed with Xon/Xoff flow control
  1091. set con p 27  ; Ctrl-[ = ESC, prefix if going through some kind of ANSI device
  1092. set con p 28  ; Ctrl-\ = CONNECT-mode escape for C-Kermit
  1093. set con p 29  ; Ctrl-] = CONNECT-mode escape for TELNET
  1094. set con p 30  ; Ctrl-^ = Cisco terminal server escape.
  1095. set con p 127 ; Ctrl-? = DEL, often discarded as padding.
  1096.               ;          Also becomes TELNET IAC if parity bit is added.
  1097. set con p 128 ; = NUL    + 128 (i.e. NUL + parity bit)
  1098. set con p 129 ; = Ctrl-A + 128
  1099. set con p 131 ; = Ctrl-C + 128
  1100. set con p 141 ; = CR     + 128
  1101. set con p 145 ; = XON    + 128
  1102. set con p 147 ; = XOFF   + 128
  1103. set con p 255 ; 255 = TELNET IAC, must be prefixed on TCP/IP TELNET connections
  1104.                 INCLUDING TELNET connections through terminal servers!
  1105.  
  1106. Note, by the way, that nothing special need be done for SLIP connections,
  1107. since the four special SLIP characters are in the G1 printable range:
  1108.  
  1109.   192 SLIP END character
  1110.   219 SLIP ESC character
  1111.   220 SLIP END quote
  1112.   221 SLIP ESC quote
  1113.  
  1114. Here is a suggested (conservative) starting point for experimenting with
  1115. control-character unprefixing.  Tell the file sender to:
  1116.  
  1117.   SET CONTROL UNPREFIX ALL
  1118.   SET CONTROL PREFIX 0 1 3 13 17 19 127 129 131 141 145 147 255
  1119.  
  1120. Perhaps some of these can be removed, depending on the connection, and maybe
  1121. others need to be added.  If you are going through a terminal server or an
  1122. intermediate Kermit or TELNET program, also add the appropriate escape
  1123. character values (bare, and plus 128).
  1124.  
  1125. PREFIXING NOTES:
  1126.  
  1127. If C-Kermit or MS-DOS Kermit has initiated a TELNET connection, prefixing of
  1128. 255 (TELNET IAC) is forced automatically.
  1129.  
  1130.   IMPORTANT WARNING: When you have a TELNET connection through a
  1131.   terminal server, neither one of the Kermit programs knows that
  1132.   it's a TELNET connection, and in this case unprefixing of 255 is
  1133.   NOT automatically disabled.  This can cause file transfer failures.
  1134.   When in doubt, do not unprefix 255.
  1135.  
  1136. Kermit will not let you unprefix XON (17), XOFF (19), XON+128 (145), or
  1137. XOFF+128 (147) if its FLOW-CONTROL setting is XON/XOFF.  If you want to
  1138. unprefix these, make sure *both* Kermits have first been told to SET FLOW
  1139. NONE (or RTS/CTS), and that XON/XOFF flow control is not in effect anywhere
  1140. along the communication path between the two Kermits.
  1141.  
  1142. When sending files to C-Kermit 189 or earlier, and C-Kermit is in remote
  1143. mode, you should normally tell the file sender to SET CONTROL PREFIX 3 and
  1144. SET CONTROL PREFIX 131, because C-Kermit 189 and earlier (by default) takes
  1145. two Ctrl-C's (3 or 131) in a row as cancellation of packet-mode.  However,
  1146. you can UNPREFIX these characters if you know your files do not contain two
  1147. Ctrl-C's in a row, or if you tell C-Kermit to SET TRANSFER CANCELLATION OFF,
  1148. or SET TRANSFER CANCELLATION ON <code> <number> when you know that <number>
  1149. copies of <code> do not occur in a row in the data.  When sending files to
  1150. edit 190 of C-Kermit and later, you can leave 3 and 131 unprefixed unless you
  1151. have disabled repeat-count compression.
  1152.  
  1153. 4.3. Keyboard Cancellation of Packet Mode
  1154.  
  1155. When C-Kermit is in remote mode and in packet mode, the user no longer has
  1156. normal control of the terminal.  Characters typed at the keyboard do not
  1157. echo, commands have no effect, etc.  This is because C-Kermit is trying to
  1158. read file-transfer protocol packets from your local Kermit program.  If you
  1159. have put C-Kermit into packet mode by giving a SEND, RECEIVE, SERVER, BYE,
  1160. or similar command, but you did not mean to do this, or you do not have a
  1161. local Kermit handy to exchange packets with (for example, because you
  1162. neglected to give a SET LINE or SET HOST command first), you can force
  1163. C-Kermit back to its prompt by typing a special sequence of characters.
  1164.  
  1165. By default, the packet-mode interruption character is Control-C (ASCII 3).  In
  1166. edits 189 and earlier, two consecutive copies of this character were required
  1167. to get out of packet mode, and the parity bit was always ignored.  In edit 190
  1168. and later, three copies are required by default, and the parity bit is ignored
  1169. if C-Kermit's PARITY setting is not NONE.
  1170.  
  1171. On noisy connections, two or three Control-C's might show up as noise; or you
  1172. might want to allow C-Kermit to accept Control-C characters literally in data
  1173. packets during file transfer.  The following command lets you control this
  1174. feature:
  1175.  
  1176.   SET TRANSFER CANCELLATION { OFF, ON [ <code> [ <number ] ] }
  1177.  
  1178. OFF turns off the packet-mode cancellation feature, preventing escape from
  1179.   packet mode except by normal protocol operations: completion, timeout, error
  1180.   packet, etc.  USE WITH CAUTION.
  1181.  
  1182. ON enables this feature.  The optional <code> is the ASCII code for the
  1183.   control character (0 through 31 or 127) to be used for interruption (the
  1184.   default is 3 = Ctrl-C), and the optional <number> is the number
  1185.   of consecutive copies of the character required to cause interruption.  For
  1186.   example, "SET XFER CANCEL ON 6 5" tells C-Kermit to break out of packet mode
  1187.   upon receipt of 5 consecutive Ctrl-F (ASCII 6) characters.  Note that the
  1188.   parity bit is ignored for this purpose, so (for example) 3 and 131 are
  1189.   treated the same.
  1190.  
  1191. If you SET TRANSFER CANCELLATION OFF, you might still need a manual method of
  1192. getting remote-mode C-Kermit out of packet mode.  This can be accomplished by
  1193. escaping back to your local Kermit and giving a RECEIVE command, then typing E
  1194. (or Ctrl-E) to send an error packet.  Or just type the following Kermit packet:
  1195.  
  1196.   <Ctrl-A># E*   <-- This is a "fatal error" packet.
  1197.  
  1198. If the remote Kermit is in server mode, you can send a FINISH command, or if
  1199. you don't have a local Kermit to escape back to, type:
  1200.  
  1201.  
  1202.   <Ctrl-A>$ GF4  <-- This is a FINISH command packet, for the server.
  1203.  
  1204. The SET TRANSFER CANCELLATION command was installed for the UNIX, VMS, and DG
  1205. versions of C-Kermit 5A(189).  Use SHOW PROTOCOL to find out the current
  1206. settings.  It has affect only when C-Kermit is in remote mode; when C-Kermit
  1207. has been used to establish a connection to another computer (i.e. when
  1208. C-Kermit is in local mode), this feature is inactive -- there is no need for
  1209. it because you have control of the program via the file-transfer interruption
  1210. characters (X, Z, C, E, etc).
  1211.  
  1212. In edit 190, the default number of packet-mode cancellation characters was
  1213. raised from two to three.  That is, if you are looking at a remote C-Kermit in
  1214. packet mode, and have no other way to get back to the C-Kermit> prompt, you'll
  1215. have to type three consecutive Control-C's (or whatever your transfer
  1216. cancellation character is), instead of two, by default.  This was done to
  1217. allow SET CONTROL UNPREFIX n (where n = the ASCII code for the cancellation
  1218. character) to work, even with the default TRANSFER CANCELLATION settings;
  1219. three or more consecutive copies of any character are transformed by Kermit
  1220. protocol into a repeat count plus one copy of the character, thus preventing
  1221. three consecutive Control-C's from appearing as data in a Kermit packet,
  1222. provided the other Kermit supports repeat-count compression (all popular
  1223. Kermit implementations do) and it has been successfully negotiated (which it
  1224. will be unless you take special measures to prevent it; see SET REPEAT above).
  1225.  
  1226. 4.4. New RECEIVE Command Features
  1227.  
  1228. In edit 190 and later, the RECEIVE command can accept a device or directory
  1229. name as an argument, and all incoming files will go into the specified device
  1230. or directory under the names they were sent with.  If the argument is not
  1231. a device or directory name, it is treated as before: as a name under which to
  1232. store the (first) incoming file.  This change also affects the '-a' ("as-name")
  1233. command-line option.
  1234.  
  1235. This feature depends on the symbol CK_TMPDIR being defined at compile time,
  1236. plus the supporting code for each operating system.  Type SHOW FEATURES to see
  1237. if CK_TMPDIR is defined in your version.  As of edit 190, this feature is
  1238. available in the UNIX, OS/2, and VMS versions of C-Kermit.
  1239.  
  1240. 4.5. Automatic Directory Creation
  1241.  
  1242. File names are treated according to the SET FILE NAMES command (see p.114 of
  1243. "Using C-Kermit"), CONVERTED (the default) or LITERAL.  SET FILE NAMES LITERAL
  1244. means:
  1245.  
  1246.  . When sending files, put the filespec into the outgoing file header packet
  1247.    exactly as the user typed it.  What happens on the receiving end is
  1248.    entirely up to the receiver.
  1249.  
  1250.  . When receiving files, use the file specification from the incoming file
  1251.    header exactly as given, so if it happens to include a device or directory
  1252.    specification, C-Kermit attempts to use it, and if the device and/or
  1253.    directory does/do not exist or are not write-accessible, the transfer fails.
  1254.  
  1255. SET FILE NAMES CONVERTED, which is the default, transforms outgoing filenames
  1256. by (a) removing device, directory, and other "extraneous" information, (b)
  1257. uppercasing all lowercase letters, (c) making sure there is no more than one
  1258. period, and (d) translating all "uncommon" characters to X's.
  1259.  
  1260. A new command allows us to strike a compromise between these two methods:
  1261.  
  1262.   SET { SEND, RECEIVE } PATHNAMES { ON, OFF }
  1263.  
  1264. SET SEND PATHNAMES ON means to leave pathnames ON outbound file names, which
  1265. is the default for compatibility with earlier behavior.  Note, however, that
  1266. PATHNAMES are always stripped from outbound filenames when FILE NAMES are
  1267. CONVERTED, and in OS/2, disk letters are always stripped.
  1268.  
  1269. SET SEND PATHNAMES OFF means to strip OFF path information, leaving only the
  1270. file's name.  SET SEND PATHNAME applies only to the filename given directly to
  1271. a SEND or MSEND command, and not to the "as-name", which is always sent
  1272. literally and without modification, regardless of SEND PATHNAME or FILE NAMES
  1273. settings.
  1274.  
  1275. SET RECEIVE PATHNAMES applies to the filenames in incoming file header
  1276. packets; ON means to leave the name alone and attempt to use it as-is, OFF
  1277. means to attempt to strip the path information ON THE ASSUMPTION that any path
  1278. information found there would be in the notation of the local file system, and
  1279. therefore recognizable.  If not, the results are unpredictable; for example,
  1280. if a file called MYVAX::DUA0:[OLAF.PICS]MONA_LISA.GIF;17 arrives on a UNIX
  1281. system, UNIX C-Kermit can not be expected to distinguish the path information
  1282. from the name (it is a general principle of communication protocols that a
  1283. particular computer must not be expected to understand the conventions and
  1284. formats of some other kind of computer).
  1285.  
  1286. In VMS, UNIX, and OS/2, SET RECEIVE PATHNAMES has an additional meaning: If the
  1287. incoming file name contains directory information (such as [.KERMIT]OOFA.TXT,
  1288. kermit/oofa.txt, or C:\TEXT\LETTERS\ANGRY\OOFA.TXT) -- either absolute or
  1289. relative, then, if the named directory, or any of its ancestors, does not
  1290. exist, Kermit attempts to create it (or them) before opening the output file.
  1291.  
  1292. For example, suppose your current directory (in UNIX) is /usr/olga/budget, and
  1293. a file arrives under the name "aaa/bbb/ccc/ddd/bankrupt.txt", and that the
  1294. /usr/olga/budget/aaa directory already exists, but it does not have a bbb
  1295. subdirectory.  Then Kermit will create the bbb subdirectory, and then the ccc
  1296. subdirectory under bbb, and then the ddd subdirectory under ccc, and then it
  1297. will store the bankrupt.txt file in the /usr/olga/budget/aaa/bbb/ccc/ddd
  1298. directory.
  1299.  
  1300. In UNIX, tilde notation for usernames (like "~olga") is recognized, and any
  1301. directories that are created inherit the permissions of their parents, and the
  1302. owner and group of the user who is running the Kermit program.  Naturally,
  1303. directory creation fails if the user lacks the appropriate permissions.
  1304. Directory creation fails in OS/2 if a disk letter is included for a
  1305. nonexistent or non-writable disk.
  1306.  
  1307. Use SHOW FILE to display the SEND/RECEIVE PATHNAME settings.
  1308.  
  1309. 4.6. Pausing Between Packets
  1310.  
  1311. The new command:
  1312.  
  1313.   SET { SEND, RECEIVE } PAUSE <number>
  1314.  
  1315. tells C-Kermit to pause the given number of milliseconds (thousandths of
  1316. seconds) before sending each packet.  This might be necessary when
  1317. communicating with certain devices or over certain kinds of connections.
  1318. Don't use this except as a final resort, since it slows transfers down.  SHOW
  1319. PROTOCOL displays the current setting.  SET SEND PAUSE and SET RECEIVE PAUSE
  1320. do exactly the same thing.  Edit 190.
  1321.  
  1322. 4.7. Fullscreen File Transfer Display Improvements
  1323.  
  1324. 4.7.1. Thermometer
  1325.  
  1326. Versions of Kermit that support SET FILE DISPLAY FULLSCREEN now are able to
  1327. show a file-transfer "thermometer" (percent bar-graph) to graphically
  1328. represent the progress of the file transfer.  It can be explicitly selected or
  1329. deselected via the new trailing argument to this command:
  1330.  
  1331.   SET FILE DISPLAY FULLSCREEN { THERMOMETER, NO-THERMOMETER }
  1332.  
  1333. A running display of the transfer speed in characters per second (CPS) is also
  1334. shown; it is computed once per second as the total actual file characters
  1335. transferred so far versus elapsed time.
  1336.  
  1337. 4.7.2. Repainting the Screen
  1338.  
  1339. On multiuser operating systems like UNIX and VMS, it is possible for messages
  1340. to be sent to your terminal screen while Kermit is in the middle of
  1341. transferring a file.  If you are using the fullscreen file transfer display,
  1342. this will jumble the formatting.  C-Kermit has no way to know this has
  1343. happened.  In edit 190 and later, however, you can make C-Kermit clear and
  1344. repaint the file transfer display screen by typing Ctrl-L (or L or R or r)
  1345. while the display is active.  Control-W is also accepted for this purpose.
  1346. This will result in either a full or partial reconstruction of the display,
  1347. depending on the underlying operating system.  Edit 190.
  1348.  
  1349. 4.8. Improved Status Codes
  1350.  
  1351. Like most other C-Kermit commands, file transfer commands such as SEND,
  1352. RECEIVE, GET, etc, return a status code for use with IF SUCCESS, IF FAILURE,
  1353. etc.  Prior to edit 190, these codes were not always accurate.  In particular,
  1354. if a file was rejected (for any reason at all) via the attribute refusal
  1355. mechanism, success was always indicated.  In edit 190, the status codes have
  1356. been improved as follows:
  1357.  
  1358.  . If the transfer completes successfully, the status is success.
  1359.  . If a file is refused via the attribute refusal mechanism, the status
  1360.    is failure UNLESS the reason was "date" or "name", in which case the
  1361.    file was not transferred because it was already there (SET FILE
  1362.    COLLISION UPDATE or DISCARD), and so the transfer is considered successful.
  1363.  . It the transfer terminates with an error (E packet), loss of connection,
  1364.    etc, the status is failure.
  1365.  
  1366. You can use SHOW STATUS after any command to test its success or failure.
  1367. Also, the \v(status) variable is set to 0 if the most recent command
  1368. succeeded, and to a nonzero value if it failed.
  1369.  
  1370. (5) NEW CLIENT/SERVER FEATURES
  1371.  
  1372. 5.1. New REMOTE Commands
  1373.  
  1374. The following features are all new to edit 190.
  1375.  
  1376. REMOTE PWD
  1377.   Allows the client to ask for the server's current directory in
  1378.   system-independent way.  Formerly, this could only be done via system-
  1379.   dependent REMOTE HOST commands.  The response is displayed on the screen.
  1380.  
  1381. REMOTE SET FILE TYPE { TEXT, BINARY, LABELED }
  1382.   The LABELED option has been added to this command in the VMS and OS/2
  1383.   versions only.  Also, the file type specified in this command also takes
  1384.   effect locally.  Previously, it was only sent to the server.  Edit 190.
  1385.  
  1386. REMOTE QUERY { KERMIT, SYSTEM, USER } <name>
  1387.   Asks the server to send the value of the variable of the given type that has
  1388.   the given name.  If the query succeeds, the value is displayed on your
  1389.   screen and it is also stored in a local read-only Kermit variable, \v(query)
  1390.   If the query fails, an error message is printed and the \v(query) variable
  1391.   is set to the empty string.
  1392.  
  1393.   In C-Kermit and MS-DOS Kermit, "KERMIT" variables are the \v(name) kind,
  1394.   such as \v(time), \v(version), \v(date), etc.  "SYSTEM" variables are DOS or
  1395.   UNIX environment variables, such as PATH, USER, HOME, or VMS logical names,
  1396.   etc.  USER variables are everything else -- \%a-z, \%1-9, and macro names
  1397.   used as long variable names.
  1398.  
  1399.   The <name> of a KERMIT or SYSTEM variable must be given in an
  1400.   implementation-independent format without special syntax, e.g. TIME, DATE,
  1401.   VERSION, PATH, USER, etc, rather than (say) \v(time), \$(PATH).  However,
  1402.   in most cases, case matters in system variables.  The <name> of a USER
  1403.   variable is given in the syntax of the server, e.g. \%a.
  1404.  
  1405. Examples:
  1406.  
  1407.   C-Kermit>remote query kermit time
  1408.   13:25:18
  1409.   C-Kermit>echo The server's time is: \v(query)
  1410.   The server's time is: 13:25:18
  1411.   C-Kermit>rem q k dir ; Note, abbreviations allowed.
  1412.   /usr/olga/letters
  1413.   C-Kermit>echo The server's current directory is: \v(query)
  1414.   The server's current directory is: /usr/olga/letters
  1415.   C-Kermit>rem q system USER
  1416.   olga
  1417.   C-Kermit>echo user = \v(query)
  1418.   user = olga
  1419.  
  1420. REMOTE ASSIGN <name> [ <value> ]
  1421.   Asks the server to assign the given <value> to the remote user variable
  1422.   denoted by <name>.  The <value> is fully evaluated LOCALLY before being sent
  1423.   to the Kermit server.  The maximum length for the value is governed by the
  1424.   maximum negotiated packet length, i.e. the server's RECEIVE PACKET-LENGTH.
  1425.   Synonym: REMOTE ASG.
  1426.  
  1427. Examples:
  1428.  
  1429.   C-Kermit>remote assign \%a \v(time) ; Assign client's time to server's \%a
  1430.   C-Kermit>remote query user \%a   
  1431.   13:41:18                            ; This is the client's time
  1432.   C-Kermit>rem asg myname Olga        ; Assign my name to server's myname macro
  1433.  
  1434. To force a string corresponding to a local variable name to be sent literally,
  1435. use two backslashes:
  1436.  
  1437.   C-Kermit>remote assign \%a \\v(time) ; Assign "\v(time)" to server's \%a.
  1438.   C-Kermit>remote query user \%a   
  1439.   13:41:18                             ; This is the server's time.
  1440.   C-Kermit>
  1441.  
  1442. You can disable and enable the server's handling of REMOTE QUERY and ASSIGN
  1443. with the commands:
  1444.  
  1445.   DISABLE QUERY    The server should not respond to REMOTE QUERY commands
  1446.   DISABLE ASSIGN   The server should not respond to REMOTE ASSIGN commands
  1447.   ENABLE QUERY     The server should respond to REMOTE QUERY commands
  1448.   ENABLE ASSIGN    The server should respond to REMOTE ASSIGN commands
  1449.  
  1450. By default, like all other ENABLE/DISABLE items, the initial state is ENABLEd.
  1451.  
  1452. 5.2. "WHATAMI" -- Making Kermit GET more like FTP GET
  1453.  
  1454. Those who are accustomed to using client/server applications such as FTP
  1455. expect that certain kinds of commands, when given to the client, will affect
  1456. the server correspondingly.  Most notable among these commands (in FTP's case)
  1457. are those that set the transfer mode: BINARY, ASCII, etc.
  1458.  
  1459. In Kermit, however, the transfer mode has always been determined by the file
  1460. sender, a concept totally unrelated to the client/server distinction, and less
  1461. than obvious to most people.  Furthermore, Kermit programs do not always have
  1462. a client/server relationship -- there is also the send/receive arrangement.
  1463.  
  1464. C-Kermit 5A(190) and MS-DOS Kermit 3.14 (when it becomes available) implement
  1465. a new "What Am I" feature, which operates transparently to the user (i.e.
  1466. there are no commands to control it), and results in FTP-like operation when:
  1467.  
  1468.  1. One Kermit program is in SERVER mode, the other is a client, AND:
  1469.  
  1470.  2. Both Kermit programs support the WHATAMI feature.  Currently, these are
  1471.     limited to C-Kermit 5A(190), MS-DOS Kermit 3.14.  A forthcoming release
  1472.     of IBM Mainframe Kermit will support it too.
  1473.  
  1474. Presently, the WHATAMI feature affects only the GET command, and addresses the
  1475. following scenario:
  1476.  
  1477.  1. User starts a Kermit server, giving it no special settings.
  1478.  
  1479.  2. User tells the client to:
  1480.  
  1481.       SET FILE TYPE BINARY
  1482.       SET FILE NAMES LITERAL
  1483.       GET cku190.tar.Z
  1484.     
  1485.  3. The file is transferred in text mode when the user expected a binary
  1486.     transfer, and the name was converted even though the user wanted it not
  1487.     to be changed.
  1488.     
  1489. At the beginning of any protocol transaction, the two Kermits exchange "What
  1490. Am I" information as part of the S or I packet data.  This information
  1491. includes (a) whether I am a client or server; (b) my transfer mode (text or
  1492. binary); and (c) my file name handling (literal or converted).
  1493.  
  1494. Then, when the server receives a GET-command packet from the client, AND if
  1495. WHATAMI information has been successfully exchanged, then the server switches
  1496. its file transfer mode and file name handling to the client's corresponding
  1497. modes.  Nothing special happens when files are sent TO the server, since this
  1498. works right anyway, using the previous mechanisms.
  1499.  
  1500. Hopefully this change will result in more pleasant surprises than unpleasant
  1501. ones.  One Beta tester (a seasoned Kermit user), however, was unpleasantly
  1502. surprised when he sent the following commands from a client to a server:
  1503.  
  1504.   REMOTE SET FILE TYPE BINARY
  1505.   GET OOFA.ZIP
  1506.  
  1507. The file arrived in text mode because the client was in text mode.  The user
  1508. was relying of the old rule, by which the file sender informs the file
  1509. receiver of the transfer mode via the attribute packet, but since the WHATAMI
  1510. exchange took place after the REMOTE SET, it changed the server's mode back to
  1511. text.  To cure this situation, REMOTE SET FILE TYPE now sets the local file
  1512. transfer mode too.
  1513.  
  1514. Should all this sound confusing, remember that the WHATAMI feature (and the
  1515. other mechanisms for reconciling file transfer mode) make a difference only
  1516. when the sender and receiver's file transfer modes do not agree.  The rules
  1517. can be summarized like this:
  1518.  
  1519.  1. To be certain of the file transfer mode, give the same SET FILE TYPE
  1520.     command to both Kermits (exception: when VMS C-Kermit is sending a file,
  1521.     it determines the transfer mode for each file automatically).
  1522.  
  1523. In case you did not do this, and the transfer modes of the two Kermit programs
  1524. disagree when the file transfer starts:
  1525.  
  1526.  2. If the file sender is VMS C-Kermit, it determines the file type 
  1527.     automatically unless its file type has been set to IMAGE or LABELED.
  1528.     Otherwise:
  1529.  
  1530.  3. If both Kermits have the WHATAMI feature, the client program's transfer
  1531.     mode prevails.  Otherwise:
  1532.  
  1533.  4. If both Kermit programs have Attribute-packet capability, the sender will
  1534.     inform the receiver of the transfer mode, and the receiver will switch to
  1535.     the sender's transfer mode automatically.  Otherwise:
  1536.  
  1537.  5. The transfer proceeds with each Kermit program using the transfer mode
  1538.     that the user has told it to use.  This can result in mismatches, which
  1539.     are usually not what was intended.
  1540.  
  1541. Since not all Kermit implementations -- particularly those found in commercial
  1542. or shareware software packages -- implement the WHATAMI feature or Attribute
  1543. packets, it is always safest to inform both Kermit programs of the transfer
  1544. mode prior to file transfer.
  1545.  
  1546. (6) INTERNATIONAL CHARACTER SETS
  1547.  
  1548. Since "Using C-Kermit" was published:
  1549.  
  1550.  . Edit 189 of C-Kermit added support for Hebrew character sets.
  1551.  . Edit 190 added Hebrew terminal emulation to OS/2 C-Kermit.
  1552.  . Edit 190 added support for the Hewlett-Packard Roman8 character set.
  1553.  
  1554. 6.1. Hebrew File Transfer
  1555.  
  1556. C-Kermit 5A(189) has the following new commands for Hebrew file transfer:
  1557.  
  1558.   SET TRANSFER CHARACTER-SET HEBREW-ISO = ISO 8859-8 Latin/Hebrew Alphabet
  1559.  
  1560.   SET FILE CHARACTER-SET HEBREW-ISO     = ISO 8859-8 Latin/Hebrew Alphabet
  1561.   SET FILE CHARACTER-SET CP862          = Hebrew PC Code Page
  1562.   SET FILE CHARACTER-SET HEBREW-7       = DEC 7-Bit (VT100) Hebrew
  1563.  
  1564. These commands work just like the corresponding commands for Cyrillic
  1565. character sets, described in Chapter 9 of "Using C-Kermit".  When receiving
  1566. files, C-Kermit recognizes Hebrew files automatically if the file sender tags
  1567. the file as Hebrew in the Attribute packet, which the file sender should do if
  1568. it has been given the SET TRANSFER CHARACTER-SET HEBREW command; C-Kermit does
  1569. not, however, switch automatically to a Hebrew file character-set, so you must
  1570. choose one in advance if that's what you want.  The tag is "I6/138" (these are
  1571. ISO registration numbers).  When sending files in Hebrew mode, of course,
  1572. C-Kermit includes the same tag.
  1573.  
  1574. An invertible translation table between Latin/Hebrew and CP862 is used during
  1575. both terminal emulation and file transfer.  The translation table between
  1576. Hebrew-7 and Latin/Hebrew, however, is not invertible because these character
  1577. sets are different sizes.
  1578.  
  1579. Here is an example of uploading a Hebrew file from a PC to UNIX.  The PC
  1580. version is coded in the Hebrew PC code page, and the UNIX version is to be
  1581. stored in the 7-bit Hebrew character-set so it can be sent as network e-mail:
  1582.  
  1583.   C-Kermit> set file character-set hebrew-7 ; I want a 7-bit version for email
  1584.   C-Kermit> receive                         ; Wait for the file.
  1585.   <Alt-X>                                   ; Escape back to the PC
  1586.   MS-Kermit> set file type text             ; Make sure we are in text mode
  1587.   MS-Kermit> set file character-set cp862   ; File coded in Hebrew PC code page
  1588.   MS-Kermit> set xfer character-set hebrew  ; Send using ISO Latin/Hebrew
  1589.   MS-Kermit> send rab.oof                   ; Send the file
  1590.  
  1591. The file sender automatically tells the file receiver that the transfer
  1592. character-set is Hebrew.
  1593.  
  1594. The three Hebrew character sets are also available for use in C-Kermit's
  1595. TRANSLATE command, which translates a local file from one character-set to
  1596. another.  Thus you can use C-Kermit to convert a local file from, say,
  1597. Latin/Hebrew to Hebrew-7.
  1598.  
  1599. C-Kermit's Hebrew file transfer features can be used in conjunction with
  1600. MS-DOS Kermit 3.13 and later (with which C-Kermit shares the same translation
  1601. tables to ensure consistent translations) and IBM Mainframe Kermit 4.2 or
  1602. later, which translates between Latin/Hebrew and IBM CECP 424 (the Hebrew
  1603. EBCDIC Country Extended Code Page).
  1604.  
  1605. 6.2. Hebrew Terminal Emulation
  1606.  
  1607.   NOTE:  See the OS/2 C-Kermit section of this document (below) for details
  1608.   about Hebrew terminal emulation in OS/2 C-Kermit.
  1609.  
  1610. There is no support for right-to-left screen-writing direction or other
  1611. terminal emulation features in C-Kermit, since C-Kermit (except the OS/2 and
  1612. Macintosh versions) does not do terminal emulation itself, but just provides a
  1613. terminal-independent "pipe" to your terminal emulator.  However, you can still
  1614. have C-Kermit provide the character translations during CONNECT mode:
  1615.  
  1616.   SET TERMINAL CHARACTER-SET { HEBREW-ISO, HEBREW-7, CP862 } [ local-cset ]
  1617.  
  1618. The terminal character-set affects not only CONNECT mode, but also the session
  1619. log and the TRANSMIT command.
  1620.  
  1621. You can test for the presence of Hebrew support in your version of C-Kermit
  1622. using the CHECK HEBREW command or the SHOW FEATURES command.
  1623.  
  1624. 6.3. The Hewlett Packard Roman8 Character Set
  1625.  
  1626. C-Kermit 5A(190) adds support for Hewlett Packard ROMAN8 as a file
  1627. character-set and a terminal character-set.  This is an 8-bit character-set
  1628. roughly equivalent, but not identical, to Latin-1, and (of course) with
  1629. entirely different encoding.  The translations between HP ROMAN8 and Latin-1
  1630. are invertible.
  1631.  
  1632. (7) SCRIPT PROGRAMMING
  1633.  
  1634. 7.1. New IF Commands
  1635.  
  1636. IF DIRECTORY <name> succeeds if <name> is the name of a directory or a
  1637.   file-structured device, fails otherwise.  Available, as of edit 190, in UNIX,
  1638.   VMS, and OS/2.
  1639.  
  1640. IF NEWER <file1> <file2> compares modification (or creation) date/times of two
  1641.   files, succeeds if first file is newer than second file.  Edit 190.
  1642.  
  1643. IF REMOTE-ONLY succeeds if C-Kermit was started with the -R (uppercase)
  1644.   command-line option, fails otherwise.  This lets you advise C-Kermit that you
  1645.   only intend to use it in remote mode; the initialization and customization
  1646.   files can (and the standard ones do) include IF REMOTE-ONLY commands to skip
  1647.   over time-and-space-consuming items, such as the dialing and services
  1648.   directories, that will not be used in remote mode.  This allows Kermit to
  1649.   start more quickly.  For examples of use, see the standard initialization
  1650.   file, ckermit.ini / .kermrc.  Edit 190.
  1651.  
  1652. IF EQUAL, IF LLT, IF LGT string comparison commands, as of edit 190, allow the
  1653.   use of braces around comparands that contain imbedded spaces, for example:
  1654.  
  1655.     IF EQUAL {\%a} {sentence with four words} echo They are equal.
  1656.  
  1657.   Prior to edit 190, constructions like this would cause a parse error (see
  1658.   p.239, "Using C-Kermit").  Be sure to use braces around both items.
  1659.  
  1660. 7.2. New \v() Variables
  1661.  
  1662. \v(charset) C-Kermit's local character set.  Use this (e.g.) in scripts
  1663.   for deciding which character set to use when printing screen messages.
  1664.  
  1665. \v(connection) When C-Kermit has made a SET LINE or SET HOST connection, this
  1666.   variable tells the connection type: "serial", "tcp/ip telnet", "decnet lat",
  1667.   "decnet cterm", "x.25", etc.  If C-Kermit is in remote mode -- i.e. it has
  1668.   not made a connection to another computer -- the value of this variable is
  1669.   "remote".
  1670.  
  1671. \v(cps) gives speed in characters (bytes) per second of the most recent
  1672.   file transfer.  If a group of files was transferred, the figure applies
  1673.   to the whole group.
  1674.  
  1675. \v(dialstatus) contains a numeric result code for the most recent DIAL command:
  1676.  
  1677.   -1 No DIAL command given yet
  1678.    0 DIAL succeeded
  1679.    1 Modem type not specified
  1680.    2 Communication device not specified
  1681.    3 Device can't be opened
  1682.    4 Communication speed not specified
  1683.    5 Hangup failure
  1684.    6 Internal error (memory allocation, etc)
  1685.    7 Device input/output error
  1686.    8 DIAL TIMEOUT expired
  1687.    9 Dialing interrupted by user
  1688.   10 Modem not ready
  1689.   11-19 (reserved)
  1690.   20 Modem command error
  1691.   21 Failure to initialize modem
  1692.   22 Phone busy
  1693.   23 No carrier
  1694.   24 No dialtone
  1695.   25 Ring (incoming call)
  1696.   26 No answer
  1697.   27 Disconnected
  1698.   28 Answered by voice
  1699.   29 Access denied, forbidden call
  1700.   98 Unknown error
  1701.   99 Unspecified failure detected by modem
  1702.  
  1703. \v(evaluate) = result of most recent EVALUATE command
  1704.  
  1705. \v(ftype) = current FILE TYPE setting: "text" or "binary".  In OS/2 and VMS,
  1706.   also "labeled".  In VMS only, also "image".
  1707.  
  1708. \v(keyboard) (OS/2 only), the keyboard model: "88", "101", or "122".
  1709.  
  1710. \v(modem) = current modem type (SET MODEM value).
  1711.  
  1712. \v(parity) = current PARITY setting: "even", "odd", "mark", "none", or "space".
  1713.  
  1714. \v(newline) is the newline character or sequence appropriate to the operating
  1715.   system where C-Kermit is running, for example linefeed (\10) for UNIX,
  1716.   carriage return (\13) for OS-9, carriage-return linefeed (\13\10) for OS/2.
  1717.  
  1718. \v(minput) = number telling which MINPUT search string was matched: 0 = none
  1719.   of them; 1 = the first one, etc. (see section on MINPUT below).
  1720.  
  1721. \v(rexx) (os/2 32-bit only) = the return value from the last Rexx command 
  1722.   issued.  
  1723.  
  1724. \v(rows) = the number of rows (lines) on the console terminal / screen,
  1725.   i.e. its length, -1 if unknown.
  1726.  
  1727. \v(cols) = the number of columns on the console terminal / screen,
  1728.   i.e. its width, -1 if unknown..
  1729.  
  1730. \v(terminal) = terminal type, if known, otherwise "unknown".
  1731.  
  1732. \v(query) = result of most recent REMOTE QUERY command.
  1733.  
  1734. \v(space) = number of free bytes on current storage device (OS/2 only).
  1735.  
  1736. \v(startup) (OS/2 only) Disk:Directory from which C-Kermit was started.
  1737.  
  1738. \v(sysid) = Kermit system/OS code, from pp.275-278 of the Kermit book:
  1739.        U8 = MS-DOS (and Windows)
  1740.        U1 = UNIX
  1741.        D7 = VMS
  1742.        UD = OS-9
  1743.        L3 = Amiga
  1744.        A3 = Macintosh
  1745.        UO = OS/2
  1746.        F3 = AOS/VS
  1747.        K2 = Atari ST
  1748.        MV = Stratus VOS
  1749.        etc...
  1750.  
  1751. 7.3. New \f() Functions
  1752.  
  1753. \Fdate(filename) returns the modification (or creation) date of the given
  1754.   file in "yyyymmdd hh:mm:ss" format, or else the empty string upon failure.
  1755.   As of edit 190, available in UNIX, VMS, and OS/2 versions.
  1756.  
  1757. \Freplace(s1,s2,s3).  This function replaces all occurrences of the string s2
  1758.   in the string s1 by the string s3.  s1 and s2 must be at least one character
  1759.   long.  s3 can be omitted, in which case all occurrences of s2 are removed
  1760.   from s1.  If s2 is omitted, s1 is returned unchanged.  Examples:
  1761.  
  1762.     \freplace(oofa,o,O)  = OOfa
  1763.     \freplace(oofa,o,oo) = oooofa
  1764.     \freplace(oofa,o)    = fa
  1765.     \freplace(oofa)      = oofa
  1766.  
  1767.   or (more practically for OS/2):
  1768.  
  1769.     \freplace(\v(cmdfile),\\,/) ; replace backslashes by forward slashes
  1770.  
  1771. \Fsize(filename) tells the size, in characters (bytes), of the given file.
  1772.  
  1773. 7.4. INPUT and OUTPUT Command Improvements
  1774.  
  1775. As of edit 190, the INPUT and OUPUT commands are buffered, which results
  1776. in greater speed of execution.
  1777.  
  1778. The new command:
  1779.  
  1780.   SET OUTPUT PACING <number>
  1781.  
  1782. causes C-Kermit to pause for (at least) the indicated number of milliseconds
  1783. (thousandths of a second) between each character in the OUTPUT string.  Use
  1784. this option when OUTPUT'ing characters to a device that can't receive
  1785. characters at the full communication speed without losing or garbling them.
  1786. The default OUTPUT PACING is 0, i.e. no pauses.  Display with SHOW SCRIPTS.
  1787. Edit 189.
  1788.  
  1789. The OUTPUT command accepts three special notations for sending special signals
  1790. or characters:
  1791.  
  1792.   \B or \b or \\B or \\b
  1793.     Send a BREAK signal.  On serial connections, this is a 250 millisecond
  1794.     spacing condition.  On network connections, it is a network-specific
  1795.     BREAK protocol message, such as a TELNET BREAK.
  1796.  
  1797.   \L or \l or \\L or \\l
  1798.     Send a Long BREAK signal.  On serial connections, this is a 1.5-second
  1799.     spacing condition.  On network connections, it is the same as \B (BREAK).
  1800.  
  1801.   \N or \n
  1802.     Send a NUL (ASCII 0) character.  \0 can't be used for this because it is
  1803.     the terminator for C-language strings.  (\N is new to edit 190.)
  1804.  
  1805. If you need to send \B, \L, or \N literally (e.g. to configure certain kinds
  1806. of modems), you can use either:
  1807.  
  1808.   OUTPUT \fliteral(\B) (or \fliteral(\L) or \fliteral(\N))
  1809. or:
  1810.   OUTPUT \\\\B (or \\\\L or \\\\N)
  1811.  
  1812. (yes, four backslashes).
  1813.  
  1814. Note: \fliteral() can be abbreviated, e.g. \flit(\N).
  1815.  
  1816. 7.5. The New MINPUT Command
  1817.  
  1818. The new command, MINPUT ("multiple input") is a version of the INPUT command
  1819. that looks for more than one string.  Syntax:
  1820.  
  1821.   MINPUT <sec> [ string1 [ string2 [ string2 [ ... ] ] ] ]
  1822.  
  1823. Strings are separated by spaces.  If any of the search strings is encountered
  1824. within the timeout interval, the command succeeds and the \v(minput) variable
  1825. is set to the number of the string that was found: 1, 2, 3, etc.  If none of
  1826. the search strings is found, the command times out, fails, and \v(minput) is
  1827. set to 0.  All SET INPUT paramaters apply - SET INPUT CASE, etc.  Example:
  1828.  
  1829.   minput 30 Login:, Username:, Ready
  1830.   if success goto LBL\v(minput)
  1831.   end 1 Prompt didn't arrive.
  1832.  
  1833. looks for any of the three strings "Login:", "Username:", or "Ready" and
  1834. then goes to one of the labels "LBL1", "LBL2", or "LBL3", depending on which
  1835. string was matched.
  1836.  
  1837. To include a space in a string, enclose it in { braces }.
  1838.  
  1839.   minput 20 {a b} c
  1840.  
  1841. This searches for either "a b" or "c".
  1842.  
  1843. As in the regular INPUT and REINPUT commands, leading and trailing spaces are
  1844. stripped from each search string unless it is enclosed in { braces }.  Example:
  1845.  
  1846.   minput 20 {  abc  }, {{ def }},    ghi
  1847.  
  1848. searches for "  abc  ", "{ def }", or "ghi".
  1849.  
  1850. 7.6. Other New or Improved Script Programming Commands
  1851.  
  1852. EVALUATE <arithmetic-expression>
  1853.   The new EVALUATE command evaluates arithmetic expressions for you, printing
  1854.   the answer.  It is exactly like the \feval() function described in the book,
  1855.   but for interactive use: you can type the expression directly, and the
  1856.   answer is printed, e.g.:
  1857.  
  1858.     C-Kermit> evaluate 1+1
  1859.     2
  1860.     C-Kermit> eval 6!
  1861.     720
  1862.     C-Kermit> def \%a (7 + 8)
  1863.     C-Kermit> ev (1 + 2) * (\%a - 3)
  1864.     36
  1865.  
  1866. FORWARD <label>
  1867.   Like GOTO, except the label search begins at the current position in
  1868.   the macro or command file, rather than at the beginning.  It will not find
  1869.   labels that have already been passed.  The major use for a command like
  1870.   this would be to improve the performance of script programs that contain
  1871.   a lot of forward GOTOs, especially when that program is a command file that
  1872.   will be executed from a diskette.  This is obviously not good programming
  1873.   practice -- since such programs can easily break of blocks of code are
  1874.   moved around -- but then neither are GOTOs themselves.  If the FORWARD
  1875.   label search fails in the current macro or TAKE file, the search continues
  1876.   in the forward direction only in superior macros macros and TAKE files.
  1877.  
  1878.     NOTE: The FORWARD command has been used extensively in the CKERMIT.INI
  1879.     file for C-Kermit 5A(190), resulting in a dramatic decrease in startup
  1880.     time.
  1881.  
  1882. GETC <variable-name> [ <prompt-string> ]
  1883.   The new GETC command (edit 190) lets a script program prompt the user to
  1884.   type a single character.  Example:
  1885.  
  1886.     GETC \%a Press any key to continue:
  1887.  
  1888.   The character is stored in the given variable.
  1889.  
  1890. WRITE-LINE <file> <text>
  1891.   This is exactly like the WRITE command, which is used to send text to the
  1892.   specified file or log.  The difference is that WRITE-LINE always formats the
  1893.   output text as a line, or record, appropriate to the underlying operating
  1894.   system's file format.  This allows Kermit script programs to create text
  1895.   files in a system-independent fashion.  Synonym: WRITELN.  WR, WRI, and WRIT
  1896.   are still accepted as abbrevitions for WRITE.  Also see the \v(newline)
  1897.   variable.  Edit 190.
  1898.  
  1899. RENAME <oldfilename> <newfilename>
  1900.   In the UNIX and OS/2 versions, the second argument (normally the new name
  1901.   for the file) is allowed to be a directory name (or, in OS/2, a device and
  1902.   directory name), in which case the file is moved to the given (device and)
  1903.   directory, keeping its original name.  Edit 190.
  1904.  
  1905. RETURN and END
  1906.   These commands may now be given, with the expected results, from
  1907.   within the command-lists of FOR, WHILE, or XIF commands.  Edit 190.
  1908.  
  1909. ASK and ASKQ
  1910.   These commands now allow question mark and backslash to be entered just like
  1911.   any other text character.  Prior to edit 190, question mark would make a
  1912.   help message pop up, and backslash would fulfill its normal function of
  1913.   introducting a variable or quoting a special character.  However, these
  1914.   commands are unlikely ever to be used by somebody who will reply to a
  1915.   question with a Kermit variable name and expect it to be evaluated.  Nor
  1916.   should they be expected to "quote" question marks.  This change makes for
  1917.   smoother dialogs between Kermit scripts and users, and it also allows users
  1918.   to type DOS-like filenames such as C:\TEMP\OOFA.TXT, which could not
  1919.   otherwise be entered except by doubling each backslash.  However, script
  1920.   writers should note that the mere fact that a DOS path name can be entered
  1921.   into a variable via:
  1922.  
  1923.     ask \%f { Please type the DOS path name: }
  1924.      Please type the DOS path name: c:\123\files\widgets.wks
  1925.  
  1926.   does not mean that the resulting variable can be used bare and unprotected.
  1927.   For example:
  1928.  
  1929.     send foo.bar \%f
  1930.  
  1931.   will not do what you think, because the SEND command will evaluate \%f "too
  1932.   much" (in this case "\123" becomes becomes "{", i.e. ASCII character number
  1933.   123, and \files looks like the beginning of a Kermit function, and results
  1934.   in a syntax error).  The needed protection comes from \fcontents():
  1935.  
  1936.     send foo.bar \fcontents(\%f)
  1937.  
  1938.   which evaluates to the variable's definition ("contents") but does not
  1939.   evaluate it any further.
  1940.  
  1941. There is also a new command in edit 190 to turn the backslash and question-
  1942. mark features on and off for any commands at all:
  1943.  
  1944. SET COMMAND QUOTING { ON, OFF }
  1945.   When ON (which is the default), backslash and question mark fulfill their
  1946.   normal roles in C-Kermit commands.  When OFF, backslash and question mark
  1947.   are treated just like any other ordinary text characters by the command
  1948.   reader.
  1949.  
  1950. You can display the current command quoting setting with:
  1951.  
  1952.   SHOW COMMAND (synonym: SHOW CMD)
  1953.  
  1954. Before this feature was added to C-Kermit, users C-Kermit for UNIX, VMS, etc,
  1955. had to do something like this when referring to DOS files (because DOS uses
  1956. backslash as a directory separator and question mark as a wildcard character):
  1957.  
  1958.   send foo.bar c:\\foo\\bar\\baz\\oofa.txt
  1959.   get d:\\files\\\?\?\?.\?
  1960.  
  1961. Now it is possible to allow natural DOS notation:
  1962.  
  1963.   set command quoting off
  1964.   send foo.bar c:\foo\bar\baz\oofa.txt
  1965.   get d:\files\???.?
  1966.   set command quoting on
  1967.  
  1968. This feature is also handy on computers that have DOS-like files systems,
  1969. such as PCs with OS/2:
  1970.  
  1971.   set command quoting off
  1972.   cd \
  1973.   set port \\server\modem
  1974.   directory e:\pictures\pic???.gif
  1975.   set command quoting on
  1976.  
  1977. rather than:
  1978.  
  1979.   cd \\
  1980.   set port \\\\server\\modem
  1981.   directory e:\\pictures\\pic\?\?\?.gif
  1982.   set command quoting on
  1983.  
  1984. Caution: Expect unpleasant results if you try to run script programs with
  1985. COMMAND QUOTING OFF.
  1986.  
  1987. Also new to edit 190 is the ability to include multiple words in any command
  1988. field that requires a single word, by use of braces for grouping.  For
  1989. example:
  1990.  
  1991.   define \%a two words
  1992.   if equal \%a {two words} echo Equal.
  1993.  
  1994. (8) EXTERNAL PROTOCOLS
  1995.  
  1996. 8.1. The REDIRECT Command
  1997.  
  1998. Syntax:   REDIRECT command [ arguments... ]
  1999. Synonym:  <command [ arguments... ]
  2000.  
  2001. Edit 190.  This command, which is implemented only in operating systems that
  2002. provide the underlying mechanisms (primarily, certain versions of UNIX, and
  2003. partially in OS/2), allows you to run another program from the C-Kermit
  2004. prompt, and have its standard input and output redirected to the SET LINE or
  2005. SET HOST connection.
  2006.  
  2007. It is useful for running "external protocols" over the C-Kermit connection
  2008. when you have made a connection to a computer or service that does not support
  2009. the Kermit protocol.  REDIRECT works only with software that uses standard
  2010. input and output.  Here's an example showing how to transfer a file with a
  2011. pre-1989 version of UNIX Zmodem that allowed its standard input and output to
  2012. be redirected:
  2013.  
  2014. C-Kermit>connect   ; Connect to remote computer
  2015. $
  2016. $ rz               ; Start Zmodem receive process on remote computer
  2017.  
  2018. rz ready. To begin transfer, type "sz file ..." to your modem program
  2019.  
  2020. (Escape back to C-Kermit)
  2021.  
  2022.   C-Kermit>redirect sz oofa.zip  ; C-Kermit runs sz with stdio redirected
  2023.   24575 ZMODEM CRC-32    ...     ; File is transferred with Zmodem
  2024.   C-Kermit>                      ; Prompt returns
  2025.  
  2026. Note, the REDIRECT command in the above example could also have been entered
  2027. like this, using the "<" synonym:
  2028.  
  2029.   C-Kermit><sz oofa.txt
  2030.  
  2031. NOTE: A complete set of X/Y/Zmodem access macros for UNIX C-Kermit is provided
  2032. in the ckurzsz.ini file; please read the comments in this file for further
  2033. details.
  2034.  
  2035. Another use for the REDIRECT command is with the UNIX "term" program; see the
  2036. ckuker.bwr file for details.
  2037.  
  2038. You can use C-Kermit's CHECK REDIRECT command to find out if your version of
  2039. C-Kermit has the REDIRECT command.  If the REDIRECT command is present, it
  2040. still might not work, if:
  2041.  
  2042.  . The underlying operating system lacks certain facilities, in which case
  2043.    C-Kermit will respond with "?Missing pieces".
  2044.  . The process to be redirected does not allow redirection, such as recent
  2045.    releases of sz and rz.
  2046.  . In OS/2 C-Kermit, the REDIRECT command only works for serial, not network,
  2047.    connections.
  2048.  
  2049. 8.2. New Macros  
  2050.  
  2051. New macro packages are available for running external protocols from the
  2052. C-Kermit command line (edit 190):
  2053.  
  2054.   ckurzsz.ini - UNIX rz/sz/rb/sb/rx/sx.
  2055.   ckop101.ini - OS/2 P 1.01.
  2056.   ckop200.ini - OS/2 P 2.00.
  2057.   ckom2z.ini  - OS/2 M2Zmodem.
  2058.  
  2059. (9) NEW COMMAND-LINE OPTIONS
  2060.  
  2061. Command-line options are commands that can be given to C-Kermit on the same
  2062. line with which you invoke it, for example:
  2063.  
  2064.   kermit -s oofa.txt -p s
  2065.  
  2066. Command-line help and error messages have been improved, and the following
  2067. command-line options or new features have been added:
  2068.  
  2069. -a name ("as-name" for a transferred file) now allows "name" to be a device
  2070.   or directory name, when used in conjunction with '-r' (RECEIVE), to specify
  2071.   a device and/or directory into which all incoming files are to be stored
  2072.   under the names they were sent with.  If "name" is not a device or directory
  2073.   name, the (first) incoming file is stored under the given name, as before.
  2074.   Edit 190.
  2075.  
  2076. -D n, where "n" is a number, is equivalent to the interactive command SET
  2077.   DELAY n, which specifies the number of seconds C-Kermit should wait before
  2078.   starting to send a file in remote mode (to give the user time to escape back
  2079.   and initiate the RECEIVE process at the local Kermit program).  Edit 190.
  2080.  
  2081. -N n, where "n" is a number, is the NETBIOS adapter number to be used with
  2082.   NETBIOS connections (OS/2 only).
  2083.   
  2084. -R advises C-Kermit that it will be used in remote mode only; that is, it
  2085.   will not be used to establish a connection by dialing, SET HOST, etc.  This
  2086.   option is advisory only; it does not prevent local-mode operations from
  2087.   taking place.  When the -R option is given, the IF REMOTE-ONLY command will
  2088.   succeed throughout the C-Kermit session.  This allows initialization and
  2089.   script files to skip dialing and service directory setup and similar
  2090.   time-consuming items when they will not be used.  Edit 190.
  2091.  
  2092. ------------------------------
  2093. III. APPENDICES
  2094.  
  2095. APPENDIX 1: UNIX C-KERMIT
  2096.  
  2097. New features in UNIX C-Kermit since edit 188:
  2098.  
  2099. Correct handling of file date/time in POSIX, 4.4BSD, BSDI, etc
  2100. CONNECT-mode speedups, important when C-Kermit is "in the middle".
  2101. Interfork-signaling in CONNECT module bulletproofed.
  2102. POSIX signal handling is now supported, for reliable signals.
  2103. APC support during CONNECT sessions.
  2104. New makefile entries and/or systems supported:
  2105.   Amdahl UTS + TCP/IP
  2106.   Bull DPX/2 BOS/X
  2107.   CONSENSYS System V R4 + TCP + curses
  2108.   DECstation 5000 MIPS3 CPU    
  2109.   FreeBSD
  2110.   HP-UX: many variations, big improvements in functionality
  2111.   Lynx
  2112.   NetBSD
  2113.   OSF/1 2.0
  2114.   QNX 4.2
  2115.   Solaris 2.x
  2116.   UnixWare 1.1 + curses + TCP/IP
  2117. System-wide initialization file is now an option.
  2118. TELNET window (i.e. screen) size negotiation, SIGWINCH trapping.
  2119. RTS/CTS flow control added for Linux, NetBSD, FreeBSD, OSF/1, SCO ODT 3.0,..
  2120. Support for higher serial speeds added for Linux, HP-UX, QNX, etc.
  2121. FIONREAD and select() support added for Linux.
  2122. (Optional) FSSTND (File System Standard) compliance for Linux.
  2123.  
  2124. APPENDIX 2: VMS C-KERMIT
  2125.   
  2126. New features in VMS C-Kermit since edit 188:
  2127.  
  2128. APC support during CONNECT sessions.
  2129. New support for CMU/Tektronix TCP/IP.
  2130. Problems running from DCL procedures, SPAWN'd, in batch, etc - fixed.
  2131. Append-to-file operations now available.
  2132. SET SPEED problems fixed.
  2133. Console terminal flow-control fixed.
  2134. Automatic compensation for systems SYSGEN'd with small MAXFUFs, etc.
  2135. GNU CC compatibility.
  2136. TRANSMIT command fixed to handle VMS-specific file types sensibly.
  2137. Session-log record format fixed.
  2138. TELNET window (i.e. screen) size negotiation.
  2139. Completion codes for RUN, SPAWN, !, @, DIR, etc, fixed.
  2140.  
  2141. APPENDIX 3: OS/2 C-KERMIT
  2142.  
  2143. OS/2 C-Kermit has been completely overhauled since version 5A(188).  The
  2144. changes are listed briefly here, and described in detail in a separate file,
  2145. CKOKER.UPD.  First, there is an interactive automated installation procedure,
  2146. written in the form of a REXX script program, INSTALL.CMD.
  2147.  
  2148. Communications methods now include:
  2149.  
  2150.  . Direct serial COM port connections.
  2151.  . Dialed serial COM port connections.
  2152.  . LAN modem-server dialed connections.
  2153.  . DECnet PATHWORKS
  2154.  . IBM TCP/IP
  2155.  . NETBIOS
  2156.  . Named Pipes
  2157.  
  2158. Numerous terminal-emulation improvements:
  2159.  
  2160.  . VT100, VT220, and ANSI emulations added (to VT102 and VT52);
  2161.  . Mouse support added: mouse-directed cursor movement, copy-and-paste.
  2162.  . Complete support for all VT220 PF, F, keypad, arrow, and editing keys.
  2163.  . A big selection of keyboard verbs ("\Kverbs"), as in MS-DOS Kermit,
  2164.      including a complete set of VT220 keyboard verbs and a
  2165.      new keymap file, CKOVTK2.INI, to set them up for you, and
  2166.      allowing the Num Lock key to be used as DEC PF1 (or anything else);
  2167.  . Hebrew terminal emulation for use with ALEPH library software;
  2168.  . Ability to assign user-defined macros to hot keys via \Kverbs;
  2169.  . Executes APC escape sequences, just like MS-DOS Kermit, for
  2170.      "auto-download", "auto-upload", and auto-anything-else;
  2171.  . Improved colors, color control, new border color;
  2172.  . Numerous fixes to VT emulation;
  2173.  . Improved, context-sensitive popup help screens and status lines;
  2174.  . Print/Dump screen;
  2175.  . Many new host-controlled printer actions;
  2176.  . Redirection of printer to file;
  2177.  . New screen rollback options and features;
  2178.  . TELNET bugs fixed, TELNET screen-size negotiation added;
  2179.  . Session debugging display, including graphic display of TELNET
  2180.      options, control characters, and escape sequences;
  2181.  . Compose Key for composing accented characters;
  2182.  . New unique scan codes added for keypad period, Shift-Esc, Tab;
  2183.  . Answerback string now includes C-Kermit version number and terminal type;
  2184.  . Code page control.
  2185.  . SET FLOW KEEP now leaves RTS alone instead of always turning it on.
  2186.  . XSEND macro transfers directory trees intact.
  2187.  . New macros for activating external protocols.
  2188.  
  2189. OS/2 C-Kermit file transfer improvements:
  2190.  
  2191.  . Recovery.
  2192.  . ".LONGNAME" attribute supported on FAT file systems.
  2193.  . Automatic directory creation for incoming files.
  2194.  . SET FILE TYPE LABELED, a file-transfer mode that transfers OS/2
  2195.      files along with all their attributes (read-only, hidden, system,
  2196.      and extended), similar to the same facility in VMS C-Kermit.
  2197.  . Automatic parity detection during file transfer;
  2198.  . Ability to transfer files with IBM mainframes thru non-transparent
  2199.      3270 protocol converters;
  2200.  . SET FILE COLLISION UPDATE really works now;
  2201.  . Server's execution of REMOTE DIRECTORY, REMOTE TYPE, etc, fixed;
  2202.  . Problems transferring with HP-48, CP/M, etc, fixed.
  2203.  
  2204. Other OS/2 C-Kermit improvements:
  2205.  
  2206.  . Support for the LAN Manager Named Pipe communication method.
  2207.  . Support for peer-to-peer NETBIOS connections (e.g. to MS-DOS Kermit).
  2208.  . NetBIOS and Named Pipe connections can be either established or received.
  2209.  . A Rexx programming interface, so C-Kermit scripts can contain Rexx commands,
  2210.      and Rexx programs executed from within C-Kermit may contain
  2211.      C-Kermit commands.  This also works, to a limited extent, with VX-REXX.
  2212.  . Improved, more-flexible install procedure.
  2213.  . HP-Roman8 character-set support.
  2214.  . Task list adjusted to show current serial port or TELNET host.
  2215.  . More accurate available-space checking for incoming files.
  2216.  . Improved, more-flexible install procedure.
  2217.  
  2218. APPENDIX 4: MACINTOSH KERMIT
  2219.  
  2220. New features in Mac Kermit:
  2221.  
  2222. Now works with System 7.1 and later on Power Macs, etc:
  2223.   downloads files without crashing.
  2224. Many commands fixed or added that never worked before:
  2225.   CD, PWD, DIRECTORY
  2226.   OPEN READ / READ / CLOSE READ
  2227.   LOG { SESSION, TRANSACTION, PACKETS }
  2228.   Log files and other text files now in TeachText format
  2229.   LOG DEBUG goes to a window.
  2230.   SET FILE TYPE { TEXT, BINARY, MACBINARY }
  2231. File transfer display improved:
  2232.   Direction and mode shown correctly when transfer started from prompt.
  2233.   Current directory is shown.
  2234. Numerous bugs fixed.
  2235. Mac-specific modules can now be compiled with Think C as well as MPW C.
  2236.  
  2237. Please refer to the following files for more information:
  2238.  
  2239.   ckmker.fon -- Notes about the new Mac Kermit terminal emulation font
  2240.   ckmker.ps  -- PostScript version of user documentation for 0.9(40)
  2241.   ckmker.doc -- user documentation for 0.9(40), the previous release (1988)
  2242.   ckmker.bwr -- Notes about the current prerelease, FAQ's, etc
  2243.  
  2244. APPENDIX 5: STRATUS VOS
  2245.  
  2246. A full C-Kermit implementation, supporting serial, TCP/IP, and X.25
  2247. connections, lacking only the fullscreen file transfer display, is included
  2248. with edit 190.  VOS-specific files have the "CKL" prefix, including CKLKER.DOC
  2249. (user documentation), CKLKER.BWR (VOS-specific hints and tips), CKLINS.DOC
  2250. (VOS installation instructions).
  2251.  
  2252. ------------------------------
  2253. IV. ERRATA & CORRIGENDA
  2254.  
  2255. The following errors in "Using C-Kermit" (first edition, first printing)
  2256. have been noted, most of them by Gisbert W. Selke, while translating the
  2257. book into German:
  2258.  
  2259. PAGE    REMARKS
  2260.  xviii  Fridrik Skulason's name is spelled with an eth, not a d.
  2261.  xx     Ditto.
  2262.  13-14  The list of systems supported by C-Kermit is not exhaustive.
  2263.     New systems discovered since the printing date are listed in
  2264.     the file CKCxxx.UPD, where xxx is the current edit number, e.g. 189.
  2265.  46     The SET CARRIER description says that it doesn't take effect until the
  2266.         next SET LINE command.  In fact, it can have an effect at certain
  2267.         other times too, such as when you issue any communication-oriented
  2268.         command that changes the communication device modes.  The SET CARRIER
  2269.         AUTO description should say: "Requires carrier during CONNECT,
  2270.         TRANSMIT, INPUT, OUTPUT, and SCRIPT commands, but not during DIAL
  2271.         operations or file transfer."  These fine distinctions in SET CARRIER
  2272.         operation apply mainly to System-V or POSIX based UNIX C-Kermit
  2273.         implementations and OS/2 C-Kermit, but (in general) not to others.
  2274.  53     Table 3-2, HST-COURIER, contains extraneous typesetting information
  2275.     ("Courier10PitchBT-Roman").  (This probably happened because an
  2276.     error-correcting protocol was not used to download the final
  2277.     PostScript to the printer :-)  Two new modem types, COURIER and
  2278.     SPORTSTER have been added, which are the same as HST-COURIER.  The
  2279.     description should say "US Robotics modems".
  2280.  85     The command in the final line in the example, "send olga It's
  2281.     765-4321", should be underlined.
  2282.  91     SET KEY CLEAR added in 5A(190), restores default key mapping.
  2283.  93     The description of SET SESSION-LOG fails to mention that XON and
  2284.     XOFF are removed from a text-mode session log.
  2285. 101     In the HINT inset, the words SEND and RECEIVE should be exchanged.
  2286. 144     In REMOTE CD [ directory ] description, the brackets should be
  2287.         in italics.
  2288. 145     There should be no right parenthesis in REMOTE DIRECTORY [ filespec) ].
  2289. 150     "Now start C-Kermit on the VAX..." should say "Now start C-Kermit on
  2290.         the UNIX system..."
  2291. 164     The description of compression predates the new SET REPEAT command,
  2292.         described below.
  2293. 172     Table 9-2.  The text fails to mention that the Chinese Roman,
  2294.     Icelandic, and Japanese Roman sets are not used by C-Kermit.
  2295.     All nine occurrences of accent acute (') by itself in column 6/00
  2296.     should be accent grave (`).  Column 7/14 for Norwegian should show
  2297.     macron (overline) rather than vertical bar.
  2298. 174     Table 9-4, row 03, column 13 should be O-acute, not O-grave.
  2299. 178     Next-to-last paragraph: "rlogin -8", not "rsh -8".
  2300. 185     C-Kermit>set unknown-char-set (not "sent unknown-char-set").
  2301. 189     The description of JIS X 0201 says that it differs from a
  2302.     Latin Alphabet in that the right half has some empty positions.
  2303.     Some Latin Alphabets (e.g. Latin/Hebrew) also have empty positions.
  2304. 195     Second example: "type diab.asc" instead of "type diab.lat".
  2305. 197     6th line from bottom: MSCUSTOM.INI, not MSKERMIT.INI.
  2306. 203     Examples should say XM (XMIT) rather than XF (XFER).
  2307. 215     Example should say "duplex" rather than "duplux".
  2308. 226     \m() variables are really not like \%a-style global variables,
  2309.         in that the do not get recursively evaluated -- on the literal
  2310.         definition is returned.
  2311. 239     Line 3: "secret" should be "oofa".
  2312.         Middle paragraph, material beginning "In these commands, literal
  2313.         strings to be compared must not contain any spaces..."  As of version
  2314.         5A(190), this is no longer true.  Multiple words can be grouped
  2315.         together within braces, e.g. "if equal \%a {here are four words} ..."
  2316. 242     First line should have no comma at the end.
  2317. 246     Description of label syntax should state that in a macro definition,
  2318.         labels are set off by commas.
  2319. 249     In the syntax description of the FOR command, the words "initial",
  2320.     "final", and "increment" should be in italics, and there should be
  2321.     no right angle bracket (>) following the word "increment".  Also,
  2322.         the description of the FOR command fails to state explicitly that
  2323.         the increment can be negative for counting backwards, in which case
  2324.         the completion test is that the variable becomes less than the
  2325.         final value, not greater than the final value.  Also, the book
  2326.         does not mention that the value of the loop variable can be changed
  2327.         by the commands in the loop contents, and this will affect the
  2328.         execution of the loop.
  2329. 250     In the wakeup-call example, the tests should be "if llt" rather than
  2330.         "if not lgt".
  2331. 252     Comments on the example should say "third is smaller or equal".
  2332. 252     Text fails to mention that functions can not change their arguments
  2333.         (i.e. arguments are passed by value).
  2334. 254     \Flower() and \Fupper() functions only work correctly on 7-bit ASCII
  2335.         letters.
  2336. 258     Table 12-2, operator |.  Example should say \%a | 4 gives value 6.
  2337. 264     Table 12-3, entry "double width line" should be \27#6, not \27#4.
  2338. 264     Table 12-3, entry "set scrolling region" should refer to top row,
  2339.         bottom row; not to row, column.
  2340. 264     Table 12-3, entry "Stops transparent printing", Kermit Notation
  2341.         column, should say "\27[4i", not "\27[0i".
  2342. 264     Table 12-3, entry "Starts transparent printing", Kermit Notation
  2343.         column, should say "\27[5i", not "\27[0i".
  2344. 264     Table 12-3, entry "VT200 ID" should say "ESC [ 62c", not "ESC [ 6c".
  2345. 264     Table 12-3, entry "VT300 ID" should say "ESC [ 63c", not "ESC [ 6c".
  2346. 266-267 The section File Transfer Shortcuts does not apply to file transfer
  2347.     with MS-DOS Kermit 3.13 or later.  The escape sequences associated
  2348.     with the TERMINALR and TERMINALS macros in MS-DOS Kermit 3.12 and
  2349.     earlier are now used for changing screen-writing direction during
  2350.     terminal emulation, as on real DEC Hebrew VT terminals.  See the
  2351.     MS-DOS Kermit 3.13 update notes (KERMIT.UPD) for detailed information.
  2352. 267     The description of the RETURN command says it may not be used in the
  2353.         command list of a FOR, WHILE, or XIF command.  As of edit 190, this
  2354.         is no longer the case.
  2355. 268     Carl, not Karl, Friedrich Gauss.
  2356. 269     The OPEN !READ command example for VMS should use /EXCLUDE= rather
  2357.     than /EXCEPT=.
  2358. 272     Line 14 of example should say "if = \%n \%d", not "if = \%i \%d".
  2359. 275     Comma missing after closing brace of FOR loop in CALL macro.
  2360. 276     Line 13: When you give a SERIAL (not LINE), NET, or CALL command...
  2361. 286     The OUTPUT command in the middle of the page should say
  2362.         "\27[\?6c" rather than "\27[\?1c".
  2363. 287     SET INPUT TIMEOUT QUIT in the VMSLOGIN macro should be
  2364.         SET INPUT TIMEOUT PROCEED.  The continuation hyphen is missing from
  2365.         three lines.  The VMSLOGIN macro in the distributed CKERMIT.INI file
  2366.         corrects these errors.
  2367. 294     The CISLOGIN macro has several mistakes.  The following section:
  2368.       input 5 User ID:,-
  2369.       output \%2\13,-
  2370.       input Password:,-
  2371.       output \%3\13,-
  2372.       input 20 Enter Choice!,-
  2373.         Should be replaced by:
  2374.       input 5 User ID:,-
  2375.       output \%1\13,-
  2376.       input 5 Password:,-
  2377.       output \%2\13,-
  2378.       input 20 CompuServe Information Service,-
  2379. 299     Paragraph after "define ACCESS": "and assigned to the local temporary
  2380.         variable \%9" should be removed.  Towards the bottom of the page, the
  2381.         example and the last two paragraphs should be adjusted to discuss the
  2382.         ACCESS macro definition as it appears at the top of the page!  The
  2383.         \%9 variable is not used.  The example "if def \%9 doaccess { \%2} \%9"
  2384.         should read "if success doaccess { \%2} \v(return)".  In the first line
  2385.         of the last paragraph, "\%9" should be changed to "\v(return)".
  2386. 315     VMS examples:
  2387.         $ define compuserve $sys$system:kermit.exe sys$login:compuserve.cmd
  2388.         $ define sprintnet  $sys$system:kermit.exe sys$login:sprintnet.cmd
  2389.         Should be:
  2390.         $ compuserve :== $sys$system:kermit.exe sys$login:compuserve.cmd
  2391.         $ sprintnet  :== $sys$system:kermit.exe sys$login:sprintnet.cmd
  2392. 323-324 The description of C-Kermit program exit status codes fails to
  2393.     mention the special method used by (Open)VMS, in which these codes
  2394.     are assigned to the symbol CKERMIT_STATUS (see CKVKER.BWR).
  2395. 336     PRINT, PING, and similar commands work by running the corresponding
  2396.         system command (PRINT, lp, lpr, etc), which must be in the user's PATH
  2397.         with execute permission, otherwise an error message appears stating
  2398.         "command not found" or "permission denied", etc.
  2399. 346     SET KEY CLEAR added in 5A(190), restores default key mapping.
  2400. 352     The syntax of SET TELNET TERMINAL-TYPE should include italicized
  2401.     square brackets around "text" to indicate that the text is optional,
  2402.     and that if it is omitted, the TELNET TERMINAL-TYPE reverts to the
  2403.     default, usually the terminal type of your login session.
  2404. 352     The entries for SET TERMINAL ANSWERBACK, ARROW-KEYS, KEYPAD-MODE, and
  2405.     SCROLLBACK, etc, are missing.  These are OS/2-specific commands (all of
  2406.         these except those new to edits 189 and 190 -- are described in the
  2407.         OS/2 Appendix on page 432).  See the OS/2 updates file.
  2408. 353     The entries for SET TERMINAL TYPE and WRAP are missing.
  2409.     These are also OS/2-specific commands (described on page 432).
  2410. 354     SET TRANSMIT PAUSE description is inaccurate.  An accurate description
  2411.         appears on page 204.
  2412. 366     In Table II-2, "ATSO=0" should be "ATS0=1".
  2413. 402-403 "define sys$input" and "define sys$output" in the examples on these
  2414.         two pages should be "define /user_mode sys$input", etc.  This makes
  2415.         the definitions effective only for the next program invocation.  In
  2416.         that case the "deassign sys$input", "deassign sys$output" commands
  2417.         can be removed.
  2418. 403     The section "Running C-Kermit in DCL Command Procedures" fails to
  2419.     describe how to use C-Kermit's exit status codes (see CKVKER.BWR).
  2420. 409     The Backup date in the example at the top of the pages should not
  2421.         be earlier than the Created and Revised dates.  The maximum record
  2422.         length is 65534, not 32767.
  2423. 419     The "stepping-stone" at the beginning of the OS/2 Appendix fails
  2424.     to refer readers to the CKCKER.BWR and CKOKER.BWR files, and the
  2425.         OS/2 updates file CKOKER.UPD.
  2426. 420     Footnote.  The COMDMA driver, though discussed in the OS/2
  2427.     documentation, never actually existed.  The regular COM.SYS driver
  2428.     is used instead.
  2429. 425     The first paragraph in the Serial Communications section fails to
  2430.     mention that other serial-port device names are also acceptable.
  2431. 425     Bottom -- OS/2 C-Kermit now also supports VT100, VT220, and ANSI 
  2432.         terminal emulation.
  2433. 428-432 These pages are largely obsolete as of version 5A(190).  The CONNECT-
  2434.         mode actions shown in Table V-1, as well as the Arrow keys (Table V-2),
  2435.         Keypad keys (Table V-3), now have \Kverbs associated with them,
  2436.         exactly as in MS-DOS Kermit.  Additional \Kverbs are provided for
  2437.         VT220 (LK201) F keys and editing keys.  See the OS/2 updates file.
  2438. 430     Table V-3 fails to include the Num Lock key, and the accompanying
  2439.     text does not mention the fact the fact that it can be assigned
  2440.     with SET KEY.  See CKOKER.BWR, CKOVTK2.INI, and the OS/2 updates file
  2441.         for further information.
  2442. 431     Third paragraph.  "F1 through F4" should be "F1 through F10".
  2443.     Also, the Home key should be included in the list of keys that
  2444.     control screen rollback.
  2445. 432     The description of SET TERMINAL ANSWERBACK is missing.
  2446.         Also, numerous new SET TERMINAL commands have been added for OS/2;
  2447.         see the OS/2 updates file.
  2448. 435-439 Tables V-4 through V-9 need to be augmented with VT220 sequences.
  2449.         See the OS/2 updates file.
  2450. 438     No explanation of "nbits".  1=8-bit characters, 2=7-bit characters.
  2451.     "baud" should be "bps".
  2452. 440     Table V-10.  ESC W misplaced (alphabetically).
  2453. 447     "SET FILENAMES" should be "SET FILE NAMES".
  2454. 462     The text at the top of the page should say "ISO 8859", not "ISO 8858".
  2455. 463     Table VIII-3.  Same as for Table 9-2, page 172.  Plus: Fr-Canadian
  2456.         should be listed as Canadian-French.
  2457. 486     The Cyrillic expansion for "KOI" is misspelled.
  2458. 491     Reference [6].  The third Cyrillic word is misspelled.
  2459. 495     Reference [48].  "Unterschiessheim" should be "Unterschleissheim".
  2460.     Reference [50].  Second Cyrillic word misspelled.
  2461. ...     Hebrew character set tables need to be added.
  2462. Index   Needs entries for:
  2463.       Command-line options
  2464.       Delay
  2465.       Encryption
  2466.       Grouping of words in commands
  2467.       Commands, grouping of words in
  2468.       Length, of packets
  2469.       Length, of files
  2470.       Prompt, how to set
  2471.       Spaces, in commands
  2472.           Telenet (see SprintNet)
  2473.       Terminal servers, dialing out from
  2474.       umask
  2475.  
  2476. Please send reports of other errors to the authors, as well as suggestions for
  2477. improvements, additional index entries, and any other comments.
  2478.  
  2479. ------------------------------
  2480. END OF CKCKER.UPD
  2481.