home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / c / ucmicro.doc < prev    next >
Text File  |  2020-01-01  |  5KB  |  110 lines

  1.      KERMIT UCMICRO is a modification  of  KERMIT  UCSD  (UCTERAK  version)
  2. written  by  Kate  MacGregor of Cornell University.  UCMICRO was created by
  3. Tim Shimeall of the University of California, Irvine, to run on  a  Western
  4. Digital  Pascal  Microengine.   Rather widespread, but superficial, changes
  5. were made in the translation from UCTERAK to UCMICRO KERMIT.  This  version
  6. of KERMIT is written entirely in UCSD Pascal, version III.0, under the Vol-
  7. ition Systems operating system.  It should work on any Pascal  Microengine,
  8. since no version-dependent features were used.
  9.  
  10.      The following files make up KERMIT UCMICRO:
  11. kermit.text - Main program (declarations, show, set  and  connect  commands
  12.               with  file  inclusion  commands  to  bring in the rest of the
  13.               files)
  14. wdforw.text - "forward" declarations for routins in wdprocs.text
  15. help.text - segment procedure to provide on-line assistance
  16. sendsw.text - segment procedure to send files
  17. recsw.text - segment procedure to receive files
  18. parse.text - segment procedure to parse user commands
  19. wdprocs.text - Pascal Microengine specific device drivers
  20. utils.text - general utitility functions
  21. rsutils.text - utitility functions shared by recsw and sendsw segments
  22. help.doc - this file.
  23.  
  24. In the Kermit distribution, the .TEXT files are concatenated together
  25. into a single file, UCMICRO.PAS.  In this file, each file begins with
  26. a line like {>>>> name}, as follows:
  27.  
  28. {>>>> KERMIT.TEXT}
  29. {>>>>WDFORW.TEXT}
  30. {>>>> HELP.TEXT}
  31. {>>>> SENDSW.TEXT}
  32. {>>>> RECSW.TEXT}
  33. {>>>> PARSE.TEXT}
  34. {>>>>WDPROCS.TEXT}
  35. {>>>>UTILS.TEXT}
  36. {>>>>RSUTILS.TEXT}
  37.  
  38. The Pascal Microengine has the UCSD  P-System  interpreter  implemented  in
  39. microcode.   It  therefore has no accessible assembly language, so routines
  40. that were done in assembler under the UCTERAK version had to be  redone  in
  41. Pascal  for  the  UCMICRO  version.  These routines were adapted from a set
  42. written  by  Tim  Shimeall  for  PCNET,  and  are  contained  in  the  file
  43. "wdprocs.text".   Further,  the Microengine is not interrupt-driven, so the
  44. "input queue" approach taken in the UCTERAK version had to be  replaced  by
  45. polling  in  the UCMICRO version.  Once operating, the program had two per-
  46. sistant problems: a) it would run out of memory,  causing  a  program  halt
  47. after each file send and receive, and b) it wouldn't wait long enough for a
  48. packet to arrive.  To free up more memory during file transfers,  the  com-
  49. mand  parser  was  converted  from  a  "unit"  (seperately compiled library
  50. module) to a "segment procedure" (overlay  segment).   The  UCTERAK  KERMIT
  51. version  used a retry counter for packet timing.  The retry limit specified
  52. only allowed for a 1 second tolerance on the Pascal Microengine (a Microen-
  53. gine  is  about  4  times  faster  than  a  Terak).  UCMICRO has a machine-
  54. dependent package timeout feature, using a retry counter in a loop of known
  55. duration as a clock.
  56.  
  57.      UCMICRO has the following limitations:
  58.    a) No wild card designations of file names
  59.    b) No eight-bit file quoting
  60.    c) No character repeat counts
  61.    d) No '?' and <esc> at the end of a command line.
  62.    e) No server communications
  63.    f) Sending and receiving cannot be done on anything but .TEXT files  (which
  64.       contain  a  two  block  header  and  space compression codes, and are
  65.       divided into two-block "pages" which are padded with nulls to  ensure
  66.       an integral number of lines in each "page").
  67.    g) Only one file is sent at a time (a  break  packet  is  sent  after  each
  68.       file).
  69.  
  70.      KERMIT UCMICRO has been thoroughly tested in  connections   with  UNIX
  71. KERMIT,  but errors may persist.  In particular, since polling has replaced
  72. interrupts in this version, characters may occasionally be lost.   However,
  73. character loss has NOT been observed during testing of the final version of
  74. KERMIT UCMICRO.
  75.  
  76.      The commands recognized by KERMIT UCMICRO are the same  as  those  for
  77. KERMIT UCTERAK.
  78.  
  79. Another limitation on UCSD-KERMIT (shared between UCTERAK and the UCMICRO
  80. version): Each line in the file received can be no longer than 80 characters.
  81. There's a "quick fix" for this, but since I hope to make the file transfer
  82. capacity more general later on, I'll just list the fix here:
  83.  
  84. To make the maximum length 255 chars instead of 80:
  85.  
  86.   1) delete the first two statements and the declarations of
  87.      the variables 'ls:integer' and 's:string' from the
  88.      procedure "bufemp" in the file RSUTILS.TEXT
  89.   2) Add the following two statements to the procedure
  90.      "initialize" in the file KERMIT.TEXT:
  91.        s:=''; (* note: two single quotes with nothing between *)
  92.       ls:=0;
  93.   3) change the declaration of "s:string" near line 129 of the
  94.     file KERMIT.TEXT to
  95.       s:string[255];
  96.   4) add the following line immediately after the declaration of
  97.      "s:string[255]" (line 129 of KERMIT.TEXT):
  98.       ls:integer;
  99.  
  100. What this does is to move "s" and "ls" (length of s) out to become
  101. global declarations ("s" is otherwise unused), and to expand "s"'s
  102. maximum length to 255 (maximum allowed by UCSD).
  103.  
  104. As I said, I hope to make a more general file transfer mechanism soon
  105. (which will permit data and code files to be transferred as well as
  106. text), but "soon" can be a relatively long period of time.
  107.  
  108. Maybe this fix can also be made to the other UC versions of kermit.
  109.                 Tim
  110.