home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / hp9826 / hp9kerdoc.txt < prev   
Text File  |  2020-01-01  |  13KB  |  374 lines

  1.                     HP9826/9836  HP Pascal Kermit
  2.  
  3.                   Mike Gallaher, Rutgers University
  4.  
  5.                            December 1984
  6.  
  7. WARNING: This document isn't finished yet!  Don't be surprised if you
  8. can't find a section cited elsewhere in the document...
  9.  
  10.  
  11. This Kermit is intended to run on the HP9826/9836 workstations under
  12. the HP Pascal Language System.  It depends on various HP Pascal
  13. language extensions, such as modules and string data types.  The
  14. current implementation is minimal - it will only transfer text files,
  15. only one file at a time.  It can talk to a server, but it is not smart
  16. (i.e., no timeouts).  The user interface is display oriented; for
  17. example, this Kermit maintains a continuous status display during file
  18. transfers.  I plan to be adding a lot to this implementation quite
  19. soon, to improve the user command interface, error handling, add login
  20. packets, and maybe binary transfers.
  21.  
  22. This file tells the following -
  23.  
  24.     - the history of this implementation 
  25.     - what (mis)features this Kermit has
  26.     - plans for future development
  27.     - how to get the Kermit sources onto your HP machine
  28.     - how to compile and link HP Kermit
  29.     - how to use this Kermit
  30.     - program structure and internals
  31.  
  32. This implementation is maintained by
  33.  
  34. US mail:            Mike Gallaher
  35.                 Rutgers University
  36.                 Box 879
  37.                 Piscataway, NJ 08876
  38.  
  39. Arpanet 
  40.   (preferred to US mail):    Gallaher@Rutgers.arpa
  41.  
  42.  
  43.  
  44. History
  45. -------
  46.  
  47. This implementation of Kermit for the HP9826/9836 workstations is
  48. based on the RT-11 OMSI Pascal Kermit that was developed by Philip
  49. Murton, University of Toronto Computing Services, and Michael K.
  50. Weisberg, Mount Sinai Hospital.  
  51.  
  52. The protocol support routines are taken mostly intact from the RT-11
  53. version.  The main modifications are in the program structure - it has
  54. been split into modules - in the IO mechanisms, and in the user
  55. interface.
  56.  
  57.  
  58.  
  59. Features of this Kermit
  60. -----------------------
  61.  
  62. This implementation is, at the moment, a minimally functional but
  63. working Kermit.  A lot of extensions are planned, however.  The
  64. important features (marked by +) and misfeatures (marked by -)
  65. of the current version are
  66.  
  67.     - errors not handled gracefully
  68.     - only transfers one file at a time
  69.     - does not handle wild cards
  70.     - only transfers text files
  71.     + continuous status display during file transfers
  72.     + can talk to a server
  73.     - does not handle timeouts
  74.     - only acts as local Kermit
  75.     + reasonably friendly command interface, loosely modeled
  76.       after the TOPS-20 COMND facility.
  77.  
  78. The user interface is based on a primitive window display facility.
  79. There is a window for the status display, one for command echoing, one
  80. for error messages, and one for help messages.  The command input
  81. interface is loosely based on the TOPS-20 COMND parsing facility,
  82. which features keyword recognition, keyword and filename completion,
  83. and dynamically available help messages and guide words.  The Kermit
  84. command interface is much more modest - it allows keyword
  85. abbreviation, but at the moment that's about all.  Soon to be added
  86. are dynamic help messages and keyword completion.
  87.  
  88.  
  89. Future development 
  90. ------------------
  91.  
  92. The following extensions are planned, in my own order of priority:
  93.  
  94.     o Fix the error handling mechanism, which is the most serious
  95.       deficiency.
  96.  
  97.     o Add the ability to send login packets, to work, for example,
  98.       in conjunction with a server on a mainframe for file access
  99.       checking.
  100.  
  101.     o Implement multiple file transfers via single command.
  102.  
  103.     o Fix the command interface so it really works and add help
  104.       messages.
  105.  
  106.     o Implement wild card file transmission.
  107.  
  108.     o Implement binary file transfers.
  109.  
  110.     o Add timeout capability.
  111.  
  112.  
  113. How to get the HP Kermit sources onto your HP machine
  114. -----------------------------------------------------
  115.  
  116. This section tells how to get the Kermit sources onto your HP system,
  117. where they will be compiled and linked (described in the next
  118. section).  I'll outline the procedure first, then describe it in
  119. detail.
  120.  
  121. First, you need to get the source files from the Kermit distribution
  122. tape, or via network from the Kermit repository at Columbia.  You will
  123. load these files onto some convenient system, which I will hereafter
  124. call the host.  Any system that can run Kermit, and onto which you can
  125. somehow get the HP-Kermit source files, will do as a host.  You must
  126. rename the files (see below) and then use a primitive downloading
  127. program to download a baby Kermit to the HP system.  Then you use the
  128. baby Kermit to download the full-fledged Kermit source files.
  129.  
  130. The HP Kermit source files, like those of a few other implementations,
  131. have different names on the distribution tape than they must have on
  132. the system on which they will be compiled and run.  This is done to
  133. make the names agreeable to as many systems as possible (e.g., making
  134. the name less than 9 characters so a VAX/VMS system will like it).
  135. Once the files are on whatever host system you are using (having been
  136. FTPed or copied from the distribution tape), you must rename them
  137. according to the table below before moving them to the target HP
  138. system.  This is VERY important, because if you don't at least change
  139. the extension to .TEXT, the HP file system will store them in the
  140. wrong format, and the editor, compiler, etc. will refuse to have
  141. anything to do with them.
  142.  
  143. Kermit Distrution Name    HP Pascal System Name   Description
  144.  
  145.  HP9KER.PAS                KRMCMD.TEXT            Command Parser
  146.  HP9KER.PAS                KRMGUTS.TEXT           Protocol Module
  147.  HP9KER.PAS                KRMIO.TEXT             I/O Module
  148.  HP9KER.DOC                KRMDOC.TEXT            Documentation
  149.  HP9KER.PAS                KRMMAIN.TEXT           Main Program Modules
  150.  HP9KER.PAS                KRMRPT.TEXT            Error Reporting Modules
  151.  HP9KER.PAS                KRMWNDW.TEXT           Window Management Modules
  152.  (reproduced below)        KRMCOMP.TEXT           Compilation Procedure
  153.  (reproduced below)        KRMLINK.TEXT           Linking Procedure
  154.  
  155. Compiling and Linking this Kermit
  156. ---------------------------------
  157.  
  158. The program source resides in six files, each of which contains one or
  159. more modules (these are more fully documented in the section on
  160. program structure):
  161.  
  162.   KRMMAIN.TEXT        The main program
  163.   KRMCMD.TEXT        Generalized input parsing package, loosely
  164.              based on TOPS-20 COMND facility.
  165.   KRMGUTS.TEXT        Kermit protocol support routines
  166.   KRMIO.TEXT        Byte-oriented string manipulation and IO
  167.              facilities, terminal emulation package
  168.   KRMRPT.TEXT        Error and status reporting routines
  169.   KRMWINDOW.TEXT    Generalized, rudimentary window display
  170.              manager package
  171.  
  172. Each of these files must be compiled, in the order dictated by which
  173. modules depend on which other modules, and then linked together to
  174. form the executable KERMIT.CODE file.  There are two command stream
  175. files provided to do this:
  176.  
  177.     KRMCOMP.TEXT    Compiles all the modules in the right order,
  178.              and then invokes KRMLINK.TEXT to build the
  179.              .CODE file.  Here it is:
  180. CKRMWNDW
  181. N
  182. CKRMRPT
  183. N
  184. CKRMCMD
  185. N
  186. CKRMIO
  187. N
  188. CKRMGUTS
  189. N
  190. CKRMMAIN
  191. N
  192. SKRMLINK
  193.  
  194.  
  195.     KRMLINK.TEXT    Links the modules together into KERMIT.CODE.
  196.             Here it is:
  197.  
  198. LOKERMIT
  199. IKRMWNDW
  200. AIKRMRPT
  201. AIKRMCMD
  202. AIKRMIO
  203. AIKRMGUTS
  204. AIKRMMAIN
  205. ALKQXKERMIT
  206.  
  207.  
  208. All the source files and stream files are expected to be found in the
  209. current default directory.  If they are, then invoking the file
  210. KRMCOMP.TEXT (using the S command at the top level) will compile and
  211. link all the modules, producing a ready-to-run KERMIT.CODE in the
  212. default directory.
  213.  
  214. If you have modified one of the modules, but haven't changed the
  215. interface text, you need only compile that module alone, then invoke
  216. KRMLINK.TEXT.  If you have modified the interface text, say, by adding
  217. a new exported routine, then you may have to recompile any modules
  218. that depend on objects exported from that module.
  219.  
  220.  
  221. How to use this Kermit
  222. ----------------------
  223.  
  224. When Kermit is started, it clears the screen and prints the command
  225. prompt
  226.  
  227. HP-Kermit>
  228.  
  229. and waits for you to enter a command.
  230.  
  231. The valid commands are:
  232.  
  233.     EXIT        Return to top level
  234.     RECEIVE        Request the remote server to send a given file
  235.     SEND        Send a given file to the remote server
  236.     SET        Set flags and operating parameters
  237.     SHOW        Show current flag and parameter settings
  238.     TN        Open a terminal connection to the remote host
  239.  
  240. The command interface is modeled after the TOPS-20 COMND facility.
  241. User input is echoed in the command window as it is typed.  Typing
  242. Backspace (BS) or Delete (CLR LN on the HP) will cause the last typed
  243. character, if any, to be deleted.  CTRL-U will cause the entire line
  244. to be aborted.
  245.  
  246. At present, Kermit only parses one token at a time - if you type "SEND ",
  247. Kermit has already parsed the SEND keyword, and is now expecting a
  248. filename; you can't BS past the space.  This is an annoyance that will
  249. go away in future releases...  For now, the only way you can change
  250. your mind at this point is to type CTRL-U to abort the entire line,
  251. and start over.
  252.  
  253. Typing a question mark ("?") will generally tell you, via a message in
  254. the help window, what Kermit is expecting you to type at that point.
  255. For example, if you type a "?" immediately after the HP-Kermit>
  256. prompt, Kermit will print a list of the valid commands in the help
  257. window.
  258.  
  259. Keywords, such as commands and parameter names, can be abbreviated to
  260. as few characters as makes the keyword unambiguous.
  261. If you type "rec ?" Kermit will recognize the abbreviation for the
  262. RECEIVE command, and then print "Input filespec" in the help window in
  263. response to the "?".
  264.  
  265. Program structure and internals
  266. -------------------------------
  267.  
  268.  
  269.  
  270. System dependencies
  271. -------------------
  272.  
  273. Since this implementation is intended to run only on HP equipment, in
  274. particular the 9836 workstation, it takes advantage of the HP Pascal
  275. language extensions and operating system features, even where this
  276. might make it non-transportable.  The program uses the following
  277. non-standard features:
  278.  
  279.     modules - The program consists of several modules, which
  280.         reside in several different files.
  281.  
  282.     string data types - used extensively in all modules.
  283.  
  284.     try-recover error trapping mechanism
  285.  
  286. parameters are stored in the file as a string of characters as would
  287. be sent in an initialization packet.  This didn't turn out to be very
  288. useful though, as I instead set the defaults using the relevant CONSTs
  289. DEFxxxxx rather than try to figure out how to encode the parameters by
  290. hand.  The parameters in KERMIT.PRM will override the CONSTs if it
  291. exists.  If KERMIT.PRM does not exist, the program will just ignore
  292. it.  (To see if KERMIT.PRM exists, the parameter setting code calls
  293. the Exists procedure (in KRMIO.TEXT), which sets a trap on file open
  294. errors, tries to open the file, notices whether the trap was taken,
  295. and resets the file error trap.)
  296.  
  297. Program structure:
  298.  
  299. This implementation of KERMIT is composed of seven modules:
  300.  
  301.     main program    is the top level program
  302.     KRMCMD    provides a user command interface modeled after, but
  303.         not nearly as comprehensive as, the TOPS-20 COMND
  304.         facility.
  305.     KRMGUTS    contains the routines and data structures that
  306.         actually implement the KERMIT protocol.
  307.     ERR_CODES  defines the error codes used to identify error and
  308.         status conditions
  309.     KRMRPT    provides a uniform error reporting and status display
  310.         facility
  311.     KRMIO    supports the special eight-bit file and serial port
  312.         I/O facilities needed by KRMGUTS
  313.     WINDOWLIB    provides a rudimentary text window facility,
  314.         wherein the screen is partitioned into a number
  315.         of rectangular regions (windows), in which text may be
  316.         displayed.
  317.  
  318.  
  319. The modules reside in six files, as follows:
  320.  
  321.     File        Modules
  322.     --------    ------------
  323.     KRMMAIN        main program
  324.     KRMGUTS        KRMGUTS
  325.     KRMCMD        KRMCMD
  326.     KRMIO        KRMIO
  327.     KRMWNDW        WINDOWLIB
  328.     KRMRPT        ERR_CODES
  329.             KRMRPT
  330.  
  331.  
  332. The heirarchical relation among the modules is as follows:
  333.  
  334.                KRMMAIN
  335.         KRMCMD            KRMGUTS
  336.                     KRMIO
  337.         KRMRPT/ERR_CODES
  338.         KRMWNDW
  339.  
  340. The modules in the left column comprise the user interface, whereas
  341. the modules in the right column implement the Kermit protocol.  The
  342. modules KRMRPT and ERR_CODES, which provide the error and status
  343. reporting mechanism, are used by all modules above them.  The
  344. functions performed by each of the modules is described below.
  345.  
  346.  
  347.  
  348. KRMGUTS is the module that does all the work - it actually implements
  349. the Kermit protocol.  The other modules just interface it to the
  350. operating system's file and serial port I/O, and provide a way for the
  351. user to type commands to KRMGUTS.
  352.  
  353. -----
  354.  
  355. Date: 20 Nov 85 21:59:33 EST
  356. From: Mike Gallaher <Gallaher@BLUE.RUTGERS.EDU>
  357. Subject: HP98xx kermit support
  358.  
  359. Please remove my name from the list as the support contact for HP98xx
  360. kermit.  There are no 98xx's where I now work...  I had forgotten I was
  361. still on the list until I found a couple of queries in my mailbox!
  362.  
  363. The only machine that the HP98xx kermit was actually run on here was
  364. the 9836.  HP Pascal is supposed to be, and seems to be, portable across
  365. at least the 98xx line.  The only questions that people asked me seemed
  366. to arise from library functions moving around in the newer HP releases,
  367. which were solved by looking in their documentation and using the
  368. librarian to hunt them down.  Sorry I can't provide more details than that...
  369.  
  370. thanks,
  371. Mike Gallaher
  372.  
  373. -------
  374.