home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / dec20 / k20mit.txt < prev    next >
Text File  |  2020-01-01  |  13KB  |  267 lines

  1. DECSYSTEM-20 KERMIT 5.1 UPDATE NOTES
  2.  
  3.   Frank da Cruz
  4.   The Kermit Project
  5.   Columbia University
  6.   http://www.columbia.edu/kermit/
  7.  
  8.   6 Jan 2006
  9.  
  10. Summary:
  11.  . 5.1(263) 2001-01-28: Long packets.
  12.  . 5.1(264) 2001-08-06: Buffered packet reading.
  13.  . 5.1(266) 2003-08-03: ARPANET/Internet improvements, bug fixes.
  14.  . 5.1(186) 2006-01-06: Decimal version number, fix restoring term modes, etc.
  15.  
  16. Version 5.1(263) of DECSYSTEM-20 KERMIT, released 28 January 2001 (the
  17. first change in 13 years) supports long packets.  This was never done
  18. before because long packets would break the DEC-20 front end hardware and
  19. OS (PDP-11/40 with DH11s and RSX20F) and crash the DEC-20.  But as far as
  20. I know, no real KL-10 based DEC-20s exist any more; all current DEC-20s
  21. are either 2020s (which don't have PDP-11 front ends), non-DEC clones, or
  22. else running on other hardware under emulation.  So now you can use DEC-20
  23. Kermit to transfer files with packets up to 9K in length; the previous
  24. maximum was 94 bytes.  This gives speed improvements up to about a factor
  25. of 20 (i.e. 2000%).  Long packets have been tested only on Telnet
  26. connections INTO the DEC-20.  They have not been tested on serial
  27. connections or on outbound connections of any kind.
  28.  
  29. This update was made in anticipation of the release of publicly available
  30. PDP-10 emulators running under Linux, Windows, or other common platforms.
  31. Since the emulator will not necessarily have Internet support, a way is
  32. needed to import and export files: DEC-20 Kermit (the very first Kermit
  33. program) lives again!  Now when you log in to the DEC-20 (or emulator) from
  34. a PC or other computer running a Kermit-capable terminal emulator, you can
  35. run DEC-20 Kermit to exchange files with your computer, and the transfers
  36. will not be as agonizingly slow as they would have been without this update.
  37.  
  38. To use long packets, tell the file receiver (DEC-20 Kermit or the other
  39. Kermit) to:
  40.  
  41.   SET RECEIVE PACKET-LENGTH xxxx
  42.  
  43. where xxxx is the desired packet length, e.g. 1000, 2000, 4000, etc.
  44. Obviously if some big length doesn't work, try a shorter one (in my testing,
  45. all lengths up to 9000 worked).
  46.  
  47. Version 5.1(264), 6 August 2001, adds another performance improvement.
  48. Previously, file-transfer packet input was read a byte at a time with BIN
  49. (Byte In) monitor calls, which is quite expensive.  This was not a
  50. bottleneck in the 9600bps days, but now it is.  So I changed the packet
  51. character-input routine (inchar) to read in gulps: SIBE to see what's
  52. waiting, SIN to read that many, and BIN only if nothing is waiting or
  53. nothing was read by SIN.  On my NYC-to-CA Telnet connection, sending a file
  54. to the DEC-20, performance improved between 30% and 100% over several
  55. trials.  That's with a 400K file, using 4000-byte packets and a 1K packet
  56. input buffer.  STAT after a RECEIVE command shows the number of ILDBs (load
  57. byte from buffer), SINs, and BINs.  The fewer SINs and BINs, the better.
  58. The maximum SIN gulp always seems to be 251, which is probably a limitation
  59. of the underlying TCP/IP stack, so there would seem to be no point in
  60. increasing the SIN buffer size.  Note: Packet sending was already buffered;
  61. packets are sent with a SOUT% in spack.
  62.  
  63. A few cautions are in order about using DEC-20 Kermit as the file transfer
  64. partner of modern Kermit programs:
  65.  
  66.  1. DEC-20 Kermit can accept unprefixed control characters except for
  67.     0, 1, 3, 13, 15, 17, 19, and 20, and their 8-bit doppelgangers.  In
  68.     case sending to the DEC-20 fails consistently, tell the other Kermit to
  69.     SET PREFIXING ALL and SET CLEAR-CHANNEL OFF.  (Instead of SET PREFIXING
  70.     ALL you could also use SET CONTROL PREFIX MINIMAL, SET CONTROL PREFIX
  71.     0 1 3 13 15 17 19 20).
  72.  
  73.  2. There are no sliding windows, streaming, or other modern conveniences.
  74.     They might improve performance a bit more, but not nearly as much as
  75.     long packets and buffered reads.  The lack of these features does not
  76.     cause a problem since they are negotiated automatically in the
  77.     protocol.  (Adding them, on the other hand, would be a major project.)
  78.  
  79.  3. DEC-20 Kermit does not support Attribute packets so size, type, and
  80.     date information is not relayed automatically from sender to receiver.
  81.  
  82.  4. DEC-20 Kermit doesn't have SET FILE TYPE { TEXT, BINARY } commands like
  83.     other Kermits do.  Nevertheless, it is possible to transfer text,
  84.     native 36-bit binary, and foreign 8-bit binary files back and forth,
  85.     but you must follow the instructions in the manual.  Here's a brief
  86.     summary:
  87.  
  88. Let's say you have a PC running DOS, Windows, or UNIX with MS-DOS Kermit,
  89. C-Kermit, or Kermit 95, that has a TELNET connection to a DEC-20 or
  90. emulator.  Then:
  91.  
  92.   To transfer an ASCII text file between the DEC-20 and the PC:
  93.     Tell the PC Kermit to "set file type text" and then transfer the file.
  94.     This is equivalent to FTP TYPE ASCII.
  95.  
  96.   To transfer a 36-bit binary file between the DEC-20 and the PC:
  97.     Tell the PC Kermit to "set file type binary".
  98.     Then transfer the file.
  99.     This is equivalent to FTP TYPE BINARY.
  100.  
  101.   To transfer an 8-bit binary PC file between the PC and the DEC-20:
  102.     Tell the PC Kermit to "set file type binary".
  103.     Tell DEC-20 Kermit to "set file byte 8".
  104.     Then transfer the file.
  105.     This is equivalent to FTP TYPE TENEX.
  106.  
  107. Among other tests, the new Kermit-20 was used to receive its own source file,
  108. which was then assembled, linked, and run.  The new KERMIT.EXE was used
  109. to send itself to a PC, and then to receive the copy of itself that it had just
  110. sent, and then this copy was run to do the same things again.
  111.  
  112. Installation instructions:
  113.  
  114.   Download the new Kermit source (one file) in text mode from the
  115.   Kermit Project archive in text ("ASCII") mode:
  116.  
  117.     ftp://kermit.columbia.edu/kermit/d/k20mit.mac
  118.  
  119.   Note: this is a MACRO-20 source file; it is not any kind of "package",
  120.   tarball, ZIP archive, compressed, encrypted, or anything else.  It's
  121.   just PLAIN TEXT (if you use DEC-20s you know what plain text is).
  122.   Rename it to KERMIT.MAC, then:
  123.  
  124.     load kermit
  125.     save
  126.  
  127. This produces a KERMIT.EXE file, which is DEC-20 Kermit.  Install it
  128. somewhere in SYS:, or else redefine SYS: to include the directory where
  129. KERMIT.EXE is, or run it out of its own directory with "r kermit".
  130. Give it execute permission, e.g. P775252.  Documentation is here:
  131.  
  132.   Plain text:
  133.     ftp://kermit.columbia.edu/kermit/e/kuser.doc
  134.     ftp://kermit.columbia.edu/kermit/d/k20mit.doc
  135.  
  136.   PostScript:
  137.     ftp://kermit.columbia.edu/kermit/e/kuser.ps
  138.     ftp://kermit.columbia.edu/kermit/d/k20mit.ps
  139.  
  140. The manual has not been updated (this document is the update).  "kuser" is
  141. the old 1980s Kermit User Guide; "k20mit" is the DEC-20 chapter.  Note that
  142. ".DOC" is used in the original sense; these are not MS Word files.  All
  143. files listed above should be transferred in text ("ASCII") mode.
  144.  
  145. Note: DEC-20 Kermit is not a Telnet client, and so can't make Telnet
  146. connections.  But since it knows how to make serial connections, most of
  147. the needed code is there; only the network-specific pieces for opening the
  148. connection (gethostbyname, connect, etc) and executing at least a minimal
  149. TELNET protocol are missing and could be added in event that a PDP-10
  150. emulator appears that is capable of running TOPS-20 6.0 or later, with
  151. built-in ARPANET support and Ethernet drivers.  Earlier TOPS-20 versions
  152. required an outboard IMP Interface (AN20) (except maybe TOPS-20 4.1 on
  153. the KS-10).
  154.  
  155. Also note that there is no kind of internationalization whatsoever; no
  156. character-set translation and no special support for 8-bit text.  While you
  157. might be able to transfer 8-bit text (e.g. Latin-1), you can't have 8-bit
  158. filenames because TOPS-20 doesn't support them.
  159.  
  160. ---------------------------------
  161. From Tom De Bellis, December 2003:
  162.  
  163. I merged in [Mark Crispin's] PANDA network binary mode under a
  164. conditional.  If the PANDA MTOPR% fails for any reason, then I revert to
  165. the old way of poking the TAC or host.  While I was at it, I fixed a
  166. couple of minor bugs.  In particular, reslin and subroutines now always
  167. load the terminal jfn, as there were cases where they were trying to clear
  168. the output buffer of .FHSLF!  I wonder what CFOBF%ing a fork should do?
  169. Clear the memory?  :-)
  170.  
  171. Next, I put in code to automatically recognize whether the selected line
  172. is a TVT or not and put the line into binary mode.  In particular,
  173. (stable) 6.0 series monitors have the NTINF% Jsys which says what kind of
  174. line you're on.  The feature definitely works in 7 series monitors.
  175. However, just in case it gronks, I fall back to doing it the old way with
  176. STAT% (which also works).
  177.  
  178. I updated the user interface a little to control the new functionality.  I
  179. added an additional keyword to the set TVT-Binary command: 'automatic' and
  180. made it the default.  When Kermit is in automatic TVT-Binary negotiation
  181. mode, it uses the above code to determine TVT-ness.  However, I allow
  182. overrides 'set TVT-Binary {on|off}' to maintain compatibility.  Finally, I
  183. updated the program's internal help documention.
  184.  
  185. Program performance in certain cases has been stellar.  While running
  186. C-Kermit on MAC OS 10.2, I was getting data rates from the 20 that
  187. exceeded what I could transfer with FTP (which is part of the reason that
  188. I am re-writing part of FTPSER).  Data rates to my laptop running Windows
  189. 2000 have been good, although not as good as the iMac.
  190.  
  191. The problem with assymmetric transfer speeds with Kermit turns out to be
  192. with KLH-10 itself.  For some reason, it is faster to transfer files out
  193. of the 20 than it is to transfer them into the 20.  As an example, for a
  194. 104 page file, I got 7.54 KBs/s when I put the file to the 20 from my
  195. Windows 2000 laptop.  When I pulled the file (get), my transfer rate went
  196. to 39.90 KBs/s, more than five times as fast.
  197.  
  198. (End of Tom's remarks)
  199.  
  200. Translation: your mileage may vary according which PDP-10 emulator you are
  201. using (or which PDP-10!); as far as I know there's only one Telnet server
  202. for TOPS-20, so that shouldn't be a factor.  When I added long packet
  203. support in 2001, it was done on real KL-10 hardware (XKL), and I didn't
  204. notice any big discrepancy in send and receive rates over a Telnet
  205. connection, but since the XKL is no longer accessible to me I can't repeat
  206. the experiment.
  207.  
  208. Tom's new version was used to download itself from KLH-10, along with a
  209. 2MB JPG ("set file byte 8") for the DEC-20 historical archive (from when
  210. Tom was in Columbia's DEC-20 Systems Group in the 1980s).  It took a few
  211. tries to get the JPG across.  Unlike when running Kermit-20 on the XKL, I
  212. had to crank the packet length back to something like 500, and still got a
  213. 5% (correctable) error rate.
  214.  
  215. Tom's new version was installed at the Kermit Project ftp site 3 Dec 2003.
  216.  
  217. ---------------------------------
  218. From Tom De Bellis, January 2006:
  219.  
  220.  . Properly save and restore terminal dimensions.  The original code didn't 
  221.    work (e.g.) for 132 columns.
  222.  . Change program version number to be decimal rather than octal, to agree
  223.    with EXEC.
  224.  . Make Kermit work after QUIT, DETACH, and CONTINUE
  225.  
  226. See comments at top of code for details.
  227.    
  228. To this I added version date display to the startup herald and SHOW VERSION
  229. command.  Why not?  It's been 25 years.  This is version 5.1(186) 6-Jan-2006.
  230. As a concession to modern times, I also made a PDF version of the Kermit-20
  231. manual:
  232.  
  233.   ftp://kermit.columbia.edu/kermit/d/k20mit.pdf
  234.  
  235. Other notes: it seems to be almost impossible to transfer files on a Telnet
  236. connection into the KLH10 emulator with Kermit at speeds anywhere above
  237. 200cps.  Transfers out of it go at more like 7000cps.  But when Kermit-20 is
  238. receiving, the packet length has to be 80 or less or the whole session
  239. freezes forever.  Even with 80 byte packets there are lots of errors and
  240. retries, usually enough to kill the transfer if the file is long enough.  I
  241. don't know if it's KLH10 itself, or the firewall/NAT in between here and
  242. there.  It doesn't happen on real DEC-20 hardware (e.g. Telnet into the
  243. former TOAD-1).  The behavior is reminiscent of RSX-20F when data was coming
  244. in too fast -- it would simply set the DH11 line speed to 0 for a second or
  245. to, to give itself a chance to catch up.
  246.  
  247. A couple things that are very annoying could be easily fixed:
  248.  
  249.  . There's no way to escape out of the Kermit-20 packet reader.
  250.    C-Kermit uses ^C^C^C, which has proven safe and effective.
  251.    This should be added to rpack.
  252.  
  253.  . Kermit-20 doesn't let the GET command be issued when it's in
  254.    remote mode, which inhibits autoupload.  Just take the check out.
  255.  
  256. A somewhat larger project would be to implement Attribute packets.
  257.  
  258. As noted earlier, it would be nice to have a Telnet client too, if only
  259. for use by old-timers, since Telnet servers have virtually disappeared from
  260. all modern platforms (despite the fact that Telnet secured by SSL, TLS,
  261. or GSSAPI is more secure and more capable than the SSH setup that displaced
  262. it -- and FTP into the bargain).
  263.  
  264. - fdc, 6 Jan 2006
  265.  
  266. (End)
  267.