home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
pub
/
ucsdwdme
/
ucmicrodoc.txt
< prev
next >
Wrap
Text File
|
2020-01-01
|
5KB
|
110 lines
KERMIT UCMICRO is a modification of KERMIT UCSD (UCTERAK version)
written by Kate MacGregor of Cornell University. UCMICRO was created by
Tim Shimeall of the University of California, Irvine, to run on a Western
Digital Pascal Microengine. Rather widespread, but superficial, changes
were made in the translation from UCTERAK to UCMICRO KERMIT. This version
of KERMIT is written entirely in UCSD Pascal, version III.0, under the Vol-
ition Systems operating system. It should work on any Pascal Microengine,
since no version-dependent features were used.
The following files make up KERMIT UCMICRO:
kermit.text - Main program (declarations, show, set and connect commands
with file inclusion commands to bring in the rest of the
files)
wdforw.text - "forward" declarations for routins in wdprocs.text
help.text - segment procedure to provide on-line assistance
sendsw.text - segment procedure to send files
recsw.text - segment procedure to receive files
parse.text - segment procedure to parse user commands
wdprocs.text - Pascal Microengine specific device drivers
utils.text - general utitility functions
rsutils.text - utitility functions shared by recsw and sendsw segments
help.doc - this file.
In the Kermit distribution, the .TEXT files are concatenated together
into a single file, UCMICRO.PAS. In this file, each file begins with
a line like {>>>> name}, as follows:
{>>>> KERMIT.TEXT}
{>>>>WDFORW.TEXT}
{>>>> HELP.TEXT}
{>>>> SENDSW.TEXT}
{>>>> RECSW.TEXT}
{>>>> PARSE.TEXT}
{>>>>WDPROCS.TEXT}
{>>>>UTILS.TEXT}
{>>>>RSUTILS.TEXT}
The Pascal Microengine has the UCSD P-System interpreter implemented in
microcode. It therefore has no accessible assembly language, so routines
that were done in assembler under the UCTERAK version had to be redone in
Pascal for the UCMICRO version. These routines were adapted from a set
written by Tim Shimeall for PCNET, and are contained in the file
"wdprocs.text". Further, the Microengine is not interrupt-driven, so the
"input queue" approach taken in the UCTERAK version had to be replaced by
polling in the UCMICRO version. Once operating, the program had two per-
sistant problems: a) it would run out of memory, causing a program halt
after each file send and receive, and b) it wouldn't wait long enough for a
packet to arrive. To free up more memory during file transfers, the com-
mand parser was converted from a "unit" (seperately compiled library
module) to a "segment procedure" (overlay segment). The UCTERAK KERMIT
version used a retry counter for packet timing. The retry limit specified
only allowed for a 1 second tolerance on the Pascal Microengine (a Microen-
gine is about 4 times faster than a Terak). UCMICRO has a machine-
dependent package timeout feature, using a retry counter in a loop of known
duration as a clock.
UCMICRO has the following limitations:
a) No wild card designations of file names
b) No eight-bit file quoting
c) No character repeat counts
d) No '?' and <esc> at the end of a command line.
e) No server communications
f) Sending and receiving cannot be done on anything but .TEXT files (which
contain a two block header and space compression codes, and are
divided into two-block "pages" which are padded with nulls to ensure
an integral number of lines in each "page").
g) Only one file is sent at a time (a break packet is sent after each
file).
KERMIT UCMICRO has been thoroughly tested in connections with UNIX
KERMIT, but errors may persist. In particular, since polling has replaced
interrupts in this version, characters may occasionally be lost. However,
character loss has NOT been observed during testing of the final version of
KERMIT UCMICRO.
The commands recognized by KERMIT UCMICRO are the same as those for
KERMIT UCTERAK.
Another limitation on UCSD-KERMIT (shared between UCTERAK and the UCMICRO
version): Each line in the file received can be no longer than 80 characters.
There's a "quick fix" for this, but since I hope to make the file transfer
capacity more general later on, I'll just list the fix here:
To make the maximum length 255 chars instead of 80:
1) delete the first two statements and the declarations of
the variables 'ls:integer' and 's:string' from the
procedure "bufemp" in the file RSUTILS.TEXT
2) Add the following two statements to the procedure
"initialize" in the file KERMIT.TEXT:
s:=''; (* note: two single quotes with nothing between *)
ls:=0;
3) change the declaration of "s:string" near line 129 of the
file KERMIT.TEXT to
s:string[255];
4) add the following line immediately after the declaration of
"s:string[255]" (line 129 of KERMIT.TEXT):
ls:integer;
What this does is to move "s" and "ls" (length of s) out to become
global declarations ("s" is otherwise unused), and to expand "s"'s
maximum length to 255 (maximum allowed by UCSD).
As I said, I hope to make a more general file transfer mechanism soon
(which will permit data and code files to be transferred as well as
text), but "soon" can be a relatively long period of time.
Maybe this fix can also be made to the other UC versions of kermit.
Tim