home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug162.arc / L47.LBR / L47.DZC / L47.DOC
Text File  |  1979-12-31  |  12KB  |  255 lines

  1.                  L v4.n NOTES
  2.                  ------------
  3. v4.7 update - 10 Apr 88. Rick Millicer
  4. -----------
  5. The only real change is that if the scrolling display is aborted by pressing
  6. any key, the disk capacity is now reported correctly. The `Used' field
  7. reports the total of the displayed files, ie, the calculation is aborted when
  8. the key press is sensed.
  9.  
  10. There are also a few cosmetic changes in this revision. A few users complained
  11. that the tilde bars were cluttering the top and bottom lines and that they 
  12. would prefer the words `Disk Capacity' rather than `Size', etc. So this is it.
  13.  
  14. v4.6 update - 27 Nov 87. Rick Millicer
  15. -----------
  16. 1. More on that pesky directory label for CP/M3. What was done before was
  17.    still not discriminatory enough, so the BDOS version is now checked also.
  18.    Only CP/M3 and user 32 and a 1 in bit 0 of FCB+12 will define a directory
  19.    label. This ought to do it at last.
  20.  
  21. 2. Invoking specific user numbers used to prevent the display of any valid
  22.    CP/M2 disk name (! or -). This is now fixed.
  23.    eg, L 14:  would miss the disk name unless the name was in user 14.
  24.  
  25. 3. The new layout of the stats is all on the bottom line and conveniently
  26.    groups in one place the various totals. This is more convenient, I think.
  27.  
  28. 4. Aborting the file processing was previously possible (but not widely
  29.    known) by pressing any key (other than ^S) during the file display. However,
  30.    the bottom line was not then displayed in previous versions and valuable
  31.    information was lost. Please note that the stats will reflect the point
  32.    at which the calculations and display were aborted.
  33.  
  34.  
  35. v4.5 update - 19 Nov 87. Rick Millicer
  36. -----------
  37. 1. Bug fix. The code to handle CP/M3 directory label (user 32) prevented
  38.    display of CP/M 2 user numbers >31.
  39.  
  40.    Previous versions of L 4.n regarded user 32 as containing only the so-called
  41.    CP/M3 volume name and also processed only the first one found. (The correct
  42.    name for such entries is `Directory Labels' not 'volume name'.) The
  43.    Microbee net system uses User 32 to hide system files. L45 is designed for
  44.    this system in particular.
  45.  
  46.    L45 upon finding a file in User 32, now also checks bit 0 of the
  47.    directory label data byte (at FCB + 12). If this bit is 1, it defines that
  48.    entry as a true CP/M3 `directory label' and it is NOT shown as a normal
  49.    file under any circumstance. CP/M3 BDOS makes sure only one such entry 
  50.    can exist. If it is 0, the assumption is made that it is not a Directory
  51.    Label and is a real file in User 32.
  52.  
  53.    The order of precedence for disk labelling remains (but now works).
  54.  
  55.    NAME.000  Directory Label (User 32, bit set as above) - I think only CP/M3
  56.    !NAME.000 'new' standard where there are many '-' files on disk.
  57.    -NAME.000  most catalogue programs use this method.
  58.  
  59.    If a true CP/M3 Directory Label is found, the label field is filled and is
  60.    always displayed on screen ONLY as a directory label. On the other hand,
  61.    file names beginning with ! or - are also listed as normal files.
  62.  
  63. 2. Consequent on the above, a MAXUSR option has been added. This is a user
  64.    configurable option in page zero. It may be changed so that for example,
  65.    only selected operators of a net system can scan User 32 or greater.
  66.    The distribution default is 1Fh (User 31). Use PATCH or DU to change the
  67.    value (hex only).
  68.  
  69.    CP/M3 directory label searching occurs regardless of the max user.
  70.  
  71.    If a user number greater than the max allowed is tried, only user 0 is
  72.    displayed.
  73. eg,
  74. L 32:<CR>    <-- will display user 0 in distributed COM file.
  75.  
  76. 3. A special note for CP/M 3 users. The syntax for all options is to follow
  77.    the file command `L' with two spaces rather than just one as for CP/M2.
  78. eg,
  79. A>L  *:<CR>  <-- display all user areas. CP/M 3
  80. A>L *:<CR>   <-- display all user areas. CP/M 2
  81.  
  82. A>L  ::<CR>  <-- display internal help screen. CP/M 3
  83. A>L ::<CR>   <-- display internal help screen. CP/M 2
  84.  
  85. ===========================================================================
  86.  
  87. v4.4 update - 14 Jun 87. rwc
  88. -----------
  89. 1. Bug fix, volume labels (CP/M 3) were stuffing name comparison.
  90. 2. Line count now reinitialized for re-running, eg, @ *.COM.
  91. 3. Improper extent masks (EXM) now handled ok. Specifically for Hitachi
  92.     system which does not follow standard practice. (their bug?)
  93. 4. "L ::" will now produce help message. cf, "L : :" with v4.3
  94. 5. Added (re-instated v3) [S] option for displaying only system files.
  95. 6. Added [I] option to disable inverse display.
  96.  
  97. v4.3 update - 04 May 87. rwc
  98. ------------
  99. 1. Shifted top line to allow for 21000k disk size!!!. For 20 Mb Hard disks.
  100. 2. Page length now 23 to avoid losing top line. rwc
  101.  
  102. ===========================================================================
  103.  
  104. v4.2 release. rwc.
  105. ------------
  106.   L42.COM prints a sorted directory with file sizes.
  107.  
  108.   This is the new version of L.COM, which has become a local favourite
  109. directory program. Changes (to be released when complete) to the Dream system
  110. for the Microbee and Sorcerer have prompted a re-write, but this ought not
  111. deter other system users from using it. New options include user numbers and
  112. CP/M3 style date stamping.
  113.  
  114.   Here is a list of features which are different to the version 3.n which was
  115. released only a few months ago and included patches to display the high bit in
  116. inverse video. I wish to thank several people who patched the old version to
  117. make it better and for suggestions for this major update.
  118.  
  119.   Summary of new features.
  120.  
  121. 1. Displays high bit in inverse, but strips it before sending to printer.
  122. 2. Displays 'Used' and 'Free' correctly without needing to relog disk.
  123. 3. New 'time and date stamping' option - [D]. Compatible with CP/M3.
  124. 4. New 'display user number' option - [?]: or [*]:
  125. 5. New 'don't display files' option - [/].
  126. 6. Supports '!' and '-' disk naming. '!' takes precedence over '-'.
  127.    (CP/M3 volume label takes precedence over both)
  128. 7. Copes with CP/M 3.
  129.  
  130.   All the previous options are retained - options such as Horizontally
  131. displayed sort, P for print, A for All files, etc.
  132.  
  133.   To obtain the internal help file, invoke L42 with an error in syntax, eg.
  134.  
  135. A:L42 ::<CR>
  136.        ^ invalid option for L.COM.
  137.  
  138. A:L42 Z:<CR>
  139.       ^ drive name out of range. Must be out of range for for BDOS, else BDOS  
  140.       will respond with its error message.
  141.  
  142. A:L42 ............<CR>
  143.       ^          ^ more than 8 characters.
  144.  
  145.   The internal help message is:
  146. ------------------------------------------------------------------------------
  147. L.COM v4.2, a Directory list program with user area and time & date support.
  148.  
  149. Syntax: L [[d][u]:][afile] [options]
  150.         d = drive; u = user; afile = ambiguous filename.
  151.  
  152. Options: (may be multiple)
  153. A => Show All files ($DIR and $SYS)     I => Disable Inverse highlighting
  154. D => Show time and Date information     P => Send output to printer as well
  155. H => Sort across rather than down       T => Sort by fileType then filename
  156. / => Don't list files
  157. eg. "L : /*.COM" lists all except COM files in default user.
  158. eg. "L *:*.MAC DP" lists MAC files in all users + date + to printer.
  159.  
  160. Notes:  User number of "?" or "*" will list all users.
  161.         ":" delimits drive/user from f/name; " " delimits f/name from options.
  162.         Option D shows CP/M3 creation date if present.
  163.         First file starting with a "!" or "-" will be used as disk name.
  164.         Attribute bits highlighted as follows:
  165.           12345678.RSA    R => Read Only, S => $SYS, A => Archive
  166.  
  167. (c)1987 Richard Collett, with thanks to Ian Branch and Mike Thompson.
  168. ------------------------------------------------------------------------------
  169.  
  170.   In common with many files these days, some configuration options are
  171. contained in page zero, and suitable for patching directly with CEBUG, SID,
  172. DDT, PATCH, etc. They are Inverse on escape sequence (INVON>), Inverse off
  173. escape sequence (INVOFF>), and Page length (PAGE LENGTH>). Current settings
  174. are 1B,29 to enable inverse, 1B,28 to disable inverse, and 18 (=24 dec)
  175. lines per page.
  176.  
  177.   Version 4 is a complete rewrite from scratch of version 3.0 of L.COM. This
  178. was done to allow the date and time stamping facility and to get around a few
  179. problems with the way earlier versions examined all user areas. I felt that
  180. further kludging to a program that had more kludges than code was hardly
  181. worthwhile any more, so I started from scratch, and dropped support for CP/M
  182. 1.4 and 64 columns.
  183.  
  184.   The code is written in a fairly modular layout, reflecting changes in my own
  185. programming style since the original L.COM appeared over 3 years ago.
  186.  
  187.   Absolutely no BIOS calls are made by L.COM, and the only system scratch
  188. examined is the DPB for the selected drive, using the address supplied by
  189. the BDOS, so this version should run ok in most CP/M3 systems. The error
  190. "Cannot find DPB" will be printed if your CP/M3 system is silly enough to
  191. page out the Disk Parameter Blocks. Note that I do use the direct console I/O
  192. function in the BDOS for fastest "legal" screen output, hence the need for a
  193. print option because ^P won't affect L.COM. The keyboard is checked at each
  194. crlf for ^S pause. Any other key will cause immediate program abort.
  195.  
  196.   An insertion sort is used, which gives excellent sorting speed, (I think).
  197. Every active directory entry on the disk is examined sequentially and
  198. manipulated into an 18 byte string with the number of groups used and the
  199. time/date stamp appended, and placed at the top of a "heap". The number of
  200. groups used is added to a running total to allow the disk free space to be
  201. calculated without relogging new disks. Entries which do not match the
  202. user-requested filename (or do match the "except" filename) are immediately
  203. discarded, otherwise the heap is scanned using the index array (which points
  204. to the entries in ASCII (=> alphabetical) order. If another extent of the
  205. same file is found already in the heap then it is overwritten with a composite
  206. entry made from the name and date stamp of the entry with a smaller extent
  207. number, and the extent number and group count of the other entry. If no such
  208. extent is found then the current name is left on the heap and its address is
  209. inserted into the index array immediately after the entry it follows
  210. alphabetically. All the output subroutine need do is output the names in order
  211. taken from the index array, and calculate their size from the extent number
  212. and group count.
  213.  
  214.   At present the array is dimensioned to hold 2048 entries plus an extra 
  215. blank entry at the end. When I wrote this note the index array started at
  216. 0CC0h, the heap started about 4k above at 1CC2h, so a 48k TPA allows about
  217. 9300h for the heap, or 37632 bytes. Dividing by 18 bytes per entry gives
  218. 2090 entries, which is just more than we need to fill the array. No range
  219. checking is performed, but I can't see many people running more than 2048
  220. directory entries (it would be too damn slow!). I would say 1024 entries on say
  221. a hard drive would be a reasonable maximum, in which case the highest memory
  222. address the heap would reach would be about:
  223.  
  224. 1D00h+(18*1024) = 6500h, so a 32k TPA would be heaps
  225.  
  226.         Richard Collett. 28-January-87. Melbourne Australia.
  227.  
  228.  
  229. Configuration.
  230. -------------
  231. Few users will want or need to change anything. However, contained in the 
  232. first page of the file are four user-definable options. In common with a cute
  233. trend, these options are of the following type:
  234.  
  235. INVON>     ) each of which is immediately
  236. INVOFF>    ) followed by several configuration bytes.
  237.  
  238. These would appear in the COM file as:
  239.  
  240.  I  N  V  O  N  >
  241. 49 4E 56 4F 4E 3E 1B 29 00 00 00 00 ......  <-- Inverse ON for ADM3 terminal
  242.  
  243.  I  N  V  O  F  F  >
  244. 49 4E 56 4F 46 46 4E 1B 28 00 00 00 ......  <-- Inverse OFF for AMD3 terminal
  245.  
  246. Thus to configure L.COM, use a utility which allows direct editing of bytes
  247. in the COM file. Such a utility is PATCH or DU2.
  248.  
  249. Options are:
  250.         Default
  251. INVON>        1B 28    esc )        Inverse ON
  252. INVOFF>        1B 29    esc (        Inverse OFF
  253. MAXUSR>        1F hex    31 dec        Maximum allowable user number
  254. PAGELEN>    17 hex    23 dec        Page length of screen to be scrolled. 
  255.