home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / hp2647 / hp264xdoc.txt < prev    next >
Text File  |  2020-01-01  |  21KB  |  418 lines

  1. 1. HP264x KERMIT (Rover-Kermit)
  2.  
  3. Program:       John F. Chandler (Harvard/Smithsonian Center for Astrophysics)
  4. Language:      8080 Assembler
  5. Version:       1.2
  6. Date:          August 1987
  7. Documentation: John F. Chandler (CfA)
  8.  
  9.   Rover-Kermit Capabilities At A Glance:
  10.  
  11.   Local operation:                   Yes
  12.   Remote operation:                  No
  13.   Transfers text files:              Yes
  14.   Transfers binary files:            Yes
  15.   Wildcard send:                     N/A
  16.   ^X/^Z interruption:                Yes
  17.   Filename collision avoidance:      N/A
  18.   Can time out:                      Yes
  19.   8th-bit prefixing:                 Yes
  20.   Repeat count prefixing:            Yes
  21.   Alternate block checks:            Yes
  22.   Terminal emulation:                Host
  23.   Communication settings:            Host
  24.   Transmit BREAK:                    Host
  25.   IBM communication:                 Yes
  26.   Transaction logging:               No
  27.   Session logging (raw download):    Host
  28.   Raw upload:                        Host
  29.   Act as server:                     No
  30.   Talk to server:                    Yes; SEND, GET, FIN, LOGOUT
  31.   Advanced commands for servers:     Yes; GENERIC, HOST, KERMIT
  32.   Local file management:             N/A
  33.   Handle file attributes:            No
  34.   Command/init files:                Host
  35.   Printer control:                   Host
  36.  
  37. 1.1. Summary of HP264x-Series Terminals
  38.   The  2640-series  work stations combine terminal functionality with a variety
  39. of programmability and graphics features.   The  members  of  the  series  (all
  40. driven  by  8080's)  share  a  common  set  of  ROM system entries for display,
  41. telecommunications, and device I/O, as well as  a  built-in  loader  driven  by
  42. escape  sequences with addresses and data expressed as octal character strings.
  43. The loader is not, however, a  linking  loader  --  it  accepts  only  absolute
  44. addresses and data.
  45.  
  46.   Various  members of the series offer storage devices in the form of cartridge
  47. tapes and diskettes.  However, the diskettes are  not  used  as  random  access
  48. media,  rather as fast "tapes".  This chapter will speak of all such devices as
  49. tapes.
  50.  
  51.   The combination of absolute loader and primitive file system  tends  to  push
  52. software  design  toward  monolithic  programs  fitting into preassigned memory
  53. regions with immovable, globally known entry vectors.  Insofar as the operating
  54. system  entry  vectors  are the same among the different members of the series,
  55. these restrictions are an advantage in terms of software portability.   Another
  56. result  of  these  limits  is  that  many  customary  Kermit functions, such as
  57. interactions with the local file system, are infeasible.  At the same time, I/O
  58. is  generally a simple matter for an application program, such as Kermit, since
  59. "one call does it all."
  60.  
  61.   Rover-Kermit was developed on a 2647, which contains 64K of RAM  in  addition
  62. to  64K of bank-switched ROM.  Others in the series generally have no more than
  63. 64K total RAM+ROM, and certain system entries will vary accordingly along  with
  64. the  method of calling them.  On the 2647, Kermit operates as a memory-resident
  65. system extension which can supersede the normal terminal function when  needed.
  66. The  2647, being highly programmable, can be loaded with alternate state tables
  67. to emulate practically any other kind of terminal regardless of whether  Kermit
  68. is  present.    The  programmability  of the others in the series varies -- the
  69. 2648, in particular, can not be set up to emulate other terminal types.
  70.  
  71. 1.2. Rover-Kermit Description
  72.   Since Rover-Kermit runs on a standalone terminal, it is always in control  of
  73. the  screen  --  it  is always local.  Thus, it always keeps the screen updated
  74. with the file name  and  the  packet  and  retry  counts,  whether  sending  or
  75. receiving.    See below for details of the screen layout.  Because it is local,
  76. Rover-Kermit also monitors the keyboard  and  interrupts  a  file  transfer  in
  77. either direction upon recognizing a CTRL-X or CTRL-Z.  As always in such cases,
  78. Rover-Kermit can stop unconditionally when sending but must rely on cooperation
  79. from the remote Kermit when receiving.
  80.  
  81.   Rover-Kermit  can call a timeout exit from a telecommunications input request
  82. and thereby break deadlocks automatically.  The timeouts done  by  Rover-Kermit
  83. are "fuzzy" because they depend on the speed of the processor, the verbosity of
  84. the operating system code, and on the amount of keyboard  activity.    For  the
  85. usual 2-MHz clock rate the timeout should closely approximate that requested by
  86. the remote Kermit anywhere up to 64 seconds.  However, a  request  of  zero  is
  87. treated  as 64, and requests over 64 are taken modulo 64.  The timeout can also
  88. be disabled by command.
  89.  
  90.   If despite the timeout capability, the transmission appears to be stuck, then
  91. manual intervention is probably needed above and beyond the usual response to a
  92. timeout (namely to retransmit the last packet or to NAK the expected packet  to
  93. cause  the  remote  host to send it again).  In that case, the user may depress
  94. the CNTL and  both  shift  keys  simultaneously  to  gain  keyboard  access  to
  95. telecommunications.    At  that  point  any  string  of  characters  up to, and
  96. including, a carriage return may be typed at the remote host to prompt  further
  97. activity.    The  string  will  also be echoed locally regardless of the duplex
  98. setting.  Since Kermit displays all characters transmitted by the  remote  host
  99. (except those within packets), the string will be displayed twice if the remote
  100. host also echoes.  In any case, the record of the preceding non-packet  traffic
  101. should indicate what is needed to restart the transmission.  If all else fails,
  102. the  transmission  can  be  halted  by  pressing  the  "RESET  TERMINAL"   key.
  103. Rover-Kermit  will then restart and wait for commands (such as QUIT).  One note
  104. of warning: halting a transfer to or from tape will result in  the  abandonment
  105. of  an  entry  in  the  Active File Table.  Eventually, the entire table can be
  106. filled with abandoned entries, and it will  be  necessary  to  Hard  Reset  the
  107. terminal to recover the "lost" entries.
  108.  
  109.                                  SCREEN LAYOUT
  110.  
  111.   While  Rover-Kermit  is  running, the upper right corner of the screen always
  112. shows a list of Kermit commands.  The remainder of the top eight lines are used
  113. for  displaying  Kermit's  status.   Figure 1-1 shows a snapshot of the display
  114. after a successful GET.  The top line always shows Kermit's version number, and
  115. the  second  line  provides  a mnemonic label for the third, which displays the
  116. data Rover-Kermit will use for Send-Init negotiations.   The  third  line  also
  117. shows an asterisk under the word Core or Tape to indicate which form of storage
  118. is selected, plus the current  definitions  of  the  input  and  output  "tape"
  119. devices.    The  fourth  line  (the  Program  State line) shows the most recent
  120. command (or error message from the remote  Kermit).    The  fifth,  sixth,  and
  121. seventh  lines  show  the most recent file transmitted and the packet and retry
  122. counts.  The eighth line (the Message line) shows the most recent  user  prompt
  123. or  error message, or else the Value-specified parameters after a PARM command.
  124. The remainder of the screen constitutes a  window  into  the  scrolled  display
  125. workspace  of  the  terminal.    Text  replies  from  a  remote  Server and any
  126. non-packet traffic during a transfer are added to the bottom of the  workspace.
  127. While Rover-Kermit is running, the display can be scrolled by means of the ROLL
  128. UP, ROLL DOWN, HOME, and HOME DOWN keys (as during normal operation).
  129.  
  130.  
  131. -------------------------------------------------------------------------------
  132. Rover Kermit 1.2                        Send, Receive, ...
  133.             Btpp."8BR                   Core, Tape, Kermit, ...
  134.      Parms: ~# @-#Y1~  Src: L  Dst: R   *
  135. Get
  136.       File: GOOD.DATA
  137.     Record: 126
  138.    Retries: 0
  139. Transfer done
  140. -------------------------------------------------------------------------------
  141.  
  142.                 Figure 1-1:   Screen snapshot after GET command
  143.  
  144.                              ROVER-KERMIT COMMANDS
  145.  
  146.   Rover-Kermit uses a minimal set of commands, each  abbreviated  to  a  single
  147. letter.   Options, if any, will be requested by a subsequent prompt.  While you
  148. are responding to a prompt,  the  characters  you  type  will  be  upcased  and
  149. displayed  on  the  Message  line,  and both DEL and BACKSPACE will back up the
  150. cursor and remove the last character from the response string (though not  from
  151. the  display).  Other control and function keys will be ignored (except RETURN,
  152. which terminates your response).  During operation,  Rover-Kermit  maintains  a
  153. display  of  all  possible  commands  (and  subcommands where appropriate), but
  154. offers no other HELP facility.
  155.  
  156. SEND    Send the current file to the remote Kermit.  Kermit will prompt you for
  157.         the  filename,  but you need not enter one; if you just type a carriage
  158.         return, Kermit will use a default name.  In the case of a RAM file, the
  159.         default  is  the name received with the file.  However, for a tape file
  160.         there is no name available, and the default is "A.B".
  161.  
  162. RECEIVE Receive file(s) from the remote  Kermit.    Store  them  on  successive
  163.         output  tape files.  Note: if you are receiving into the RAM file, each
  164.         file received will overwrite any previous one.
  165.  
  166. GET     When Rover-Kermit is talking to a Kermit Server on the remote host, you
  167.         should  use the GET command to request the server to send files to you.
  168.         You will be prompted for the file name.
  169.  
  170. LOGOUT  When talking to a remote Kermit Server, this  command  shuts  down  the
  171.         server  and  logs  it  out,  and also exits from Rover-Kermit to normal
  172.         terminal operation.  To protect you against inadvertantly striking  the
  173.         "L" key, Kermit prompts you for confirmation of the LOGOUT command.
  174.  
  175. FINISH  Like LOGOUT, but shuts down the remote server without logging it out.
  176.  
  177. QUIT    Exit to normal terminal operation.
  178.  
  179. KERMIT  Send a command to a remote Kermit Server.  You will be prompted for the
  180.         command type (C for a remote host command, K for a Kermit command, or G
  181.         for a generic Kermit command) and the text.  The command character will
  182.         not be displayed, but the command will appear on the  Message  line  as
  183.         you type it.  Any reply will be displayed on the screen.
  184.  
  185. CORE    Specifies input/output to the RAM file, up to 32K characters in length.
  186.  
  187. TAPE    Specifies  input/output  to  the cartridge tape units or other devices.
  188.         The default device names under this option are L(eft tape)  and  R(ight
  189.         tape)  for  input and output, respectively, but they may be reversed or
  190.         set to any of the other possibilities, namely, S(ource), D(estination),
  191.         G(raphics),  N(ull),  or  U(serio).    These  represent  the  SOURCE or
  192.         DESTINATION assignments in the  terminal,  the  display  (graphics  for
  193.         input,  alpha for output), a null file, or an optional I/O device.  See
  194.         the terminal documentation for more details.  The devices are  selected
  195.         via the PARM command.
  196.  
  197. PARM    Sets  or  changes  a  parameter  for Kermit operation.  This command is
  198.         divided into four sub-functions, each in turn abbreviated to  a  single
  199.         keystroke  (oN, oFf, Char, or Value), and each sub-function can operate
  200.         on any one of  a  list  of  parameters.    See  below  for  a  detailed
  201.         description of the parameters and keystroke sequences.
  202.  
  203.                           SETTING/CHANGING PARAMETERS
  204.  
  205.   Parameters  for  Rover-Kermit operation may be set by sequences of keystrokes
  206. typed while Kermit is running.  Kermit provides a menu of possible  options  on
  207. the Program State line to guide in the entry of such sequences.  All alphabetic
  208. keys are taken as upper  case.    Sequences  consist  of  at  least  a  "P",  a
  209. sub-function, and a parameter name.  The Value sub-function takes, in addition,
  210. a decimal number entered before the parameter name.  The number must be entered
  211. with  no  imbedded  blanks  or  commas.   The values of all such parameters are
  212. displayed (in decimal) on the Message line after a PARM command completes.  The
  213. Character  sub-function,  on the other hand, takes a character argument entered
  214. after the parameter name.  Character parameters are  permanently  displayed  on
  215. the  third  line,  but  the  ON/OFF parameters (other than the eighth-bit flag,
  216. which doubles as a character parameter) are not displayed at all.
  217.  
  218. BLOCK   PCB<n> sets the block check type to <n>.  Available options are  1  and
  219.         2.  The default is 1.
  220.  
  221. BUFSZ   PV<n>B  sets  Rover-Kermit's  buffer length to <n>.  The valid range is
  222.         20-94, and 94 is the initial value.
  223.  
  224. DEST    PCD<c> sets the output device code to <c>.  The default is R, and other
  225.         possible values are L, S, D, G, N, and U. See also the TAPE command.
  226.  
  227. HNDSHK  PV<n>H  sets  the  IBM  turnaround character to <n>.  The default is 17
  228.         (XON), but any value 1-31 is valid.
  229.  
  230. IBM     P(N|F)I  sets  the  "IBM"  flag.    "ON"  (the  default)   means   that
  231.         Rover-Kermit  waits  for  the  turnaround  character before sending any
  232.         packets (see HNDSHK above).
  233.  
  234. MARK    PV<n>M sets the packet start character to <n>.  The default is 1 (SOH),
  235.         but any value 1-31 is valid.
  236.  
  237. QUOTE   PCQ<c>  sets  the  control  quote  character  to  <c>.   The default is
  238.         #. Note: letters may not be used for this character because the command
  239.         interpreter upcases all keystrokes.
  240.  
  241. RETRY   PV<n>R  sets the packet retry limit to <n>.  The default is 10, but any
  242.         value 1-199 is valid.
  243.  
  244. RPTQ    PCR<c> sets the repeat prefix character to <c>.  The default is ~.
  245.  
  246. SOURCE  PCS<c> sets the input device code to <c>.   The  default  is  L.  Other
  247.         possible values are R, S, D, G, N, and U. See also the TAPE command.
  248.  
  249. TIME    PV<n>T  sets the timeout limit to <n>.  The default is 3, but any value
  250.         1-94 is valid.
  251.  
  252. TIMER   P(N|F)T sets the timer on or off.  The default is ON.
  253.  
  254. 8-BIT   P(N|F)8 sets the 8th bit prefix option on or off.  "ON"  (the  default)
  255.         permits 8th-bit quoting if the remote Kermit requests it.
  256.  
  257. 8-BIT   PC8<c>  sets  the  8th bit prefix character to <c>.  Note:  letters may
  258.         not be used for this character because the command interpreter  upcases
  259.         all keystrokes.
  260.  
  261.   Since Rover-Kermit is permanently resident, its configuration can also be set
  262. or examined from without by typing loader sequences or display commands at  the
  263. operating  system.    Table  1-0  gives  a list of memory locations that may be
  264. altered to change the Kermit defaults.    Such  settings  may  be  combined  as
  265. desired  to obtain any particular configuration, and, since loader commands may
  266. come from any source, such commands may be called out from a tape file or  sent
  267. by the remote host for convenience.  Aside from this packaging property and the
  268. capacity for setting the I/O  to  HP-IB  devices,  these  loader  commands  are
  269. obviously  less  convenient  than  the  usual  command  sequences.  Among other
  270. things, they can be executed only when Rover-Kermit is not running.   Note:  an
  271. I/O device code is actually a string ending with a carriage return, stored in a
  272. nine-byte array.  The carriage return must always follow immediately after  the
  273. device code.
  274.  
  275. -------------------------------------------------------------------------------
  276.  
  277. Name    Address Values
  278. BKTP    106773  Block check type.  Default is 1 (61).
  279. BUFSZ   106732  Buffer length for INIT.  Default is 94. (176).
  280. DEST    107552  Output device code.  Default is R (122).
  281. DPTQ    106725  Repeat prefix character.  Default is ~ (176).
  282. HNDSHK  104144  IBM turnaround character.  Default is XON (21).
  283. IBM     104155  315 if on, 1 if off.  Default is ON.
  284. MARK    105463  Packet start character.  Default is SOH (1).
  285. QUOTE   106720  Quote character.  Default is # (43).
  286. RETRY   105655  Retry limit.  Default is 10. (12).
  287. SOURCE  107605  Input device code.  Default is L (114).
  288. TIME    106741  Timeout limit for INIT.  Default is 3. (43).
  289. TIMER   105116  312 if on, 332 if off.  Default is ON.
  290. 8-BIT   106772  8th bit quote option.  Default is Y (131).
  291.  
  292.         Table 1-1:   Settable locations (addresses and values in octal)
  293.  
  294.  
  295. -------------------------------------------------------------------------------
  296.  
  297.   For example, to assign the output to a printer on HP-IB#7, enter 
  298.  
  299.     <ESC>&c 107552a 110d 43d 67d 15D
  300.  
  301.   To set the output back to the right tape, enter 
  302.  
  303.     <ESC>&c 107552a 122d 15D
  304.  
  305.   To set the 8th-bit prefix to lower-case "z", enter 
  306.  
  307.     <ESC>&c 106772a 172D
  308.  
  309.                                 ERROR MESSAGES
  310.  
  311.   Error messages from Rover-Kermit are largely self-explanatory but brief.  For
  312. conditions that terminate a file transfer, the same message is  both  displayed
  313. on  the  screen (on the Message line) and sent to the remote Kermit as an Error
  314. packet.  In fact, whenever a transfer completes, some message  will  appear  on
  315. the  Message  line,  usually  accompanied  by  an  audible  tone.   The beep is
  316. suppressed only when a very short file transfer completes normally.
  317.  
  318. Remote host aborted  specifies that the remote Kermit issued an error packet.
  319.  
  320. Bad INIT data        specifies disagreement over the control quote character.
  321.  
  322. I/O error            specifies a tape I/O error or overflow of the RAM file.
  323.  
  324. Split prefix         specifies that a byte specification  is  apparently  split
  325.                      between packets.
  326.  
  327. Bad repeat count     specifies  that  Rover-Kermit  has  attempted  to decode a
  328.                      non-positive repeat count.
  329.  
  330. Bad packet type      specifies that Rover-Kermit has received an  invalid  type
  331.                      of packet.
  332.  
  333. Retry limit - <c>    specifies  that Rover-Kermit has found an error repeatedly
  334.                      up to the retry limit.  The last character indicates  what
  335.                      kind  of  error:  K => packet out of sequence, N => NAK or
  336.                      ill-formed packet, or T => timeout.
  337.  
  338. No local storage     specifies that no tape is inserted.
  339.  
  340. 1.3. Rover-Kermit Source language
  341.   The Rover-Kermit has been assembled not with a standard 8080  assembler,  but
  342. with  a  slightly  eccentric  one  developed  on an HP2647.  The differences in
  343. notation are quite simple, but pervasive.
  344.  
  345.    - A "*" in column 1 denotes a comment.
  346.  
  347.    - Statement labels are never suffixed with colons.
  348.  
  349.    - Octal constants are denoted by the suffix "Q".
  350.  
  351.    - The current location counter is represented by the symbol "*".
  352.  
  353.    - The operator ":" is used to represent concatenation of two quantities
  354.      into a two-byte value, low-order byte first.
  355.  
  356.    - There  is  a special pseudo-operation "ASCC" for assembling character
  357.      strings.  A string within quotes is  assembled  into  standard  ASCII
  358.      codes.    A  quotation mark (apostrophe) may be inserted as a pair of
  359.      quotes in the usual fashion.  Control characters may be  inserted  by
  360.      including  triplets  of  decimal  digits  for  the desired characters
  361.      within quotation marks.  Unless the string is followed by  ",-",  the
  362.      assembler appends a null to the output.  For example, 
  363.  
  364.            ASCC  'It''s true!'013''
  365.  
  366.      yields:  It's true!<CR><NUL>
  367.  
  368.    - There  is a special pseudo-operation "EJECT" to skip to the next page
  369.      on the output listing.
  370.  
  371.    - Quoted character strings are not allowed anywhere  except  in  "ASCC"
  372.      instructions.   There is a function operation "CHAR", which evaluates
  373.      to the  ASCII  character  value  of  the  next  character  after  the
  374.      delimiting  blank.  For example, "CHAR -" evaluates to 55 (octal) and
  375.      may be used in expressions.
  376.  
  377.    - There is a function operation "INSTR" which evaluates to  the  opcode
  378.      of  the  symbol after the delimiting blank.  For example, "INSTR MOV"
  379.      evaluates to 100 (octal).
  380.  
  381. 1.4. What's New
  382.   The following are the most important  of  the  changes  and  improvements  in
  383. release 1.2 of Rover-Kermit.
  384.  
  385.    - Two-byte checksums.
  386.  
  387.    - Mnemonic commands for setting parameters.
  388.  
  389.    - More elaborate display of current settings.
  390.  
  391.    - ^X/^Z interruption.
  392.  
  393.    - Retain filespec on RAM file.
  394.  
  395.    - Display any characters received while waiting for handshake.
  396.  
  397.    - Fixed bug in creating repeat strings from runs longer than 94.
  398.  
  399.    - Flush  data  communication  buffer  before  starting  any transaction
  400.      (except the first in a given session).
  401.  
  402.    - The ROLL and HOME keys now work for the conversation workspace.
  403.  
  404. 1.5. Future Work
  405.   Work that could be done in future releases includes:
  406.  
  407.    - Add multi-file transmissions from cartridge tape.
  408.  
  409.    - Release Active File Blocks in case of error.
  410.  
  411.    - Add three-byte block checks.
  412.  
  413.    - Encode/decode error packets.
  414.  
  415.    - Implement "A" packets.
  416.  
  417. [End of HP264X.DOC]
  418.