Advanced Use of .LBR files on CP/M

Lots of utilities make use of .LBR (Library) files to provide extra facilities such as the ability to run commands from archives or mount them as if they were drives. This article shows some more advanced uses of .LBR files and is a follow-up to our previous article: Working with .LBR files on CP/M.

Setting Dates

Later versions of the .LBR file format definition added support for dates. On CP/M these can be set using SETD v2.2, dated 1988 by Brent B. Powers. These dates can be seen using LDIR-B v2.20 as mentioned in the previous article on .LBR files. The dates can be supplied at the command line or if you have a real-time clock you can write a small piece of code to query it.

Unusually for 1988 one of the files, SETD22.UPD, contains a warning about what may happen with the dates in the year 2000. In reality this was more of a problem with the 2 digit years used by SETD and LDIR-B than the .LBR format as the latter uses Digital Research's Julian date format which records the number of days from 31 December 1977 as a 16-bit number. This would support dates properly up to around the year 2157.

The archive for SETD v2.2 contains an interesting history of its previous versions as listed below:

Version 2.0 was the original assembly language version, recoded
from the TurboPascal version, in turn recoded from the
TurboModula-2 version, which was, finally, a translation of C.B.
Falconer's LSETDATE, with a slightly different date-parsing
algorithm.

I find it interesting that it went through three languages and in particular at one point was written using Turbo Modula-2, a language which didn't exist for very long on CP/M. The Turbo Pascal version is SETD v0.1, dated 17 Oct 1987.

Finding Files Within .LBR Archives

If we have lots of .LBR archives it can be difficult sometimes to remember exactly which archive contains a particular file. To search these archives we can use LFIND v1.13, dated 8 Nov 1984 by Martin Murray. LFIND allows us to search all the .LBR files on all drives and for all users to see which contain a matching filespec. It works really well but only on CP/M 2.2 as on CP/M Plus it lists somes files multiple times.

Mounting .LBR Archives as a Drive

It is possible to mount a .LBR or a number of .LBR archives as if they were a drive using LBRDSK v2.3, dated 13 Feb 1985 by Jim Lopushinsky. From here you can read and write to them, although writing isn't ideal because it can clobber files that follow a file if you are altering an existing one. The LBRDSK archive contains SETRSX11.COM which is used to provide RSX facilities on CP/M 2.2 and for this reasons it will only work on CP/M 2.2.

LBRDSK can be used as follows. To access LBRDSK23.LBR as if it was drive E: in read/write mode:

A> LBRDSK E:=LBRDSK23.LBR

To access the members of all the .LBR archives as if they were on drive E: in read mode:

A> LBRDSK E:=*.LBR

Running Commands

It is possible to run programs directly from a .LBR archive using LRUN v2.3, dated 8 Jul 1985 originally by Gary P. Novosielski. This is very useful if you have lots of small .COM files on a disk as by including them in a .LBR archive you can reduce the amount of space they take up because there may be be less wasted space if they are not a multiple of the block size. If you don't supply LRUN with a .LBR file then it will default to 'COMMAND.LBR'. This works very well, however it isn't suitable for all programs as they may need to access other files which can't be contained in the archive. It should also be noted that the member files can't be compressed.

Basic Information

Below is some basic information about each utility that you may find useful and interesting.

NameVersionDate Size (Kb)8080 Compatible
SETD2.210 Feb 19883
LFIND1.138 Nov 19845
LBRDSK2.313 Feb 19858+1
LRUN2.38 Jul 19852

Video

The following video shows these .LBR utilities in action.

Creative Commons License
Advanced Use of .LBR files on CP/M by Lawrence Woodman is licensed under a Creative Commons Attribution 4.0 International License.

Share This Post

Feedback/Discuss

Sign up to get new articles straight to your inbox.

Delivered by FeedBurner

Related Articles

Working with .LBR files on CP/M

The .LBR (Library) file format was the most common form of multi-file archive on personal computers at one time. It was created by Gary P. Novosielski in 1982 for use by his LU (Library Utility) progr...   Read More

Compression and Archiving on CP/M

CP/M has the ability to handle lots of different compression and archive formats which was important due to the limited capacity of floppy disks and the cost of downloading/uploading files on BBS's. T...   Read More

Re-execute Programs in Memory on CP/M

After a transient program terminates on CP/M it's often possible to re-execute it in memory without having to reload it from disk. This is a great little trick if using slow disks as it's much quicke...   Read More

I Love ED on CP/M

I love ED on CP/M. It's often derided but I think it's just misunderstood and with a little practise its true value can shine through. It's elegant, easy to learn and only has about 25 commands but t...   Read More

The Pilot Programming Language on CP/M

Pilot was created by John A. Starkweather in the early 1960s as a programming language for Computer Assisted Instruction. It has often been compared to Logo because of its use with children. However,...   Read More