home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / mskermit / mskerm.upd < prev    next >
Text File  |  2020-01-01  |  150KB  |  3,455 lines

  1. File KERMIT.UPD (MSKERM.UPD)                     January 1995
  2.  
  3.              SUPPLEMENT TO "USING MS-DOS KERMIT":
  4.          CHANGES AND NEW FEATURES SINCE VERSION 3.11
  5.  
  6. Most recent update: Fri Jan  5 10:08:09 1996
  7.  
  8. MS-DOS Kermit is:
  9.  
  10.   Copyright (C) 1982, 1995, Trustees of Columbia University in the City of New
  11.   York.     The MS-DOS Kermit software may not be, in whole or in part, licensed
  12.   or sold for profit as a software product itself, nor may it be included in
  13.   or distributed with commercial products or otherwise distributed by
  14.   commercial concerns to their clients or customers without written permission
  15.   of the Office of Kermit Development and Distribution, Columbia University.
  16.   This copyright notice must not be removed, altered, or obscured.
  17.  
  18. Kermit software is furnished without warranty of any kind.  Neither Columbia
  19. University, nor the individual authors, nor Digital Press, nor Data General
  20. Corporation, nor any other institution or individual that has contributed to
  21. the development or documentation warrant the software in any way.
  22.  
  23. See the file KERMIT.HLP (MSKERM.HLP) for contact information.
  24.  
  25. CONTENTS:
  26.  
  27.      INTRODUCTION
  28.  (0) THE "KERMIT" ENVIRONMENT VARIABLE
  29.  (1) DIALING AND THE DIALING DIRECTORY
  30.  (2) FOSSIL DRIVERS, ISDN, HAYES ESP SERIAL BOARD
  31.  (3) FILE TRANSFER RECOVERY
  32.  (4) FASTER METHOD FOR TRANSFERRING BINARY FILES
  33.  (5) OTHER FILE TRANSFER IMPROVEMENTS
  34.  (6) IMPROVED CLIENT/SERVER OPERATION
  35.  (7) IBM MAINFRAME FILE TRANSFER
  36.  (8) NEW CHARACTER-SET SUPPORT
  37.  (9) CONNECT-MODE STATUS LINE AND POPUP HELP SCREENS
  38. (10) THE APC ESCAPE SEQUENCE
  39. (11) VT320 TERMINAL EMULATION
  40. (12) ANSI TERMINAL EMULATION
  41. (13) DATA GENERAL DASHER TERMINAL EMULATION
  42. (14) WYSE-50 TERMINAL EMULATION
  43. (15) COMPOSE-KEY SEQUENCES FOR ENTERING SPECIAL CHARACTERS
  44. (16) WIDE SCREENS AND HORIZONTAL SCROLLING
  45. (17) EXPANDED MEMORY
  46. (18) GRAPHICS TERMINAL EMULATION
  47. (19) OTHER TERMINAL EMULATION CHANGES AND IMPROVEMENTS
  48. (20) SCRIPT PROGRAMMING CHANGES AND ADDITIONS
  49. (22) GENERAL COMMUNICATIONS
  50. (22) COMMAND PARSER
  51. (23) TCP/IP NETWORKING
  52. (24) MULTIPLE TCP/IP SESSIONS -- KERMIT'S TCP/IP SESSION MANAGER
  53. (25) SMALL MEMORY-SIZE EDITIONS
  54. (26) BBS OPERATORS GUIDE
  55. APPENDIX I:  NEW TERMINAL EMULATIONS - TECHNICAL SUMMARY
  56.  
  57. ------------------------------
  58. INTRODUCTION
  59.  
  60. MS-DOS Kermit 3.11 was released in September 1991, and is fully described in
  61. Chapter 14 of "Using MS-DOS Kermit", second edition.  Subsequent releases add
  62. a few features not described in the book.  This file describes these new
  63. features.
  64.  
  65. MS-DOS Kermit 3.12 was released in September, 1992:
  66.  
  67.  . Networking and communications improvements, including ODI support.
  68.  . Japanese Kanji text-file transfer translation.
  69.  . Locking-shift protocol for efficient 8-bit file transfer on 7-bit links.
  70.  . A new method for transferring files with IBM mainframes.
  71.  . Ability to SET PORT TCP/IP to non-TELNET ports.
  72.  
  73. MS-DOS Kermit 3.13, July 1993:
  74.  
  75.  . A new faster method for transferring binary and precompressed files
  76.  . Larger packets and windows allowed, up to 9024 x 31.
  77.  . Switching among multiple simultaneous TCP/IP sessions
  78.  . Data General DASHER terminal emulation
  79.  . Graphics-mode support for 132-column operation on EGA & VGA video adapters
  80.  . Text-mode support for 132-column operation on ET4000 & other VESA adapters
  81.  . Horizontal scrolling of wide terminal screens
  82.  . Expanded-memory option for screen rollback and graphics image retention
  83.  . Hebrew character-set translation and Hebrew terminal emulation
  84.  . East European character-set translation
  85.  . Icelandic CP861 code page support
  86.  . Separate code page selection for terminal emulation and file transfer
  87.  . Compose-key sequences for entering accented characters
  88.  . New KERMIT PATH environment variable
  89.  . Support for Novell SLIP_PPP ODI driver and other networking improvements
  90.  . BOOTP improvements
  91.  . TELNET improvements, including option negotiation display
  92.  . DIAL-command support for additional modem types
  93.  
  94. MS-DOS Kermit 3.14, January 1995:
  95.  
  96.  . ANSI terminal emulation
  97.  . Wyse-50 terminal emulation
  98.  . Data General DASHER and DEC VT terminal emulation improvements
  99.  . Kanji character-set translation during terminal emulation
  100.  . HP-Roman8 terminal character-set
  101.  . Control over timeslicing method in Windows, DesqView, OS/2, NT
  102.  . Control over automatic video-mode switching
  103.  . Selectable fore- and background colors for underline simulation
  104.  . Additional scan codes for Alt/Ctrl/Shift - SpaceBar/Esc combinations
  105.  . Revised printer support for better interoperation with Novell CAPTURE
  106.  . Additional control over TCP/IP and TELNET protocol features
  107.  . Debugging display of TELNET options negotiation
  108.  . Networking support for Telebit PPP
  109.  . TCP/IP fixes, speedups, and refinements
  110.  . Multiple TCP/IP sessions to the same host now allowed
  111.  . Support for Artisoft Int14 redirector
  112.  . Support for Meridian Technology SuperLAT network connections
  113.  . SET SPEED 28800
  114.  . Workarounds for buggy SMC FDC37C665 UART simulator on Pentium motherboards
  115.  . Support for Hayes ESP serial communications board in 16550A mode
  116.  . Support for Fossil Drivers
  117.  . User control over treatment of carrier signal on serial connections
  118.  . Binary-mode file transfer recovery
  119.  . Ability to send partial files manually
  120.  . Control of run-length encoding
  121.  . Improved client/server operation
  122.  . Prompt string value now evaluated each time prompt is issued
  123.  . ASK/ASKQ responses now taken literally
  124.  . New APC command sends APC strings
  125.  . Incoming APC strings ignored by default for safety
  126.  . Revised CONNECT-mode status line for additional information
  127.  . Separate CONNECT-mode help and one-character command menus
  128.  . New script programming commands
  129.  . Improved consistency of backslash-quoting in commands
  130.  . New built-in string, file, and numeric functions
  131.  . Additional built-in variables
  132.  . Revised command-line handling of substitution variables
  133.  . Transaction log of file transfers now records detailed rejection 
  134.    reason if based on file attributes
  135.  . Available also in special reduced forms for limited memory
  136.  
  137. See the READ.ME file in the top-level directory of the Kermit diskette for
  138. installation instructions and an overview of what's included on the disk.
  139. ------------------------------    
  140.  
  141. (0) THE "KERMIT" ENVIRONMENT VARIABLE
  142.  
  143. The DOS environment variable KERMIT may be used for setting certain
  144. parameters, even if Kermit doesn't read its initialization file.
  145. Set this environment variable in your AUTOEXEC.BAT file:
  146.  
  147.   SET KERMIT=text
  148.  
  149. <text> can be one or more MS-DOS Kermit startup parameters of the form
  150. <name> <value>, separated by semicolons.  Startup parameters include:
  151.  
  152.   INPUT <number>    (allocates storage for INPUT command buffer)
  153.   ROLLBACK <number>    (allocates storage for <number> rollback screens)
  154.   WIDTH <number>    (allocates sorage for given screen width, 80-207)
  155.   COMn <address> <irq>    (sets COM1, COM2, COM3, or COM4 address and IRQ)
  156.   PATH <path>        (where Kermit looks for TAKE files)
  157.  
  158. PATH and WIDTH are new to v3.13.  WIDTH defines the width of the terminal-
  159. screen rollback memory.  If you want to roll back wide screens, you should
  160. specify the width, e.g. 132.  AUTOEXEC.BAT example:
  161.  
  162.   SET KERMIT=ROLLBACK 50;WIDTH 132;PATH C:\KERMIT  
  163.  
  164. PATH affects the init-file search, the TAKE command, and IF INPATH.
  165.   
  166. (1) DIALING AND THE DIALING DIRECTORY
  167.  
  168. MS-DOS Kermit includes flexible and extensible facilities for dialing
  169. with most of today's popular modems.
  170.  
  171. (1.1) The Standard Dialing Method
  172.  
  173. If you installed Kermit from the distribution disk according to instructions,
  174. you'll have the standard DIAL macro, defined in Kermit's initialization file,
  175. MSKERMIT.INI, at your disposal.  The DIAL macro:
  176.  
  177.  . Uses your dialing directory if you have one.
  178.  . Uses a modem-specific script to configure and dial your modem.
  179.  . Redials several times automatically if the line is busy.
  180.  . Is entirely scripted, so you can change it if you want to.
  181.  
  182. To use the dial macro, simply type "dial" followed by the phone number at
  183. the MS-Kermit> prompt, for example:
  184.  
  185.   MS-Kermit> dial 9876543
  186.  
  187. or:
  188.  
  189.   MS-Kermit> dial 1 800 987-6543
  190.  
  191. The DIAL macro uses two additional files: xxxxx.SCR, a script program for
  192. dialing your modem ("xxxxx" is HAYES, T3000, ROLM, etc), and DIALUPS.TXT, your
  193. dialing directory (optional).  
  194.  
  195. (1.1.1) Telling Kermit Which Kind of Modem You Have
  196.  
  197. Kermit comes with dialing scripts lots of modems.  Different modems have
  198. different commands and capabilities, so each kind must be handled separately.
  199. The scripted approach allows new modems to be added easily, without changing
  200. the Kermit program itself.  It also allows for bugs to be fixed, parameters
  201. changed, behavior altered, etc, without changing the program.  Modem scripts
  202. are ordinary text files in Kermit's MODEMS subdirectory that anybody can type,
  203. print, or edit.  The script language, and modem scripts in particular, are
  204. described in detail in "Using MS-DOS Kermit".
  205.  
  206. Unless you say otherwise, Kermit assumes you have a Hayes 2400 modem and uses
  207. MODEMS\HAYES.SCR for dialing.
  208.  
  209. How to say otherwise?  The modem script is chosen in any of the following ways
  210. (using the Telebit T3000 modem as an example, which has a T3000.SCR file in
  211. the KERMIT\MODEMS directory):
  212.  
  213.  1. Set a DOS environment variable, MODEM, to be the name of your modem;
  214.     add the following line to your AUTOEXEC.BAT file: 
  215.  
  216.     SET MODEM=T3000
  217.  
  218.     or give this command at the DOS prompt before starting Kermit.
  219.  
  220.  2. Or use the following Kermit command:
  221.  
  222.     DEFINE _MODEM T3000 ; Note the underscore!
  223.  
  224.  3. Or, in v3.14 and later, tell Kermit to:
  225.  
  226.     SET MODEM T3000     ; Note: no underscore, no "=" sign.
  227.  
  228.     which is equivalent to "define _modem t3000".
  229.  
  230. Methods 2 and 3 are both regular Kermit commands.  You can put them in your
  231. MSCUSTOM.INI file if you want them in effect every time you start Kermit,
  232. or you can type them at the MS-Kermit> prompt.
  233.  
  234. Each method has the same effect.  It tells Kermit to look for a file called
  235. T3000.SCR in Kermit's MODEMS subdirectory.  You can substitute any string for
  236. "T3000", as long as there is a corresponding .SCR file in the MODEMS
  237. subdirectory.  For example, SET MODEM PP14400 tells Kermit to look in its
  238. MODEMS subdirectory for PP14400.SCR.  See MODEMS\READ.ME for a list of the
  239. dialing scripts that are included in the standard Kermit package and a full
  240. description of how they work.
  241.  
  242. If you have a modem for which no suitable dialing script is provided, you can
  243. write a new script program for dialing, modeled after one of the other dialing
  244. scripts (see "Using MS-DOS Kermit") and put it in the MODEMS subdirectory, and
  245. then tell Kermit about it using one of the three methods above.  Note that
  246. some dialing scripts might work with multiple brands of modems, perhaps less
  247. than optimally.  For example HAYES.SCR will probably work with any Hayes-
  248. compatible modem; PP14400.SCR reportedly also works with Zoltrix modems, etc.
  249.  
  250. (1.1.2) Creating a Dialing Directory
  251.  
  252. Kermit's dialing directory lets you:
  253.  
  254.  . Use names instead of phone numbers for dialing
  255.  . Choose a particular speed or parity automatically for each entry
  256.  
  257. For example, suppose you regularly make a modem call to XYZ Corporation
  258. at 1 800 765-4321.  Rather than type:
  259.  
  260.   DIAL 18007654321
  261.  
  262. every time you want to make this call, you could type:
  263.  
  264.   DIAL XYZ
  265.  
  266. Your dialing directory is a plain-text file in your Kermit directory (the same
  267. directory as your MSKERMIT.INI file) called DIALUPS.TXT.  A DIALUPS.TXT file
  268. is already supplied on the Kermit diskette, which you can edit (using any text
  269. editor, such as the DOS EDIT program).  The file contains one line per entry:
  270.  
  271.   name     number      speed       parity   comments
  272.  
  273. The "name" is the name you want to use for this entry in your DIAL commands.
  274. "number" is the telephone number; "speed" is the dialing speed in bits per
  275. second, "parity" is the parity to use (even, odd, mark, space, or none).  The
  276. name, number, speed, and parity are separated from each other by one or more
  277. spaces.  Any words after the parity are ignored, so you can use them for
  278. comments.  If trailing fields (speed, parity) are omitted, Kermit's current
  279. values are used (but then you can't have a comment).  If you want to tell
  280. Kermit explicitly to use its current value for speed or parity, use an equal
  281. sign (=).  Examples:
  282.  
  283.   xyz        18007654321
  284.   sprintnet  7654321      2400     mark
  285.   oofanet    6543210      1200     odd    This entry has a comment.
  286.   tymnet     93,876-5432  2400     even    You can put punctuation in the phone #.
  287.   hometone   T5551212      1200     none    T in number forces tone dialing
  288.   homepulse  P5551212      1200     none    P in number forces pulse dialing
  289.   anyspeed   999-9999      =     none    Use current speed, whatever it is.
  290.   anyparity  888-8888      9600     =    Use current parity, whatever it is.
  291.   whocares   777-7777      =     =    Use current speed and parity.
  292.   defaults   987-6543
  293.  
  294. To use the dialing directory, just type DIAL followed by the name, spelled out
  295. in full (case doesn't matter), for example:
  296.  
  297.   MS-Kermit>dial xyz
  298.  
  299. If you type a name or number that is not in the directory, Kermit dials
  300. exactly the characters you type, for example DIAL 5552370 dials the number
  301. 5552370.  DIAL FRED (if FRED is not in the directory) tells Kermit to dial the
  302. letters FRED, which won't accomplish anything useful with most modems (unless
  303. the modem itself has an internal dialing directory).
  304.  
  305.   IMPORTANT: Kermit assumes neither Tone nor Pulse dialing.  Kermit's dialing
  306.   command for Hayes-like modems is ATD, not ATDT or ATDP because Tone dialing
  307.   is not available in many areas.  If you want to force (say) Tone dialing,
  308.   include a "T" at the beginning of the phone number (e.g. "dial T76543231")
  309.   or configure your modem beforehand for Tone dialing.
  310.  
  311. To view your dialing directory, type LIST.  To view particular entries in your
  312. dialing directory, type LIST XXX, where XXX is a sequence of characters that
  313. appears in the desired entries (usually the name):
  314.  
  315.   MS-Kermit>list tymnet
  316.   tymnet   93,876-5432  2400   even  You can put punctuation in the phone #.
  317.  
  318. The DIAL command assumes your dialing directory is stored on your PC as
  319. DIALUPS.TXT in your Kermit directory, i.e. the same directory as your MS-DOS
  320. Kermit initialization file.  If you want to keep it someplace else or use some
  321. other name, create a DOS environment variable in your AUTOEXEC.BAT file:
  322.  
  323.   SET DIALFILE=C:\PHONES\MSKERMIT.KDD
  324.  
  325. or in your MSCUSTOM.INI file:
  326.  
  327.   DEFINE _DIALFILE C:\PHONES\DIALING.DIR ; (Note underscore)
  328.  
  329. If you want to use the directory sometimes but not others, define a separate
  330. macro for dialing without it, e.g.:
  331.  
  332.   define call take C:\KERMIT\MODEMS\\\m(_modem).SCR
  333.  
  334. As of MS-DOS Kermit 3.14, dialing scripts are available for about 20 different
  335. modems; many new ones were added in 3.13 and 3.14; see the READ.ME file in
  336. MODEMS directory for details.
  337.  
  338. NOTE: Most of the dialing scripts for high-speed modems (V.32 and above)
  339. ignore Kermit's current speed as well as any speeds given in your dialing
  340. directory.  Instead, Kermit uses a fixed high interface speed (usually 57600
  341. bps) and configures the modem to negotiate the best connection speed and then
  342. automatically buffer between the connection speed and the interface speed.
  343.  
  344. (1.2) The Default Dialing Method
  345.  
  346. As of version 3.14, even if you did not install Kermit according to
  347. instructions, or if you did not start it with the standard initialization
  348. file, you'll still have a simple DIAL capability.  The new built-in dialing
  349. method is used if you give a DIAL command, but no DIAL macro is defined.  The
  350. built-in method does the following:
  351.  
  352.  . Gets and saves the SET CARRIER setting.
  353.  . Executes the SET CARRIER OFF command.
  354.  . Sends ATD, then the phone number, then carriage return to the modem.
  355.  . Waits up to 90 seconds for the CD signal to come on.  If it comes on
  356.    at any time within 90 seconds, the DIAL command completes immediately
  357.    and sets a success code; otherwise (after 90 seconds, or if you
  358.    interrupt it with Ctrl-C), it completes with a failure code.
  359.  . Upon completion, it restores your previous SET CARRIER setting.
  360.  
  361. Thus, the default dialing method assumes a Hayes-like modem, but only to the
  362. extent that it uses ATD as its dialing command.  It does not change your
  363. current speed, parity, flow control, or other parameters; it does not look for
  364. a dialing directory, it does not attempt to reconfigure the modem, and it does
  365. not rely on any responses from the modem, other than the CD signal coming on
  366. when the connection is complete.
  367.  
  368. This dialing method is used whenever you give a DIAL command and no DIAL macro
  369. is defined.  This implies, by the way, that you can define your own DIAL
  370. command to do anything you want, replacing the standard definition from the
  371. MSKERMIT.INI file.  As always, whenever you want to do override or remove any
  372. definitions or settings that are made in MSKERMIT.INI, please do this in your
  373. MSCUSTOM.INI file rather than by editing MSKERMIT.INI itself.  For example:
  374.  
  375.   define dial  ; Remove DIAL macro definition, use built-in default DIAL.
  376.   define dial blah blah blah ...  ; Replace standard DIAL definition
  377.  
  378. The internal default dialing macro is called __DIAL (the word "DIAL" preceded
  379. by two underscores).  Type "show macro __dial" to view its definition.
  380.  
  381. (1.3) Manual Dialing
  382.  
  383. Of course, Kermit also lets you dial "manually" in CONNECT mode.  Simply
  384. type CONNECT and then, in the terminal-emulation screen, type AT commands or
  385. whatever commands are appropriate for your modem.  If Kermit won't let you
  386. CONNECT, then give a SET CARRIER OFF command first (SET CARRIER OFF means
  387. Kermit does not care about the CD signal; SET CARRIER ON, which is NOT the
  388. default, means Kermit requires carrier to communicate).  Normally, the
  389. modem does not present the CD signal if it doesn't have a connection.
  390.  
  391. And of course, you can also write your own script programs to dial the modem.
  392. You don't have to use the ones that are supplied with Kermit.
  393.  
  394. (2) FOSSIL DRIVERS, ISDN, HAYES ESP SERIAL BOARD
  395.  
  396. (2.1) FOSSIL DRIVERS
  397.  
  398. MS-DOS Kermit supports Fossil serial port drivers through the SET PORT BIOSn
  399. (n = 1-4) communications channel.  The presumption is an external agent has
  400. selected the speed (Fossil redefines some IBM PC slow speeds to be higher
  401. speeds) and flow control.  Kermit will not touch the serial port hardware if
  402. the SET PORT BIOSn command is given before any command inquires about port
  403. information.  Thus a BBS may have a Fossil driver managing serial port
  404. hardware and Kermit is a polite user of one port via Interrupt 14h.
  405.  
  406. A Fossil driver can also be used with the new (v3.14) SET PORT option:
  407.  
  408.   SET PORT FOSSIL <1..99>
  409.  
  410. to select Fossil COM port 1 through 99, thus lifting the normal upper limit of
  411. 4 on the port number, and also enabling block reads and writes, which are more
  412. efficient (particularly in multitasking environments) than BIOS single-
  413. character I/O.  Here again, speed and flow control must be set in the fossil
  414. driver itself, and can't be set from Kermit.  Using this method, it is not
  415. possible to test whether a Fossil driver is really active.  If a call fails in
  416. a common way because no driver is present, Kermit declares the port to be
  417. inoperative and quits the connection.  Thus there is a user-assumed risk in
  418. SET PORT FOSSIL, since we can't check first to be sure a proper driver is
  419. present.  If in doubt go back to SET PORT BIOSn which are normal, safe
  420. (probably slower) BIOS serial port channels.  Note: Kermit supports only a
  421. single Fossil connection at time.
  422.  
  423. Another note: although Kermit supports the fossil driver specification, this
  424. does not mean that we necessarily support particular fossil drivers, or can
  425. provide help about them.  Some fossil drivers might have bugs; these are the
  426. responsibility of the fossil driver authors.  One such bug, reportedly, is
  427. that a certain fossil driver will stop working after its first connection has
  428. been closed.  The workaround is to fully reinitialize the driver by giving
  429. Kermit another SET PORT FOSSIL n command.
  430.  
  431. Applications that use fossil drivers, such as BBS packages, differ in their
  432. expectations about what "external protocols" (such as Kermit, when invoked
  433. from another program) should do with the fossil driver; some expect the 
  434. external application to "deinitialize" the fossil driver (fossil function
  435. 05h), others expect it not to do so.  MS-DOS Kermit will behave either way,
  436. according to:
  437.  
  438. SET FOSSIL DISABLE-ON-CLOSE { ON, OFF }
  439.   When OFF (the default), Kermit does NOT deinitialize the fossil driver
  440.   upon exit.  When ON, Kermit issues fossil function 05h to deinitialize
  441.   the fossil driver.
  442.  
  443. If you experience problems with your software after invoking Kermit on it
  444. as an external protocol on a fossil port, then try changing this setting.
  445.  
  446. (2.2) ISDN
  447.  
  448. Integrated Services Digital Network (ISDN) boards serve ISDN digital
  449. telephones, which provide (among other things) 64Kbps data transmission.  ISDN
  450. boards are not serial boards, and therefore require special drivers.  There is
  451. a Common Application Programming Interface (CAPI) for ISDN boards, defined by
  452. German Telecom and German ISDN manufacturers.  CAPI drivers are supplied by
  453. ISDN board manufacturers.  MS-DOS Kermit 3.14 does not support CAPI directly,
  454. but shims exist that allow Kermit to be used with ISDN anyway, by disguising
  455. CAPI as the Fossil, Int 14, or Packet Driver interface, all of which are
  456. supported by Kermit.  Examples:
  457.  
  458.  . cFos is a shareware fossil driver for CAPI, written by Martin Winkler &
  459.    Christoph Lueders of Bonn, Germany.  It is available via anonymous ftp
  460.    from ftp.dfv.rwth-aachen.de:/pub/network/isdn/cfos, or by dialup to the
  461.    Zaphods BBS in Bonn: +49 228 9111041.  It supports both the Fossil and
  462.    Int 14 interfaces, and presents ISDN controls in the form of Hayes-like
  463.    AT commands.
  464.  
  465.  . PAPI is free software, GNU Public License, providing a SLIP-class packet
  466.    driver interface to a CAPI driver, written by Dietmar Friede, Friede
  467.    Consulting, Munich (Muenchen), German <capi@friede.de>.  Available via
  468.    ftpmail to ftp.germany.eu.net (send email to archive-server@germany.eu.net
  469.    containing the word "help"), or by ftp directly from
  470.    ftp.dfv.rwth-aachen.de.
  471.  
  472. (2.3) HAYES ESP
  473.  
  474. The Hayes ESP serial board emulates 16550A UARTs, but with more buffering and
  475. several specialized modes of operation.  Kermit works fine with the ESP board
  476. when the board is running in 16550A emulation mode, and when the Hayes Windows
  477. ESP drivers are active.  In this mode no drivers are needed at DOS level; just
  478. run the Hayes DOSSETUP.EXE program to define serial port address and IRQ
  479. values.  If those port values differ from IBM conventions, or refer to COM3 or
  480. COM4 then use SET COMn <port> <irq> (n=1-4) to inform Kermit of the board's
  481. operating values.  A dual-port ESP board has been tested successfully in DOS
  482. and Windows, with and without the extra Windows drivers, with MS-DOS Kermit
  483. 3.13 and 3.14.
  484.  
  485. (3) FILE TRANSFER RECOVERY
  486.  
  487. Version 3.14 adds the ability to continue interrupted binary-mode file
  488. transfers, and also allows you to "manually" recover from certain other types
  489. of failures.
  490.  
  491. The new RESEND command lets you continue a file transfer from the point where
  492. it was interrupted (for example, because of a telephone disconnection) without
  493. having to retransmit the data that was already successfully transmitted.
  494. Before seeing how to use this feature, let's look at the restrictions:
  495.  
  496.  1. Recovery works only for binary-mode transfers between computers that have
  497.     a Kermit program that support this feature.  It can not be used with
  498.     text-mode transfers.  In other words, if you want to be able to use the
  499.     recovery feature, you must tell the file sender to:
  500.  
  501.       SET FILE TYPE BINARY
  502.  
  503.  2. The original transfer must have been done with SET FILE INCOMPLETE KEEP
  504.     in effect at the receiver, meaning that incompletely received files are
  505.     kept rather than discarded.     In MS-DOS Kermit 3.14 and C-Kermit 5A(190),
  506.     this is the default, which is a change from previous releases.
  507.  
  508.  3. Recovery only works between two Kermit programs that have this capability
  509.     and negotiate it successfully.  As of this writing, these programs include
  510.     MS-DOS Kermit 3.14 and later for DOS and Windows and C-Kermit 5A(190) and
  511.     later for UNIX, VMS, OS/2, AOS/VS, Stratus VOS, and the Commodore Amiga.
  512.  
  513.  4. You should never use SET FILE COLLISION RENAME if you intend to use the
  514.     recovery feature, since that will change the partially-transmitted file's
  515.     name and Kermit won't be able to locate it during recovery operations or,
  516.     worse, will append the incoming data to the wrong file.
  517.  
  518. To recover a failed upload: reestablish the connection, access the same
  519. account and directory to which you were sending the file previously, start
  520. Kermit there and put it in RECEIVE or SERVER mode.  Then escape back to MS-DOS
  521. Kermit and give it these commands:
  522.  
  523.   SET FILE TYPE BINARY
  524.   RESEND filename [ as-name ]
  525.  
  526. The RESEND command should use exactly the same names as the SEND command that
  527. was interrupted.  When you RESEND a file, the receiving Kermit, upon getting
  528. the filename, looks up the file and gets its size; it sends the size back to
  529. the sending Kermit, and the sending Kermit resumes sending from that point;
  530. the receiving Kermit appends incoming material to the partial file rather than
  531. creating a new file.
  532.  
  533. You can recover a failed download in the same way.  Just make sure you are
  534. accessing the same directories as before, and the files have (or are being
  535. sent with) the same names as before.
  536.  
  537. When a file is being resent, the file file receiver ignores its SET FILE
  538. COLLISION setting; thus you need not change your FILE COLLISION setting when
  539. RESENDing, and you will not find it altered afterwards either.
  540.  
  541. If the RESEND command is used, but a partial file of the same name does not
  542. exist on the receiving end, RESEND behaves just like SEND -- it sends the
  543. whole file.  If the file on the receiving is the same size as the sender's
  544. copy (or larger), RESEND does nothing; both files are left alone.  These
  545. properties let you resume the interrupted transfer of a group of files.
  546. Suppose you had originally done this:
  547.  
  548.   Receiver:                Sender:
  549.    SET FILE INCOMPLETE KEEP         SET FILE TYPE BINARY
  550.    RECEIVE (or SERVER)             SEND *.ZIP
  551.  
  552. and the phone hung up in the middle of one of the ZIP files.  Just reestablish
  553. the connection, and recover this way:
  554.  
  555.   Receiver:                Sender:
  556.    SET FILE INCOMPLETE KEEP         SET FILE TYPE BINARY
  557.    RECEIVE (or SERVER)             RESEND *.ZIP
  558.  
  559. The files that were already sent are skipped, the file that was partially sent
  560. is recovered, and the files that were not sent yet are sent.
  561.  
  562. For the recovery feature feature to be useful at all, the default for SET FILE
  563. INCOMPLETE was changed from DISCARD to KEEP when the RESEND command was added
  564. in version 3.14.  Otherwise an interrupted transfer would leave no partial
  565. file behind unless you had remembered to change the default.  But now you have
  566. to pay closer attention to Kermit's messages to know whether a transfer
  567. failed; previously, if it failed, the file would not show up on the receiving
  568. end at all; now, you'll get a partial file which could easily be mistaken for
  569. a complete file unless you change the default back to DISCARD or read the
  570. screen messages, or keep a transaction log.
  571.  
  572. Using RESEND, you can write a script program to really, REALLY send a file.
  573. Here is a sample, in which we dial up a UNIX computer and send the MS-DOS
  574. Kermit distribution ZIP file.  This script program runs under C-Kermit 5A(190)
  575. or later on OS/2 (and with a change in the dialout device name, under UNIX
  576. too), and under MS-DOS Kermit 3.14 or later.  If the transfer fails, we
  577. reestablish the connection and restart the transfer from the point of failure,
  578. as many times as it takes to get the file across.
  579.  
  580. ---(cut here)---
  581. ask \%u { username: }
  582. askq \%p { \%u's password: }
  583.  
  584. ; Settings for entire session.
  585. ;
  586. define \%s 20          ; Seconds to pause between each try
  587. define \%n 7654321      ; Phone number
  588. def _modem hayes      ; Modem type
  589. set port com1          ; Communication port
  590. set speed 19200          ; Speed
  591.  
  592. set file type binary      ; File transfer mode must be binary
  593. set input timeout quit      ; This is just to keep the script program short...
  594. set count 50          ; Try up to 50 times to send the file
  595. goto nomsg          ; Skip message the first time
  596.  
  597. :LOOP              ; Come here to redial
  598. hangup              ; Give the phone a rest
  599. echo CONNECTION BROKEN.
  600. echo Pausing for \%s seconds...
  601. sleep \%s
  602. Echo redialing...
  603.  
  604. :NOMSG
  605. dial \%n          ; Dial the phone number
  606. if fail goto AGAIN      ; Keep trying...
  607. output \13          ; System answered, send a carriage return
  608. input 15 login:          ; Get login prompt
  609. output \%u\13          ; Send user ID
  610. input 8 Password:      ; Get password prompt
  611. output \%p\13          ; Send password
  612. input 60 {$ }          ; Get system prompt
  613. cd \budget          ; CD to desired local source directory
  614. output cd budget\13      ; and remote destination directory
  615. input 8 {$ }          ; Get system prompt
  616. out kermit -r\13      ; kermit -r(eceive) on remote system
  617. input 10 KERMIT READY      ; Wait for READY message
  618. pause 1              ; Plus a second for safety
  619. resend fy9495.wks      ; RESEND the file
  620. if success goto done      ; Success means file is completely transferred
  621.  
  622. :AGAIN
  623. if count goto LOOP      ; Otherwise, try again.
  624. Stop 1 Too many tries.      ; Too many tries, give up.
  625.  
  626. :DONE
  627. echo File transferred OK  ; Success, give message
  628. output exit\13          ; Log out from remote computer
  629. pause 5              ; Give it time...
  630. hangup              ; Hang up
  631. stop 0 Script succeeded      ; Finished, the end.
  632. ---(cut here)---
  633.  
  634. Manual Recovery: The PSEND Command
  635.  
  636. The PSEND ("partial send") command is like the SEND command, but it begins
  637. sending from a specified position in the file:
  638.  
  639.   PSEND <filename> <position> [ <as-name> ]
  640.  
  641. <filename> must refer to a single file, not a file group.  <position> is the
  642. byte position after which to begin sending; 0 means the beginning, 1000 means
  643. the 1001st byte.  As with the SEND command, the file is sent under its own
  644. name unless you specify an "as-name".  Unlike RESEND, PSEND can be used for
  645. both text and binary transfers; no special capabilities are required of the
  646. Kermit program on the receiving end.  The PSEND command can be viewed as a
  647. "do-it-yourself" recovery feature to be used when the other Kermit program
  648. does not support recovery, or when a text file transfer was interrupted.
  649.  
  650. For example, suppose you were sending a file called OOFA when the connection
  651. hung up, and that the receiving Kermit program had been instructed to keep
  652. incompletely received files (SET FILE INCOMPLETE KEEP).  If the transfer was
  653. in binary mode, you could note the length of the partial file on the receiving
  654. end; let's say it was 123456.  Then tell the file receiver to:
  655.  
  656.   SET FILE COLLISION APPEND
  657.   RECEIVE
  658.  
  659. and tell the sender to:
  660.  
  661.   SET FILE TYPE BINARY
  662.   PSEND OOFA 123456
  663.  
  664. If the receiver does not support SET FILE COLLISION APPEND, you could just use
  665. PSEND to create a new file:
  666.  
  667.   SET FILE TYPE BINARY
  668.   PSEND OOFA 123456 OOFA.NEW
  669.  
  670. and then, after the transfer is complete, join the two pieces together on the
  671. receiving end, using a system command or utility.
  672.  
  673. If the file transfer was in text mode, you would could use the same method IF
  674. the other computer also used CRLF for line termination (like DOS does), but if
  675. the other computer was (say) UNIX, which uses LF for line termination, the
  676. sizes would be different, and you would have to figure out the correspondence
  677. by inspection.
  678.  
  679. (4) FASTER METHOD FOR TRANSFERRING BINARY FILES
  680.  
  681. This feature (v3.13) lets you improve MS-DOS Kermit's file transfer
  682. performance on connections you know are transparent to a certain set of
  683. control characters.  It lets you tell MS-DOS Kermit exactly which control
  684. characters need to be prefixed and which ones do not when it is sending files.
  685.  
  686. SET CONTROL-CHARACTER UNPREFIXED { <code>..., ALL }
  687.   Says that you think it is safe to include the control character represented
  688.   by <code> without prefixing in packets which MS-DOS Kermit sends.  The
  689.   <code> is the numeric ASCII code for a control character, 0-31, 127-159, or
  690.   255. For example, linefeed (code 10) is normally sent as two printable
  691.   characters, #J.  SET CONTROL UNPREFIXED 10 lets linefeed be sent literally.
  692.   You can include the word ALL to unprefix all control characters, or you can
  693.   specify a list of one or more numeric values, separated by spaces.
  694.   Examples:
  695.  
  696.      SET CONTROL UNPREFIXED 31         ; A single control character
  697.      SET CONTROL UNPREFIXED 2 4 5 18 20     ; A list of control characters
  698.      SET CONTROL UNPREFIXED ALL         ; All control characters
  699.  
  700.   If you can safely declare a lot of control characters to be UNPREFIXED, you
  701.   can send binary files (particularly precompressed ones) up to about 20-25
  702.   percent faster.  If you include a control character in this category that
  703.   causes trouble, however, the transfer will fail, so experimentation is
  704.   necessary.  NOTE: This command will not allow you to "unprefix" the
  705.   following characters if MS-DOS Kermit's current FLOW-CONTROL setting is
  706.   XON/XOFF: 17, 19, 145, 147; nor will it let you unprefix characters 127 or
  707.   255 on a TELNET (SET PORT TCP/IP) connection.
  708.  
  709. SET CONTROL-CHARACTER PREFIXED { <code>..., ALL }
  710.   Says that the given control character(s) must be prefixed in Kermit packets.
  711.   By default, all control characters, 0-31, 127-159, and 255, are prefixed.
  712.   NOTE: when sending files *to* MS-DOS Kermit, you must SET CONTROL PREFIXED
  713.   (at least) 1 129 (assuming the start-of-packet character is Ctrl-A).
  714.  
  715. SHOW CONTROL-PREFIXING
  716.   Displays the code values of the control characters that are currently
  717.   UNPREFIXED.
  718.  
  719. The purpose of the SET CONTROL UNPREFIX command is to UNILATERALLY configure
  720. MS-DOS Kermit to skip prefixing and printable encoding of selected control
  721. characters to achieve higher performance when sending files.  This feature
  722. takes advantage of the fact that most (not all) Kermit programs will accept
  723. control characters within packet data-fields literally, provided they get
  724. through at all, and provided they do not have a special meaning to the
  725. receiving Kermit program (such as, in many cases, the packet-start and -end
  726. characters).
  727.  
  728. There is no protocol negotiation between the two Kermit programs to determine
  729. a "safe set" of control characters, and in fact any such negotiation would be
  730. pointless because in most cases the two Kermit programs don't have all the
  731. needed information.  For example, there might be a terminal server or PAD
  732. between them that is sensitive to a particular control character, even though
  733. the two Kermit programs are not.
  734.  
  735. If you include in your SET CONTROL UNPREFIXED list one or more control
  736. characters that are unsafe, any of several things might happen:
  737.  
  738.  1. Transfer of any file containing these characters will fail.
  739.  
  740.  2. The receiving Kermit program might be interrupted or halted.
  741.  
  742.  3. Your connection might become hung, stuck, or broken.  This includes the
  743.     situation where a control character causes a PAD, terminal server, or
  744.     similar device to change modes -- e.g. to go from online mode to command
  745.     mode.
  746.  
  747. The set of safe control characters depends on the two Kermit programs, their
  748. settings, the host operating systems and their settings, the communication and
  749. flow control methods, and all the devices, drivers, and protocols that lie
  750. between the two Kermit programs.  You must be willing to experiment in order
  751. to achieve the optimal safe set.
  752.  
  753. Under ideal conditions (totally transparent and clean serial connection, no
  754. Xon/Xoff, MS-DOS Kermit is not in SERVER mode, and C-Kermit has been told to
  755. SET TRANSFER CANCELLATION OFF), the minimum set of control characters that
  756. needs to be prefixed is:
  757.  
  758.   SENDER      RECEIVER       PREFIXED CONTROLS
  759.    MS-DOS Kermit   MS-DOS Kermit    1, 129
  760.    MS-DOS Kermit   C-Kermit        0
  761.    C-Kermit       MS-DOS Kermit    0, 1, 129
  762.    C-Kermit       C-Kermit        0
  763.  
  764. For example, to set up C-Kermit to unprefix the minimum set of prefixed
  765. control characters for sending files to MS-DOS Kermit, tell C-Kermit to:
  766.  
  767.   SET FLOW NONE           ; Or SET FLOW RTS/CTS
  768.   SET CONTROL UNPREFIX ALL
  769.   SET CONTROL PREFIX 1 129 ; C-Kermit always prefixes character 0
  770.  
  771. When the mininum set doesn't work, use the SET CONTROL PREFIX command to
  772. prefix additional control characters.  Some experimentation will be required.
  773. Here is the list of control characters that are apt to cause trouble and
  774. therefore likely candidates for prefixing:
  775.  
  776. set con p 0   ; Ctrl-@ = NUL, internal string terminator in C-Kermit.
  777.           ;         Also, often discarded as padding.
  778. set con p 1   ; Ctrl-A = Packet-start character.
  779. set con p 3   ; Ctrl-C = Packet breakout for remote-mode C-Kermit,
  780.           ;         packet breakout for server-mode MS-DOS Kermit,
  781.           ;         likely to cause interruptions on other systems.
  782. set con p 13  ; Ctrl-M = Carriage return, always prefix on TELNET connections.
  783. set con p 14  ; Ctrl-N = Shift Out
  784. set con p 15  ; Ctrl-O = Shift In
  785. set con p 16  ; Ctrl-P = Commonly-used X.25/X.3 PAD escape character
  786. set con p 17  ; Ctrl-Q = XON, must be prefixed with Xon/Xoff flow control
  787. set con p 19  ; Ctrl-S = XOFF, must be prefixed with Xon/Xoff flow control
  788. set con p 27  ; Ctrl-[ = ESC, prefix if going through some kind of ANSI device
  789. set con p 28  ; Ctrl-\ = CONNECT-mode escape for C-Kermit
  790. set con p 29  ; Ctrl-] = CONNECT-mode escape for TELNET
  791. set con p 30  ; Ctrl-^ = Cisco terminal server escape.
  792. set con p 127 ; Ctrl-? = DEL, often discarded as padding.
  793.           ;         Also becomes TELNET IAC if parity bit is added.
  794. set con p 128 ; = NUL     + 128
  795. set con p 129 ; = Ctrl-A + 128
  796. set con p 131 ; = Ctrl-C + 128
  797. set con p 141 ; = CR + 128
  798. set con p 145 ; = XON + 128
  799. set con p 147 ; = XOFF + 128
  800. set con p 255 ; 255 = TELNET IAC, use P on TCP/IP TELNET connections
  801.  
  802. Notes:
  803.  
  804.  . If MS-DOS Kermit has initiated a TCP/IP connection, prefixing of 255
  805.    (TELNET IAC) is forced automatically.
  806.  
  807.  . Kermit will not let you unprefix XON (17), XOFF (19), XON+128 (145), or
  808.    XOFF+128 (147) if its FLOW-CONTROL setting is XON/XOFF.  If you want to
  809.    unprefix these, make sure *both* Kermits have been told to SET FLOW NONE
  810.    (or RTS/CTS), and that XON/XOFF flow control is not in effect anywhere
  811.    along the communication path between the two Kermits.
  812.  
  813.  . When sending files to C-Kermit 5A(189) and earlier, you should normally SET
  814.    CONTROL PREFIX 3 and SET CONTROL PREFIX 131, because C-Kermit (by default)
  815.    takes two Ctrl-C's (3 or 131) in a row as cancellation of packet-mode.
  816.    However, you can UNPREFIX these characters if you know your file does not
  817.    contain two Ctrl-C's in a row, or if you tell C-Kermit to SET TRANSFER
  818.    CANCELLATION OFF, or SET TRANSFER CANCELLATION ON <code> <number> when you
  819.    know that <number> copies of <code> do not occur in a row in the data.
  820.    In C-Kermit 5A(190) and later, this precaution should not be necessary
  821.    (see C-Kermit 5A(190) update documentation).
  822.  
  823. (5) OTHER FILE TRANSFER IMPROVEMENTS
  824.  
  825.  . More SET FILE COLLISION options, that goven what happens when an incoming
  826.    file has the same name as an existing file:
  827.  
  828.    APPEND
  829.      Append the incoming file to the existing file.
  830.    BACKUP (default)
  831.      Rename the EXISTING (old) file.
  832.    RENAME
  833.      Rename the incoming (new) file.
  834.    OVERWRITE
  835.      Overwrite the existing file.
  836.    DISCARD
  837.      Refuse to accept the incoming file.
  838.    UPDATE
  839.      Refuse to accept the incoming file if its creation date is earlier
  840.      than that of the existing file -- works only if the other Kermit
  841.      supplies this information.
  842.  
  843.  . Bigger file transfer window sizes and packet buffers, depending on
  844.    available memory.  Packets may be up to 9024 bytes in length, and the
  845.    window can contain up to 31 packets of the maximum length (32 in version
  846.    3.14).  Use the regular commands to select these sizes: SET RECEIVE
  847.    PACKET-LENGTH and SET WINDOW.  Also see the Memory Management section of
  848.    KERMIT.BWR (MSKERM.BWR).
  849.  
  850.  . Locking shifts for efficient transfer of 8-bit text on 7-bit connections
  851.    (version 3.12, important for Cyrillic, Hebrew, and Japanese text):
  852.  
  853.    SET TRANSFER LOCKING-SHIFT { OFF, ON, FORCED }
  854.      The default setting is ON, meaning that MS-DOS Kermit will attempt to
  855.      negotiate use of this feature with the other Kermit if the parity is not
  856.      NONE, in which case locking shifts will be used if the other Kermit
  857.      agrees (C-Kermit 5A and IBM Mainframe Kermit 4.2.4 will agree, others
  858.      will not).     OFF means don't negotiate locking shifts, and FORCED means to
  859.      use them regardless of negotiations.
  860.  
  861.  . Dynamically varying packet length to adapt automatically to changing noise
  862.    conditions.  This happens automatically when MS-DOS Kermit is sending files.
  863.    No commands are needed.  If packets are damaged by noise or timeouts occur,
  864.    MS-DOS Kermit cuts the packet length in half and then gradually grows it
  865.    back to the maximum negotiated size as (if) transmission errors subside.
  866.  
  867.  . A file transfer "thermometer" (3.13), improved statistics reporting
  868.    including, for serial connections only, the efficiency of the transfer
  869.    expressed as a percent, the ratio of actual file characters transferred per
  870.    second to the connection speed.
  871.  
  872.    SET REPEAT { COUNTS {ON, OFF}, PREFIX <character>}
  873.      Turns repeat-count prefixing (run-length encoding) on and off, and
  874.      lets you select the repeat-count prefix.
  875.  
  876.  . Control over pathnames (3.14):
  877.  
  878.    SET { SEND, RECEIVE } PATHNAMES { ON, OFF }
  879.      RECEIVE PATHNAMES OFF is useful on BBSs or other unattended systems to
  880.      restrict incoming files to the current directory.  SEND is OFF and
  881.      RECEIVE is ON by default (except in minimal-size "Kermit Lite", which
  882.      is designed for use as an external Kermit protocol, where both are OFF)
  883.      by default.  SEND PATHNAMES, even when ON, never includes the disk
  884.      letter.  RECEIVE PATHNAMES ON expects DOS syntax; does not result in
  885.      creation of directories; OFF can be overridden by "RECEIVE filename".
  886.  
  887.  . File Lists (3.14):
  888.  
  889.    SEND @filename
  890.      If the SEND command is given an "indirect file name" (i.e. a filename
  891.      that starts with an at-sign (@)), it will read the name(s) of the
  892.      file(s) to send from the given file.  This provides a convenient method
  893.      for sending an arbitrary group of files in a single operation.  The
  894.      list of filenames can contain one filename per line, or it can contain
  895.      a comma-separated list of names, or any mixture of the two.  Filenames
  896.      can contain disk letters, directory names, and DOS-format wildcards.
  897.  
  898. (6) IMPROVED CLIENT/SERVER OPERATION
  899.  
  900. "What Am I" protocol (3.14) allows the client in a Kermit client/server
  901. relationship to announce the transfer mode (text or binary) and the filename
  902. conversion method (converted, literal) to the server.  In other words, in a
  903. client/server connection, these items are now controlled by the CLIENT rather
  904. than by the FILE SENDER, which is hopefully more what one would expect.
  905.  
  906. Various REMOTE SET commands are now effective simultaneously at the client
  907. and the server, e.g.:
  908.  
  909.   REMOTE SET FILE TYPE { TEXT, BINARY }
  910.  
  911. In version 3.14 and C-Kermit 5A(190), it is possible for the Kermit client
  912. to set and query variables in the Kermit server:
  913.  
  914. REMOTE ASSIGN <variable name> <value>
  915.   The length of the name plus the value must be less than 510 bytes.  Syntax
  916.   for the variable name is that of the other Kermit, and the variable is
  917.   \%letter or a macro name (a "user" class in remote query).  The value is
  918.   interpreted fully by the local Kermit before transmission; protect remote
  919.   variable names with double backslashes.  Example:
  920.  
  921.     remote assign \%c sending time is \v(time) var time is \\v(time).
  922.     remote query user \%c
  923.  
  924.   yields:
  925.  
  926.     sending time is 09:05:00 var time is \v(time)
  927.  
  928. REMOTE QUERY {KERMIT, SYSTEM, USER} <name>
  929.   Asks the server to send the value of the given type of variable that has the
  930.   specified name.  Responses are also recorded in \v(query) if they are short
  931.   enough to fit within one Kermit packet.  Longer results will be displayed on
  932.   the screen but not in \v(query).  KERMIT-class objects are \v(..) items, not
  933.   settable by the user.     SYSTEM-class objects are in the operating system's
  934.   enviroment (PATH and similar).  USER-class objects are variables and macros
  935.   creatable by the user, such as \%letter or a macro name.
  936.  
  937. ENABLE or DISABLE REMOTE ASSIGN and QUERY
  938.   Security controls for an MS-DOS Kermit server.  Defaults are ENABLE.
  939.  
  940. The status of a file transfer was changed in v3.14 to report SUCCESS if a file
  941. was rejected by the receiver because of date/time when SET FILE COLLISION
  942. UPDATE is in effect.  The rejection simply means the transmitted file is not
  943. newer than the current file so no transfer is needed.  A new bit-value, 256,
  944. is introduced into the \v(status) variable if a file transfer fails because of
  945. file attribute mismatches.
  946.  
  947. (7) IBM MAINFRAME FILE TRANSFER
  948.  
  949. "Doomsday Kermit" (DDK) techniques allow file transfer with IBM mainframes
  950. through 3270 protocol converters that do NOT support transparent mode, to be
  951. used in conjunction with IBM Mainframe Kermit's SET CONTROLLER FULLSCREEN
  952. command on VM/CMS, MVS/TSO, or CICS.  MS-DOS Kermit 3.13 or later and IBM
  953. Mainframe Kermit 4.2.3 or later required.  Commands:
  954.     
  955.   SET PARITY EVEN     ; Or whatever
  956.   SET FLOW XON/XOFF     ; Or whatever
  957.   SET SEND START 62     ; Greater-than sign
  958.   SET RECEIVE START 62     ; Ditto
  959.   SET BLOCK BLANK-FREE-2 ; New block-check type
  960.   SET HANDSHAKE NONE
  961.  
  962. BLANK-FREE-2 is a new block-check type, exactly like type 2, except encoded
  963. to never contains blanks.  Give IBM Mainframe Kermit the following commands:
  964.  
  965.   SET CONTROLLER FULL
  966.   SET SEND START 62
  967.   SET RECEIVE START 62
  968.   SET BLOCK BLANK-FREE-2
  969.   SET HANDSHAKE 0
  970.  
  971. Doomsday Kermit file transfers are not as reliable as regular Kermit protocol
  972. transfers, and they are much slower.  Use this method only as a last resort;
  973. that is, only when you can't get a transparent-mode fullscreen connection or
  974. a linemode connection to the mainframe.
  975.  
  976. (8) NEW CHARACTER-SET SUPPORT
  977.  
  978. (8.1) HP Roman8
  979.  
  980. The Hewlett Packard Roman8 character set is supported in version 3.14 as
  981. a terminal character set.
  982.  
  983. (8.2) SET TERMINAL CODE-PAGE
  984.  
  985. A command is available in version 3.13 and later to tell MS-DOS Kermit what
  986. your actual code page is, for purposes of character-set translation during
  987. terminal emulation:
  988.  
  989.   SET TERMINAL CODE-PAGE CPnnn
  990.  
  991. where nnn are digits.  This command is necessary because most PCs fail to
  992. report active code pages other than CP437 and CP850 correctly, and so Kermit
  993. generally has no way to find out when you have some other code page loaded.
  994. This command is distinct from SET FILE CHARACTER-SET, so you can select
  995. translations for terminal emulation and file transfer separately if you want
  996. to.  MS-DOS Kermit knows about the following code pages:
  997.  
  998.  Code Page  File-Xfer  Term-Emul  Comments
  999.    CP437    Y       Y      Original PC, and usually hardware, code page
  1000.    CP850    Y       Y      Multilingual West European code page
  1001.    CP852**    Y       Y      Multilingual East European code page
  1002.    CP860    Y       Y      Portuguese code page
  1003.    CP861**    Y       Y      Icelandic code page
  1004.    CP862**    Y       Y      Hebrew code page
  1005.    CP863    Y       Y      Canadian-French code page
  1006.    CP865    Y       Y      Norwegian/Danish code page
  1007.    CP866    Y       N      Cyrillic code page
  1008.  Shift-JIS*    Y*       Y***      Japanese Kanji multibyte code page = CP982
  1009.  
  1010.   * New to version 3.12
  1011.  ** New to version 3.13
  1012. *** New to version 3.14
  1013.  
  1014. Specific code pages are discussed in the following sections.  Some of them
  1015. can use (or must use) fonts supplied in the PCFONTS directory of the Kermit
  1016. diskette.  The macros that are supplied to work with these fonts assume a
  1017. screen size of 25x80.  Other screen sizes are possible; please read the
  1018. file PCFONTS\READ.ME for further information.
  1019.  
  1020. (8.3) East European Character Sets
  1021.  
  1022. Roman character sets for East European languages (Czech, Polish, Hungarian,
  1023. Romanian, etc) (version 3.13).    Commands:
  1024.  
  1025.    SET TERMINAL CHARACTER-SET LATIN2 ; ISO 8859-2 Latin Alphabet 2
  1026.    SET TRANSFER CHARACTER-SET LATIN2 ; ISO 8859-2 Latin Alphabet 2
  1027.    SET TERMINAL CODE-PAGE CP852         ; Code page 852
  1028.    SET FILE CHARACTER-SET CP852         ; Code page 852
  1029.  
  1030. MS-DOS 5.0 and later include the East European Code Page, CP852.  To use it:
  1031.  
  1032.  1. Add the following lines to your AUTOEXEC.BAT file and then reboot:
  1033.  
  1034.     C:\DOS\MODE CON: CP PREPARE=((850,,437,852) C:\DOS\EGA.CPI)
  1035.  
  1036.  4. To load the East European code page, use this DOS command:
  1037.  
  1038.     C:\DOS\MODE CON: CP SELECT=852
  1039.  
  1040. Or just use LOADFONT CP852.F16 in the Kermit diskette PCFONTS directory
  1041. (Kermit macro EFONT).
  1042.  
  1043. (8.4) The Icelandic Code Page
  1044.  
  1045. New Icelandic code page support (version 3.13).     Commands:
  1046.  
  1047.   SET TERMINAL CHARACTER-SET LATIN1 (or DEC-MCS, or whatever)
  1048.   SET TRANSFER CHARACTER-SET LATIN1
  1049.   SET TERMINAL CODE-PAGE CP861
  1050.   SET FILE CHARACTER-SET CP861
  1051.  
  1052. Use MODE CON CP PREPARE, if necessary, to install this code page.  Use MODE
  1053. CON CP SELECT=861 to load it.  Or use LOADFONT CP861.F16 in the Kermit PCFONTS
  1054. directory (IFONT macro).
  1055.  
  1056. (8.5) Cyrillic
  1057.  
  1058. Cyrillic text-file transfer has been part of Kermit since version 3.11, and is
  1059. documented in "Using MS-DOS Kermit".  For Cyrillic terminal emulation, please
  1060. refer to the READ.ME and other files in the CYRILLIC subdirectory of the
  1061. Kermit diskette, new to version 3.14.
  1062.  
  1063. (8.6) Japanese Kanji
  1064.  
  1065. MS-DOS Kermit supports conversion of multibyte Kanji character sets in both
  1066. file transfer and terminal emulation.
  1067.  
  1068. (8.6.1) Kanji File Transfer
  1069.  
  1070. The Japanese Kanji code page for PCs is CP982 (this is the FILE
  1071. CHARACTER-SET).  The Kanji code on the wire (in the file transfer packets) is
  1072. Japanese Extended UNIX Code (EUC).  For file transfer, the commands are:
  1073.  
  1074.   SET TRANSFER CHARACTER-SET JAPANESE-EUC
  1075.   SET FILE CHARACTER-SET SHIFT-JIS
  1076.  
  1077. (8.6.2) Kanji File Terminal Emulation
  1078.  
  1079. Special Japanese-model IBM PCs have Kanji fonts in firmware, allowing display
  1080. of Kanji characters in Japanese-DOS.  It is also possible to display Kanji on
  1081. USA-model IBM PCs and compatibles with VGA adapters.  In this case,
  1082. Japanese-DOS/V (not Japanese-DOS) must be used.
  1083.  
  1084. You can display Kanji even in English DOS/V if you have the Japanese font
  1085. (software) driver and Japanese (software) keyinput driver (you can even use
  1086. the 101 English keyboad).  Japanese-DOS/V is a revolutionary operating system
  1087. that opens the Japanese IBM-PC market.  Prior to DOS/V, Japanese customers had
  1088. to buy expensive special Kanji PC models that could not run English
  1089. applications.  Japanese DOS/V consists of:
  1090.  
  1091.   Baseline DOS/V
  1092.   + Japanese font driver
  1093.   + Japanese fonts
  1094.   + Japanese keyinput driver
  1095.   + Japanese dictionary
  1096.  
  1097. The Japanese font driver displays Japanese characters in VGA 640 x 480 graphic
  1098. mode, and sometimes it might conflict with English applications.  However you
  1099. can easily switch back and forth because the baseline DOS/V is the same.
  1100.  
  1101. As of v3.14, terminal emulation works in Kanji mode on Japanese DOS/V
  1102. computers when CP982 is loaded and you choose a Japanese character set with
  1103. the following command:
  1104.  
  1105.   SET TERMINAL CHARACTER-SET JIS-KANJI
  1106.  
  1107. JIS-KANJI should work for all host-based multibyte Kanji character sets; it is
  1108. the same as Japanese EUC, which is a superset of all the other Kanji sets,
  1109. such as JIS X 0208, DEC Kanji, and JIS7, and includes double-width JIS-ROMAN
  1110. in G0 and double-width JIS-KATAKANA in G2.  NOTE: In JIS-KANJI, GR points to
  1111. G3 instead of G2 (as it does in the Japanese VT382 terminal).
  1112.  
  1113. For single-width, single-byte Roman and Katakana characters, use:
  1114.  
  1115.   SET TERMINAL CHARACTER-SET { JIS-KATAKANA, JIS-ROMAN }
  1116.  
  1117. JIS-KATAKANA refers to the Katakana character set of JIS X 0201, and JIS-ROMAN
  1118. refers to the Roman character set of same standard, which is identical to
  1119. ASCII except in two positions.  JIS-ROMAN and JIS-KATAKANA can be combined
  1120. into a single 8-bit character set as follows:
  1121.  
  1122.   SET TERMINAL CHARACTER-SET JIS-ROMAN G0
  1123.   SET TERMINAL CHARACTER-SET JIS-KATAKANA G1 (or G2 or G3)
  1124.  
  1125. Because the PC local Kanji-code is Shift-JIS (CP982), TRANSPARENT can be used
  1126. if the remote Kanji code is Shift-JIS.
  1127.  
  1128. When sending characters from the keyboard (or with the TRANSMIT command), you
  1129. must first turn off the status line, because this line is used for composing
  1130. Kanji characters:
  1131.  
  1132.   SET MODE-LINE OFF
  1133.  
  1134. Then you must specify, in addition to the host character set, a shifting
  1135. method:
  1136.  
  1137.   SET TERMINAL OUTPUT-SHIFT { EUC-KANJI, DEC-KANJI, JIS7-KANJI }
  1138.  
  1139. These work as follows:
  1140.  
  1141. EUC-Kanji
  1142.   Shift-JIS Roman/ASCII  -> US-ASCII/JIS-Roman (1 byte)
  1143.   Shift-JIS Katakana     -> SS2 + JIS X 0201 (in GR) (2 bytes)
  1144.   Shift-JIS Kanji        -> JIS X 0208 (in GR) (2 bytes)
  1145.  
  1146. DEC-Kanji
  1147.   Shift-JIS Roman/ASCII  -> 1 byte US-ASCII/JIS-Roman (1 byte)
  1148.   Shift-JIS Katakana     -> JIS X 0208 Katakana (in GR) (2 bytes)
  1149.   Shift-JIS Kanji        -> JIS X 0208 Kanji (in GR) (2 bytes)
  1150.  
  1151. JIS7-Kanji
  1152.   This is not actually a shift-machanism, but rather changes the G0 character
  1153.   set between ASCII/Roman and Kanji by using ISO-2022 designation sequences.
  1154.   For Shift-JIS Katakana characters, Kermit maps to JIS X 0208 Katakana if you
  1155.   set TERMINAL CHARACTER-SET to JIS-KANJI.  On the other hand, if you SET
  1156.   TERMINAL CHARACTER-SET to JIS-KATAKANA, the Shift-In/Shift-Out mechanism is
  1157.   used.
  1158.  
  1159. For ASCII/Roman and Kanji character sets, there are several possibilities:
  1160.  
  1161. For Kanji
  1162.   Final Character
  1163.     4/0  (@)    JIS C 6226 (1978)    so-called JIS78 Kanji
  1164.     4/2  (B)    JIS X 0208 (1983)    so-called JIS83 Kanji
  1165.  
  1166. For ASCII/Roman
  1167.   Final Character
  1168.     4/2  (B)    US-ASCII
  1169.     4/10 (J)    JIS-Roman (JIS X 0201)
  1170.     4/8  (H)    This is wrong but still used in same cases, perhaps
  1171.             due to a misprint in JIS C 6228 (1975).
  1172.  
  1173. To choose one of the combinations, you can specify one of the following with
  1174. SET TERMINAL OUTPUT-SHIFT JIS7-KANJI command:
  1175.  
  1176.             Kanji desig.     ASCII/Roman desig.
  1177.     JIS83-US         <ESC> $ B        <ESC> ( B
  1178.     JIS83-Roman      <ESC> $ B        <ESC> ( J
  1179.     JIS83-75Roman    <ESC> $ B        <ESC> ( H
  1180.     JIS78-US         <ESC> $ @        <ESC> ( B
  1181.     JIS78-Roman      <ESC> $ @        <ESC> ( J
  1182.     JIS78-75Roman    <ESC> $ @        <ESC> ( H
  1183.  
  1184. For example, if your host uses JIS78-75Roman combination, use the following
  1185. command:
  1186.  
  1187.   SET TERMINAL OUTPUT-SHIFT JIS7-KANJI JIS78-75ROMAN
  1188.   
  1189. (8.7) Hebrew File Transfer and Terminal Emulation
  1190.  
  1191. Hebrew terminal emulation and file transfer were added in version 3.13.
  1192. Commands:
  1193.  
  1194.   SET TRANSFER CHARACTER-SET HEBREW
  1195.   SET FILE CHARACTER-SET CP862
  1196.   SET TERMINAL CHARACTER-SET { HEBREW-ISO, HEBREW-7 }
  1197.   SET TERMINAL DIRECTION { RIGHT-TO-LEFT, LEFT-TO-RIGHT }
  1198.   SET TERMINAL CODE-PAGE CP862
  1199.  
  1200. Version 3.14 adds a complete Hebrew support package -- keyboard mappings,
  1201. fonts, special documentation, and so on.  See the HEBREW.DOC in the HEBREW
  1202. directory for details.
  1203.  
  1204. (8.8) Character-set Translation Goal Selection
  1205.  
  1206. SET TRANSFER TRANSLATION { READABLE, INVERTIBLE }
  1207.   Default is READABLE. INVERTIBLE attempts to use code points as much in
  1208.   common between the transfer and file character sets as possible, with the
  1209.   transfer character set having priority.  Thus INVERTIBLE can create code
  1210.   points which do not display correctly on the destination machine but yield
  1211.   the closest match when a file is sent back to the originator.
  1212.  
  1213. (8.9) Terminal-to-Host Keyboard Character Shifting
  1214.  
  1215. SET TERMINAL OUTPUT-SHIFT { NONE, AUTOMATIC, SI/SO, SS2, SS3, JIS7, EUC }
  1216.   Allows you to type 8-bit characters on a 7-bit terminal connection.
  1217.   MS-DOS Kermit supplies the selected type of shifting:
  1218.  
  1219.   NONE    - (Default) No shifting
  1220.   SI/SO - Shift-In Shift-Out around each 8-bit character (GR = G1)
  1221.   SS2    - Single-Shift 2 before each 8-bit character (GR = G2)
  1222.   SS3    - Single-Shift 3 before each 8-bit character (GR = G3)
  1223.   AUTO    - Shift type depends on current character set GR assignment     
  1224.   JIS7    - For sending JIS7-coded Kanji
  1225.   EUC    - For sending EUC-coded Kanji
  1226.  
  1227. (8.10) CHINESE
  1228.  
  1229. There is nothing new here except for this explanation, courtesy of Ching Mo
  1230. Chang of Washington State University.
  1231.  
  1232. MS-DOS Kermit may be used on regular IBM PCs and compatibles equipped with
  1233. regular USA keyboard and VGA video adapter, running at least the following
  1234. Chinese versions of DOS (both of which are available via anonymous ftp as
  1235. indicated):
  1236.  
  1237.  . KCDOS - Big5 (ROC) encoding.  Host cnd.org, /pub/software/dos/chinese-sys.
  1238.  . ZWDOS - GB 2312-80 (PRC) encoding.  Host cnd.org, /pub/software/dos/ZWDOS.
  1239.  
  1240. The two encodings correspond to the two major encodings used on host computers
  1241. and services.  So you would run the appropriate DOS version, and then simply
  1242. tell Kermit to:
  1243.  
  1244.   set parity none
  1245.   set terminal bytesize 8
  1246.   set terminal character-set transparent
  1247.  
  1248. This allows Chinese characters to be viewed, typed, and transmitted during
  1249. terminal emulation.  Input is according to the input method supplied in the
  1250. particular version of DOS.
  1251.  
  1252. (9) CONNECT-MODE STATUS LINE AND POPUP HELP SCREENS
  1253.  
  1254. In version 3.14, the status line was changed to say:
  1255.  
  1256.  Esc:Alt-x help:Alt-h <host/port-info> bp1 echo:xxx <term> ....
  1257.  
  1258. This means you should use Alt-x to escape back to the prompt.  The old method
  1259. (the CONNECT-mode escape character, normally Ctrl-], followed by the letter C)
  1260. still works too.  Alt-h pops up a help screen listing the special characters.
  1261.  
  1262.   WARNING: If you remap the special characters, the status line and
  1263.   popup help screens will not know about it, so it is best not to do
  1264.   this, particularly with \Kexit (Alt-x) and \Khelp (Alt-h).
  1265.  
  1266. In v3.14, if you type the escape character, a help screen pops up
  1267. automatically so you will always know what to do next.
  1268.  
  1269. In the status line, "bp1" replaces the "parity" designation, which took up too
  1270. much space.  "b" is the character size, 7 or 8 bits (7 if Kermit's PARITY is
  1271. not NONE *or* if TERMINAL BYTESIZE is 7); "p" is the parity (n, e, o, m, s =
  1272. None, Even, Odd, Mark, or Space), and "1" means 1 stop bit (this can't be
  1273. changed, but we display it anyway).  Example:
  1274.  
  1275.  Esc:Alt-x help:Alt-h COM1 19200 7n1 echo:rem VT320 ....
  1276.  
  1277. The four dots represent the VT100 keyboard LEDs.
  1278.  
  1279. (10) THE APC ESCAPE SEQUENCE
  1280.  
  1281. ...For Auto-Upload, Auto-Download, Auto-Anything-Else...
  1282.  
  1283. The handling of the CSI ? 34 h / l escape sequences by the VT220 and VT320
  1284. terminal emulators changed between versions 3.12 and 3.13 in order to support
  1285. Hebrew VT220/320/420 terminal emulation, and because DEC software such as
  1286. DECforms expects to use these sequences to control screen-writing direction.
  1287.  
  1288. Old way (described on pages 180-181 of "Using MS-DOS Kermit"): CSI ? 34 h / l
  1289. invoked the TERMINALR and TERMINALS macros, if you had them defined.  This
  1290. required each Kermit user to define them, for example in their MSCUSTOM.INI
  1291. files, a big management problem for large user communities.
  1292.  
  1293. New way: CSI ? 34 h / l controls screen-writing direction, left-to-right or
  1294. right-to-left (for Hebrew and Arabic), as it does on real Hebrew-model VT
  1295. terminals.
  1296.  
  1297. To replace the TERMINALR/TERMINALS function, MS-DOS Kermit 3.13 and later
  1298. support the Application Program Command (APC) escape sequence, which is
  1299. accepted by Kermit's VT emulators, VT100 and above:
  1300.  
  1301.   APC <string> ST
  1302.  
  1303. In the 7-bit environment, APC is ESC _ and ST (string terminator) is ESC \.
  1304. In the 8-bit environment, APC is decimal 159 and ST is 156 decimal.  The
  1305. <string> can be any MS-DOS Kermit command or list of commands, separated by
  1306. commas, and can be up to 1024 bytes in length.    Upon receipt of this escape
  1307. sequence, MS-DOS Kermit executes the command(s) in the string and then
  1308. automatically resumes CONNECT mode.
  1309.  
  1310.   NOTE: In this respect, APC differs from the old TERMINALR/TERMINALS
  1311.   mechanism, which did NOT automatically re-enter CONNECT mode.     Thus, if
  1312.   you are recycling your TERMINALR/TERMINALS macros for APC use, be sure
  1313.   to remove the ", connect" from the end of their definitions, or else you
  1314.   will have to escape back twice the next time you want the MS-Kermit> prompt.
  1315.  
  1316. For safety, the APC mechanism is disabled unless you say otherwise.  This
  1317. is controlled by the command:
  1318.  
  1319.   SET TERMINAL APC { ON, OFF, UNCHECKED }
  1320.  
  1321. OFF (the default) means Kermit will not execute any commands and will ignore
  1322. APCs.  ON means that Kermit will execute only commands that are relatively
  1323. safe.  UNCHECKED means Kermit will execute ANY commands sent via APC,
  1324. including commands that might delete your files, etc.  UNCHECKED is required
  1325. for RUN, i.e. to run DOS commands or external programs.  Use UNCHECKED at your
  1326. own risk.
  1327.  
  1328. APC is much more flexible than the old TERMINALS/TERMINALR mechanism, and can
  1329. be used for any purpose at all.     For example, it can be used to configure
  1330. MS-DOS Kermit for use with a particular host or application by sending the
  1331. appropriate list of SET commands: communication parameters like parity,
  1332. protocol parameters like packet-length and window size, key mappings, etc.
  1333.  
  1334. It can also be used to initiate file transfers automatically from the host
  1335. without having to escape back to MS-DOS Kermit.     Here's an example you can use
  1336. with C-Kermit 5A.  In your C-Kermit 5A customization file (.mykermrc or
  1337. CKERMOD.INI), add commands like this:
  1338.  
  1339.   define autosend set delay 0, apc receive, send \%1 \%2, statistics
  1340.   define autoreceive apc {send \%1 \%2}, receive, statistics
  1341.  
  1342. The APC command is new to C-Kermit 5A(189); if you have an earlier release of
  1343. C-Kermit you can define APC as a macro:
  1344.  
  1345.   define apc output \27_\%1\27\92
  1346.  
  1347. You can set up similar procedures with IBM mainframe Kermit, e.g. in VM/CMS by
  1348. stacking commands and using XECHO to emit the escape sequences.
  1349.  
  1350. You can expand these commands to handle text and binary mode if you want to:
  1351.  
  1352.   ; Text transfers
  1353.   define tsend set del 0, set file type text, apc receive, send \%1, stat
  1354.   define treceive apc {set fil typ text, send \%1 \%2}, stat
  1355.   ;
  1356.   ; Binary transfers
  1357.   define bsend set del 0, set file type binary, apc receive, send \%1, stat
  1358.   define breceive apc {set fil typ binary, send \%1 \%2}, stat
  1359.  
  1360. Use your imagination, the possibilities are endless!
  1361.  
  1362. (11) VT320 TERMINAL EMULATION
  1363.  
  1364. The following features added in v3.14:
  1365.  
  1366. Select character attribute ; CSI Ps " q
  1367.   Ps - 0 or 2, erasable.
  1368.   PS - 1, not erasable.
  1369.  
  1370. Selective erase in display ; CSI ? Ps J
  1371.   Ps - 0, cursor to end (default).
  1372.   Ps - 1, beginning to cursor.
  1373.   Ps - 2, complete display.
  1374.  
  1375. Selective erase in line       ; CSI ? Ps K
  1376.   Ps - 0, cursor to end (default).
  1377.   Ps - 1, beginning to cursor.
  1378.  
  1379. (12) ANSI TERMINAL EMULATION
  1380.  
  1381. "ANSI" terminal emulation, useful primarily for accessing BBSs, is available
  1382. as of version 3.14 via the command:
  1383.  
  1384.   SET TERMINAL TYPE ANSI
  1385.  
  1386. ANSI emulation is similar to VT100 emulation, but with host-controlled colors
  1387. and using 8-bit IBM code-page 437 characters for line and box drawing, plus
  1388. some unique escape sequences for cursor save/restore, and different
  1389. interpretation of several other escape sequences used by the VT100.
  1390.  
  1391. Terminal screen colors are automatically set to black on white, TERMINAL
  1392. BYTESIZE is automatically set to 8, TERMINAL CHARACTER-SET is forced to
  1393. TRANSPARENT, and your code page is set to CP437 (provided you have CP437
  1394. prepared; otherwise your code page is not changed).
  1395.  
  1396. Kermit's ANSI emulation does nothing special with the keys; in particular,
  1397. there is no attempt at "PCTERM" keyboard handling, in which unique key-down
  1398. and key-up sequences are transmitted separately for every single IBM key
  1399. (including Shift, Alt, etc), apparently needed for the SCO UNIX console
  1400. terminal (also called "DOORWAY mode)", but evidently not needed for BBS's.
  1401. There is also no support for so-called ANSI music.
  1402.  
  1403. If you SET TERMINAL TYPE anything-but-ANSI after having SET TERMINAL TYPE
  1404. ANSI, your previous code page, TERMINAL BYTESIZE, COLOR, and CHARACTER-SET are
  1405. restored.
  1406.  
  1407. Hint: Some BBS's send a "cursor position report request" when you log in,
  1408. ESC [ 6 n.  When writing login scripts for BBS's, you should account for
  1409. this.  For example:
  1410.  
  1411.   input 10 \27[6n        ; Cursor position report request
  1412.   if success output \27[24;1R    ; Cursor position report
  1413.  
  1414. (13) DATA GENERAL DASHER TERMINAL EMULATION
  1415.  
  1416. MS-DOS Kermit 3.13 added built-in emulation of the Data General DASHER D463
  1417. (monochrome) and D470 (color) text/graphics terminals:
  1418.  
  1419.   SET TERMINAL TYPE { D463, D470 }
  1420.  
  1421. Because DASHER escape sequences can include XON and XOFF characters, you must
  1422. also tell MS-DOS Kermit not to use regular bidirectional Xon/Xoff flow control
  1423. during DASHER terminal emulation.  Instead, on network connections, SET FLOW
  1424. NONE; on serial connections, SET FLOW RTS/CTS if available, or else use
  1425. unidirectional Xon/Xoff with the new command:
  1426.  
  1427.   SET FLOW OUTGOING-XON/XOFF
  1428.  
  1429. For using Western European languages on a Data General host:
  1430.  
  1431.   SET TERMINAL CHARACTER-SET DG-INTERNATIONAL
  1432.  
  1433. DG function and special keys are supported via new keyboard verbs, which can
  1434. be assigned as desired with SET KEY: \KdgF1..F15, \KdgC1..C4, arrow keys,
  1435. Home, \KdgPoint, \KdgSPCL, \KdgNC.  These verbs are not assigned
  1436. automatically, you must assign them yourself.  Here, for example, is a sample
  1437. macro that assigns the DG F1-F12 keys to the PC's F1-F12 keys:
  1438.  
  1439. define dasher set key cle,set flow outgoing-xon/xoff,set term type d463,-
  1440.   set ke \315 \kdgf1,set ke \316 \kdgf2,set ke \317 \kdgf3,-
  1441.   set ke \318 \kdgf4,set ke \319 \kdgf5,set ke \320 \kdgf6,-
  1442.   set ke \321 \kdgf7,set ke \322 \kdgf8,set ke \323 \kdgf9,-
  1443.   set ke \324 \kdgf10,set ke \389 \kdgf11,set ke \390 \kdgf12
  1444.  
  1445. Verbs \KdgSF1 thru \KdgSF15, for the shifted DASHER function keys, were added
  1446. in v3.14.
  1447.  
  1448. Arrow-key codes (\Klfarr, etc) are adjusted automatically according to the
  1449. terminal type (VT52/Heath, VT100/102, VT220/320, Data General, or Wyse).
  1450.  
  1451. For SPCL key operation, see the Compose Key section below.
  1452.  
  1453. A comprehensive set of DG DASHER key assignments is given in the DASHER.INI
  1454. (MSIDGK.INI) file, supplied by Data General Corporation.  This mapping follows
  1455. that used in DG's CEO Connection product.
  1456.  
  1457. Compressed text (see section 16 below) is supported in either text or graphics
  1458. mode, depending on your video adapter and preferences; in graphics mode,
  1459. regular and compressed text can be mixed on the same screen.  Full-color DG
  1460. graphics are also supported including polygon fill, and the mouse (Microsoft
  1461. or compatible) is supported for CEO Drawing Board and other graphics
  1462. applications; mouse movements control the crosshair cursor and the left mouse
  1463. button sends \KdgF1.
  1464.  
  1465. The DG International Character Set (DGI) is supported during terminal
  1466. emulation, with conversion to CP437 if CP437 is active, otherwise to CP850.
  1467. CP850 is recommended, since it is the closest match to DGI.  Other code pages
  1468. are not supported in DG terminal emulation, nor are Hebrew, Latin/2, and Kanji
  1469. terminal emulation.  Also not supported for DG terminal emulation:
  1470. downloadable fonts/character-sets; retention of graphics screens after
  1471. escaping back or switching to text mode; compressed fonts for monochrome, CGA,
  1472. or Hercules video adapters.
  1473.  
  1474. Technical details of DG terminal emulation are listed in Appendix I.
  1475.  
  1476. (14) WYSE-50 TERMINAL EMULATION
  1477.  
  1478. MS-DOS Kermit 3.14 adds built-in emulation of the Wyse-50 text terminal.  This
  1479. emulation is about the same as Wyse-60 in "Wyse mode", since the Wyse-60 is
  1480. essentially a Wyse-50 with additional emulations added.  To emulate a Wyse-50:
  1481.  
  1482.   SET TERMINAL TYPE WYSE50
  1483.  
  1484. Wyse function keys are supported via the keyboard verbs \KwyseFn (n = 1
  1485. through 16), and shifted Wyse functions keys via \KwyseSFn.  The regular
  1486. \KxxArr verbs (xx = Up, Dn, Lf, Rt) automatically switch to Wyse mode in Wyse
  1487. emulation.
  1488.  
  1489. Restrictions include:
  1490.  
  1491.  . No function key labels, nor local or host message fields.
  1492.  . No erasing with the NUL character; space is used in all cases.
  1493.  . Video attribute Blank is ignored.
  1494.  . Split screens are ignored because insufficent information is available.
  1495.  . Local printing is severely curtailed because much makes little sense to
  1496.    DOS systems.
  1497.  . No block mode nor host controllable duplex.
  1498.  . No local editing.
  1499.  . No host control of the keyboard.
  1500.  . No host-initiated transmission of screen contents or fields.
  1501.  . No host-controlled monitor mode (use Kermit's instead).
  1502.  
  1503. Enhancements:
  1504.  . Transparent printing a`la the Wyse 60 and 50+ terminals
  1505.  
  1506. Technical details of Wyse terminal emulation are listed in Appendix I.
  1507.  
  1508. (15) COMPOSE-KEY SEQUENCES FOR ENTERING SPECIAL CHARACTERS
  1509.  
  1510. Special characters (accented letters, etc) may be entered in the normal ways
  1511. described in "Using MS-DOS Kermit", second edition, Chapter 13, and, starting
  1512. in version 3.13, as compose-key sequences via two new compose-key verbs:
  1513.  
  1514.   \Kcompose ; DEC Compose key
  1515.   \KdgSPCL  ; Data General SPCL ("special") key
  1516.  
  1517. These two verbs are identical, and are assigned to Alt-c by default.  To enter
  1518. a special character, press this key followed by two more keys.    For example,
  1519. you can enter A-acute like this:
  1520.  
  1521.   Alt-c ' A
  1522.  
  1523. That is, press Alt-c (or other key or key combination you have assigned
  1524. \Kcompose or \KdgSPCL to), then acute accent (apostrophe), then capital A.
  1525. In general, compose-key combinations are intuitive: letter+grave accent,
  1526. letter+acute accent (apostrophe), letter+doublequote (for umlaut or
  1527. diaeresis), letter+asterisk (ring above), etc; complete listing below.
  1528.  
  1529. When you press the compose key, the letter C appears at the right of the
  1530. CONNECT-mode status line and remains there until you type the next two keys.
  1531. If the two keys form a valid compose sequence, the corresponding character is
  1532. sent to the host.  If not, Kermit beeps.  In both cases, the C disappears from
  1533. the status line at the end of the compose sequence.  To cancel a compose
  1534. sequence in progress, just type one or two Ctrl-C characters (or any two
  1535. characters that are not a legal compose sequence).
  1536.  
  1537. Compose sequences are available only for those 8-bit Latin1-class (i.e.
  1538. Western European) terminal character-sets that are valid for Kermit's current
  1539. terminal emulation:
  1540.  
  1541. Terminal Type:     Character Sets:
  1542.  VT220 or 320      LATIN1, DEC-MCS
  1543.  D463 or D470      LATIN1, DG-INTERNATIONAL
  1544.  
  1545. Compose sequences are entirely independent of your PC's current code page.
  1546.  
  1547. MS-DOS Kermit's compose-key sequences are:
  1548.  
  1549. Case and order insensitive:
  1550.   Input pair        DG Int    Latin1    Graphic            
  1551.   ++            23h    n/a    #            
  1552.   AA            40h    n/a    @            
  1553.   ((            5Bh    n/a    [            
  1554.   // or /<        5Ch    n/a    \            
  1555.   ))            5Dh    n/a    ]            
  1556.   ^<space>        7Eh    n/a    ^            
  1557.   (-            7Bh    n/a    {            
  1558.   /^            7Ch    n/a    |            
  1559.   )-            7Dh    n/a    }
  1560.   <<            B1h    ABh    << (Left guillemot)
  1561.   0^ or *<space>    BCh    B0h    Degree, ring above
  1562.   +-            B6h    B1h    +-
  1563.   >>            B0h    BBh    >> (Right guillemot)
  1564.   SS            FCh    DFh    German double s (Ess-Zet)
  1565.   /U            A3h    B5h    Greek mu
  1566.   2^            A4h    B2h    2 superscript
  1567.   3^            A5h    B3h    3 superscript
  1568.   C/ or C|        A7h    A2h    Cent sign
  1569.   L- or L=        A8h    A3h    Pound Sterling
  1570.   Y- or Y=        B5h    A5h    Yen sign
  1571.   SO or S! or S0    BBh    A7h    Paragraph sign
  1572.   XO or X0        A6h    A5h    Currency sign
  1573.   A-            A9h    A4h    Feminine ordinal
  1574.   CO or C0        ADh    A9h    Copyright sign
  1575.   PP or P!        B2h    B6h    Pilcrow sign
  1576.   .^            B9h    B7h    Middle dot
  1577.   O-            AAh    BAh    Masculine ordinal
  1578.   12            A2h    BDh    Fraction one-half
  1579.   !!            ABh    A1h    Inverted exclamation
  1580.   ??            ACh    BFh    Inverted query mark
  1581.   T-            AFh    n/a    Not equals sign
  1582.   TM            B3h    AEh    Trademark sign
  1583.   FF            B4h    n/a    Florin sign (DGI only)
  1584.   <=            B7h    n/a    Less than or equals sign (DGI only)
  1585.   >=            B8h    n/a    Greater than or equals sign (DGI only)
  1586.   ,-            A1h    ACh    Not sign
  1587.   ""            BDh    A8h    Diaeresis
  1588.   ''            BEh    B4h    Accent acute
  1589.   RO            AEh    AEh    Registered sign
  1590.   ||            n/a    A6h    Vertical broken bar
  1591.   --            n/a    ADh    Soft hyphen
  1592.   -^            n/a    AFh    Macron
  1593.   ,,            n/a    B8h    Cedilla
  1594.   34            n/a    BEh    Fraction three-fourths
  1595.   XX            n/a    D7h    Multiplication sign
  1596.   -:            n/a    F7h    Division sign
  1597.   1^            n/a    B9h    Superscript 1
  1598.   14            n/a    BCh    Fraction one-fourth
  1599.  
  1600. Case and order sensitive:
  1601.   Input pair        DG Int    Latin1    Graphic            
  1602.   EO            D7h    n/a    OE digraph
  1603.   AE            C6h    C6h    AE digraph
  1604.   ae            E6h    E6h    ae digraph
  1605.   ,C            C7h    C7h    Cedilla
  1606.   ,c            E7h    E7h    cedilla
  1607.   /O            D6h    D8h    O oblique stroke
  1608.   /o            F6h    F8h    o oblique stroke
  1609.   HT            n/a    DEh    Icelandic Thorn (yes, HT, not TH)
  1610.   ht            n/a    FEh    Icelandic thorn (ht, not th)
  1611.   -D            n/a    D0h    Icelandic Eth
  1612.   -d            n/a    F0h    Icelandic eth
  1613.  
  1614. Case sensitive, order insensitive:
  1615.   Input pair        DG Int    Latin1    Graphic            
  1616.   'A            C0h    C1h    A-acute
  1617.   'a            E0h    E1h    a-acute
  1618.   `A            C1h    C0h    A-grave
  1619.   `a            E1h    E0h    a-grave
  1620.   ^A            C2h    C2h    A-circumflex
  1621.   ^a            E2h    E2h    a-circumflex
  1622.   "A            C3h    C4h    A-diaeresis
  1623.   "a            E3h    E4h    a-diaeresis
  1624.   ~A            C4h    C3h    A-tilde
  1625.   ~a            E4h    E3h    a-tilde
  1626.   *A            C5h    C5h    A-ring
  1627.   *a            E5h    E5h    a-ring
  1628.   'E            C8h    C9h    E-acute
  1629.   'e            E8h    E9h    e-acute
  1630.   `E            C9h    C8h    E-grave
  1631.   `e            E9h    E8h    e-grave
  1632.   ^E            CAh    CAh    E-circumflex
  1633.   ^e            EAh    EAh    e-circumflex
  1634.   "E            CBh    CBh    E-diaeresis
  1635.   "e            EBh    EBh    e-diaeresis
  1636.   'I            CCh    CDh    I-acute
  1637.   'i            ECh    EDh    i-acute
  1638.   `I            CDh    CCh    I-grave
  1639.   `i            EDh    ECh    i-grave
  1640.   ^I            CEh    CEh    I-circumflex
  1641.   ^i            EEh    EEh    i-circumflex
  1642.   "I            CFh    CFh    I-diaeresis
  1643.   "i            EFh    EFh    i-diaeresis
  1644.   ~N            D0h    D1h    N-tilde
  1645.   ~n            F0h    F1h    n-tilde
  1646.   'O            D1h    D3h    O-acute
  1647.   'o            F1h    F3h    o-acute
  1648.   `O            D2h    D2h    O-grave
  1649.   `o            F2h    F2h    o-grave
  1650.   ^O            D3h    D4h    O-circumflex
  1651.   ^o            F3h    F4h    o-circumflex
  1652.   "O            D4h    D6h    O-diaeresis
  1653.   "o            F4h    F6h    o-diaeresis
  1654.   ~O            D5h    D5h    O-tilde
  1655.   ~o            F5h    F5h    o-tilde
  1656.   'U            D8h    DAh    U-acute
  1657.   'u            F8h    FAh    u-acute
  1658.   `U            D9h    D9h    U-grave
  1659.   `u            F9h    F9h    u-grave
  1660.   ^U            DAh    D8h    U-circumflex
  1661.   ^u            FAh    F8h    u-circumflex
  1662.   "U            DBh    DCh    U-diaeresis
  1663.   "u            FBh    FCh    u-diaeresis
  1664.   "Y            DDh    n/a    Y-diaeresis
  1665.   "y            FDh    FFh    y-diaeresis
  1666.   'Y            n/a    DDh    Y-acute
  1667.   'y            n/a    FDh    y-acute
  1668.  
  1669. (16) WIDE SCREENS AND HORIZONTAL SCROLLING
  1670.  
  1671. Kermit changes between 80 and 132 column mode at host request (CSI ? 3 h / l)
  1672. or when you give an explicit SET TERMINAL WIDTH { 80, 132 } command.  Until
  1673. version 3.13, 132-column screens were possible only on PCs with video adapters
  1674. that have a 132-column text mode.  Now MS-DOS Kermit also includes support for
  1675. DEC VT 132-column mode and Data General compressed text on EGA and VGA video
  1676. adapters that do not have a 132-column text mode, by entering graphics mode
  1677. and writing the characters dot by dot. 128 columns are displayed rather than
  1678. 132 due to the PC's screen geometry but you can use MS-DOS Kermit's horizontal
  1679. scrolling feature to see the rightmost 4 columns.  Wide screens are handled
  1680. according to the following commands:
  1681.  
  1682. SET TERMINAL VIDEO-CHANGE {ENABLED, DISABLED, DOS-ONLY}
  1683.   Enable or disable the video screen from switching between 80 and 132
  1684.   columns.  By default, this is enabled in DOS only (DOS-ONLY).  Video-mode
  1685.   switching can wreak havoc on some (but not all) PCs when done in a Microsoft
  1686.   Windows window and so by default video-mode switching is disabled in
  1687.   Windows.  Use ENABLED to enable it AT YOUR OWN RISK.  If it works, Windows
  1688.   will probably force Kermit into a fullscreen session.  If it doesn't work,
  1689.   then disable it again and use horizontal scrolling instead, or run Kermit
  1690.   under plain DOS or in a fullscreen DOS window under Windows.  v3.14.
  1691.  
  1692. SET TERMINAL COMPRESSED-TEXT {GRAPHICS, TEXT}
  1693.   Tells whether Kermit should use text (fast) or graphics (slow) mode for
  1694.   compressed text (wide screens).  By default, it will use whichever method
  1695.   it thinks is appropriate to your video adapter.  Graphics is allowed
  1696.   on EGA, VGA or higher video systems.  v3.13.
  1697.  
  1698. Text mode will not actually display compressed text unless your video adapter
  1699. supports this function, but Kermit's virtual screen is adjusted to
  1700. the terminal-emulation width.  For example, if your screen shows 80 characters
  1701. per line, but your terminal width is 132, then wrapping occurs at column 132
  1702. (perhaps off the screen) rather than column 80, and Kermit reports its screen
  1703. width as 132 (e.g. in response to a report-request escape sequence).
  1704.  
  1705. Of course, for 132-column operation, it is always better if your video adapter
  1706. supports 132 columns directly -- the video board does all the work, which is
  1707. much faster than writing screen dots in software!  This works if Kermit knows
  1708. which kind of video adapter you have (Kermit determines this from a hopefully
  1709. unique "signature" in the video BIOS, provided it has not been hidden from
  1710. Kermit by Windows or your memory manager, see KERMIT.BWR).  Here is a list of
  1711. such boards:
  1712.  
  1713.   ATI EGA and VGA Wonder
  1714.   AST, Dell, and other boards based on Western Digital VGA boards
  1715.   AT&T / Olivetti
  1716.   Everex Viewpoint EV-659, FVGA-673, EV-678, Micro Enhancer Deluxe
  1717.   IBM SVGA (= Tseng ET4000, e.g. on PS/ValuePoint)
  1718.   IBM XGA
  1719.   Paradise AutoSwitch EGA Mono
  1720.   Paradise Professional
  1721.   Paradise VGA Plus 16 (ROM BIOS 003056-xxx firmware)
  1722.   Paradise VGA Plus (ROM BIOS 003056-xxx firmware)
  1723.   Paradise VGA Professional (ROM BIOS 003056-xxx firmware)
  1724.   Paradise VGA1024
  1725.   STB VGA/EM (Tseng TVGA)
  1726.   STB VGA/EM Plus (Tseng 4000), VGA/EM-16, VGA/EM-16 Plus
  1727.   Tseng Labs EVA board with 132-column kit installed
  1728.   Tseng Labs UltraPAK mono/Hercules with 132 column modes
  1729.   Tseng Labs ET4000 SVGA
  1730.   VESA-compatible video BIOS
  1731.   Video 7 Vega Deluxe with 132X25.COM driver installed and Video 7 VGA
  1732.  
  1733. If you have an adapter capable of 132-column operation, but Kermit does not
  1734. know how to activate it, set up your COLS132.BAT and COLS80.BAT files to do
  1735. the switching, as described in "Using MS-DOS Kermit".
  1736.  
  1737. For Data General DASHER terminal emulation, screen widths up to 207 are
  1738. supported for purposes of horizontal scrolling.  DG terminal emulation is in
  1739. text mode by default.  As soon as the host commands the terminal to display
  1740. compressed text, Kermit switches the entire screen to 132-column text mode if
  1741. your video adapter supports it, and otherwise switches to (slower) graphics
  1742. mode.  As in VT terminal emulation, this behavior is controlled by the SET
  1743. TERMINAL COMPRESSED-TEXT command.  Unlike VT terminals, DASHER terminals (and
  1744. MS-DOS Kermit, when in graphics mode) can display compressed and regular text
  1745. on the screen at the same time.
  1746.  
  1747. (16.1) WIDE SCREENS AND ROLLBACK
  1748.  
  1749. Normally, Kermit only keeps 80 columns in its screen-rollback memory.  If you
  1750. want to be able to roll back screens of 132 (or, for DG terminal emulation, up
  1751. to 207) columns, you must set the KERMIT environment variable WIDTH to 132 (or
  1752. the desired number) in your AUTOEXEC.BAT file, for example:
  1753.  
  1754.   SET KERMIT=WIDTH 132
  1755.  
  1756. The KERMIT environment variable must contain a WIDTH definition before you
  1757. start MS-DOS Kermit in order for it to take effect.  Wide rollback screens
  1758. need more memory than regular ones.
  1759.  
  1760. NOTE: The KERMIT=WIDTH value and SET TERMINAL WIDTH value are two different
  1761. things.     The former controls memory allocation in the rollback buffer, the
  1762. latter controls the actual display width (virtual or real) of your screen.
  1763.  
  1764. (16.2) HORIZONTAL SCROLLING  
  1765.  
  1766. If your logical screen width is greater than the physical screen width, MS-DOS
  1767. Kermit 3.13 lets you scroll the screen horizontally by pushing keys.  The new
  1768. keyboard verbs are:
  1769.  
  1770.   \Klfpage    Scroll left one "page" (= 20 columns) (screen moves right)
  1771.   \Klfone     Scroll left one column
  1772.   \Krtpage    Scroll right one page (screen moves left)
  1773.   \Krtone     Scroll right one column
  1774.  
  1775. These verbs are unassigned by default. Here are the commands you could add to
  1776. your MSCUSTOM.INI file if you wanted to assign them to the gray (T-pad) arrow
  1777. keys on the extended (101) PC keyboard:
  1778.  
  1779.   SET KEY \2459 \Krtpage  ; Alt-Left arrow makes screen move left on page
  1780.   SET KEY \5491 \Krtone      ; Ctrl-Left arrow moves screen one column to left
  1781.   SET KEY \2461 \Klfpage  ; Alt-Right arrow makes screen move right one page  
  1782.   SET KEY \5492 \Klfone      ; Ctrl-Right arrow moves screen one column right
  1783.  
  1784. When these keys are used in combination with the PageUp/Down keys, your screen
  1785. becomes a "virtual window" on your session, which you can move around in
  1786. arbitrary directions.
  1787.  
  1788. By analogy with SET TERMINAL ROLLBACK { ON, OFF }, which tells Kermit whether
  1789. to move a rolled-back screen automatically to the bottom when new characters
  1790. arrive from the host, the new command:
  1791.  
  1792.   SET TERMINAL HORIZONTAL-SCROLL { AUTOMATIC, MANUAL }
  1793.  
  1794. tells Kermit whether to scroll horizontally when a character arrives that
  1795. would be displayed to the left or right of the visible screen. By default,
  1796. horizontal scrolling is MANUAL during VT terminal emulation, and AUTOMATIC
  1797. during DASHER emulation.  MANUAL means you have to push keys to scroll the
  1798. screen horizontally, AUTOMATIC means that Kermit moves the screen to "catch"
  1799. incoming characters.
  1800.  
  1801. (17) EXPANDED MEMORY
  1802.  
  1803. Graphics screens and terminal rollback screens can now be kept in expanded
  1804. memory (EMS), and the size of the screen rollback buffer can selected and
  1805. changed at runtime.  When sufficient expanded memory is available, you can
  1806. have up to 8000 rollback screens.
  1807.  
  1808. SET ROLLBACK <number>
  1809.   Specifies the number of text screens to be kept in the rollback buffer.
  1810.   Each 24x80 screen occupies about 4K; bigger screens need more space.  Don't
  1811.   confuse this command with SET TERMINAL ROLLBACK, which tells what to do when
  1812.   characters arrive for the screen while it is rolled back.
  1813.  
  1814. SET TERMINAL EXPANDED-MEMORY { ON, OFF }
  1815.   Whether to use expanded memory for retention of graphics screens and for
  1816.   text terminal-emulation rollback screens.  Default is OFF, use conventional
  1817.   memory.  ON leaves extra room in conventional memory for running other
  1818.   programs, does not rely on your video adapter's memory for storing graphics
  1819.   images, and allows more rollback screens, limited only by the size of your
  1820.   PC's available physical memory.  ON requires that an expanded memory
  1821.   manager, such as EMM386 or QEMM, be used correctly to configure EMS memory.
  1822.  
  1823. See the Memory Management section of KERMIT.BWR (MSKERM.BWR) for further info.
  1824.  
  1825. (18) GRAPHICS TERMINAL EMULATION
  1826.  
  1827. SET TERMINAL GRAPHICS { ..., VESA, ...}
  1828.   VESA now supported for graphics terminal emulation (Tektronix, Sixel, etc).
  1829.   This is an 800x600 display on display adapters (e.g. SVGA) that support it.
  1830.   This in comparison to VGA with 640x480 (v3.14).
  1831.  
  1832. TIFF dumps of graphics screens have improved coloration, especially among
  1833. black and shades of gray (v3.14).
  1834.  
  1835. SAS 6.10 and later on UNIX platforms (MIPS, Intel, and Alpha as of this
  1836. writing) includes new SAS/GRAPH drivers that take advantage of Kermit's
  1837. color Sixel graphics capabilities:
  1838.  
  1839. KRMTVGA
  1840.   Requires VGA video adapter.  You must tell Kermit to
  1841.   SET TERM GRAPHICS VGA or SET TERM GRAPHICS VESA.
  1842.  
  1843. KRMTAUTO
  1844.   Requires that you set your terminal graphics to auto-sensing
  1845.   (SET TERM GRAPHICS AUTO, which is the default).
  1846.  
  1847. To view a graph from an interactive SAS/GRAPH session, use this syntax at the
  1848. beginning of your graphics program:
  1849.  
  1850.   GOPTIONS DEVICE=KRMTVGA; -or-  GOPTIONS DEVICE=KRMTAUTO; 
  1851.  
  1852. Users running release 6.08 of SAS have access to a driver called 
  1853. KERMIT that does Tektronix 4014 emulation.  Prior to that release, they
  1854. can use this syntax in their GOPTIONS statement to get a monochrome
  1855. graph:
  1856.  
  1857.   GOPTIONS DEVICE=TEK4014 GPROLOG='1b5b3f333868'x GEPILOG='1b5b3f33386c'; 
  1858.  
  1859. For more information on these device drivers, contact SAS Institute Technical
  1860. Support at (919)-677-8008 and ask for the GRAPHICS group.
  1861.  
  1862. (19) OTHER TERMINAL EMULATION CHANGES AND IMPROVEMENTS
  1863.  
  1864. SET TERMINAL ANSWERBACK { ON, OFF }
  1865.   Whether Kermit should respond with string "MS-DOS-KERMIT nnn_ttt" if, during
  1866.   terminal emulation, it receives Ctrl-E (ENQ) from host.  Default is OFF, no
  1867.   reply.  As of v3.14 nnn = Kermit version number, ttt = terminal type, e.g.
  1868.   "MS-DOS-KERMIT 314_VT320", terminated by a carriage return.
  1869.  
  1870. SET TERMINAL ANSWERBACK { MESSAGE [ text ] }
  1871.   The text, if any, is appended to the standard answerback message, separated
  1872.   by an underscore, e.g. "MS-DOS-KERMIT 314_VT320_123 Science Hall".  The text
  1873.   can be up to 30 characters long, and may contain \nnn codes, and is shown in
  1874.   the SHOW TERMINAL display as "ab msg: text".  It is not possible to replace
  1875.   the standard message, only to append additional text to it.  Thus, programs
  1876.   sending ENQ to MS-DOS Kermit programs can depend on finding the program
  1877.   name, version, and terminal type as the first three items.  v3.14.
  1878.  
  1879. SET TERMINAL COLOR 20
  1880.   If Kermit receives a "reset visual attributes" escape sequence (CSI 0 m)
  1881.   from the host, this does not affect the screen coloration.  However, some
  1882.   applications expect it to restore the default fore- and background colors.
  1883.   SET TERMINAL COLOR 20 tells Kermit to do this.  v3.14.
  1884.  
  1885. SET TERMINAL ERASE {NORMAL-BACKGROUND, CURRENT-COLOR}
  1886.   What Kermit should do about color when it receives a screen erasure command
  1887.   from the host, such as CSI Pn J, CSI Pn K, etc.  Default is NORMAL: fill the
  1888.   erased area with the default (SET TERMINAL COLOR) background color.
  1889.   CURRENT-COLOR means to use the background color most recently set by a
  1890.   host-generated CSI 4x m escape sequence.  v3.14.
  1891.  
  1892. SET TERMINAL RESET
  1893.   Causes the terminal emulator to reset to startup defaults when CONNECT mode
  1894.   is entered the next time.  The dynamic reset is still keyboard verb \Kreset.
  1895.  
  1896. SET TERMINAL TIMESLICE-RELEASE {ENABLE, DISABLE}
  1897.   ENABLE (default) lets Kermit release a CPU time slice to mulitasking systems
  1898.   Windows, OS/2, NT, and DESQview when idle.  Unfortunately, under at least
  1899.   OS/2, a Packet Driver loaded into the same DOS box may not receive enough
  1900.   CPU cycles to work effectively unless we disable timeslice-release.
  1901.   Enabling frees CPU cycles for other tasks; disabling may improve performance
  1902.   of Kermit and related comms drivers.  The timeslice release mechanism is
  1903.   active only while in CONNECT mode; the operating system's normal scheduler
  1904.   takes care of matters while at the Kermit prompt.
  1905.  
  1906. SET TERMINAL UNDERSCORE <fg-color> <bg-color>
  1907.   Lets you select the fore- and background colors for underscore simulation
  1908.   on color monitors.  Syntax is the same as SET TERM COLOR, 3x and 4x numbers.
  1909.  
  1910. Downloadable DEC function keys now have their own \Kverbs, \KudkF6..F20;
  1911. unassigned by default.
  1912.  
  1913. SET KEY now recognizes separate scan codes for the Esc, Space, and Enter keys
  1914. when combined with Ctrl, Shift, and Alt keys:
  1915.  
  1916.       Unmodified  Ctrl    Shift     Alt    C-S    C-A    S-A  C-S-A
  1917.   Space        313      1337      825    2361   1849   3385   2873   3897
  1918.   Enter        284      1308      796    2332   1820   3356   2844   3868
  1919.   Esc        257      1281      769    2305   1793   3329   2817   3841
  1920.  
  1921. Now you can make separate SET KEY assignments to each combination of Space,
  1922. Enter, and Esc with the Alt, Shift, and Ctrl keys.
  1923.  
  1924. (20) SCRIPT PROGRAMMING CHANGES AND ADDITIONS
  1925.  
  1926. \\ quoting now works.  Also \; etc.  Semicolons not preceeded by whitespace
  1927. and not at the beginning of a line are now considered to be part of the text.
  1928.  
  1929. All-new string, numeric, and file functions:
  1930.  
  1931.  \Fcharacter(number)   The character whose numeric value is given
  1932.  \Fcode(character)     The numeric code for the character
  1933.  \Fcontents(variable)  The contents of the variable (variable name is literal)
  1934.  \Fdate(filename)      The creation date of the given file
  1935.  \Fdefinition(macro)   The literal definition of the given macro
  1936.  \Ffiles(filespec)     The number of files that match the filespec
  1937.  \Findex(s1,s2,p)      The position of string s1 in s2 starting at position p
  1938.  \Flength(string)      The length of the given string
  1939.  \Fliteral(string)     The string, literally, unevaluated
  1940.  \Flower(string)       The string with uppercase letters changed to lowercase
  1941.  \Flpad(string,len,char) The string left padded to given length with char
  1942.  \Fmaximum(n1,n2)      The maximum of the two numbers, which may be variables
  1943.  \Fminimum(n1,n2)      The minimum of the two numbers, ditto
  1944.  \Fnextfile()           Next file from \Ffiles() list
  1945.  \Frepeat(string,num)  num repetitions of the string
  1946.  \Freverse(string)     The string, reversed left to right
  1947.  \Freplace(s1,s2,s3)   Replace all occurrences of s2 in the string s1 with s3
  1948.  \Fright(string,num)   The rightmost num characters of the string
  1949.  \Frpad(string,len,char) The string right-padded to given length with char
  1950.  \Fsize(file)           The size (bytes) of the given file
  1951.  \Fsubstr(string,p,len) Substring of string, starting at p, of given length
  1952.  \Fupper(string)       The string with lowercase letters changed to uppercase
  1953.  
  1954. Built-in variables (* are new to 3.14):
  1955.  
  1956.  \v(argc)        Number of arguments to current macro
  1957. *\v(carrier)        SET CARRIER setting
  1958. *\v(charset)        Code Page currently active, such as CP437
  1959. *\v(cmdfile)        Name of currently executing command file, if any
  1960. *\v(console)        ANSI if ANSI.SYS loaded, else NONE
  1961.  \v(count)        Current SET COUNT value
  1962. *\v(cmdlevel)        Command level (for macros & TAKE files)
  1963.                          0 or 1 = top level, 2 = 2nd level, 3 = 3rd level, ...
  1964. *\v(cps)        Characters per second, most recent file transfer
  1965.  \v(date)        Current date
  1966. *\v(inidir)        Full pathname of MSKERMIT.INI's directory
  1967.  \v(ndate)        Current date, numeric format
  1968.  \v(directory)        Current directory
  1969.  \v(dosversion)        Numeric DOS version, e.g. 500 for 5.00
  1970.  \v(errorlevel)        ERRORLEVEL value
  1971. *\v(inpath)        Drive:\path\ resulting from last IF INPATH command
  1972. *\v(input)        INPUT buffer, first string ending in LF, CR, or FF
  1973.  \v(keyboard)        Keyboard type, e.g. 88, 101
  1974.  \v(line)        Synonym for \v(port)
  1975. *\v(monitor)        Monitor type - COLOR, MONO
  1976. *\v(parity)        Current SET PARITY setting
  1977.  \v(platform)        IBM-PC (or other)
  1978.  \v(port)        Current SET PORT setting
  1979.  \v(program)        MS-DOS_KERMIT
  1980. *\v(prompt)        Current SET PROMPT setting
  1981. *\v(query)        Result of last REMOTE QUERY command, if not a file
  1982.  \v(session)        Current TCP/IP session number (1 through 6)
  1983. *\v(tcpip_status)    Status of current TCP/IP session
  1984. *\v(space)        Free space on current disk, bytes
  1985.  \v(speed)        Current SET SPEED setting
  1986. *\v(startup)        Disk:\Directory\ from which Kermit was started
  1987.  \v(status)        Status of most recent command, 0 = success
  1988. *\v(sysid)        System identification in Kermit packets (U8)
  1989.  \v(system)        MS-DOS
  1990.  \v(tcp_status)        TCP connection status
  1991.  \v(terminal)        Current SET TERMINAL TYPE setting
  1992.  \v(time)        Current time
  1993.  \v(ntime)        Current time, numeric (seconds since midnight)
  1994.  \v(version)        MS-DOS Kermit numeric version number, e.g. 314
  1995.  
  1996. Note: \v(ndate) and \v(ntime) are suitable for construction of filenames.
  1997.  
  1998. New or changed commands:
  1999.  
  2000. ASK[Q] <variable-or-macro-name> prompt
  2001.   Modified to retain the response string literally rather than expand
  2002.   embedded substitution variables (version 3.14).
  2003.  
  2004. APC text
  2005.   Sends text string (Kermit commands to be executed on the other end) with
  2006.   prefix of ESC _ and postfix of ESC \ out the currently selected port.  This
  2007.   is an Applications Program Command to receptive VT200 and above terminal
  2008.   emulators.  C-Kermit 5A(190) and MS-DOS Kermit 3.13 and later understand APC
  2009.   sequences while in CONNECT mode.
  2010.  
  2011. CD <anything>\
  2012.   Now works in DOS 5.00 (previously DOS would object to the trailing
  2013.   backslash). Numerically named directories, such as CD \123 should be denoted
  2014.   with double slashes, as CD \\123, to prevent conversion to an internal
  2015.   binary number during command reading.  v3.14.
  2016.  
  2017. CHECK {TCP/IP, NETWORKS, GRAPHICS, TERMINALS}
  2018.   Tests if these conditional-build items are present in MS-DOS Kermit. Reports
  2019.   success or failure.
  2020.  
  2021. GETC <variable-or-macro-name> <prompt>
  2022.   Like ASK, but reads a single character from the keyboard.  v3.14.
  2023.  
  2024. END [ <number> [ <text> ] ]
  2025.   Stops execution of the current macro or TAKE file and returns immediately to
  2026.   the level which invoked it, i.e. the next higher level.  <number> and <text>
  2027.   are used as in the STOP command. v3.13.  POP is a synonym for END.
  2028.  
  2029. IF DIRECTORY <string> <command>
  2030.   Executes the <command> if <string> is the name of an existing directory.
  2031.   v3.14.
  2032.  
  2033. IF INPATH filename
  2034.   Saves the resulting path, if the file were found, in variable \v(inpath).
  2035.   Command success or failure indication continues to work as before.  v3.13.
  2036.  
  2037. IF NEWER <file1> <file2> <command>
  2038.   Executes the <command> if <file1> is newer than <file2>.  v3.14.
  2039.  
  2040. IF NUMERIC <string> <command>
  2041.   Executes the <command> if <string> contains only digits.  v3.14.
  2042.  
  2043. IF < <number> <number> <command>
  2044. IF = <number> <number> <command>
  2045. IF > <number> <number> <command>
  2046. IF COUNT, IF NUMERIC, IF VERSION
  2047.   Now all work with 32-bit numbers, v3.14.
  2048.  
  2049. IF [ NOT ] EXIST <filename>
  2050.   Succeeds if the given file exists, fails otherwise.
  2051.  
  2052. IF [ NOT ] INPATH <filename>
  2053.   Succeeds if the given file can be found by normal DOS search rules, i.e. if
  2054.   it is in the current disk/directory, or in the DOS PATH, and if it succeeds,
  2055.   sets \v(inpath) to the path where the file was found.  v3.14.
  2056.  
  2057. INCREMENT <variable> [ <value> ]
  2058.   Adds the <value>, which must be a positive number (or a variable that
  2059.   evaluates to a positive number), to the value of the given variable.    If the
  2060.   <value> is not specified, then 1 is added.  If the <variable> is not defined
  2061.   or has a non numeric value, the command fails and the value of the variable
  2062.   is not altered.  As of v3.14, INCREMENT works with 32-bit numbers.
  2063.  
  2064. DECREMENT <variablename> [ <value> ]
  2065.   Subtracts the <value>, which must be a positive number (or a variable that
  2066.   evaluates to a positive number), from the value of the given variable.  If
  2067.   the <value> is not specified, then 1 is subtracted.  If the <variable> is
  2068.   not defined or has a non numeric value, the command fails and the value of
  2069.   the variable is not altered.    As of v3.14, works with 32-bit numbers.
  2070.  
  2071. MPAUSE <number>
  2072.   Like PAUSE, but pauses for the given number of milliseconds.  v3.14.
  2073.  
  2074. OUTPUT \L
  2075.   Sends a Long BREAK (1.5 sec) (v3.13).     OUTPUT \B continues to send a regular
  2076.   BREAK (250 msec).  On TELNET connections, both of these send a TELNET BREAK.
  2077.  
  2078. READ <variablename>
  2079.   No longer processes the data it reads; it is stored literally in the
  2080.   variable.  v3.14.
  2081.  
  2082. SET TAKE { ERROR, ECHO } { ON, OFF }
  2083. SET MACRO ERROR { ON, OFF }
  2084.   Separate control of echoing and error handling in macros and TAKE files.
  2085.   ECHO ON means to echo commands as they are read from the file or macro
  2086.   definition.  ERROR ON means to exit from the command file or macro
  2087.   definition if an error occurs; ERROR OFF means don't exit, continue
  2088.   processing (e.g. let errors be handled by IF FAILURE / IF SUCCESS).  v3.14.
  2089.  
  2090. SET MODEM [ <text> ]
  2091.   Synonym for DEFINE _MODEM <text>.  v3.14.
  2092.  
  2093. SET PROMPT <text>
  2094.   <text> now evaluated each time prompt is printed.
  2095.   So "SET PROMPT [\v(dir)] MS-Kermit>" always shows your current directory,
  2096.   "SET PROMPT \v(time)>" shows the current time, etc.  v3.14.
  2097.  
  2098. SLEEP { <number>, <hh:mm:ss> }
  2099.   Like PAUSE, but does not sample the communications device.  But it does
  2100.   sample the keyboard (like PAUSE) and wakes up if a key is pressed.  v3.14.
  2101.  
  2102. STOP [ <number> [ <text> ] ]
  2103.   Stops execution of the current macro or TAKE file and returns immediately to
  2104.   top command level.  The <number> and <text> operands are new to v3.13.
  2105.   <number> is a return code that can be tested by IF SUCCESS.  It is also
  2106.   assigned to \v(status).  Text is an optional message to be printed.
  2107.  
  2108. Hidden script support commands, v3.14:
  2109.  
  2110. _ASSIGN and _DEFINE
  2111.   These are the same as ASSIGN and DEFINE, except the destination macro name
  2112.   is subject to expansion of embedded substitution variables, as in "_define
  2113.   foo\%a this is a definition".
  2114.  
  2115. FORWARD label
  2116.   Like GOTO except the label search starts at the current position and looks
  2117.   only forward rather than from the beginning as GOTO does.  Failures pop up
  2118.   through the command stack, all searches are still only forward.
  2119.  
  2120. (21) GENERAL COMMUNICATIONS
  2121.  
  2122. SET CARRIER { ON, OFF } specifies treatment of Carrier Detect signal:
  2123.   OFF  = ignore it.
  2124.   ON   = require it at all times except during DIAL macro execution.
  2125.  
  2126. SET STOP-BITS { 1, 2 }
  2127.   Set serial port stop-bits to 1 (default) or 2.  2 is hardly ever needed.
  2128.   v3.14.
  2129.  
  2130. SET EXIT WARNING { ON, OFF }
  2131.   If you try to EXIT from Kermit while a connection (serial or network)
  2132.   appears to be active, Kermit warns you and gives you a chance to change
  2133.   your mind if SET EXIT WARNING is ON.  If OFF, it just EXITs with no
  2134.   questions asked (as in v3.13 and earlier).  v3.14.
  2135.  
  2136. SET PORT SUPERLAT <nodename>
  2137.   Support for Meridian Technology SuperLAT network interface.  v3.14.
  2138.  
  2139. TEST COMx
  2140.   Tests to see if COMx (x = 1..4) is present and usable.  v3.14.
  2141.  
  2142. (22) COMMAND PARSER
  2143.  
  2144. Display of substitution variables and functions changed in v3.14.  Now the
  2145. original typing (or TAKE file content) is displayed without showing the
  2146. replacement text.  Character and word deletion thus operate on what is visible
  2147. rather than on the underlying contents.  This simplifies the presentation and
  2148. makes it more intuitive.  Context sensitive help, "?", extends to functions
  2149. and variables nested within functions and variables.
  2150.  
  2151. (23) TCP/IP NETWORKING
  2152.  
  2153. See the networks sections in KERMIT.HLP, KERMIT.BWR, and NETWORKS\SETUP.DOC
  2154. for additional information.  New networking features since "Using MS-DOS
  2155. Kermit", second edition, was published include:
  2156.  
  2157.  . Support for ODI, SLIP, and Novell SLIP_PPP drivers, support for
  2158.    Telebit PPP drivers.
  2159.  
  2160.  . Up to six simultaneous TCP/IP sessions.
  2161.  
  2162.  . TCP/IP fixes, speedups, and refinements (packet fragment reassembly, 
  2163.    additional ICMP responses, user-selectable maximum segment size, tighter 
  2164.    round trip timing estimation, much higher long-distance throughput,
  2165.    and ensuring the TCP PUSH bit is always set to help some older servers.)
  2166.  
  2167. New commands:
  2168.  
  2169.    SET PORT BWTCP <ip-address> (v3.14)
  2170.      Make a TCP/IP connection using the Beame & Whiteside TCP/IP protocol
  2171.      stack.
  2172.  
  2173.    SET TCP ADDRESS TELEBIT-PPP (v3.14)
  2174.      Use Telebit's PPP ODI driver, and get my TCP address from there. Section
  2175.      PROTOCOL KERMIT of Novell's NET.CFG can hold a line such as MYIP below 
  2176.      which will have the IP number filled in by the PPP driver:
  2177.  
  2178.     Protocol KERMIT
  2179.         bind telebit
  2180.         MYIP   123.123.123.2        < MYIP word to match ODIPPP
  2181.                         < ODIPPP writes IP number
  2182.     Link Driver ODIPPP
  2183.         Frame PPP
  2184.         Protocol IPX  0 PPP
  2185.         Protocol IP   0800 PPP
  2186.         Protocol ARP  0806 PPP
  2187.         Protocol RARP 8035 PPP
  2188.         IPCP DYNAMIC "PROTOCOL KERMIT: MYIP:" < matches spelling above
  2189.  
  2190.    SET TCP/IP MSS <number> (v3.14)
  2191.      Maximum TCP Segment Size, to override built-in defaults of 1046 bytes 
  2192.      local and 536 bytes if routed (plus 40 bytes TCP and IP headers).    This
  2193.      may be considered MTU (maximum transmission unit) but smarter because
  2194.      TCP informs the other side.  Maximum size is 1460 bytes (1500 byte pkt).
  2195.  
  2196.    SET TCP/IP PACKET-DRIVER-INTERRUPT { <number>, ODI } (v3.12)
  2197.      Normally Kermit searches from 0x60 to 0x7e for a packet driver.  This
  2198.      command allows you to (a) specify a particular interrupt, in case you
  2199.      have more than one packet driver loaded, or (b) tell Kermit to skip the
  2200.      packet-driver interrupt search and use the ODI interface.    Note: the ODI
  2201.      interface is used by default for TCP/IP connections if a packet driver
  2202.      cannot be found but an ODI driver can be found.
  2203.  
  2204.  . The ability to select a particular TCP port when making a connection:
  2205.  
  2206.    SET PORT TCP/IP <ip-name-or-address> [ <tcp-port-number> ]
  2207.      The default TCP port number is 23, which is the TELNET protocol socket.
  2208.      You can specify any other port number except 25.  Version 3.12.
  2209.  
  2210.  . New TCP/IP server mode accepts incoming TCP/IP connections (v3.12):
  2211.  
  2212.    SET PORT TCP/IP * [ <tcp-port-number> ]
  2213.      If you specify asterisk (*) instead of an IP host name or address,
  2214.      MS-DOS Kermit waits for an incoming connection on the specified TCP
  2215.      port (23 by default).  This connection is useful only when MS-DOS Kermit
  2216.      is in SERVER mode or, for chatting, CONNECT mode.    It does not give
  2217.      clients a DOS command processor.
  2218.  
  2219.  . RFC 1395 BOOTP compliance allows MS-DOS Kermit to receive its fully
  2220.    qualified domain name from a BOOTP server.  Also, MS-DOS Kermit's SHOW
  2221.    COMMUNICATIONS command now displays the IP address of the BOOTP server
  2222.    from which its TCP/IP parameters were received.
  2223.  
  2224.  . New commands to govern TELNET protocol:
  2225.  
  2226.    SET { TCP/IP == TELNET } (TCP/IP and TELNET are synonyms)
  2227.    SET TELNET TERM-TYPE <text>
  2228.      Normally, MS-DOS Kermit sends its actual terminal-emulation type when the
  2229.      remote TELNET server asks for a terminal type report. But the remote
  2230.      computer might not support Kermit's current terminal type, or might know
  2231.      it by a different name.  This command lets you specify a terminal-type
  2232.      name for Kermit to send instead of the normal one.
  2233.  
  2234.    SET TELNET NEWLINE-MODE { OFF, ON, RAW }
  2235.      During terminal emulation on a TCP/IP connection, MS-DOS Kermit follows
  2236.      the TELNET specification and transmits carriage and line feed (CRLF)
  2237.      whenever you type carriage return (the Enter key).  If the remote TELNET
  2238.      server is confused by this, use SET TCP/IP NEWLINE-MODE OFF to make
  2239.      Kermit send CR and NUL rather than CR and LF, or RAW to send CR "bare".
  2240.  
  2241.    SET TELNET MODE { NVT-ASCII, BINARY }
  2242.      NVT-ASCII is the normal TELNET mode; you may also select BINARY if
  2243.      needed.  Mode selection is effective only when starting a connection, and
  2244.      can be overriden by TELNET negotiations.
  2245.  
  2246.    SET TELNET DEBUG-OPTIONS { ON, OFF } = OFF
  2247.      In v3.14 you can display TELNET option negotiations on the screen capture
  2248.      them in screen dump or session log files, or print them, just like any
  2249.      other CONNECT-mode screen text. DEBUG-OPTIONS is useful for debugging
  2250.      misbehaving TELNET sessions.  Refer to the TELNET RFCs, or a TCP/IP book,
  2251.      for an explanation of what they mean.
  2252.  
  2253.  . MS-DOS Kermit now replies to traceroute requests, handles ICMP redirects.
  2254.  
  2255.  . TELNET window (i.e. screen) size (NAWS) negotiation.
  2256.      When using Kermit's internal Telnet and the remote host has agreed to the
  2257.      TELNET option to receive screen dimensions each time the Kermit screen
  2258.      changes size, then Kermit sends the appropriate TELNET Option report.
  2259.  
  2260. (24) MULTIPLE TCP/IP SESSIONS -- KERMIT'S TCP/IP SESSION MANAGER
  2261.  
  2262. MS-DOS Kermit 3.13 and later support up to six simultaneous TCP/IP sessions.
  2263. Each session is identified by a digit, 1 to 6.    The commands are:
  2264.  
  2265. SET PORT TCP <ip-hostname-or-address> [ <tcp-port-number> ]
  2266.   Starts a new session and assigns it a session number, 1 to 6.
  2267.    
  2268. In v3.14, command syntax was added to allow you to say whether a SET PORT TCP
  2269. <host> command should continue an existing session or start a new session, so
  2270. now it's possible to have multiple sessions to the same host:
  2271.  
  2272. SET PORT TCP/IP <host> <port> [ NEW ]
  2273.   Starts a new session to the given host, even if there is an existing session
  2274.   to that same host.  NEW is the default.
  2275.  
  2276. SET PORT TCP/IP <host> <port> RESUME
  2277.   Resumes a current session on the given host.
  2278.  
  2279. SET PORT TCP/IP <session number 1..6>
  2280.   Resumes a current session whose session identification is 1..6.
  2281.   Use SHOW SESSION to see which session numbers are defined.
  2282.  
  2283. \v(session)
  2284.   This variable contains the current TCP/IP session number, 1 to 6.
  2285.  
  2286. \KnextSession
  2287.   New CONNECT-mode keyboard verb to toggle instantaneously among active TCP/IP
  2288.   sessions, round-robin style.
  2289.  
  2290. Alt-n
  2291.   This is the default key assignment for the \KnextSession verb.
  2292.  
  2293. SHOW SESSIONS
  2294.   Displays current sessions.
  2295.  
  2296. DEFINE SESSION1 <text>
  2297.   Defines a macro to be executed when switching to session 1.
  2298.   SESSION2 is for session 2, and so on, through SESSION6.
  2299.  
  2300. The terminal-emulation status line shows current session number and name.
  2301. Most communication- and terminal-related settings are preserved for each
  2302. session, including the last terminal screen, the key map, the terminal type,
  2303. echoing, etc.  Use the SESSIONn macros to take care of any items that are not
  2304. preserved.  The screen rollback buffer is common to all sessions.
  2305.  
  2306. Suppose you normally access two TCP/IP hosts, a DEC VMS and a Data General
  2307. AOS/VS system, and you would like to keep sessions to both alive at once.
  2308. Alt-n switches between them instantaneously, and you can also define
  2309. convenient macros for use at the command prompt or in script programs, such as
  2310. the following, which make the initial connection to each host, and then
  2311. redefine themselves to continue the same session thereafter:
  2312.  
  2313. define vax -
  2314.   telnet vax 23 vt320,-
  2315.   if success assign vax telnet \v(session)
  2316.  
  2317. define dg -
  2318.   telnet dg 23 d463,-
  2319.   if success assign dg telnet \v(session)
  2320.  
  2321. (TELNET is a macro defined in the MS-DOS Kermit MSCUSTOM.INI file.  See
  2322. KERMIT.HLP for more information.)
  2323.  
  2324. When a connection is closed, the port number is lost.  So if you had a TCP/IP
  2325. session to a non-TELNET port (i.e. not 23), and it was closed, and you
  2326. continue the session, it will connect to port 23 rather than to the session's
  2327. previous port.
  2328.  
  2329. (25) SMALL MEMORY-SIZE EDITIONS
  2330.  
  2331. A special "medium" edition of MS-DOS Kermit v3.14 shrinks the program
  2332. executable from about 262KB to 181KB (before packing; see next paragraph) by
  2333. removing all networking support and graphics terminal emulation.  A "lite"
  2334. edition removes all terminal emulation and networking support, and so
  2335. communication is possible only in remote mode (e.g. on a BBS), or via script
  2336. programs.  The size is about 121KB.  Features omitted are displayed on the
  2337. startup herald and are also CHECK-able with the CHECK command.  Lite editions
  2338. require separate patch files.
  2339.  
  2340. In version 3.14, Kermit executables are built (for the first time) with the
  2341. "pack" linker option, which shrinks the size of the .EXE file.
  2342.  
  2343.             Normal    Packed    Savings
  2344.   Full       262K      228K       34K
  2345.   Medium     181K      158K       23K
  2346.   Lite       121K      103K       18K
  2347.  
  2348. (26) BBS OPERATORS GUIDE
  2349.  
  2350. Most BBSs today either lack support for Kermit protocol, or supply a poor
  2351. implementation.  Now BBSs can use the Real Thing, MS-DOS Kermit itself, as an
  2352. external protocol.  "Kermit Lite" is a tiny but full-featured Kermit protocol
  2353. and script execution engine.
  2354.  
  2355. Why add or upgrade Kermit file transfer?
  2356.  
  2357.  1. Make your BBS accessible to Kermit software programs, which do not
  2358.     include support for other protocols.  Recent releases of MS-DOS and
  2359.     OS/2 C-Kermit include ANSI terminal emulation, favored by BBSs.
  2360.  
  2361.  2. Kermit file transfer is (at least arguably) more robust than other
  2362.     protocols used on BBSs.  That is, it works better when connections
  2363.     are noisy.  And, properly implemented and configured, it is just as
  2364.     fast or faster than other protocols.
  2365.  
  2366.  3. Kermit protocol survives 7-bit connections; most other protocols
  2367.     do not.  This is important when callers arrive over public data networks
  2368.     and other non-direct paths.
  2369.  
  2370.  4. Kermit protocol can be used by Internet-accessible BBSs and other
  2371.     services.  It works well over TELNET connections, even 7-bit ones,
  2372.     and Kermit TELNET clients are available for most popular operating
  2373.     systems: DOS, Windows, OS/2, UNIX, VMS, etc.
  2374.  
  2375.  5. Only Kermit protocol is capable of converting from one text character
  2376.     set to another during text-file transfer: This is vital as the BBS
  2377.     world becomes more international, and the BBS client hardware more
  2378.     heterogeneous.  Remember: Not all computers use IBM Code Pages to
  2379.     to represent non-English text!
  2380.  
  2381.  6. MS-DOS Kermit can "autoconfigure" callers for maximum performance,
  2382.     and can initiate "autoupload" and "autodownload" operations without user
  2383.     intervention, provided the client software is MS-DOS Kermit 3.13 or
  2384.     later, or C-Kermit 5A(190) or later for UNIX, OS/2, or VMS.
  2385.  
  2386. Follow the instructions that come with your BBS software for installing
  2387. external protocols.  Generally, you must disable the internal Kermit protocol,
  2388. if there is one.  For example, set the security level of the internal Kermit
  2389. to "sysop", or at least out of reach of the normal caller.  Then add Kermit as
  2390. an external protocol.  This typically involves assigning a command letter to
  2391. the protocol and defining two MS-DOS batch files to be executed for uploads
  2392. and downloads, respectively.
  2393.  
  2394. (26.1) USING PORTS AND DRIVERS
  2395.  
  2396. MS-DOS Kermit operates over existing drivers and over existing settings of
  2397. standard serial ports. It leaves modem signal DTR asserted (high) when it
  2398. exits so a connection can persist beyond Kermit's use of the line.  It uses
  2399. the existing port speed unless instructed otherwise, and it expects the port
  2400. to configured for 8 bits no parity (parity is handled internally by software).
  2401. If the communications hardware employs parity in hardware then tell Kermit to
  2402. use the same parity (command SET PARITY).
  2403.  
  2404. Fossil drivers (see Section 2 above) can be used by telling Kermit to SET PORT
  2405. FOSSIL n, where n is the Fossil port number (1 to 99).  This enables efficient
  2406. block-mode i/o with the fossil driver.  Speed and flow control must be set in
  2407. the fossil driver, not in Kermit.  You can also use SET PORT BIOSn, n=1-4;
  2408. less efficient, but might work if SET PORT FOSSIL does not.  If the hardware
  2409. ports are accessed via SET PORT COM1 or SET PORT 1 then the fossil driver
  2410. might or might not survive; please be careful.
  2411.  
  2412. Of course, you can also use Kermit's built-in COM port driver via SET PORT
  2413. COM1 thru COM4; this method will be fastest of all, but is limited to standard
  2414. COM ports.  Non-standard serial port hardware and IRQs for COM1 to 4 are
  2415. stated to Kermit with command SET COMn <port> <irq>, where again n=1-4.  COM
  2416. ports above 4 (e.g. on Digiboards) can be accessed via Fossil drivers or by
  2417. other tricks (see KERMIT.BWR).
  2418.  
  2419. (26.2) GENERAL SETUP
  2420.  
  2421. Kermit commands appearing in the BBS's MSKERMIT.INI file might be:
  2422.  
  2423.   SET PARITY NONE          ; Usually no parity on BBS
  2424.   SET BLOCK 3           ; CRC checking for security 
  2425.   SET RECEIVE PACKET 2000  ; Long packets from client, upper limit
  2426.   SET WINDOW 4           ; Sliding windows, upper limit
  2427.   SET FILE TYPE BINARY       ; Fine for all DOS to DOS transfers(*)
  2428.   SET CONTROL UNPREFIX ALL ; Unprefix all control characters except...
  2429.   SET CON P 0 1 3 13 17 19 129 131 141 145 147
  2430.   SET RECEIVE PATH OFF     ; Restrict uploads to current directory
  2431.   SET FILE COLL OVERWRITE  ; Incoming files overwrite old files of same name
  2432.   SET CARRIER ON           ; Recover from hangups immediately
  2433.   SET FILE DISPLAY QUIET   ; No file transfer display
  2434.   SET BELL OFF             ; Be quiet
  2435.   SET EXIT WARNING OFF     ; Unattended, don't ask for permission to exit
  2436.   LOG TRANSACTION          ; Log transfers to TRANSACT.LOG if desired(**)
  2437.   DEFINE BSEND SET FILE TYPE BINARY, SEND \%1 ; Use macros for command
  2438.   DEFINE TSEND SET FILE TYPE TEXT, SEND \%1   ; line brevity...
  2439.  
  2440.  (*) Unless character-set translation is needed.
  2441. (**) Or specify a different filename; generate a unique one using \v(ndate)
  2442.      and \v(ntime).
  2443.  
  2444. The MSKERMIT.INI settings can be overriden on the Kermit command line as
  2445. illustrated below.
  2446.  
  2447. The BBS software should invoke MS-DOS Kermit with "command-line arguments",
  2448. i.e. commands to be executed, given on the same line as the "kermit" command.
  2449. Multiple commands can be separated by commas.  Kermit will execute the
  2450. commands and then exit automatically when done.
  2451.  
  2452.   WARNING: There is a limit to how long a command line can be, usually
  2453.   about 127.  If you need to issue more commands than will fit on the
  2454.   command line, simply collect them into a file, and then invoke Kermit
  2455.   with a TAKE command for that file.
  2456.  
  2457. Communication parameters should be given on the Kermit command line for each
  2458. session, along with the file transfer commands.  The initialization file is
  2459. read and executed, then the command line material is executed, and finally
  2460. Kermit exits when done.  Examples (note the use of BSEND and TSEND macros):
  2461.  
  2462.   kermit set port fossil 17, bsend foo.zip
  2463.   kermit set port 2, set speed 57600, set flow rts/cts, bsend bar.zip
  2464.   kermit set com3 \x3e8 5, set por 3, set flow rts/cts, set sp 57, bs baz.zip
  2465.   kermit set port bios1, tsend oofa.txt
  2466.  
  2467. Real Kermit software, including MS-DOS Kermit 3.13 and later and C-Kermit
  2468. 5A(190) and later (OS/2, UNIX, and VMS versions), when used to dial up a BBS,
  2469. can be configured automatically by the BBS software provided the caller has
  2470. "set terminal apc on" to enable this feature.  The BBS software can then set
  2471. the optimal file transfer parameters in calling Kermit program, and also
  2472. initiate up- and downloads automatically.  Read section 10, THE APC ESCAPE
  2473. SEQUENCE, in this document.  For example:
  2474.  
  2475.   kermit -f download.scr, set file type <text-or-binary>, send <filename>
  2476.  
  2477. where DOWNLOAD.SCR might look like this:
  2478.  
  2479.   SET BLOCK 3 ; etc etc, as above
  2480.   APC SET WINDOW 4, SET REC PACK 2000, RECEIVE    
  2481.  
  2482. (26.3) FILE TRANSFER
  2483.  
  2484. When MS-DOS Kermit is to receive files, it can be invoked in several ways.
  2485. The transfer mode (text or binary) is determined by the file sender, unless
  2486. it is an extremely primitive Kermit implementation that does not support
  2487. attribute (A) packets (in which it must be given an explicit SET FILE TYPE
  2488. command first):
  2489.  
  2490.  1. Receive a file or files, and store them according to the name they come
  2491.     with; if the incoming name includes a disk letter or directory name,
  2492.     use them when storing the file:
  2493.  
  2494.       kermit set receive pathnames on, receive
  2495.  
  2496.  2. Receive files, store them with the name they were sent with, but in the
  2497.     current directory:
  2498.  
  2499.       kermit set receive pathnames off, receive
  2500.  
  2501.  3. Receive files, store them under their own names, but in the TEMP directory
  2502.     on the D disk:
  2503.  
  2504.       kermit receive d:\temp
  2505.  
  2506.  4. Receive a file, store it with the name "oofa.txt" in the current
  2507.     directory, no matter what name it was sent with:
  2508.  
  2509.       kermit receive oofa.txt
  2510.  
  2511.  5. Receive a file, store it as d:\uploads\abc.xyz, no matter what name
  2512.     it was sent with:
  2513.  
  2514.       kermit receive d:\uploads\abc.xyz
  2515.  
  2516. When MS-DOS Kermit is to send files, it can be given the name(s) of the
  2517. file(s) to send in several ways.  In this case, Kermit should be told what
  2518. mode, text or binary, in which to send the file.  The default mode is text,
  2519. but since the MSKERMIT.INI file might have changed the default, it is best
  2520. to be explicit about it.
  2521.  
  2522.  1. A single filename on the command line, as in these examples:
  2523.  
  2524.       kermit set file type text, send oofa.txt
  2525.       kermit set file type binary, send oofa.zip
  2526.       kermit set file type binary, send d:\zips\oofa.zip
  2527.  
  2528.     or, using the BSEND and TSEND macros (defined above) for brevity:
  2529.  
  2530.       kermit set tsend oofa.txt
  2531.       kermit set bsend oofa.zip
  2532.       kermit set bsend d:\zips\oofa.zip
  2533.  
  2534.  2. A DOS-format wildcard specification on the command line, as in:
  2535.  
  2536.       kermit tsend *.txt
  2537.       kermit bsend *.zip
  2538.  
  2539.  3. An indirect file specification, denoted by "@" as the first letter in
  2540.     the filename, in which the named file contains a list of the names of
  2541.     the files to be sent:
  2542.  
  2543.       kermit set file type text, send @files.lst
  2544.  
  2545.     The list of filenames can contain one filename per line, or it can
  2546.     contain a comma-separated list of names, or any mixture of the two.
  2547.     Filenames can contain disk letters, directory names, and DOS-format
  2548.     wildcards.
  2549.  
  2550.  4. Any other way you can think of, such as telling Kermit to execute a
  2551.     command file:
  2552.  
  2553.       kermit take download.scr
  2554.  
  2555. Kermits negotiate operating modes to find the greatest common denominator.
  2556. The sending Kermit makes the initial offer and the receiver responds.  Thus
  2557. the BBS operator should place upper limits on packet length, sliding window
  2558. slots, and so on which suit the highest-performance clients and still let the
  2559. client negotiate operating conditions within those limits.  We recommend long
  2560. packets, say 2000 bytes each, and four window slots as efficient parameters;
  2561. this consumes 8KB of file buffer memory (allocated dynamically from DOS for
  2562. each file transfer).  For most PC-based BBSs a default setting of SET FILE
  2563. TYPE BINARY is suitable because the transfers are between like file systems
  2564. (DOS to DOS).
  2565.  
  2566. File transfer operations may be logged to a file with the command LOG
  2567. TRANSACTION (by default, the file is called TRANSACT.LOG).
  2568.  
  2569. Uploads can be restricted to the current directory using SET RECEIVE
  2570. PATHNAMES OFF.  This is the default for KERLITE.EXE, but for larger versions
  2571. (those with terminal emulators) the default is ON.
  2572.  
  2573. To increase throughput to the last bit per second you may unprefix selected
  2574. control codes via the SET PREFIX command.  Kermit will not unprefix XON/XOFF
  2575. codes if they are used for flow control, though we do recommend hardware flow
  2576. control (RTS/CTS) for best efficiency.  Beware that many intervening
  2577. communications boxes may not pass all control codes, and which codes are fatal
  2578. is not testable from the outside.  The biggest gain from unprefixing control
  2579. codes is usually seen with pre-compressed files, and that gain is about 25%
  2580. (which is the proportion of control to printable bytes in a random mixture).
  2581.  
  2582. APPENDIX I:  NEW TERMINAL EMULATIONS - TECHNICAL SUMMARY
  2583.  
  2584. DEC VT, Heath, and Tektronix terminal emulation specifications are given in
  2585. Appendix II of "Using MS-DOS Kermit".  The following sections briefly specify
  2586. Kermit's ANSI, Data General, and Wyse emulations.
  2587.  
  2588. I.1. ANSI TERMINAL EMULATION
  2589.  
  2590. ANSI terminal emulation is a VT100 subset but with:
  2591.  
  2592.  . SET TERMINAL CHARACTER-SET TRANSPARENT, with PC code page 437 is used
  2593.    transparently, favored by BBSs.
  2594.  . The cursor goes to the home (upper left corner) after an erase in display
  2595.    operation (ESC [ Pn J).
  2596.  . Ctrl-L is treated as "home and clear screen".
  2597.  . Ctrl-N (normally Shift-Out) is ignored.
  2598.  . Host queries about terminal are answered as if a VT100.
  2599.  . The initial screen coloring is forced to be dim white on black.
  2600.  . The terminal status line shows terminal type ANSI.
  2601.  
  2602. I.2. DATA GENERAL DASHER TERMINAL EMULATION
  2603.  
  2604. Items marked with a * are not implemented in MS-DOS Kermit.  XON/XOFF flow
  2605. control should be set to outgoing only or none or RTS/CTS because Ctrl-Q/S are
  2606. used as D463/D470 commands.  Special D463/D470 Kermit command:
  2607.  
  2608.   SET TERMINAL COMPRESSED-TEXT {GRAPHICS, TEXT-132}
  2609.  
  2610. The default is GRAPHICS, meaning compressed font characters are drawn as 5x14
  2611. dot pattern cells in IBM PC graphics mode, simulating a text screen.  The
  2612. compressed font used in Graphics mode is Code Page CP437 or CP850.  TEXT-132
  2613. means switch to 132-column EGA/VGA text mode and show all text with that font,
  2614. which only works if your graphics adapter supports this mode.
  2615.  
  2616. Graphics is way slower than text and only 128 character cells are available
  2617. across the screen (640 dots / 128 yields 5 dots per character cell including a
  2618. separation dot).  If text is commanded and the display adapter cannot be
  2619. switched to 132 column mode, graphics is used instead.  Compressed fonts are
  2620. available only on EGA/VGA adapters and above, not on Mono, CGA, or Hercules.
  2621.  
  2622. Note on line drawing, RS L and the RS G series of commands: the drawing
  2623. remains intact as long as the graphics screen is viewed.  It is not preserved
  2624. if the user returns to the Kermit prompt or switches to the text screen (the
  2625. ALT - key, keyboard verb \ktermtype): the basic screen is first drawn from the
  2626. text screen and then line drawing dots are superimposed.  Leaving this screen
  2627. means the text screen could change and thus a fresh version of it will always
  2628. overwrite the existing material.  The line drawings are not preserved
  2629. separately from the underlying simulated text screen.  The Data General
  2630. CEO_DRAW program provides a REFRESH command to restore graphics images.
  2631.  
  2632. A D463 terminal is a monochrome high-resolution text and graphics terminal, a
  2633. D470 is a similar full-color terminal.  The D470 has fewer screen dots than
  2634. the D463 and uses a smaller graphics crosshair.  A D463 graphics screen is 800
  2635. dots across by 576 high, a D470 graphic screen is 640 across by 480 high with
  2636. 16 colors.  Aside from a few status reports and the graphics details both
  2637. terminals use the same core emulator.  VTxxx submode is not supported on
  2638. either terminal; please use Kermit's VT320 instead.
  2639.  
  2640. When the display adapter is in graphics mode character fonts are sought from
  2641. the display adapter and, when Code Pages are active, from the DOS Code Page
  2642. file EGA.SYS.  Normal-width characters can be drawn from that file, but
  2643. compressed characters will be shown from a CP850 font if the current Code Page
  2644. is other than CP437.  The DOS file EGA.SYS must be in the current directory on
  2645. along the PATH.  CGA, monochrome, and Hercules video display adapters cannot
  2646. use Code Pages; only EGA/VGA and above can.
  2647.  
  2648. Special codes sent by DG keyboard function keys, not preassigned to PC keys
  2649.  
  2650.  DG Key name        Kermit Verb       D463/D470 Data General native mode
  2651.                  prefix     second character
  2652.  F1..F15        dgF1..dgF15       RS    q,r,s,t,u, v,w,x,y,z, {,|,},~,p
  2653.  shift F1..F15        dgSF1..dgSf15  RS    a,b,c,d,e, f,g,h,i,j, k,l,m,n,`
  2654.  control F1..F15    none       RS    1,2,3,4,5, 6,7,8,9,:, ;,<,=,>,0
  2655.  ctrl-shft F1..F15  none       RS    !,",#,$,%, &,',(,),*, +,comma,-,.,
  2656.                                 <space>
  2657.  C1..C4            dgC1..dgC4       RS    \,],^,_
  2658.  shift C1..C4        none       RS    X,Y,Z,[
  2659.  Uparrow        uparr       Control-W
  2660.  Rightarrow        rtarr       Control-X
  2661.  Leftarrow        lfarr       Control-Y
  2662.  Downarrow        dnarr       Control-Z
  2663.  Home            none       Control-H
  2664.  shift Uparrow        none       RS Control-W
  2665.  shift Rightarrow   none       RS Control-X
  2666.  shift Leftarrow    none       RS Control-Y
  2667.  shift Downarrow    none       RS Control-Z
  2668.  shift Home        none       RS Control-H
  2669.  Erase EOL        none       Control-K
  2670.  Erase Page        none       Control-L
  2671.  Cmd-Print        none       RS Control-U
  2672.  shift Cmd-Print    none       RS Control-A
  2673.  POINT            dgPoint       Full graphics cursor position report
  2674.  SPCL            dgSPCL       none, used as prefix for compounds
  2675.  NC            dgNC       none, toggles screen between Normal and
  2676.                    Compress fonts, same as if the host sent
  2677.                    RS F J or RS F K.
  2678.  
  2679. The mouse: When Kermit is in graphics mode, a Microsoft-compatible mouse may
  2680. be used to control the graphics crosshair. The left mouse button sends the
  2681. POINT command, and the right button sends the dgF1 keyboard verb.  The DG F1
  2682. key frequently means "execute" to many utilities.  On DG keyboards POINT is
  2683. the key combination CMD CURSOR-TYPE.
  2684.  
  2685. RECEIVED CODES AND ACTIONS
  2686.  
  2687. Note: <n> is the lower four bits of a byte, <nn> is the lower four bits of two
  2688. consecutive bytes as high- then low-order portions of an 8-bit result.  Such
  2689. input bytes may have anything in the upper four bits.
  2690.         
  2691.  Control Seq    Hex        Description of Action
  2692.  Control-@    00h        Used as data within a command
  2693.  Control-A    01h        Print form. Only bold characters in current 
  2694.                 window at cursor row and below, followed by 
  2695.                 sending a Control-F character to the host.
  2696.  Control-B    02h        Reverse video off
  2697.  Control-C    03h        Blink enable, affects only new chars in Kermit
  2698.  Control-D    04h        Blink disable, affects only new chars
  2699.  Control-E    05h        Read window address
  2700.                 Report is Control-_<col><row>  in binary
  2701.  Control-G    07h        Bell
  2702.  Control-H    08h        Window home, go upper left corner of window
  2703.  Control-I    09h        Tab horizontally
  2704.  Control-J    0Ah        Newline, can scroll window if Roll Mode is on,
  2705.                 else cursor wraps to upper left corner (Home).
  2706.                 Landing on a protected character yields a
  2707.                 cursor right operation.
  2708.  Control-K    0Bh        Erase cursor to end of line (stops on first
  2709.                 protected mode character)
  2710.  Control-L    0Ch        Erase window, cursor to window home
  2711.  Control-M    0Dh        Carriage return. Go to left margin. If that
  2712.                 character is protected then a cursor right
  2713.                 is performed.
  2714.  Control-N    0Eh        Blink on
  2715.  Control-O    0Fh        Blink off
  2716.  Control-P <col><row>    10h    Write window address, 255 is do not change.
  2717.                 Addresses are in unencoded binary.
  2718.  Control-Q    11h        Print window. All characters in current
  2719.                 window at cursor row and below, followed by
  2720.                 sending a Control-F character to the host.
  2721.  Control-R    12h        Roll Mode enable (default)
  2722.  Control-S    13h        Roll Mode disable
  2723.  Control-T    14h        Underscore on
  2724.  Control-U    15h        Underscore off
  2725.  Control-V    16h        Reverse video on
  2726.  Control-W    17h        Cursor up. Wraps top to bottom in the window.
  2727.                 Landing on a protected character yields a
  2728.                 cursor left operation.
  2729.  Control-X    18h        Cursor right. End of line wrap executes New
  2730.                 Line. Landing on a protected character repeats
  2731.                 the cursor right command (stops at start).
  2732.  Control-Y    19h        Cursor left. Start of line wrap executes a
  2733.                 cursor up at right margin. Repeats if a
  2734.                 protected mode character is encountered, and
  2735.                 stops at starting point if looping.
  2736.  Control-Z    1Ah        Cursor down, one line, same column. Wraps
  2737.                 in window bottom to top, landing on a
  2738.                 protected character yields a cursor right.
  2739.  Control-[    1Bh        Escape char 
  2740.  Control-\    1Ch        Dim on
  2741.  Control-]    1Dh        Dim off
  2742.  Control-^    1Eh        DG escape char (ASCII name RS)
  2743.  Control-_    1Fh        Used as data within a command
  2744.  
  2745.  
  2746.  DG Escape Seq            Description of Action
  2747.  
  2748.  RS A <n>            Set foreground color (D470). A D463 uses this
  2749.                 only for polygon fill. Kermit uses D470 style.
  2750.                 <n> is a color code whose 4 lower bits mean:
  2751.                  0 = black, 1..8 = bold blue, green, cyan, red,
  2752.                      magenta, yellow, white, respectively, and
  2753.                  9 = dark grey, 10..16 = dim versions of above.
  2754.  RS B <n>            Set background color (D470). As above
  2755.  RS C                Read model id
  2756.                 Report is RS o # <m><x><y>
  2757.                 <m> is ASCII 6    (D463/D413)
  2758.                     or 44 decimal (D470)
  2759.                 <x> is 010CP000 binary byte
  2760.                     C = 0 if 7 bit, = 1 if 8 bit comms
  2761.                     P = 0 if not, = 1 if printer is available
  2762.                 <y> is 0101LLLL binary byte
  2763.                     LLLL is keyboard nationality
  2764.                     0010 Norwegian
  2765.                     0011 Swiss/French (French in Kermit)
  2766.                     0100 Swiss/German (Swiss in Kermit)
  2767.                     1010 French-Canadian
  2768.                     0110 Katakana (not implemented in Kermit)
  2769.                     1000 French-Canadian
  2770.                     1001 US English
  2771.                     1010 United Kingdom
  2772.                     1011 French
  2773.                     1100 German
  2774.                     1101 Swedish/Finnish
  2775.                     1110 Spanish
  2776.                     1111 Danish/Norwegian
  2777.  
  2778.  RS D                Reverse video on
  2779.  RS E                Reverse video off
  2780.  RS H                Scroll up
  2781.  RS I                Scroll down
  2782.  RS J                Insert character
  2783.  RS K                Delete character
  2784.  
  2785.  RS F 7 <nn>            *Select printer NRC
  2786.  RS F 8                *Display char generator contents, diagnostics
  2787.  RS F 9                Fill screen with grid, diagnostics
  2788.  RS F ? 0            Simulprint off (print and display together)
  2789.  RS F ? 1            Simulprint on  (print and display together)
  2790.  RS F ? 2            Print pass through off (transparent printing)
  2791.  RS F ? 3            Print pass through on (transparent printing)
  2792.  RS F ? 5            *Window bit dump
  2793.  RS F ? 6            *Form bit dump
  2794.  RS F ? 7            VT style autoprint off (whole line printing)
  2795.  RS F ? 8            VT style autoprint on (whole line printing)
  2796.  RS F ? :            Print Screen. All characters on the screen,
  2797.                 followed by sending a Control-F character 
  2798.                 to the host.
  2799.  RS F ; <command>        *Data trap mode, debugging (use SET DEBUG ON)
  2800.  RS F <                *Perform UART loopback, diagnostics
  2801.  RS F > <char>            Fill screen with character, diagnostics
  2802.  RS F A                Reset the terminal emulator
  2803.  RS F B <nn><n>..<nn><n>    Set Windows (each is full width of screen
  2804.                 and each scrolls h/v independently)
  2805.             <nn> number of lines in window (24 == full screen)
  2806.             <n>=0/1 normal/compressed (compress=graphics fake-text
  2807.                 or 132 columns, user selectable, in Kermit)
  2808.                 Command ends on 24 lines or on <00><n>.
  2809.                 Screen is auto centered. Cursor to screen home.
  2810.  RS F C <nn>            Scroll left <nn> columns (if Horiz scroll is
  2811.                 enabled)
  2812.  RS F D <nn>            Scroll right <nn> columns (ditto)
  2813.  RS F E                Erase screen, cursor to screen home, window
  2814.                 settings are preserved.
  2815.  RS F F                Erase unprotected characters from the cursor
  2816.                 position to the end of the window.
  2817.  RS F G                Screen home, go to upper left corner of screen.
  2818.                 Landing on a protected character yields a
  2819.                 cursor right operation.
  2820.  RS F H                Insert line, text moves down in window
  2821.  RS F I                Delete line, text moves up in window. If the
  2822.                 cursor is on a protected character a cursor
  2823.                 right command is executed.
  2824.  RS F J                Select normal spacing (80 column mode)
  2825.  RS F K                Select compressed spacing (132 column mode)
  2826.  RS F L                Protect on, applies to chars until Protect off,
  2827.  RS F M                Protect off
  2828.  RS F N <nnn><n><n>        Change attributes in current window
  2829.             <nnn> number of chars to change, starting at cursor
  2830.             <n> attributes to set
  2831.                 bit 3 dim
  2832.                 bit 2 reverse video
  2833.                 bit 1 underscore
  2834.                 bit 0 blink
  2835.             <n> attributes to reset, as above
  2836.             Both set and reset means toggle. 
  2837.  RS F O                Read horizontal scroll offset
  2838.                 Report is RS o : <nn>    where <nn> is window
  2839.                 horizontal scroll value (columns)
  2840.  RS F P <nn><nn>        Write screen attributes
  2841.             <nn> absolute screen column for cursor
  2842.             <nn> absolute screen row for cursor
  2843.  RS F Q <n>            Set cursor type
  2844.             <n>    cursor type
  2845.              0    disable/hide, and save current
  2846.              1    blinking 
  2847.              2    reverse video block (PC cursors always blink)
  2848.              3    blinking reverse video block
  2849.              4    underscore
  2850.              5    display cursor with saved attributes
  2851.  RS F R <char><dd>..<dd>    *Define character, 12 or 10 <dd> items, 
  2852.                  10x12 cell for D463, 8x10 for D470.
  2853.  RS F S <nn>            Select Character Set
  2854.            <nn>    character set
  2855.         00    keyboard language
  2856.         01    US ASCII
  2857.         02    UK ASCII (sharp sign # relaced by Pound Sterling)
  2858.         03    NRC French
  2859.         04    NRC German
  2860.         05    NRC Swedish/Finnish
  2861.         06    NRC Spanish
  2862.         07    NRC Danish/Norwegian
  2863.         08    NRC Swiss
  2864.         09    NRC Kata Kana (G0)    not supported in Kermit
  2865.         0E    DG International
  2866.         0F    Kata Kana (G1)        not supported in Kermit
  2867.         11    Line Drawing
  2868.         13    DG Special Graphics (CP437 GR)
  2869.         14    DEC Multinational
  2870.         15    DEC Special Graphics (line drawing)
  2871.         1D    Low PC Term (CP437 GL)
  2872.         1E    High PC Term (CP437 GR)
  2873.         1F    Latin1 (ISO 8859-1)
  2874.         20 et seq  soft fonts        not supported in Kermit
  2875.  
  2876.  RS F T <n>            *Set scroll rate
  2877.             <n>
  2878.             0    disable smooth scroll
  2879.             1    enable smooth scroll at 5 rows/sec
  2880.             2    enable smooth scroll at 10 rows/sec
  2881.  RS F U <n>            Select 7/8 bit operation
  2882.                 <n>, 0 = 7-bits, 1 = 8-bits in and out
  2883.  RS F V                Protect enable, permit protect on/off to work
  2884.  RS F W                Protect disable
  2885.  RS F X <nn><nn>        Set margins
  2886.             <nn>, first is left margin, second is right margin
  2887.             both in the range of 0 to 206, inclusive. Screen
  2888.             may be scrolled to make both margins visible (left
  2889.             margin dominates). Cursor moves to left margin.
  2890.  RS F Y <nn><nn><nn>        Set alternate margins, relative to current
  2891.             <nn> row to place cursor on, 0..24, wrt window top.
  2892.             <nn> column of new left margin, wrt permanent left.
  2893.             <nn> column of new right margin, wrt new left.
  2894.             255 value means do not change
  2895.                 Disables horizontal scrolling
  2896.  RS F Z                Restore normal margins, removes alt margins,
  2897.                 reenables horizontal scrolling
  2898.  RS F ]                Horizontal scroll disable
  2899.  RS F \                Delete line between margins (push up)
  2900.  RS F [                Insert line between margins (push up)
  2901.  RS F ^                Horizontal scroll enable (default)
  2902.  RS F _ <nn><nn>        Show columns (align window l/r to show text)
  2903.             <nn> left most col to display, 0..206
  2904.             <nn> right most col to display, 0..206
  2905.             Screen may be scrolled to make both margins visible 
  2906.             (left margin dominates).
  2907.  
  2908.  RS F `                Print Pass Through on (not transparent print)
  2909.  RS F a                Print Pass Through off
  2910.  RS F b                Read screen address (cursor position)
  2911.                 Report is RS o 8 <nn><nn>   for col,row
  2912.  RS F c <n><n><n><n>        *Set color map, D470. Use Kermit command
  2913.                 Set Terminal Color.
  2914.  RS F d                Read characters remining
  2915.                 Report is RS o 9 <high><low> (binary)
  2916.                 Always zero remaining in Kermit
  2917.  RS F e <n><n>            Reserve character (no action in Kermit, none
  2918.                 is needed.)
  2919.  RS F f <n>            Set keyboard language
  2920.             <n>
  2921.             0    set language to default (National)
  2922.             1    set language to GL=ASCII, GR=DG International
  2923.             2    set language to GL=ASCII, GR=Latin1 ISO 8859.1
  2924.  
  2925.  RS F h                *Push
  2926.  RS F i                *Pop
  2927.  RS F k <mode><key><length><string> *Host programmable function keys
  2928.  RS F m 0            *Read cursor contents, diagnostics
  2929.  RS F m 4            *Character loopback, diagnostics
  2930.  RS F m 5            *Hot key switch, dual emulation
  2931.  RS F m 6            *Read bit contents, diagnostics
  2932.  RS F r <n><pos><time>        *Set clock time
  2933.  RS F q <nn><nn>        *Deallocate character sets
  2934.  RS F s <n>            *Save/restore screen contents
  2935.                 <n> 0=save, 1=restore
  2936.  RS F t                Report screen size
  2937.                 Reports RS o <nn><nn><nn><nn><status>
  2938.                 rows, columns(207), rows in window, columns in 
  2939.                 window (right-left margins+1), status=70h
  2940.  RS F v    <r1><c1><r2><c2>    Read window contents
  2941.                 Reports chars in window from row1, col1
  2942.                 to row2, col2, without attributes
  2943.  RS F w                Read new model id
  2944.             Reports RS o w <class><service><rev><name><reserved>
  2945.             <class>    is 8        D460/D470 level
  2946.             <service> is 01
  2947.             <revision> is 00    firmware rev (Kermit = 0)
  2948.             <name> is "D463       "    (8 bytes)
  2949.                    or "D470       "    (for the D470 emulator)
  2950.             <reserved> is "       "    (4 bytes)
  2951.  
  2952.  RS F x <n>            Printer pass back to host
  2953.                 Reports RS R x 0 (mode cannot be set, Kermit)
  2954.  RS F z    <n>            Set 25th line mode
  2955.             <n>
  2956.             0    display status line
  2957.             1    put msg on line, msg is <nn>text
  2958.                 following this cmd
  2959.             2    *use as extra screen row
  2960.             3    blanked
  2961.  RS F { <nn><n>            Set model id <nn> and graphics ability <n>
  2962.  RS F } <n><n>            Named save/restore cursor
  2963.                 <n> sets memory number, 0..15, for save
  2964.                 <n> 0=save to memory, 1=restore from memory
  2965.                 Saves/restores cursor location and shape.
  2966.  RS F ~ <nn>            *Switch emulation mode, dual emulation
  2967.  
  2968.  RS G 0 <nnn><nnn><nnn><nnn><nnn>  Arc (center x, center y, radius, start 
  2969.                 angle, stop angle). Angle is deg CCW from
  2970.                 +x axis. <nnn> are "location arguments."
  2971.                 Manual is in error on this item. DG screen
  2972.                 coordinates of 0..799 (x), 0..574 (y) D463
  2973.                 or 0..639 (x), 0..479 (y) D470.
  2974.  RS G 1 <nnn><nnn><nnn><nnn><n>    Bar. Arguments are lower left x,y corner
  2975.                 width, height, and <n> for foreground (1)
  2976.                 or background (0) filling color.
  2977.  RS G 8 <loc_list><null>    Line drawing <loc_list> is list of x,y pairs
  2978.                 using "location arguments".
  2979.  RS G @                Cursor attributes. Report is
  2980.                 RS o , <crosshair> 0 <crosssize> <tracked>
  2981.                 where <crosshair> is 0 or 1 for off/on,
  2982.                 <crosssize> is 1 for D463 and 0 for D470,
  2983.                 <tracked> is 0, 2, 4 or 6 for tracked devices
  2984.                 of none, keyboard, mouse, both, respectively.
  2985.  RS G A                Graphics cursor reset (no cursor, no tracking)
  2986.  RS G B                Graphics cursor on
  2987.  RS G C                Graphics cursor off
  2988.  RS G H <n>            Graphics cursor track
  2989.                 <n> bit field,    0 for nothing
  2990.                         2 for keyboard arrow keys,
  2991.                         4 for mouse, default nothing
  2992.  RS G I <n>            *D470, set graphics crosshair (cursor) color.
  2993.                  Not implemented because Kermit uses XOR with
  2994.                  existing screen dots.
  2995.  RS G : <loc><null>        Polygon fill (non-intersecting polygon)
  2996.                 <loc> is up to 255 x,y pairs of sequential
  2997.                 vertices, in location argument format.
  2998.  RS G p 1 <offset><pat><null>    Set pattern for line drawings. Kermit supports
  2999.                 only a 16 bit pattern, and no offset editing.
  3000.  RS G ? |            Read cursor location. Reports
  3001.                 RS o | <space><xxxxx><space><yyyyy><CR>
  3002.                 D463 Manual is in error and says RS O | etc.
  3003.  RS G > | <nnn><nnn>        Set cursor location, graphics crosshair.
  3004.  
  3005.  RS H                Scroll up (in window). Window text moves up
  3006.                 one line, blank line is inserted at bottom.
  3007.                 Cursor remains fixed on screen unless it is
  3008.                 on a protected character, then a cursor right
  3009.                 is executed.
  3010.  RS I                Scroll down (in window). Window text moves
  3011.                 down one line, blank line is inserted at top,
  3012.                 cursor remains fixed on the screen.
  3013.  RS J                Insert character. Insert a space at the curror,
  3014.                 push right, lose excess. First protected 
  3015.                 character is temporary right margin.
  3016.  RS K                Delete character at cursor position, pull
  3017.                 left. First protected character is temporary
  3018.                 right margin.
  3019.  
  3020.  RS L <loc_list><null>        Line drawing. Same as RS G 8 above.
  3021.  
  3022.  RS N                Shift out (GLeft pointed to G1)
  3023.  
  3024.  RS O                Shift in (GLeft pointed to G0, default)
  3025.  
  3026.  RS P @ <n>            *Unix mode
  3027.                 <n>, 0 = enter, 1 = exit Unix mode
  3028.  RS R @ <nn>            *Set row length
  3029.  RS R A 0 <nn><n>        *Set split screen mode, dual emulation
  3030.  RS R A 1 <nn>            *Set first row to display, dual emulation
  3031.  RS R B <type><ff><cs><graph>    *Set Device Options
  3032.  RS R C <ss><rr>        *Field attributes
  3033.             <ss>=<nn> set, <rr>=<nn> reset
  3034.             bit 4    blank (invisible)
  3035.             bit 3    dim
  3036.             bit 2    reverse video
  3037.             bit 1    underscore
  3038.             bit 0    blink
  3039.             toggle if both set and reset
  3040.  RS R D <ss><rr>        *Page Attributes
  3041.             <ss>=<nn> set, <rr>=<nn> reset
  3042.             bit 3    dim
  3043.             bit 2    reverse video
  3044.             bit 1    underscore
  3045.             bit 0    blink
  3046.             toggle if both set and reset
  3047.  RS R E <n>            Double high/wide characters (as char blank)
  3048.             <n>
  3049.              0    normal row
  3050.              1    double wide
  3051.              2    double high top
  3052.              3    double high bottom
  3053.              4    double high top/double wide
  3054.              5    double high bottom/double wide
  3055.             (The D470 does not support RS R commands)
  3056. --------------------
  3057. D470 ANSI-Mode Additions
  3058.  
  3059.  Control Seq    Hex        Description of Action
  3060.  Control-G    07h        Bell
  3061.  Control-H    08h        Backspace
  3062.  Control-J    0Ah        Newline, can scroll window if Roll Mode is on,
  3063.                 else cursor wraps to upper left corner (Home).
  3064.                 Landing on a protected character yields a
  3065.                 cursor right operation.
  3066.  Control-L    0Ch        Form Feed, treated as New Line
  3067.  Control-M    0Dh        Carriage return. Go to left margin. If that
  3068.                 character is protected then a cursor right
  3069.                 is performed.
  3070.  Control-N    0Eh        Shift out
  3071.  Control-O    0Fh        Shift in
  3072.  Control-Q    11h        XOFF flow control
  3073.  Control-S    13h        XON flow control
  3074.  Control-[    1Bh        Escape char
  3075.  SS2        8eh        Single shift 2
  3076.  SS3        8fh        Single shift 3
  3077.  DCS        90h        Device control sequence introducer
  3078.  CSI        9bh        Control sequence introducer
  3079.  ST        9ch        String (DCS) terminator
  3080.  
  3081.  ESC c                    Reset to initial state
  3082.  ESC D                    Index (can scroll screen upward)
  3083.  ESC E                    Next Line (LF)
  3084.  ESC M                    Reverse index (can scroll down)
  3085.  ESC N                    SS2
  3086.  ESC P                    DCS
  3087.  ESC O                    SS3
  3088.  ESC V                    Start protected area
  3089.  ESC W                    End protected area
  3090.  ESC \                    ST
  3091.  ESC Pg Pset                Select character set
  3092.             Pg is  ( ) * +    for G0..G3
  3093.     RS F S        Pset
  3094.     equiv        <space>0 .. <space>?  DRCB 1..16
  3095.             !0 .. !5    DRCB 17..22
  3096.             (all mapped to one set at the moment)
  3097.  
  3098.     00        0        keyboard language
  3099.     06        1        Spanish
  3100.     07        2        Danish/Norwegian
  3101.     08        3        Swiss
  3102.     0e        4        DGI
  3103.     10        5        WP/math/Greek
  3104.     11        6        Line Drawing
  3105.     100 (soft)    7        *Mosaics
  3106.     02        A        UK
  3107.     01        B        US
  3108.     05        H        Swedish/Finnish
  3109.     0f        I        *Katakana G1
  3110.     09        J        *Katakana G0
  3111.     04        K        German
  3112.     03        L        French
  3113.  
  3114.  CSI Pc @                Insert Pc spaces under cursor
  3115.  CSI Pc <space> @            Scroll left Pc columns
  3116.  CSI Pc A                Cursor up Pc rows
  3117.  CSI Pc <space> A            Scroll right Pc columns
  3118.  CSI Pc B                Cursor down Pc rows
  3119.  CSI Pc C                Cursor forward Pc columns
  3120.  CSI Pc D                Cursor backward Pc columns
  3121.  CSI row; col H                Cursor to row, column
  3122.  CSI Pc J                Erase in display (Pc = 0,1,2)
  3123.  CSI Pc K                Erase in line (Pc = 0,1,2)
  3124.  CSI Pc L                Insert Pc lines under cursor
  3125.  CSI Pc M                Delete Pc lines under cursor
  3126.  CSI Pc P                Delete Pc chars under cursor
  3127.  CSI Pc S                Scroll up Pc rows
  3128.  CSI Pc T                Scroll down Pc rows
  3129.  CSI row; col f                Cursor to row, column
  3130.  CSI Pc; Pc;.. h            Set mode
  3131.         Pc    mode
  3132.         1    guarded area transfer (for printing)
  3133.         6    erasure
  3134.         <0    roll
  3135.         <1    blink
  3136.         <2    horizontal scroll
  3137.         <3    DG ANSI mode
  3138.         <4    forms mode
  3139.         <5    margins mode
  3140.  CSI Pc i                Media copy (Pc= 0, <0, 4, 5)
  3141.  CSI mode; mode;... l            Reset mode (see Set mode above)
  3142.  CSI Pc; Pc;... m            Set graphic rendition
  3143.     Pc        action
  3144.     0        all visual attributes off
  3145.     2        dim on
  3146.     4        underscore on
  3147.     5        blink on
  3148.     7        reverse video on
  3149.     30 .. 37    bold foreground color (1=red, 2=green, 4=blue)
  3150.     38,39        ignored (reserved, default foreground color)
  3151.     40 .. 47    background color (always dim)
  3152.     48,49        ignored (reserved, default background color)
  3153.     >0 .. >7    dim foreground color
  3154.     =0 .. =7    background color (always dim)
  3155.  
  3156.  CSI Pc n                Device status report
  3157.                     Reports ESC [ 0 n  meaning ready
  3158.  CSI loc; width; height; color p    Draw bar
  3159.  CSI loc; radius; start; end <space> p    Draw arc
  3160.  CSI count; onvalue; offvalue q        Change attributes
  3161.  CSI <space> q                Read graphics cursor
  3162.  CSI <space> r                Read cursor attributes
  3163.  CSI Pc; set; num s            Read/Reserve characters
  3164.                     Reports 2000 chars available
  3165.  CSI color <space> s            *Graphics cursor color
  3166.  CSI Pc t                Read offset (Pc=0)/Show columns(Pc=1)
  3167.  CSI x; y <space> t            Write graphics cursor (to x,y)
  3168.  CSI row; col u                Screen position (RS F P style)
  3169.  CSI <space> u                Cursor (graphics) off
  3170.  CSI Pc; Pv; Pc; Pv;... v        Set parameters
  3171.      what    Pc        Pv
  3172.      defaults    0            *select defaults for below
  3173.      kbd lang    1        0    keyboard nationality char set in use
  3174.                 1    DGI (default
  3175.      7/8 bit    2        0    7-bit
  3176.                 1    8-bit
  3177.      cursor type 3        0    not displayed
  3178.                 1    blinking underscore
  3179.                 2    reverse video block
  3180.                 3    blinking reverse video block
  3181.      *scroll rate 4        0    jump
  3182.                 1    smooth, 5 bit rows/sec
  3183.                 2    smooth, 10 bit rows/sec
  3184.  
  3185.  CSI <space> v                Cursor (graphics) on
  3186.  CSI Pc; Pseries w            Set margins
  3187.         Pc = 0, exit alt temp margins
  3188.         Pc = 1, set absolute margins at left; right
  3189.         Pc = 2, set temp alt margins at row; left; right
  3190.  
  3191.  CSI <space> w                Cursor reset
  3192.  CSI x                    Read terminal configuration
  3193.  CSI Pc <space> x            Cursor track
  3194.  CSI n1; n2;...n16 y            Set print colors
  3195.  CSI n1; n2; n3; n4 <space> z        Set color map
  3196.  CSI <space> |                *Push
  3197.  CSI <space> }                *Pop
  3198.  
  3199.  
  3200.  DCS A <char><string of dd> ST        Define character
  3201.  DCS B <string of loc> ST        Draw line
  3202.  DCS C <offset><pattern> ST        Set Pattern (for line drawing)
  3203.  DCS D <string of nn n> ST        Set Windows
  3204.  DCS E <string of loc> ST        Draw polygon
  3205.  DCS F ST                Report failures
  3206.                 Report is DCS F ST  meaning no failures
  3207.  
  3208.  DG Key name        Kermit Verb       D470 Data General ANSI mode
  3209.                  prefix     second character
  3210.  F1..F15        dgF1..dgF15       ESC [ 01 z .. ESC [ 14 z   ESC [ 00 z
  3211.  C1..C4            dgC1..dgC4       ESC [ 20 z .. ESC [ 23 z
  3212.  Uparrow        uparr       ESC [ A
  3213.  Rightarrow        rtarr       ESC [ C
  3214.  Leftarrow        lfarr       ESC [ D
  3215.  Downarrow        dnarr       ESC [ B
  3216.  
  3217. I.3. WYSE-50 TERMINAL EMULATION
  3218.  
  3219. CONTROL
  3220. SEQUENCE    HEX   DESCRIPTION OF ACTION
  3221.  
  3222. Control-E   05h   returns answerback string (see SET TERM ANSWERBACK)
  3223. Control-G   07h   sounds bell
  3224. Control-H   08h   cursor to left one column
  3225. Control-I   09h   cursor to right one tab stop
  3226. Control-J   0ah   cursor down one row (can scroll the screen)
  3227. Control-K   0bh   cursor up one row
  3228. Control-L   0ch   cursor right one column
  3229. Control-M   0dh   cursor to left margin
  3230. Control-N   0eh   unlocks keyboard, ignored
  3231. Control-O   0fh   locks keyboard, ignored
  3232. Control-R   12h   turns on controller printing
  3233. Control-T   14h   turns off controller and transparent printing
  3234. Control-X   18h   turns on transparent printing (Wyse-60)
  3235. Control-Z   1ah   clears all unprotected cells to spaces
  3236. Control-[   1bh   Escape, escape sequence introducer
  3237. Control-^   1eh   cursor to home (upper left corner)
  3238. Control-_   1fh   cursor to left margin and next row down
  3239.  
  3240. Other Control codes are ignored.
  3241.  
  3242. WYSE ESCAPE SEQUENCE  DESCRIPTION OF ACTION (* = Not Supported)
  3243.  
  3244. ESC <space>           report terminal ident, send 3 bytes "50<c/r>"
  3245. ESC ! attrib           writes all unprotected cells with attribute
  3246.                code attrib (Blank attribute is ignored)
  3247.       attrib        action
  3248.      0        normal video
  3249.      1           *blank
  3250.      2        blink
  3251.      3           *blank
  3252.      4        reverse video
  3253.      8        underscore
  3254.     40h        dim
  3255.             (attrib is a byte with these bits as components,
  3256.              using a bias of ASCII "0", 30h)
  3257. ESC "              *unlocks keyboard, ignored
  3258. ESC #              *locks keyboard, ignored
  3259. ESC &               turns on protected mode, autoscroll to off
  3260. ESC '               turns off protected mode, autoscroll to on
  3261. ESC (               turns off write protect mode
  3262. ESC )               turns on write protect mode
  3263. ESC *               clears screen to nulls (Kermit uses spaces),
  3264.                protected mode to off
  3265. ESC +               clears screen to spaces, protected mode off
  3266. ESC ,               clears screen to protected spaces, protect
  3267.                mode is off. (Kermit clears with unprotected
  3268.                spaces)
  3269. ESC - nrc           cursor to text segment n and row, col
  3270.                (Kermit supports only text segment 0)
  3271.                (r and c are a binary value plus 20h)
  3272. ESC . code           clear all unprotected cells which have char
  3273.                codes of "code". "code" is expressed in hex.
  3274. ESC /               sends to host the text segment and row, col
  3275.                in same format as ESC - nrc command
  3276. ESC 0               clear all tab stops
  3277. ESC 1               set tab stop at cursor position
  3278. ESC 2               clear tab stop at cursor position
  3279. ESC 4              *sends to host all unprotected cells from start
  3280.                of row 
  3281. ESC 5              *sends to host all unprotected cells from start
  3282.                of text
  3283. ESC 6              *sends to host all cells from start of row 
  3284. ESC 7              *sends to host all cells from start of text
  3285. ESC 8               write start of message char (STX, 02h)
  3286. ESC 9               write end of message char (ETX, 03h)
  3287. ESC :               clear all unprotected cells to nulls (Kermit
  3288.                clears with spaces)
  3289. ESC ;               clear all unprotected cells to spaces
  3290. ESC = rc           cursor to row, col (for 80 columns only)
  3291.                (r and c are a binary value plus 20h)
  3292. ESC ?               sends to host the cursor address in the form
  3293.                    rc CR  (for 80 columns only)
  3294. ESC @              *sends all unprotected cells from start of 
  3295.                text to the auxillary port, terminates lines 
  3296.                with CR LF NULL
  3297. ESC A n attrib           sets video attribute for a message field or
  3298.                for entire display (n = 0). Kermit supports
  3299.                only the entire display.
  3300. ESC B              *enter block mode
  3301. ESC C              *exit block mode to conversational mode
  3302. ESC D x              *change between half and full duplex
  3303. ESC E               insert row of spaces, bottom moves down
  3304. ESC F text CR          *enter message into message field
  3305. ESC G attrib           set video attribute for future operations
  3306.  
  3307. ESC H x               enter "graphics" char at cursor, x = 0..?
  3308.                for selected CP437 line drawing symbols.
  3309.     x    symbol            x    symbol
  3310.     0    top tee            8    center plus
  3311.     1    lower left corner    9    left center tee
  3312.     2    top left corner        :    horizontal bar
  3313.     3    top right corner    ;    light crosshatch
  3314.     4    left center tee        <    double horz bar
  3315.     5    lower right corner    =    bottom center tee
  3316.     6    vertical bar        >    double vertical bar
  3317.     7    dark crosshatch        ?    medium crosshatch
  3318.     STX    start translating as above until ESC H ETX
  3319.     ETX    end translating as above
  3320. ESC I               cursor left to previous tab stop
  3321. ESC J              *activate alternate text segment
  3322. ESC K              *activate alternate text segment
  3323. ESC L              *send all chars unformatted to aux port
  3324. ESC M               send to host the char code at the cursor
  3325. ESC N               turns on no-scroll mode
  3326. ESC O               turns off no-scroll mode
  3327. ESC P               send all chars to auxillary port
  3328. ESC Q               insert a character, right part moves right
  3329. ESC R               delete a row, bottom moves up
  3330. ESC S              *sends a message unprotected
  3331. ESC T               erases all cells from cursor to end of row
  3332. ESC U              *turns on monitor mode (use SET DEBUG ON)
  3333. ESC V               sets cursor column to protected
  3334. ESC W               delete a character, right side moves left
  3335. ESC X              *turns off monitor mode
  3336. ESC Y               erase all cells from cursor to end of screen
  3337.                replacing them with spaces
  3338. ESC ]              *activates text segment 0
  3339. ESC ` n               sets screen feature n
  3340.            n       feature
  3341.            0       cursor off
  3342.            1       cursor on
  3343.            2       steady block (PC cursor always blinks)
  3344.            3       blinking line
  3345.            4       steady line
  3346.            5       blinking block
  3347.            A       normal protect char   (Kermit interprets these
  3348.            6       reverse protect char   as meaning protect all
  3349.            7       dim protect char          future characters)
  3350.            8      *screen display off
  3351.            9      *screen display on
  3352.            :       80 column screen
  3353.            ;       132 column screen
  3354.            <,=,>,?, and @ are scroll rates (unsupported)
  3355.  
  3356. ESC a rr R ccc C       move cursor to row and column (ASCII decimal)
  3357. ESC b               sends to host the cursor address in same form
  3358.                as ESC a above
  3359. ESC d #               turn on transparent printing
  3360. ESC i               cursor right to next tab stop
  3361. ESC j               cursor up one row and begins scrolling at
  3362.                top row (Kermit can't make any sense of the
  3363.                latter part of this and stops cursor at top)
  3364. ESC k              *turn on local edit mode
  3365. ESC l              *turn on duplex edit mode
  3366. ESC p               sends all chars unformatted to auxillary port
  3367. ESC q               turns on insert mode
  3368. ESC r               turns off insert mode
  3369. ESC s              *sends a message
  3370. ESC t               erase from cusor to end of row, fill with
  3371.                nulls (Kermit always erases with spaces)
  3372. ESC u               turn off monitor mode
  3373. ESC x n HSR          *change screen format (split screen)
  3374. ESC y               erase from curosr to end of screen, fill with
  3375.                nulls (Kermit always erases with spaces)
  3376. ESC z n text CR          *enter msg into function key labels or into
  3377.                function key codes
  3378. ESC z DEL          *turns off shifted key label line
  3379. ESC {               cursor to home (upper left corner)
  3380. ESC }              *activates text segment 1
  3381.  
  3382.  
  3383. Wyse Key name       Kermit Verb      Wyse-50 code
  3384. F1..F16           wyF1..wyF16      SOH <c> CR  where SOH is 01h and <c> is
  3385.                        @,A,B,C,D, E,F,G,H,I, J,K,L,M,N, O
  3386. shift F1..F16       wySF1..wySF16  as above but <c> is
  3387.                        `,a,b,c,d, e,f,g,h,i, j,k,l,m,n, o
  3388.  
  3389. Uparrow           uparr      Control-K
  3390. Rightarrow       rtarr      Control-L
  3391. Leftarrow       lfarr      Control-H
  3392. Downarrow       dnarr      Control-J
  3393.  
  3394. The following Wyse escape sequences are recognized but ignored:
  3395.  
  3396. ESC "   unlocks keyboard
  3397. ESC #   locks keyboard
  3398. ESC 4   sends all unprotected chars from start of row
  3399.     to the host computer
  3400. ESC 5   sends all unprotected chars from start-of-text
  3401.         to the host computer
  3402. ESC 6   sends all chars from start of row to host computer
  3403. ESC 7   sends all chars from start-of-text to host computer
  3404. ESC @   sends all unprotected chars from start-of-text to
  3405.     the auxillary port. Each row is terminated with CR LF NULL
  3406. ESC B   places the terminal in block mode
  3407. ESC D   selects half or full duplex modes
  3408. ESC F   enters a message in the host message field
  3409. ESC J   activates the alternate text segment
  3410. ESC K   same as ESC J (who knows what "activates" means?)
  3411. ESC L   sends all chars unformatted to the auxillary port
  3412. ESC P   sends all chars to auxillary port regardless of mode
  3413.         settings (whatever that means)
  3414. ESC U   turns on monitor mode
  3415. ESC X   turns off monitor mode
  3416. ESC ]   activates text segment 0
  3417. ESC k   turns on the local edit submode
  3418. ESC l   turns on the duplex edit submode
  3419. ESC p   sends all chars unformatted to the auxillary port, attribute
  3420.         codes are sent as spaces. Row-end seq not sent. Same as ESC L
  3421. ESC s   sends a message
  3422. ESC u   turns on monitor mode, same as ESC X
  3423. ESC x   changes screen display format (screen splitting)
  3424. ESC z   enters a message into the selected function key
  3425.         label field or programs user-defined function key
  3426. ESC }   activates text segment 1
  3427.  
  3428. WYSE GRAPHICS CHARACTERS
  3429.  
  3430. When ESC H single or locking shifts are in effect, the following ASCII
  3431. characters map to the following graphic (line/box-drawing) characters.  These
  3432. are available in PC Code Page 437, as well as in most other commonly used code
  3433. pages including CP850, etc.
  3434.  
  3435.       Maps to
  3436.   ASCII      PC char  
  3437.   0  48        194        Middle box top
  3438.   1  49        192        Lower left box corner
  3439.   2  50        218        Upper left box corner
  3440.   3  51        191        Upper right box corner
  3441.   4  52        195        Left middle box side
  3442.   5  53        217        Lower right box corner
  3443.   6  54        179        Center box bar vertical
  3444.   7  55        178        Fill character heavy
  3445.   8  56        197        Box intersection
  3446.   9  57        180        Right middle box side
  3447.   :  58        196        Center box bar horizontal
  3448.   ;  59        177        Fill character medium
  3449.   <  60        205        Center box bar horizontal double
  3450.   =  61        193        Middle box bottom
  3451.   >  62        186        Center box vertical double
  3452.   ?  63        176        Fill character light
  3453.  
  3454. (End of KERMIT.UPD / MSKERM.UPD)
  3455.