home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / archives / msvibm.zip / KERMIT.BWR < prev    next >
Text File  |  1995-06-22  |  120KB  |  2,400 lines

  1. File MSKERM.BWR           MS-DOS KERMIT 3.14 "BEWARE FILE"              June 1995
  2.  
  3.                BUGS, LIMITATIONS, HINTS & TIPS
  4.  
  5. This file last updated: Thu Jun 22 10:05:45 1995
  6.  
  7.   IMPORTANT: MS-DOS Kermit 3.14 dated 12 January 1995 had several serious
  8.   bugs; the cursor position report was incorrect, wild cursor addressing could
  9.   cause memory corruption, and (worst of all) the PATCH command didn't work.
  10.   These bugs were caught and corrected before the 3.14 diskettes were
  11.   duplicated.  The fixed version is still called 3.14, but dated January 18.
  12.   All subsequent bugs are corrected by patches to the Jan 18 release.
  13.  
  14.   BUT... A nonpatchable bug regarding TCP/IP Address Resolution Protocol (ARP)
  15.   was discovered somewhat later.  The only way it could be fixed was by
  16.   issuing new EXE files.  The EXEs with this fix are dated May 21, 1995.
  17.  
  18. This file discusses common problems installing or using MS-DOS Kermit and
  19. presents solutions or workarounds.  It applies to MS-DOS Kermit 3.14 for the
  20. IBM PC family and compatibles.  See KERMIT.HLP (MSKERM.HLP) for copyright
  21. information, terms and conditions, and a summary of MS-DOS Kermit commands.
  22.  
  23. CONTENTS:
  24.  
  25.   (0) OUR MOST FREQUENTLY ASKED QUESTION
  26.   (1) PATCHES
  27.   (2) INCOMPATIBILITIES BETWEEN MS-DOS KERMIT 3.14 AND EARLIER VERSIONS
  28.   (3) WORDPERFECT
  29.   (4) MICROSOFT WINDOWS
  30.   (5) WINDOWS FOR WORKGROUPS
  31.   (6) TROUBLESHOOTING MS-DOS KERMIT SERIAL PORT AND MODEM PROBLEMS
  32.   (6.1) FREQUENTLY ASKED QUESTIONS
  33.   (6.2) HOW A PHYSICAL COMMUNICATION PORT IS ASSOCIATED WITH A DOS COMn DEVICE
  34.   (6.3) SPECIFYING THE PORT ADDRESS
  35.   (6.4) INTERRUPTS AND IRQS
  36.   (6.5) MODEM PROBLEMS
  37.   (7) DEVICE INTERRUPT CONFLICTS AND OTHER HARDWARE CONSIDERATIONS
  38.   (8) MS-DOS 5.0 AND 6.x
  39.   (9) MICROSOFT WINDOWS, DESQVIEW, OS/2, WINDOWS NT, ETC.
  40.   (9.1) OS/2
  41.   (9.2) MICROSOFT WINDOWS
  42.   (9.3) DESQVIEW AND DESQVIEW/X
  43.   (9.4) WINDOWS NT
  44.  (10) VIDEO PROBLEMS
  45.  (11) SERIAL COMMUNICATIONS
  46.  (12) TERMINAL EMULATION
  47.  (12.1) KEYBOARDS AND KEYBOARD DRIVERS
  48.  (12.2) VT TERMINAL EMULATION
  49.  (12.3) DG TERMINAL EMULATION
  50.  (12.4) CHANGING SCREEN DIMENSIONS
  51.  (12.5) 132-COLUMN MODE
  52.  (12.6) GRAPHICS TERMINAL EMULATION
  53.  (13) PRINTER SUPPORT
  54.  (14) INTERNATIONAL CHARACTER SETS
  55.  (15) COMMAND PROCESSING
  56.  (16) KEY MAPPING
  57.  (17) FILE TRANSFER
  58.  (17.1) PERFORMANCE
  59.  (17.2) HARDWARE FLOW CONTROL PROBLEMS
  60.  (17.3) MISCELLANEOUS FILE TRANSFER HINTS AND TIPS
  61.  (18) SCRIPT PROGRAMMING
  62.  (19) MEMORY MANAGEMENT
  63.  (20) INTERACTIONS WITH DOS
  64.  (21) NETWORKS
  65.  (21.1) NETBIOS STATION-TO-STATION CONNECTIONS
  66.  (21.2) TCP/IP SUPPORT
  67.  
  68. The user manual for MS-DOS Kermit 3.14 is the book "Using MS-DOS Kermit",
  69. Second Edition, by Christine M. Gianone, published by Digital Press /
  70. Butterworth-Heinemann, Woburn, MA, 1992, 345 pages, ISBN 1-55558-082-3.
  71. Available in book and computer stores, or order from Columbia University at
  72. +1 212 854-3703.  Changes since the book was published are described in
  73. KERMIT.UPD (MSKERM.UPD).
  74.  
  75. Please consult "Using MS-DOS Kermit" and this file before contacting Kermit
  76. technical support staff.  Report problems via e-mail to kermit@columbia.edu or
  77. call +1 212 854-5126, or by Fax to +1 212 663-8202, or write to Kermit
  78. Distribution, Columbia University Academic Information Systems, 612 West 115th
  79. Street, New York, NY 10025, USA.
  80.  
  81. Also, please read the installation instructions in the top-level READ.ME file
  82. on the Kermit diskette.
  83.  
  84. (0) OUR MOST FREQUENTLY ASKED QUESTION
  85.  
  86.   "Why are Kermit file transfers so slow?"
  87.  
  88. Today's Kermit protocol, when properly implemented -- as it is in MS-DOS
  89. Kermit, C-Kermit, IBM Mainframe Kermit from Columbia University's Kermit
  90. software collection -- can transfer files very efficiently if you give it a
  91. few commands to override its deliberately conservative (pessimistic) initial
  92. (default) protocol settings.  Our priority is to make transfers work, even
  93. under adverse conditions.  Other protocols are tuned to make transfers fast,
  94. but when conditions are poor (noisy or non-transparent connections, buffering
  95. or flow control problems, etc), these protocols often don't work at all.
  96.  
  97. See Section 17, File Transfer, for our Secret Formula for Fast Kermit File
  98. Transfers.  For a detailed discussion of Kermit file transfer performance,
  99. please read the file PERFORM\PERFORM.DOC on the Kermit diskette.
  100.  
  101. (1) PATCHES
  102.  
  103.  Patch file     For executable
  104.  
  105.   MSR314.PCH     KERMIT.EXE      Full version
  106.   MSRM314.PCH    KERMITE.EXE     Medium version
  107.   MSRL314.PCH    KERLITE.EXE     Lite version
  108.   MSRP314.PCH    KERMIT_P.EXE    Full version, Portuguese legends
  109.  
  110. The patches are as follows:
  111.  
  112.  1. Optional Orchid Designer Professional VGA board video-mode patch.
  113.     Allows patching in the appropriate video mode, since different models
  114.     use different modes, but identify themselves the same way to Kermit.
  115.  
  116.  2. Fix for file names given on the command line in the -F option
  117.     (alternate initialization file) not always being parsed correctly.
  118.  
  119.  3. VT220/320 terminal emulator patch for correctly recognizing OSC and
  120.     PM sequences.  Without this patch, such sequences (which are rarely
  121.     used) could cause Kermit to hang until reset.
  122.  
  123.  4. Patch to prevent MS-DOS Kermit from improperly encoding its response
  124.     to the A packet.  The most notable symptom was failure to properly
  125.     receive RESENDs.
  126.  
  127.  5. Patch to the READ command to prevent it from improperly treating "-"
  128.     at the end of a line as a continuation character.
  129.  
  130.  6. Patch for TES networking: preserve TES LAT ID around restarts.
  131.  
  132.  7. Optional patch for Hebrew-model VT100 terminal emulation.  Described
  133.     below.
  134.  
  135.  8. Patch to make the MAIL command once again work properly when sending
  136.     multiple files.  Without this patch, the MAIL command only works for
  137.     one file; e.g. "mail foo.*" would send all foo.* files, but only the
  138.     first one would be mailed; the rest would disappear.
  139.  
  140. THE HEBREW PATCH
  141.  
  142. Certain applications are hardcoded for the DEC Hebrew-model VT100
  143. terminal, and can't use Kermit's VT420-level Hebrew features.
  144. Reportedly, MS-DOS Kermit 3.14's interpretation of the Hebrew VT100 was
  145. incorrect.  Diagnosis: ESC ) 1 selects the "Alternate ROM" character set.
  146. When this is Hebrew, it also has the side effect of switching writing
  147. direction to right-to-left, but Kermit didn't do this.  ESC ) B switches
  148. back to ASCII, and resets screen writing to left-to-right.  Cure: Enable
  149. Patch 7 but uncommenting it (i.e. remove the semicolon from the front of
  150. each line).  Do NOT enable patch 7 if you do not require VT100-level
  151. Hebrew, because other Alternate ROMs do not have this same side effect.
  152. In the next release, we will add a SET COMMAND to control the Alternate
  153. ROM side effects.
  154.  
  155. Patch 7 is available only for KERMIT.EXE because it is a difficult patch
  156. to create. If there is a strong need then a patch can be created for
  157. Portuguese and Medium versions.
  158.  
  159. PROBLEM RECEIVING RESENDS
  160.  
  161. If MS-DOS Kermit has its FILE COLLISION set to UPDATE, it won't be able to
  162. receive RESENDs as advertised.  Instead, it will refuse the RESEND with
  163. "Refused: Date".  This problem is too complex to be patched, and so a
  164. workaround must be used, one of the following:
  165.  
  166.  . MS-DOS Kermit's FILE COLLISION should be set to OVERWRITE when
  167.    receiving RESENDs.  Or:
  168.  
  169.  . Tell MS-DOS Kermit or the other Kermit to SET ATTRIBUTE DATE OFF when
  170.    RESENDing.
  171.  
  172. For example, here is a macro that can be used in place of RESEND in
  173. C-Kermit or MS-DOS Kermit to get around this problem:
  174.  
  175.   define XRESEND set attr date off, -
  176.     resend \%1 \%2, -
  177.     assign \%9 \v(status), -
  178.     set attr date on, -
  179.     end \%9
  180.  
  181. A fix will appear in the next release.
  182.  
  183. (2) INCOMPATIBILITIES BETWEEN MS-DOS KERMIT 3.14 AND EARLIER VERSIONS
  184.  
  185.  1. In version 3.13, the escape sequence that invoked the TERMINALR/S macros
  186.     was changed to control screen writing direction (details in KERMIT.UPD),
  187.     for compatibility with newer VT terminals.  Any host software that sent
  188.     the TERMINALR/S sequences will need to be converted to send APC sequences.
  189.     See KERMIT.UPD and the WordPerfect section of this file.
  190.  
  191.  2. STATUS command removed.  Use the SHOW command to display categories of
  192.     settings: SHOW TERMINAL, SHOW COMMUNICATIONS, SHOW PROTOCOL, etc; v3.13.
  193.  
  194.  3. STATISTICS, which displays file transfer statistics, has been added as a
  195.     top-level command, for compatibility with C-Kermit; v3.13.
  196.  
  197.  4. Alt-n was previously bound by default to the \Knethold verb.  It is now
  198.     bound to the new \Knextsession verb.  \Knethold moved to Alt-z.  v3.13.
  199.  
  200.  5. \m(macroname) behaves differently in 3.14; see section 18.
  201.  
  202.  6. SET TAKE-ECHO is now SET TAKE ECHO, to allow for other SET TAKE commands.
  203.  
  204.  7. Status line format changed in 3.14.
  205.  
  206.  8. Semicolon must be the first character on the line or else be preceded
  207.     by a space or tab to be treated as a comment introducer; v3.14.
  208.  
  209. (3) WORDPERFECT
  210.  
  211. WordPerfect 6.0 comes with a fax TSR, FAXDIR.EXE, which, reportedly, fiddles
  212. with the communication port even when other communication applications (such
  213. as Kermit) are running. If you experience hangups, changes of interface speed,
  214. etc, while running Kermit with FAXDIR loaded, remove FAXDIR.
  215.  
  216. The WordPerfect Office Shell is not a true multitasking environment.  It
  217. simply brings the "hot-key'd" program to the foreground and deactivates the
  218. other programs.  Thus, you can't use it to accomplish Kermit file transfers in
  219. the "background" or to put Kermit TCP/IP connections on hold.
  220.  
  221. To make host-based UNIX WordPerfect work with MS-DOS Kermit 3.13 or later,
  222. follow these directions (courtesy of Chris Thompson at Vanderbilt University;
  223. presumably similar steps can be followed for the VMS version):
  224.  
  225. . Go into the directory where the terminal definitions are stored (in my case
  226.   of WP 5.1 for AIX, it was /usr/wp51/shlib), and execute "wpterm" (it usually
  227.   requires you to be superuser).
  228.  
  229. . A screen containing all the terminal definitions will appear.     Highlight the
  230.   current Kermit terminal definition and hit Create.
  231.  
  232. . It will ask "Model new definition after Kermit?"  Answer yes.
  233.  
  234. . It will then ask for a new name for your new terminal definition.  Call it
  235.   something like KERMIT314.
  236.    
  237. . At the bottom of the screen, several options will appear.  Choose 
  238.   Terminal Control Characters.  It will then bring up a screen with the
  239.   different initialization strings and their values.  The first four items are
  240.   the ones that need altering (Terminal Initialization, Terminal Reset, Quick
  241.   Initialization, and Quick Reset).  Delete "[27][?34h" or "[27][?34l" (for
  242.   initialization and reset, respectively) from the string and replace it with
  243.   "[27]_take \kermit\keyboard\wp_unix.ini[27]\" or "[27]_set key clear[27]\",
  244.   leaving the rest of the string intact.
  245.    
  246. . Be sure to change your WPTERM environment variable if you decided to create
  247.   a definition with a different name.
  248.  
  249. (4) MICROSOFT WINDOWS
  250.  
  251. MS-DOS Kermit is the recommended Kermit software for Windows.  Follow the
  252. installation instructions in the READ.ME file.  Kermit will probably run
  253. slower under Windows than under DOS because Windows has higher overhead.
  254. Watch out for interrupt and memory conflicts, etc.  To improve Kermit's
  255. performance under Windows, try any or all of the following:
  256.  
  257. 1. Use the PIF editor to raise Kermit's priority in the KERMIT.PIF file.  This
  258.    will slow down any other active applications while Kermit is running.
  259.  
  260. 2. Use the PIF editor to lock Kermit in memory.     This will also interfere with
  261.    other applications, but it eliminates the chance of Kermit being swapped
  262.    out when characters arrive on the communications device, which could
  263.    otherwise be lost while Windows swaps Kermit back in to process them.
  264.  
  265. 3. Make sure your serial communication (COM) device or internal modem has a
  266.    16550A buffered UART.  This reduces the number of interrupts that must be
  267.    serviced (slowly) by Windows before Kermit gets to see them.
  268.  
  269. 4. In the "[386Enh]" section of SYSTEM.INI, look for:
  270.  
  271.      COM1Irq=4
  272.      COM1Base=03F8
  273.      COM2Irq=3
  274.      COM2Base=02F8
  275.      etc.
  276.  
  277.    For any COM port that really has a 16550A buffered UART, add a line like:
  278.  
  279.       COM1FIFO=1
  280.  
  281.    and correct the addresses and IRQs if they are wrong.  Also you might
  282.    want to investigate other COMxBlah parameters, such as COMxTxSize,
  283.    COMxRxSize, COMxBuffer, COMBoostTime, etc.
  284.  
  285. 5. Install an alternative communication port driver, such as the WFXCOMM
  286.    driver that comes with WinFax PRO, Delrina Technology Inc, or TurboCom/2
  287.    from Pacific Commware (we do not necessarily recommend any of these, and
  288.    do not provide support for them, but we have heard reports that they
  289.    improve performance).
  290.  
  291. 6. If you want to "minimize" Kermit while it is running, e.g. for "background"
  292.    file transfers, be sure to allocat background time for it in the KERMIT.PIF
  293.    file.  Even then, Kermit (and all other tasks) are at the mercy of other
  294.    applications that might not give up their shares of the CPU.
  295.  
  296. To avoid memory conflicts, don't let Windows choose its own memory management
  297. layout.  See section (19).
  298.  
  299. Messages like "This application has violated system integrity due to execution
  300. of an invalid instruction and will be terminated" can occur if the expanded
  301. memory page frame was allowed to overlap another important piece of memory.
  302. Workaround: Tell DOS *and* Windows where to locate the 64KB expanded memory
  303. page frame (E000 is typical, see section 19).
  304.  
  305. Reportedly, "AfterDark version 3.0 for Windows seems to have some compatiblity
  306. problems with *any* DOS based session (including MS-DOS Kermit).  The symptoms
  307. are random 'Unexepected protection violations' and device conflicts.  My
  308. *unofficial* fix (after lots of experimenting) is to go into the AD3.0 control
  309. panel and turn OFF the 'Enable screen saving in DOS windows' box (in the
  310. advanced options).  AD2.0 works fine."
  311.  
  312. Don't use SMARTDRIVE -- it turns off CPU recognition of interrupts while
  313. flushing disk buffers, causing other applications, like Kermit, not to receive
  314. them, therefore resulting in loss of data.
  315.  
  316. (5) WINDOWS FOR WORKGROUPS
  317.  
  318. See the section on this in the file NETWORKS\SETUP.DOC.
  319.  
  320. (6) TROUBLESHOOTING MS-DOS KERMIT SERIAL PORT AND MODEM PROBLEMS
  321.  
  322.   "Why can't MS-DOS Kermit find my COM3 or COM4 port?"
  323.   "Why can Kermit send characters to my COM port, but not read them?"
  324.   "Why doesn't Kermit work with my internal modem?"
  325.  
  326. Rule out the obvious: Is everything connected and turned on?  Did you
  327. give a SET PORT command for the right device, and did you give it BEFORE any
  328. other device-related commands, such as SET SPEED, PARITY, and FLOW?  Remember,
  329. port-related settings apply to the port that was selected in the most recent
  330. SET PORT command, so a proper sequence might be:
  331.  
  332.   SET PORT COM2        ; First select the port
  333.   SET SPEED 19200   ; Then set its speed
  334.   SET PARITY EVEN   ; and other parameters for this port...
  335.   SET FLOW RTS/CTS
  336.   SET LOCAL-ECHO ON
  337.  
  338. If you purchased an internal modem (or add-on UART, e.g. a buffered UART to
  339. replace a non-buffered one) and installed it as COMx (e.g. COM2) on a PC that
  340. already had a COMx built into the motherboard, you have to go into the PCs
  341. hardware setup screen to disable the pre-existing built-in COM port.
  342.  
  343. Before giving the SET FLOW RTS/CTS command, be sure the current serial port is
  344. receiving the CTS signal -- use SHOW MODEM to check.  If not, Kermit will hang
  345. for 10-15 seconds waiting for CTS to come on every time you type a character.
  346.  
  347. Each of these parameters is remembered for each port, so switching ports (e.g.
  348. SET PORT COM1 after you have given the above sequence of commands) changes
  349. all these parameters to their previous (or default) values for the port you
  350. have switched to.  To see communication parameters for the current port:
  351.  
  352.   SHOW COMMUNICATIONS
  353.  
  354. Check them carefully to be sure they are what you intended.
  355.  
  356. (6.1) FREQUENTLY ASKED QUESTIONS
  357.  
  358. Q: When I give the DIAL command, it says "Please turn on or connect your
  359.    modem", but my modem is turned on and connected.
  360.  
  361. A: Here are the most common reasons for this:
  362.  
  363.    1. You did not SET PORT to the same port that the modem is connected to.
  364.       Kermit uses COM1 unless you say otherwise.  If your modem is on (say)
  365.       COM2, then SET PORT 2 before giving the DIAL command.
  366.  
  367.    2. You are not using an appropriate dialing script for your modem.
  368.       See MODEMS\READ.ME on the Kermit diskette.
  369.  
  370.    You can always dial manually by CONNECTing to the modem and typing
  371.    modem commands (like ATDT7654321) directly at it.
  372.  
  373. Q: MS-DOS Kermit only supports COM1 through COM4.  But I have a specialized
  374.    communications board that has additional ports on it, and I want to use
  375.    Kermit with COM8.
  376.  
  377. A: The trick is to tell Kermit that it is COM1, 2, 3, or 4, and then tell
  378.    Kermit its address and IRQ (more about addresses and IRQs below).  For
  379.    example, suppose your COM8 is at address 2e8 (hex) using IRQ 5; you would
  380.    tell Kermit to "set com4 \x2e8 5" and then "set port 4".  Or if you have a
  381.    Fossil driver, you can use Kermit's SET PORT FOSSIL command to access
  382.    high-numbered ports.
  383.  
  384. Q: I installed my new internal data/fax modem on COM4 and I followed all
  385.    the instructions in the KERMIT.BWR file, so I can use it under DOS, but
  386.    I still can't use it under Windows, even after going into the Control 
  387.    Panel:Ports:COM4:Advanced dialog to set the address and IRQ.
  388.  
  389. A: Most likely cause: gaps in the COM port sequence; e.g. no COM3.  You must
  390.    also tell Windows that there is (e.g.) no physical COM3 by:
  391.  
  392.    . Edit \windows\system.ini
  393.    . Search for the [386Enh] section
  394.    . Add the following line:
  395.        COM3IRQ=-1
  396.      in the COM3 section.
  397.  
  398.    So now (for example) we have the following lines describing COM3 and COM4:
  399.  
  400.      COM3IRQ=-1
  401.      COM4Base=02E8
  402.      COM4IRQ=5
  403.  
  404.   (All of this terminology is explained below.)  Now to the hard cases...
  405.  
  406.   The following discussion is detailed and technical, but most of it boils
  407.   down to (a) telling Kermit two numbers, the port address and IRQ value; and
  408.   (b) fiddling with your modem.     Keep that in mind as you read more about PC
  409.   hardware than you ever wanted to know.
  410.  
  411. (6.2) HOW A PHYSICAL COMMUNICATION PORT IS ASSOCIATED WITH A DOS COMn DEVICE
  412.  
  413. DOS PCs support only two communication ports, COM1 and COM2, but have
  414. provisions for two more, COM3 and COM4.  COM3 and COM4 are not well supported
  415. in most types of PCs, as are COM1 and COM2 which rarely (by themselves) cause
  416. any problems (note: this last phrase is becoming increasingly less true as PCs
  417. are loaded up with additional devices such as CDROM drives, sound boards, etc).
  418. This discussion considers only COM1-COM4.
  419.  
  420. The digit in the port name (like the "2" in COM2) is an index into an area in
  421. memory that contains the address of the serial port hardware.  The PC's Basic
  422. Input/Ouput System (BIOS) has four words starting at segment 40 (hexadecimal),
  423. word 0, for the addresses of the first four COM ports.    Word 0 is for COM1,
  424. word 2 (two bytes per word) for COM2, word 4 COM3, and word 6 COM4.  To view:
  425.  
  426.   C:\> debug    (start the debug program)
  427.   -d 40:0       (display segment 40)
  428.   -q        (quit the debug program)
  429.  
  430. ("C:\>" is the DOS prompt, "-" is the debug prompt.)  Here are the results
  431. on a PS/2 with 3 COM ports:
  432.  
  433.   0040:0000  F8 03 F8 02 20 32 00 00-BC 03 00 00 00 00 60 03  .... 2........`.
  434.          ^^^^^ ^^^^^ ^^^^^ ^^^^^
  435.          COM1  COM2     COM3  COM4
  436.  
  437. The first line contains the COM port information (ignore the other lines, as
  438. well as the characters on the right).  "F8 03" is the 2-byte COM1 address,
  439. expressed in hexadecimal (base 16) with the low byte first. Thus the actual
  440. COM1 address is 03F8 hex, expressed in Kermit commands as \x3f8.  The COM2
  441. address is 02F8, the COM3 address is 3220, and (since there is no COM4) the
  442. COM4 address is 0000.  That is how both DOS and the BIOS understand which
  443. ports are defined and where to find them.
  444.  
  445. When your PC is powered up, the BIOS startup code checks for serial port
  446. hardware (that is, a Universal Asynchronous Receiver/Transmitter, or UART) at
  447. the two port addresses 03F8 and 02F8.  If it finds a UART at the first address
  448. then that address is placed in word 40:0 and declared to be COM1.  Then the
  449. BIOS tries the second address and if successful this address goes into the
  450. first available word at that time, typically 40:2 as the address of COM2.
  451. Thus if you remove a COM1 device then a previously COM2 device will appear in
  452. the COM1 BIOS storage area as COM1 to DOS and Kermit.  What happens to the
  453. other two words depends on the PC model and BIOS.  The IBM PS/2 BIOS fills in
  454. all four words on startup, but most others handle only the first two because
  455. that's how original PCs worked.
  456.  
  457.   So... just setting switches or jumpers on a serial port board or internal
  458.   modem does NOT necessarily define the board to be a particular COM port.
  459.  
  460. So why do some communication programs work with COM3 and COM4 without any
  461. special fiddling?  These programs ASSUME certain COM3 and COM4 addresses, even
  462. when there are no entries in the BIOS communication-port area. Some of these
  463. programs show you their assumptions in a menu (and might allow you to change
  464. them), others do not.  The assumed values are usually as follows:
  465.  
  466.   Port     Assumed Address (hexadecimal)
  467.   COM1          03F8
  468.   COM2          02F8
  469.   COM3          03E8
  470.   COM4          02E8
  471.  
  472. PS/2s use different addresses for COM3 and COM4 -- 3220 and 3228,
  473. respectively.  Well-behaved communication software (like Kermit) uses these
  474. addresses rather than the defaults listed above.  Ill-behaved software ignores
  475. the segment-40 addresses and erroneously uses its own values, right or wrong.
  476.  
  477. Unchecked use of an assumed port address is DANGEROUS if the device is not
  478. really where the software expects, especially if some other kind of device,
  479. say a network adapter, is at the given address.  It can also produce unwanted
  480. conflicts under Windows, OS/2, and DesqView, whose drivers often set the
  481. port's segment-40 word to 0 when they want to use the port exclusively and
  482. without interference, and then restore the real address when done, and similar
  483. unwanted interference with Int 14H redirectors that allow serial-port
  484. communication software to be used on network connections.
  485.  
  486. Unlike most other PC communication software, Kermit does NOT attempt to use a
  487. communications port unless:
  488.  
  489.   (a) It finds its address in the BIOS comm-port area, segment 40, or:
  490.   (b) You specify the address yourself.
  491. AND:
  492.   The device at the given address passes certain tests, in which registers
  493.   must contain certain values that are legitimate for a UART.
  494.  
  495. In other words, KERMIT IS MORE CAREFUL than most other communication software,
  496. because does not want to risk disrupting normal operation of your PC.
  497.  
  498. (6.3) SPECIFYING THE PORT ADDRESS
  499.  
  500. If you tell MS-DOS Kermit to SET PORT COMn (where n is 1, 2, 3, or 4), and
  501. Kermit responds:
  502.  
  503.   Warning, no hardware for this serial port.
  504.   This port will be operated through the BIOS as BIOSn
  505.  
  506. it means that Kermit did not find an address for the port in the BIOS area or
  507. it did find one but the hardware at that address did not look like a UART.  If
  508. the cause of the message is a missing address, you can tell MS-DOS Kermit the
  509. address of the port by issuing the following command:
  510.  
  511.   SET COMn \xhhhh
  512.  
  513. where n is 1, 2, 3, or 4, and hhhh are four hexadecimal digits (0-9, A-F)
  514. representing the 16-bit address.  This command not only informs Kermit of the
  515. address, but also inserts the address into the BIOS so other programs can find
  516. the port (if they follow the rules), and so you don't have to give this
  517. command to Kermit again until after the next time you reboot, unless another
  518. program removes it again.
  519.  
  520. After giving the SET COMn command, give a SET PORT COMn command for the same
  521. port, e.g.:
  522.  
  523.   set com3 \x3e8   ; FIRST specify the address of COM3 
  524.   set port com3       ; THEN select COM3
  525.  
  526. How do you know what addresses to give?  If have purchased an internal modem
  527. or an add-on serial port, the installation instructions should tell you.  You
  528. have to make sure that the address that you have chosen agrees with the
  529. address that Kermit will use.
  530.  
  531. Although it is not recommended that you guess at address values, sometimes it
  532. is the only way (as often with inherited equipment), for which occasions here
  533. is a list of commonly used addresses:
  534.  
  535.   Port     Likely Addresses (hexadecimal)
  536.   COM1         03F8
  537.   COM2         02F8
  538.   COM3         03E8, 3220 (PS/2)
  539.   COM4         02E8, 3228 (PS/2), 02E0
  540.  
  541. Now let's look at the other cause for "This port will be operated through the
  542. BIOS", namely that an address was found in segment 40, but the device at that
  543. address does not appear to be a genuine serial port.  Possible explanations:
  544.  
  545.  1. The device is at a different address.  Check your device's configuration
  546.     again, or your SET COMn command.
  547.  
  548.  2. Your device is indeed at the given address, but its registers do not
  549.     contain values expected of a true PC serial port.  In that case, BIOS
  550.     operation is the only alternative.
  551.  
  552.  3. Your device is at the given address, but there is a conflict with another
  553.     device at that address or the machine's bus speed (not CPU speed) is set 
  554.     so high that the hardware test gave confusing results.
  555.  
  556. When Kermit operates a port through the BIOS, rather than directly, it will be
  557. MUCH slower and might not work at all because the BIOS requires the CD, CTS,
  558. and DSR modem signals to be asserted by the device connected to the port (and
  559. the CD signal is normally NOT asserted by a modem before it has made a
  560. connection to another modem).  In that case, you must configure the device
  561. (e.g. modem) to assert DSR, CTS, and CD always, or wire your modem cable to
  562. fake these signals (e.g. by connecting CD and DSR together).
  563.  
  564. Assuming you have found the right address for your COM3 or COM4 port (or
  565. nonstandard address for COM1 or COM2), and you want these addresses to be set
  566. correctly for Kermit at all times, even if it doesn't read its initialization
  567. file, you can put a command like the following in your AUTOEXEC.BAT file:
  568.  
  569.   set kermit=com3 \x3e8; com4 \x2e8;
  570.  
  571. (6.4) INTERRUPTS AND IRQS
  572.  
  573.   "I can send characters to the modem, but I never see any on my screen."
  574.  
  575. This complaint, also known as "can-talk-but-not-listen syndrome", usually
  576. means that the communication device was found at the expected address, but
  577. Kermit's idea of its interrupt is wrong, or more than one device is generating
  578. the same interrupt.  What's an interrupt?
  579.  
  580. To achieve high-speed communication without impacting other applications,
  581. Kermit reads characters from a serial device using "interrupts".  Whenever a
  582. character arrives at the serial device, the device sends a signal, called an
  583. interrupt, that can be "caught" by applications like Kermit, leaving the
  584. application free to do other work in the meantime without having to constantly
  585. look at the serial port to see if any characters have arrived (an operation
  586. called "polling", which is used by some other communications programs).
  587. Polling programs are not sensitive to interrupts being set improperly and
  588. might therefore work with improperly-configured machines where Kermit will not
  589. (until you give it the required info), but they also tend to take over the
  590. entire computer.
  591.  
  592. In contrast to polling programs, Kermit is normally waiting for input from the
  593. keyboard, so it is idle if you are not typing and no characters are arriving
  594. at the communication port.  In multitasking environments like Windows or OS/2,
  595. this gives other applications the largest possible share of the CPU.
  596.  
  597. When a character arrives at the port, an interrupt signals Kermit to wake up
  598. from its keyboard-wait state and read from the port.  But Kermit needs to know
  599. which device the interrupt came from, so it will not read from the wrong one.
  600. The device is identified by an Interrupt Request (IRQ) number, a small number
  601. like 3 or 4. The BIOS does not record the IRQ number used by a serial port
  602. because the BIOS uses polling rather than interrupts.  The communications
  603. software has to know which IRQ to use.  By convention from the original IBM
  604. PC, COM1 uses IRQ 4 and COM2 uses IRQ 3. There is no standard for COM3 and
  605. above, but certain conventions are normally followed:
  606.  
  607.   Port     PS/2  Others
  608.   COM3     IRQ3    IRQ4
  609.   COM4     IRQ3    IRQ3
  610.  
  611. Certain serial port cards and internal modems allow themselves to be
  612. configured with different IRQ numbers (such as 9), even on COM1 or COM2.
  613. Check your device's installation instructions.
  614.  
  615. In general, NO TWO DEVICES SHOULD HAVE THE SAME INTERRUPT.  Otherwise there
  616. will be a serious conflict and potential lockups or damage.
  617.  
  618. Some types of PCs, however, notably Microchannel PS/2s, allow sharing of IRQ
  619. numbers.  Each application has its own interrupt service routine and each such
  620. routine is built to "chain" interrupts properly (pass them along to other
  621. applications if they arrived at the wrong place).  This works, for example,
  622. with Kermit on a PS/2; you can run two copies of Kermit under Windows, one
  623. using COM2/IRQ3 and the other using COM3/IRQ3 (i.e. two ports, same IRQ), both
  624. doing input and output simultaneously with no confusion.  But on most types of
  625. PCs, IRQs can NOT be shared, so each device must have a unique IRQ
  626. number. This caution applies especially when you have a serial mouse on IRQ 3
  627. or 4.
  628.  
  629. Once Kermit knows the COM port's address, it tests to see which IRQ number, 3
  630. or 4, the device uses. This is a safe test and doesn't cause any modem
  631. signaling or communication to take place.  The PC architecture has a limited
  632. range of IRQ numbers available, and so (usually) there can not be a unique IRQ
  633. number for each serial port when there are more than two, so in most cases no
  634. more than two serial ports can be active at once.  If the IRQ test fails, a
  635. default value is used, as listed above.  No error message is given in this
  636. case, but "can-talk-but-not-listen syndrome" is a likely result.
  637.  
  638. Some add-on communication boards or internal modems are set up to use IRQ
  639. numbers other than 3 or 4 to avoid conflicts with COM1 or COM2 and/or to allow
  640. more than two COM ports to be active at once.  But this can be dangerous --
  641. for example, IRQ 5 (which is often used for this purpose) is also used by the
  642. hard disk controller on the PC/XT. IRQ 7 is often used by network boards.  For
  643. this reason, Kermit does not automatically test any IRQ numbers other than 3
  644. or 4, and does not use any other IRQ number unless you tell it to.
  645.  
  646. But it is sometimes necessary, particularly on ISA (Industry Standard
  647. Architecture) bus machines (PC/ATs and compatibles) and earlier (such as PCs
  648. and XTs) to use an IRQ other than 3 or 4, for example when when an internal
  649. modem is installed as COM3 on IRQ4, and then use of COM1 prevents COM3 from
  650. working, and vice versa.  This problem can often be solved by reconfiguring
  651. the board to use an otherwise unused unique IRQ number.  Ideally this would be
  652. a normally free IRQ such as 10 or 11, but unfortunately most communication
  653. boards are not configurable for IRQs higher than 7.  Here is a brief, and
  654. definitely not comprehensive, guide to the low IRQ numbers (decimal):
  655.  
  656.      2    Normally available, but some video boards use it to obey an obsolete
  657.     standard for indicating vertical refresh.  Adjust video board jumpers
  658.     to not do this.     On 286's and above, IRQ 2 is also known as IRQ 9:
  659.     same IRQ, alternate number.  Windows 3.0 had difficulty with devices
  660.     using IRQ 2, but Windows 3.1 is better.
  661.  
  662.      3    Normally COM2 and COM4.     PS/2's use IRQ 3 for all serial ports above
  663.     COM1.  IRQ3 is also a favorite "factory default" of many local area
  664.     network (LAN) adapters.
  665.  
  666.      4    Normally COM1 and informally COM3 (except on PS/2s).
  667.  
  668.      5    Secondary parallel port.  Parallel ports are rarely interrupt-driven
  669.     (except for Novell RPRINTER users) so this IRQ becomes free if you
  670.     unjumper it on the parallel port board.  LAN adapters are often placed
  671.     on IRQ 5.  PC/XTs use IRQ 5 for the hard disk.  Careful with this one.
  672.  
  673.      6    Floppy disk drives. Leave it alone!
  674.  
  675.      7    Primary parallel port.    Remove as described for IRQ 5.    Be careful,
  676.     LAN adapters are frequently placed here.
  677.  
  678. IRQs higher than 7 are not available on original PCs or PC/XTs.
  679.  
  680.      9    Alias for IRQ 2 on PC/AT and above.  Don't try to use this one
  681.     as if it were a unique IRQ.
  682.  
  683.     10    Usually free.
  684.  
  685.     11    Usually free.
  686.  
  687.     12    Used by the IBM bus mouse, otherwise usually free.
  688.  
  689.     13    Math coprocessor errors are trapped here, otherwise frequently free.
  690.  
  691.     14    Used by hard disk on 286 and above.  Leave alone!
  692.  
  693.     15    Some SCSI controllers use this.     Usually free.
  694.     
  695. If your communication board uses an IRQ other than 3 or 4 and you experience
  696. "can talk but not listen" syndrome when using Kermit, simply tell Kermit the
  697. device's IRQ number.  This is done in the SET COMn command, after the address:
  698.  
  699.   SET COMn <address> <irq>
  700.  
  701. for example:
  702.  
  703.   SET COM3 \x03e8 5
  704.  
  705. When you include a number (like 3, 4, 5, 6, or 7) after the port address
  706. (separated by a space), Kermit skips its IRQ test and uses the IRQ number you
  707. specified the next time you give a SET PORT command for that port.
  708.  
  709.   AVOID address and IRQ conflicts; these items MUST NOT overlap existing
  710.   equipment. SERIOUS DAMAGE can result if, for example, the IRQ number you
  711.   give is the same as the one used by your disk controller or network
  712.   adapter.  Incorrect operation can result if the interrupt is in use by a
  713.   less critical device, such as a mouse.
  714.  
  715. It is necessary to specify the IRQ number in either of these two situations:
  716.  
  717.   1. The communication device uses an IRQ number other than 3 or 4.
  718.  
  719.   2. Kermit's IRQ test interferes with Windows or a similar environment.
  720.  
  721. Check your PC's configuration carefully before specifying an IRQ number.
  722. Before starting Kermit, you can use public domain or commercial utilities like
  723. MAPMEM, Northgate QAPLUS, Quarterdeck MFT, or the MSD utility shipped with
  724. Windows 3.1 to get an idea of which IRQ numbers are already in use (these
  725. utilities are, of course, not foolproof -- for example, they can't tell what
  726. IRQs are used by programs that are not presently loaded).  (NOTE: Run these
  727. programs under DOS, not Windows, if possible, since Windows hides things.)
  728.  
  729. If, even after establishing the device's interrupt, Kermit still fails to
  730. operate correctly, check whether:
  731.  
  732.   1. Some other device (such as a mouse or LAN adapter) is generating the 
  733.      same interrupt.
  734.  
  735.   2. Some other software (such as a mouse or video driver) is catching the 
  736.      same interrupt.
  737.  
  738. If you find a conflict, you'll have to resolve it: remove the offending device
  739. driver or TSR from your CONFIG.SYS or AUTOEXEC.BAT file or turn it off
  740. temporarily (e.g. with the MOUSE OFF command for certain mouse drivers) or
  741. reconfigure one of the conflicting devices to use a different IRQ.
  742.  
  743. Example: A PC (not PS/2) is delivered with a serial mouse on COM1 and with
  744. COM2 as a free serial port.  COM2 can be used with an external modem, but you
  745. can't put an internal modem on COM3 because its IRQ conflicts with the mouse
  746. and the COM4 address clashes with an 8514/A video adapter (such as the ATI
  747. Ultra+).  Neither the mouse interrupt nor the video board address can be
  748. changed.  So to install an internal modem, you must remove the serial mouse
  749. and driver and, if you need a mouse, replace it with a bus mouse.
  750.  
  751. (6.5) MODEM PROBLEMS
  752.  
  753.   "I just bought and installed an XYZ-PowerTurbo V-Dot-Everything internal
  754.    data/fax modem, and I can't make it work!"
  755.  
  756. With internal modems, particularly when they are installed on COM3 or COM4,
  757. the most common problems are:
  758.  
  759.  1. Kermit doesn't know the modem's address, or the device is using an IRQ
  760.     number other than 3 or 4.  These problems can be fixed by giving the
  761.     appropriate SET COMn command to Kermit and/or clearing up any interrupt
  762.     conflicts among your PC's devices.
  763.  
  764.  2. The internal modem is installed incorrectly, with an address or IRQ that
  765.     conflicts with one already in use on your PC.
  766.  
  767.  3. The internal modem does not correctly emulate a real IBM PC serial port,
  768.     and therefore fails Kermit's hardware test, and therefore can only be
  769.     used through the BIOS.
  770.  
  771.  4. The device is in a battery-powered computer, and power to the internal
  772.     modem has been disabled in the CMOS setup, or has been turned off
  773.     automatically when the cover is closed or the machine shut down.
  774.  
  775. In mid-1992, a new generation of low-cost, high-speed modems, both internal
  776. and external, began to appear on the market.  These modems typically offer a
  777. wide range of features: V.32 and V.32bis modulation, V.42 and MNP error
  778. correction, V.42bis and MNP data compression, etc.  Unfortunately, many of
  779. these modems suffered from bugs not found in earlier modems.  The problems are
  780. generally related to initialization of the modem and interaction with its
  781. command processor.  Some common complaints:
  782.  
  783.  1. "The modem won't dial or respond to commands".  Or the modem ignores
  784.     commands when Kermit's PARITY is set to a particular value, like EVEN.
  785.     Or commands are not processed correctly above a certain interface speed.
  786.  
  787.  2. "I can dial successfully, and in general send characters to and through
  788.     the modem, but I never get any characters back."  This looks suspiciously
  789.     like the "talk-but-not-listen" problem, but in some cases it is a bug in,
  790.     or a configuration problem with, the modem, having nothing to do with
  791.     Kermit: the modem is simply not sending any characters to the PC.
  792.  
  793.  3. "After using the modem with <name-omitted> communication software, it
  794.     also works with Kermit, but it won't work with Kermit unless I run
  795.     <name-omitted> first."
  796.  
  797.  4. "I can communicate in command-mode with the modem, up until I give it
  798.     an ATZ command, at which point my PC freezes up."
  799.  
  800.  5. The modem does not pass the BREAK signal.
  801.  
  802.  6. The DSR signal goes off after successful dialing.
  803.  
  804. And so on.  Here are some suggestions for overcoming these problems:
  805.  
  806.  1. Before giving a DIAL command, which invokes a macro containing OUTPUT
  807.     commands for the modem's command processor, give the command:
  808.  
  809.     SET OUTPUT PACING <milliseconds>
  810.  
  811.     For example:
  812.  
  813.     SET OUTPUT PACING 100
  814.     OUTPUT AT Q0 E1 V1 &F\13
  815.  
  816.     This inserts a pause between every character that Kermit sends to the
  817.     modem.
  818.  
  819.  2. External modems only: Check that your modem cable has wires for (at least)
  820.     the TD, RD, SG, CTS, RTS, DSR, CD, and DTR RS-232 signals.    If it does
  821.     not, replace the cable with a real modem cable, or (temporarily) configure
  822.     your modem to compensate for the missing signals.
  823.  
  824.  3. Read your modem manual and check your modem's configuration.  Perhaps its
  825.     interface speed is locked to a different speed than the one Kermit is
  826.     using.  Perhaps Kermit is set to use RTS/CTS flow control, but the modem
  827.     is not asserting CTS.  Also, check its factory and/or saved settings, and
  828.     under what conditions they are restored (for example, are they restored
  829.     when the PC drops DTR?).  How are you selecting saved settings -- read
  830.     your modem manual about (e.g.) the difference between AT&F and AT&F2.  Be
  831.     aware that the AT&Fn commands might not restore all S-registers, so double
  832.     check them.     Be particularly sensitive to the registers that control
  833.     interface speed, modulation technique, error correction, data compression,
  834.     negotiation, and fallback, and note that each modem maker probably uses
  835.     different registers and commands to control each of these features.
  836.  
  837.  4. Try the following sequence to initialize the port (using COM3 in this
  838.     example):
  839.  
  840.     SET COM3 <address> <irq>    ; (if necessary)
  841.     SET PORT 3            ; Select port 3
  842.     HANGUP                ; Drop DTR on port 3
  843.     SET PORT 3            ; Re-initialize port 3
  844.  
  845.  5. SET PARITY NONE before directly talking to the modem's command processor,
  846.     and then SET PARITY to whatever the remote host or service requires after
  847.     making the connection.  (In v3.14, the DIAL macro does this
  848.     automatically.)
  849.  
  850.  6. Ensure your PC bus speed is 8MHz.  Some PCs come with a BIOS SETUP
  851.     facility that lets you change the PC's bus speed, memory wait states, etc.
  852.     It is usually dangerous to deviate from the defaults, particularly from
  853.     the 8MHz bus speed, a standard for add-on devices; it might be required by
  854.     your communication board or internal modem.
  855.  
  856.  7. To avoid negotiation and fallback problems between the two modems, set
  857.     your modem for features that you know the answering modem will support:
  858.     the particular type of modulation, error correction, compression
  859.     (connection problems between the two modems have nothing to do with Kermit
  860.     and are beyond the scope of this document). If a modem appears to dial
  861.     correctly, gets connection tones, and then hangs up, it is a problem
  862.     between the two modems (involving one or both modems and/or the phone
  863.     company), and indicates a modem configuration problem, a bug, or a basic
  864.     incompatibility between the calling and answering modems.
  865.  
  866.  8. The ATZ problem -- a bug in your modem.  If the modem doesn't work after
  867.     an ATZ command, HANGUP and SET PORT again.  If that doesn't do it, power
  868.     the modem off and on.  If that doesn't work, power the PC off and on.
  869.  
  870.  9. If the modem doesn't pass the BREAK signal, but you want it to, read your
  871.     modem manual about how to configure it appropriately.  If your modem can't
  872.     be configured to pass the BREAK signal, but it does correctly implement a
  873.     command for sending BREAK, such as AT\B9, define an MS-DOS Kermit macro,
  874.     SBREAK, to send a BREAK as follows:
  875.  
  876.       define sbreak pause 1, output +++, pause 1, output ATB\{92}9\13, -
  877.     pause 1, output ATO\13, connect
  878.     
  879.     and assign it to the key of your choice, for example F1:
  880.  
  881.       set key \315 {\Ksbreak}
  882.  
  883. 10. Reportedly, some new modems (e.g. some of the PCMCIA kind) require their
  884.     commands to be in uppercase.  The dialing scripts should issue only
  885.     uppercase commands, but also check your dialing directory (e.g. "t" for
  886.     Tone dialing should be "T", etc).
  887.  
  888. 11. Call your modem maker's technical support number.  Ask if they have
  889.     replacement chips to fix bugs in your modem.
  890.  
  891. (7) DEVICE INTERRUPT CONFLICTS AND OTHER HARDWARE CONSIDERATIONS
  892.  
  893. On certain PCs, Kermit file transfers (or terminal sessions that are being
  894. logged to disk) through serial communication devices (COM1 thru 4) can suffer
  895. from data loss during disk read/write operations.  This is apparently because,
  896. on these PCs, the entire interrupt mechanism is TURNED OFF during disk reads
  897. or writes.  Thus, while the disk driver is active, no interrupts are generated
  898. by incoming characters, and therefore they are likely to be lost.
  899.  
  900. If you experience data loss during uploads (watch the "Retries" counter), try
  901. sending the same file from a RAM disk; if the retries go away, your PC has
  902. this problem.  If downloads to disk have lots of retries, try downloading the
  903. same file to the NUL device (tell MS-DOS Kermit to RECEIVE NUL); same deal.
  904.  
  905. Disk cache programs also consume many CPU cycles with interrupts turned off.
  906. The larger the amount to be written from cache the longer they stay off.
  907. If necessary shorten or eliminate the disk cache program.
  908.  
  909. Other types of conflicts can arise from:
  910.  . The video adapter driving Int 2 for vertical retrace.
  911.  . Video adapter clashing with memory controller caching on the motherboard.
  912.  . System bus cranked up too fast; should be 8MHz.
  913.  . Too few wait states.
  914.  . DOS PRINT TSR or other TSRs.
  915.  
  916. Several users have reported that on systems which have user-selectable
  917. processor speeds (such as 11MHz vs 25MHz), that Kermit works effectively at
  918. high serial communication speeds only when the higher processor speed is
  919. selected.
  920.  
  921. (8) MS-DOS 5.0 AND 6.x
  922.  
  923. You should not use MS-DOS Kermit (or other communications software) under
  924. DOSSHELL.  Unlike Windows, DesqView, OS/2, etc, DOSSHELL is NOT a multitasking
  925. environment.
  926.  
  927. (9) MICROSOFT WINDOWS, DESQVIEW, OS/2, WINDOWS NT, ETC.
  928.  
  929. Although MS-DOS Kermit can work in these environments, and even takes
  930. advantage of many of their features, it does not have a "graphical user
  931. interface".  You still have to type commands to the MS-Kermit> prompt or
  932. execute them from command files with the TAKE command.
  933.  
  934. (9.1) OS/2
  935.  
  936. The recommended communications software for OS/2 (any version) is C-Kermit
  937. 5A(190) or later, a native OS/2 application.  As of this writing, however,
  938. there are still a few good reasons for using MS-DOS Kermit under OS/2, 
  939. including:
  940.  
  941.  . To get Tektronix and/or Sixel graphics terminal emulation, which are not
  942.    yet offered by OS/2 C-Kermit. 
  943.  
  944.  . To run a special version of DOS, e.g. Chinese DOS (CC-DOS, KCDOS, or
  945.    ZWDOS), which can then be used with MS-DOS Kermit for terminal emulation
  946.    and command processing.
  947.  
  948. (9.1.1) OS/2 1.x...
  949.  
  950. Under OS/2 1.3 and earlier, MS-DOS Kermit only runs in full-screen mode.
  951. Under 1.x of OS/2, the serial port must first be conditioned by the command:
  952.  
  953.   SETCOM40 COM1=ON
  954.  
  955. (9.1.2) OS/2 2.0 and Later...
  956.  
  957. MS-DOS Kermit can run in a window of OS/2 2.x or in a full screen.  Kermit's
  958. flow control has no effect because OS/2 itself is controlling the device.  You
  959. can configure OS/2 to handle flow control itself by adding a command like the
  960. following to your STARTUP.CMD file:
  961.  
  962.     MODE COM1 XON=ON          (for XON/XOFF software flow control) 
  963. or:
  964.     MODE COM1 RTS=HS OCTS=ON  (for RTS/CTS hardware flow control)
  965.  
  966. If your PC's communication port is a 16550A[FN] UART serial communication
  967. adapter (as is standard on the PS/2), it has a built-in buffer to improve
  968. performance.  To enable use of the 16550's buffering capability, add BUFFER=ON
  969. to your MODE command:
  970.  
  971.     MODE COM1 XON=ON BUFFER=ON           (for XON/XOFF software flow control) 
  972. or:
  973.     MODE COM1 RTS=HS OCTS=ON BUFFER=ON (for RTS/CTS hardware flow control)
  974.  
  975. If you don't have a buffered UART, MS-DOS Kermit (and most likely any other
  976. communications software) will lose characters galore at high transmission
  977. speeds.
  978.  
  979. IDLE_DETECTION_TIME should be set to 0 (which is the default anyway) and
  980. IDLE_SENSITIVITY should be 100 to reduce jerkiness of DOS sessions.  Also,
  981. reportedly, HW_TIMER must set to ON to avoid "hangs or extreme slowness" when
  982. running MS-DOS Kermit scripts in a DOS window.
  983.  
  984. To make MS-DOS Kermit run VERY FAST under OS/2, use Ray Gwinn's SIO Virtual
  985. Fossil Driver (VX00.SYS) in conjunction with his OS/2 comm driver (SIO.SYS).
  986. If you get rid of the overhead of the virtualized 16550 comm port, MS-DOS
  987. Kermit flies.  Just SET PORT BIOS<n> or FOSSIL <n>, where <n> is an existing
  988. physical (or SIO mapped) comm port and then use it in the normal way.
  989.  
  990. You can make TCP/IP connections with MS-DOS Kermit from within OS/2 as long
  991. as you do not have any other network software loaded; that is, if MS-DOS
  992. Kermit has exclusive access to the network board.
  993.  
  994. (9.2) MICROSOFT WINDOWS
  995.  
  996. MS-DOS Kermit operates under Microsoft Windows 3.0 and 3.1 in fullscreen mode
  997. on all machines, and in a window on 386-class or higher machines that have
  998. enough memory for Windows to operate in Enhanced Mode (3-4 megabytes are
  999. required).  See installation instructions in READ.ME.
  1000.  
  1001. Memory-management setups accomplished under DOS (e.g. by EMM386) in CONFIG.SYS
  1002. are undone by Windows. If successful operation of Kermit or other applications
  1003. depends on some special memory configuration (such as eXclude= and frame=
  1004. clauses to protect portions of video memory, etc), you must duplicate this
  1005. configuration in the [Enhanced] section of the Windows SYSTEM.INI file.  See
  1006. section 19.
  1007.  
  1008. When running Kermit in two windows at once, one on COM1, one on COM2, Windows
  1009. complains that both applications want to access COM1.  To make sure that
  1010. COM1's IRQ 4 is not touched when starting COM2 (part of the "find the IRQ"
  1011. test), specify the COM2 port parameters explicitly as "set com2 \x2f8 3"
  1012. (standard port address and IRQ for COM2) before "set port com2" to make Kermit
  1013. skip the test.
  1014.  
  1015. Similarly, if you have a serial mouse on COM1, and you want Kermit to use (for
  1016. example) COM2 for communication, add the following to your MSCUSTOM.INI
  1017. file to prevent Kermit from touching COM1 and interfering with your mouse:
  1018.  
  1019.   SET COM2 \x2f8 3 ; (substitute appropriate values)
  1020.   SET PORT COM2
  1021.  
  1022. Kermit's performance under Windows depends on the BIOS, the PC architecture,
  1023. the serial port hardware, which drivers and TSRs are loaded, the system load,
  1024. and Windows settings.  A 16550A UART is particularly important under Windows,
  1025. as is an effective flow control method. For further tuning, look at the
  1026. Windows files SYSIN*.TXT for information about SYSTEM.INI settings related to
  1027. communication ports, particularly COMxBuffer and COMBoostTime.
  1028.  
  1029. When running MS-DOS Kermit under Windows, specifying a ",P" at the end of a
  1030. serial port setting in WIN.INI or in a MODE command can cause loss of
  1031. characters from the serial port.  Remove the ",P" from the setting.
  1032.  
  1033. TCP/IP connections over packet drivers under Windows require the WINPKT shim.
  1034. TCP/IP connections over ODI under Windows require a packet-driver simulation
  1035. shim and also the WINPKT shim.    Or, instead of using WINPKT, you can lock
  1036. Kermit into memory.  You can't use Kermit in conjunction with Winsock.
  1037. See NETWORKS\SETUP.DOC.
  1038.  
  1039. (9.3) DESQVIEW and DESQVIEW/X
  1040.  
  1041. Set "Optimize Communications" in the DesqView Advanced menu to "No".
  1042.  
  1043. DESQview/X reportedly requires that the serial port be configured to
  1044. "optimize" to prevent Kermit from losing characters.  Network connections
  1045. (TCP/IP over a packet driver or ODI) within an X window of DESQview/X
  1046. apparently do not work.
  1047.  
  1048. (9.4) WINDOWS NT
  1049.  
  1050. If you run Kermit under 4NT or CMD.EXE (but not under 4DOS or COMMAND.COM)
  1051. under Windows NT 3.5, the serial port will hang up when you exit from Kermit.
  1052. Kermit is not doing this itself, it just happens -- probably because these
  1053. 32-bit shells deallocate the port, causing NT to drop RTS and DTR.
  1054.  
  1055. If you have performance problems with MS-DOS Kermit under Windows NT:
  1056.  
  1057. You really need at least 20 MB of memory to run Windows NT, and particularly
  1058. to run communications software under Windows NT.
  1059.  
  1060. Check the Event Viewer for errors in the System Log, or use WINMSD to check
  1061. for IRQ conflicts.
  1062.  
  1063. (10) VIDEO PROBLEMS
  1064.  
  1065. Never use segments A000 or B000 for memory mapping.  These belong to the
  1066. video adapter.  See section 19.
  1067.  
  1068. Kermit does not mix well with NNANSI.SYS, a public domain (or shareware?)
  1069. console driver that replaces ANSI.SYS, and which implements "hardware
  1070. scrolling", a case of two non-cooperating programs directly manipulating the
  1071. video adapter at the same time!  Similarly for other console drivers that
  1072. access the screen directly, including ANSI.COM (from PC Magazine, circa 1988).
  1073. To turn off NNANSI.SYS's direct screen access, put the following commands in
  1074. your MSCUSTOM.INI file:
  1075.  
  1076.   echo \27[=98l             ; Reset "fast mode"
  1077.   define on_exit echo \27[=98h     ; Set "fast mode"
  1078.  
  1079. Q: I am using kermit software and trying to use SET TERMINAL GRAPHICS
  1080.    COMPRESSED and every time I try to use this mode on a monochrome screen it
  1081.    will only show half a screen, even though it works fine on a color screen.
  1082.  
  1083. A: Those monochrome boards which do graphics are Hercules-compatible units.
  1084.    Herc adapters have a half and full "page" graphics mode, and you need to
  1085.    configure them for full-page graphics.  Read the booklet that comes with
  1086.    the board; sometimes the vendor supplies utilities on disk, sometimes it's
  1087.    a jumper on the board.
  1088.  
  1089. (11) SERIAL COMMUNICATIONS
  1090.  
  1091. ANSI.COM, mentioned above in connection with video problems, also interferes
  1092. with serial communications.  Solution: unload it, use ANSI.SYS instead.
  1093.  
  1094. On 386-class PCs with high-quality buffered UARTs, Kermit can be used at
  1095. speeds up to 57600 bps under DOS (under Windows or DesqView, or on 286s or
  1096. below, the maximum speed is usually lower).  115200 bps usually works only
  1097. with a short shielded cable, and the async adapters of the two devices in
  1098. perfect tune.  Many new high-speed PCs come with unbuffered UARTs.  Despite
  1099. the speed of the CPUs, these new machines perform serial communications less
  1100. reliably than older slower machines (like the PS/2-70) with buffered UARTs.
  1101.  
  1102. MS-DOS Kermit will tell you whether you have a buffered UART:
  1103.  
  1104.   SET PORT 2
  1105.   SHOW COMMUNICATIONS
  1106.   ...
  1107.   COM1 Address: Port \xf38, IRQ 4, 16550A UART FIFO
  1108.  
  1109. 16550A UART means you have the good kind, FIFO means it has a "First-In
  1110. First-Out" buffer.  If Kermit does not say you have a 16550A UART FIFO, and
  1111. you are suffering poor performance or data loss, replace it (if possible)
  1112. with a 16550A.
  1113.  
  1114. SHOW COMMUNICATIONS might incorrectly display the UART type after you switch
  1115. ports (e.g. from COM1 to COM2).  After using the new port (e.g. in CONNECT
  1116. mode), the display will be correct again.
  1117.  
  1118. If your speed is set too high, the symptom might be lost or garbled characters
  1119. or graphics images on the screen, or data-overrun beeps.  Normally flow
  1120. control prevents these problems so use it if you can.  Printing while in
  1121. CONNECT mode needs flow control to be active.
  1122.  
  1123. The SHOW MODEM and WAIT commands work right only if your modem or other
  1124. communication device is configured to raise and lower the DSR, CTS, and CD
  1125. signals appropriately, and the cable that connects your PC to the modem passes
  1126. these signals through.  For some modems, the factory setting is to always keep
  1127. CD on, even if there is no connection.  Consult your modem manual.
  1128.  
  1129. For serial devices, the HANGUP command (and Ctrl-]H in CONNECT mode) works
  1130. only if the cable that connects your PC to the communication device passes the
  1131. DTR signal through, and if the communication device itself is configured to
  1132. hang up or otherwise terminate the connection when the DTR signal is lowered
  1133. by the PC.  For some modems, the factory setting is to ignore DTR transitions.
  1134. Consult your modem manual.  NOTE: in version 3.11, the HANGUP command turned
  1135. off DTR for about 1/2 second and then turned it back on again.  In version
  1136. 3.12 and later, the HANGUP command turns off DTR until the next time you issue
  1137. a command that accesses the serial port.  If you can't make the HANGUP command
  1138. work, use the ATHANGUP macro defined in MSKERMIT.INI, which should work on
  1139. Hayes-like modems.
  1140.  
  1141. On serial connections, when you PUSH to DOS (including when you use Kermit's
  1142. RUN command), and you have XON/XOFF flow control enabled, Kermit sends an XOFF
  1143. (Ctrl-S) to the host when you leave, and XON (Ctrl-Q) when you return (if you
  1144. have RTS/CTS flow control enabled, Kermit turns off RTS).  This is to make the
  1145. host stop transmitting data.  However, if you were in the EMACS text editor on
  1146. the host, Ctrl-S will be interpreted as a Search command, and Ctrl-Q as a
  1147. Quote command.  When you return to EMACS, type several Ctrl-G's to get back to
  1148. normal.
  1149.  
  1150. (12) TERMINAL EMULATION
  1151.  
  1152. In v3.14 the status line says "Esc:Alt-x help:Alt-h ... 7n1 ..."  This means
  1153. use Alt-x to escape back to the prompt, Alt-h to get a popup help screen.
  1154. This message won't change if you remap the \Kexit and \Khelp verbs to other
  1155. keys.  7n1 means 7 data bits, no parity, 1 stop bit.  To get 8 data bits, you
  1156. also have to SET TERMINAL BYTESIZE 8.
  1157.  
  1158. Session logging can be turned on using the LOG SESSION command, and it can be
  1159. toggled on and off during terminal emulation by using whatever keys are
  1160. associated with the verbs \Klogoff and \Klogon.  To enable a session log, but
  1161. to have it initially turned off (using the F1 and F2 keys as examples):
  1162.  
  1163.   SET KEY \315 {\Kloginit}  ; F1 to turn on log
  1164.   SET KEY \316 \klogoff        ; F2 to turn log off
  1165.   DEFINE loginit log session, set key \315 \klogon, define loginit, connect
  1166.  
  1167. To log your session to a printer, add the word PRN after "log session" in the
  1168. third line above.
  1169.  
  1170. The session log is written to disk by DOS.  The frequency with which DOS
  1171. updates this file is governed by the BUFFERS= line in your CONFIG.SYS file
  1172. (see your DOS manual).  If you allocate a large number of buffers in
  1173. CONFIG.SYS, disk operations occur infrequently and this improves performance.
  1174. If you need to have the session log updated more frequently to minimize the
  1175. loss of data, e.g. when there is a power failure, you can do this (at the
  1176. expense of efficiency) by allocating fewer buffers in CONFIG.SYS.
  1177.  
  1178. If you have Kermit's TERMINAL TYPE set to NONE, there is a two-second pause
  1179. after you give a CONNECT command, to give you time to read the message about
  1180. how to get back.
  1181.  
  1182. (12.1) KEYBOARDS AND KEYBOARD DRIVERS
  1183.  
  1184. On some national keyboards, like the German one, Kermit's normal escape
  1185. character, Ctrl-] (Control-Rightbracket) does not seem to work.  This is
  1186. because certain control characters are typed differently on these keyboards.
  1187. On the German keyboard, Ctrl-] is produced by holding down the Ctrl (Strg) key
  1188. and pressing the + (plus) key.  MS-DOS Kermit has no way of knowing this.
  1189.  
  1190. Kermit does not work with certain Swedish keyboard drivers because of a bug in
  1191. the keyboard driver.  Workaround: use a different Swedish keyboard driver;
  1192. reportedy several are available.  Trouble has also been reported with the
  1193. British keyboard driver.
  1194.  
  1195. Do not attempt to plug an enhanced (101) keyboard into a PC/XT or earlier.
  1196. The BIOS on early PCs does not support the newer keyboards, even if you
  1197. install the corresponding keyboard driver.
  1198.  
  1199. (12.2) VT TERMINAL EMULATION
  1200.  
  1201. Kermit's VT320/340 emulator lacks the following features:
  1202.  
  1203.  . Smooth scroll
  1204.  . Downloadable soft fonts
  1205.  . ReGis graphics (VT340/330)
  1206.  . Dual sessions in split screens (VT340/330)
  1207.  . Local screen editing and block transmission (for security reasons)
  1208.  . True double height/width characters (these are simulated)
  1209.  . True underscore on color monitors (simulated by color)
  1210.  . Some of the exotic and rarely-used features of the DEC VT340/330 series:
  1211.    formatted screen & graphics operations highly specialized to DEC hardware.
  1212.  
  1213. If VMS thinks you have a VT220 or VT320, it sends 8-bit control sequences.
  1214. Kermit does not understand them unless you SET TERMINAL BYTESIZE 8.  The
  1215. symptom is the appearance of fragments of escape sequences on the screen and
  1216. wrong cursor positioning, and possibly fractured tab settings, particularly
  1217. during EVE sessions.  You can prevent VMS from sending 8-bit control sequences
  1218. (if you really do not have an 8-bit connection) by giving the VMS command SET
  1219. TERMINAL /NOEIGHT.  You should also use Xon/Xoff flow control in both
  1220. directions (SET TERM /TTSYNC /HOSTSYNC on VMS).
  1221.  
  1222. In VT100/200/300 emulation on the IBM PC family, receipt of ESC [ 4 m (turn on
  1223. underscore) results in a color change rather than underscore on IBM CGA, EGA
  1224. and other color displays.  IBM color display adapters don't have an underscore
  1225. attribute.  The color chosen for underscore simulation is derived from the
  1226. normal fore- and background colors in a way that ensures it is different from
  1227. both.  Use SET TERMINAL UNDERSCORE to pick your own colors for this.
  1228.  
  1229. Receipt of ESC [ 0 m does not affect the fore- and background colors, in
  1230. compliance with the definition of this function for real DEC VT terminals,
  1231. unless special Kermit color value 20 is given in command SET TERMINAL COLOR.
  1232. With 20 stated colors are restored to their normal values along with resetting
  1233. all visual attributes. Fore- and background colors can be changed by the host,
  1234. by sending explicit ESC [ 3x/4x m escape sequences, or with SET TERMINAL
  1235. COLOR.
  1236.  
  1237. SET TERMINAL COLOR 1 [3xx 4xx] (used to make the foreground color bright), if
  1238. issued when SET TERMINAL SCREEN REVERSE is in effect, reverts to normal video.
  1239. Similary, if SET TERMINAL COLOR 1 is in effect, the effects of the host-
  1240. generated escape sequences CSI 1 m and CSI 0 m are reversed.
  1241.  
  1242. If certain incomplete escape sequences (e.g. Operating System Command) are
  1243. received during terminal emulation, Kermit can hang waiting for the string
  1244. terminator that never comes, usually because of noise on the communication
  1245. line.  Reset the terminal emulator by pressing Alt-= (Alt-equals), the default
  1246. key for \Kreset.
  1247.  
  1248. (12.3) DG TERMINAL EMULATION
  1249.  
  1250. Because Data General terminals use Xon or Xoff characters in escape sequences,
  1251. Kermit can't do Xon/Xoff flow control of incoming characters on serial
  1252. connections.  Solution: use RTS/CTS flow control if available, or else tell
  1253. Kermit to SET FLOW OUTGOING-XON/XOFF.
  1254.  
  1255. (12.4) CHANGING SCREEN DIMENSIONS
  1256.  
  1257. Kermit assumes 25 screen lines but can adapt to other lengths if it knows how
  1258. to get this information from the video adapter.  The number of lines is
  1259. usually available from DOS as the "video mode".  Unfortunately, different
  1260. video adapters have different video modes, or use the same mode numbers to
  1261. mean different things, and use different methods to set the mode (typically
  1262. some kind of DOS MODE or VMODE "LINES=" command, the "printing" of certain
  1263. escape sequences to be intercepted by the console driver, etc).  In any case,
  1264. Kermit tries its best to use the screen dimensions discovered upon startup,
  1265. but if Kermit subsequently enters 132-column or graphics mode, it will return
  1266. to a 25-line screen because if it doesn't know how the original nonstandard
  1267. geometry was established in the first place.
  1268.  
  1269. Certain screen lengths, such as 25 and 43, are more or less standardized
  1270. among different video adapters and drivers, but most others are kludges in
  1271. which, for example, the video adapter enters 25- or 43-line mode but then
  1272. loads a different-size font.  E.g. 50 rows might be achieved by loading
  1273. an 8x8 font into a 25-line screen.  This is why Kermit is often unable to
  1274. retain or restore the screen length when changing the screen width.
  1275.  
  1276. WARNING: Some MODE or VMODE programs might corrupt Kermit's memory when run
  1277. from the MS-Kermit> prompt.  This was observed in the following situation: Two
  1278. TELNET sessions to two hosts, frequent switching between them, and also
  1279. frequent changing of screen sizes via "run vmode".  Most likely cause: failure
  1280. of the VMODE program to observe proper memory allocation etiquette.
  1281.  
  1282. To get properly formatted screens during terminal emulation, be sure to inform
  1283. the remote host of your screen width and length.  On some UNIX systems, this
  1284. can be done by:
  1285.  
  1286.   `eval resize`
  1287.  
  1288. which asks the terminal for its dimensions (Kermit responds correctly) and
  1289. puts these values in your UNIX environment.  As of version 3.14, Kermit will,
  1290. on TCP/IP TELNET connections, engage automatically in NAWS (Negotiate About
  1291. Window Size) protocol with the TELNET server, if the TELNET server supports
  1292. this, which will inform the remote host of your screen size automatically.
  1293.  
  1294. (12.5) 132-COLUMN MODE
  1295.  
  1296. Normally, you can't use 132-column text mode in a Windows window, because
  1297. Windows takes over the graphics adapter and hides its particulars from Kermit,
  1298. but you can use it in a full screen session.  But if you want to try it in a
  1299. window anyway, tell Kermit to SET TERMINAL VIDEO-CHANGE ENABLE.  Then when a
  1300. directive is received to switch video modes, Windows might pop up a dialog box
  1301. saying that it won't let you do this in a Window session; click on OK and the
  1302. Kermit session will be switched to full-screen.
  1303.  
  1304. If you have a monitor with fixed horizontal frequency but a video adapter that
  1305. Kermit knows how to switch into 132 column mode, you will see only garbage on
  1306. your screen whenever Kermit switches to 132 columns.  Get a new monitor or
  1307. tell Kermit to SET TERMINAL VIDEO-CHANGE DISABLE.
  1308.  
  1309. On serial connections with Xon/Xoff flow control, Kermit sends Xoff and Xon
  1310. apply when commanded to change its screen size between 80 and 132 columns,
  1311. because this is often a time-consuming operation.  With RTS/CTS, Kermit turns
  1312. off RTS while the size is being changed.
  1313.  
  1314. See KERMIT.UPD for further information on 132-column mode.
  1315.  
  1316. (12.6) GRAPHICS TERMINAL EMULATION
  1317.  
  1318. PS/2 Model 25 and 30 MCGA adapter is used in low-resolution CGA mode by
  1319. default; images may be elongated or truncated.    Hi-resolution graphics can be
  1320. done (as of version 3.11) via SET TERM GRAPHICS VGA, but these slow PC models
  1321. might not be able to keep up at speeds above 9600 bps.
  1322.  
  1323. When you type the escape character (normally Ctrl-]) while in graphics mode,
  1324. the screen goes back to text memory.  Then when you type the argument
  1325. character, the graphics screen reappears (unless the argument was C or P).
  1326. Ctrl-]F will not file the graphics screen, but rather the text screen, because
  1327. that's the screen that's showing after type the Ctrl-] key.  To file the
  1328. graphics screen (in TIFF format), use \Kdump (normally on Ctrl-Keypad-End).
  1329.  
  1330. You can't dump the Tektronix screen while the GIN-mode crosshair cursor is
  1331. active; Kermit's keyboard translator is not active.  Key strokes (of regular
  1332. typewriter keys) or mouse actions are used to transmit the crosshair
  1333. coordinates.  If you press a non-typewriter key, Kermit just beeps.
  1334.  
  1335. Kermit does not emulate a particular kind of color Tektronix terminal, e.g.
  1336. 41xx or 42xx series.  However, it can be used for color graphics by mixing
  1337. ANSI color-setting escape sequences with Tektronix or Sixel commands.  This
  1338. requires graphics software vendors adding support for MS-DOS Kermit graphics
  1339. to their packages (WordPerfect and SAS have done so for their host-resident
  1340. products).  There is at least one ReGis-to-Sixel converter on the market:
  1341. RETOS, a DEC product for VMS, and there is also a sixel driver for
  1342. Ghostscript.
  1343.  
  1344. Problems may occur when using Kermit with host-resident (VAX/VMS) versions of
  1345. WordPerfect because the color palette report sent upon request of WordPerfect
  1346. is very long. If the host is not configured properly, parts of the report will
  1347. be lost because of overruns on the VMS side.  SET TERM /HOSTSYNC and /TTSYNC
  1348. are required for WP/VMS.  Even then intervening communication boxes (e.g.
  1349. terminal servers) can become overloaded with the 200++ byte response.
  1350.  
  1351. In v3.14, Ctrl-L (as opposed to ESC Ctrl-L) was removed as Tektronix
  1352. screen-clearing command.
  1353.  
  1354. (13) PRINTER SUPPORT
  1355.  
  1356. Kermit uses DOS services for printing. There is no knowledge of particular
  1357. printer types in Kermit.  Kermit determines whether the printer is ready, or
  1358. if there has been a printing error, via DOS's return code.  If DOS tells
  1359. Kermit the printer is not ready, Kermit changes the printer device name to NUL
  1360. so subsequent print operations won't block.  To reenable printing operations
  1361. (e.g. after turning on the printer, adding paper, etc), use a SET PRINTER
  1362. command such as SET PRINTER PRN or SET PRINTER LPT1.
  1363.  
  1364. When printing a file that contains a Ctrl-Z character, DOS will "close" the
  1365. printer as soon as it sees the Ctrl-Z, and when subsequent characters are sent
  1366. to the printer, DOS reports a printer error and Kermit reports "Printer error,
  1367. discard or retry?".  This is a feature of DOS.
  1368.  
  1369. The Print Screen and Shift-PrintScreen keys are never seen by Kermit.  They
  1370. are intercepted and acted on by the BIOS.  Thus Kermit has no control over the
  1371. format of the printed output.  For example, a formfeed is not added to the end
  1372. to force a page eject.  If you want to print the current screen with a
  1373. formfeed at the end, use the following procedure:
  1374.  
  1375.   SET DUMP PRN    ; Specify that screen dumps go to the printer
  1376.  
  1377. and then use the \Kdump keyboard verb to accomplish the screen dump.  This
  1378. verb is assigned by default to the keypad Ctrl-End key on the numeric keypad,
  1379. but you can assign it to another key of your choice (but not Print Screen),
  1380. for example:
  1381.  
  1382.   SET KEY \315 \Kdump  ; Assign screen dump to F1
  1383.  
  1384. Alternatively, you can define a key to send a formfeed (ASCII 12) to the
  1385. printer:
  1386.  
  1387.   DEFINE FFPRINT run echo \12 >PRN, connect
  1388.   SET KEY \316 {\Kffprint} ; F2 sends FF to printer
  1389.  
  1390. Or you can redefine your host printing procedure to include a formfeed:
  1391.  
  1392.   1. Send ESC [ 5 i
  1393.   2. "type" the file
  1394.   3. Send formfeed (ASCII 12)
  1395.   4. Send ESC [ 4 i
  1396.  
  1397. If you SET DUMP PRN and then attempt to use the screen-dump feature, and the
  1398. printer is turned off or not ready, the error message is misleading: "Cannot
  1399. open file to save screen to disk".  This is because Kermit is using DOS for
  1400. this operation, and has no idea that PRN is the printer and not a disk file.
  1401.  
  1402. (Shift-)Printscreen can cause the PC to hang if there is no attached printer.
  1403. This is a BIOS feature, Kermit never receives the command.  If this happens
  1404. during terminal emulation, try pressing Alt-= (hold down Alt and press the "="
  1405. key) several times to reset the terminal emulator.
  1406.  
  1407. Serial printers are not well supported by DOS, and since Kermit does all its
  1408. printing through DOS, Kermit's printing features might not work well with
  1409. serial printers.  To use a serial printer effectively, you must have a driver
  1410. for it that takes care of flow control, such as UTILS\XONXOFF.COM.
  1411.  
  1412. Transparent printing starts when the host sends the sequence ESC [ 4 i and
  1413. stops when the host sends ESC [ 5 i.  All characters, including escape
  1414. sequences, that arrive at the port are passed directly to the printer without
  1415. translation (but the parity bit is stripped if Kermit's parity is not NONE).
  1416. If character translation is desired, or it is desired not pass screen-control
  1417. escape sequences to the printer, use Autoprint rather than Transparent print
  1418. (ESC [ 0 i, ESC [ ? 4 i, ESC [ ? 5 i). In that case, characters are translated
  1419. to the current IBM code page.  If your printer doesn't support your IBM code
  1420. page, you need an external utility to translate from the PC code page to the
  1421. printer's character set.  You can use SET PRINTER xxxx to capture Transparent
  1422. print or Autoprint data into a file.
  1423.  
  1424. Under PATHWORKS, reportedly, transparent print operations to a network printer
  1425. do not cause printing to actually occur until the user escapes back to the
  1426. MS-Kermit prompt and forces the printer to be closed (and reopened) with a SET
  1427. PRINTER PRN command.
  1428.  
  1429. If transparent print material arrives but the printer is not ready, Kermit
  1430. issues a PRINTER IS NOT READY message and gives the user a chance to retry (R)
  1431. or discard (D).     If D is selected, then when the printer is made ready again,
  1432. subsequent transparent print jobs are discarded.  Solution: escape back to the
  1433. prompt and give a SET PRINTER PRN command to reenable transparent printing.
  1434.  
  1435. If chunks of a printout are missing or garbled, this indicates a lack of
  1436. adequate flow control between Kermit and the printer (normally not a problem
  1437. with parallel or network printers) or between Kermit and the host application.
  1438. Make sure an effective means of flow control is enabled at every interface
  1439. along the communication path.  If you can't eliminate the problem any other
  1440. way, then tell Kermit to SET PRINTER <filename> to have host-generated print
  1441. material redirected to a file, and then print the file later. 
  1442.  
  1443. You can use Kermit's controller-print feature to turn a session log into a
  1444. plain text file.  The session log contains escape sequences that can be
  1445. stripped as follows:
  1446.  
  1447.  1. Edit the session log file to insert ESC [ ? 5 i at the beginning
  1448.     (start controller print).
  1449.  
  1450.  2. Start Kermit and give it these commands:
  1451.       SET PORT BIOS1 ; Or some other port you will not actually be using.
  1452.       SET PRINTER FILE.TXT ; Send transparent print material to this file.
  1453.       REPLAY SESSION.LOG   ; Run session log through terminal emulator.
  1454.  
  1455. (Thanks to H.D. Knoble for this hint.)
  1456.  
  1457. (14) INTERNATIONAL CHARACTER SETS
  1458.  
  1459. Character-set translation during terminal emulation is done between the remote
  1460. TERMINAL CHARACTER-SET and the PC's current code page. During file transfer,
  1461. it's between the TRANSFER CHARACTER-SET and the PC's code page.     At startup,
  1462. MS-DOS Kermit asks DOS to report the current code page, and it sets your FILE
  1463. CHARACTER-SET and your TERMINAL CODE-PAGE to this value.  But DOS often lies
  1464. about the code page, so in most cases when your actual code page is anything
  1465. but 437 (or maybe 850), you, yourself, will have to tell MS-DOS Kermit what
  1466. your code page really is, using the following two commands:
  1467.  
  1468.   SET TERMINAL CODE-PAGE CPnnn ; Your actual current code page.
  1469.   SET FILE CHARACTER-SET CPnnn ; The code page for incoming text files.
  1470.  
  1471. The two would normally be the same, but MS-DOS Kermit lets you set them
  1472. differently if you want to, for example if you have a Hebrew code page loaded
  1473. for display purposes, but you want to download a Russian file that you will
  1474. display later, after loading a Cyrillic code page.
  1475.  
  1476. MS-DOS Kermit does not allow all possible combinations of FILE and TRANSFER
  1477. character sets.     The Hebrew code page (CP862) forces the Hebrew transfer
  1478. character set, and vice-versa.    Similarly for Cyrillic and Latin-2, etc.
  1479. Latin-1, however, can be used with many code pages: 437, 850, 861, 863, 865.
  1480.  
  1481. Some of the ISO 2022 or DEC-specific character-set designation escape
  1482. sequences, which *do* work correctly, nevertheless fail to have an effect on
  1483. the character-set field of the SHOW TERMINAL display.
  1484.  
  1485. LOG SESSION records characters that arrive at the serial port, before
  1486. translation by either Kermit's built-in terminal character set translation
  1487. tables or by user-specified SET TRANSLATION INPUT commands.  This allows
  1488. REPLAY to work correctly but it prevents special characters from being logged
  1489. after translation to the PC's own character set.  Screen dump (Ctrl-End or
  1490. Ctrl-]F) and autoprint, however, record the translated characters.
  1491.  
  1492. SET TERMINAL CHARACTER SET is effective only for text screens, not for
  1493. graphics screens.
  1494.  
  1495. International characters in macro names are not case independent.
  1496.  
  1497. Case-independent string matching operations (e.g. SET INPUT CASE IGNORE, IF
  1498. EQUAL xxx yyy) won't necessarily work with international characters.
  1499.  
  1500. The macros supplied with MS-DOS Kermit 3.14 for switching fonts use the the
  1501. 16-dot-high fonts supplied in the PCFONTS directory of the MS-DOS Kermit
  1502. diskette, which are appropriate for 25x80 screens.  If you need to use a
  1503. different screen size, see PCFONTS\READ.ME for further information.
  1504.  
  1505. Fonts are generally not preserved when switching from 80- to 132-column
  1506. screen mode.  If you need to use one of Kermit's PCFONTS in 132-column mode,
  1507. you should put your PC in 132-column mode before starting Kermit.
  1508. Alternatively, you can try loading the font and starting Kermit as follows
  1509. (using CP852 as an example):
  1510.  
  1511.   withfont c:\kermit\pcfonts\cp852.f16 kermit
  1512.  
  1513. WITHFONT loads itself as a TSR to reload the font each time the video mode
  1514. changes, and then unloads itself when Kermit exits.  (Unfortunately, WITHFONT
  1515. was not included on the original 3.14 Kermit diskette.)
  1516.  
  1517. (15) COMMAND PROCESSING
  1518.  
  1519. When a command field begins with @ (at-sign), the following characters are
  1520. interpreted as the name of a file that contains the rest of the command.  If
  1521. you need to type a command field that actually starts with @, encode the
  1522. atsign as \64 or \{64}.
  1523.  
  1524. \B in an OUTPUT command tells Kermit to send a BREAK.  \L Tells Kermit to
  1525. send a Long BREAK.  To output \B or \L literally, use two OUTPUT
  1526. statements, or use four (yes FOUR) backslashes before the B or L.
  1527.  
  1528. Certain commands, such as RUN, DIRECTORY, TYPE, etc, invoke COMMAND.COM
  1529. "underneath" Kermit, and COMMAND.COM might, in turn, invoke other programs.
  1530. If you get the message "Can't run program" in response to such a command, it
  1531. usually means there is not enough memory.  But you should also check your
  1532. SHELL and COMSPEC environment variables to make sure they indicate a valid
  1533. command shell.
  1534.  
  1535. When you RUN a program from within KERMIT, there is no way to access the
  1536. program's return code.  Kermit RUNs programs through COMMAND.COM, which does
  1537. not pass along the program's return code to Kermit.
  1538.  
  1539. If you include the word STAY anywhere on the Kermit command line, e.g.:
  1540.  
  1541.   kermit echo stay
  1542.  
  1543. it is interpreted as a STAY command.
  1544.  
  1545. Commands in command files can be continued by including "-" as the last
  1546. character on the line, but NOT if the line ends with a trailing comment.  In
  1547. other words, you can't have a trailing comment on a continued line. If you
  1548. need to end a line with a dash, but the dash is part of the command rather
  1549. than a continuation symbol, use \45 instead or add a trailing comment.
  1550.  
  1551. Trailing comments can be used only in command files.  All text starting with
  1552. the first semicolon through the end of line is ignored.  If you need to
  1553. include an actual semicolon in a command, precede it with a backslash (\;).
  1554. Note (v3.14) that a semicolon comment must have the semicolon either at the
  1555. beginning of the line or following a whitespace (space, tab) character.
  1556. Otherwise the semicolon and following text is considered part of the command.
  1557.  
  1558. The name and password given to SET SERVER LOGIN must be matched exactly by the
  1559. ones in REMOTE LOGIN.  Case matters.  To include spaces within the username,
  1560. password, or account field of the REMOTE LOGIN or SET SERVER LOGIN commands,
  1561. surround the field with {braces}.
  1562.  
  1563. DISABLE ALL is not equivalent to all the other DISABLE commands given
  1564. separately.  For example, DISABLE DELETE restricts REMOTE DELETE commands from
  1565. the client to working only in the MS-DOS Kermit server's current directory,
  1566. while DISABLE ALL prevents all types of modifications to the PC's file system,
  1567. including file deletion and creation.
  1568.  
  1569. (16) KEY MAPPING
  1570.  
  1571. So key translation and macros can work on both IBM and non-IBM compatible PCs,
  1572. Kermit uses the system BIOS to obtain key scan codes.  But the IBM BIOS does
  1573. not produce scan codes at all for certain keys, and may produce duplicate scan
  1574. codes for others.  Num Lock, Print Screen, Scroll Lock, and Pause are
  1575. examples.  The GOLD.COM utility can be used to make Num Lock act like F1.
  1576.  
  1577. Version 3.13 and later recognize the difference between between Space,
  1578. Shift-Space, Ctrl-Space, Alt-Space, etc, so that SHOW KEY shows different scan
  1579. codes for each combination of Space with modifier keys (e.g. so Ctrl-Space can
  1580. send NUL).  In 3.14, the Esc key and Enter keys also have new differentiated
  1581. scan codes when combined with Shift, Alt, and Ctrl.  See KERMIT.UPD.
  1582.  
  1583. Key macros are executed while in CONNECT mode. If you assign the \Khangup verb
  1584. to a key, Kermit remains in CONNECT mode after the hangup takes place. On a
  1585. serial dialup connection, Kermit turns off the DTR signal, and you should see
  1586. a confirmation message from the modem, such as NO CARRIER, on your screen, and
  1587. then if you have SET CARRIER ON, Kermit should pop back to its prompt;
  1588. otherwise it stays in CONNECT mode.  On a TCP/IP network connection, however,
  1589. Kermit does indeed drop the connection, but since Kermit is still in CONNECT
  1590. mode, it is immediately reestablished.  If you want to terminate a network
  1591. session by pressing a key, use a method that leaves CONNECT mode.  You can do
  1592. this by defining a macro to hang up, and then assigning execution of the macro
  1593. to the key, e.g. Alt-d:
  1594.  
  1595.   define xxx hangup
  1596.   set key \2336 {\Kxxx}
  1597.  
  1598. This causes Kermit to return from CONNECT mode and execute the macro without
  1599. returning to CONNECT mode.  This technique works for both serial and network
  1600. connections.
  1601.  
  1602. To assign several verbs to a single key, use braces like this:
  1603.  
  1604.   set key \315 {\{Kfoo}\{Kdump}\{Kbar}}
  1605.  
  1606. "foo" and "bar" are macro names, and \Kdump is Kermit's screen-dump verb.
  1607.  
  1608. Q: Where is the .INI file that will set MS-DOS Kermit for using a 3270
  1609.    protocol converter to access an IBM mainframe, so I can use PF1 and similar
  1610.    keys that are required by fullscreen mainframe applications?
  1611.  
  1612. A: The 3270 protocol converter is mapping between an IBM 3270 terminal and
  1613.    some kind of ASCII terminal, such as a VT100.  And Kermit is emulating a
  1614.    VT100 (not a 3270!).  Neither the VT100 nor the PC have the same keys as a
  1615.    3270 terminal.  Each site that runs 3270 protocol converters sets up its
  1616.    own mapping -- there is no standard for this, and therefore, there can be
  1617.    no one Kermit key-mapping file that will work at all sites.  The mapping
  1618.    is done in the 3270 emulator.  Contact your site administrator for details.
  1619.  
  1620. (17) FILE TRANSFER
  1621.  
  1622. (17.1) Performance
  1623.  
  1624. Q: How can I make Kermit file transfers go faster?
  1625.  
  1626. A: Very briefly (page numbers refer to "Using MS-DOS Kermit", 2nd Edition):
  1627.  
  1628. 1. If you are using an error-correcting, data compressing modem, set Kermit's
  1629.    interface speed (SET SPEED) to at least four times the modem's connection
  1630.    speed -- e.g. if the modems connect at 14400 bps, set Kermit's speed to
  1631.    57600.  And then lock the modem's interface speed to the same value.
  1632. 2. Use the most effective flow control method available for the connection.
  1633.    On serial connections, use RTS/CTS if possible.  On TCP/IP connections, SET
  1634.    FLOW NONE.
  1635. 3. Use long packets, say 1000 or 2000: SET RECEIVE PACKET-LENGTH (see p.100)
  1636. 4. Use sliding windows, say 4 or 8 or 12: SET WINDOW (p.102)
  1637. 5. Use "control character unprefixing" (see KERMIT.UPD about this)
  1638.  
  1639. Quick Start: MS-DOS Kermit 3.14 MSKERMIT.INI comes with a FAST macro.  Try it.
  1640. If you are using a high-speed modem, be sure to use the appropriate dialing
  1641. script from the MODEMS subdirectory -- these scripts take care of items (1)
  1642. and (2) above for you.
  1643.  
  1644. If this works, you'll get fast Kermit downloads easily; if not, then some of
  1645. the parameters will need adjustment -- window size or packet length; read the
  1646. suggested sections of "Using MS-DOS Kermit" for details.  For fast uploads,
  1647. you'll also have to give similar commands to the Kermit program on the other
  1648. end (SET WINDOW, SET RECEIVE-PACKET LENGTH).  SHOW MACRO FAST displays the
  1649. definition of the FAST macro.  To change it, put the new definition in your
  1650. MSCUSTOM.INI file.
  1651.  
  1652. When going through a terminal server or PAD, investigate whether it supports
  1653. a special "file transfer" mode, such as Cisco "terminal download".
  1654.  
  1655. (17.2) Hardware Flow Control Problems
  1656.  
  1657. Even when using RTS/CTS flow control, characters can be lost during file
  1658. transfer.  This can happen if the PC turns off interrupts for any length of
  1659. time, e.g. to service the hard disk -- especially if you have a disk-caching
  1660. program active.  It can also happen if you have loaded the DOS PRINT TSR, or a
  1661. screen saver, or any of various other TSRs.  In such cases, Kermit never gets
  1662. the interrupt that signals a character has arrived, and so cannot service it.
  1663. The standard advice here is to remove TSRs and/or disk caching.
  1664.  
  1665. (17.3) Miscellaneous File Transfer Hints and Tips
  1666.  
  1667. When transferring files with another PC that is running DOS, Windows, or
  1668. OS/2, it is usually OK to SET FILE TYPE BINARY for all transfers.  This allows
  1669. any mixture of text and binary files to be transferred correctly.  The only
  1670. reason to SET FILE TYPE TEXT would be if you need character-set translation,
  1671. e.g. from one code page to another.
  1672.  
  1673. The efficiency reported at the end of a file transfer is relative to the
  1674. serial port speed.  This can be confusing and/or misleading when using a modem
  1675. whose connection speed to the other modem is different from the serial port
  1676. speed, especially when the modems are also doing compression.
  1677.  
  1678. SET EOF CTRL-Z, when used with text files that actually contain Ctrl-Zs, might
  1679. result in gaps or truncation in the vicinity of the Ctrl-Z.  A DOS artifact.
  1680.  
  1681. If MS-DOS Kermit receives a file whose name (the part before the period)
  1682. corresponds to a DOS device name, such as CON, PRN, etc, the incoming file
  1683. will be sent to that device rather than being stored on disk.  A DOS feature.
  1684.  
  1685. When using Kermit through a terminal server (particularly with TELNET
  1686. protocol), or directly through a SET PORT TCP connection, it is sometimes
  1687. necessary to SET PARITY SPACE for file transfer. It is sometimes necessary use
  1688. shorter packets with terminal servers.  Try SET RECEIVE PACKET-LENGTH 80,
  1689. working up or down to the longest length that works.  Also be sure that you
  1690. have not unprefixed the terminal server's escape character.
  1691.  
  1692. REMOTE TYPE and other REMOTE commands resulting in an error "Unable to open
  1693. CON": insufficient FILES= in CONFIG.SYS.
  1694.  
  1695. The host prompt for TRANSMIT is a single character (SET TRANSMIT PROMPT).  It
  1696. is not possible to specify a multi-character or varying transmit-prompt.  Note
  1697. that the TRANSMIT PROMPT character must be entered in backslash notation, e.g.
  1698.  
  1699.   SET TRANSMIT PROMPT \0
  1700.  
  1701. for no prompt at all (Backslash-Zero, not Zero).
  1702.  
  1703. (18) SCRIPT PROGRAMMING
  1704.  
  1705. In version 3.14, the \m(macroname) operator is replaced by the definition of
  1706. the named macro.  No further evaluation occurs.  This is a change from 3.13
  1707. and earlier.  The new behavior is consistent with C-Kermit, and it allows
  1708. the use of "long variable" (i.e. macro) names to hold DOS filespecs, which
  1709. generally contain backslashes, which in turn would trigger unwanted actions
  1710. if we allowed evaluation to proceed to full depth.  Example:
  1711.  
  1712.   define \%a blah
  1713.   define _file C:\123\%A.WKS
  1714.   send \m(_file)
  1715.  
  1716. Here we have a file called %A.WKS in the 123 directory.  If evaluation were to
  1717. descend past the first level, the SEND command would see a filename called
  1718. C:{blah.WKS rather than C:\123\%A.WKS.  Use ASSIGN to force full evaluation.
  1719.  
  1720. To read lines from a file and then ECHO or OUTPUT them, you would normally
  1721. do something like this:
  1722.  
  1723.   open read oofa.dat
  1724.   :loop
  1725.   read \%a
  1726.   if fail stop
  1727.   echo \%a
  1728.   goto loop
  1729.  
  1730. However, if a line from the file contains any backslashes, the ECHO (or
  1731. OUTPUT, or similar) command will treat them as introducers for variable names,
  1732. numeric character codes, etc, depending on the subsequent characters.  This
  1733. is desirable in some cases (e.g. boilerplates), but undesirable in others.
  1734. To force Kermit to treat backslashes in data files literally, use a trick
  1735. like the following:
  1736.  
  1737.   open read oofa.dat
  1738.   :loop
  1739.   read \%a
  1740.   if fail stop
  1741.   echo \freplace(\%a,\,\\)
  1742.   goto loop
  1743.  
  1744. It can be hard to interrupt execution of a script program, such as a dialing
  1745. script.  Ctrl-C and Ctrl-Break are noticed only when Kermit asks DOS to read
  1746. from (or check the status of) the keyboard, and only certain Kermit commands
  1747. do this, like PAUSE, which fails if any key is pressed during the PAUSE
  1748. interval.  So if you want your script program to be nicely interruptible, you
  1749. can include the following commands at key points in the program:
  1750.  
  1751.   PAUSE 1
  1752.   IF FAIL STOP 1 Interrupted
  1753.  
  1754. The terminal emulator is active only when MS-DOS Kermit is in CONNECT mode
  1755. (and when it is executing the REPLAY command).    Thus it is NOT active during
  1756. execution of script commands such as INPUT and OUTPUT.    This means:
  1757.  
  1758.  1. If the host sends the escape sequence that tells the terminal to identify
  1759.     itself, it is ignored.  You have to put the appropriate INPUT and OUTPUT
  1760.     commands in your script program.  Here is a macro to set your terminal
  1761.     type in Kermit and to set up the appropriate response and terminal-type
  1762.     strings:
  1763.  
  1764.     def term if not def \%1 def \%1 \v(term),-
  1765.       set term type \%1,-
  1766.       if fail end 1,-
  1767.       assign _ttype \%1,-
  1768.       if eq \%1 vt320 def _tid \27[?63;1;2;4;8;9;15c,-
  1769.       if eq \%1 vt220 def _tid \27[?62;1;2;4;8;9;15c,-
  1770.       if eq \%1 vt102 def _tid \27[?6c,-
  1771.       if eq \%1 vt100 def _tid \27[?1c,-
  1772.       if eq \%1 vt52  def _tid \27/Z
  1773.  
  1774.     Whenever you switch terminal emulations, do "term vt102" instead of "set
  1775.     term type vt102" (substitute your preferred terminal type).     In any script
  1776.     that responds to ESC Z (or whatever), have it "output \m(_tid)", and any
  1777.     prompt that asks for your terminal type you can "output \m(_ttype)".  And
  1778.     be sure to execute a "term" command in your MSKERMIT.INI file, so your
  1779.     initial terminal type is set.
  1780.  
  1781.  2. If the host sends escape sequences to configure the terminal, these too
  1782.     are ignored; i.e. they have no effect on Kermit's terminal emulator.
  1783.  
  1784.  3. A host-generated escape to put the terminal in Tektronix mode has no
  1785.     effect.  Put explicit SET TERMINAL TYPE TEK commands in the appropriate
  1786.     places in your script program.
  1787.  
  1788.  4. Screen formatting escape sequences have no effect.    If you have SET INPUT
  1789.     ECHO ON, they are simply displayed as-is.
  1790.  
  1791. If the remote host is sending ANSI (VTxxx) escape sequences during execution
  1792. of the script program, then ANSI.SYS or similar console driver can interpret
  1793. the escape sequences.  This is particularly useful when running a script that
  1794. logs in to a full-screen system, such as an IBM mainframe through a protocol
  1795. converter.  But beware: ANSI.SYS is not totally compatible with a VT100, and
  1796. might produce unwanted side effects, like popping your PC into 40-column mode.
  1797. If you experience such trouble while using Kermit script programs, SET INPUT
  1798. ECHO OFF or remove ANSI.SYS from your CONFIG.SYS file and reboot.
  1799.  
  1800. PAUSE, WAIT, and similar commands also open the connection on the currently
  1801. selected port if it is not open already.  For example, SET PORT TCP <host>
  1802. does not open the connection itself -- the first input/output command
  1803. (including PAUSE) will do it.  Similarly, if DTR is not asserted on a serial
  1804. connection, PAUSE will assert it.
  1805.  
  1806. PAUSE, WAIT, and similar commands also cause port input to be echoed to the
  1807. screen if INPUT ECHO is ON.  Use SET INPUT ECHO OFF to defeat this effect.
  1808.  
  1809. If the REINPUT command fails to find the requested text in the INPUT command
  1810. buffer, it will wait (up to the timeout interval) for more characters to
  1811. arrive from the communication channel.
  1812.  
  1813. INPUT / REINPUT combinations will not work if the INPUT buffer is smaller than
  1814. the amount of text that separates the INPUT text from the REINPUT text.     You
  1815. can increase the size of the INPUT buffer by including the desired size in
  1816. your KERMIT=INPUT <size> environment variable.    The default size is 256 bytes.
  1817.  
  1818. Script programming hint: To test whether a readable floppy disk is available
  1819. in drive A:, do this:
  1820.  
  1821.   SPACE A:
  1822.   IF FAILURE ECHO No diskette in drive A:.
  1823.  
  1824. The ON_EXIT macro is intended only for automatic execution when MS-DOS Kermit
  1825. exits.    It only works once, to prevent recursion (as would happen, for
  1826. example, if you put an EXIT command in your ON_EXIT definition).
  1827.  
  1828. C-Kermit 5A(190) has an MINPUT command, which is like INPUT, but looks for
  1829. multiple INPUT strings simultaneously, and succeeds if it encounters any of
  1830. them during the timeout interval, and sets a variable to the number of the
  1831. string that matched.  This can be simulated in MS-DOS Kermit as follows:
  1832.  
  1833.   define MINPUT set alarm \%1,-
  1834.   :top,-
  1835.   if alarm end 1,-
  1836.   input 1 \%2,if success asg mynput 1,if success end 0,-
  1837.   if not def \%3 goto top,reinp 0 \%3,if succ asg mynput 2,if succ end 0,-
  1838.   if not def \%4 goto top,reinp 0 \%4,if succ asg mynput 3,if succ end 0,-
  1839.   if not def \%5 goto top,reinp 0 \%5,if succ asg mynput 4,if succ end 0,-
  1840.   if not def \%6 goto top,reinp 0 \%6,if succ asg mynput 5,if succ end 0,-
  1841.   if not def \%7 goto top,reinp 0 \%7,if succ asg mynput 6,if succ end 0,-
  1842.   if not def \%8 goto top,reinp 0 \%8,if succ asg mynput 7,if succ end 0,-
  1843.   if not def \%9 goto top,reinp 0 \%9,if succ asg mynput 8,if succ end 0,-
  1844.   goto top
  1845.  
  1846. And used in sequences like the following, which are portable between
  1847. MS-DOS Kermit and C-Kermit:
  1848.  
  1849.   minput 60 CONNECT ERROR {NO CARRIER} BUSY RING
  1850.   if fail errfail {No response from the modem}
  1851.   if eq \v(program) C-Kermit asg mynput \v(minput)
  1852.   goto CASE_\m(mynput)
  1853.  
  1854. (courtesy James Sturdevant)
  1855.  
  1856. (19) MEMORY MANAGEMENT
  1857.  
  1858. Any PC software is likely to misbehave if your PC memory is insufficient or is
  1859. incorrectly configured.  MS-DOS Kermit runs in conventional memory (the first
  1860. 640K) of your PC, occupying about 280K initially, then allocating additional
  1861. memory as needed for rollback screens, file-transfer packet buffers, etc, and
  1862. also uses additional memory to execute certain commands such as TYPE and
  1863. DIRECTORY, for which it invokes a second copy of COMMAND.COM (appoximately
  1864. 30K) in conventional memory, as well as RUN, invokes not only COMMAND.COM but
  1865. an additional program to be run by COMMAND.COM, for example "run edit".  If
  1866. there is insufficient memory, these operations will not work; thus it is
  1867. always best to have as much free conventional memory as possible.
  1868.  
  1869. Memory for file-transfer packets is allocated at the time the transfer begins,
  1870. based on the current sliding-window size (SET WINDOW) and packet-length (SET
  1871. RECEIVE PACKET-LENGTH), and is deallocated when the transfer ends.  So SHOW
  1872. MEMORY won't reveal the effect of the packet buffers.  If insufficient memory
  1873. is available for the requested window size and packet length, MS-DOS Kermit
  1874. automatically reduces its RECEIVE PACKET-LENGTH.  For maximum file-transfer
  1875. efficiency, conventional memory is always used for packet buffers. Thus packet
  1876. buffers and RUN/PUSH/TYPE/DIRECTORY commands "time-share" the same
  1877. conventional memory.
  1878.  
  1879. Memory for graphics screens is taken from your video display adapter.  Storage
  1880. of graphics images in the video's on-board memory allows rapid switching
  1881. between text and graphics screens provided (a) your video has sufficient
  1882. memory, (b) the memory is not "mapped away", and (c) you are not running
  1883. Kermit under Windows.  Video adapter memory is generally in segments
  1884. A000-BFFF.
  1885.  
  1886. Memory for rollback screens is allocated when the CONNECT command is first
  1887. given, i.e. when Kermit first displays its terminal emulation window, and
  1888. remains allocated until you EXIT from Kermit.  This can be demonstrated by
  1889. starting Kermit, giving the command SHOW MEMORY, then giving the CONNECT
  1890. command, then escaping back (Alt-x), and then giving the SHOW MEMORY command
  1891. again -- see how available memory has shrunk.  Approximately 4K is required
  1892. per 24x80 rollback screen (more for bigger screens).  The default number of
  1893. rollback screens is 10, but the number can be set to practically any value at
  1894. all (0 or greater) by giving the following command to DOS before you start
  1895. Kermit (interactively, or in your AUTOEXEC.BAT file):
  1896.  
  1897.   SET KERMIT=ROLLBACK 40
  1898.  
  1899. The smaller the number, the less memory required; the bigger, the more memory.
  1900. In v3.13 and later, you can also give the command:
  1901.  
  1902.   SET ROLLBACK <number-of-screens>
  1903.  
  1904. at the MS-Kermit prompt at any time, and the rollback memory will be adjusted
  1905. when you next CONNECT.
  1906.  
  1907. A large number of rollback screens can crowd out other possibilities, like the
  1908. ability to use Kermit's RUN, PUSH, TYPE, DIRECTORY, and other commands that
  1909. run inferior processes.  MS-DOS Kermit v3.13 and later lets you store your
  1910. rollback screens in Expanded Memory (EMS) if you have more than 1MB of
  1911. physical memory and you have an expanded memory manager for it like
  1912. Quarterdeck QEMM or EMM386 and HIMEM that come with DOS 5.0 and Windows 3.1.
  1913.  
  1914. Using expanded memory for rollback screens frees 40K of conventional memory if
  1915. you are using the default number (10) of rollback screens, and it also allows
  1916. you to have a much larger number of rollback screens.  The following steps are
  1917. required to keep your rollback screens in expanded memory:
  1918.  
  1919. 1. Make sure the desired amount of expanded (EMS) (not "extended", or XMS)
  1920.    memory is available.     The DOS MEM command will tell you this.
  1921.  
  1922. 2. In your AUTOEXEC.BAT file, set the desired number of Kermit rollback
  1923.    screens.  For example, for 250 screens (requiring about 1 megabyte):
  1924.  
  1925.       SET KERMIT=ROLLBACK 250
  1926.  
  1927. 3. Give the following command to MS-DOS Kermit:
  1928.  
  1929.       SET TERMINAL EXPANDED-MEMORY ON
  1930.  
  1931.    If this command fails, Kermit prints an appropriate error message.
  1932.  
  1933. Now start a Kermit session, scroll some text off the screen during CONNECT
  1934. mode, and check the operation of the PageUp/PageDown keys.  If they work,
  1935. you're probably done.  And as an added benefit, graphics screens will also be
  1936. stored in expanded memory, allowing you to switch between graphics and text
  1937. screens (Alt-minus), even under Windows, without losing the graphics screen.
  1938.  
  1939. If it doesn't work, then welcome to the bewildering world of DOS memory
  1940. management.  The most common symptom of a bad memory configuration is that
  1941. your PC will freeze the first time Kermit tries to scroll a line off the
  1942. screen or clear the screen.  Time to look at your CONFIG.SYS file.
  1943.  
  1944. First, here is a straightforward DOS 5.0 CONFIG.SYS configuration that sets up
  1945. a PC with 8MB of memory to have 6MB of expanded memory:
  1946.  
  1947.   DEVICE=C:\DOS\HIMEM.SYS
  1948.   DEVICE=C:\DOS\EMM386.EXE 6144 RAM
  1949.   DOS=HIGH,UMB
  1950.   DEVICEHIGH=C:\DOS\ANSI.SYS
  1951.  
  1952. HIMEM.SYS must be loaded first and then EMM386.     With memory management now
  1953. active, DOS is told to use "high memory" (don't ask) and "upper memory blocks"
  1954. (UMB, the space between 640K and 1MB) and then ANSI.SYS is loaded into the
  1955. upper memory area rather than conventional memory.
  1956.  
  1957. EMM386 is asked to take care of 6144K of expanded (EMS) (not extended, XMS)
  1958. memory, and the RAM switch means that it also should manage the upper memory
  1959. blocks.     This configuration works on a PC that has 8MB of memory (6144K= 6MB=
  1960. 1024 x 6), leaving 1MB of extended memory for any process that might need it.
  1961. Adjust as appropriate for different memory sizes.
  1962.  
  1963. If you are using RAMDRIVE.SYS, give it the /A switch to use expAnded memory,
  1964. rather than the /E switch for extEnded memory, e.g.:
  1965.  
  1966.   DEVICEHIGH=C:\WINDOWS\RAMDRIVE.SYS 1024 512 64 /A
  1967.  
  1968. After making these changes to CONFIG.SYS, reboot your PC and give a DOS MEM
  1969. command to check that the needed amount of Expanded (EMS) memory is available.
  1970.  
  1971. Now run Kermit and check the expanded-memory rollback feature.  Also tell
  1972. Kermit to SHOW MEMORY to see how much conventional memory remains it starts.
  1973. If it's not enough, look in your CONFIG.SYS and AUTOEXEC.BAT for other drivers
  1974. or TSRs that can be removed or loaded high.  If you access a CD-ROM drive via
  1975. Microsoft CD Extensions, include the /E switch (Expanded) when you start it:
  1976.  
  1977.   C:\BIN\MSCDEX /E /D:MSCD000 /M:10
  1978.  
  1979. Suppose you have a network board that uses a certain segment of memory
  1980. (e.g. at segment CC00 hex) which conflicts with DOS's memory management.  You
  1981. must tell EMM386 to "exclude" this segment from its memory managing:
  1982.  
  1983.   DEVICE=C:\DOS\EMM386.EXE 6144 x=cc00-cc7f RAM frame=e000
  1984.  
  1985. These segment address numbers are obtained from the network board technical
  1986. manual (or, perhaps more likely, from the board vendor's technical support
  1987. phone number).
  1988.  
  1989. For debugging, get additional info about your PC's memory layout using DOS
  1990. MEM/C and MEM/P commands, the MSD program that comes with Microsoft Windows,
  1991. or the MFT (Manifest) program that comes with QEMM.
  1992.  
  1993. It is vital that the expanded memory page frame, all 64KB of it, be located
  1994. where it will not interfere with other memory usage.  Tell your memory manager
  1995. where to place it, usually with a frame=<segment> command-line option.  Don't
  1996. put it in video memory, A000-BFFF.  Don't put it the same place as a network
  1997. board or other device buffer.  Don't assume the memory manager will pick a
  1998. safe spot.  Windows users must do the same in both the DOS memory manager
  1999. (ignored by Windows) AND in Windows SYSTEM.INI [386Enh section], e.g.:
  2000.  
  2001.   EMMPageFrame=EC00    <- EMS page frame
  2002.   EMMExclude=C000-C007    <- protecting device buffers from memory managers
  2003.   EMMExclude=CE00-CFFF
  2004.   EMMExclude=A000-BFFF
  2005.  
  2006. The configurations in the two places must be the THE SAME.
  2007.  
  2008. If all else fails, tell Kermit to SET TERMINAL EXPANDED-MEMORY OFF.  NOTE:
  2009. whenever you switch Kermit's expanded memory status between OFF and ON, your
  2010. previous rollback screens are lost.
  2011.  
  2012. Kermit can try to use 132-column display mode if asked, and to do so it needs
  2013. to identify the video adapter, usually by looking for a text string in the
  2014. adapter's ROM Bios, which typically starts at segment C000.  If memory
  2015. management "stealth mode" maps away the video BIOS then Kermit can't find the
  2016. signature and won't know how to control the video board.  Below is an example
  2017. where C000-C007 is kept visible for a Tseng Labs 8900 chip video board (one
  2018. line, broken for presentation):
  2019.  
  2020. DEVICE=C:\QEMM\QEMM386.SYS R:3 RAM ROM X=A000-BFFF ARAM=C000-C007 X=D000-D1FF
  2021.  ST:M vxddir=c:\qemm ext=256
  2022.  
  2023. (20) INTERACTIONS WITH DOS
  2024.  
  2025. Kermit creates temporary files when in server mode and responding to REMOTE
  2026. commands.  If you have a TEMP environment variable, Kermit uses it for these
  2027. files; otherwise Kermit uses your current disk and directory.  If you have a
  2028. TEMP environment variable whose value is not the name of a write-accessible
  2029. disk / directory, Kermit can't respond to REMOTE commands.  It's best to
  2030. define TEMP to refer to a disk with plenty of free space.
  2031.  
  2032. The limit on your DOS PATH string is 127 characters.  If you add, say,
  2033. C:\KERMIT to the end of you your PATH= statement in AUTOEXEC.BAT, and that
  2034. makes it longer than 127, DOS (and Kermit's TAKE and similar commands) won't
  2035. be able to find your Kermit files.
  2036.  
  2037. A REMOTE HOST or similar command sent to an MS-DOS Kermit server can invoke
  2038. the DOS critical error handler, which issues its "Abort, Ignore, Retry?"
  2039. message on the real screen, and waits for a response from its own real
  2040. keyboard, and so the server will no longer respond.  Kermit attempts to catch
  2041. these errors before DOS learns learns about them, but some cannot be avoided
  2042. (like disk i/o errors).
  2043.  
  2044. Similarly, a REMOTE DIRECTORY command sent to an MS-DOS Kermit server can
  2045. cause the server to hang if its default directory command pauses after each
  2046. screen (DIRCMD=/P).  The server will hang any time a subprocess invoked by any
  2047. REMOTE command requests keyboard input.
  2048.  
  2049. MS-DOS Kermit uses the program named in the DOS SHELL environment variable as
  2050. a replacement for COMMAND.COM, which can be displayed by typing SET at the DOS
  2051. prompt.  It is not associated with the SHELL= line in CONFIG.SYS.
  2052.  
  2053. Interaction between MS-DOS Kermit and various terminate-and-stay-resident
  2054. (TSR) programs is necessarily unpredictable. Console, mouse, clock, or
  2055. graphics drivers might interfere with file transfer, e.g. the CMOSCLK.SYS
  2056. driver on the PS/2 model 55SX.  If TSR programs are interfering with Kermit
  2057. (e.g. by taking over the timer or serial port interrupts), you should remove
  2058. them all from your AUTOEXEC.BAT or CONFIG.SYS files, and then put them back
  2059. one by one until you have identified the culprit.
  2060.  
  2061. Mouse drivers are particularly notorious in this respect.  Suggestion: don't
  2062. load your mouse driver in CONFIG.SYS or AUTOEXEC.BAT.  Load it manually when
  2063. needed, unload it or turn it off when you are finished with it.
  2064.  
  2065. Use caution when invoking certain TSR programs while PUSHed from Kermit
  2066. (e.g. using the PRINT command for the first time), as not all of these
  2067. programs observe proper etiquette for allocating and freeing memory, and the
  2068. TSRs will be loaded above Kermit into the middle of memory where they may
  2069. prevent large programs from loading later.
  2070.  
  2071. On early (original motherboard & BIOS) PCs, and on systems that mimic them
  2072. (e.g. early Compaqs), the cursor may assume a strange shape (e.g. minus sign)
  2073. upon return from CONNECT.  This is caused by a bug in the early BIOS, which
  2074. stored cursor attributes incorrectly.  See "The Dashed Cursor", by Paul
  2075. Pierce, PC Tech J., Dec. 1985, page 47. His code goes like this:
  2076. ---(cut)---
  2077. ; Program FIXCURS.ASM by Paul Pierce
  2078. code    segment public 'code'
  2079.     assume cs:code, ds:code, es:nothing
  2080. ; This program is set up to be made into a COM file
  2081.     org    100H
  2082. ; First check for the monochrome adapter.
  2083. start:    int    11H        ; set ax = equipment flag
  2084.     and    al,30H        ; mask off all but video bits
  2085.     cmp    al,30H        ; test for monochrome adapter
  2086.     jne    exit        ; jump if not monochrome
  2087. ; Now check for incorrect cursor mode returned from the Bios
  2088.     mov    ah,3        ; call bios to get cursor type
  2089.     int    10H        ;
  2090.     cmp    cx,0607H    ; check for invalid (color) type
  2091.     jne    exit        ; jump if not a bad value
  2092. ; At this point we know that the monochrome adapter is in use and that
  2093. ; the bios cursor mode is incorrect.
  2094. ; Call the bios to set the cursor type correctly.
  2095.     mov    cx,080cH    ; use correct cursor type
  2096.     mov    ah,1        ; call bios to set cursor type
  2097.     int    10H
  2098. exit:    mov    ah,0        ; exit back to DOS
  2099.     int    21H
  2100. code    ends
  2101.     end    start
  2102. ---(cut)---
  2103. Here is the executable CURSOR.COM program, uuencoded (decode with uudecode):
  2104. ---(cut)---
  2105. begin 644 CURSOR.COM
  2106. =S1$D,#PP=1&T`\T0@?D'!G4'N0P(M`'-$+0`S2$`/
  2107. ``
  2108. end
  2109. ---(cut)---
  2110. and here again as a BOO file (decode with MSBPCT.EXE):
  2111. ---(cut)---
  2112. CURSOR.COM
  2113. cA4T<3``MA6d0ld@POT71WD7^@`8]07=4;@0cB40~0
  2114. ---(cut)---
  2115.  
  2116. (21) NETWORKS
  2117.  
  2118. When communicating across certain network pathways, the longest burst of
  2119. information tolerated from the PC can be rather short. For example, the LAT
  2120. path with SET PORT DECNET (PATHWORKS) has a limit of 256 bytes and the SET
  2121. PORT TES path has a limit of 512 bytes in a burst (or less, depending on the
  2122. TES release).  Longer bursts can cause the network software on one end or the
  2123. other to drop the connection:
  2124.  
  2125.  1. During file transfer, when sending files from the PC using long packets
  2126.     and/or sliding windows.  The total size of the packets in the window
  2127.     (packet length times the number of window slots) must be less than the
  2128.     burst limit for the network.
  2129.  
  2130.  2. During VT320 terminal emulation, if the host application (such as VMS
  2131.     or UNIX WordPerfect) sends a Terminal State or Color Palette Request
  2132.     escape sequence, DECRQTSR, "ESC [ 2 ; 2 $ u".  The response to this
  2133.     request is more than 200 characters long and has been known to break
  2134.     LAT and TES connections.
  2135.  
  2136. This is not a Kermit problem, but rather a limitation (or bug) in the
  2137. underlying networking method.  Workarounds include:
  2138.  
  2139.  1. If you have a DECnet LAT connection, make a DECnet CTERM connection
  2140.     instead (i.e. unload your LAT.EXE TSR and load the CTERM TSR instead).
  2141.  
  2142.  2. For VMS connections, enable Xon/Xoff flow control in MS-DOS Kermit and
  2143.     tell VMS to SET TERM/HOSTSYNC/TTSYNC.
  2144.  
  2145.  3. Use a different networking method, e.g. TCP/IP instead of DECnet.
  2146.  
  2147. DECnet/DOS PATHWORKS LAT.EXE is a protocol stack sitting on the top of the
  2148. DECnet stack and is independent of LAN adapter providing LAT (Local Area
  2149. Transport) service, primarily intended for terminal emulation over Ethernet.
  2150. Different versions of PATHWORKS come with different versions of LAT.EXE, which
  2151. work differently.  If you have trouble with LAT.EXE, try loading it in
  2152. conventional memory rather than expanded memory.
  2153.  
  2154. On DEC PATHWORKS LAT connections, it is often necessary to tell the LAT
  2155. control program to reserve enough memory for all of the local LAT host names.
  2156. By default, space for 16 names is allocated.  Increase your LAT control
  2157. program's memory allocation if you have more than 16 hosts on your DECnet
  2158. network.  Also, remove all permanent LAT names from your database and let the
  2159. network provide them (this can mean waiting a minute or two for all broadcasts
  2160. to be heard).
  2161.  
  2162. When making LAT connections from within Windows, make sure LAT is loaded in
  2163. conventional memory.  Note that under Windows, several copies of Kermit can be
  2164. run simultaneously, each of them with a separate LAT connection, if LAT has
  2165. been configured to provide the neccessary session control blocks (SCBs) to
  2166. handle extra sessions.
  2167.  
  2168. If you see the "network not available" message when attempting to SET PORT
  2169. DECNET: (1) make sure that LAT, CTERM, or both are loaded; (b) if you loaded
  2170. LAT into expanded memory, make sure it does not conflict with the memory usage
  2171. of other devices, e.g. A000-BFFF for the video adapter; and (c) that you have
  2172. allocated sufficient SCBs and hostname table space.
  2173.  
  2174. To use PATHWORKS and Kermit's built-in TCP/IP support at the same time, use
  2175. the PKTDLL shim, available in Columbia University's packet-driver collection.
  2176.  
  2177. Sending BREAK over network connections via SET PORT BIOS1 + Int 14h
  2178. interceptor may or may not work, depending upon the actual network and drivers
  2179. in use.  Kermit uses the BREAK facility if the driver and network support it.
  2180.  
  2181. Kermit has no way to set or show the speed or parity used by a Novell
  2182. NASI/NACS communications server. You can do this from the NASI menu.
  2183.  
  2184. Reportedly, when running Kermit on DOS 6.0 client on a Novell 3.11 network
  2185. with a NASI 3.0 Communications server, Windows 3.1 crashes upon exiting
  2186. Kermit, and removing EMM386.EXE from the CONFIG.SYS file fixes the problem.
  2187.  
  2188. Reportedly, when PCs are connected to Novell networks, "if there is not both a
  2189. system and a personal NetWare login script, however brief, then the default
  2190. LOGIN.EXE script will eat your DOS Path.  Be aware that DOS 6.2 has some
  2191. funnies about handling AUTOEXEC.BAT and the master environment.  Also ensure
  2192. you are running without SETVER affecting the NetWare shells (i.e. use the
  2193. proper NetWare shell so no SETVER is needed)."
  2194.  
  2195. Symptom: PC no longer works after installing a network board.  Diagnosis: a
  2196. 16-bit VGA display adapter is running in 16-bit mode.  Cure: Jumper it back to
  2197. 8 bits and all should start working again.
  2198.  
  2199. Reportedly, PC-NFS prevents applications programs such as Kermit from creating
  2200. a file in the root directory of a PC-NFS disk drive.  When the applications
  2201. program asks if a particular file exists in the root, PC-NFS always responds
  2202. with "volume label present", whether or not the actual file is present.
  2203.  
  2204. MS-DOS Kermit 3.13 and later no longer supports SET PORT TELAPI for Novell LAN
  2205. Workplace for DOS (LWP) versions prior to 4.0. Versions 3 and 4 are
  2206. incompatible (from the Kermit support point of view), and v3.x had many
  2207. internal difficulties. If you need to make TELAPI connections with Kermit,
  2208. either upgrade your LWP software or use an older version of Kermit.
  2209.  
  2210. The Interconnections TES older product, which Kermit fully supports, has a
  2211. menu that pops up if you type the TES "hot key", Alt-LeftShift-T.  Reportedly,
  2212. the pop-up menu interferes with the LK250 driver that is distributed with
  2213. Kermit (it works fine with regular IBM keyboards).  Workaround: use TES's
  2214. text-mode menu, which Kermit brings up if you type Alt-Home during terminal
  2215. emulation.  MS-DOS Kermit 3.13 and later transparently support both older and
  2216. the latest TES products.
  2217.  
  2218. However, note that TES itself is somewhat fragile, and does not handle long
  2219. bursts of data very well.  So when using the TES path, use shorter packets.
  2220.  
  2221. Reportedly, when making NETBIOS or 3COM(BAPI) connections under Windows,
  2222. characters from a DOS window can show up in the Kermit window, and this can be
  2223. fixed by setting Kermit's foreground and background priority to 150 and
  2224. setting the priority of the other DOS applications to 5000.
  2225.  
  2226. (21.1) NETBIOS STATION-TO-STATION CONNECTIONS
  2227.  
  2228. The procedure for establishing a NETBIOS PC-to-PC connection is as follows:
  2229.  
  2230.  1. On the first PC:
  2231.       SET NETBIOS NAME <xxx>
  2232.       SET PORT NETBIOS
  2233.       SERVER
  2234.  
  2235.  2. On the second PC:
  2236.       SET PORT NETBIOS <xxx>.K
  2237.  
  2238. <xxx> is any name you choose, up to 14 characters long.  Now you can initiate
  2239. file transfer and other Kermit protocol operations from the second PC. If you
  2240. want the two PCs to "chat" in terminal mode, send a FINISH command from the
  2241. second PC (or type Ctrl-C on the first, server, PC), and then give the
  2242. following commands to both PCs:
  2243.  
  2244.   SET TERMINAL NEWLINE ON
  2245.   SET LOCAL-ECHO ON
  2246.   CONNECT
  2247.  
  2248. (21.2) TCP/IP CONNECTIONS
  2249.  
  2250. As of version 3.11, MS-DOS Kermit contains built-in TCP/IP and TELNET protocol
  2251. support.  This allows a PC equipped with a network board that is connected to
  2252. a TCP/IP network to communicate with any other node on the network, without
  2253. requiring any additional TCP/IP software on your PC.  Read NETWORKS\SETUP.DOC
  2254. for details.
  2255.  
  2256. Winsock TCP/IP stacks are strictly for pure Windows (and NT) programs, not for
  2257. DOS programs.  MS-DOS Kermit is a DOS program; it runs from the DOS prompt and
  2258. within DOS emulator boxes in various operating systems, and cannot access
  2259. Winsock.  If you want to make a TCP/IP connection with Kermit from within
  2260. Windows, you have to unload Winsock and use Kermit's own built-in TCP/IP
  2261. capability directly over a packet driver or ODI driver.
  2262.  
  2263. Linemode TELNET is not supported.  This is the mode in which the TELNET client
  2264. buffers up "lines" and then sends them all at once when the user hits the
  2265. Enter key, and which allows local editing before each line is sent.  This has
  2266. been observed to cause problems with only one TELNET server so far: the UNISYS
  2267. 2200 TIP transaction processing system.  In most cases, Kermit TELNET works
  2268. fine with linemode TELNET servers, e.g. on IBM mainframes running VM/CMS.
  2269.  
  2270. Domain name resolution might not work when you give a nickname instead of a
  2271. complete host name in the SET PORT TCP/IP command and Kermit transforms the
  2272. nickname into the desired complete host name by combining it with your TCP/IP
  2273. DOMAIN.  Kermit does not use a special Hosts file to relate nicknames to
  2274. complete host names.  Workarounds: use a complete hostname, an IP host number,
  2275. or set your TCP/IP DOMAIN correctly.  Domain Name Servers are specified by
  2276. their IP number rather than name.
  2277.  
  2278. Version 3.13 and later support multiple gateways on the local network.
  2279. Choosing the incorrect gateway normally results in that gateway sending an
  2280. ICMP Redirect message to Kermit indicating the preferred gateway, and Kermit
  2281. displays such messages.  Versions 3.11 and 3.12 did not implement ICMP
  2282. Redirects.
  2283.  
  2284. Kermit's TCP/IP gateway must be on your physical network.
  2285.  
  2286. Kermit is not an IP router handling routing broadcast traffic; it does not
  2287. listen to RIP, etc.  Instead it depends upon the router to do that and then
  2288. tell Kermit what to do.  Kermit computes whether an IP destination is on the
  2289. local network; if it isn't Kermit uses the first IP gateway as the local
  2290. target for ARPing and further relaying.  It is up to that gateway to either
  2291. accept the traffic or to issue an ICMP Redirect indicating another gateway.
  2292.  
  2293. For TCP/IP connections to IBM mainframes in full screen 3270 mode, you need an
  2294. intermediate host or device to do the 3270/ASCII terminal conversion.  Typical
  2295. setup is a TCP/IP terminal server with its serial lines connected to a
  2296. protocol converter (e.g. IBM 7171), a UNIX host that has tn3270 available, or
  2297. a terminal server (like Cisco) that does 3270 terminal emulation. To transfer
  2298. files with an IBM mainframe, you might have to tell MS-DOS Kermit to SET
  2299. PARITY SPACE, and you might have to restrict the packet length.
  2300.  
  2301. For IBM mainframe linemode TELNET connections, automatic appearance of the
  2302. login banner might not work.  Type a carriage return (Enter) to get the login
  2303. banner.     Local-echo and linemode operation are negotiated automatically.
  2304.  
  2305. BOOTP requests are handled correctly within the local network, and have been
  2306. tested successfully through Novell's BOOTP forwarder NLM and through Cisco
  2307. routers with software version 8.2.7.  In the SET TCP/IP ADDRESS command, the
  2308. words BOOTP and RARP must be spelled out in full.  Version 3.11 and 3.12
  2309. support original RFC951 and 1048 BOOTP protocol, and v3.13 adds support for
  2310. downloading of the PC's full host (domain) name as specified in RFC1395.  See
  2311. KERMIT.HLP (MSKERM.HLP) for details.
  2312.  
  2313. EXIT from Kermit closes your TCP/IP session (just like HANGUP).     PUSHing or
  2314. running DOS commands from Kermit keeps it open.     In version 3.12 and later,
  2315. EXITing while a session is active causes a warning / confirmation message to
  2316. appear so you can change your mind.
  2317.  
  2318. Version 3.11 of MS-DOS Kermit uses only the TELNET port (23) for SET PORT TCP
  2319. connections.  Version 3.12 and later allow you to specify any desired port
  2320. (except 25) in the SET PORT TCP command, after the host name or address.
  2321.  
  2322. MS-DOS Kermit honors TELNET protocol negotiations, including terminal type and
  2323. ECHO/SGA.  Version 3.11 always sends "VT100" as its terminal type; later
  2324. versions send MS-DOS Kermit's active terminal type or allows the user to
  2325. create an override string with command SET TELNET TERM-TYPE.
  2326.  
  2327. Not supported: FTP, TFTP, automatic setting of PC date/time from network, 3270
  2328. emulation (tn3270), etc.  There is no PING command, but MS-DOS Kermit responds
  2329. when PINGed and when probed by Traceoute.  Multiple simultaneous TCP/IP
  2330. sessions are supported in v3.13 and later; see KERMIT.HLP for details.
  2331.  
  2332. Version 3.12 and later support inbound connections to MS-DOS Kermit.  Inbound
  2333. TELNET connections do not copy DOS screens, etc, like Carbon Copy, PC
  2334. Anywhere, etc; a Kermit-to-Kermit connection is made instead.  To configure
  2335. MS-DOS Kermit to be a TCP/IP server, give the following command:
  2336.  
  2337.   SET PORT TCP * [ <port> ]
  2338.   SET SERVER LOGIN <username> [ <password> ]  ; (recommended but not required)
  2339.   SERVER
  2340.  
  2341. Use asterisk instead of an IP name or address, followed optionally by a TCP
  2342. port number (the default is 23 = TELNET), and then enter server mode.  Anybody
  2343. who TELNETs to your PC will see a brief screen message telling them to escape
  2344. back to their local Kermit prompt and issue commands from there, for example:
  2345.  
  2346.   REMOTE LOGIN <usename> <password>
  2347.   REMOTE DIRECTORY
  2348.   GET OOFA.TXT
  2349.  
  2350. Chat sessions can also be set up as described in the NETBIOS section above.
  2351.  
  2352. Kermit's TCP/IP support cannot be used simultaneously with PC NFS because both
  2353. applications want to register use of ARP and IP with the packet driver, but
  2354. each protocol can only be assigned to one application.    This is only one
  2355. particular case of the more general rule:
  2356.  
  2357.   Only one TCP/IP-based application can use a LAN adapter at once.
  2358.  
  2359. which also applies to DesqView/X and other TCP/IP products for the PC.
  2360. See NETWORKS\SETUP.DOC for a detailed discussion.
  2361.  
  2362. The SET TCP/IP commands return failure codes if there is a parse error.     SET
  2363. PORT TCP/IP returns error status in Kermit variable \v(tcpip_status), with
  2364. the following values:
  2365.  
  2366.   SUCCESS          0
  2367.   NO_DRIVER          1
  2368.   NO_LOCAL_ADDRESS    2
  2369.   BOOTP_FAILED          3
  2370.   RARP_FAILED          4
  2371.   BAD_SUBNET_MASK     5
  2372.   SESSIONS_EXCEEDED   6
  2373.   HOST_UNKNOWN          7
  2374.   HOST_UNREACHABLE    8
  2375.   CONNECTION_REJECTED 9
  2376.  
  2377. The connection is not opened until the first attempt to communicate with the
  2378. remote host: CONNECT, PAUSE, OUTPUT, etc.  While connection establishment is
  2379. in progress, you can't interrupt the program with Ctrl-C. Use IF SUCCESS /
  2380. FAILURE after PAUSE 0 to check if the connection is open, for example:
  2381.  
  2382.   DEFINE TELNET SET PORT TCP \%1 \%2, PAUSE 0, IF SUCCESS CONNECT
  2383.  
  2384. Or examine variable \v(tcpip_status) for success, for example:
  2385.  
  2386.   DEFINE TELNET SET PORT TCP \%1 \%2, PAUSE 0, IF = 0 \V(TCPIP_STATUS) CONNECT
  2387.  
  2388. The \%2 variable is for the optional TCP port number in v3.12 and later.
  2389.  
  2390. TCP/IP performance hints: Set your Kermit packet size to 500 or larger to
  2391. achieve most data sent per network packet.  A convenient setting is SET 
  2392. RECEIVE PACKET 1000, SET WINDOW 4, resulting in four 1000-byte packets in a 
  2393. window.  Experiment with other combinations.
  2394.  
  2395. SET FLOW NONE lets TCP/IP do the flow control and eliminates Kermit's
  2396. need to check for Xon/Xoff.  In most situations beyond the local network 
  2397. performance will be limited by the long distance lines rather than by the PC.
  2398.  
  2399. (End of MSKERM.BWR / KERMIT.BWR)
  2400.