************************************************************************ * * * LDIR-B * * * ************************************************************************ Placed into the public domain by Steven G. Greenberg. Responsible updates encouraged, please document below. --------------------------------------------------------------------------- Update History --------------------------------------------------------------------------- v2.20 September 10, 1991 Bruce Morgen Repaired two minor display flaws. When listing a library with an internal modify date (but no internal create date) and a member wildcard token, v2.10 and earlier left no space between the closing parenthesis of the member wildcard display and the word "Modify" (previously "Mod"); this is now fixed. v2.2 also adds an single one-byte instruction to assure that the initial LDIRB header does not scroll off the screen when listing large libraries' contents. ........................................................................... v2.10 September 5, 1991 Gene Pizzetta Added divider line before summary line (looks more like UNARC which was Steven's intent). Summary consolidated to single line (was able to coax variable length numbers out of DECOUT with a little extra code). Changed "Cre date" (What was that, again?) and "Mod date" to "Created" and "Modified". Created new documentation file and moved history to separate file so there's some headroom. Crunched the code some more and it's a few bytes shorter! Known bug: Libraries with more than 999 members will likely cause the summary line to wrap, but he who does it, deserves it! ........................................................................... v2.00 August 20, 1991 Bruce Morgen Two subtle tweaks suggested by Jay Sage: control character filter on all CRUNCH/LZH comment strings, summary line shown even if there are no matching files. Also, LBR file name shown on summary line (a boon when listing big LBRs!). One byte short of the 2K mark.... ........................................................................... v1.90 August 15, 1991 Bruce Morgen (unreleased) Introduced a summary of LBR directory statistics as suggested by Jay Sage. Did some fairly severe code crunching to keep the program at the 2K mark, ran across and repaired a bug that had not surfaced previously because a referenced defined space is now above the COMfile image instead of in it. The value at OFFSET is now written and read as a byte, not written as a byte and read as a word, which was a tince longer/slower anyway! Fixed long standing cosmetic problem with internally dated LBRs combined with member wildcard specification at the command line. ........................................................................... v1.80 February 24, 1991 Gene Pizzetta Oops! v1.70 was not initializing MEMCTR so the GO command gave incorrect number of matching members. Fixed it! ........................................................................... v1.70 February 17, 1991 Gene Pizzetta CR23D does not reset high bits when crunching files and I got tired of seeing strange characters in the uncrunched member names shown by LDIRB. Those high bits are now reset in the display. While I was at it, I added the one feature I always missed. A summary line is now printed giving the number of matching member files found. A version (VERS) equate was added at the beginning of this file and the version date was removed from the usage screen to facilitate version updates. Blank lines were removed from the displays to make them more compact. The syntax line under ZCPR3 now shows "dir:" instead of "du:", which is correct. Lastly, under ZCPR3 the program error flag is now set if no matching member files are found (FFh), if the library file is not found (10), or if the library is corrupt (4). ........................................................................... v1.60 July 1, 1990 Howard Goldstein Fixed problems associated with zero-length member files. The program was attempting to read the first record of each member file. Not too cool if the member file is empty! Modified to display original file name on squeezed as well as crunched files. Corrected usage message. Removed all old commented-out code; shortened code in a few places. Modified the code that reads the LBR directory into memory to exclude each member's CRC. This gets us down to 19 bytes per entry again. ........................................................................... v1.50 September 19, 1989 Sean N. Sullivan Really simple fix to add capability to recognize files compressed by CRLZH. Also if file is not compressed (i.e., neither squeezed, crunched, nor crlzhed), the LDIR listing says that it is "Stored". A minor change to the help display so it looks a little more like a ZCPR3 help display. Plus a minor change to the listing heading (HEDING:). ........................................................................... v1.40 July 1, 1988 Michal Carson Added display of datestamps for the library itself. Corrected one bug with interpretation of crunched-file datestamp headers; 0ffh was not being converted back into 00h. This caused trash to be displayed in the guise of a datestamp, specifically "FF ore] FF". Look familiar? No? Oh, well. Re-arranged pfname routine to downcase letters of a filename which have high bits set; these should not be appearing in libraries and if they do appear, we certainly want to be aware of them. Extchr has been replace by crflag which will contain 0ffh if the file is crunched; this serves the same purpose as storing the middle letter of the file extension in extchr. Changed method of determining a file's compression; the first sector of each file is now read and the first two bytes examined for crunched or squeezed headers. This will add very little to the execution time given that crunching is very common now and we would read a sector of any crunched file anyway. Uncommented code to exit with a warm boot if the byte at 111h is not zero (0ffh). ........................................................................... v1.30 May 28, 1988 Michal Carson Added support for Modification date. Changes to display--eliminated CRC to make room; my apologies to anyone for whom the CRC display held great significance. LINLEN lost two more characters (now 19). Version 1.20 was not available; I have seen only a com file. ........................................................................... v1.10 November 5, 1987 Bruce Morgen Added minimalist ZCPR3 support. If the program is installed via Z3INS or Z-RIP (or auto-installed at run-time by ZCPR 3.3+ or by BGii 1.13+), LDIR-B will get the wheel byte address and CRT length from the ZCPR3 environment and will log into the user area parsed into DFCB+13 by the CPR. This revision necessarily moves the configuration bytes up by eight bytes; it also uses the extra byte at "SPARE:" as the MSB of the wheel byte address and no longer assumes that the wheel byte is on page 0 (commercial ZCPR3 implementations tend to follow the "Echelon Standard" memory map, established by Joe Wright, which puts the wheel byte up at FDFFh). LDIR-B now displays filesizes in records as well as kbytes. The record count is more easily related to the file transfer progress displays of IMP and MEX, and with the DECOUT routine already available, why not? Reduced "LINLEN" to 21 and revised "HEDING:" format to accomodate the record count inclusion. LDIR-B now accepts the second token on the incoming command line as an optional wildcard filespec for selecting the library member files to be shown. If present, this selection is displayed following the library's name in the "( --> filename.typ)" format. The rather silly 1023-member restriction is also removed through the simple expedient of using a 16-bit value at "DIRLEN:" and adding a little extra code to handle the bigger numbers. Fixed bug handling LBRs with no member files, same code handles a no-match situation with the user-supplied wildcard. ........................................................................... v1.00 (ver B) 18 Oct 87 Steven Greenberg For additional system security, will ignore LBR files with SYS attribute set if wheel byte is zero. The wheel byte location is defined by the byte at 105H and defaults to 3EH (prevents snooping around sys COM files on systems using a COMMAND.LBR). Checks for console characters - aborts on ^K,K,k ^X,X,x or ^C,C,c, pauses on ^S. Added line counter which issues "[more]" prompt after 22 lines (byte at 104H). Typing a space at any time sets line counter to one for "line by line" advance. LUXX77A revised to LUX77B by Irv Hoff now includes and automatically supports this program. ........................................................................... v0.91 (ver A) 08 Oct 87 Steven Greenberg Beta release. ===========================================================================