 Introduction to Library Files
 Initialize Library    - LUINIT
 Return LBR directory  - LUDIR
 Open a Library file   - LUOPEN
 Close a Library file  - LUCLOSE
 Read a Library File   - LUREAD
:	 Introduction to Library Files 

Librarys are a method of combining a number of files into a
single file in such a way that each member file can be
discretely accessed.  Advantages of Libraries are that only
one directory entry is needed for the library rather than one
for each file, and only a maximum of 127 bytes per file is
wasted compared to several thousand bytes wasted for small
files on large hard disks.

These routines provide a standard way to access files contained
in libraries.  Access to Library files is via a Library Utility
Descriptor which is a block of memory organized as:

 LUD:	DEFS	2	; Length of Lib Directory (set by LUxx)
	DEFS	2	; Next Block of Curr File (set by LUxx)
	DEFS	2	; # of remaining Blks in File (by LUxx)
 LUFIL:	DEFS	11	; Name of current file (set by LUOPEN)
 LUFCB:	DEFS	36	; FCB of Library (FN.FT set by user)

Multiple Libraries may be accessed by using several LUDs.

:LUINIT - Initialize file for Library File manipulation

  ENTER: DE = Pointer to an LUD containing FCB and other info
  EXIT :  A = 0, Zero Flag Set (Z) if No Error
	      A = Error Code, Zero Reset (NZ) if Error as:
		  1 = File Not Found
		  2 = File Empty
		  3 = Library File Format Error
  USES : AF
  REQUIREMENTS: Drive and User of Library must already be set
  SIDE EFFECTS: The DMA address is set to 80H by this routine

 Usage: This routine must be called for each LUD before it is
  used to access any of the other routines in this section.
  You must insure that bytes 1-11 in the FCB section of the LUD
  are set with the desired Library Name and Type before calling
  LUINIT.

:LUDIR - Return Directory List for Library

  ENTER: DE = Address of a Library Utility Descriptor (LUD)
	 HL = Address of Ambiguous 11-char Filename & Type
	 BC = Pointer to start of Memory Buffer
  EXIT :  A = 0, Zero Flag Set (Z) if Operation Ok
	      A <> 0, Zero Flag Reset (NZ) if TPA Overflow
  USES : AF
  REQUIREMENTS: Drive and User of Library must already be set
  SIDE EFFECTS: The DMA Address is set to 80H by this routine

 Usage: This routine is used to locate all files in a Library
  matching a specified Ambiguous or Nonambiguous Filename and
  Type.  If all question marks or spaces are specified, a file
  with all spaces in Name and Type fields will be returned.
  Files are listed in 17-byte entries organized as:

	DEFB	'FILENAME'	; 11-char file name
	DEFB	'TYP'		; 3-char file type
	DEFW	START_IDX	; Index of file start
	DEFW	LENGTH		; # of 128-byte blocks in file
	DEFW	FILE_CRC	; CRC of file
:LUOPEN - Open a Library File for access

  ENTER: DE = Address of a Library Utility Descriptor (LUD)
	 HL = Pointer to Filename and Type
  EXIT :  A = 0, Zero Flag Set (Z) if Open Ok
	      A <> 0, Zero Flag Reset (NZ) if File Not Found
  USES : AF
  REQUIREMENTS: Drive and User of Library must already be set
  SIDE EFFECTS: The DMA Address is set to 80H by this routine

 Usage: This routine is used to open a file in a Library for
  access by LUREAD.  The File name and type addressed by HL
  may be ambiguous in which case the first file in the Library
  matching the specification will be opened.  The exact name
  may be determined by examining the Current File Name section
  of the LUD after calling LUOPEN.

:LUCLOSE - Close a Library File

  ENTER: DE = Points to Library Utility Descriptor
  EXIT :  - None
  USES :  - None

 Usage:  This routine simply zeros the Index and Length fields
  of the LUD, but does nothing else since no close is needed on
  a file which is only accessed for reading.

:LUREAD - Read Record from a File in a Library

  ENTER: DE = Address of a Library Utility Descriptor (LUD)
  EXIT :  A = 0, Zero Flag Set (Z) if Read Ok
	      A <> 0, Zero Flag Reset (NZ) if End-Of-File
  USES : AF
  REQUIREMENTS: Drive and User of Library must already be set

 Usage: This routine may be used in the same manner as other
  SYSLIB routines to read a single 128-byte record to the
  current DMA address.  The Current Record and Number of
  Records Remaining fields of the LUD are updated by each call
  to LUREAD.
