home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
msr313src.tar.gz
/
msr313src.tar
/
msr229.ann
< prev
next >
Wrap
Text File
|
1988-08-16
|
69KB
|
1,427 lines
MS-DOS Kermit Version 2.29 Release Notes, May 26, 1986:
New Features:
. Full DOS 2.0 file support; device and path may be included in any
file specification in any Kermit command. DOS 1.x support fully removed.
Version 2.29 will not run under DOS 1.x (neither would 2.28).
. On the IBM PC family, emulation of VT52, H19, VT102, and dumb terminal (the
latter to allow coresidence with a loadable console driver like [N]ANSI.SYS).
Support for host control of 25th line during terminal emulation. Increased
screen memory for rollback, dynamically sized to allow for varying memory
capacity (about 8K required per screenful). Program needs at least 60K to
run, will use as much as 100K if available, plus more when PUSH, SPACE, or
other commands that invoke DOS or other programs are used.
. VT102 emulation on IBM PC family includes all major VT102 features except
132 columns, smooth scrolling, printer control, and various diagnostic
functions. H19/VT52 emulation is more complete than in previous versions.
VT102 is equivalent to VT100 with AVO, plus line and character insert and
delete functions, and local echo capability, i.e. it is a strict superset
of the VT100, and is upwards compatible with ti.
. The MS-DOS Kermit server responds to advanced server commands (REMOTE DIR,
REMOTE HOST, REMOTE DEL, REMOTE TYPE, REMOTE CWD, etc). But because
certain DOS "interactions" can't be fully disabled, these commands can
sometimes cause the server to hang (like when DOS asks "Abort, Retry,
Ignore?" at the real console).
. Improved file name handling, to prevent destruction of directory,
system, hidden, read-only, and volume label files. GET and RECEIVE allow
device and path to be prefixed to incoming filename. File renaming algorithm
much improved for conversion of incoming file names to DOS conventions, and
for filename collision avoidance. Only valid DOS filenames are created or
used for new files.
. On the IBM PC family, compatibility with TopView, DesqView, and MS Windows,
and with the IBM Extended and Professional Graphics Adapters.
. Screen save (on the DEC Rainbow and IBM family only). <esc-char>F
appends current screen to file KERMIT.SCN; use SET DUMP to change screen
dump file (or device) name. Differs from LOG in that escape codes are
not saved, only the text itself (sans attributes). Use in conjunction
with screen rollback to save the last several screens.
. New SET TERMINAL command for setting terminal type and parameters,
including foreground and background color and intensity on systems that
support it (currently only for IBM family). Also, explicit control over
whether program should wait for vertical retrace cycle to write screen (snow
removal).
. New file transfer display options: SET DISPLAY QUIET, REGULAR, SERIAL.
. Program segments are now ordered independently of MASM/LINK version, without
any special switches required for building, which should clear up all the
system crashes that occurred when people ran the program after building it
from source without the appropriate switches.
. Assembles with MS MASM 1.25, IBM MASM 2.0 aka MS MASM 3.0, and MS MASM 4.0,
as well as Intel RMX assembler.
. Increased screen rollback memory on DEC Rainbow.
. Heath/Zenith-100 port i/o now interrupt driven, therefore much faster.
. COMMENT command, for documenting TAKE files.
. SET RETRY n command for changing the packet retry threshold.
. HANGUP command for dropping DTR & RTS, to signal modem to hang up phone
(IBM family only).
. LOG command now also logs debugging information (packets, terminal session)
if SET DEBUG ON command has been given.
. All known bugs in 2.28 fixed including:
Severe problems if program assembled and linked improperly
GET command filename confusion
Failure to warn when run under DOS 1.x
Many problems with file renaming, name truncation, etc.
Exported filenames with no filetype no longer end with period
SET DEST PRINTER didn't work correctly
Problems with dynamic memory allocation causing system crashes
Problems with dynamic memory allocation requiring more memory than necessary
Problems with file transfer display & mode line display on early PC, Compaq
Problem with <esc-char>? display on early PC, Compaq
Heath-19 emulation bug regarding receipt of CR or LF at col 80 vs autowrap
The "C?" bug in the command parser
^C of a file transfer now honors SET INCOMPLETE KEEP
Lost clusters on disk if BYE command given with log file open
RUN command did not default file types .EXE, .COM, .BAT
Long debug lines would overflow screen
Overruns of half duplex systems at high baud rates
Control-prefix operands in packets not range checked
Interrupt and performance problems on IBM PC family
Numbers sometimes disappearing from file transfer display
Problems parsing SET PORT options in generic MS-DOS Kermit
Program crashes with "divide overflow" when transferring very long file
Tendency to hangup Hayes 1200B internal modem upon startup
Problems when padding with more than 2 or 3 characters
Known limititations of version 2.29:
. On the IBM family, SET MODE OFF, SET MODE ON sequences can produce
permanent, normal-video mode line.
. On the IBM family, SET DEBUG ON not only selects packet display during file
transfer, but also control-character/escape-sequence display during
terminal emulation. There are no separate controls for these functions.
. On systems that use "grey keys" or F-keys for functions like BREAK, modeline
toggle, screen scroll, or emulator reset, there is no way to move these
functions to other keys. Therefore, if "traditional" (e.g. keypad) values
are to be assigned to these keys using SET KEY, their built-in Kermit
functions are lost.
. Certain keys on the IBM PC keyboard produce no scan code detectable by
Kermit, e.g. keypad 5, control-5, etc., and therefore cannot be redefined
with SET KEY SCAN. Additional keys on the new "enhanced" keyboard
(such as F11 and F12) behave similarly.
. On some systems, the message "Undefined baud rate" may appear when program
is started. This just means you should issue a SET SPEED command.
. Semicolons can not be used in filenames in GET commands from TAKE files,
because within TAKE files, semicolons are treated as the start of a comment.
. Caution should be used when invoking certain terminate-and-stay-resident
programs while PUSHed from Kermit (e.g. using the PRINT command for the first
time), as not all of these programs observe proper etiquette for allocating
and freeing memory.
. Each command macro definition is limited to 132 characters in length.
Longer macros can be formed by chaining (end one definition with a DO
for the next).
. On early (original motherboard & BIOS) PCs, and on systems that mimic them
(e.g. Compaq), the cursor may assume a strange shape upon return from
CONNECT. This is caused by a bug in the early BIOS, which stored cursor
attributes incorrectly.
. MS-DOS Kermit cannot read commands from a .BAT file. It only reads them
from the keyboard. It may be run in the batch, but only using command
line arguments (possibly invoking TAKE files).
Incompatibilities with previous releases:
. SET HEATH gone, replaced by SET TERMINAL { HEATH, VT102, etc }
. SET AUTOWRAP gone, replaced by SET TERMINAL WRAP
. SET REMOTE ON/OFF changed to SET DISPLAY OFF/ON (but SET REMOTE still there)
. Filename completion (recognition) no longer works, because of support for
fully qualified DOS 2.0 pathnames.
Tested successfully on the following systems:
. IBM PC, XT, AT, PCjr, Portable PC, Convertible PC, and RT with AT DOS option
. Compaq, Z150, Z160, and other IBM compatibles
. DEC Rainbow
. Heath/Zenith-100
. HP-150, HP-110, and Portable Plus
. NEC APC and APC-3
. Victor 9000 / Sirius 1
. ACT Apricot
. Sanyo MBC 550
. Texas Instruments Professional PC
. Generic MS-DOS
. Intel 300 series with iRMX-86
Needs testing on:
. Wang PC
. Olivetti M24 PC
. Grid Compass II
. DECmate-II,III with XPU (MS-DOS) option
IBM PC family H19 and VT102 emulators tested successfully with:
. EMACS (DEC-20, CCA, GNU, and others, using line/char insert/delete)
. EDT, PHONE (VAX/VMS) (what else on VMS? TPU?)
. 1-800-DEC-DEMO
. UNIX vi, sysline, etc
. Various torture tests
What's not in 2.29 (wish list for future releases):
. TRANSMIT command for raw file upload
. Login scripts
. DIAL command, telephone directory
. Transaction file logging.
. A way to accept default values for omitted trailing fields in commands.
. A better built-in help facility.
. VT102 ANSI printer control
. Long packets, sliding windows, or attribute packets
. Tektronix or other graphics terminal emulation (except in TI Pro & Victor)
. Redefinable keys at Kermit-MS> prompt level
. Control over display of 8-bit characters during CONNECT
. Pause at end of screen during local TYPE
. A simple way to make Alt = Meta, without many many SET KEY commands
. Piped operation a la UNIX (e.g. compress foo.bar | kermit send)
. Integration with C-Kermit protocol modules
Request contribution of TopView .PIF file, Desqview and Windows configuration
files, verification that 2.29 works on the as-yet untested systems, along with
.BOO files, installation instructions, etc., for those systems.
Notes on MS Kermit 2.29B
19 Feb 1987
This most recent version of MS Kermit 2.29 has support for VT102
printer commands, Long packets, and Scripts. Additionally, it has corrections
to most problems known at this time.
A new kind of MS Kermit, MSTCLO.BOO, is available for near clones
of IBM PC's but whose serial port hardware is not similar. Here is a
description from the originator, Glenn Everhart of RCA Labs:
This module is derived from MSXIBM.ASM and is intended for IBM PC
near-clones that differ in their serial I/O but emulate the IBM
BIOS. Such machines include Seequa Chameleon, DG/1, and others.
The idea is to use the VT100 emulation (which will work) but
use BIOS for all serial I/O. This is not interrupt driven and so
will (unfortunately) not be able to keep up well at high baud
rates. Nevertheless, it will be far better than the old Seequa
version which didn't emulate anything.
This version will also work on IBM PCs that need to use something other than
the internal asynchronous adapter for communications, like a Token Ring asynchronous communication server via NETBIOS.
BUG FIXES AND INTERNAL IMPROVEMENTS:
Two important problems with MS Kermit 2.29 (no letter) were an
incompatibility with Hayes internal modems, and related modems: the modem
would hangup the phone when a file transfer completed or Connect mode
were exited, and secondly, null characters could be sent at the start of
a file transfer or when Connect mode was entered. It seems that several
mainframes regard null characters as important signals rather than as fillers.
We have tested this version with a real Hayes 1200B modem with satisfactory
results.
There were numerous small problems throughout MS Kermit, as might
be expected, and those identified to date have been addressed. One important
one was the serial port was left active if one PUSHed to DOS while in Connect
mode.
Serious DOS errors are trapped by Kermit to prevent Kermit from being
aborted with the serial port interrupt alive and with a couple of other items
redirected to Kermit itself. The most common such error is "Drive Not Ready."
Previously, these conditions would invoke the normal DOS Critical Error proc
which would request "Abort, Retry, Ignore?" and would abort the program if
Abort were chosen. Now, Kermit exercises a fourth option, Fail the Operation,
when these errors occur. Procedures spawning a second copy of COMMAND.COM
(DIR, etc) still can yield the A/R/I message but it is harmless in this case.
However, if such a message arises while Kermit is in Server mode a human must
still type the answer locally. The implementation replaces the normal DOS
Control-Break (^C) and Critical Error handlers with Kermit's own handlers and
restores the originals when Kermit exits.
Numerous small bugs concerning negotiated parameters (8 bit quoting,
Block check types, etc) have been fixed; these mainly concerned Server mode
operations. The terminal emulator no longer responds to the answer-back msg
request; there is no answer-back message in the emulator. Screen handling
has been improved internally, but it still has a few glitches.
While in Connect mode 8 bit received data will be passed through to
the terminal processor if the Parity type is None. If Debugging is ON then
characters with their high bit set will be displayed as a tilde and then a
code for the lower 7 bits; i.e., 10000001b is displayed as ~^A. Note: due
to network quirks these characters may be mistranslated; the tilde is the
funny wiggle character above the accent mark and the control symbol is a
caret.
ADDITION TO SET DISPLAY COMMAND:
Set Display Regular | Serial | Quiet | 7-bit | 8-bit
The keywords 7-bit and 8-bit have been added to control displays
of characters in non-file transfer modes. 7-bit is the default and 8-bit
becomes meaningless when parity is other than None. The Set Display
command accepts two keywords in one command, processed left to right.
ADDITION TO SET PROMPT COMMAND:
Special characters, such as escape, can be included in text of
Kermit's prompt by specifying them as octal numbers in the form \ooo
where o is an octal digit. Escape itself is \33. To return to Kermit's
default prompt give the Set Prompt command without text. The replacement
prompt can be up to 80 characters long.
ANSI PRINTER SUPPORT:
For VT102 emulator in IBM and NEC AP3 versions. New escape sequences:
ESC [ i Print the entire screen (24 user lines) or just the text
in the scrolling region, depending on ESC [ ? 19 h/l below.
ESC [ 0 i is an equivalent command.
ESC [ ? 1 i Print the line containing the cursor.
ESC [ 4 i Disable Controller print. Cursor returns to its position
when ESC [ 5 i was encountered earlier.
ESC [ ? 4 i Disable Auto Print.
ESC [ 5 i Enable Controller print; incoming text is sent to printer but
not to the screen. Escape sequences are recognized and acted
upon but are not printed. Cursor movement cannot be prevented.
ESC [ ? 5 i Enable Auto Print; incoming text is sent to both screen and
printer. Escape sequences are recognized and acted upon but
are not printed.
ESC [ ? 18 h Set Print termination char; requests Form Feed be printed
after each Print Screen operation (ESC [ i).
ESC [ ? 18 l Reset Print termination char; no FF after Print screen.
ESC [ ? 19 h Sets print area of ESC [ i to be the whole screen (24 lines).
ESC [ ? 19 l Resets print area of ESC [ i to be just scrolling region.
ESC [ ? 15 n Request from remote host for printer status report.
ESC [ ? 10 n Response to ESC [ ? 15 n if printer is ready.
ESC [ ? 13 n Response to ESC [ ? 15 n if printer is not ready.
The print device is selected to be the system printer (system file
handle 4, LPT1) and the user has no choice in the matter. If the printer is
not ready then a message to this effect is shown on the mode line (line 25)
and the print request is skipped. Skipping is done to prevent systems from
being hung just because the printer was not plugged in or similar trivia.
Trailing spaces on each line are trimmed off to save printing time. These
print screen operations should be compatible with all the other screen to
printer operations (screen dump key, Log to PRN, DOS print screen, etc).
Startup conditions are to reset both Print termination char and screen
area bits; i.e., no FF after a print screen command and use scrolling region.
LONG PACKETS:
This version can use packets up to 1000 bytes in length. The file
sender selects the type of packet (Regular or Long) based upon the size of the
data to be sent in that particular packet; negotiations at the start of a file
transfer determine the maximum length. The receiver is prepared to accept Long
packets at any time up to a maximum length set by the user.
The command SET RECEIVE PACKET-LENGTH xxx limits the
maximum packet size; xxx can be as large as 1000. Kermit uses 94 byte
packets as its default maximum size; longer packets will be employed only if
the user gives the SET RECEIVE PACK commands above, and the other Kermit
knows how to and agrees to send them. Packet lengths greater than 94 are
accomplished using a protocol extension -- Extended Length Packets -- that may
be lacking in other Kermit programs. The SET SEND PACKET xxx command may
be used to override the other Kermit's request.
WARNING: The normal file transfer display will be fractured if you use long
packets together with SET DEBUG ON. If you want to display long packets during
file transfer, be sure to SET DISPLAY SERIAL.
PERFORMANCE:
The IBM serial port interrupt routine, buffer handler for received
chars, and the packet assembly/disassembly routines Spack and Rpack have been
completely rewritten for efficiency, Long packets, and high speed operations.
It is possible to operate at 38400 baud on a plain 4.77 MHz IBM PC provided
that the clock tic routine is not loaded with time consuming extras (Helpful
Utilities, print spoolers, screen savers, and the like). Long packet and
high efficiency code are system independent; fancy high speed operation code
is for IBM PC's and clones and the DEC Rainbow.
SCRIPTS:
A simple Kermit-style script and raw file upload facility has been
written by Jim Sturdevant and myself (he did the original version and we
developed it from there). This code is actually system independent. A quick
discussion is reproduced below, and the Kermit Help menu has further cryptic
guidance.
Here is a quick guide to scripts in MS Kermit 2.29. There are several
main script commands shown below in Upper case and yet another batch of Set
commands to establish operational parameter for scripts.
OUTPUT text
Sends the single line of text out the serial port. Spaces and tabs
are included. Control characters such as a carriage return must be stated
as an octal number preceeded by a backslash: carriage return is \15, line
feed is \12, bell is \7, and so forth. Example, dial the phone via a modem:
Output atdt 5,1234, (918) 555-1212\15
The "text" also can be the first line of a file or even from the console if
the first letter of the text is an at-sign, @filename or @con. Thus,
Output @con
reads a line from the console and sends it out the serial port.
You can also include "\b" or "\B" in your script to have it send a BREAK.
INPUT [time] text
This is a heavily used operation which reads characters from the
serial port and attempts to match them to the line of text, or times out
if it can't. A common command of this kind would be
Input 30 Username:
The sequence above waits up to 30 seconds for the pattern Username: to
appear. If it does then the next script command is executed. If it does not
appear then the script file can be told to Quit or to Proceed as if
the pattern did occur. The time field is optional and is nominally 1 second.
Selection of Quit or Proceed and the default waiting time are governed by
the Set Input command discussed below. Text may also be replaced by
at-sign filename to cause the pattern to be selected as the first line in
that file.
If the text pattern is omitted then the Input command reads
characters from the serial port, displays and then discards them.
A recent addition allows a carriage return typed at the local keyboard
to force a pattern match (for those of us with limited patience concerning
recalcerant remote hosts).
PAUSE [time]
Waits 1 second, or the number of seconds in the optional argument.
ECHO text
Simply writes the line of text on the screen. Text may contain
imbedded escape codes (e.g. VT100 sequences for Rainbow firmware
or [N]ANSI.SYS.).
CLRINP
Empties the serial port's buffer of stored but not yet read characters.
TRANSMIT filespec [prompt]
Raw file upload. Sends the named file (no wild cards) a line at a time
to the remote host. Each line is expected to end with carriage return-line
feed, and the trailing line feed is not sent. After each line Kermit waits
for a prompt character from the other side. The default prompt char is a
line feed. The command line allows the prompt to be changed to any other
character (control codes are expressed as an octal number in the form \ooo);
specifying a prompt of \0 means do not wait for a prompt. Alternatively,
pushing the local Return key simulates reception of prompt.
Trans foo.bar \7 send file "foo.bar", expect ^G as a prompt.
SET INPUT commands:
Set Input Default-timeout seconds
Changes the waiting time from 1 second to this new value.
Set Input Timeout-action Proceed or Quit
Determines whether or not the current script file is to be continued
or exited if a timeout occurs. Proceed is the default and means that timeouts
are ignored. Quit causes the current script file to be exited and control
passed to either the next higher level script file (if the present one were
invoked by such) or to Kermit's main prompt.
Set Input Case Ignore or Observe
Says whether or not to distinguish upper and lower case text when
doing a matchup in the INPUT command. Ignore causes upper and lower case
letters to be considered the same. Default is to Ignore case distinctions.
Set Input Echo On or Off
Show on the screen characters read from the serial port during the
script operation, or not. Default is On, show them.
Values of Set Input things are shown on Kermit's Status display.
Construction of a script file. Kermit has the ability to read a file,
called a Take file in Kermit-ese, and execute the contents as Kermit commands.
The Kermit command to do this is TAKE filename. Within such a file may be
another Take command, and within it yet another Take and so on. Thus, the
script is prepared as an ordinary text file and is invoked within Kermit
by saying Take filename; a complete working example is given below.
Before getting to it, however, a word or two about timeouts. If the
action on timing out is set to Quit then the current Take file is exited
whenever a timeout occurs and processing continues at any next higher level
Take file; there is no conditional branching in this script facility. Also,
Kermit looks for a particular file, MSKERMIT.INI, at startup time and
executes it as the first Take file; you may place normal startup and script
commands there as a convenience.
An example script is shown below for connecting to machine VAXB via
a modem and a Data Switch. The lines starting with Comment are ignored by
Kermit and are there as a tutorial guide. Comments may also be placed on a
line beginning with a semicolon. Upper case is used for clarity.
File LOGIN.SCP -
Comment set Kermit's baud rate to 2400
SET SPEED 2400
Comment flush any old junk
CLRINP
Comment don't display Take file commands as we go
SET TAKE OFF
Comment quit script if proper answers do not appear
SET INPUT TIMEOUT-ACTION QUIT
Comment see if modem is alive, hello modem.
OUTPUT AT\15
Comment look for its normal response
INPUT OK
Comment dial the Micom switch (from on-campus)
OUTPUT ATDT 3458\15
Comment look for phone being answered
INPUT 25 CONNECT
Comment wait 1 sec for modem to get ready
PAUSE 1
Comment then send control code carriage return,
Comment expressed as an octal number preceded by \.
OUTPUT \15
Comment wait a sec for the switch to wake up
PAUSE 1
Comment one more time so the switch recognizes our baud rate
OUTPUT \15
Comment find first part of switch's announcement
INPUT 10 slowly
Comment ignore timeouts from here on
SET INPUT TIMEOUT PROCEED
Comment find last word of the announcement
INPUT 15 CLASS
Comment tell the switch where we want to attach
OUTPUT VAXB\15
Comment look for final prompt of Go and a beep
INPUT 20 Go\7
Comment let switch get ready for our response
PAUSE 1
Comment wakeup vaxb, c/r's, slowly as instructed
OUTPUT \15
PAUSE 1
OUTPUT \15
PAUSE 1
Comment third c/r, just in case. Awaken Vaxen
OUTPUT \15
Comment look for login sequence
INPUT Username:
Comment give our username
OUTPUT ItsMeAgain\15
INPUT Password:
Comment give ourselves a prompt and read from console
ECHO \15\12Enter password:
OUTPUT @con
Comment we're in, go test for new mail msg
TAKE mail.scp
Comment go into VT102 terminal emulation mode
CONNECT
And here is file MAIL.SCP, with added comments -
Comment show serial port traffic as we go
SET TAKE ON
Comment Exit this file if timeout (no new mail)
SET INPUT TIMEOUT QUIT
Comment look for keyword Mail, timeout if none
INPUT 10 Mail
Comment must be mail if we are still here, read it
OUTPUT mail\15
LIMITATIONS OF SCRIPTS:
No variables, conditional branching, or similar features.
The terminal emulator is not active during script execution, so that
escape sequences (particularly the DEC "what kind of terminal are you?"
sequence) will not be recognized. A login script designed for VAX/VMS systems
with TERMINAL/INQUIRE should do an explicit INPUT for the enquiry string
("ESC Z", or "ESC [ 0 c") and then explicitly output the terminal ID string
(like "ESC [ ? 6 c" for the VT102. The terminal emulator is independent of the
script facility so that scripts can be a part of all MS-DOS Kermits, not just
the IBM PC version.
Sometimes 8-bit characters are displayed on the screen during script execution,
even though PARITY might be SET to other than NONE.
[End of MST22B.UPD]
Date: 7 JUN 87 21:22-MST
From: JRD@USU
Subject: 7 MSTxxx.BOO files, following.
In your queue are files dated 7 June 1987, MSK 2.29C:
mstibm.boo IBM, tested
msthp1.boo HP 110 and Portable Plus, untested
msthpx.boo HP 150 untested
mstgen.boo Generic, tested
mstgri.boo Grid Compass, untested (need a tester too)
mstz10.boo Zenith 100/200 (the S100 bus kinds) untested
mstap3.boo NEC APC III, untested (has the VT102 emulator)
To be finished here are the Victor 9000, Decmate II regular version, and
not least the regular version for the Rainbow (partly done now). Apricot
is out to the UK (Dick Carlton, rwtc%open.acs.vax@ac.uk), Sanyo 55x is out to
Bob Babcock peprbv@cfaamp.bitnet and Joe White jhw@rti.bitnet,. Rainbow/Knoell
needs rebuilding here to receive the latest improvements and will be sent
later. Wang is out to Chris Lent, currently pedham@cuccfa.bitnet. A variant
named EZP is being purged as a curiosity IBM clone of passed interest.
The "Clone" Kermit not longer exists since regular MS Kermit/IBM
now does the fancy footwork to use the Bios for serial port i/o if a real
8250 UART chip is not available. When the port is selected by Set Port ###
a message about Bios usage is displayed, if appropriate. Testing for that
chip is read-only for minimum disturbance to the host system. Should
someone Set Port COMx when no such port exists then a message is displayed
and the current port remains in force.
Other small items, en passant. The IBM version measures the cpu speed
automatically each time the serial port is opened, to provide reasonably
accurate durations for waiting and Breaks (regular 275 ms and long 1800 ms)
regardless of machine operational settings. Sort of a KI, Kermit Index.
The IBM version also adapts automatically to systems using EGA boards in
high density text modes, such as 132 columns and 43 lines, provided the
user sets these modes outside of Kermit.
Filtering of null and DEL characters has been revised so that
the VT102 emulator can send all 256 binary byte combinations to a printer
when Transparent Print is activated. The Set Translate Input table is
bypassed during Transparent Print.
The VT102 emulator is/will be in IBM, NEC APC III, Victor 9000, Wang,
and perhaps in the Sanyo version with the IBM compatible video board.
The keyboard translator and Set Translate Input table are in all
versions.
Regards,
Joe D.
==================================
File error.not
MS Kermit returns ERRORLEVEL
information for batch files.
Version 2.30 of MS Kermit returns an error code to DOS for use in
batch files as the ERRORLEVEL parameter. The codes are as follows:
0 success
1 error sending a file
2 error receiving a file
4 error executing a REMOTE command to a server
The errors are culmulative while Kermit operates; thus errorlevel of 3
indicates failure to both send and receive a file (or files) in this
session. A successful operation does not change or reduce the errorlevel.
jrd 7 June 1987
=============================
File multicom.not
Notes on operating MS Kermit/IBM
with serial ports COM3 and COM4
Joe R. Doupnik
17 May 1987
Kermit is now able to use some of the serial port expansion boards
as COM3 and COM4. However, certain technical issues should be probed before
attempting such operation.
Kermit looks for the base address of the 8250 UART chip for each
port by examining the four words in memory starting at location 40:00h
(segment 40h, offset 0). The system boot procedure normally tests for standard
COM1 and COM2 serial ports and puts their base address in the first two
words, or zeros otherwise. You must insert the addresses for additional
serial ports, as described below, in words three or four. Kermit assumes
that COM3 shares the interrupt request line IRQ4 with the regular COM1 port
and similiarly COM4 shares IRQ3. If these conditions are not met then Kermit
cannot use the extra ports without changing the source code.
Table of serial port numbers
Serial Port Base address IRQ Conventions
COM1 3F8H 4 IBM standard
COM2 2F8H 3 IBM standard
COM3 ? 4 your board, Kermit wants IRQ4
COM4 ? 3 your board, Kermit wants IRQ3
The addresses shown as query marks are to be found in the board's reference
manual; values such as 2E8H and 2E0H would be common. However, there is
no standard for anything to do with COM3 and COM4.
Assuming that you have selected an address in harmony with the
rest of the system (good luck on that part), set the board's switches or
jumpers, and use DEBUG to insert the address(es) in segment 40H memory.
The example below creates a small program named setcom3.com to put address
02E8H into the memory word 40:04H for COM3 and writes the program to drive C.
(disregard the xxxx items below):
DEBUG don't type these comments
-n c:setcom3.com sets name of output file
-a assemble command
xxxx:100 mov ax,40 value 40h
xxxx:103 mov es,ax put it into register es
xxxx:105 mov ah,02 the 02 part of 02E8H
xxxx:107 mov al,e8 the E8 part of same
xxxx:109 es:
xxxx:10A mov [4],ax store in 40:4 for com3 (40:6 for com4)
xxxx:10D int 20 return to DOS
xxxx:10F blank line to end assemble mode
-r bx show contents of register bx
BX 0000
: 0 want register bx to hold 0
-r cx show contents of register cx
CX 0000
: 0f set register cx to write 0fh bytes
-w write material to the file
-q quit debug
DEBUG c:setcom3.com
-u unassemble to see if all is well
-q quit debug
Note, for COM4, use [6] above rather than [4], and of course employ your
board's port address in place of 02E8H. Check the manual.
Finally, try it:
C> setcom3 run the program
C> DEBUG now see what's down there
-dw 40:00 display words in seg 40H
shows many words. See yours? Good.
-q
C>
A small side effect noted in practice is the first time the extra
port is used there may be garbage from it. Just return to the Kermit prompt
and try again, all should be well the second time.
More technical comments, for those with an interest. When Kermit
finishes with a port it disables interrupts for that serial port and the
interrupt request line (protects against stray interrupts later on).
However, only one device at a time can be active on an IRQ. If you find
that transmissions are good but there is no reception then another device
has stolen the IRQ; disable it or find a guru. Kermit will work with non-
standard addresses for COM1 and COM2 but the IRQ's must be as in the table
above. Accessing a non-existant port produces a message and all commuications
are discarded safely.
===================================
File network.not
Notes on running MS Kermit 2.30/IBM
across Local Area Networks
25 April 1987
1. Introduction.
The latest version of MS Kermit for IBM PC class machines is able
to use many kinds of Local Area Networks (LANs) as its communications
channel. The LANs are those based upon or emulate the IBM PCnet Netbios;
these include the IBM PCnet, IBM Token Ring, AT&T StarLan, and others.
To use a LAN the appropriate LAN board and software must be operating
on the personal computer. This software is usually the 'client' side of
a file/disk serving system. Next, run Kermit and give the command
SET PORT NET nodename for a Kermit client
This directs Kermit to communicate via the network components rather than
the machine's serial port. Client machines need to state the node name
of the remote system. That remote system is likely to be not the LAN file
server but rather another user machine operating Kermit in server mode.
Thankfully, Kermit does not understand the arcane language of file servers.
If the local Kermit is restoring a previous connection or if it is to become
a Kermit server then the node name can be omitted:
SET PORT NET for a Kermit server
After a pause of up to 20 seconds or so Kermit will respond with it's
local node name or an error message saying the network is unavailable.
No actual connection is made at this point; the network is just checking
on uniqueness of our local node name (it does nothing with the remote node
name until later). Thereafter, use normal Kermit commands as one would do with
serial port communications. Really? Yes, indeed; everything is normal. Great!
A connection is established with the first external communications
request, such as a file transfer or entering terminal emulation Connect mode.
If the connection cannot be completed then an error message indicates this
situation; either the network is not functioning on your machine, the
remote node is not available, the remote node name is incorrect, or even
your kind of LAN is not supported by Kermit.
A connection, or 'session' in network terminology, is Broken when
- a Kermit is exited completely,
- the HANGUP command is issued (yes, the same command as we use
to hangup the phone with an attached modem),
- a new SET PORT NET differentnode command is issued (but the
session is Not broken by saying SET PORT COM1/2), or
- one side or the other fails to respond to a packet after a network
timeout interval (many seconds).
A connection is maintained while switching to one of the regular
serial ports (COM1 et al), while Pushed to DOS, and while we just stare
at the screen for a while.
Kermit remembers the name of the other end, so when returning to
a network port from say COM1 just give the command
SET PORT NET
and resume where you left off.
2. Ways of using Kermit across a LAN.
Kermit is likely to be used in two situations. First, as a high
quality terminal to a remote host which permits logins via the network.
The AT&T StarLan system connected to a Unix machine supports such remote
terminals. Similarly, some remote applications are built to talk over the
network directly to a terminal.
Second, Kermit can be put into Server mode for access by other
Kermits across the network. To make a Kermit into a server give the
Kermit command Server, but naturally say SET PORT NET beforehand.
The node name of a net Kermit is the name of the local node (the first entry
in the table of names held in the network adapter board) with the appendage
of .K (dot K), such as SALES.K.
On a client Kermit give the command
SET PORT NET SALES.K
and then use regular Kermit file transfer commands. The server will attend
to only one user at a time so Hangup the connection when you are done. The
server will continue to respond to connections from other nodes until it
is shut down or someone issues the LOGO/BYE commands.
The network can support many Kermit servers since the name of each
is formed from the machine's normal node name plus the extension of dot K.
Two Kermits can converse in Connect mode if, but only if, one end is
first put into Server mode and then the other end establishes a session.
The two Kermit commands,
REMOTE SEND one-line-message-to-server's-screen
and
LOGO
are useful to synchronize the connection process before both Kermits are put
into Connect mode (a Chat mode if you like).
File transfers can be slower than expected because of the extra
overhead of wrapping Kermit packets within network packets. A dramatic
improvment in speed can be achieved by lengthing the Kermit packets to
the full 1000 byte limit; on each end issue the Kermit commands
SET SEND PACKET 1000
SET RECEIVE PACKET 1000
Do this on both ends to use long packets. This size is much longer than
most network packets, but Kermit takes care to not over fill them.
Control-S/Q (XON/XOFF) continue to work on an end to end basis.
Some run-on is likely since there probably are one or two packets still
in the communciations system.
3. Technical details.
The LAN support in MS Kermit/IBM is written to interface with the
IBM Netbios, Interrupt 5CH, and, if present, session level Interrupt 2AH.
A test is made for presence of the 5CH interrupt and network board before
issuing network commands. Keyboard, screen, disk, and other peripheral
control is done locally on the PC. Thus, the identical Kermit program
will run on a network or through the serial port (with or without an Intel
8250 UART chip) automatically. Network calls are kept as Netbios generic
as possible.
The Kermit status command shows the communications port as NET
(port: N on the terminal status line). No node name is shown because
they are 16 or more bytes long and screen real estate is fully used now.
Internally, the network packet size is set to 256 bytes for both
transmitter and receiver. This is a compromise between efficiency of longer
network packets and space consumed within Kermit. Both transmission and
reception are additionally buffered within Kermit. Reception is interrupt
driven by the network software, transmission is not. Throughput should
exceed 10-12K baud on an idle network with 1000 byte Kermit packets.
Use the Kermit command SHOW STATISTICS to see average values.
Virtual circuits, sessions, are employed rather than datagrams
to ensure integrity of terminal mode communications and to reduce the
number of lost packets when a network is heavily loaded with other traffic.
Virtual circuits also isolate client to server communications to a pair
of machines without mingling packets from other sources. The network can
support many different Kermit client to server conversations simultaneously.
Server mode starts by issuing a network LISTEN packet to solicit
a connection from anyone using the server's node name. Thus, a session
begins when another system sends a CALL packet to that node name AFTER the
server has started. The session ends willingly as described in section 1
and when a packet times out. Afterward, the server posts a new LISTEN
packet to solicit a new a session. Breakage is nearly transparent on the
client machine because Kermit remembers the last used remote node name.
Client type Connect and file transfer modes begin by issuing a
network CALL packet to the named node. Control does not resume until
the CALL is answered by a Listener or the packet times out; Kermit retries
the CALL many times, quietly. Typing Control-C will interrupt the CALL.
A SET PORT NET command on a client remembers the last used node name.
A server Listens for any remote node name and remembers the last used if
such is needed when not in server mode any longer. Thus, SET PORT NET with
no node name leaves intact any earlier name.
The HANGUP command sends a disconnect message (a network Hangup
packet) to the other side but leaves the remote node name intact. Exiting
Kermit back to DOS results in a Hangup being executed; just Pushing to
DOS retains the connection.
Sending a BREAK is always delicate on LANs since the Netbios has
no provision for such an RS 232-C signal. Manufacturers of some LANs have
provided their own special methods for simulating a BREAK. More work is
needed to support various systems.
Specialized code will be introduced to support specific LANs. One
such case will be allowance of long node names as are used to StarLan
ISN gateways. Keyword NET will shift to allow the network name itself.
MS Kermit/IBM has been successfully tested on the AT&T StarLan
network while running on a PC's Limited 8 MHz AT clone which was loaded
with an ega board, dual IOmega Bernoulli Boxes, real hard disk, etc. and
on a Zenith 151 regular dual floppy PC clone. The network consisted of these
two machines plus an AT&T Unix PC running AT&T Unix System V rel 3.0.
The AT and PC clones operated under PC DOS 3.30.
4. Acknowlegments.
The network development effort was made possible by the support of
AT&T, StarLan Product Management and Paul G. Fox in particular; their
contribution to Kermit is recognized. General support of Utah State University
is also recognized (you ought to see the computer bills for Mail).
Joe R. Doupnik, jrd@usu.Bitnet
Center for Atmospheric Sciences and
Department of Electrical Engineering
Utah State University
Logan, Utah 84322-4405
(801) 750-2982 (work)
===============================
File key.not
Some quick notes on material
going into MS Kermit 2.30
Joe Doupnik
21 March 1987
Keyboard translator:
Brief list of present Set/Show Key syntax and predefined keys.
This is all subject to change at any time (internal development only).
Copied straight from the source code.
;Defining a key:
; Command is SET KEY <key ident><whitespace><definition>
;
; <key ident> is
; a single ordinary ascii char or
; the numerical equivalent of an ascii char or
; a Scan Code written as a number or
; keyword SCAN followed by a number.
; ? Displays help message.
; Numbers and Binary codes are of the form
; \123 a decimal number
; \o456 an octal number base letters o, d, x can be
; \d213 a decimal number upper or lower case
; \x0d a hex number
; \{b###} braces around above material following slash.
;
; <whitespace> is one or more spaces and or tabs.
;
; <definition> is
; missing altogether which "undefines" a key.
; \Kverb for a Kermit action verb; upper or lower case K is ok
; \{Kverb} ditto. Verb is the name of an action verb.
; text a string with allowed embedded whitespace and embedded
; binary chars as above. This kind of string may not
; commence with sequences \K or \{K; use braces below.
; {text} string confined to material within but excluding
; the braces. Note, where the number of opening braces
; exceeds the number of closing braces the end of line
; terminates the string: {ab{}{{c}d ==> ab{}{{c}d
; but {ab}{{c}d ==> ab.
; ? Displays help message and lists all action verbs.
;
; If Set Key is given interactively, as opposed to within a Take
; file, the system will prompt for inputs if none is on the command
; line. The response to Push key to be defined cannot be edited.
;
; Text which reduces to a single replacement character is put into a
; table separate from the multi-character strings (maxstng of these).
; A key may be translated into any single 8 bit code.
;
; Comments can follow a Kermit action verb or a braced string; no
; semicolon is required since all are stripped out by the Take file
; reader before the defining text is seen by SET KEY.
;
; The current Kermit escape character cannot be translated without
; subtrafuge.
;
; Examples:
; Set Key q z
; makes key q send character z
; Set Key \7 \27[0m
; makes key Control G send the four byte
; string ESC [ 0 m
; Set Key q
; undefines key q so it sends itself (q) again.
; Set Key \2349 \kexit
; defines IBM Alt-X to invoke the leave connect
; mode verb "exit" (Kermit's escape-char ^] C).
; Set Key \x0c Login \{x0d}myname\{x0d}mypass\x0d
; defines Control L to send the string
; Login <cr>myname<cr>mypass<cr>
;
; Alternative Set Key syntax for backward compatibility with previous versions
; The same forms as above except the key identification number must
; be decimal and must Not have a leading backslash. Example:
; Set Key Scan 59 This is the F1 key
;
; If the definition is omitted it may be placed on the following line;
; if that line is also empty the key is undefined (defined as Self).
; A warning message about obsolete syntax will be given followed by
; the key's modern numerical value and new definition. Only "special"
; keys (those not producing ascii codes) are compatible with this
; translator.
;
;Showing a key:
; Command is SHOW KEY <cr>
; System prompts user to press a key and shows the definition plus the
; free space for strings.
-----------------------------------------------------------------------------
; Kermit IBM initialization time keyboard setup.
; internal coding: Kermit verb then key numerical ident (scan=256, shift=512)
'\kgold',scan+59 ; F1
'\kpf2',scan+60 ; F2
'\kpf3',scan+61 ; F3
'\kpf4',scan+62 ; F4
'\kkp0',scan+shift+90 ; VT100 keypad numeric area, SF7
'\kkp1',scan+shift+86 ; SF3
'\kkp2',scan+shift+87 ; SF4
'\kkp3',scan+shift+88 ; SF5
'\kkp4',scan+shift+89 ; SF9
'\kkp5',scan+68 ; F10
'\kkp6',scan+shift+84 ; SF1
'\kkp7',scan+63 ; F5
'\kkp8',scan+64 ; F6
'\kkp9',scan+65 ; F7
'\kkpenter',scan+shift+89 ; SF6
'\kkpcoma',scan+shift+85 ; SF2
'\kkpminus',scan+66 ; F8
'\kkpdot',scan+shift+91 ; SF8
'\kuparr',scan+72 ; VT100 cursor keys (arrows)
'\kdnarr',scan+80
'\klfarr',scan+75
'\krtarr',scan+77
'\kupscan',scan+73 ; PgUp Kermit screen roll back keys
'\kdnscan',scan+81 ; PgDn
'\khomscn',scan+71 ; Home
'\kendscn',scan+79 ; End
'\kupone',scan+1156 ; Ctrl PgUp one line scrolls
'\kdnone',scan+1142 ; Ctrl PgDn
'\kmodeline',scan+74 ; Kermit toggle mode line Keypad -
'\ktermtype',scan+2178 ; Kermit toggle terminal type Alt -
'\kreset',scan+2179 ; Kermit reset terminal Alt =
'\kprtscn',scan+1138 ; Kermit toggle print screen Ctrl *
'\kdump',scan+1141 ; Kermit Dump Screen Ctrl End
'\x7f',scan+83 ; Del key sends DEL
'\x7f',scan+14 ; Backspace key sends DEL
'\kexit',scan+2093 ; Exit connect mode Alt X
'\kstatus',scan+2079 ; Connect mode status Alt S
'\kbreak',scan+2096 ; Send a Break Alt B
'\khelp',scan+2083 ; Connect mode drop down menu Alt H
------------------------------------------------
Translation of bytes received at the serial port while in Connect mode:
The pair of commands
SET TRANSlation INPUT received-char local-char
and
SHOW TRANSlation INPUT
provide an elementary conversion of one raw byte to another. The received
character is translated into the local character before the rest of Kermit
can see it; this is effective for only Connect mode (not file transfers or
scripts).
SET TRANS IN requires both byte specifications to be on the command
line. The form of the byte specs is an ascii character or a numerical value,
such as \65 (decimal for A), or \o101 (octal for A), or \x41 (hex for A).
Examples:
SET TRANS IN p \156 ; letter p sent to us is changed to Pound
Sterling sign (decimal 156)
SET TRANS IN o \143 ; letter o is visible as long A
(as in Angstrom)
SET TRANS IN \143 \7 ; long a translated to a beep (control g)
SHOW TRANS displays bytes subject to change by Set Trans information.
Note: the LOG file will show the local (translated) character.
--------------------------------------------------
SHOW STATistics shows the byte counts, etc. for file transfers.
---------------------------------------------------
LOG {PACKET | SESSION} filespec revised LOG command
DISABLE {DELETE | HOST} server mode control (protection?)
ENABLE {DELETE | HOST} ditto
SET SEND DELAY seconds waits the indicated number of
seconds before starting a SEND
command.
==============================
File msk229b.not, old and you have all this material from an earlier digest.
Notes on MS Kermit 2.29b
12 Jan 1987
This most recent version of MS Kermit 2.29 has support for VT102
printer commands, Long packets, and Scripts. Additionally, it has corrections
to most problems known at this time.
A new kind of MS Kermit, mstclo.boo, is available for near clones
of IBM PC's but whose serial port hardware is not similar. Here is a
description from the originator Glenn Everhart:
This module is derived from MSXIBM.ASM and is intended for IBM PC
near-clones that differ in their serial I/O but emulate the IBM
BIOS. Such machines include Seequa Chameleon, DG/1, and others.
The idea is to use the VT100 emulation (which will work) but
use BIOS for all serial I/O. This is not interrupt driven and so
will (unfortunately) not be able to keep up well at high baud
rates. Nevertheless, it will be far better than the old Seequa
version which didn't emulate anything.
Glenn Everhart, RCA, via <LCG.KERMIT@DEC-MARLBORO>
Bugs and internal improvments
-----------------------------
Two important problems with MS Kermit 2.29 (no letter) were an
incompatibility with Hayes internal modems, and related modems: the modem
would hangup the phone when a file transfer completed or Connect mode
were exited, and secondly, null characters could be sent at the start of
a file transfer or when Connect mode was entered. It seems that several
mainframes regard null characters as important signals rather than as fillers.
We have tested this version with a real Hayes 1200B modem with satisfactory
results (whew!, but lets keep our fingers crossed).
There were numerous small problems throughout MS Kermit, as might
be expected, and those identified to date have been addressed. One important
one was the serial port was left active if one PUSHed to DOS while in Connect
mode.
Serious DOS errors are trapped by Kermit to prevent Kermit from being
aborted with the serial port interrupt alive and with a couple of other items
redirected to Kermit itself. The most common such error is "Drive Not Ready."
Previously, these conditions would invoke the normal DOS Critical Error proc
which would request "Abort, Retry, Ignore?" and would abort the program if
Abort were chosen. Now, Kermit exercises a fourth option, Fail the Operation,
when these errors occur. Procedures spawning a second copy of Command.Com
(DIR etc) still can yield the A/R/I message but it is harmless in this case.
However, if such a message arises while Kermit is in Server mode a human must
still type the answer locally. The implementation replaces the normal DOS
Control-Break (^C) and Critical Error handlers with Kermit's own handlers and
restores the originals when Kermit exits.
Numerous small bugs concerning negotiated parameters (8 bit quoting,
Block check types, etc) have been fixed; these mainly concerned Server mode
operations. The terminal emulator no longer responds to the answer-back msg
request; there is no answer-back message in the emulator. Screen handling
has been improved internally, but it still has a few glitches.
While in Connect mode 8 bit received data will be passed through to
the terminal processor if the Parity type is None. If Debugging is ON then
characters with their high bit set will be displayed as a tilde and then a
code for the lower 7 bits; i.e., 10000001b is displayed as ~^A. Note: due
to network quirks these characters may be mistranslated; the tilde is the
funny wiggle character above the accent mark and the control symbol is a
caret.
Addition to Set Display commnad
-------------------------------
Set Display Regular | Serial | Quiet | 7-bit | 8-bit
The keywords 7-bit and 8-bit have been added to control displays
of characters in non-file transfer modes. 7-bit is the default and 8-bit
becomes meaningless when parity is other than None. The Set Display
command accepts two keywords in one command, processed left to right.
Addition to Set Prompt command
------------------------------
Special characters, such as escape, can be included in text of
Kermit's prompt by specifying them as octal numbers in the form \ooo
where o is an octal digit. Escape itself is \33. To return to Kermit's
default prompt give the Set Prompt command without text. The replacement
prompt can be up to 80 characters long.
VT102 Printer support, for emulator in IBM and NEC AP3 versions.
----------------------
New escape sequences:
ESC [ i Print the entire screen (24 user lines) or just the text
in the scrolling region, depending on ESC [ ? 19 h/l below.
ESC [ 0 i is an equivalent command.
ESC [ ? 1 i Print the line containing the cursor.
ESC [ 4 i Disable Controller print. Cursor returns to its position
when ESC [ 5 i was encountered earlier.
ESC [ ? 4 i Disable Auto Print.
ESC [ 5 i Enable Controller print; incoming text is sent to printer but
not to the screen. Escape sequences are recognized and acted
upon but are not printed. Cursor movement cannot be prevented.
ESC [ ? 5 i Enable Auto Print; incoming text is sent to both screen and
printer. Escape sequences are recognized and acted upon but
are not printed.
ESC [ ? 18 h Set Print termination char; requests Form Feed be printed
after each Print Screen operation (ESC [ i).
ESC [ ? 18 l Reset Print termination char; no FF after Print screen.
ESC [ ? 19 h Sets print area of ESC [ i to be the whole screen (24 lines).
ESC [ ? 19 l Resets print area of ESC [ i to be just scrolling region.
ESC [ ? 15 n Request from remote host for printer status report.
ESC [ ? 10 n Response to ESC [ ? 15 n if printer is ready.
ESC [ ? 13 n Response to ESC [ ? 15 n if printer is not ready.
The print device is selected to be the system printer (system file
handle 4, LPT1) and the user has no choice in the matter. If the printer is
not ready then a message to this effect is shown on the mode line (line 25)
and the print request is skipped. Skipping is done to prevent systems from
being hung just because the printer was not plugged in or similar trivia.
Trailing spaces on each line are trimmed off to save printing time. These
print screen operations should be compatible with all the other screen to
printer operations (screen dump key, Log to PRN, DOS print screen, etc).
Startup conditions are to reset both Print termination char and screen
area bits; i.e., no FF after a print screen command and use scrolling region.
Long Packets.
-------------
This version can use packets up to 1000 bytes in length. The trans-
mitter selects the type of packet (Regular or Long) based upon the size of
the data to be sent in that particular packet; negotiations at the start of a
file transfer determine the maximum length. The receiver is prepared to accept
Long packets at any time up to a maximum length set by the user.
The commands Set Send Pack ### and Set Receive Pack ### limit the
maximum packet size. ### can be as large as 1000. Kermit uses 94 byte
packets as its default maximum size; longer packets will be employed only if
the user gives the Set Send/Receive Pack commands above.
The IBM serial port interrupt routine, buffer handler for received
chars, and the packet assembly/disassembly routines Spack and Rpack have been
completely rewritten for efficiency, Long packets, and high speed operations.
It is possible to operate at 38400 baud on a plain 4.77 MHz IBM PC provided
that the clock tic routine is not loaded with time consuming extras (Helpful
Utilities, print spoolers, screen savers, and the like). Long packet and
high efficiency code are system independent; fancy high speed operation code
is for IBM PC's and clones and the DEC Rainbow.
Scripts.
--------
A simple DEC 20 style script and raw file upload facility has been
written by Jim Sturdevant and myself (he did the original version and we
developed it from there). This code is actually system independent. A quick
discussion is reproduced below, and the Kermit Help menu has further cryptic
guidance.
----
A quick guide to scripts in MS Kermit 2.29. There are several main script
commands shown below in Upper case and yet another batch of Set commands
to establish operational parameter for scripts.
OUTPUT text
Sends the single line of text out the serial port. Spaces and tabs
are included. Control characters such as a carriage return must be stated
as an octal number preceeded by a backslash: carriage return is \15, line
feed is \12, bell is \7, and so forth. Example, dial the phone via a modem:
Output atdt 5,1234, (918) 555-1212\15
The "text" also can be the first line of a file or even from the console if
the first letter of the text is an at-sign, @filename or @con. Thus,
Output @con
reads a line from the console and sends it out the serial port.
INPUT [time] text
This is a heavily used operation which reads characters from the
serial port and attempts to match them to the line of text, or times out
if it can't. A common command of this kind would be
Input 30 Username:
The sequence above waits up to 30 seconds for the pattern Username: to
appear. If it does then the next script command is executed. If it does not
appear then the script file can be told to Quit or to Proceed as if
the pattern did occur. The time field is optional and is nominally 1 second.
Selection of Quit or Proceed and the default waiting time are governed by
the Set Input command discussed below. Text may also be replaced by
at-sign filename to cause the pattern to be selected as the first line in
that file.
If the text pattern is omitted then the Input command reads
characters from the serial port, displays and then discards them.
A recent addition allows a carriage return typed at the local keyboard
to force a pattern match (for those of us with limited patience concerning
recalcerant remote hosts).
PAUSE [time]
Waits 1 second, or the number of seconds in the optional argument.
ECHO text
Simply writes the line of text on the screen.
CLRINP
Empties the serial port's buffer of stored but not yet read characters.
TRANSMIT filespec [prompt]
Raw file upload. Sends the named file (no wild cards) a line at a time
to the remote host. Each line is expected to end with carriage return-line
feed, and the trailing line feed is not sent. After each line Kermit waits
for a prompt character from the other side. The default prompt char is a
line feed. The command line allows the prompt to be changed to any other
character (control codes are expressed as an octal number in the form \ooo);
specifying a prompt of \0 means do not wait for a prompt. Alternatively,
pushing the local Return key simulates reception of prompt.
Trans foo.bar \7 send file "foo.bar", expect ^G as a prompt.
SET INPUT commands:
Set Input Default-timeout seconds
Changes the waiting time from 1 second to this new value.
Set Input Timeout-action Proceed or Quit
Determines whether or not the current script file is to be continued
or exited if a timeout occurs. Proceed is the default and means that timeouts
are ignored. Quit causes the current script file to be exited and control
passed to either the next higher level script file (if the present one were
invoked by such) or to Kermit's main prompt.
Set Input Case Ignore or Observe
Says whether or not to distinguish upper and lower case text when
doing a matchup in the INPUT command. Ignore causes upper and lower case
letters to be considered the same. Default is to Ignore case distinctions.
Set Input Echo On or Off
Show on the screen characters read from the serial port during the
script operation, or not. Default is On, show them.
Values of Set Input things are shown on Kermit's Status display.
Construction of a script file. Kermit has the ability to read a file,
called a Take file in Kermit-ese, and execute the contents as Kermit commands.
The Kermit command to do this is TAKE filename. Within such a file may be
another Take command, and within it yet another Take and so on. Thus, the
script is prepared as an ordinary text file and is invoked within Kermit
by saying Take filename; a complete working example is given below.
Before getting to it, however, a word or two about timeouts. If the
action on timing out is set to Quit then the current Take file is exited
whenever a timeout occurs and processing continues at any next higher level
Take file; there is no conditional branching in this script facility. Also,
Kermit looks for a particular file, MSKERMIT.INI, at startup time and
executes it as the first Take file; you may place normal startup and script
commands there as a convenience.
An example script is shown below for connecting to machine VAXB via
a modem and a Data Switch. The lines starting with Comment are ignored by
Kermit and are there as a tutorial guide. Comments may also be placed on a
line beginning with a semicolon. Upper case is used for clarity.
File LOGIN.SCP -
Comment set Kermit's baud rate to 2400
SET SPEED 2400
Comment flush any old junk
CLRINP
Comment don't display Take file commands as we go
SET TAKE OFF
Comment quit script if proper answers do not appear
SET INPUT TIMEOUT-ACTION QUIT
Comment see if modem is alive, hello modem.
OUTPUT AT\15
Comment look for its normal response
INPUT OK
Comment dial the Micom switch (from on-campus)
OUTPUT ATDT 3458\15
Comment look for phone being answered
INPUT 25 CONNECT
Comment wait 1 sec for modem to get ready
PAUSE 1
Comment then send control code carriage return,
Comment expressed as an octal number preceded by \.
OUTPUT \15
Comment wait a sec for the switch to wake up
PAUSE 1
Comment one more time so the switch recognizes our baud rate
OUTPUT \15
Comment find first part of switch's announcement
INPUT 10 slowly
Comment ignore timeouts from here on
SET INPUT TIMEOUT PROCEED
Comment find last word of the announcement
INPUT 15 CLASS
Comment tell the switch where we want to attach
OUTPUT VAXB\15
Comment look for final prompt of Go and a beep
INPUT 20 Go\7
Comment let switch get ready for our response
PAUSE 1
Comment wakeup vaxb, c/r's, slowly as instructed
OUTPUT \15
PAUSE 1
OUTPUT \15
PAUSE 1
Comment third c/r, just in case. Awaken Vaxen
OUTPUT \15
Comment look for login sequence
INPUT Username:
Comment give our username
OUTPUT ItsMeAgain\15
INPUT Password:
Comment give ourselves a prompt and read from console
ECHO \15\12Enter password:
OUTPUT @con
Comment we're in, go test for new mail msg
TAKE mail.scp
Comment go into VT102 terminal emulation mode
CONNECT
And here is file MAIL.SCP, with added comments -
Comment show serial port traffic as we go
SET TAKE ON
Comment Exit this file if timeout (no new mail)
SET INPUT TIMEOUT QUIT
Comment look for keyword Mail, timeout if none
INPUT 10 Mail
Comment must be mail if we are still here, read it
OUTPUT mail\15
---------------------------------------------------------------
Joe Doupnik
jrd@usu.bitnet
========================== end of message ================================