;
	 I   Introduction

	 0    SYSLIB  - General Routines

	 1    Z3LIB   - ZCPR3 Support & Access Routines

	 2    VLIB    - Video support for ZCPR3 systems

	 3    DSLIB   - Clock and File Stamp Support
:I
	 Introduction to The Libraries, Version 4 

Version 4 of "The Libraries" is the culmination of over two
years of work.  Beginning with the Version 3.6 libraries, each
routine was optimized for performance on Z80 compatible micro-
processors, and much restructuring was performed to reduce code
size and increase functionality for programs using these new
routines.  Some of the ground rules for this effort were:

 o  Convert source code to Zilog mnemonics and optimize
    routines for execution on Z80 and HD64180 Processors

 o  Isolate unitialized Data into the DSEG where possible to
    permit ROMming of programs and for future growth to the
    Z280 processor

 o  Extract common code in routines to reduce redundancy

 o  Add routines and a new library to take advantage of
    developments in Command Processors and Operating Systems
    for CP/M-compatible computers
The newer family of 8-bit processors such as the Z80, NSC-800,
64180 and Z180 are capable of much more than the older 8080 and
8085 chips.  Until now, they have been saddled with the
inefficient routines in the older Version 3.6 libraries.  Since
the majority of systems have migrated to the ZCPR3 Command
Processor replacement which cannot operate on the older
processors, sacrificing backward compatibility with the 8080
was not considered a significant shortcoming.  In a like vein,
CP/M 1.4 remnants have been deleted, requiring CP/M 2.2 or
later "type" systems to operate correctly.

The original routines placed data as well as executable code in
the Code Segment, or CSEG.  In some routines, several hundred
bytes of uninitialized data was included in program code which
served only to increase the size of the program image.  Another
undesireable feature of this approach is that this practice
will not be permitted in newer processors using the so-called
protected mode of execution.  Moving data storage to a separate
segment with the DSEG assembler directive will make programs
portable to these newer systems, and allow them to be placed in
Read Only Memory (ROM).  Because of initialization requirements
in some modules, this goal could not be totally achieved.

Many cases of duplicate code were identified within library
routines.  Such cases were simplified by extracting the common
fragments, and linking them only once.  This feature is
transparent and handled automatically by your linker.  Only one
precaution is necessary with this scheme.  These extracted
routine names generally begin with an "at" sign (@), and, with
a few exceptions, are undocumented.  If you link your own
library routines with the Version 4 Libraries, insure that no
duplication of names occurs, or strange things will happen.

Correction of deficiencies and differences between Library
routines and the documentation was also a high priority during
this effort.  These Help files should exactly reflect routine
parameters and functioning.  Where differences exist between
the printed manual and these Help files, the Help files should
be considered the more accurate.

The only deviation from the documentation is in routines where
the A register returns a value of 0 with the Zero Flag Set (Z)
on one condition, and the Zero Flag Reset (NZ) on the other
condition.  For most routines, the Non-zero value is derived
from a 0FFH value in the A register as specified in the printed
documentation.  This should NOT be considered as an absolute,
however, and in new development, you should consider any non-
zero value as valid, not just 0FFH.  This change is reflected
in these help files.

The area of robustness was also tackled, primarily for VLIB and
Z3LIB, in an effort to minimize the adverse effects of running
programs using those routines on systems not equipped with
ZCPR3.  While not all areas could be made "bulletproof", they
are considerably more tolerant than previous libraries.

Jay Sage, author of ZCPR 3.3 and 3.4, has contributed many
routines to Z3LIB to use the additional features of the latest
Command Processor Replacements.  His contributions also correct
deficiencies in existing modules.  The new Z3LIB has also been
updated to use the Extended Environment Description needed with
NZCOM and ZCPR 3.4.  As such, some of the definitions and
parameters have changed.  See specific Z3LIB Help for more
details.

VLIB has been significantly modified with additional features
and much faster operation.  Business graphics and Pull-Down
Menus are among the added capabilities.  Details on the new
Z3TCAP needed to take advantage of these routines are in the
VLIB Help section.

Several enhancements have been made to SYSLIB routines.  Among
the more significant are:

  - DFREE now additionally returns CP/M Plus Free Space
  - xFN1 Filename print routines mask Most Significant Bits
  - DIRQ/DIRQS routines call DBUFFER to reduce programming
	requirements for additional support functions
  - DIRF/DIRQ/DIRQS routines now ignore CP/M Plus Date Stamps
  - New routines have been added for Filename comparisons, Hex
	conversions and console output masking the MSB.  These
	are documented in the SYSLIB Help file

A new library, DSLIB, has been created to provide tools for
working with Clocks and File Time and Date stamping features
provided by ZSDOS/ZDDOS, DateStamper(tm) and Digital Research's
CP/M Plus (also known as CP/M 3.x).  Utility routines are also
featured for conversions between a variety of different Date
and Time formats.  For user programs, however, a standardized
format patterned after Plu*Perfect Systems' DateStamper(tm) is
used.  Directory routines patterned after those in SYSLIB will
return File Date Stamps along with basic file information.

:0:SYSLIB.HLP
:1:Z3LIB.HLP
:2:VLIB.HLP
:3:DSLIB.HLP
