home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
cpm86
/
c86ker.txt
< prev
next >
Wrap
Text File
|
2020-01-01
|
24KB
|
508 lines
1. CP/M-86 KERMIT
Authors: Bill Catchings, Columbia University; Ron Blanford, University of
Washington; Richard Garland, Columbia University.
Language: Digital Research ASM86
Version: 2.9
Date: December 1984
Documentation:
Frank da Cruz, Columbia
This version of KERMIT is designed to support any CP/M-86 system. So far it
supports the DEC Rainbow-100 and the NEC Advanced Personal Computer (APC). It
is very similar to CP/M-80 and MS DOS KERMIT.
CP/M-86 KERMIT-86 Capabilities At A Glance:
Local operation: Yes
Remote operation: No
Transfers text files: Yes
Transfers binary files: Yes
Wildcard send: Yes
^X/^Y interruption: Yes
Filename collision avoidance: Yes
Can time out: Yes
8th-bit prefixing: Yes
Repeat count prefixing: No
Alternate block checks: No
Terminal emulation: Yes, uses PC firmware (VT100)
Communication settings: Yes; duplex, parity
Transmit BREAK: Yes
IBM communication: Yes
Transaction logging: No
Session logging (raw download): Yes
Raw upload: No
Act as server: No
Talk to server: Yes; SEND, GET, FIN, BYE
Advanced commands for servers: No
Local file management: Yes
Handle file attributes: No
Command/init files: Yes
Printer control: No
CP/M-86 KERMIT DESCRIPTION
Since Kermit-86 runs on a standalone micro, it is always in control of the
screen -- it is always local. Thus, it always keeps the screen updated with
the file name and the packet number, whether sending or receiving. Kermit-86
is capable of timing out an input request, and can thus break deadlocks
automatically. In most cases, however, this is not desirable because the KER-
MIT on the other side is most likely better able to handle the timeouts; there-
fore, Kermit-86's timer is normally not used.
If despite the timeout capability, the transmission appears to be stuck (and
you can tell that this has happened if the screen fails to change for a long
while) you can type carriage return to have the micro do what it would have
done on a timeout, namely NAK the expected packet to cause to foreign host to
send it again (or, if the micro is sending, to retransmit the last packet).
Micro/micro or micro/IBM-mainframe transfers could require this kind of manual
intervention.
File transfers may be interrupted in several ways.
Control-C This will return you to Kermit-86 command level immediately, so
that you can connect back to the remote system, or take any
other desired action.
Control-X When sending a file, this will terminate the sending of the
current file with a signal to the KERMIT on the other side to
discard what it got so far. If there are more files to be
sent, KERMIT-86 will go on to the next one. When receiving a
file, KERMIT-86 will send a signal to the remote KERMIT to stop
sending this file. If the remote KERMIT understands this sig-
nal (not all implementations of KERMIT do), it will comply,
otherwise the file will keep coming. In either case, the
remote KERMIT will go on to the next file in the group, if any.
Control-Z Like Control-X, except if a file group is being transmitted,
this will stop the transmission of the entire group. If only a
single file is being transmitted, it works exactly like
Control-X.
Carriage Returns
If you type carriage return repeatedly Kermit-86 will retry the
current packet up to its retry limit (somewhere between 5 and
16 times) and then, if no valid response was received, return
to Kermit-86 command level.
When KERMIT-86 is started, it looks for the file KERMIT.INI. If found, it ex-
ecutes KERMIT-86 commands from it before prompting you for commands. The
KERMIT-86 prompt looks like this:
Kermit-86 B3>
in which "B" is your current default disk and "3" is the current default user
number.
1.1. Kermit-86 Commands
KERMIT-86 uses the DECSYSTEM-20 keyword style command language. Each keyword
may be abbreviated to its minumum unique length. "?" may be typed to request a
menu of the available options for the current field at any point in a command.
ESC may be typed at any point in a command to fill out the current keyword or
filename; if sufficient characters have not been typed to identify the current
field uniquely, KERMIT-86 will sound a beep and allow you to continue from that
point.
CONNECT Establish a "virtual terminal" connection to any host that may be con-
nected to the serial port, i.e. pass all typein to the serial port and
display all input from the serial port on the screen, using the
system's own built-in support for ANSI (VT100-like) screen control.
When you issue the CONNECT command, the PC will print a message telling
you how to get back by typing an an escape sequence, an uncommonly-used
control character, normally CTRL-backslash, followed by a single letter
"command".
C Close Connection, return to Kermit-86> command level.
? List available single-character commands.
B Send a BREAK signal.
Q Quit logging the remote session.
R Resume logging the remote session.
L Toggle logging.
^\ (or whatever - a second copy of the escape character) Send the es-
cape character itself to the remote host.
SEND filespec
Send file(s) specified by filespec to the remote Kermit, using the
prevailing file mode (ASCII or BINARY; see SET). The filespec may con-
tain CP/M wildcards.
RECEIVE Receive file(s) from the remote Kermit. Store them under the names
provided in the file headers supplied by the remote host. If the names
aren't legal, use as many legal characters from the name as possible
(see the description of SET FILE-WARNING below). If there's a con-
flict, and FILE-WARNING is ON, warn the user and try to build a unique
name for the file by adding "&" characters to the name. You may also
provide an optional file name in the RECEIVE command; if you do, the
incoming file will be stored under the name you specify. If more than
one file arrives, only the first will be stored under the given name,
unless you included wildcard characters in the RECEIVE filespec; in
that case, the filespec will be used as a mask for incoming filenames.
For instance, you told the remote Kermit to send *.ASM, you could tell
KERMIT-86 to "receive *.A86", thereby changing the filetype of all the
incoming files.
GET filespec
When Kermit-86 is talking to a Kermit Server on the host, you should
use the GET command to request the server to send files to you, for ex-
ample: get hlp:k*.hlp
BYE When talking to a remote Kermit Server, this command shuts down the
server and logs it out, and also exits from Kermit-86 to CP/M command
level.
LOGOUT Like BYE, but leaves you at Kermit-86 command level.
FINISH Like LOGOUT, but shuts down the remote server without logging it out.
Leaves you at Kermit-86 command level; a subsequent CONNECT command
should put you back at host system command level.
EXIT Exit from KERMIT-86 back to CP/M.
QUIT Synonym for EXIT.
SET parameter [value]
Set the specified parameter to the specified value. Possible settings:
BAUD Change the baud rate of the communications port. This command
only works on some systems, and its actual operation can vary
from system to system. Type SET BAUD followed by a question
mark, and follow the directions. On systems that do not sup-
port this command, you must set the port baud rate from CP/M or
other setup mechanism outside of KERMIT-86.
DEBUG ON or OFF. If ON, displays incoming and outbound packets
during file transfer. OFF by default.
DEFAULT-DISK disk/user
Specify default disk and user number for subsequent file recep-
tion and transmission. The specification following the command
must be in one of the following forms:
d: = go to drive d (A through P) without changing user
u: = go to user u (0 through 15) without changing drive
du: = go to drive d and user u
: = go to the defaults when Kermit was loaded
Whenever a drive is specified, even if it is the same as the
current default drive, the drive is logged in so that disks can
be swapped without exiting Kermit to type control-C. Kermit
restores the original drive and user upon termination.
ESCAPE Change the escape character for virtual terminal connections.
Select a character in the control range that you will not be
likely to need at the remote host; type the new character
literally. Certain characters, like Control-X, cannot be
specified.
FILE-TYPE
Tells KERMIT-86 what kind of file it is sending, so that KERMIT
can correctly determine the end of the file. SET FILE BINARY
means to send all the 128-byte blocks of the file, including
the last block in its entirety; SET FILE ASCII is used for text
files, and transmission stops when the first Control-Z is en-
countered anywhere in the file (this is the CP/M convention for
marking the end of a text file). If binary transmission is
used on a text file, some extraneous characters (up to 127 of
them) may appear at the end of the file on the target system.
If ASCII transmission is used on a binary file, the entire file
will not be sent if it happens to contain any data bytes that
correspond to Control-Z. ASCII is the default.
FLOW-CONTROL
Select the desired type of flow control to be used on the com-
munication line. The choices are NONE and XON/XOFF. XON/XOFF
is the default. If the remote system is not full duplex or
cannot do XON/XOFF, you should use NONE.
IBM ON (or OFF)
Allow the transfer of files to and from an IBM mainframe com-
puter. This makes Kermit-86 wait for the IBM turnaround
character (XON), ignore parity on input, add appropriate parity
to output, and use local echoing during CONNECT. As dis-
tributed, KERMIT-86 uses MARK parity for IBM communication. If
you don't give this command, IBM mode is OFF. Since IBM VM/CMS
KERMIT does not have timeout capability, SET IBM ON also turns
on the timeout facility automatically, as if you had typed "SET
TIMER ON".
LOCAL-ECHO ON (or OFF)
When you CONNECT to a remote host, you must set LOCAL-ECHO ON
if the host is half duplex, OFF if full duplex. OFF by
default.
LOG Specify a log file on the current CP/M disk into which to
record incoming characters during CONNECT. If the remote host
can do XON/XOFF, then the log file will normally capture every
character shown on the screen. When connected to the remote
system, several single-character arguments to the connect es-
cape character can be used to control logging -- Q (quit), R
(resume), L (toggle). If you use R or L during connect without
having previously specified a log file name, then KERMIT.LOG is
used. An open log is closed when you escape back to the PC.
PARITY Sets parity for outgoing characters to one of the following:
NONE, SPACE, MARK, EVEN, or ODD. On input, if parity is NONE,
then the 8th bit is kept (as data), otherwise it is stripped
and ignored. The parity setting applies to both terminal con-
nection and file transfer. If you set parity to anything other
than NONE, Kermit-86 will attempt to use "8th bit prefixing" to
transfer binary files. If the other KERMIT is also capable of
8th bit prefixing, then binary files can be transferred suc-
cessfully; if not, the 8th bit of each data byte will be lost
(you will see a warning on your screen if this happens).
PORT Allows you to switch between different communication ports on
the PC. This command is not available on all systems.
TIMER ON (or OFF)
Enable or disable the timeout facility. The timer is off by
default, because in the normal case KERMIT-86 is communicating
with a mainframe KERMIT that has its own timer. Mainframe KER-
MIT timers tend to be more precise or adaptable to changing
conditions. You should SET TIMER ON if you are communicating
with another KERMIT that does not have a timer. You should SET
TIMER OFF if you are communicating over a network with long
delays.
WARNING ON (or OFF)
Warn user of filename conflicts when receiving files from
remote host, and attempt to generate a unique name by adding
"&" characters to the given name. OFF by default.
SHOW Show the current settings of the SET parameters.
TAKE Take KERMIT-86 commands from the specified file. The file should not
contain any TAKE commands; nested command files do not work.
LOCAL This is a prefix for local file management commands, to distinguish
them from remote file management commands (which aren't implemented
yet). The LOCAL prefix is optional; if left off, the commands will be
performed locally.
SPACE Show how much space is used and remaining on the cur-
rent disk.
DIRECTORY Provide a directory listing for the current disk, show-
ing the name and size of each file. A filespec may be
given to select only a certain file or wildcard file
group.
DELETE Delete the specified files from the current disk.
TYPE A wildcard filespec is accepted and files displayed al-
phabetically. The display is paged in Unix fashion
with "--more--" displayed on the last line. Typein op-
tions at that point can be obtained by hitting a '?'.
1.2. Installation:
CP/M-86 KERMIT is broken up into several source modules:
86KERCMD.A86 Command parser
86KERFIL.A86 File handler
86KERIO.xxx System Dependent I/O
86KERMIT.A86 Main Program
86KERPRO.A86 Protocol Module
86KERTRM.A86 Terminal Emulation
86KERUTL.A86 Utilities
The main program module, 86KERMIT.A86, contains INCLUDE directives for the
other files. The 86KERIO module is stored with suffixes that denote the
machine for which the program is being built -- RB for Rainbow, APC for NEC
APC. The program may be built on the CP/M-86 system by obtaining all the
source files listed above, storing them on the current disk with the names in-
dicated, renaming the appropriate 86KERIO.xxx file to be 86KERIO.A86, and then
doing:
ASM86 86KERMIT $PZ (takes about 6 minutes on the Rainbow)
GENCMD 86KERMIT (takes less than a minute)
and, if desired,
REN KERMIT.CMD=86KERMIT.CMD
1.3. DEC Rainbow 100 Support
KERMIT-86 runs on the DEC Rainbow 100 or 100+ under CP/M-86/80, version 1 or 2,
on the 8088 side. It uses the built-in firmware to emulate a VT102 ANSI ter-
minal during CONNECT, and runs well at speeds up to 9600 baud.
You should be able to download the program using the old KERMIT on the Z80 side
(Rainbow Kermit, VT180 Kermit, or generic CP/M-80 Kermit will do the job, but
only under DEC CP/M-86/80 version 1.0), or an earlier version of KERMIT-86.
If you don't have an earlier version of KERMIT, then follow the directions for
installing KERMIT-80 (yes, KERMIT-80) in the KERMIT-80 section of the KERMIT
User Guide, but send the KERMIT-86 hex file instead. This works because the
Rainbow can run CP/M-80 programs like DDT.
Another way to get KERMIT onto your Rainbow for the first time would be from a
DEC VT-180 diskette. A VT-180 can use its own KERMIT to load RBKERMIT onto its
disk, which can then be read directly by a Rainbow. Also, note that VT-180
KERMIT-80 can actually run on the Rainbow on the Z80 side under DEC CP/M-86/80
version 1 (but not version 2 or higher), at speeds of 1800 baud or lower.
1.4. NEC Advanced Personal Computer Support
(Contributed by Ron Blanford, University of Washington)
Currently only the standard serial port is supported, and not the H14 auxiliary
port. The SET PORT command is not implemented.
While in Kermit's terminal emulation mode, local commands are initiated by a
two-character sequence consisting of the "escape character" followed by one
other character identifying the command. (Make the second character a '?' to
see a list of the valid commands.) As distributed, the standard Kermit-86 uses
the control-backslash character as the escape character in terminal mode. The
trouble is that the CP/M-86 BIOS in the APC ignores a keyboard entry of
Control-\ (i.e. holding down the CTRL key while striking the '\' key), making
it difficult (impossible) to use this method to get out of terminal mode.
One solution is to perform a "SET ESCAPE ^" command before entering terminal
mode to change the escape character to a caret (or any other character the APC
keyboard will generate). This command could be placed in your KERMIT.INI file
for automatic execution every time Kermit is started.
The simpler solution is to realize that the character code for a Control-\ is a
hexadecimal 1C, and that this is the code generated by the INS key on the
numeric keypad. Once you can remember that every reference to Control-\ should
be interpreted as a reference to the INS key, this is actually easier to use
than the two-key Control-\ sequence.
In the standard CP/M-86 BIOS, the unshifted DEL key generates a Control-X
character (hexadecimal 18). This is the CP/M command to erase the current in-
put line, and is very useful for local processing. Most mainframes do not use
the Control-X character at all, so it becomes much less useful during terminal
emulation. The DEL character (hexadecimal 7F), on the other hand, is often
used by mainframes and can only be generated on the APC by holding down the
SHIFT key while striking the DEL key (this capability is not mentioned anywhere
in the documentation).
Because the Control-X character is so seldom used while the DEL character is
commonly used, the initialization procedure in Kermit-86 modifies the CP/M-86
BIOS so that the DEL key generates the DEL character whether shifted or not.
Control-X can still be generated if necessary by holding down the CTRL key
while striking the 'X' key. The CP/M-86 BIOS is returned to its original state
when Kermit terminates.
The APC uses escape sequences which have been standardized by the American Na-
tional Standards Institute (ANSI) to control cursor movement, screen erasing,
and character attribute manipulation. Perhaps the best-known other terminal
which follows ANSI guidelines is the DEC VT100. The APC only recognizes a few
of the more important ANSI commands, and not the complete set which the VT100
supports.
The ANSI/VT100 features that the NEC APC supports are:
- direct cursor addressing (by row and column)
- relative cursor addressing (up, down, left, right)
- line erasing (cursor to end, beginning to cursor, entire line)
- screen erasing (cursor to end, beginning to cursor, entire screen)
- character attributes (underline, reverse video, blink, but not bold)
In addition, the first four grey function keys (unshifted) generate the escape
sequences associated with PF1 through PF4 on the VT100 keyboard. The arrow
keys and numeric keypad DO NOT generate the corresponding VT100 sequences.
These functions are enough to support simple command line editing on most sys-
tems, and allow mailers or paged file display programs to clear the screen be-
fore each display. Underlining and reverse video are also useful in some ap-
plications. This is not enough to support the more sophisticated screen con-
trol required by screen editors such as EMACS or KED. In addition, due to a
bug in the implementation of the CP/M-86 BIOS, the sequence ordinarily used to
home the cursor (esc [ H) does not work correctly; a patch for CP/M to correct
this problem is distributed with APC Kermit-86.
Index
APC 6
Baud 2
BYE 2
Connect 1
Debugging 3
DEC Rainbow 5
Eighth-Bit Prefix 4
Escape Character 1, 3
File-Warning 2
FINISH 2
Flow Control 3
GET 2
IBM 3
Local 0
Local-Echo 4
LOG 4
LOGOUT 2
NAK 1
NEC Advanced Personal Computer
6
Parity 4
Rainbow 100 5
RECEIVE 2
SEND 2
SET 2
SHOW 4
TAKE 4
Timeout 0, 1
TIMER 4
Virtual Terminal 1
Warning 4
Table of Contents
1. CP/M-86 KERMIT 0
1.1. Kermit-86 Commands 1
1.2. Installation: 5
1.3. DEC Rainbow 100 Support 5
1.4. NEC Advanced Personal Computer Support 6
Index i