-
Notifications
You must be signed in to change notification settings - Fork 0
/
k11f85.rno
386 lines (368 loc) · 18.2 KB
/
k11f85.rno
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
.rm 66
.c;Kermit - A Protocol for Painless Micro and Mini File Transfer
.s 4
.c;Brian Nelson
.c;Computer Services
.c;University of Toledo
.c;2801 West Bancroft
.c;Toledo, Ohio 43606
.s 3
Abstract
.s 1
This article will describe the Kermit
file transfer protocol.
This protocol allows many (if not most) types of computer
systems to effect, at minimum, error free file transfer with other systems
and microcomputers over asynchronous lines.
.s 1
Introduction
.s 1
With the widespread use of personal computers the need for file exchange
between systems has become of foremost concern among users and managers alike.
There are many commercial products available which meet this need, some of
which may offer more advanced functions such as transparent
record oriented file access. Networks that do this, such as DECnet,
can be expensive, and if your computer or microcomputer is not on the
network your needs won't be met. Transfer of files with removable disks
can work, but generally only when the computers are of the same type, it's
not very useful when the systems are removed in location. Rarely will
a larger mini or supermini be able to read a microcomputer's disk.
.s 1
A more realistic approach, from both cost and convenience, is to find
a way to use ordinary telecommunications and/or in-house PBX systems
to connect computers and microcomputers together. If a local connection
using a PBX or front end switch is not available, there is always dialup
access with standard 103/212 modems.
Data can be transferred with very simple methods, such as TYPING a file
on one system and capturing it on the other system, but this gives no
protection from noise and overrun of data. It is not very user friendly
either. What is really needed is a protocol to accomplish file transfer
reliably and efficiently.
.s 1
The first obvious use of any program or protocol designed to accomplish
file transfer is to be able to provide the
ability to support file uploads and downloads from minis and superminis such
as the VAX and PDP-11 to remote personal computers, such as the PC and Rainbow.
It should also be widely available for many different micros and mainframes.
File transfer from micro to micro, as well as from a larger central host,
should be possible. The command interface should be easy to learn, and
require no intervention from a central site operator or other user.
The many implementations of Kermit follow these lines, and all versions
allow some form of transfer in either direction. More advanced versions,
such as those found on the PDP-11, DEC10/20 and VAX, offer what is known
as server operation, which allow the remote (connected) Kermit system to
completely control the file exchanges from their system.
Since as of this writing (October 9, 1985)
there are available over 160 versions of Kermit available for numerous
micro, mini and mainframe configurations, Kermit addresses this need
quite well.
.s 1
While the primary use of Kermit will likely be to support file transfer
from microcomputer to mini/supermini and mainframe connections, there
are many uses for Kermit for connections from mini to mini and so on.
The author routinely use Kermit
for transfering software developed for the PRO/350 on a RSTS/E 11/23+ and
a VAX 11/785, as well as using the PDP and VAX for dialing out to other
systems around the country (not to mention VAX to PDP directly though
a front end port selector).
.s 1
The Kermit protocol
.s 1
The Kermit protocol is designed to operate over normal asynchronous terminal
lines. All data and commands are transferred with a packet oriented protocol,
basically consisting of a start of packet character (normally SOH), followed
by length, control, data and checksum fields.
Communication is half duplex, in that for every packet sent, the sender
must wait for either an acknowledgement packet (ACK) or a negative
acknowledgement packet (NAK). Transmission is in ascii, with no requirements
for the transmission of eight bit characters or control characters
other than control-A for marking the start of a packet.
All 'control' characters imbedded in the data are prefixed to convert them
to printable characters, the same applying to eight bit characters if
required by the characteristics of the line. Since there are many
different implementations of Kermit, the protocol provides a mechanism
by which the capabilities of two connected Kermits can be negotiated to
allow for differences in the level of protocol support. Examples of
protocol features that not all Kermits understand include data
compression and transfer of file attributes.
.s 1
The packet format is
.s 1
.lit
+------+-----------+-----------+------+------------+-------+
| MARK | char(LEN) | char(SEQ) | TYPE | DATA | CHECK |
+------+-----------+-----------+------+------------+-------+
.eli
where all fields consist of ASCII characters, and the char function converts
a number in the range 0-94 (10) to a printable ASCII character by adding
32 (10). The MARK, LEN, SEQ and TYPE fields are one byte, the DATA field
is variable in size, and the CHECK field is one to three bytes in size.
.br
The MARK (normally control A) signifies the start of a packet. The length
field tells how long the rest of the packet is. The SEQ field is used to
insure synchronization used to detect lost or duplicate packets. The SEQ
number wraps around every 64 packets due to the need to encode it as a
printable ascii character in the range 32 (10) to 126 (10). The
TYPE field specifies whether the packet is a DATA or CONTROL packet. The
DATA section is used for the actual transfer of data or informative messages
from a Kermit server, this field can be up to 90 characters in length.
Any character whose low seven bits fall in the range of 0 to 37 (8),
ie, char and 177 (8) is less than 40 (8), will have the value
100 (8) exclusive or'ed (xor'ed) with itself and be prefixed by a shift
character, '_#'. Other shift
characters may be use for eight bit characters if the line characteristics
require such. Data compression may also occur in the data field, this is
done with yet another shift code and byte count sequence.
The CHECK field is a checksum, either a one character, two character or
three character CRC check; the sender computes it and the receiver must
compute it and compare. A checksum mismatch will result in the receiver
sending a NAK packet (negative acknowledgment) which directs the sender to
resend the NAK'ed packet. The packet may be following by
a terminator (likely an ascii 13). This terminator is NOT part of the
protocol and is sent only to tell the receiver that a 'line' is present.
Not all Kermit implementations require this; all Kermits will discard data
outside of a packet in any event.
.s 1
Error detection and recovery is by checksum, as noted, and by packet
read timeouts. If the packet should be corrupted the checksum will be
incorrect, the receiver will NAK the packet.
If an expected packet never arrives within the timeout period, or if the
received packet is not the expected one (as determined by the SEQ field)
the packet will also be NAK'ed. There are limits as to how many times
an expected packet will be NAK'ed without aborting the current operation.
.s 1
Packet types
.s 1
.lit
D Data
Y Acknowledgement (ACK), text may be in DATA field
N Negative Acknowledgement (NAK)
S Send initiate (Send-Init)
R Receive Initiate
B Break (EOT, end of transmission)
F File name header
Z End of file (EOF, end of current file)
E Error packet, text may be present in DATA field
G Generic SERVER command. The first character in the
data field will be a command to a server, arguments
may follow that character.
I Login, user and password follow in data field
C CWD, change working or default directory.
L Bye, Logout server
F Finish, Exit server, but do not log out
E Erase, delete files on server system
D Directory query
U Disk space usage query
T Type a file onto local kermit
R Rename file(s) on server system
K Copy file(s) on server system
W Who's logged in, as in sho sys, sy/s, dev tt
M Send a terminal message to a user
H Help, the server responds with commands it can do
Q Server status query
P Program, run a program
J Journal
V Variable, alter a Kermit setting
C Execute host command. The host command follows in
the data field.
.eli
Note that some of the generic server commands, as well as the C packet,
may not be feasible for a given environment. For instance, the REMOTE LOGIN
command, which sends the generic I command to the server, can only be done
under RSTS/E; the generic U command (disk space) is meaningless under RSX
unless one wants the free space on the entire volume. No Kermit server will
abort on receiving a packet it can't execute, it will simply send an error
packet with an informative message saying it can't process the requested
function.
.s 2
A typical transaction
.s 1
An example of a Kermit-11 kermit telling a VMS Kermit-32 server to
expect a file follows. The Kermit-11 command was SEND JUNK.TST
.s 1
.lit
(0)PDP sends: ^A. S~* @-#Y3~( ,
(0)VAX sends: ^A, Yp/ @-#Y3~!
(1)PDP sends: ^A-!FJUNK.TST,-4
(1)VAX sends: ^A%!Y,\I
(2)PDP sends: ^A`"D$ set ter/vt100#M#J$ xcc :== ccl cc
#M#J$ xas :== ccl as#M#J!4S
(2)VAX sends: ^A%"Y.5!
(3)PDP sends: ^A%#Z,X"
(3)VAX sends: ^A%#Y/R9
(4)PDP sends: ^A%$B!_#
(4)VAX sends: ^A%$Y+&1
.eli
In packet zero, the Kermit's exchanged information regarding their
capabilities. The PDP-11 sent an 'S' packet with the data for its
maximum packet length, default time out, number of pad characters to
follow a packet (none, hence the space), use a null for padding, end
of line terminator (a CR + 32), the prefix character for control characters,
a 'YES' to say the it can prefix eight bit characters with the default,
that it would like to use CRC block checks, that it will use a tilde for
data compression, and the 'CAPAS' mask, which here says that it can process
attribute packets (discussed later).
Since the VAX also sends a '3' for the checksum type, they will both switch
to CRC checks on the following packets.
In packet 1, the PDP11 sends the filename the VAX should use
for the file it creates. The VAX then sends the acknowledgement. In packet
three, the PDP sends the first (and only for this file) packet of data. Note
that the sequence _#M_#J is a carriage return/line feed sequence with 100 (8)
xored into each character. The '_#' character informs the other Kermit that it
must xor the next character with 100 (8). In packet three the PDP11 sends
an EOF packet, the VAX acks it. In packet four, the PDP sends a break packet
which tell the VAX that no more files (of a possibly wildcard group) are
coming and the VAX Kermit acks the break packet.
Both Kermits now switch to the single character checksum and the
VMS kermit enters the server idle state.
.s 1
More specific information regarding Kermit packets and state transitions can
be found in the references listed at the end of the article.
.s 2
Transmission of file attributes
.s 1
One of the optional features of the Kermit protocol is the ATTRIBUTE packet.
The attribute packets allow a Kermit program to send to a receiving Kermit
information regarding the file organization, size, cluster/retrieval size,
protection and so forth. There is even a system dependant attribute packet type
that can be used to transfer things like the RMS11 IFAB
(the RMS/FCS attributes).
Since to date only the author's Kermit implementation, Kermit-11, can process
attribute packets, the discussion is limited to the PDP-11.
.s 1
One of the things that two Kermits exchange
before any file transfer is an information packet, this packet tells the
receiving Kermit about itself. The last field in this packet, the CAPAS mask,
tells Kermit if the other one can process attribute packets. If two Kermit-11's
are communicating, they will find that each can do so, and the sender of a file
will then send over attribute packets indicating the need (or lack of)
for binary transmission, based on the file organization, filetype and protection
code (for RSTS/E).
If the sending Kermit-11 is running on RSTS/E, RSX11M/M+ or P/OS
it will also send a copy of the RMS/FCS attributes so the received file will
be identical (to FCS and/or RMS) to the copy on the sender's system. Since
other implementations of Kermit may use this special system attribute packet,
Kermit-11 always sends an attribute packet telling the receiver what hardware
and operating system it is running on, and thus will only use such data if
they are compatible.
Of course, there will be times when a file may be binary and Kermit-11 can't
tell so, many Kermit's have a SET FILE BINARY and SET FILE ASCII to allow the
user to override defaults. Kermit-11 also has a SET FILE AUTO/NOAUTO to disable
it from trying to determine a file's binary status.
.s 1
The PDP-11 Kermit-11 implementation
.s 1
The author's version of Kermit-11 is written in Macro-11 and can run on
RSTS/E, RSX11M, RSX11M Plus, P/OS, RT11 and TSX+.
This version of Kermit is distinct from the other three PDP-11 Kermits
available; the Stevens P/OS menu driven Kermit; the University of Toronto
RT11 pascal Kermit and Bob Denny's P/OS Kermit.
In Kermit-11, the RSTS and RSX file system
interface is via RMS11 version 2, while the RT11 interface attempts to
emulate the RMS11 subsystem. The choice of Macro-11 for the implementation
language was made for several reasons, one being the availability of the
assembler on all systems and another being speed and compactness of the
code.
.br
RMS11 was used for RSTS/E and the RSX11M based systems
to provide a common i/o interface to
the host file system. Additionally, Bob Denny of Alisa Systems further
extended the RMS interface to support remote file access over DECNET with
Kermit, allowing commands such as SEND NODENAME::[BRIAN.FUBAR]FILE.TYPE
and other remote file accesses over DECNET. RMS11 version 2 also provides a very
simple and powerful means of doing wildcard searching, file renames and
file deletion via the $PARSE, $SEARCH, $RENAME and $DELETE
macros; it also allows the same RMS interface
code to be used on all systems without
change.
Points against RMS basically amount to it's size, RMS is quite
large even if overlayed. This is helped by using the segmented RMSRES
available on RSTS/E and RSX11M Plus. The one over negative point is that
RMS11 version 2 does not function well, if at all, on the older versions
of PDP-11 operating systems, specifically, one should be using RSTS/E v8
or later, RSX11M v4.1 or later, and RSX11M Plus version 2.1 or later.
.s 1
All versions of Kermit-11
receive eight bit data assuming no parity is used. Where parity is a must,
Kermit-11 has to use a prefixing scheme for eight bit binary data.
Binary files are created as FIXED no carriage control files
such as used for task images. Note that parity generation is done by software
in Kermit-11. The P/OS version of Kermit-11 runs under control of DCL.
The next release
of Kermit-11, which will be 2.37, will include support for the PRO TMS
(Telephone Management System) option.
Each version of Kermit-11 has it's own source file
to deal with the operating system, for RSX it is K11M41.MAC, for RSTS/E they
are K11E80.MAC and K1180S.MAC, and for RT11 they are called K11RT*.MAC.
Apart from these specific files, all other source
files are shared. The RT11 Kermit-11 can use either the version 5.x XL and
XC handler for high throughput, or it can use multiple terminal service to do
all its terminal i/o. This second option allows the use of any
interface supported,
including the PDT150 modem port, DL/DLV11's and DZ/DZV11's.
TSX+ users can connect to CL: for dialing out, the exact means is documented
in the Kermit-11 users guide.
.s 1
Future directions
.s 1
With the advent of packet switched networks and satellite communications
the Kermit protocol will likely be extended to increase efficiency over
such links. The main problem is the half duplex nature of Kermit, the
packet acknowledgements can take up to several seconds in transit thus
drastically reducing the throughput. There are several possibilities under
discussion and a standard should be appearing shortly.
.s 2
Summary
.s 1
With the knowledge that
there are Kermit implementations for most personal computers in use
it becomes apparent that the Kermit standard is well worth looking in to.
A list of versions running
on Digital hardware follows the article.
.lit
Kermit: A File-transfer Protocol for Universities
Frank da Cruz and Bill Catchings
BYTE Magazine, June/July 1984
The Kermit Protocol Manual, version 5
Frank da Cruz April 1984
Columbia University Center for Computing Activities
Information on obtaining Kermit:
KERMIT Distribution
Columbia University Center for Computing Activities
7th Floor, Watson Laboratory
612 West 115th Street
New York, N.Y. 10025
Kermit is also usually found on the Decus symposia SIG tapes.
Kermit-11 is available from DECUS as number 11-731
Digital hardware that Kermit is currently available for:
Operating Program
Machine System Language Contributor
DEC PDP-11 MUMPS-11 MUMPS-1982 Cornell U
DEC PDP-11 RSTS/E Macro-11 U of Toledo
DEC PDP-11 RSX-11/M Macro-11 U of Toledo
DEC PDP-11 RSX-11/M+ Macro-11 U of Toledo
DEC PDP-11 RT-11 Macro-11 U of Toledo
DEC PDP-11 RT-11 OMSI Pascal U of Toronto
DEC PDP-11 TSX+ Macro-11 U of Toledo
DEC PDP-11 Unix 2xBSD C Columbia U
DEC PDP-11, ... Unix V7 C Columbia U
DEC PDP-8 OS8, RTS8 PAL-8 R. Hippe
DEC Pro-3xx P/OS Bliss, Macro Stevens I.T.
DEC Pro-3xx P/OS Macro-11 U of Toledo
DEC Pro-3xx Pro/RT Macro-11 U of Toledo
DEC Pro-3xx Venix V1 C Columbia U
DEC Pro-3xx Venix V2 C Columbia U
DEC Rainbow CPM86 ASM86 Columbia U
DEC Rainbow MS-DOS MASM Columbia U
DEC Rainbow QNX 1.x C Merrell-Dow
DEC VAX Ultrix-32 C Columbia U
DEC VAX VMS Bliss,Macro Stevens I.T.
DEC VAX VMS C (VAX-11 C) Columbia U
DEC VAX VMS Pascal U of Toronto
DEC VAX, ... Unix 4xBSD C Columbia U
DEC VT-180 Robin CPM80 Turbo Pascal Jeff Duncan
DEC VT-180 Robin CPM80 2.2 M80,LASM ACC
DECmate-II,III CPM80 2.2 M80,LASM ACC
DECsystem-10 TOPS-10 Bliss, Macro Stevens I.T.
DECSYSTEM-20 TOPS-20 MACRO-20 Columbia U
.eli