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 / VLU107.LBR / VLU.HZP / VLU.HLP
Text File  |  1988-11-27  |  21KB  |  499 lines

  1. :VLU106
  2. Copyright 1987, 1988 Esoteric Software                  Michal Carson
  3.  
  4.  
  5. This program is distributed through ZSIG.
  6.  
  7.  
  8.  
  9.  
  10. VLU is a ZCPR3-specific library utility with crunch, uncrunch, and
  11. unsqueeze capabilities.  It will allow the user to view,
  12. uncompress, or extract library members or to view, uncompress
  13. (uncrunch or unsqueeze, VLU will decide), or crunch disk files.
  14. VLU will build libraries from disk files, crunching the files as
  15. they are added.  Date and time stamping is supported.
  16.  
  17. The utility will display a list of disk files on the screen along
  18. with a cursor and other information.  Placing the cursor next to
  19. the name of a file with the extension .LBR and pressing 'O' for
  20. Open will display the contents of the library and shift the cursor
  21. into that directory.
  22.  
  23.  
  24. What is a Library?
  25.  
  26.  
  27. The Library file format was developed to overcome two persistent
  28. limitations of CP/M disk storage capacity: limited directory
  29. entries and large blocking.
  30.  
  31. Although CP/M writes files in units of 128 bytes (sectors), most
  32. manufacturers have used larger blocks for storage on disk.  On a
  33. Kaypro with double-sided disks, for instance, all files are stored
  34. in 2K blocks; even a file one sector in length will occupy 2K on
  35. the disk.  Because the Kaypro disk format allows only 64 directory
  36. entries (files) on one disk, 64 of these 1-sector files (8K) will
  37. fill a 390K disk.
  38.  
  39. In a library, a one sector file occupies one sector (plus 32 bytes
  40. for internal directory information).  The library itself occupies
  41. only one directory entry on the disk.  If 64 one-sector files are
  42. placed into a library, the library will occupy 10K.
  43.  
  44. This is obviously an extreme example but illustrates the
  45. usefulness of libraries.  Other reasons exist; for instance,
  46. libraries keep related files together.  VLU will make files within
  47. libraries more accessible.
  48.  
  49.  
  50. What is an ARC?  Which is better?
  51.  
  52.  
  53. An ARC is another popular format for storing files in reduced space.
  54. ARCs store files sequentially each preceded by its own header of
  55. information which may be 18 to 29 bytes.  LBRs use a 32 byte
  56. directory entry at the beginning of the LBR; the directory
  57. indicates where the matching file may be found.
  58.  
  59. The information stored in an ARC file header is similar to the
  60. information stored in an LBR directory.  Both formats store the
  61. file name, exact file length, the last modification date and time,
  62. and a CRC-16 for integrity.  LBRs also store the file's creation
  63. date and time.
  64.  
  65. There are many arguments in favor of each format.  To the casual 
  66. user, these arguments are not important and either format will 
  67. serve for any purpose--long-term or short, organizational, 
  68. archival, or for transfer.  Neither format is an effective storage 
  69. format for sequential access devices such as tape.  Anyone who 
  70. insists on the absolute superiority of one format over the other 
  71. is behaving parochially.
  72.  
  73. VLU is the best effort to date in supporting the complete
  74. Novosielski LBR definition.  A like effort expended on behalf of
  75. the ARC format might make it similarly useful.
  76.  
  77.  
  78. In this Library
  79.  
  80.  
  81. Two executable versions are distributed:  VLUxxx-R.COM is for
  82. machines using reverse video as highlighting.  VLUxxx-D.COM is for
  83. machines using dim video as highlighting.  VLU.FOR is a short
  84. description of the utility; VLU.HLP is full documentation
  85. compatible with the ZCPR3 HELP text display utility.  VLU.UPD
  86. contains a trail of the changes in VLU since its initial release.
  87.  
  88.  
  89. The Help display
  90.  
  91.  
  92. Pressing "/" or "?" will evoke a display summarizing the commands
  93. available to the user.  These commands change according to Wheel
  94. status and directory choice (e.g., Delete is not available in the
  95. library and is never available to non-wheels).  Pressing either of
  96. these keys a second time will clear the display.
  97.  
  98.  
  99. Invoking VLU
  100.  
  101.  
  102. Use VLU as an extension to a ZCPR3 shell, such as ZFiler, invoked
  103. through a macro.  To install it, one need only open the ZFILER.CMD
  104. file with a word processor and enter a line of the form "1 vlu".
  105. Thereafter, positioning ZFiler's cursor beside a library file and
  106. pressing "1" (possibly preceded by [esc]) will bring up VLU with
  107. the library already open.  A better thought is to assign this
  108. macro to the "O" key--"O $d1$u1:;vlu" in ZFILER.CMD--so that [esc]
  109. "O" will open the indicated library.
  110.  
  111. Some aspects of VLU were designed to make it an extension of
  112. tools like ZFiler.  Most of these tools use the ZCPR system files
  113. to store the name of the current file (the file the cursor was
  114. pointing to on exit).  VLU checks these filenames and interprets
  115. the current file (sys file 2) as a library.  On starting up, VLU
  116. will try to open a library file of this name in the current
  117. directory.
  118.  
  119. This allows the user to invoke VLU from the "Z" prompt of ZFiler
  120. or through a macro, pass no parameters, yet open the current file
  121. if it is a library (or shares the same name as a library though it
  122. may have a different extension).  If a different library is opened
  123. before returning to ZFiler, VLU will modify the filename in
  124. system file 2 (and thus cause ZFiler to believe it was pointing to
  125. this library when it exited).
  126.  
  127. As a command file, VLU can, of course, be invoked from the system
  128. command prompt.  If a library name is entered on the command line,
  129. that name will take priority over any name currently in system
  130. file 2 and the library will be opened if it exists.  Even from
  131. ZFiler's "Z" prompt, with the pointer on ABC.LBR, entering the
  132. command "VLU DEF" will open DEF.LBR and place that name into
  133. system file 2.
  134.  
  135. If the invocation is followed by a DU: specification or by the
  136. name of a ZCPR named directory (DIR:), VLU will display the
  137. filenames in that directory instead of the default directory.
  138. That is, "VLU TOOLS:" will display the contents of the TOOLS:
  139. directory.
  140.  
  141. VLU can be re-entered with the GO command.
  142.  
  143.  
  144. Changing libraries
  145.  
  146.  
  147. When a library is opened, when VLU is invoked with a library name
  148. in the command line, or when a new directory is logged in with a
  149. library open, the VLU cursor will point into the library
  150. directory.  Pressing the [esc] key will shift the cursor back into
  151. the disk directory.  Opening a different library is as simple as
  152. positioning the cursor in front of the name and pressing "O".
  153.  
  154.  
  155. Cursor motion
  156.  
  157.  
  158. Moving the cursor (pointer) in VLU is effected using the WordStar
  159. cursor motion controls.  Ctrl-E moves the cursor up one line, ctrl-
  160. X moves it down.  Ctrl-S moves the cursor left one file, ctrl-D
  161. moves it right.  Ctrl-F brings a new directory onscreen if there
  162. are more files in the directory (as if the display were moving
  163. right by a directory), ctrl-A moves back toward the beginning of
  164. the file list.  Ctrl-F will wrap around from the final directory
  165. to the original.
  166.  
  167. The arrow keys will also function if they are properly defined in
  168. the users Environment descriptor.  The symbols "+" and "-" (and
  169. "=", the usual non-shifted counterpart of "+") have the same
  170. effect on the directories as ctrl-F and ctrl-A, respectively.
  171.  
  172. The [esc] key shifts directories: from the library to the disk,
  173. from the disk to library.  In most instances the cursor will
  174. "remember" where it was when it last pointed into that directory.
  175.  
  176.  
  177. Extracting and Uncompressing library members
  178.  
  179.  
  180. Positioning the cursor beside the name of a member file within a
  181. library and pressing "E" for Extract will cause the file to be
  182. copied from the library to the disk with no change in form.  If it
  183. is crunched or squeezed within the library, it will be crunched or
  184. squeezed on the disk.
  185.  
  186. Pressing "U" for Uncompress will cause a crunched file to be
  187. uncrunched onto the disk, a squeezed file to be unsqueezed onto the
  188. disk, or an uncompressed file to be extracted sic.
  189.  
  190.  
  191. Changing directories
  192.  
  193.  
  194. Library members may be extracted to a disk and/or user area other
  195. than the one which contains the library.  Open the library first,
  196. then use the Login command to move to the destination directory
  197. and perform the extraction or decompression.  The move is
  198. accomplished by pressing "L" (cursor position makes no difference
  199. with this command) and answering the prompt "Directory ".  The
  200. user may enter a DU: specification (e.g., A0:, B14:, F:) or the
  201. name of a ZCPR3 named directory to be found in the current system
  202. (e.g., MODEM:, DUNGEON:).  The colon is not necessary in any case
  203. and an invalid directory or denied access will relog the current
  204. area.  No entry at all will also relog the current area to
  205. facilitate disk changes.
  206.  
  207.  
  208. Tagging files
  209.  
  210.  
  211. The "T" command will tag an untagged file and the "Y" command will
  212. remove the tag from a tagged file.  The tag appears as a hash (#)
  213. immediately following the filename.  After a group operation
  214. (actually, during the group operation) hard tags represented by
  215. the hash are replaced by soft tags which appear as an apostrophe
  216. (').  Soft tags may be transformed back into hard tags by the
  217. retag command: "#".
  218.  
  219. Wildcard tagging is accomplished by pressing "W" and providing a
  220. wildcard file specification in response to the prompt.  All files
  221. in the directory, starting from the beginning, which match the
  222. file spec will be tagged.
  223.  
  224. Group Tag ("GT") is equivalent to a *.* wildcard tag.
  225.  
  226. It may be convenient at times to untag all files.  This can be
  227. accomplished by relogging the directory with the Login command.
  228. Certain file operations which affect the disk directory (anything
  229. that adds or deletes files) will also end by relogging the
  230. directory and any remaining tags will be erased.  Group operations
  231. obviously prevent this relogging until all files have been
  232. operated upon.
  233.  
  234.  
  235. Group operations
  236.  
  237.  
  238. "G" will evoke the Group prompt.  From this prompt, several
  239. commands are available to wheels.  Only the View and Tag commands
  240. are available to non-wheels.  If the wheel byte is not zero, the
  241. prompt will indicate by the first letter of each command that
  242. View, Tag, Uncompress, crunch, and either Extract or Delete and
  243. Build are available.  Any selection is carried out on all tagged
  244. files.  The Group manager will check for ctrl-C between each file
  245. and abort if it is seen.
  246.  
  247.  
  248. Viewing files and library members
  249.  
  250.  
  251. Crunched, squeezed, and uncompressed files may be viewed by 
  252. pressing "V" at the VLU prompt.  The screen will clear and the 
  253. file's name will appear at the top of the screen.  Just below the 
  254. filename, the file's datestamps, if present, will be shown.  These 
  255. will be taken from the disk in the case of ordinary text files, 
  256. from the library directory if the file is a member, or from the 
  257. internal datestamp of a compressed file.  The display will stop 
  258. with the prompt "[strike any key]" after, in general, 22 lines.  
  259. The number of lines (the size of a screen page) is taken from the 
  260. ZCPR3 Environment descriptor.  The number provided there, by 
  261. convention, is two lines less than the screen height.  This should 
  262. give the viewer two lines of overlap with each page.  If this is 
  263. unsatisfactory, the user's Environment descriptor can be adjusted.
  264.  
  265. At any time during the viewing, pressing ctrl-S will pause the
  266. display.  Pressing ctrl-C will abort the operation.  Under Group
  267. control, ctrl-C will abort the entire operation and no more files
  268. will be presented; the user will be returned to the file directory
  269. display.  Unscreened files will remain tagged.  Ctrl-X may be used
  270. to skip to the next file under Group execution; it has the same
  271. effect as ctrl-C if only one file is being viewed; id est, we
  272. abort.
  273.  
  274. At the "[strike any key]" prompt, pressing the period will bring
  275. one more logical line to the screen.
  276.  
  277. Ctrl-Z will suppress the "[strike any key]" prompt and the file
  278. will scroll continuously.  The viewer is then left with ctrl-S to
  279. stop the display (and any key except ctrl-X and ctrl-C will
  280. restart it).  Another Ctrl-Z will restore the paging mode and
  281. stop the screen immediately.  This is handy for long files when
  282. the interesting text is near the end.
  283.  
  284. Certain file extensions are proscripted (e.g., COM, LBR, ARK, SYS,
  285. RCP, REL, PRL, etc.) and VLU will give the message "may not type"
  286. followed by the file name.  Crunched files of proscripted types 
  287. may have a "stamp" of interest to the user.  If a proscripted file 
  288. is crunched, VLU will give the filename as it appears and attempt 
  289. to extract the original filename and any stamp contained in the 
  290. first record of the file.  Thus, the datestamps of COM and REL 
  291. files may be inspected using the View command.
  292.  
  293.  
  294. Crunching disk files
  295.  
  296.  
  297. The crunching faculty of VLU is incidental.  Because of the Group
  298. operations, it is quite useful but, ab ovo, crunching files on 
  299. disk has been secondary to the project of crunching files into 
  300. libraries.  Selecting "K" at the command prompt will cause VLU to 
  301. crunch the file pointed to by its cursor.
  302.  
  303. VLU will first prompt for a "stamp."  By convention, this is a
  304. message of up to 40 characters enclosed in square brackets.  The
  305. message is imbedded in the first record of the crunched file to be
  306. displayed when the file is either uncrunched or viewed.  Often,
  307. the message reports the date of the crunching, the author or
  308. origin of the file, or its expanded size.
  309.  
  310. VLU will allow the entry of up to 38 characters.  Two characters
  311. are reserved so that VLU can insert the square brackets if the
  312. user omits one or both.  VLU will remove any trailing spaces from
  313. the message; if the user wishes the spaces to appear, the user
  314. must enter at least the final closing bracket.
  315.  
  316. VLU will also imbed the current datestamp of the file, if present, 
  317. in the form established by CRUNCH23D.  To use the datestamp in 
  318. place of a text stamp simply type a return at the "Enter stamp" 
  319. prompt.
  320.  
  321. The crunching operation will be aborted if the file is already
  322. compressed (either crunched or squeezed) or is of a proscripted
  323. filetype.  Proscripted filetypes are ARC, ARK, BAD, and, if the 
  324. target is a library, FOR and CIM (vide infra).
  325.  
  326. VLU will allow the user to crunch a member out of a library onto
  327. the disk.  There seems no harm in such an operation (and as little
  328. use).
  329.  
  330.  
  331. File size report
  332.  
  333.  
  334. The size of a file in kilobytes and sectors (records) is reported 
  335. when the user presses either "F" or carriage return.  If the file 
  336. is a library member, size is reported to the nearest higher 1K.  
  337. If the file is on disk, size is reported according to the blocking 
  338. factor of the disk.
  339.  
  340.  
  341. Renaming files
  342.  
  343.  
  344. To rename a library member or a disk file, position the cursor 
  345. beside the file and press "R".  Enter the new name at the prompt.
  346.  
  347.  
  348. Deleting files
  349.  
  350.  
  351. To delete a library member or a disk file, position the cursor 
  352. beside the file and press "D".  The user will be prompted to 
  353. confirm that the file is to be deleted.  Under Group Delete, the 
  354. first prompt applies to all tagged files.  Answering Yes to this 
  355. prompt will delete all files with no further prompts.  Answering 
  356. No will abort the operation entirely (no files deleted).  
  357. Answering Verify will cause a prompt to appear for each file in 
  358. the group.
  359.  
  360.  
  361. Building libraries
  362.  
  363.  
  364. In order for VLU to build a library, all files to be included
  365. must be located in the same directory.  The library may, if
  366. necessary, be built in a foreign directory.
  367.  
  368. As distributed, VLU will crunch all files as they are added to the
  369. library (unless the extension is unacceptable as previously
  370. stated).  See the configuration section for possible attenuation
  371. of this practice.
  372.  
  373. VLU does have limits governing the maximum size library it may 
  374. build or deal with.  Those limits will vary with the size of the 
  375. current TPA.  Most users will never approach VLU's limits, but for 
  376. curiosity's sake, a TPA of 58K is sufficient to manipulate a 
  377. library of over 1200 members.
  378.  
  379. To initiate the construction, tag the files which are to be
  380. included and then type "GB" for Group and Build.  VLU will prompt
  381. for the name and directory of the "new library" and the number of
  382. entries to allow.  A carriage return at the "entries" prompt will
  383. build a library with the minimum directory size, only large enough
  384. to accommodate the currently tagged files.  If you specify the 
  385. number of members (say, 40), VLU will build a library large enough 
  386. to hold at least this many members and will report the actual 
  387. number of possible entries ("initializing 43 entries").
  388.  
  389. Rather than count the number of members you have tagged and add to 
  390. that the number of members you expect to add in the future, you 
  391. may simply enter "+40" to have VLU make the calculation.  VLU will 
  392. build a library large enough to hold the presently tagged files 
  393. and 40 more.  If no files are currently tagged, VLU will build an 
  394. empty library large enough to hold at least 40 members.
  395.  
  396. VLU will then initialize the library directory area.  The
  397. directory list (onscreen)  will be reset to the first screen; the
  398. cursor will move to the first tagged file and a message will
  399. display that the file is being crunched or added as appropriate.
  400. If any files are to be crunched, the "stamp" prompt will appear
  401. and the stamp thus entered will be in effect for all files
  402. crunched into the library.
  403.  
  404. Under this operation, as under the Wildcard and other Group
  405. operations, the directory list onscreen will shift through all
  406. files searching for tags.  This will be more noticeable in larger
  407. directories (which require more than one display) and during the
  408. Building of libraries (because of the pause to close the library).
  409.  
  410. The datestamps for file creation date/time and file modification 
  411. date/time will be copied into the library directory if they are 
  412. available on the disk.  They may also be imbedded in crunched 
  413. members (if no stamp is entered).  The current time/date will be 
  414. placed in the library directory to indicate when the library was 
  415. originally constructed.
  416.  
  417.  
  418. Adding files to a Library
  419.  
  420.  
  421. Adding files to an existing library is a simple as constructing 
  422. the library in the first place and the files will be compressed 
  423. according to the same rules.  Date/time stamps will be preserved.  
  424. The current date/time will be written into the library directory 
  425. to indicate the library's last modification.
  426.  
  427. Files may be added individually or tagged and added in a Group 
  428. operation.  The library to which they will be added must be open 
  429. and must have unused directory entries (deleted entries will not 
  430. be overwritten).
  431.  
  432.  
  433. Configuration
  434.  
  435.  
  436. Several configuration bytes are located in the first sector of the 
  437. VLU command file where they may be easily patched.  For the exact 
  438. location and function of these bytes, see the accompanying file, 
  439. VLUxxxC.Z80.
  440.  
  441.  
  442. Option menu
  443.  
  444.  
  445. The Option menu, accessed by typing "M" at the command prompt, 
  446. will toggle many of the configuration bytes.  This allows 
  447. temporary assignment of the options.
  448.  
  449.  
  450. Security
  451.  
  452.  
  453. The Login command of VLU will use the Z33 parser when it is
  454. available, thus behaving exactly as the operating system would in
  455. allowing admittance to directory areas.  When Z33 is not available,
  456. VLU allows immediate entry to any du: or dir: within the MAXDSK
  457. and MAXUSR limits of the environment.  Dir: forms outside these
  458. limits are also accepted; passwords, if present, are enforced.
  459.  
  460. Commands Delete and Rename and any commands that would create new
  461. files are available only while the wheel byte is set.
  462.  
  463.  
  464. Contributors
  465.  
  466.  
  467. VLU directly incorporates the work of many "better makers."  My
  468. thanks to all of them as much and more for the opportunity to read
  469. and learn from their code as well as for their library releases.
  470. Among them, the following:
  471.  
  472. Richard Conn, Howard Goldstein, Jay Sage, Al Dunsmuir et al. for
  473. SYSLIB, Z3LIB, Z33LIB and VLIB--and ZCPR, itself.
  474.  
  475. C.B. Falconer and Steven Greenberg for USQREL, UNCREL, CRN, and
  476. BUFFERS.
  477.  
  478. Steven Cohen for M24.  Carson Wilson for DATEHL and Z80DOS.  
  479. Bridger Mitchell for FRESET and CRUNCH23D.
  480.  
  481. Martin Murray for NULU, the standard for these efforts.  And Gary
  482. Novosielski for the library format.
  483.  
  484.  
  485. Note from the programmer
  486.  
  487.  
  488. VLU, its source code, and its documentation are copyright 1987, 
  489. 1988 by Esoteric Software.  VLU is distributed for non-commercial 
  490. use only; any commercial use or any re-distribution in association 
  491. with a commercial product or package requires the prior written 
  492. permission of the author.
  493.  
  494. I may be reached on Z-nodes 2 and 3--Al Hawley's Ladera and Jay
  495. Sage's Newton Centre; both are available via PC-Pursuit.  I log
  496. into these nodes approximately semi-weekly.  If it is important to
  497. reach me sooner, my home Z-node is #58, operated by Kent Mason in
  498. Oklahoma City (405/943-8638).
  499.