home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
msr313src.tar.gz
/
msr313src.tar
/
msr312.upd
< prev
next >
Wrap
Text File
|
1992-09-24
|
25KB
|
562 lines
File MSR312.UPD 19 August 1992
MS-DOS KERMIT 3.12 UPDATE NOTES
Author: Professor Joe R. Doupnik, Utah State University, Logan, UT, USA
Use this file as a supplement to the MS-DOS Kermit 3.11 documentation:
Christine M. Gianone, "Using MS-DOS Kermit", Second Edition, Digital Press,
Bedford, MA, 1991, 345 pages. Packaged with version 3.11 of MS-DOS Kermit
for the IBM PC, PS/2, and compatibles on a 5.25-inch diskette.
Order Number: EY-H893E-DP
Digital Press ISBN: 1-55558-082-3
Prentice Hall ISBN: 0-13-952276-X
Internation Edition Order Number: EY-H893E-DI
International Prentice Hall ISBN: 0-13-953043-6
US single-copy price: $34.95; quantity discounts available. Available in
computer bookstores or directly from Digital Press. In the USA, call
Digital Press toll-free 1-800-344-4825 to order; major credit cards
accepted. Overseas, order through your bookstore or your local Digital
Equipment Corporation branch.
A German-language edition is also available:
Christine M. Gianone, "MS-DOS Kermit, Das universelle
Kommunikationsprogramm", Verlag Heinz Heise, Hannover, Germany (1991), 414
pages. Packaged with version 3.11 of MS-DOS Kermit for the IBM PC, PS/2,
and compatibles on a 5.25-inch diskette, including German language help
files. Price: DM 69,00. ISBN 3-88229-006-4
And a French-language edition is in preparation by Schiefer & Cie.,
Versailles; publication expected Fall 1992.
The English-language edition can also be ordered from:
Kermit Development and Distribution
Columbia University Center for Computing Activities
612 West 115th Street
New York, NY 10025 USA
Telephone: (USA) 212 854-3703
Domestic and overseas orders accepted. Price: $34.95 (US, Canada, and
Mexico), $45 elsewhere. Orders must be prepaid by check in US dollars.
Add $10 to add a 3.5-inch Distribution diskette. Price includes shipping.
Do not include sales tax.
PATCHES
Version 3.12 includes the corrections of the MS-DOS Kermit 3.11 patch file:
Patch 1 Optional.
Patch 2 Corrected unwanted double echo from Telnet negotiations.
Patch 3 correct cursor indexing problem with scrolling region setup
Patch 4 nested curly brace matching
Patch 5 fix skipped reports to host
Patch 6 correct 8-bit command end of transparent print, print report
Patch 7 correct use of CR/LF with parity on networks
Patch 8 correct decoding of DEC UDK hex characters
Patch 9 work around problem in TES v2.2/R8 which clobbers Kermit
NEW FEATURES
TCP/IP Telnet
-------------
1. Add direct support for Novell ODI board drivers. This is transparently
used if a Packet Driver is not found. No extra protocol shim is needed.
Frame types usable are limited by the board so they "should" include
Ethernet_II (Blue Book, regular), 802.3, 802.2, 802.2 with SNAP header,
Token Ring, and perhaps Arcnet. The ODI interface will be tried if a
Packet Driver is not found, and it can be selected in preference to a PD
interface by using command:
SET TCP/IP PACKET-DRIVER-INTERRUPT ODI
where "ODI" replaces the interrupt number of a Packet Driver.
For ODI, file NET.CFG should have the lines "Protocol IP etc" as shown
below as an example:
# File NET.CFG, example
PB buffers=10
show dots=on
Link Support
buffers 6 1514
MemPool 2048
Link Driver SMCPLUS
Port 280 20
Mem 000CA000 2000/10
Int 7
frame Ethernet_II
Protocol IPX 8137 Ethernet_II
Protocol IP 0800 Ethernet_II
Protocol ARP 0806 Ethernet_II
Protocol RARP 8035 Ethernet_II
There is the question of which board Kermit (or IPX or other application)
will use if two or more boards are available. The answer discovered from
experiments is in several steps. The application wishes to find a board
which supports "its protocol", meaning lines such as:
Protocol IPX 8137 Ethernet_II
or:
Protocol IP 0800 Ethernet_II
in a Link Driver section of NET.CFG. The protocol in this case is
character string "IPX" or "IP". There may be several board supporting the
same frame (Ethernet_II in these examples) required by that protocol.
The default method of finding a board is the application chooses "the first
board" offering a suitable frame, regardless of whether or not the Protocol
IPX etc line is present for that board. The "first" part refers not to the
contents of NET.CFG but to the order in which board drivers are loaded at
DOS level. So the indented (important to note the indentation) protocol
lines tell ODI which frame a protocol needs, and a TYPE to use for
recognizing packets, but the lines do not identify a particular board. I
know, it seems to be counterintutitive. However, it is probably wise to
include the lines for each candidate board.
To target a particular board a separate main section is used in NET.CFG.
The section starts with the word Protocol against the left margin and has
BIND indented beneath it, like this,
Protocol IPX starts in column 1 to create main sec
bind smcplus interior must be indented
Kermit uses two forms of this main section, to bind to the first board
whose driver name is listed after the word "bind", or to a particular board
in DOS loading order. The Protocol line uses keyword Kermit so that Kermit
knows which of several such to examine. Examples are:
Protocol Kermit this section is for Kermit
bind exos bind to first driver named exos
or:
Protocol Kermit this section is for Kermit
bind #2 bind to the board loaded second
Kermit considers the text in these sections to be case insensitive. The
#<digit> construction must not have a separation between the number sign
(#) and the digit. The #<digit> case is normally used when two or more
boards share the same driver and thus are not distinguishable by name
alone. A sample STARTNET.BAT file might look like this:
c:\lsl LSL is always loaded before boards
c:\smcplus.com SMC/WD8003E board, the first
c:\exos.com EXOS-205T board, the second
rem c:\odinsup Odinsup can coexist with Kermit
rem c:\odipkt 0 96 Odipkt can coexist with Kermit
c:\ipxodi IPX is always loaded after boards
c:\bnetx ps=my-preferred-server Burst mode NETX loads after IPX
If both exos and smcplus boards offer frame Ethernet_II, Kermit will choose
the first loaded board, smcplus, in lieu of a BIND command. Putting the
section "Protocol Kermit, bind <board name or number>" anywhere in NET.CFG
selects a particular board for Kermit.
Kermit requires three "protocols", IP, ARP, and optionally RARP as shown
above. The frame types can be anything the board will support: Ethernet,
Token Ring, Arcnet, all IEEE 802.2 based frames etc. ODI will complain if
the frame type cannot support these protocols. A complete NET.CFG file
using two boards is shown below.
# File NET.CFG, an example with two boards
PB buffers=10
show dots=on
# all main sections must start in column 1, indent local material.
# Protocol "IPX" is for Novell's IPXODI
Protocol IPX
Bind EXOS
# Protocol "Kermit" is for MS-DOS Kermit
Protocol KERMIT
Bind EXOS
Link Support
buffers 6 1514
MemPool 2048
Link Driver exos
Port 310 20
Mem 000D0000 400
Int 5
frame Ethernet_II
Protocol IPX 8137 Ethernet_II
Protocol IP 0800 Ethernet_II
Protocol ARP 0806 Ethernet_II
Protocol RARP 8035 Ethernet_II
Link Driver SMCPLUS
Port 280 20
Mem 000CA000 2000/10
Int 7
frame Ethernet_II
frame Ethernet_Snap
Protocol IPX 8137 Ethernet_II
Protocol IP 0800 Ethernet_II
Protocol ARP 0806 Ethernet_II
Protocol RARP 8035 Ethernet_II
# Protocol "TCPIP" is for Novell's Lan WorkPlace for DOS
Protocol TCPIP
ip_address 129.123.1.99
ip_router 129.123.1.254
ip_netmask 255.255.255.0
tcp_sockets 8
udp_sockets 8
raw_sockets 1
nb_sessions 4
nb_commands 8
nb_adapter 0
nb_domain usu.edu
As a usual reminder, only one protocol stack of a given kind can be used
over the same board at the same time. At the moment there is no Windows
support for this ODI coupling. Throughput is about the same as with a
Packet Driver, and incoming packets are not dropped.
2. Add support for SLIP (IP over serial links). A SLIP Packet Driver is
required, such as that from the Crynwyr (formerly Clarkson) Collection. The
Crynwyr packet driver SLIP8250 was improved to avoid lost interrupts. SLIP
is Packet Driver Class 6. Kermit changes its internal TCP/IP timers when
real SLIP is used and thus sends fewer packets than would be expected with
Ethernet timing. Packet Driver ETHERSLIP by Michael Martineau also works
fine. Etherslip behaves like an Ethernet Packet Driver by internally
faking ARPs and Ethernet headers; the TCP/IP program thinks it is using
Ethernet.
3. Add optional argument "port" to command SET PORT TCP host port. Port
defaults to 23, the Telnet port. Value 25 is for SMTP mail and is
forbidden to reduce incidences of faked mail. Port defaults to 23 unless a
value is given on the SET PORT TCP/IP command line.
4. Add Telnet server mode. This mode can be invoked two ways.
a) SET PORT TCP/IP * port. The "*" identifies the connection as accept
"any client". CONNECT or SERVER or script commands may follow to open
the communications pathway. Saying Connect forms a terminal to terminal
connection, not a remote terminal to local DOS connection.
b) SET PORT TCP/IP, SERVER. Provides Kermit to Kermit file transfers.
Port 25 is forbidden and will be translated into default port 23.
Only one client may be served at a time.
5. Add command SET TCP/IP PACKET-DRIVER-INTERRUPT <value> to specify a
particular interrupt to be used for a Packet Driver, vs searching for
the PD. The operational value is shown on the SHOW COMMUNICATIONS screen.
Note that if <value> is "ODI" then the ODI driver will be used instead.
6. Revise Telnet Options negotiations to work more smoothly. Add immediate
feedback of local-echo status and a much improved algorithm for negotiating
it (thanks to Frank da Cruz).
7. Add Options report of display size, available if the host requests it,
as per RFC-1073.
8. Add command SET TCP/IP TELNET-TERM-TYPE <word> to use this word as the
terminal type reported to Telnet hosts as a Telnet Option. Otherwise
Kermit automatically uses one of the following strings matching the
current terminal emulation:
"H-19", "VT52", "VT100", "VT102", "VT220", "VT320", "TEK4014"," VIP7809",
"PT200", and "UNKNOWN".
9. Add better end-of-line sending when using Telnet. Always send CR as CR LF,
and send accumulated material when CR is entered at the keyboard.
10. Remove use of Int 14h to communicate between the internal Telnet and main
body parts of Kermit. This frees Int 14h for uses such as by a speech
synthesizer.
11. Speed up the process of obtaining the host IP address from Domain Name
Servers.
12. Fix protocol code for sending TCP Reset packets.
13. Add reply mechanism for Traceroute requests.
14. Add a workaround for a bug discovered in the combination of Kermit
over ODIPKT over ODI over an Ethernet board. The ODI drivers tested
here corrupt a register (DI) used by the Kermit Telnet C code and
that prevented, among other things, resolving host names via a DNS.
Regular Packet Drivers (including dis_pkt and winpkt) have not shown
this fault. Also TCP/IP traffic through the pair of ODIPKT and ODI shows
high rates of dropped incoming packets before they should get to Kermit;
the reason is not known.
15. Add a small safety factor in Telnet Options code, as a copy of C-Kermit
material by Frank da Cruz.
16. Add full support for ICMP Redirect messages, which arise when two or
more gateways share the wire with the client, and one tells us to use
another gateway.
17. By popular demand revise the action of HANGUP to leave modem signal DTR
off (down) until the port is needed again.
Other communications paths
--------------------------
1. Revise DEC Pathworks LAT sections to enable use of LAT in expanded memory.
Also detect Pathworks version 3 and treat it as version 2 rather than 4.
2. Revise Novell Lan WorkPlace for DOS support to work with both v3.5 and
v4 TELAPI, without the need of a Novell conversion utility. Two copies
of Kermit have successfully used TELAPI with MS Windows Enhanced mode.
3. DESQview corrections and enhancements. Fix two items causing trouble
with the more recent DESQviews: a stray interrupt problem and keeping EGA
cursors from being set to mid-character cell. Add sensitivity to the
formal background screen size supported by DV and adjust Kermit's screen
accordingly.
4. Revise slightly the sequence of testing IRQ values for serial ports to
avoid testing IRQ 4 first if COM1 is not the desired port.
5. Add workaround for Interconnections Inc program TES version 2.2 release 8.
6. Add workaround for Western Digital's Packet Driver program 8003PKDR.EXE.
This program is very very selective about the packet TYPEs it will accept,
such that a PD version of Novell's IPX (with the BYU shell materials) is
rejected. Recommend using the Crynwr (nee Clarkson) PD Collection program
WD8003E.COM instead.
7. If the user attempts to exit from Kermit while a network connection is
still active then inform the user and ask for confirmation to proceed. As
graceful a network shutdown as reasonable will be done if the exit process
is to continue.
8. Modify code used to delay between UART chip accesses to work better with
the fastest 486 machines.
Terminal emulation
------------------
1. Add terminal type of Prime PT200. This is executed as a VT320 with small
corrections for the real Prime PT200. The identification sent to the host
is 17 byte string ESCAPE "! ~0 ~..6~C~2 ~$", without the pair of double
quotes but with the three embedded spaces.
2. Add command SET TERMINAL OUTPUT-SHIFT {NONE, AUTOMATIC, SI/SO, SS2, SS3},
default NONE.
Selects the table shifting commands surrounding a character sent to the
host when, and only when, parity is other than none and the character has
its high bit set.
The idea is to form a virtual 8-bit wide communications channel by sending
7-bit material telling the host that the data byte came from the right
hand (high bit set) side of one of the character sets G1, G2, or G3. The
host must obey ISO 2022 rules and have the same character set loaded into
it's right hand table.
Option NONE, the default, says do nothing about the matter and thus the
character's high bit will be lost and replaced by a parity bit. The other
options also lose the high bit but signal the host several ways.
Prefix SI means the following byte comes from set G1, and the character
is followed by SO which means shift back to G0; these form a triplet.
Prefix SS2 (ESCAPE N) means the following byte comes from set G2, and
similarly prefix SS3 (ESCAPE P) means from set G3. SS2 and SS3 are single
shifts which apply only for the following character.
Option AUTO finds the character set table G1, G2 or G3 being used as the
active right half (high bit set) of the complete set and uses SI/SO, SS2,
or SS3 appropriately. Note that VT300 level terminals use G2 as the
normal right half set, but VT100 level terminals use G1 but not G2 nor G3.
3. Correctly recognize extended (bold) line drawing patterns for Tek drawing.
4. NOTICE: use of ESC 1 and ESC 2 to enter and leave Tek mode is disabled
in this release of MS-DOS Kermit. This pair has multiple uses, depending
upon who wrote the mainframe Tek program, and we have had reports of
difficulties when programs use this pair for selecting (against DEC's
advise) a DEC Tek mode character set size on VT340 terminals.
File transfer
-------------
1. Add SET TRANSLATION CHARACTER-SET {READABLE, INVERTIBLE}. The default is
READABLE. INVERTIBLE is the new form and attempts to use code points as
much in common between the transfer and file character sets as possible,
with the transfer character set having priority. Thus Invertible can create
code points which do not display correctly on the destination machine but
yield the closest match when a file is sent back to the originator. Tables
are from Frank da Cruz and are consistent with C-Kermit and IBM mainframe
Kermit.
2. Add SET TRANSFER CHARACTER-SET Japanese-EUC, from Hirofumi Fujii. The file
character set is automatically Katakana or Shift-JIS, based on the contents
of the file. The transfer (wire) character set is Japanese-EUC. Single and
double byte codes are supported. The character set identification is
I14/87/13, in Kermit terminology.
Specifying a File character set of Shift-JIS forces use of Transfer
character set Japanese-EUC, and vice versa. Reception of a Japanese-EUC
file (as denoted in the attributes packets) also changes the file character
set to Shift-JIS. IBM Code Page CP932 is used for Shift-JIS.
3. Add SET TRANSFER LOCKING-SHIFT {OFF, ON, FORCED}. Parity setting of other
than NONE is required to negotiate locking-shifts in file transfers. The
default state is ON, but the default parity setting is NONE. FORCED sends
or receives a file with locking-shifts active whether or not the other
Kermit agrees and regardless of parity state; beware.
A correlary addition is using ASCII control character DLE to prefix the
presence of DLE, SI, and SO characters in the data stream.
Locking shifts use byte SO "lock shift" to imply that all following data
bytes have their high bit set. Appearance of SI reverses the shift to
normal, much like Caps Lock on a keyboard. Thus a lock shift replaces the
occurence of the 8-bit prefix character before each applicable byte in a
sequence of them. High bit prefixing occurs when the communications
channel is only 7-bits wide; thus with an 8-bit wide channel there is no
reason to use either prefixes or locking shifts.
4. Create zero-length files if the host sends them.
5. Allow commands SET SEND (and RECEIVE) START-OF-PACKET to use printable
characters in addition to the normal control characters. This is to
accommodate certain IBM mainframe front ends which destroy all control
characters and thus prevent normal Kermit packets from traveling. There
is a warning attached to the help for these commands saying that use of
printable SOP characters reduces the strength of the protocol. Avoid
printable SOP characters if at all possible. The default SOP character
remains Control-A.
6. Correct a problem affecting some BBS file downloads. If the remote Kermit
server thinks the communications line is 8-bits wide, the line is really
7-bits wide, and the server is given the command SEND filespec, and the
MS-DOS Kermit client is given the command RECEIVE, then (still there?) make
sure MS-DOS Kermit requests quoting of bytes with their high bit set by SET
PARITY to SPACE or MARK etc. Previous recent MS-DOS Kermit programs would
not make the request with the above sequence of events and the file
transfer could fail because of lost high bits. This effect has been noted
with Compuserve where MARK parity is needed but the Compuserve Kermit is
unaware of the situation (why?). Now the client can force 8-bit quoting.
Normally both Kermits should be set to the same parity as the
communications link.
Other Commands
---------------
1. Add IF [NOT] INPATH <filename> command. This tests whether the file is
found in the current directory or in those in the PATH statement.
IF EXIST <filename> checks only the current directory.
2. Correct TRANSMIT command to wait for handshake character from the host.
Add SET TRANSMIT PAUSE <value> to wait "pause" milliseconds after sending
a line.
3. SET PROMPT <string> now limits the string to 60 bytes rather than letting
a buffer overflow and damaging other things.
4. Add Script word \L for send a long BREAK in OUTPUT strings. This matches
\B for a regular length BREAK. A long BREAK is long only for RS232C
connections; networks see both as the same (regular) thing.
5. Add keyword "O" as a snyonym for OUTPUT.
6. Add variable \v(terminal) which reports the current terminal type.
7. Prevent command STOP (exit all Take files and macros) from also exiting
the DOS level command line (which becomes the first internal macro
upon Kermit startup).
8. Add commands "INCREMENT <variable> <number>" and "DECREMENT <variable>
<number>". The default <number> is one. The variable can be either the
text subsitution kind, \%<character>, or the name of a Kermit macro; its
contents must be numeric. The range of values can be 0..65535. If either
end of the range is exceeded the variable is not changed and the command
returns a status of FAILURE. If the variable is not numeric the command
also fails.
9. Keyword DO removed from prompt level "?" help display. The word is archaic
and the screen space is given to INC/DEC variable.
10. Correct status report from WAIT command when no time interval is given.
11. Close log files when asked to do so, not just when exiting Kermit.
12. Add optional argument "path" to the Patch command, meaning search only
that directory for file mskermit.pch. Example: PATCH C:\KERMIT.
13. Modify the way lexical comparison commands IF LLT, IF LGT operate. Of
the two strings being compared use the length of the shortest, so that
"IF LGT d abc echo SUCCESS" will echo "SUCCESS" because d is lexically
greater than a. Previously LLT and LGT would fail if the strings lengths
differed. IF EQUAL still requires equal lengths strings for success.
14. Add optional numerical argument to the STOP command to return that value
as the command return status value, \v(status), and place the lower 8
bits in Kermit's \v(errorlevel) variable. For reference, the status
and errorlevel values generated internally by Kermit are currently:
0 success condition
1 send file failed
2 get/receive file failed
4 Remote command failed
8 Take file failure
16 general command failure
128 user intervention (aka Control-C)
These may occur as summations (they are individual bits in a byte).
15. Add option BLANK-FREE-2 to the command SET BLOCK-CHECK. This is
a special case of encoding two-byte checksums so that blank (space)
characters do not appear as checksum codes. For use with IBM mainframe
frontends. Avoid this choice for normal use.
16. Correct a subtle bug of command STOP not being obeyed in a top-level
macro or TAKE file if Kermit were invoked with command STAY on the DOS
command line. Thanks to Skip Knoble of Penn State for identifying the
conditions for this to occur.
17. Add processing of the command line submitted to DOS by RUN so that
literal or \44 numerical commas may be seen by DOS. Example:
define test run {echo this is a real comma, and a numerical one\44}
The RUN command was an exception to the rule on such processing.
18. (there is no 18)
19. Modify the GOTO script command to sense Control-C to break out of
loops without also consuming other keystrokes. Now if other characters
are typed and a break out is necessary then type Control-Break so that
typeahead is flushed and the implicit Control-C is observed.
20. Append a backslash, \, to the end of the \v(directory) variable string
if one is not already present. This will permit forming a full filename
using Kermit string substitution variables such as \v(dir)myfile.txt.
Microsoft Windows
-----------------
1. Packet Driver shim WINPKT was made available to act as a second Packet
Driver to interface between the real PD and applications running in
Windows. WINPKT is able to recognize the Windows Enhanced mode virtual
machine in which the program is running and to invoke that machine before
delivering a packet to the program. This eliminates the need to "fix task
in memory" in its PIF file and eliminates the Crynwr (nee Clarkson) PD
command argument "-w". The latter simply rejects a packet if the program
is not immediately active. WINPKT was originally written by Roger F. James
and was revised by Joe Doupnik. The mechanisms will also appear in the
next edition of the shim DIS_PKT (PD interface while using NDIS) from Joe
Doupnik.
My special thanks for assistance, contributions, and suggestions from
Frank da Cruz, Hirofumi Fujii, John Chandler, James Sturdevant,
Andre Asselin, Jim Fregin, Jim Reisert, Rick Sladkey, Richard Stanton,
Bertil Stenstrom, Konstantin Vinogradov, Robert Weiner;
and from companies:
Digital Equipment Corporation, Quarterdeck Online Systems, Novell,
AT&T, and Interconnections.
(End of MSR312.UPD)