                           *****************
                           *               *
                           * The X-Systems *
                           *               *
                           *****************

Now there are 5 library systems starting with an X in their name and 3 of
them end in master.library. I think a bit of information is needed to
know what they are. Note that these systems are shared libraries and thus
useless without an application program using them. XPK, XFD and XAD have
some easy application programs included in the distribution, but most
important are all the other applications using them.

XPRxxxxx.library: (XPR = eXternal PRotocol)

First of all there was the idea to implement program independent transfer
protocols to make different transfer system support a lot better than it
was this time. The xprxxxxx.libraries were invented. Most of the protocols
are wellknown from mailbox times (Z-Modem, X-Modem, Y-Modem, Kermit, ...).
Before the XPR libraries existed, the programs supported the protocols
directly and most time only some of them and always missing the one you
needed yourself. XPR made an end to that. You only copy the specific
library to LIBS: and select it in the terminal program (like Term) and
know you can use it. The libraries can be developed by different authors
and totally independent from any terminal program.
To be able to do so, all the libraries use a standard interface, which
does not differ in  all the libraries. So the terminal programm does
not need to do anything special, but only call the requiered function
and the XPR library is doing its work.

XEMxxxxx.library: (XEM = eXternal EMulation)

Like the XPR libraries, these libraries can be developed totally independant
from terminal programs. They present a set of different terminal emulations
(VT100, VT340, RIP, ...) and are designed a lot like the XPR libraries.

XPKxxxx.library: (XPK = eXternal PacKer)

This system was developed by Urban Dominik Müller and some other persons
and is continued by me. Its main concept is taken from XPR, but it is
used totally different. It is no longer used with terminal programs, but
with any program. XPK is a system to pack and unpack data in a standardized
data format XPKF. XPK consists of one xpkmaster.library, which does all
the work you need to do to support packing (data handling, file format
creation, parameter checking, ...) and a lot of sub libraries, which are
equal to the XPR libraries. They have an standardized interface and are
stored in LIBS:compressors directory. Normally you call the master library
when you need to pack or unpack something. You also may use the sub
libraries directly (like for XPR). The sub libraries all implement
different packing or encrypting algorithms. In an application program the
user only needs to select one of the libraries and the program now uses
that algorithm.
This allows applications to use up-to-date compression/encryption without
spending a lot of work implementing these in the program itself. And the
user is able to select parameters like "low packrate - high speed" or "best
rate - lower speed" or any other combination he likes.

XFDmaster.library: (XFD = eXternal File Decruncher)

Another system developed by Georg Hörmann. This system allows to decrunch
any type of crunched Amiga data (executable programs, data files). Unlike
XPK, which only decrunches its own types, XFD decrunches data of all the
other packer system developed over the years. XFD cannot crunch data,
only decrunch. Like XPK it consists of one xfdmaster.library doing all the
work. Unlike XPK the slaves can no longer be accessed directly, as they are
no longer libraries. Each slave is either internally in the library or
an extern file in LIBS:xfd. The extern slaves are normal Amiga executable
files with a standard interface allowing xfdmaster.library to call their
functions. These extern files can be developed independend from
xfdmaster.library by different authors, like it is for the other 4 systems.
Like for XPK, I'm now the author of the XFD system at least until Georg
wants back the authorship.

XADmaster.library: (XAD = eXternal Archive Decruncher)

This is the last system in this line. It's developed by myself and really
the newest. It is much like XFD system, but it dearchives file and disk
archives instead of files. The xadmaster.library gives application
programs a standard interface to extract files from file archives (lha,
lzx, ...) or unarchive disk archives (dms, zoom, ...). Like XFD, the XAD
system has library internal clients and extern clients stored in LIBS:xad
directory. These extern clients are Amiga executable files like for XFD,
but they have a totally different interface.

Additional words:
As XPK and XFD both decrunch data, they are linked a bit. XFD always
decrunches XPKF files by calling xpkmaster.library. XPK itself asks
xfdmaster.library, wheather a certain format is known to it and if it is,
XPK calls XFD to decrunch it. In this way XPK can decrunch some of the
non-XPK file types using XFD. As XPK needs to know which size the file
will have after decrunching, before the file is really decrunched, not
all of XFD's slaves are supported by XPK. Only slaves for crunched data
files which return uncrunched size on recognition are supported.

Also XAD clients may call XPK or XFD system to decrunch their data.

"Clients" (XAD), "Slaves" (XFD) and "Sub Libraries" (XPK) are different
words for the same thing: The parts really doing the work.


Dirk Stöcker <stoecker@amigaworld.com>

25th November 1998
