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 / S-Z / ZFDOCS.LBR / ZF10B.DZC / ZF10B.DOÃ
Text File  |  2000-06-30  |  18KB  |  325 lines

  1.                                  ZFILER Notes
  2.  
  3.  
  4. PLEASE READ THE PROGRAM NOTES BELOW.  MANY PEOPLE ARE COMPLAINING TO ME
  5. ABOUT THINGS THAT ARE EXPLAINED IN THE DOCUMENTATION.
  6.  
  7. As usual, I am eager to get bug reports and suggestions from users.  I can be
  8. reached in the following ways:
  9.  
  10.     in writing:        1435 Centre Street
  11.                 Newton Centre, MA 02159
  12.  
  13.     voice telephone:    work: 617-863-5500 x4704
  14.                 home: 617-965-3552
  15.  
  16.     modem:            Z-Node #3 (mine) at 617-965-7259
  17.                 Lillipute Z-Node #2 (Chicago)
  18.  
  19. My Z-Node in Boston is accessible via PC-PURSUIT.  It is possible that the
  20. sysop of a Z-Node near you is a PCP subscriber and can forward messages to my
  21. node for you.
  22.  
  23.                 Jay Sage
  24.  
  25.  
  26. -----------------------------------------------------------------------------
  27.  
  28. ZFILER Version 1.0b Notes -- January 13, 1987
  29.  
  30. BIGGEST NEWS: ZFILER now supports DateStamper.  On file copies (and moves)
  31. the time and date stamp of the source file is carried to the destination
  32. file!
  33.  
  34. I have now rewritten the directory logging ('L' and 'N' commands) code to
  35. properly respect the environment with respect to allowing access by drive and
  36. user number.  The code should now work properly and conveniently in a system
  37. that enforces security by not allowing drive/user access to areas that are
  38. not accessible using a named directory reference.
  39.  
  40. ZFILER always translates a requested directory -- whether entered using DU or
  41. DIR form -- into a drive and user.  If the DUOK flag in the environment is
  42. set, then these values are checked against the maximum values allowed by the
  43. environment.  If they pass, all is well and the directory is logged in.  If
  44. they fail or if DUOK is not set, then the drive/user value is converted into a
  45. named directory and checked against the NDR buffer.  If the directory is found
  46. there, it will be logged in after appropriate password checking.
  47.  
  48. Steven Mendelson discovered an interesting problem that occurs when a shell
  49. like ZFILER is rerun from the command line using GO.  Because ZFILER derives
  50. its own name from the external file control block, it thinks its name is "GO"
  51. and stores that in the shell stack entry.  This can cause grave problems
  52. later.  To protect against this, ZFILER now replaces its initial JP opcode at
  53. 100H with a RET opcode so that an attempt to use "GO" will simply return one
  54. to the command processor.  I recommend that this technique, which costs only 5
  55. bytes, be used in all programs which are not designed to work correctly when
  56. rerun by "GO".  NOTE: this means that ZFILER cannot be cloned by using the
  57. SAVE command as I have suggested in the past.  I will eventually either add
  58. a 'clone' command (as in MEX) or produce a full configuration source file.
  59.  
  60. A small, but significant, bug was corrected in the macro script expansion code.
  61. The script '$c', where 'c' is any non-parameter character, should have been
  62. expanded to 'c' but was not for the lack of an INC HL instruction!
  63.  
  64. -----------------------------------------------------------------------------
  65.  
  66. ZFILER Version 1.0a Notes -- January 1, 1987
  67.  
  68. Since the changes I have been introducing into VFILER have taken that program
  69. way beyond what it used to be, I have decided to release it as a new program
  70. through the ZSIG organization (which I strongly encourage all Z-System
  71. hobbyists to join).  This will relieve Echelon of any responsibility to
  72. support it and will allow us hobbyists to follow our own goals.  As with
  73. VFILER41 and the first stages of the now abandoned VFILER42, I will be
  74. releasing a series of test versions of the program with letter subversion
  75. designations.  This first one is version 1.0a.  When a final version is
  76. released with the source, the letter subversion will be dropped.  The main
  77. changes since VFILER version 4.2b are as follows:
  78.  
  79. MAJOR COMPATIBILITY CHANGES - PLEASE TAKE NOTE.  I have changed the macro
  80. parameter designator character from '%' to '$' to be consistent with all the
  81. other script-building programs.  Besides renaming your VFILER.CMD macro file
  82. to ZFILER.CMD, you will have to edit the macro scripts.  You will have to
  83. change all '%' characters to '$'.  You will also have to change any resulting
  84. '$$' to '$P'.  I have eliminated the old '%$' alternate to '%P' for the
  85. complete file specification for the currently pointed-to file.  Since '$$' is
  86. now needed for a dollar sign, only the '$P' form can be used for the file.
  87.  
  88. I have made major changes to the way the 'V' command pages in response to a
  89. suggestion from Carson Wilson.  He noted that he often wanted to get to the
  90. end of a file.  Hitting repeated carriage returns would not only carry one to
  91. the end, it would carry one past the end and on to the next file or back to
  92. the files display.  Now, after one reaches the end of a file, only the
  93. commands ^x (continue with next file) and ^c (abort 'V' command) will be
  94. recognized.  In addition, I added a ^z option that can be used at any page
  95. break to turn off paging and scroll continuously to the end of the file.  I
  96. have not yet implemented ^s pausing but plan to.
  97.  
  98. Charlie Kestner complained about having to use a shifted key ('#') to get the
  99. macro menu screen, and right he was!  Of course, it was always an assembly
  100. option.  Now you can use the macro lead-in character.  When the lead-in
  101. (default ESC) is pressed once, you get the 'Macro: ' prompt.  Press it again
  102. and you get the help screen (it fakes a '#' key).  Press it a third time and
  103. you are back to the files display (there had been a bug in the code that I
  104. discovered when I tried this).
  105.  
  106. A very important change has been made in the way the shell stack has been
  107. used.  I have been trying for some time to promote a new viewpoint on the use
  108. of the shell stack, and I have now carried it to its logical conclusion. 
  109. Basically, the shell stack should not be viewed only as a command line for the
  110. command processor.  It must, indeed, have such a command line, but information
  111. need not (and should not) be passed to the shell as part of that command line. 
  112. Instead, parameters needed by the program should be kept in whatever form is
  113. convenient and efficient in the part of the shell stack entry after the
  114. command-line null.  Remember that a program know whether it has been invoked
  115. as a shell by the command processor or manually by the user.  In the latter
  116. case, it must parse information from the command line, but in the former case
  117. it can get that information in an entirely different way.
  118.  
  119. ZFILER pushes only the name of the program (default ZFILER) followed by a null
  120. as the command.  By not prefacing it with a DUU: or DIR: but instead relying
  121. on the path to find it, it avoid problems with systems that do not recognize
  122. either or both of those forms.  All other parameters are derived from other
  123. data on the shell stack or from the system file names in the environment.
  124.  
  125. When ZFILER is first invoked by the user, the current directory and any
  126. requested directory and file mask included as a parameter on the command line
  127. are stored in the shell stack entry.  The two directories are stored in binary
  128. form as used by the SYSLIB routines.  This saves code and avoids any problems
  129. with recognizing DU and DIR forms.  It also avoids problems with returning to
  130. a directory with a password.  Once one has been admitted to a directory,
  131. subsequent accesses are automatic.  (The 'L' command still needs some work,
  132. and that is next on my list.  It presently cannot deal properly with systems
  133. that do not allow the DU form or with logins to named directories beyond the
  134. maxdu/maxuser values specified in the environment.  These fixes should be
  135. fairly easy to code.)
  136.  
  137. By keeping the original DU on the shell stack, ZFILER can return to the
  138. directory from which the user invoked it no matter how many other directories
  139. were subsequently logged in as the result of macro executions or 'Z' commands.
  140.  
  141. In the past, after executing a command line from the 'Z' command, the shell
  142. wait flag was always set and one was always greeted by a "strike any key"
  143. prompt before returning to VFILER.  With ZFILER if you enter a command line
  144. starting with a space, then shell waiting will be disabled and you will return
  145. directly to ZFILER without any delay.
  146.  
  147. Terry Carroll, I believe, made the following suggestion about the handling of
  148. file attributes on copies: if the file already exists in the destination
  149. directory, then use its attributes for the new file; otherwise use the source
  150. file attributes.  A new option has been added in ZFILER to implement this (use
  151. the 'O' command).
  152.  
  153. I have not yet added an automatic skip option in file copying to bypass a file
  154. if it exists in the destination (like the /N option in MCOPY).  It is still on
  155. my list.
  156.  
  157. Two changes in group operations have been made.  Many people complained to me
  158. that VFILER group operations often did not work but acted on the first tagged
  159. file only.  It turned out that they were answering a prompt (such as the
  160. verify prompt) with a 'Y' or 'N' followed by a carriage return.  The carriage
  161. return was not needed by the prompt but caused the group operation to be
  162. aborted before the next file.  I changed the group-abort code so that any key
  163. EXCEPT CR will cause an abort.
  164.  
  165. I also found a bug connected with the GA (group archive) operation.  I
  166. frequently use the GA command to tag unarchived files.  When asked for a
  167. destination directory for the copy, I just hit carriage return.  This leaves
  168. only unarchived files tagged and I can proceed to do whatever I want with them
  169. (for example, GV or GC -- the latter if I want to copy them somewhere without
  170. setting the archive bit on the source file).  I discovered that the file-
  171. replace query option for GC was not being honored.  An archive flag, once set
  172. by the GA command was never being cleared.  Now it is cleared on entry of the
  173. 'G' command.
  174.  
  175. -----------------------------------------------------------------------------
  176.  
  177. VFILER Version 4.2b Notes -- September 29, 1986
  178.  
  179. Many people requested that the "Z" command be made to log into the displayed
  180. directory before running the command line.  This cannot be done if the user
  181. number is greater than 15, so I made a compromise.  The code checks the user
  182. number, and if it is less than 16 the directory is logged in; otherwise the
  183. directory is left unchanged.  The first configuration byte after the string
  184. 'CONFIG' in the first page of the code controls this function.  Set it to 0 if
  185. you prefer the old way.  As distributed, the files have this option enabled.
  186.  
  187. You should note two significant drawbacks to logging in the current area.  If
  188. you run a VFILER.COM file that is in the current directory and not on the
  189. search path, after you select another display directory and execute a command
  190. with "Z", the shell will abort because the VFILER.COM file will not be found
  191. (you have changed the default directory).  With the old system, you actually
  192. stayed in the original directory, and so there was no problem.  The second
  193. drawback is that the disk system has to be reset in order to change the logged
  194. in directory (unless someone can tell me how to get around this).  The trouble
  195. is that VFILER is running as a subroutine under the CPR and normally
  196. terminates by returning to the CPR with a RET instruction.  Even if the BDOS
  197. has logged in a new area, the CPR still remembers the original one and
  198. restores it.  There is nothing VFILER can do about it.  One must do a warm
  199. boot to get around that.  This slows down any operations run from the "Z"
  200. command.
  201.  
  202. I have made some significant changes to the rename, copy, move, and unsqueeze
  203. commands.  The rename command now preserves all file attributes, as I think it
  204. should (any views to the contrary?).  So does the move command.  The way the
  205. copy command treats file attributes is controlled by two new options under the
  206. "O" command.  One option (default is on) causes all attributes of the source
  207. file to be carried to the destination file.  Another option (default on) is in
  208. addition to the first and causes the archive attribute to be set in the
  209. destination file (Joe Wright's arguments convinced me, but I made it a user
  210. option here).  With unsqueezing, the attributes are always turned off, except
  211. that the archive attribute is controlled by the same option flag that applies
  212. to copied files.
  213.  
  214. These changes were precipitated by a bug report that renaming a file twice in
  215. succession would give a BDOS error.  I tried that on my BigBoard system, and
  216. sure enough, it gave a ZRDOS error #2.  When I tried it on the Ampro system at
  217. work, however, there was no problem.  Now for the weird part -- the problem no
  218. longer appears on the BigBoard either (with the same VF42A that I tried this
  219. morning)!  I can no longer reproduce the error, so I cannot tell if I fixed
  220. it.  I did make some changes to the rename code to correct what I thought
  221. might be a problem (the disk number byte in the ring is normally 1, 2, 3, and
  222. so on, but after renaming in previous versions of VFILER, the drive was
  223. changed to 0.  I don't see why that would matter, but I modified the code to
  224. leave that byte unchanged.  If anyone sees the error again, please try to
  225. document it very carefully and precisely so I can track it down.
  226.  
  227. For those who are trying to make patches to VFILER, a section of the source
  228. code is reproduced below.  Note the pointers to the three command tables.  If
  229. the control-j I used for the new 'jump again' command is not convenient for
  230. you, you can go to CTAB1, the table for commands that can be used only when
  231. the display is not empty.  Its structure is quite clear (if not, see the full
  232. source to VFCMDS1.Z80 in the VFILER41 release), and you can find the entry
  233. with control-j and patch in a value of your choice.
  234.  
  235. ;---------------------------------------------------------------------------
  236.  
  237. ; Configuration and reference data
  238.  
  239.     dw    ctab1        ; Addresses of command tables for reference
  240.     dw    ctab2
  241.     dw    gtable
  242.  
  243.     db    'CONFIG'    ; Marker in code
  244.  
  245. logfladr:
  246.     db    logfl        ; Login current directory with "Z" command
  247. leadadr:
  248.     db    mleadin        ; Macro leadin character here
  249. npause:
  250.     db    tdelay        ; Delay time on screen refresh after macro error
  251. macfladr:
  252.     db    macflag        ; Allow immediate execution of macros 0..9
  253.  
  254.  
  255. OPTIONS:            ; Begin options configurable with 'O' cmd
  256.                 ; DO NOT CHANGE ORDER
  257.  
  258. qryrepa:            ; #1
  259.     db    qryrep        ; Single file replace query option
  260. qrygrpa:            ; #2
  261.     db    qrygrp        ; Multiple file replace query option
  262. qryarca:            ; #3
  263.     db    qryarc        ; Query on archive replacement
  264. qryvfya:            ; #4
  265.     db    qryvfy        ; Verify query option
  266. vflag:                ; #5
  267.     db    vfydflt        ; Verify default if no query or no answer
  268. nosysa:                ; #6
  269.     db    nosys        ; Supress display of SYS files
  270. defalfa:            ; #7
  271.     db    defalpha    ; Initial file sorting mode (FF for name)
  272. attrfla:            ; #8
  273.     db    attrfl        ; Copy attributes with files
  274. arcfla:                ; #9
  275.     db    arcfl        ; Set ARC attribute in destination file
  276.  
  277. shwait:                ; Flag also saved on stack with options
  278.     db    0
  279.  
  280. nopt    equ    $ - options    ; Number of option flags to save/restore
  281.  
  282. ;---------------------------------------------------------------------------
  283.  
  284.  
  285. VFILER Version 4.2a Notes -- September 19, 1986
  286.  
  287. Added "^J" (control-J) command to jump to next file that matches the last mask
  288. specified in a previous "J" command.  This allows one to jump easily to the
  289. second or third file that matches a simple file spec.  For example, suppose
  290. the directory has just a few files of type DOC and you want to find one called
  291. "ZCPR3NEW.DOC".  You could give this exact name in reponse to the prompt from
  292. the "J" command, but it would be much faster to answer the prompt with a
  293. simple ".D" or ".DOC".  If that left you on an earlier DOC file in the
  294. display, just press control-J (linefeed) and you will move to the next
  295. matching file.  The command "^J" is the same as "J" except that you are not
  296. prompted for the file mask and the file pointer is not initialized to the
  297. first file on the screen before the search starts.  Instead it uses whatever
  298. mask is left over in the mask buffer, and it works its way in circles through
  299. the file ring.
  300.  
  301.  
  302. Fixed bug in "M" and "GM" commands that allowed source file to be deleted even
  303. when copy had not been performed.  Now if you answer "N" in response to a
  304. prompt about overwriting the destination file (or if the disk fills up or if
  305. the copy verification shows an error), the source file will not be erased.
  306.  
  307.  
  308. Added "GR" group reverse function to reverse file tags.  Tagged files become
  309. untagged; untagged files become tagged; and soft-tagged files remain soft-
  310. tagged.  [I have gotten no comments on my question about what to do with soft-
  311. tagged files under the "GR" command.  The other reasonable possibility is to
  312. untag them also.  What do you think?]
  313.  
  314.  
  315. Cleaned up log command ("L" or "N").  Removed special handling of answer "x"
  316. for directory name (no longer needed) and changed error handling code.  I hope
  317. I got all this correct.  I eliminated some things that appeared not to be
  318. necessary (to shorten code and speed execution), and there is always a chance
  319. that I overlooked some situation that required that code.  One thing I did
  320. leave in that I think could possibly be eliminated is the resetting of the
  321. drive when only the file mask is changed.  I guess that that is there for when
  322. one swaps diskettes and logs the new one in with a simple ":" response to the
  323. log prompt.  Without it one would have to name the drive in the login prompt
  324. (might be just as easy).
  325.