home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / ZCPR33 / A-R / OSH14.LBR / OSH.HZP / OSH.HLP
Text File  |  2000-06-30  |  8KB  |  178 lines

  1. ;                                                                      V1.4
  2.  
  3.                               OSH
  4.  
  5.           The Overlay History Shell for Backgrounder II
  6.  
  7.           I - Introduction
  8.           U - Using OSH
  9.           W - Wildcard command repeat
  10.           D - Implementation details
  11.           A - Acknowledgements
  12. :I
  13. Introduction
  14.  
  15. OSH provides a fast command line editor and recall facility for users of 
  16. Echelon's Z-System with Plu*Perfect's Backgrounder ii task switcher. 
  17.  
  18. Previously entered commands may be recalled and re-executed, with or 
  19. without editing.  The editing possiblities include cursor movement forward 
  20. and backward by character, word, or command, and deletion of characters, 
  21. words, or commands.  Insertion or deletion is possible anywhere within the 
  22. line.  A list of previously entered commands can be displayed.
  23.  
  24. In addition, a command line can be automatically repeated for each file 
  25. which matches an ambiguous filename contained in it.
  26.  
  27. OSH assumes the terminal wraps its cursor from the last column of a line to 
  28. the beginning of the next line, and that <backspace> at the left margin 
  29. takes the cursor to the end of the previous line.
  30. :U
  31. Using OSH
  32.  
  33. OSH is activated by first installing it as the Backgrounder Overlay Command 
  34. Processor:
  35.  
  36.         >OCP OSH              and then calling it with no parameters
  37.  
  38.         >OSH
  39.  
  40. OSH installs itself as a ZCPR3 shell, and takes over prompting of the user 
  41. for subsequent commands.  Command entry proceeds as normal, but with the 
  42. addition of a number of WordStar-like editing actions.  These are detailed 
  43. in the table on the following page.
  44.  
  45. Every command which is entered under OSH is saved in a history stack, and 
  46. can be recalled either by stepping back through the stack using ^E, or by 
  47. searching for an entry that matches the string to the left of the cursor by 
  48. typing ^L.  Eventually old commands will be pushed out of the limited-size 
  49. stack, but this is delayed by keeping only the most recent copy of 
  50. identical command lines.  The space available for history storage is about 
  51. 850 bytes - enough for 50 short (16 byte) commands or 4 enormous (200 byte) 
  52. ones.
  53.  
  54. OSH editing commands:
  55.  
  56.                      +-------+-------+-------+--------+--------+
  57.                      | Back  | Fwd   | Del L | Del R  | Del All|
  58.         +------------+-------+-------+-------+--------+--------+
  59.         | Character  |  ^S   |  ^D   | DEL/BS|  ^G    |        |
  60.         +------------+-------+-------+-------+--------+--------+
  61.         | Word       |  ^A   |  ^F   |  ^W   |  ^T    |        |
  62.         +------------+-------+-------+-------+--------+--------+
  63.         | Command    |  ^Q   |  ^R   |       |        |  ^Z    |
  64.         +------------+-------+-------+-------+--------+--------+
  65.         | Line       |  ^E   |  ^X   |       |  ^Y    |  ^U    |
  66.         +------------+-------+-------+-------+--------+--------+
  67.  
  68.      ^K    -   Display command history.
  69.      ^L    -   Search for match left of the cursor.
  70.      ^P    -   Remove any special meaning from next character.
  71.      ^V    -   Insert mode on/off.
  72.  
  73. OSH can take two paramemters:
  74.  
  75.     >OSH O      switches the shell off
  76.  
  77.     >OSH R      resets the history stack
  78.  
  79. OSH is also removed (silently) if a different OCP is loaded.
  80.  
  81. When OSH is activated by calling it with no parameters, it only becomes 
  82. active in the current (upper or lower) task.  It may also be activated 
  83. manually in the other task, in which case the same history stack is used in 
  84. both tasks.  A possible BGii startup command line is:
  85.  
  86.      >OCP OSH;OSH;SWAP;OSH;SWAP
  87.  
  88. Commands entered in background mode bypass OSH completely, and are not 
  89. entered in the history.
  90. :W
  91. Wildcard command repeat
  92.  
  93. OSH also has a facility for automatically re-executing a command line for 
  94. each file which matches an ambiguous filename specification.  The process 
  95. is started by entering the command 'WILD ' followed by the command line.  
  96. The first token in the line which includes '*' or '?' is assumed to be an 
  97. ambiguous filename, and it is replaced by matching filenames one by one.
  98.  
  99. The process terminates when the line has been executed with each matching 
  100. name.  It can be manually curtailed by breaking to background mode 
  101. (<SUSPEND>) and typing 'WILD' on its own.  Note that this is only possible 
  102. if the command being repeated is not itself a built-in, so 'WILD TYPE 
  103. *.Z80' (for instance) cannot be interrupted.
  104.  
  105. During suspension of a WILD repetition it is possible to swap to the other 
  106. task and do some work there.  However, if OSH is also active in that second 
  107. task, it de-activates itself in that task to avoid total confusion.  It is 
  108. still active in the first task though, and the WILD repetition will 
  109. continue when the user returns to it.
  110.  
  111. The repeated line can be an arbitrarily complicated string of commands, but 
  112. if the ambiguous token does not include a directory specification it is 
  113. evaluated in the directory current at the time the WILD command was 
  114. entered, not that which would be current at the relevant point in the 
  115. command line.  Thus
  116.      B1>WILD C7:;TYPE *.Z80
  117. loses.  What is probably desired is
  118.      B1>WILD TYPE C7:*.Z80
  119.  
  120. WILD keeps track of where it is up to by counting matches.  Thus the n'th 
  121. matching filename is processed on the n'th execution of the line.  If the 
  122. command being executed creates or deletes files which match the afn (or, 
  123. less likely, rearranges the disk directory in some way) this mechanism 
  124. becomes ill-defined.
  125. :D
  126. Implementation Details
  127.  
  128. OSH is written in Z80 assembly code and requires a Z80 compatible processor 
  129. to run.  It was developed using Echelon's ZAS and ZLINK, and it uses the 
  130. SYSLIB and Z3LIB libraries.
  131.  
  132. There is one patchable option, at relative address 13H from the start of 
  133. OSH.OCP.  The byte there determines whether OSH starts in overwrite or 
  134. insert mode (0 = overwrite, 1 = insert).
  135.  
  136. Implementing a history shell as an OCP has certain advantages over a COM 
  137. file.  The OCP mechanism can be made to save the entire program including 
  138. its data between invocations, so there is no need for a separate history 
  139. file with code to access it.  The command name is guaranteed to be found 
  140. until a different OCP is loaded, so there are no need to establish the 
  141. location of the shell on the path when it installs itself.
  142.  
  143. The shell's speed has an important effect on the interactive responsiveness 
  144. of a system.  The time used is largely determined by the amount of disk 
  145. activity.  In theory OSH needs 32 sector reads and 32 sector writes between 
  146. commands.  HSH (v1.5) needs a directory search to find the COM file, 65 
  147. sectors reads to load it, another directory search to find the history 
  148. file, a sector read to get the history parameters, 3 sector writes to 
  149. update the history file and a directory search and write to close the 
  150. history file.
  151.  
  152. Actual measurements show the following overheads for the execution of a 
  153. simple COM file (units are sector reads and writes):
  154.  
  155. ZRDOS 1.7                                  Base
  156. ZRDOS 1.7 + HSH 1.5                      71R +  5W
  157. ZRDOS 1.7 + BG 1.13                     109R + 34W
  158. ZRDOS 1.7 + BG 1.13 + OSH 1.0           174R + 66W
  159. ZRDOS 1.7 + BG 1.13 + HSH 1.5           279R + 73W
  160.  
  161. (HSH.COM and HSH.VAR were in the first directory sector).
  162. :A
  163. Acknowledgements
  164.  
  165. OSH has the "look and feel" of Michael Rubenstein's HSH, because most of 
  166. the command line editing code is based on his C source code.  There are 
  167. differences, but I tried to keep the user-interface essentially the same.
  168.  
  169. WILD was inspired by Steve Cohen's W shell, which does essentially the same 
  170. thing.  The implementation is completely different, and WILD has none of 
  171. W's restrictions on position of afn, number of parameters, etc.
  172.  
  173. Trademarks:
  174.  
  175. Backgrounder ii       --  Plu*Perfect Sytems
  176. Z-System              --  Echelon, Inc.
  177. WordStar              --  Microsoft Corp.
  178. kgrounder ii       --  Plu*Perfec