home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / mskermit / msr310.txt < prev    next >
Text File  |  2020-01-01  |  44KB  |  869 lines

  1. File MSR310.DOC    A list of items new to MS-DOS Kermit v3.10     2 March 1991
  2.  
  3. FILE TRANSFER CHANGES
  4.  
  5. 1.  New command REMOTE PRINT <filespec> <optional-printer-parameters>.  This
  6.     is taken from the Kermit book and means send the local file to the remote
  7.     Kermit's printer with optional printer parameters (spaces permitted).
  8.     The remote Kermit can be in server mode or receive mode.  The command is
  9.     now supported on MS-DOS Kermit servers by receiving the file(s) to DOS
  10.     filename PRN; optional parameters are ignored.  The ENABLE and DISABLE
  11.     commands now have PRINT as a new option.
  12.  
  13. 2.  Follow the lead of C-Kermit 5A and attempt simple correction of Parity on
  14.     the communications line during packet transfers.  Parity will be shifted
  15.     to EVEN, ODD, or MARK by the detector, in addition to the older warning
  16.     about removing the high bit on characters. The first four packet
  17.     characters determine the parity.  Any change becomes permanent.  SPACE
  18.     parity cannot be distinguished from NONE, and so 8-bit data when
  19.     transferred over a 7-bit SPACE parity connection will result in fatal
  20.     checksum errors.
  21.  
  22. 3.  Add two new commands:
  23.  
  24.         SET SEND DOUBLE-CHAR <number between 0 and 255>
  25.  
  26.     which sends this character twice in a row in outgoing packets.  The
  27.     doubling occurs as packet bytes are being sent to the communications
  28.     channel and hence does not occur during packet construction.  This
  29.     accommodates communications devices which need doubling to let through a
  30.     single copy.  The doubling does not appear in the packet log.  Padding
  31.     characters are not affected by this command since padding is to be
  32.     discarded at the other end anyway.
  33.  
  34.         SET RECEIVE IGNORE-CHAR <number between 0 and 255>
  35.  
  36.     which ignores this character in received packets.  This accommodates
  37.     communications devices which may insert a character into a stream, such
  38.     as a Line Feed inserted before a Carriage Return, or after every "n"
  39.     characters.  The ignored character will not appear in the packet log.
  40.     Note that NUL (0) and DEL (127) are normally ignored even without this
  41.     command.
  42.  
  43. 4.  Add alternative command syntax: SET FILE COLLISION means the same as
  44.     older SET FILE WARNING and SET FILE COLLISION DISCARD is the same as SET
  45.     FILE COLLISION NO-SUPERSEDE.
  46.  
  47. 5.  Add command REMOTE SET FILE COLLISION UPDATE, meaning the file receiver
  48.     on the other side should process incoming files with conflicting names as
  49.     "updates" (whose meaning is system dependent) to existing files with the
  50.     same names.  The MS-DOS Kermit server does not recognize the command.
  51.  
  52. 6.  Accommodate the Cyrillic character set of Code Page 866 ("Alternative
  53.     Cyrillic") as much as possible.  The command SET TRANSFER CHARACTER-SET
  54.     has the new option CYRILLIC (ISO 8859-5, the Latin/Cyrillic Alphabet), and
  55.     if selected will force the FILE CHARACTER-SET to be CP866.  Similarly, if
  56.     the FILE CHARACTER-SET is selected to be the new option CP866 then it will
  57.     force the TRANSFER CHARACTER-SET to be CYRILLIC.  Warnings are issued for
  58.     both cases.
  59.  
  60.     When sending a text file with TRANSFER CHARACTER-SET CYRILLIC the file
  61.     attributes packet will send "I6/144" for the file character-set
  62.     identification (the "C" attribute) and translation will be done between
  63.     ISO 8859-5 on the wire and CP866 (Alternative Cyrillic) in the machine.
  64.  
  65.     The reason for the coupling of commands is that CP866 has many Cryillic
  66.     characters in the right (high bit set) section which have no equivalents
  67.     in other Kermit character sets and regular Code Pages.  Hence, when CP866
  68.     or CYRILLIC is selected there can be no translation of characters between
  69.     CP866 and either the other (Western European) Code Pages or the LATIN1
  70.     character set.
  71.  
  72.     If a file arrives with an attributes packet indicating a Cyrillic transfer
  73.     character set but the local machine is not adjusted for CP866 then CP866
  74.     is forced for this file. The active Code Page indictor reverts to the
  75.     real Code Page value after the file transfer has completed successfully
  76.     or not.
  77.  
  78.     For terminal emulation SET TERMINAL CHARACTER-SET TRANSPARENT will prevent
  79.     unwanted translations and also convert the C1 controls area into printable
  80.     characters found in CP866.  If the host uses Alternative Cyrillic as a
  81.     terminal character set and the PC has CP866 as its active code page, all
  82.     will work correctly.  If the host uses some other Cyrillic character set,
  83.     MS-DOS Kermit can translate it into CP866 if it is given the appropriate
  84.     set of SET TRANSLATE INPUT commands.
  85.  
  86. 7.  Modify the action of the BYE and LOGOUT commands from an MS-DOS Kermit
  87.     client.  Previously these would complete successfully whether or not the
  88.     server host sent an Error packet.  A Kermit server can send an Error
  89.     packet response if BYE has been Disabled or if it doesn't understand the
  90.     BYE command.  To keep things rational MS-DOS Kermit now stays active if
  91.     an Error packet is received for these commands.  Script writers may want
  92.     to issue an extra command to EXIT Kermit regardless.  An MS-DOS Kermit
  93.     server returns an ACK with a message that the command is disabled, it
  94.     logs out the user, it hangs up the connection. If BYE is disabled the
  95.     server waits for another customer, if it is enabled the serving Kermit
  96.     exits to DOS.
  97.  
  98. 8.  On the formatted file transfer screen add " of n" to the Window slots
  99.     line, where n is the maximum number negotiated between Kermits.
  100.  
  101. 9.  Add more flexibility to the REMOTE LOGIN <username password account>
  102.     command so it can be stated on one line, particularly for Take files, and
  103.     yet retain the ability to use embedded spaces in all three fields.  To
  104.     use embedded spaces, surround the quantity with curly braces, {..}. An
  105.     example is a username of "my name" and a password of "no show":
  106.  
  107.         REM LOGIN {my name} {my spaced password}
  108.  
  109.     The account name is omitted in this example.  Kermit will prompt for the
  110.     items only if nothing is specified after the word LOGIN.
  111.  
  112. 10. During file transfers pressing either Control-Q or just Q sends an XON
  113.     code to the other side, regardless of our flow control setting. This
  114.     is to manually free a host blocked by a stray XOFF. File msscom.asm
  115.  
  116. SCRIPT, MACRO, TAKE FILE CHANGES
  117.  
  118. 1.  In the command WAIT <timeout> \CD \CTS \DSR, let the backslash character
  119.     be optional, to merge syntax with C-Kermit 5A.
  120.  
  121. 2.  Slightly revise script INPUT and REINPUT command sensing of timeouts by
  122.     examining elapsed time after, rather than before, reading each serial port
  123.     character. This might cure complaints of REINPUT 0 reporting premature
  124.     FAIL status.
  125.  
  126. 3.  Significant change to \%n variables defined as macro arguments.  For each
  127.     macro invocation first save variables \%0 through \%9, clear \%0..\%9,
  128.     then define \%0 to be the name of the macro being invoked and \%1..\%9 as
  129.     the arguments to the macro.  When the macro exits restore the previous
  130.     \%0..\%9 variables.
  131.  
  132.     This process nests naturally, and ARGC still represents one plus the
  133.     number of macro arguments.  C-Kermit 5A and MS-DOS Kermit 3.10 are now in
  134.     agreement on these items.  Previously \%0 was not affected by macro
  135.     invocation and \%1..\%9 were not saved and restored around the macro.
  136.     The new behavior may affect scripts written in the past.
  137.  
  138.     TAKE commands do not create a new set of \%<digit> variables.
  139.  
  140.     For example,
  141.  
  142.         MS-Kermit> DEFINE xxx Set term VT302,take x.tak,connect
  143.         MS-Kermit> xxx A B C
  144.         where file x.tak holds
  145.                 echo \%0 \%1 \%2 \%3
  146.  
  147.         This displays "XXX A B C" and then enters Connect mode as a VT320
  148.         terminal.
  149.  
  150.     Some basic concepts:
  151.  
  152.     - Intrinsic (built-in) commands do not affect the \%0..\%9 variables,
  153.       but user-created commands (macros) do create a private version of
  154.       \%0..\%9.  TAKE is an intrinsic command.
  155.  
  156.     - To be a command, the keyword -- intrinsic or macro -- must be the first
  157.       word at the Kermit prompt.  Commas in macros start a fresh command line
  158.       even though the Kermit prompt is usually not displayed on the screen
  159.       while within a macro.
  160.  
  161.       Thus in the definition below of macro "test":
  162.  
  163.         DEFINE test echo \%0 \%1,mywords,echo test mywords \%1
  164.  
  165.       there are three commands (they start at the effective Kermit prompt):
  166.  
  167.         echo TEST <first argument><carriage return>
  168.  
  169.         mywords<carriage return>  (whatever the macro "mywords" is defined as)
  170.  
  171.         echo test mywords <first argument to test><carriage return>
  172.  
  173.       The argument to this last ECHO command is the simple text "test mywords"
  174.       plus the first argument to "test".  In the text neither test nor mywords 
  175.       is replaced by its definition, and ECHO is an intrinsic command.
  176.  
  177.     - String substitution variables, \%<character> and \v(variable), are
  178.       always immediately replaced by their definition string no matter where
  179.       they are used outside of a DEFINE command.
  180.  
  181.     - ASSIGN is similar to DEFINE except that whereas DEFINE uses the
  182.       definition text as a literal string ASSIGN first evaluates the text,
  183.       i.e. it replaces \%<character> and \v(variable) items with their string,
  184.       at the time the ASSIGN statement is executed.
  185.  
  186.     - Curly braces, {..}, may be used to group items into a single quantity.
  187.       When they appear as part of a macro then as the macro is executed (DO)
  188.       the top level braces are first removed and any commas outside of braces
  189.       are changed to carriage return command terminators.  Many commands, such
  190.       as ECHO, remove the top level braces before displaying a string.
  191.       Commands requiring a word answer can employ braces to retain spaces as
  192.       part of the word.
  193.  
  194. 4.  Add a new element to command line variables, taken from C-Kermit 5A.
  195.     Variables ARGC, COUNT, DATE, NDATE, DIRECTORY, ERRORLEVEL, KEYBOARD,
  196.     PLATFORM, PROGRAM, SPEED, SYSTEM, STATUS, TIME, and VERSION can now be
  197.     used in any context by employing a new notation for built-in variables:
  198.  
  199.         \v(variable)
  200.  
  201.     where "variable" is one of the words listed above.  A built-in variable,
  202.     no matter where it occurs, is replaced by a text string representing its
  203.     value.
  204.  
  205.     PLATFORM returns the machine name, such as IBM-PC, and SYSTEM returns
  206.     the operating system name, MS-DOS, for MS-DOS Kermit.  PROGRAM returns
  207.     MS-DOS_KERMIT.
  208.  
  209.     Examples:
  210.         WRITE session \v(platform) has a \v(keyboard) key keyboard.
  211.  
  212.     writes to the session log the phrase "IBM-PC has a 101 key keyboard."
  213.  
  214.         ECHO The version number of this program is \v(version) today.
  215.     displays:
  216.         The version number of this program is 302 today.
  217.  
  218.     And DEFINE See ECHO \%0 - the arg is \v(\%1) here.
  219.         See argc
  220.     which displays
  221.         SEE - the arg is 2 here.
  222.         See version
  223.     which displays
  224.         SEE - the arg is 302 here.
  225.  
  226.     The expression \v(variable) is replaced by its ascii value.  This may be
  227.     used in any command.  The current syntax of  IF = ARGC 2 ... is retained
  228.     for compatibility purposes but in new scripts it should be replaced by
  229.     IF = \v(argc) 2, etc.
  230.  
  231.     If the item within the parentheses is not one of the above variables, or
  232.     a variable whose value evaluates to the name of a built-in variable, or
  233.     a right parenthesis does not end the variable name, then the entire
  234.     expression from \v( to the current point is discarded. Abbreviation of
  235.     a \v(..) variable name is permitted. Examples of bad syntax: 
  236.         ECHO testing \v(versions) stuff
  237.     or
  238.         ECHO testing \v(version stuff
  239.     both of which display
  240.         testing stuff
  241.  
  242.     Variable NDATE reports the date with all digits as YYYYMMDD for easier
  243.     testing in scripts than DATE which reports in country dependent forms of
  244.     MM-DD-YYYY, DD-MM-YYYY, or YYYY:MM:DD.  Variable STATUS reports the value
  245.     of the Kermit internal status word; 0 is success, any other numeric is a
  246.     failure. Most Kermit commands clear this word result before execution.
  247.     The current values are listed below; "user intervention" may be added to
  248.     other values.
  249.  
  250.          Condition         Status    Comment
  251.     success            0    initial value for most commands
  252.     send failure        1    includes OUTPUT and TRANSMIT commands
  253.     receive failure        2    includes INPUT command timeout
  254.     remote cmd failure    4    REMOTE command failed for any reason
  255.     Take file failure    8    Take file not found
  256.     general failure           16    many causes
  257.     user intervention     128    usually by typing Control-C
  258.  
  259.     Variable KEYBOARD is 88, 101, or 250, describing the number of keys on
  260.     the keyboard so that Take files can be tailored to fit either 88
  261.     (so-called Old AT) or 101 (so-called Enhanced) keyboards.  The
  262.     determination of 88 or 101 is made at Kermit startup.  The IBM PC version
  263.     also permits the value 250 if the LK250 keyboard is selected (SET KEY
  264.     LK250) and external driver is present for the Digital keyboard.
  265.  
  266.     "?" help and <ESC> word completion is permitted with these items.
  267.  
  268. 5.  Add command SHOW VARIABLES [\v(]name[)] which displays the strings
  269.     associated with variables of the form \v(variable-name). Leading "\v("
  270.     and trailing ")" may be omitted. SHOW VARIABLE with no argument shows
  271.     all variables; abbreviations are allowed and show all matches.
  272.  
  273. 6.  Add a feature suggested by John Klensin and Frank da Cruz, from C Kermit.
  274.     New substitution variable notation \$(item)  means replace  \$(item)  by
  275.     the string on the right hand side of the line starting as ITEM= in the
  276.     DOS Environment. Any word may be used for ITEM. The replacement will be
  277.     empty if either the string or the item is absent in the Environment.
  278.     Leading and trailing spaces and tabs are removed from the string.
  279.     Examples:
  280.         Echo \$(path)
  281.     shows the string which occurs after "PATH=" in the Environment, such
  282.     as C:\;C:\WP;C:\DOS.
  283.  
  284.     IF eq \$(video) CGA echo Upgrade to VGA 
  285.     will show the string "Upgrade to VGA" if someone has provided the line
  286.     VIDEO=CGA  in the Environment, perhaps by typing SET VIDEO=CGA or
  287.     written there by a program.
  288.  
  289.     ASSIGN \%p \$(path)
  290.     gives variable \%p the definition of the right hand side of PATH=.
  291.     
  292.     Semicolons occurring in \$(..) replacement strings will be treated as
  293.     ordinary characters and will not start a comment. Comments starting
  294.     with a semicolon are now restricted to ordinary Macros and Take files.
  295.  
  296. 7.  Add two tests to the script IF statement. These are lexical comparisons
  297.     between two words. The curly brace {..} operators are not usable here.
  298.  
  299.     IF LLT word1 word2 <command>
  300.         executes <command> if word1 has    fewer characters (after
  301.         removing leading spaces) than word2, or if at the first
  302.         character where the words differ word1 has a character
  303.         occurring earlier (less than) in the ascii collating sequence
  304.         than that in word 2.
  305.  
  306.     IF LGT word1 word2 <command>
  307.         opposite of above, for word1 longer than word2 or the first
  308.         differing character in word1 occurs later (greater than) that
  309.         in word2 in the ascii collating sequence.
  310.  
  311.     Combining these with IF EQUAL and the NOT modifier yields all logical
  312.     comparison conditions, as shown in the table below. Case sensitivity
  313.     of the tests is controlled by SET INPUT CASE {IGNORE, OBSERVE}, with
  314.     IGNORE being the default; when case is observed uppercase letters are
  315.     "less than" lower case letters.
  316.  
  317.         Lexical Test        Kermit IF statement
  318.        word1 =  word2        IF EQUAL word1 word2 ...
  319.        word1 != word2        IF NOT EQUAL word1 word2 ...
  320.        word1 <  word2        IF LLT word1 word2 ...
  321.        word1 >  word2        IF LGT word1 word2 ...
  322.        word1 => word2        IF NOT LLT word1 word2 ...
  323.        word1 <= word2        IF NOT LGT word1 word2 ...
  324.  
  325. 8.  Modify the action of pressing the Enter key while a script INPUT command
  326.     is in progress.  Previously it meant "assume a match has occurred" so the
  327.     script could progress.  Now it means "assume a timeout has occurred" and
  328.     report a failure status.  People seem to prefer the latter approach.
  329.  
  330. 9.  Add screen-clear command CLS to clear the screen at Kermit command
  331.     level, especially for Take files and macros (Control-L does it by hand).
  332.  
  333. 10. Add synomym
  334.          SET FILE DISPLAY {QUIET, REGULAR, SERIAL}
  335.      meaning the same as SET DISPLAY {QUIET, REGULAR, SERIAL}.
  336.  
  337. TEXT TERMINAL EMULATION CHANGES
  338.  
  339. 1.  Add command SET TERMINAL WIDTH {80, 132} to attempt to manually set the
  340.     screen width in text terminal emulation mode.  Previously this could be
  341.     done only by host commands CSI ? 3 h/l, etc, or outside of Kermit before
  342.     startup.  The main STATUS display was revised slightly to accomodate
  343.     showing the current screen width setting.  Screen width changes occur
  344.     when the text terminal emulator resumes operation and utilize the same
  345.     methods as if the host had issued the command: direct control of the
  346.     display boards known to Kermit (listed below) or invoking files
  347.     COLS80.BAT or COLS132.BAT if Kermit does not support the the display
  348.     board directly.  The COLSxxx.BAT files should contain whatever DOS
  349.     commands you normally use (e.g. MODE) to put your screen in 80 and 132
  350.     column mode, respectively.
  351.  
  352. 2.  Add recognition of IBM PC video boards STB VGA/EM Plus (Tseng 4000) and
  353.     Everex Viewpoint EV-678 from Terry Kennedy, IBM XGA from Bert Tyler,
  354.     Paradise Autoswitch from David Zielke of Duke University, and ATI VGA
  355.     Wonder from Steve Wood.  The list of boards known to Kermit for switching
  356.     between 80 and 132 columns is now:
  357.  
  358.         ATI EGA Wonder and VGA Wonder
  359.         AT&T
  360.         Everex Viewpoint EV-659, FVGA-673, EV-678, Micro Enhancer Deluxe
  361.         IBM XGA
  362.         Paradise AutoSwitch EGA Mono
  363.         STB VGA/EM (Tseng TVGA)
  364.         STB VGA/EM Plus (Tseng 4000), VGA/EM-16, VGA/EM-16 Plus
  365.         Tseng Labs EVA board w/132-col kit installed
  366.         Tseng Labs UltraPAK mono/Hercules with 132 column modes
  367.         Video 7 VGA and Vega Deluxe with the 132X25.COM driver installed
  368.  
  369. 3.  Add the following VT340 control sequence, DECSCPP, to change screen width:
  370.  
  371.         CSI Pn $ |              set columns per page (screen width)
  372.                 Pn              width
  373.                 0 or 80         80 columns
  374.                 132             132 columns
  375.  
  376.     In Kermit Pn values greater than 80 yield 132 columns, else 80 columns.
  377.     This is equivalent to CSI ? 3 h/l (h for 132 columns, l for 80 columns).
  378.  
  379. 4.  New option to the SET TERMINAL command:
  380.  
  381.         SET TERMINAL ARROW-KEYS {CURSOR, APPLICATION}
  382.  
  383.     It is worth remembering that Applications mode is supposed to be invoked
  384.     by the host and not by the terminal user.  So, please do not make a host
  385.     program dependent on Applications mode responses from the terminal unless
  386.     it also invokes that mode; otherwise real terminals will not function.
  387.  
  388. 5.  SET TERMINAL BELL {AUDIBLE, VISUAL, NONE} has the new option of NONE
  389.     to simply ignore arriving Control-G characters. Peace & Quiet.
  390.  
  391. 6.  Revise REPLAY filespec a little.  Previously at the end of the file any
  392.     key would exit Connect mode.  Now all keys remain active so that screen
  393.     dumping, screen rollback can function.  Alt-X and Control-C (emergency
  394.     bailout) exit Connect mode.
  395.  
  396. 7.  Extend the SET TERMINAL CHARACTER-SET command. After the character set
  397.     one may optionally add phrases G0 G1 G2 G3. The meaning of these trailing
  398.     character set storage areas is to attempt forcing the named set into the
  399.     areas without reinitializing the overall character setup in place.
  400.     Omitting these trailers invokes the normal character setup method.  G0
  401.     may hold only 94 byte character sets.
  402.  
  403.     Examples:
  404.         set term char latin1      puts Latin1 into G2 and G3
  405.                                     and ASCII into G0 and G1
  406.         set term char latin1 G1   puts Latin1 into G1, rest unchanged
  407.         set term char Italian G3  puts Italian NRC into G3, rest unchanged
  408.  
  409. 8.  Embellish the VT300 character set abilities by permitting National
  410.     Replacement Character (NRC) sets to be "designated" by the host to a
  411.     particular Gn set table, viz:
  412.  
  413.     Designator       Mnemonic       Description of Action
  414.     ESC ( <ident>       SCS     Designates 94 byte character set <ident> to G0
  415.     ESC ) <ident>       SCS     Designates 94 byte character set <ident> to G1
  416.     ESC * <ident>       SCS     Designates 94 byte character set <ident> to G2
  417.     ESC + <ident>       SCS     Designates 94 byte character set <ident> to G3
  418.  
  419.     where <ident> is:
  420.         NRC country  <ident>            NRC country  <ident>
  421.         British         A               Italian         Y
  422.         Dutch           4               Norwegian/Danish ` (hex 60) or E or 6
  423.         Finnish         5 or C          Portuguese      %6
  424.         French          R               Spanish         Z
  425.         French Canadian 9 or Q          Swedish         7 or H
  426.         German          K               Swiss           =
  427.  
  428.     Example: ESC ) A  loads the British NRC set (A) into G1 (the ")" part).
  429.     To load Latin1 into G1 use  ESC - A  because Latin1 is a 96-character set.
  430.     NRCs are all 94 character sets (see ISO Standard 2022 for further
  431.     elucidation).
  432.  
  433.     This embellishment does NOT turn on NRC operation in the Digital
  434.     Equipment Corporation sense.  To follow DEC usage employ SET TERM
  435.     CHARACTER-SET to choose the country and have the host enable or disable
  436.     NRCs by sending CSI ? 42 h or CSI ? 42 l, respectively.
  437.  
  438. 9.  Enhanced the command SET KEY {key-ident, OFF, ON, LK} to include the new
  439.     option LK.  If stated LK means seek the matching DEC LK250 keyboard
  440.     driver (external to Kermit) and use Bios key inputs; otherwise do not
  441.     seek that driver.  It seems that a few PCs object to the legal driver
  442.     sensing operation, so now the driver is ignored unless explicitly
  443.     requested.
  444.  
  445. 10. Add terminal type of VT100.  This performs identically to a VT102 except
  446.     the response to the type inquiry from a host is ESC [ ? 1 c (a VT100).
  447.  
  448. 11. Add terminal type of HONEYWELL to the emulator.  This is a VT100 with
  449.     two special responses.  A received ENQ character, decimal 5, causes the
  450.     emulator to send the 14 characters
  451.  
  452.         '7813  P GC  A' 03h
  453.  
  454.     and receipt of  ESC [ y  causes the emulator to send the 27 characters
  455.  
  456.         ESC '[8p  OT' 03h ESC '[y7813  P GC  A ' 03h
  457.  
  458.     where the quote marks (') above are not sent but are present so we can
  459.     see the spaces which are sent; other spaces are for reading convenience.
  460.     03h is Control-C, a binary value 3.  The terminal ident response is VT100.
  461.  
  462.         ESC `  (accent grave) clears screen and homes the cursor.
  463.  
  464.     These Honeywell VIP7809 emulation features are from Frank Dreano,
  465.     dreano@trout.nosc.mil.
  466.  
  467. 12. Add another host invocation control sequence to the text terminal
  468.     emulator.  Reception of CSI Pn;...Pn ~ invokes a macro named PRODUCT, if
  469.     it exists, and sets variables \%1, \%2, and so forth up to \%9 to be the
  470.     ascii version of the numeric parameters Pn above.  Omitted parameters are
  471.     taken to be zeros.  Only as many variables are set as numeric parameters,
  472.     and script items ARGC and \v(argc) are one larger than this quantity.  If
  473.     a macro called PRODUCT is not defined only the \%x items are changed.
  474.     Connect mode is not reentered automatically if the macro exists.  This is
  475.     very similar to TERMINALR and TERMINALS, except for the variable setting
  476.     part.
  477.  
  478.     The PRODUCT macro is not invocable via key definition because of the
  479.     needed parameters.  The idea behind PRODUCT is to permit a general macro
  480.     which can test the parameters sent by the host and take local actions as
  481.     necessary.
  482.  
  483.     The PRODUCT macro is intended as a systematic and standardized method for
  484.     software developers to signal vendor-specific requests to a terminal
  485.     emulator.  For example, the first two arguments could be a vendor code,
  486.     the next two product-specific identification, and others could be
  487.     information particular to that product. The leading identification part
  488.     is to let the terminal emulator select one of several different routines
  489.     (Kermit Take files or Macros).  Assignment of fields has not been fixed.
  490.  
  491. 13. Modify the strategy for DEC Autoprint, CSI ? 5 (and 4) i  from printing
  492.     each character as it arrives to printing display lines only as the cursor
  493.     is moved off it by an autowrap or LF, FF, or VT (otherwise do not print
  494.     the line).  Thanks to Michael Wolter for pointing out the problem.
  495.  
  496. 14. Preserve the state of VTxxx terminal emulator printing around processing
  497.     of DEC Set Conformance Level commands, e.g. CSI 63; 1 " p.  Tnx to Michael
  498.     Wolter and John E. Davis.
  499.  
  500. 15. Make a small change to the Self Test code, DECTST, CSI 2 ; Ps y (VT100)
  501.     and CSI 4 ; Ps...; Ps y (VT320).  Do a terminal reset only if a Ps is 0 or
  502.     1.  This is in the VT terminal emulator.  Ps values greater than 1 are for
  503.     testing the terminal serial port, printer, and repeating the tests; they
  504.     are ignored here. All cases move the cursor back to the main display.
  505.  
  506. 15. Add synomyms
  507.     SET TERMINAL DISPLAY {7-bit | 8-bit}
  508.     SET TERMINAL BYTESIZE {7-bit | 8-bit}
  509.      meaning the same as SET DISPLAY {7-bit | 8-bit}.
  510.  
  511. 16. Add command  SET PRINTER filespec  to allow changing the destination of
  512.     printer output while in Connect mode. Filespec defaults to PRN, DOS's
  513.     name for the first printer. This facility can help capture text from
  514.     the screen after character set translation and free of cursor steering
  515.     commands and the like if SET PRINTER filename is stated and then in 
  516.     Connect mode one toggles on local printing (keyboard verb \Kprtscn, tied
  517.     to Control-PrtScn keys). XON/XOFF flow control, if available, is used
  518.     around this "printer" output.
  519.  
  520. GRAPHICS TERMINAL EMULATION CHANGES
  521.  
  522. 1.  Make the GIN mode crosshairs be full screen, by popular demand.  Revise
  523.     BYPASS mode details to discard all terminal input from the host while
  524.     Bypass mode is active, and to turn off Bypass when Kermit sends a control
  525.     code.  Bypass mode is turned on when the host sends ESC ^X (enter Bypass
  526.     mode) or ESC ^E (send status) or ESC ^Z (enter GIN crosshair mode).
  527.  
  528. 2.  Modify the way characters are placed on Tektronix graphics screens from
  529.     starting them at intervals of 8 PC screen dots across the screen to
  530.     placing the lower left at the current drawing position (1 dot
  531.     resolution).  Characters are 8x8 dots. The effect is better positioning
  532.     accuracy along the x-axis; the y-axis already behaved the better way.
  533.  
  534. 3.  Adjust Tektronix emulator slightly so that SET TERM CLEAR-SCREEN does a
  535.     screen clear, using the existing character coloring to write all spaces,
  536.     rather than doing a full reinitialization of the emulator. The text
  537.     emulator is not affected.  Since ESC [ 30's; 40's m screen coloring
  538.     command sets the fore and background color palette registers (7 and 0,
  539.     resp) a screen clear manually or by receipt of ESC [ 2 J will use this
  540.     palette.  A terminal reset restores the built-in default palette.
  541.  
  542. 4.  Add internal support of Microsoft compatible mouse for Tektronix GIN mode
  543.     crosshairs.  Both the regular cursor keys and the mouse can function
  544.     together.  Pressing either mouse button is the same as pressing the Enter
  545.     key.  The mouse driver must be active for Kermit to use it (include the
  546.     line DEVICE=path\MOUSE.SYS in your CONFIG.SYS file for permanent
  547.     residency, or give the DOS command MOUSE ON for temporary residency of
  548.     the Microsoft mouse driver).  This addition suspends any active mouse
  549.     menu programs such as DEFAULT.COM during Tektronix emulation, but they
  550.     continue to run otherwise.  MS-DOS Kermit uses standard Interrupt 33h
  551.     Microsoft mouse calls.
  552.  
  553. 5.  Add command SET TERMINAL GRAPHICS CURSOR {ON, OFF}, default is ON.  This
  554.     permits one to turn off the text cursor while in graphics (Tek) mode.
  555.     The cursor is suppressed around almost all drawing and Sixel commands.
  556.  
  557.     The new text cursor symbol in Tektronix graphics mode is an 8x8 dot hollow
  558.     box so we can see where we are.  The box is removed temporarily while
  559.     generating a TIFF format screen dump (default keys Control-End).
  560.  
  561. 6.  Add command SET TERMINAL GRAPHICS COLOR <color values> which is analogous
  562.     to the text mode command SET TERM COLOR and uses the same color values.
  563.     Two technical notes: the background color cannot be given bold
  564.     attributes, and the colors are stored in DEC VT340 color palette slots 0
  565.     (background) and 7 (foreground).
  566.  
  567.     Be wary of two side effects of colored graphics screens: most Print Screen
  568.     programs will put a black dot on the printer paper if a dot is illuminated
  569.     at all, and Sixel graphics normally add (OR) to the exiting dot coloring
  570.     and hence the coloring may not be what was intended.  Resetting the 
  571.     emulator restores the colors specified by these SET TERMINAL commands.
  572.  
  573. 7.  Include additional Tek submode entry and exit commands of:
  574.         ESC 1   enter Tek submode from text emulator and clear Tek screen;
  575.                 ignored if Tek mode is disabled.
  576.         ESC 2   exit Tek submode from text emulator;
  577.                 ignored if acting as a full Tek terminal (SET TERM TEK).
  578.  
  579.  
  580. KEYBOARD TRANSLATOR CHANGES (TERMINAL EMULATION)
  581.  
  582. 1.  Add a facility to the keyboard translator.  Let key definition strings of
  583.     the form {\Kverb other material} activate an existing macro or keyboard
  584.     verb, or a succession of them.  If "verb" matches the name of a regular
  585.     Kermit macro, execute the macro and stay on the Kermit command line; thus
  586.     a CONNECT command is needed to return to Connect mode.  If the verb does
  587.     not match either a macro name or an existing keyboard verb then do nothing
  588.     and stay in Connect mode.  Be aware that searching tables for the name of
  589.     the verb uses many cpu cycles and will reduce performance.
  590.     Examples:
  591.  
  592.         SET KEY \316 {\{kmodeline}\{kdnarr}\{kdnarr}}
  593.  
  594.        Pressing the IBM PC "F2" key (code \316) toggles the modeline and then
  595.        sends two down arrow sequences to the host. Notice the need to place
  596.        curly braces around each "kverb" phrase to separate them properly.
  597.  
  598.                 DEFINE Accumlate Receive, Connect
  599.                 SET KEY \315 {\Kaccmulate}
  600.  
  601.         Pressing the IBM PC "F1" key (code \315 above) makes the keyboard
  602.         translator see string {\Kaccumlate}, verb "accumlate" is not in the
  603.         predefined tables, and hence Kermit invokes the Macro named ACCMULATE.
  604.         That Macro puts Kermit into file receive mode and when the file, or
  605.         file group, transfer has been completed it returns to Connect mode.
  606.  
  607.                 DEFINE WP Take wp30.ini, Connect
  608.                 SET KEY \316 {\Kwp}
  609.  
  610.         This makes IBM PC key "F2" invoke macro WP which in turn reads in
  611.         and executes the contents of file WP30.INI. Kermit then returns to
  612.         Connect mode. Nothing happens if the user has not defined Macro WP.
  613.  
  614.     Braces around the whole key definition are required so that the search
  615.     for the verb name is done while executing in Connect mode rather than
  616.     when defining the key. If the braces are omitted then only the predefined
  617.     keyboard verbs are available; an error is reported if the verb is not one
  618.     of these.
  619.  
  620.     Text sent to the host may precede and follow the \Kverb part. To avoid
  621.     confusion "Kverb" itself, but not the "\", may be placed in braces too,
  622.     such as:
  623.  
  624.         DEFINE Accumulate cd c:\junkmail,Receive,Connect
  625.         SET KEY \315 {kermit\13\send foo.bar\13\{KAccumulate}exit\13}
  626.         the pieces:   |_______________________||............||_____|
  627.                           string to host          do Macro    string to host
  628.  
  629.     This sends the string "Kermit<carriage return>Send foo.bar<carriage ret>"
  630.     to the host to invoke its Kermit and asks it to send file foo.bar.  It
  631.     then invokes local Macro Accumulate to receive the file, and finally it
  632.     sends the string "exit<carriage return>" to the host.  Braces around
  633.     KAccumlate delimit it from the final string text.
  634.  
  635.     There is no host command which can invoke these macros; this protects the
  636.     PC against stray garbage text and unauthorized commands from the host.
  637.  
  638. 2.  Ensure that during terminal emulation, outgoing bytes of values greater
  639.     than 9fh are not converted into 7-bit control form (ESC letter) under any
  640.     circumstance.  Only bytes in the C1 control code area may be converted.
  641.  
  642. 3.  Add DESQview support call to release the cpu timeslice when in Connect
  643.     mode and no character is available from the serial port.
  644.  
  645.  
  646. COMMUNICATIONS / SERIAL PORT CHANGES
  647.  
  648. 1.  SET FLOW has a new option, RTS/CTS, for controlling sending and receiving
  649.     of characters at the hardware level.  It is effective only for COM1..COM4
  650.     (real UARTs); selecting SET FLOW RTS/CTS for other communications ports
  651.     is the same as SET FLOW NONE.  It is effective only when SET DUPLEX is
  652.     FULL, which is the default.  It works by lowering the modem status signal
  653.     RTS when we wish to stop the host from sending characters to us, and the
  654.     host can ask us to stop sending by lowering modem status signal CTS.
  655.  
  656.     As in the case of XON/XOFF, Kermit prevents a deadlock of being
  657.     permanently held in the stopped state.  The algorithm is to wait for as
  658.     long 10 seconds when a character needs to be sent and if Kermit is still
  659.     being held it will ignore the hold, sound a beep in the PC's speaker,
  660.     then send the character anyway.
  661.  
  662. 2.  SET DUPLEX HALF has been modified very slightly to send the output
  663.     character as above when blocked for too long.  Previously it would beep
  664.     and discard the character.  Please notice that Half Duplex operation uses
  665.     RTS and CTS differently than it is used in Full Duplex flow control.  The
  666.     classical Half Duplex situation is the sender asserts RTS when it wishes
  667.     to transmit and awaits permission via CTS being asserted by the modem.
  668.     The sender unasserts RTS when it is finished sending and resumes
  669.     listening.  Flow Control and Half Duplex should not be used together,
  670.     but Kermit does not prevent one from trying it.
  671.  
  672. 3.  The port address of serial ports COM1 through COM4 may now be given to
  673.     Kermit as overrides (or, for COM3 and COM4, to activate them).  There are
  674.     two ways:
  675.  
  676.     First, there are the new Kermit commands SET COMn value, such as:
  677.         SET COM3 value
  678.     "Value" is the port address, such as \x02f8 for COM3; notice the optional
  679.     use of a hexadecimal number here.
  680.  
  681.     The second way is to use the DOS Environment line starting with KERMIT= to
  682.     hold the phrase "COM3 value;" or "COM4 value;" (without the "" marks).
  683.     Please double check the value to avoid systems conflicts (especially with
  684.     disk drives).
  685.     
  686.     The IRQ value for COMx ports must still be 4 or 3, IRQ 4 for COM1 and COM3.
  687.     It is permissable to have two serial ports sharing the same IRQ line,
  688.     provided only one is active at a time. Kermit does testing to discover
  689.     which IRQ, 4 or 3, is used by the selected serial port.
  690.  
  691.     The current list of commands recognized from the DOS Environment lines
  692.     starting with KERMIT=  or  KERMIT0=  or  KERMIT1= etc are:
  693.         COM1 value                      value is port address (no default)
  694.         COM2 value                      value is port address (no default)
  695.         COM3 value                      value is port address (no default)
  696.         COM4 value                      value is port address (no default)
  697.         ROLLBACK value                  value is number of screens (def 10)
  698.         INPUT-BUFFER-LENGTH value       value is number of bytes (def 128)
  699.                                         of the script INPUT command buffer
  700.    These Environment lines are constructed with the DOS command SET, such as:
  701.  
  702.         C> SET KERMIT=ROLLBACK 35;COM3 \x02f8;INPUT 256;
  703.  
  704.    Upper and lower case are equivalent here.
  705.  
  706. 4.  Modify the retry procedure to send a packet character to wait 60ms rather
  707.     than 10ms between each of five attempts. This may help situations where
  708.     a network device may be unresponsive for about 200ms between characters.
  709.  
  710. 5.  Internal revisions to details of handling 75/1200 bps split speeds.
  711.     Previously, filling the receiver buffer would cause an XOFF to be sent at
  712.     1200 baud rather than at the correct 75 baud.  Now the XOFF character is
  713.     sent at 75.  Thanks to Dan Norstedt for providing the split-speed code.
  714.  
  715.  
  716. COMMUNICATIONS / NETWORKING CHANGES
  717.  
  718. 1.  Incorporate support for Novell's TELAPI TCP/IP Telnet program. This
  719.     is selected by command:
  720.  
  721.                 SET PORT TELAPI nnn.nnn.nnn.nnn
  722.  
  723.     where nnn.nnn.nnn.nnn is the Internet address of the remote host, in
  724.     decimal.
  725.  
  726.         Example: SET PORT TELAPI 129.123.1.11   (machine netlab.usu.edu)
  727.  
  728.     TELAPI is a component of the Novell package LAN WorkPlace for DOS.  At
  729.     Utah State University it was run with the Novell (ex-Excelan) EXOS 205T
  730.     Ethernet board (a smart multiprotocol board supporting TCP and NetWare
  731.     IPX packets).  Novell Utility TSU.EXE is not required but may be used
  732.     together with command SET PORT BIOS1.
  733.  
  734.     SET PORT TELAPI must not be confused with SET PORT NOVELL(NASI); they
  735.     use very different communications methods.
  736.  
  737.     Notes on this new faciity:
  738.  
  739.      a) Hosts not on the local network will likely require their
  740.         Internet address and the local gateway to be specified with utility
  741.         ROUTE, such as:
  742.  
  743.                 ROUTE ADD 128.59.39.2 129.123.1.254
  744.  
  745.         The first address is watsun.cc.columbia.edu, in New York City,
  746.         and the second is that of a local gateway box (a cisco Inc router
  747.         at Utah State University in Logan, Utah).
  748.  
  749.      b) The communications channel is opened in 8-bit-wide BINARY
  750.         character-at-a-time mode, thus Unix hosts may require Line Feed
  751.         (Control-J) as a line terminator.
  752.  
  753.      c) Included in this work is sending a BREAK signal as a Telnet
  754.         "Interrupt Process" command.
  755.  
  756.      d) A status message is shown for 3 seconds if the connection cannot
  757.         be established.
  758.  
  759.      e) Once an Internet number has been specified with SET PORT TELAPI it
  760.         will be retained for subsequent SET PORT TELAPI commands.  Thus it
  761.         need be stated only once.  SHOW COMMUNICATIONS will display the 
  762.         number.
  763.  
  764.      f) The presence of the host can be checked by sending the two bytes
  765.         \255\246, which is Telnet signal "Are You There?" (AYT), and to which
  766.         the host is supposed to send back a bell or visible message.  This
  767.         can be arranged easily by command SET KEY <key's ident here> \255\246
  768.         if SET TRANSLATION KEYBOARD OFF is selected.  MS-DOS Kermit packets
  769.         encode \255 value in other terms and thus AYT will not be invoked by
  770.         packet data.  Character \255 is special in Telnet; it introduces
  771.         Options negotiation.  To send \255 as data during terminal emulation
  772.         and scripts (i.e., outside MS-DOS Kermit packets) it must be sent
  773.         twice, as \255\255.  See TCP/IP documents RFC-854 and RFC-855 for
  774.         Telnet specifications.
  775.  
  776.      g) TELAPI version 3.5 sometimes has trouble hanging up a connection.  It
  777.         will attempt creating a new one for each new session and can exhaust
  778.         its space (defaults to two of them) when an old one persists.  The
  779.         only cure I know is to unload the TELAPI TSR (DOS command TELAPI -u)
  780.         or reboot the machine.
  781.  
  782.      h) TELAPI uses Interrupt 14h with high numbered function calls.  Beware
  783.         of using other Int 14h trapping programs simultaneously.
  784.  
  785.      i) Kermit uses only the Internet number form of addressing for TELAPI
  786.         because the TCP "name resolver" (conversion of a name to a number)
  787.         is not available directly with TELAPI.  Thus, full compliance with
  788.         TCP/IP specs is not available to Kermit or other external terminal
  789.         emulators using the TELAPI interface.  The full specs recommend using
  790.         names and letting a separate group of machines, called Name Servers,
  791.         provide the Internet number via TCP/IP methods.
  792.  
  793. 2.  Add communications enhancement to using the Int 14h serial port
  794.     interceptor TES from Interconnections Inc (distributed with Novell
  795.     NetWare for VMS). The new command:
  796.  
  797.         SET PORT TES <optional host name>
  798.  
  799.     invokes TES and make a connection to the indicated host.  This competes
  800.     with SET PORT BIOSn because they use some common operations. That is,
  801.     either SET PORT TES or SET PORT BIOSn should not be used while the other
  802.     is still active.
  803.  
  804.     <optional host name>        Action
  805.         host-name       Connect to that host, and disconnect from a previous
  806.                         TES host if such a connection were active.
  807.            *            Show all available TES hosts but do not connect.
  808.         nothing         Use the current TES host name to reestablish an
  809.                         existing connection. Most useful when switching
  810.                         between TES and a real serial port. If no host name
  811.                         exists then a list of available hosts is shown.
  812.  
  813.     Keyboard verb \Knethold is used to invoke the TES command interpreter
  814.     while in Connect mode (to revise connections usually), and HANGUP breaks
  815.     an existing connection.  Sending a BREAK (ALT-B or \Kbreak) performs the
  816.     same function for TES as \Knethold.  Use this function when manual control
  817.     of sessions is desired, such as creating multiple sessions managed by
  818.     TES rather than by Kermit.
  819.  
  820.     These new TES operations couple closely with version 2.x of TES and will
  821.     not work with earlier ones.  Instead use SET PORT BIOS1 and the TES hot
  822.     key with older TES's.  If the TES hot key is used then \Knethold may not
  823.     be recognized; use the hot key again to control TES.  If the hot key has
  824.     not been used then TES material is shown on the Connect mode screen.
  825.     SHOW COMMUNICATIONS will show the current host name, as read back from
  826.     TES itself.  The apparent serial port identifier on the Connect status
  827.     line is the letter "I".
  828.  
  829.     Note that placing a connection on hold and later returning to it may
  830.     require pressing the \knethold or \kbreak keys and typing RESUME to make
  831.     the TES command interpreter return control to the data stream.  It's
  832.     apparently a problem in the interpreter.
  833.  
  834.     If Kermit is exited completly then the active session is terminated, but
  835.     held sessions are retained.  Thus, to preserve sessions after Kermit has
  836.     exited use \knethold or \kbreak to get the TES command interpreter and
  837.     place the connection on hold manually.  The session may be resumed as 
  838.     above.
  839.  
  840. 3.  Enhancements to SET PORT EBIOS for IBM LANACS.
  841.  
  842.     Let the baud rate and parity be set for either BIOSn or EBIOS ports so
  843.     they will be transferred across the network to the LANACS server port.
  844.  
  845.     Initially they will show as "unknown" until set by the user.  In addition
  846.     to the speed 8 data bits and no parity are presumed.  For EBIOS, the port
  847.     being adjusted is really that on the asynchronous server; the local PC
  848.     uses NetBios and EBIOS to simulate that remote port across the network.
  849.  
  850.     Add new optional final command argument of the EBIOS server port name:
  851.  
  852.         SET PORT EBIOS <local communication port, 1..4> <server port name>
  853.  
  854.     such as  SET PORT EBIOS 1 modem-2400
  855.  
  856.     If the server port name is omitted then the port name is taken from the
  857.     EBIOS table on the client machine, such as resuming an old connection.
  858.  
  859.     This option removes the necessity of using the REDIRECT.EXE program, part
  860.     of the LANACS package, because Kermit does a simple redirection of the
  861.     selected local port to the named host port (and the name is presumed to
  862.     be a unique one rather than a group name).  If another type of connection
  863.     is desired then a) omit the sever port name in the SET PORT EBIOS command
  864.     and b) perform the redirection with REDIRECT.EXE.  Each instance of SET
  865.     PORT EBIOS <local coms port> uses its own port information of speed,
  866.     parity, flow control, handshake, and local-echo.
  867.  
  868. End of MSR310.DOC.
  869.