home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
mbug
/
mbug162.arc
/
L47.LBR
/
L47.DZC
/
L47.DOC
Wrap
Text File
|
1979-12-31
|
12KB
|
255 lines
L v4.n NOTES
------------
v4.7 update - 10 Apr 88. Rick Millicer
-----------
The only real change is that if the scrolling display is aborted by pressing
any key, the disk capacity is now reported correctly. The `Used' field
reports the total of the displayed files, ie, the calculation is aborted when
the key press is sensed.
There are also a few cosmetic changes in this revision. A few users complained
that the tilde bars were cluttering the top and bottom lines and that they
would prefer the words `Disk Capacity' rather than `Size', etc. So this is it.
v4.6 update - 27 Nov 87. Rick Millicer
-----------
1. More on that pesky directory label for CP/M3. What was done before was
still not discriminatory enough, so the BDOS version is now checked also.
Only CP/M3 and user 32 and a 1 in bit 0 of FCB+12 will define a directory
label. This ought to do it at last.
2. Invoking specific user numbers used to prevent the display of any valid
CP/M2 disk name (! or -). This is now fixed.
eg, L 14: would miss the disk name unless the name was in user 14.
3. The new layout of the stats is all on the bottom line and conveniently
groups in one place the various totals. This is more convenient, I think.
4. Aborting the file processing was previously possible (but not widely
known) by pressing any key (other than ^S) during the file display. However,
the bottom line was not then displayed in previous versions and valuable
information was lost. Please note that the stats will reflect the point
at which the calculations and display were aborted.
v4.5 update - 19 Nov 87. Rick Millicer
-----------
1. Bug fix. The code to handle CP/M3 directory label (user 32) prevented
display of CP/M 2 user numbers >31.
Previous versions of L 4.n regarded user 32 as containing only the so-called
CP/M3 volume name and also processed only the first one found. (The correct
name for such entries is `Directory Labels' not 'volume name'.) The
Microbee net system uses User 32 to hide system files. L45 is designed for
this system in particular.
L45 upon finding a file in User 32, now also checks bit 0 of the
directory label data byte (at FCB + 12). If this bit is 1, it defines that
entry as a true CP/M3 `directory label' and it is NOT shown as a normal
file under any circumstance. CP/M3 BDOS makes sure only one such entry
can exist. If it is 0, the assumption is made that it is not a Directory
Label and is a real file in User 32.
The order of precedence for disk labelling remains (but now works).
NAME.000 Directory Label (User 32, bit set as above) - I think only CP/M3
!NAME.000 'new' standard where there are many '-' files on disk.
-NAME.000 most catalogue programs use this method.
If a true CP/M3 Directory Label is found, the label field is filled and is
always displayed on screen ONLY as a directory label. On the other hand,
file names beginning with ! or - are also listed as normal files.
2. Consequent on the above, a MAXUSR option has been added. This is a user
configurable option in page zero. It may be changed so that for example,
only selected operators of a net system can scan User 32 or greater.
The distribution default is 1Fh (User 31). Use PATCH or DU to change the
value (hex only).
CP/M3 directory label searching occurs regardless of the max user.
If a user number greater than the max allowed is tried, only user 0 is
displayed.
eg,
L 32:<CR> <-- will display user 0 in distributed COM file.
3. A special note for CP/M 3 users. The syntax for all options is to follow
the file command `L' with two spaces rather than just one as for CP/M2.
eg,
A>L *:<CR> <-- display all user areas. CP/M 3
A>L *:<CR> <-- display all user areas. CP/M 2
A>L ::<CR> <-- display internal help screen. CP/M 3
A>L ::<CR> <-- display internal help screen. CP/M 2
===========================================================================
v4.4 update - 14 Jun 87. rwc
-----------
1. Bug fix, volume labels (CP/M 3) were stuffing name comparison.
2. Line count now reinitialized for re-running, eg, @ *.COM.
3. Improper extent masks (EXM) now handled ok. Specifically for Hitachi
system which does not follow standard practice. (their bug?)
4. "L ::" will now produce help message. cf, "L : :" with v4.3
5. Added (re-instated v3) [S] option for displaying only system files.
6. Added [I] option to disable inverse display.
v4.3 update - 04 May 87. rwc
------------
1. Shifted top line to allow for 21000k disk size!!!. For 20 Mb Hard disks.
2. Page length now 23 to avoid losing top line. rwc
===========================================================================
v4.2 release. rwc.
------------
L42.COM prints a sorted directory with file sizes.
This is the new version of L.COM, which has become a local favourite
directory program. Changes (to be released when complete) to the Dream system
for the Microbee and Sorcerer have prompted a re-write, but this ought not
deter other system users from using it. New options include user numbers and
CP/M3 style date stamping.
Here is a list of features which are different to the version 3.n which was
released only a few months ago and included patches to display the high bit in
inverse video. I wish to thank several people who patched the old version to
make it better and for suggestions for this major update.
Summary of new features.
1. Displays high bit in inverse, but strips it before sending to printer.
2. Displays 'Used' and 'Free' correctly without needing to relog disk.
3. New 'time and date stamping' option - [D]. Compatible with CP/M3.
4. New 'display user number' option - [?]: or [*]:
5. New 'don't display files' option - [/].
6. Supports '!' and '-' disk naming. '!' takes precedence over '-'.
(CP/M3 volume label takes precedence over both)
7. Copes with CP/M 3.
All the previous options are retained - options such as Horizontally
displayed sort, P for print, A for All files, etc.
To obtain the internal help file, invoke L42 with an error in syntax, eg.
A:L42 ::<CR>
^ invalid option for L.COM.
A:L42 Z:<CR>
^ drive name out of range. Must be out of range for for BDOS, else BDOS
will respond with its error message.
A:L42 ............<CR>
^ ^ more than 8 characters.
The internal help message is:
------------------------------------------------------------------------------
L.COM v4.2, a Directory list program with user area and time & date support.
Syntax: L [[d][u]:][afile] [options]
d = drive; u = user; afile = ambiguous filename.
Options: (may be multiple)
A => Show All files ($DIR and $SYS) I => Disable Inverse highlighting
D => Show time and Date information P => Send output to printer as well
H => Sort across rather than down T => Sort by fileType then filename
/ => Don't list files
eg. "L : /*.COM" lists all except COM files in default user.
eg. "L *:*.MAC DP" lists MAC files in all users + date + to printer.
Notes: User number of "?" or "*" will list all users.
":" delimits drive/user from f/name; " " delimits f/name from options.
Option D shows CP/M3 creation date if present.
First file starting with a "!" or "-" will be used as disk name.
Attribute bits highlighted as follows:
12345678.RSA R => Read Only, S => $SYS, A => Archive
(c)1987 Richard Collett, with thanks to Ian Branch and Mike Thompson.
------------------------------------------------------------------------------
In common with many files these days, some configuration options are
contained in page zero, and suitable for patching directly with CEBUG, SID,
DDT, PATCH, etc. They are Inverse on escape sequence (INVON>), Inverse off
escape sequence (INVOFF>), and Page length (PAGE LENGTH>). Current settings
are 1B,29 to enable inverse, 1B,28 to disable inverse, and 18 (=24 dec)
lines per page.
Version 4 is a complete rewrite from scratch of version 3.0 of L.COM. This
was done to allow the date and time stamping facility and to get around a few
problems with the way earlier versions examined all user areas. I felt that
further kludging to a program that had more kludges than code was hardly
worthwhile any more, so I started from scratch, and dropped support for CP/M
1.4 and 64 columns.
The code is written in a fairly modular layout, reflecting changes in my own
programming style since the original L.COM appeared over 3 years ago.
Absolutely no BIOS calls are made by L.COM, and the only system scratch
examined is the DPB for the selected drive, using the address supplied by
the BDOS, so this version should run ok in most CP/M3 systems. The error
"Cannot find DPB" will be printed if your CP/M3 system is silly enough to
page out the Disk Parameter Blocks. Note that I do use the direct console I/O
function in the BDOS for fastest "legal" screen output, hence the need for a
print option because ^P won't affect L.COM. The keyboard is checked at each
crlf for ^S pause. Any other key will cause immediate program abort.
An insertion sort is used, which gives excellent sorting speed, (I think).
Every active directory entry on the disk is examined sequentially and
manipulated into an 18 byte string with the number of groups used and the
time/date stamp appended, and placed at the top of a "heap". The number of
groups used is added to a running total to allow the disk free space to be
calculated without relogging new disks. Entries which do not match the
user-requested filename (or do match the "except" filename) are immediately
discarded, otherwise the heap is scanned using the index array (which points
to the entries in ASCII (=> alphabetical) order. If another extent of the
same file is found already in the heap then it is overwritten with a composite
entry made from the name and date stamp of the entry with a smaller extent
number, and the extent number and group count of the other entry. If no such
extent is found then the current name is left on the heap and its address is
inserted into the index array immediately after the entry it follows
alphabetically. All the output subroutine need do is output the names in order
taken from the index array, and calculate their size from the extent number
and group count.
At present the array is dimensioned to hold 2048 entries plus an extra
blank entry at the end. When I wrote this note the index array started at
0CC0h, the heap started about 4k above at 1CC2h, so a 48k TPA allows about
9300h for the heap, or 37632 bytes. Dividing by 18 bytes per entry gives
2090 entries, which is just more than we need to fill the array. No range
checking is performed, but I can't see many people running more than 2048
directory entries (it would be too damn slow!). I would say 1024 entries on say
a hard drive would be a reasonable maximum, in which case the highest memory
address the heap would reach would be about:
1D00h+(18*1024) = 6500h, so a 32k TPA would be heaps
Richard Collett. 28-January-87. Melbourne Australia.
Configuration.
-------------
Few users will want or need to change anything. However, contained in the
first page of the file are four user-definable options. In common with a cute
trend, these options are of the following type:
INVON> ) each of which is immediately
INVOFF> ) followed by several configuration bytes.
These would appear in the COM file as:
I N V O N >
49 4E 56 4F 4E 3E 1B 29 00 00 00 00 ...... <-- Inverse ON for ADM3 terminal
I N V O F F >
49 4E 56 4F 46 46 4E 1B 28 00 00 00 ...... <-- Inverse OFF for AMD3 terminal
Thus to configure L.COM, use a utility which allows direct editing of bytes
in the COM file. Such a utility is PATCH or DU2.
Options are:
Default
INVON> 1B 28 esc ) Inverse ON
INVOFF> 1B 29 esc ( Inverse OFF
MAXUSR> 1F hex 31 dec Maximum allowable user number
PAGELEN> 17 hex 23 dec Page length of screen to be scrolled.