File MSR313.UPD Update of features in MS-DOS Kermit version 3.13, compared to version 3.12. 23 June 1993 1. Emulation of a Data General D463 native mode terminal, minus graphics. This is described cryptically in file msvibm.vt. Many Data General D463 specific keyboard verbs are included. Because the terminal is sophisticated we recommend reference to the Data General manuals for full details. However, file MSVIBM.VT lists the basic commands of it in short form. 2. Horizontally scrolling screen for up to 207 columns width. Scrolling is automatic, so 132 columns are available for machines supporting less, and it also is available for manual control. Keyboard verbs lfpage, lfone, rtpage, rtone scroll by 20 or 1 columns, respectively; these are not preassigned to keys. 3. Add WIDTH number, from 80 to 207, to the KERMIT= Environment section. This determines the width of text held in the screen rollback buffer. Default is 80 columns (to save memory). 4. Modify screen character attributes to display underlined text as a distinctive change of coloring, versus the previous inverse video. 5. Multiple (6) Telnet sessions. Each is nearly independent of the other. The dependence is the terminal setup conditions for the current session are used when selecting a new session via SET PORT TCP/IP. See item 6 for greater control. Thus each session can maintain separate terminal types and operating conditions as well as connect to separate hosts. Each session not on the screen is blocked so that no information is lost. 6. Telnet session manager. SHOW SESSIONS to see the list. SET PORT TCP/IP to select a session. Within Connect mode keyboard verb \knethold is enhanced to toggle from one Telnet session to the next cyclicly. 7. When starting Connect mode optional macros SESSION1..SESSION6 will be invoked for Telnet sessions of those numbers. The contents are user defined, may include anything, and should end with a new Connect command to finally being terminal emulation. These macros are also invoked when changing Telnet sessions by either \knethold or SET PORT TCP/IP digit. 8. Screens saved from Telnet sessions are compressed, to save memory. 9. Modify the Connect mode status line to display Telnet session information as :host-name, where is the session number. 10. Kermit variable \v(session) reports the current Telnet session as a digit between 1 and 6. 11. Add keyboard verb \kignore to cause that key to generate no output. 12. Add ISO 8829-2 (Eastern European) as a file transfer character set. 13. SET FLOW now has bidirectional selections, INCOMING-XON/XOFF and OUTGOING-XON/XOFF, to control recognition and sending respectively. 14. More changes to support echos when transmitting to mainframe IBM frontends which are far from being transparent. 15. Add slim text font for use by DG mode while in PC graphics mode. Font is 5x14, applies only when using and EGA/VGA adapter, and provides 128 character cells across a 640 dot screen. 256 code points are present. 16. Add command SET TERMINAL COMPRESSED-TEXT {GRAPHICS | TEXT-132}. This is specifically for the DG D463 terminal and determines whether to use graphics emulation of text, the default, or to switch to 132 column text mode. If the display adapter does not make the switch then graphics mode is used automatically despite this command. 17. Add command SET TERMINAL HORIZONTAL-SCROLL {AUTOMATIC | MANUAL}, default of automatic. This lets folks stop annoying jitter. 18. Further elaborate DG "text mode but emulated in graphics mode." Toggle ALT - goes between real and fake text modes. Drawings are lost when the screen is refreshed with text material. This item required major changes to handling of writing to the screen so that graphics mode looks very similar to text mode. CGA and Herc graphics use the Kermit built-in Tek 8x8 characters, only 96 code points. 19. Add DG graphics commands for arc and polygon filling. Few words, much labor. These should work on all display adapters. The DG manuals are in error on these items, so Kermit does what the real terminals do. Kermit's polygon filling works better than real DG terminals (which have algorithm problems). The drawing commands do not need nor depend upon the DG "Reserve Character" command, since the underlying mechanics are completly different than on DG hardware. 20. Add support for DG "pointing device" of mouse and/or keypad, according to host request. This generates and controls a full screen crosshair. A Microsoft compatible mouse driver must be active to use the mouse. 21. Move screen rollback storage to expanded memory, if there is space. Else do regular mallocs from 640K space. Increase the rollback limit to 8000 screens (figure 4KB per average screen). Revise rollback code to use either expanded or regular memory. Works with LIM 3.2 expanded memory schemes, and later, and it works fine in Windows. 22. Add support for Novell's SLIP_PPP ODI driver, as a transparent option. Revised TCP MSS to track info from the ODI drivers and thus not overwhelm the wire. For the time being the SLIP_ODI section of NET.CFG needs the line Protocol IP 0800 SLIP (or PPP) to let Kermit target frames for the LSL. 23. Redesign character transfer mechanism between the main body and TCP code to be much more direct. Redesign socket buffers to be allocated outside of Kermit's static storage. Enlarge receive window to 4KB and transmit window to 2KB, and nominal MSS to 1KB. All together this produced a marked jump in performance, and a smaller disk footprint. 24. Move Kermit packet buffers to malloc'd space. A consequence is the max packet length is now 9034 bytes, and up to 31 windows may be used at the same time and length (if memory permits). 25. Modify WAIT command to sense unexpected garbage text. 26. Modify serial port initialization code to wait 1 ms between bus in/out's and thus let the new breed of modems initialize. Also add an unfortunate full modem reset to help those which are unable to be commanded at speeds the Bios uses at boot time. This was specifically for the Gateway Telepath modem, but others share the same trouble. 27. Reduce speed of OUTPUT commands to 4 chars/sec, to help more modems which have trouble with anything faster during commands. 28. Revise serial port initialzation to skip irq testing if the user gives an override via SET COMx. For modems and noisy buses. Add automatic fallback of com port addresses, \x03f8, \x02f8, \x03e8, \x02e8, if no address is found in seg 40h. Note that this is basically a "force" method, similar to what apparently the commercial programs do without thought. This same mechanism lets Kermit steal the serial port from SLIP_PPP to do dialing via SET PORT COMx, and then do TCP frames with SET PORT TCP. 29. Redesign session switching to accomodate DG "text in graphics mode" together with regular text and Tek graphics. Still some loose ends here. 30. Modify DG D463 code to report out the graphics options upon host request. Thus the terminal type is now D463 to the host, rather than D413. 31. Add command MPAUSE to pause that short length of time, without reading the communications channel. 32. Redesign calibration of 1 millisecond software timing loop, to avoid a difficulty with a machine which only vaguely implemented the standard 8253/8254 system timer chip. 33. Modify item 27, OUTPUT rate, to be optionally slow. New command SET OUTPUT PACING <0..65535> sets the millisecond delay between outgoing bytes. Default is 0, for fast rates. Note that OUTPUT also monitors the incoming stream and delays for a short time to gather responses so the final output rate will not be faster than this command. 34. Add new command GETOK which accepts responses of Yes, OK, or No and sets the general status variable \v(status) to 0 (success) for Yes and OK, or to 16 (general cmd failure) for No or a Control-C abandonment of the command. The purpose it to facility asking binary questions in scripts. If the optional prompt string is omitted the default prompt becomes "Please respond Yes or No." 35. Add Documentation section to the main HELP text. 36. Add thermometer style bar, file type, and current path to file transfer display. 37. Add terminal type of Data General D470. This is the color equivalent of the D463 monochrome terminal. Screen graphics are revised accordingly. 38. Add keyboard verb \kNEXTSESSION to toggle among active Telnet sessions. Keyboard verb \kNETHOLD reverts to placing non-Telnet network sessions on hold, if they support that concept. Nextsession is preassigned to IBM-PC key ALT-N, and Nethold is now unassigned. 39. Use version specific filename MSRxxx.PCH (xxx is 313 or equiv) as the first filename to seek for patching, and use MSKERMIT.PCH if that file is not found. 40. Add internal selection of Interconnections Inc TES with LAT API to the SET PORT TES channel. This command uses the DECnet LAT API but DECnet need not be installed. Both old and new v3.0 TES' are supported transparently by the same SET PORT TES command, and both use Novell IPX packets on the wire. 41. Improve Telnet session manager to ask for New/Resume only if the host name already has an active session. Host names are converted to lower case to ease testing. One may also choose an inactive session by number (1..6) to reuse that host name. 42. Move command STATUS to SHOW STATUS. 43. Make small adjustments to the TCP/IP protocol stack to reduce the number of window size change packets sent to the remote host. This should help SLIP connnections. 44. Allow individual keyboard translator setup for each Telnet session. 45. Add variable \v(ntime) which replaces itself with the numerical string of the number of seconds elapsed in the current day. 46. Change the keyboard translator to accept Control and ALT modifiers on the space bar (contrary to DOS conventions but in agreement with DEC VT ones). Control-space bar is defined to send a NULL (\0) byte. Control-, ALT-, and Shift-space bar are now separate Kermit key identifications. 47. Correct usage of the high bit in a byte when emulating DG terminals to remove it for D463's and place it under control of SET DISPLAY {7, 8} for D470's. 48. Modify the command parser's help message reading "One of the following:" to be "Use one of the following words in this position:". These msgs are followed by the listing of a keyword table and a command line redisplay. 49. Try an experiment of not chaining unknown serial port interrupts, in an attempt to prevent some Bios' from masking out that interrupt line when they receive any stray. Masking out prevents further interrupt activity and no more received characters by Kermit. 50. Add variable \v(dosversion) which is "500" for DOS 5.00. 51. For Data General terminals add a compressed font for Code Page CP850, and extract the Code Page font for 8x14 cell characters (regular width) when in graphics mode. The latter will use the Code Page reported by DOS and it requires that DOS file EGA.CPI be in the current directory or in one in the PATH string. If the file is not found or the Code Page is not found in the file then the hardware CP437 font is used. The compressed font for CP850 will be used if compressed fonts are requested and the Code Page is not CP437. Code Pages can be used only on EGA/VGA and above video display adapters, not on CGA, monochrome, nor Hercules. 52. Initialize Telnet echo status to be that found from the SET LOCAL-ECHO command. 53. Add support for Beame and Whiteside TCP/IP stack. Some minor brushups on Telnet Options needed are here. Syntax is SET PORT BWTCP IP-number. The B&W TCP/IP stack must be loaded, typically as Device=C:\BWTCP\ETHDEV.SYS Device=C:\BWTCP\TCPIP.SYS 1514 in file config.sys. The work was adapted from that by James Sturdevant. 54. Ensure for the internal TCP/IP stack the maximum transmission unit (MTU) is limited to 576 bytes for hosts off the local network to avoid unnecessary IP fragmentation. Note that for at least B&W TCP/IP Kermit packets should be kept short so that accumulated material does not cause that stack to send full media length frames across the Internet. 55. Add change of packet size in the presence of errors to receive a timely ACK. Each failure reduces by half (40 bytes minimum) the size of sent Attributes and Data packets and each success increases it by 25% (up to the negotiated maximum). This is the same algorithm used in C Kermit and IBM mainframe Kermit. 56. Extend use of compressed font (5 dots) simulating text in graphics mode to the VT series of terminal emulators. Command SET TERM COMPRESSED-TEXT {GRAPHICS, TEXT-132} controls this feature. The default for VT emulation is TEXT-132. For VT emulation horizontal scrolling is set to manual (SET TERM HORIZONTAL-SCROLLING) to avoid excessive time moving a graphics screen left and right. The physical screen width is 128 columns (640 dots / 5 dot characters) and the logical screen is 132 columns. 80 column material is done in regular text mode. Only CP437 and CP850 will produce proper character sets using the 5 dot font. 57. Control the default settings for compressed text and horizontal scrolling according to terminal type. For Data General terminals these defaults are graphics and automatic, respectively. For other terminals they are text-132 and manual. The default settings become effective when selecting a terminal type with command SET TERMINAL type. 58. Add CTS/RTS flow control to the method of suspending hosts when Kermit is suspended (shelled to DOS). 59. Change the mistake of using CP862 to be CP852. To solve some translation errors between CP852 and Latin2 use the tables from C Kermit 5A. Transfer Character Set Latin2 is for middle European languages and in this Kermit its use forces Kermit to consider the File Character Set to be CP852 so that special symbols can be translated. 60. Modify the file sending code to look for incoming response packets after each outgoing packet is dispatched, rather than after the sending window is full. This is to catch error and early termination responses from the other end more quickly than otherwise, particularly on slow serial lines. 61. Add automatic passing of commands from host to Kermit by putting the host's Kermit command strings inside an APC control sequence (APC is the 8-bit control character 9Fh, the 7-bit form is ESC underline). Such sequences terminate with character ST (9Ch, 7-bit form is ESC \). 1024 bytes are allowed in the command string, with commas outside of curly braces being recognized as command line separators, as in Macros and Take files. The command string is executed as an unnamed temporary macro, and obeys rules of macros. Kermit appends ",Connect" to the end of the string, to return to Connect mode automatically. Example: ESC _ dir *.txt,run copy afile.txt c:,show terminal ESC \ Because there is NO USER VALIDATION of what the host sends this feature is disabled by default and may be enabled by new command SET TERMINAL APC-MACRO {ENABLE, DISABLE}. APC stands for Applications Program Command, and it is recognized by the VT200 and above Digital emulators. 62. APC-MACRO and macro PRODUCT are the ways of invoking Kermit commands by the host sending information during Connect mode. Macros TERMINALR and TERMINALS are removed; ESC [ ? 34 h and ESC [ ? 34 l now govern only the direction of screen writing during Connect mode. This revision is to comply with DEC usage in the new VT400 terminal series. 63. Revise internal details of Kermit packet processing to aid operations with printable Start of Packet characters. 64. Add character set LATIN2 to terminal emulation. This presumes Code Page CP852 is active and makes no checks for it (partly because DOS itself has difficulties recognizing it). 65. Add provision to respond to DEC VTxxx Control-E Enquire. The response is controlled by new command SET TERM ANSWERBACK {ON, OFF}, with OFF being the default. When enabled Kermit responds with the fixed string "MS-DOS KERMIT" (without the double quote marks). The Honeywell response is unchanged. No user string is permitted. 66. Add more formal Hebrew support as per DEC VT420-Hebrew terminals. This consists of several parts: - Remove Macros TerminalR and TerminalS (invoked by CSI ? 34 h and l). - CSI ? 34 h sets writing direction to be right-to-left, CSI ? 34 l sets it back to left-to-right. - CSI ? 35 h and l set (or l, reset) the keyboard to Hebrew mode by invoking macros KeyboardS and KeyboardR, respectively. Neither is predefined in Kermit. _ CSI ? 36 h and l set Hebrew-7 NRC into G0..G3 for terminal emulation and reset (l) DEC Multinational to G1/3 plus ASCII to G0/2. - Add new NRC character set HEBREW-7 which has Hebrew characters in columns 6 and 7 of the ASCII chart - Add file transfer character set HEBREW-ISO (ISO 8859-8) which forces Code Page 862. The Kermit identification is I6/138. - Add file character set CP862 (Hebrew). - Hebrew-ISO character set can be invoked during VT200/300 terminal emulation by DCS 1 ! u H ST (identifier H), and a copy of this can be placed into the DEC UPSS area by DCS 0 ! u " 4 ST (ident of "4). - Adjust writing direction on many internal operations to obey VT420 rules. 67. Add hidden synonyms Set xfer and xmit for Set TRANSFER and TRANSMIT, resp. 68. Disable execution of the following commands via the APC approach to prevent malicious mischief from the host side. DELETE, DISABLE, ENABLE, HANGUP, OUTPUT, RUN, SET SERVER Howerver, these commands may be executed if SET TERMINAL APC-MACRO is set to UNCHECKED. The default for APC-MACRO is now ON. 69. Add test for Japanese DOS so that internal workers can be conditioned appropriately. 70. Add Ring Indicator, RI, to the modem signals available to the WAIT command. 71. Restrict the screen display of packet debugging to four lines so the formatted screen is not scrolled nor does the sent packet overlap the received packet display. 72. Add command SET CONTROL-CHARACTER {PREFIXED, UNPREFIXED} , where code is a number in the ranges 0..31 or 128..159, or is the word ALL to mean all these values. One or mode codes may be used in the same command. PREFIXED means these control codes are sent in Kermit packets as normal prefixed form to be pure printable values. Prefixed is the default and normal mode of operation, as it has been in the past. UNPREFIXED means the codes are sent verbatim, with no protection. Thus using unprefixed presumes the communications channel and remote host will pass the codes intact. Kermit prefixes the codes XON/XOFF flow control bytes if that is the kind of flow control used and when internal Telnet is used bytes 127 and 255 are prefixed to avoid conflicts with Telnet Options negotiations. New command SHOW CONTROL-PREFIXING displays the codes being used in unprefixed form, and the list will be updated internally after packet exchange has begun. Note that this feature affects what we send but does not inform the remote host. Most Columbia Kermits will accept raw control codes in place of their encoded form but many operating systems and comms black boxes may react to bare control codes before the remote Kermit sees them. 73. Add TCP/IP command SET TCP/IP NEWLINE-MODE {ON, OFF}. ON means outgoing carriage returns (CR) are sent as CR LF, the default. Off means CR is sent as CR NUL. Because many Telnet daemons are broken on this point you may have to experiment to find a workable setting. Also note that CR (decimal 13) in Kermit packets should not be sent unprefixed over Telnet unless you know it will work with one newline mode or the other. 74. To aid people using devices which speak the material written to the screen add command SET TERMINAL VIDEO-WRITING {DIRECT, BIOS}. Direct is the default. Selecting the Bios option forces all Connect mode screen writing to use the slower video Bios and thus enables external TSRs to sense what is being written. This command applies to only text-mode material. 75. Allow Bootp requests to be used over SLIP and SLIP_PPP even though the MAC level frame headers are missing for these approaches. Apparently some terminal servers tolerate an empty hardware type and hardware address in Bootp requests and respond correctly anyway. 76. Add Code Page 861 (Icelandic) as a file character set, in both readable and invertable forms. Translation is to and from Latin-1 on the wire. 77. Add command SET TERMINAL EXPANDED-MEMORY {ON, OFF}, default is OFF. This controls whether expanded memory is used to hold the screen rollback buffer. Expanded memory can hold many more screens than the alternative of regular (640K) memory. Extended (raw) memory is not used presently. This command may be issued at any time, and changing the kind will remove the existing rollback buffer and a new one will be created when Connect mode is entered. 78. Add command SET TERMINAL CODE-PAGE . This selects a Code Page indentification other than that provided by DOS, and it applies only to terminal emulation processes. There is no support at this time for Shift-JIS (Japanese) in the terminal emulator. 79. Add Kermit environment PATH, on the right side of a SET KERMIT= line. PATH is followed by a space and a directory where Kermit will search if a file is not located in the current directory. If the file is not in this PATH directory then the search continues with DOS' PATH string. 80. Place keyboard verb \knethold (suspend certain classes of network connections) on key ALT-Z (for snoozing). In previous editions it was on ALT-N which is presently assigned to verb \knextsession. 81. Add Tseng Labs ET4000 SVGA video chips to the set known by Kermit for switching to 132x25 text mode. 82. Allow EGA/VGA Tektronix graphics screens to be preserved in expanded memory, if and only if the screen rollback buffer is allowed to use expanded memory. Otherwise store screens in the upper half of video memory as previously. Storing in expanded memory means 640x480 (VGA) graphics images may be retained completely rather than losing the bottom few lines from video memory storage limitations. An EGA (640x350) screen requires 112KB and a VGA requires 160KB. If graphics work is changed from one to the other then the old screen is lost when expanded memory is used. CGA graphics screens are not preserved, nor are simulated text mode screens. 82. Add VESA Bios compatible video boards to the kinds known for switching to 132x25 terminal emulation screens. 83. Changes to the terminal emulation handling of dicritical marks and other special output characters. Add keyboard verb \kCompose which is an alias for existing \kdgSPCL. This key is a prefix which causes the next two outgoing bytes to be compared to a translation table and a new byte is sent instead. Data General D463 and D470 terminals use either DG International or Latin-1 character sets, depending on which keyboard language is active. Non-Data General terminal emulations in Kermit use Latin-1 only. When the Compose key is pressed the terminal emulation status line will show "C" at the far right until two more keystrokes have been accumulated. If those keystrokes have a matching table entry a new byte is sent and the "C" is removed; otherwise "C" is removed and accumulated material is discarded (by DEC's rules on the matter). File MSVIBM.VT has the table of keystrokes and what is sent. We do not yet support the vast array of Digital Compose sequences. 84. Add command SET TCP/IP DEBUG-OPTIONS {ON, OFF}, default is off, to display Telnet Options negotiations of the internal TCP/IP stack.