
                      **********************************

                          powerpacker.library V36

                          Release 1.6

                          (c) 1991-1993 Nico Franois

                      **********************************


    First of all read the DISTRIBUTION file for information on... er well...
distribution :-)

    Several people suggested the development of a library to help programs
decrunch files crunched with PowerPacker, and that is exactly what this is.
    This library tries to make it very easy to support PowerPacked files. It
is a standard Amiga shared, runtime library and is called exactly like all
the other Amiga libraries. Using this library it will be a lot simpler to make
your program 'PowerPacker compatible' than with the previously distributed
decrunch source.

    To install powerpacker.library copy it to your LIBS: directory by hand,
or run the installation script 'Install' (by using 'Execute' or by double-
clicking its icon).

    You should also install reqtools.library in LIBS:.  It is needed for
the requester functions in powerpacker.library.  The installation script
will automatically install reqtools.library.


    WARNING:  powerpacker.library patches the exec/FreeMem() vector!  This
    ~~~~~~~~  had to be done for backwards compatibility.  Some virus
              checkers look at this vector and issue a warning!


    Using powerpacker.library
    -------------------------

    If you are a C programmer all you need to do is include the correct
headers and open powerpacker.library. After that you can use the functions in
the library as if they were C functions. If your program quits it must of
course close the library again. See 'example.c' for a very simple example.

    If you are using SAS/C 5.10 and you don't want to use pragmas, or if
you are using version 4.0 or lower, you must link with LIB:pp.lib (small code)
or LIB:ppnb.lib (large code).  You'll find the .lib files in the Glue/SAS-C
directory.

    From version 1.3c onwards Dice C is also supported.  You can find two
libraries to link with in the Glue/Dice directory. Link with powerpackers.lib
(stack args) or powerpackersr.lib (registerized args), both small data model.

    PPLib 1.4 now also includes libraries for the Manx C compiler.  You can
find them in the Glue/Manx-C directory.

    Assembly programmers should also include the correct files and open
powerpacker.library. To call a function they must load A6 with the library
base, put the arguments in the appropriate registers and jump to the library
vector offset of the function they want to call. See 'example.asm' for a very
simple example.

    All library functions are explained in the file 'pplib.doc'.

                                                       Enjoy.


                               LIBRARY HISTORY:

*****************************************************************************
RELEASE 1.0 (Library Version 33.1)

    First release.

*****************************************************************************
RELEASE 1.1 (Library Version 34.1)

    Added 'ppOverlayDecrHdr' for use of library from overlay decrunch header.
    Requesters now have depth and close gadgets.
    Faster decrunching in 'pp...DecrHdr' code.

*****************************************************************************
RELEASE 1.1a (Library Version 34.2)

    Bug fixed: A6 was not preserved in ppLoadData!
    Oberon interface to the library included.

*****************************************************************************
RELEASE 1.2 (Library Version 35.254)

    PowerPacker 4.0's library decrunch header needs this version to work.
      Some things have changed to crunch files even better :-)
    After relocation of loaded executable the instruction and data caches
      are cleared.  This should insure compatibility with the 68040.
      Note that this only applies to Amigas running Kickstart 2.0 (V37).
    Crunching code added to library (4 new functions):
      ppAllocCrunchInfo, ppFreeCrunchInfo, ppCrunchBuffer, ppWriteDataHeader.
    One new requester function: ppEnterPassword.
    The requester functions ppGetString and ppGetLong are now declared
      obsolete!  They can now be found (much improved) in 'reqtools.library'.
    'reqtools.library' _MUST_ be installed in your system for the the old
      (obsolete) requester functions to work!  ppGetPassword and
      ppEnterPassword also call functions in 'reqtools.library'.
    ppErrorMessage function added to get default error messages.
    Support for crunched LoadSeg files added for use with PPLoadSeg 1.1.
    Stricter check for unknown data headers.

*****************************************************************************
RELEASE 1.3 (Library Version 35.255)

    Fixed serious bug: PPLoadSeg files were incorrectly decrunched!
    Now distributed with release 1.0a of reqtools.library.
    Improved installation script.

*****************************************************************************
RELEASE 1.3a (Library Version 35.256)

    Fixed serious bug: in low memory situations ppAllocCrunchInfo crashed!!
    Small changes and enhancements to autodocs.

*****************************************************************************
RELEASE 1.3b (Library Version 35.256)

    Updated Oberon interface by Kai Bolay included.
    Release 1.0b of reqtools.library included.

*****************************************************************************
RELEASE 1.3c (Library Version 35.256)

    Libraries (powerpackers.lib and powerpackersr.lib) for Dice C included.
    Release 1.0c of reqtools.library included.

*****************************************************************************
RELEASE 1.4 (Library Version 35.274)

    Command files using PowerPacker 3.0b's or 4.0a's library header will
      decrunch faster.
    Decrunching code optimized.  About 20% faster.
    LoadPPLib will no longer return an error code when run on Kickstart 2.0
      or higher.  It just won't load powerpacker.library and reqtools.library
      in memory.  It can now safely be used in startup-sequences of disks for
      both Kickstart 1.2/1.3 and 2.0.
    Edited autodoc for ppDecrunchBuffer() a bit.  Hope this helps Michael
      Berg :-)  (Michael, if you are reading this, your optimized decrunch
      code in PowerPackerPatcher 1.4b turned out to be just as fast as the
      original code.  A 'lsr.l d1,d0' takes just as many clock cycles as a
      'lsr.l #1,d0'!  I suppose you compared your "optimized" decruncher to
      an old PowerPacker decruncher since I optimized the decruncher by 15 to
      20% when I released version 3.0a.  I suggest you use ppDecrunchBuffer()
      for your next release of PowerPackerPatcher since it is now faster.)
    No longer uses partial FreeMem()s as it seems these are illegal.
    Latest revision of Oberon interface included.
    Aztec C interface to the library included.
    Release 1.0d of reqtools.library included.

*****************************************************************************
RELEASE 1.5 (Library Version 35.344)

    DECRUNCHING SPEED GREATLY IMPROVED!  Thanks to Alain Penders for his
      great ideas to speed up decrunching.  Decrunching is almost twice as
      fast.  Together with the 20% speedup achieved in release 1.4 of
      powerpacker.library this means decrunching is double the speed it was
      originally (version 1.3 and before)!  For the Imploder fans out there,
      PowerPacker decrunches faster than Imploder now.
      Also note that it is now MUCH better to use the Library Header feature
      of PowerPacker 4.0a as the resulting executable will decrunch twice as
      fast!
    Bug fixed:  buffer overflow wasn't always detected correctly.  This could
      result in files crunching incorrectly.  Luckily the chances of this
      happening were very small, but it is fixed now anyway.
    Small changes to autodoc regarding generating encrypted files.
    Bug fixed in Dice library, ppCalcChecksum() was not included.

*****************************************************************************
RELEASE 1.5a (Library Version 35.347)

    Another (harmless) bug in buffer overflow detection fixed: it was
      possible a buffer overflow was detected too soon.  This especially
      happened with files which would crunch extremely well.  Fixed.
    Release 2.0a of reqtools.library included.

*****************************************************************************
RELEASE 1.6 (Library Version 36.10)

    Library header decrunching functions now allocate memory with the
      MEMF_PUBLIC attribute set.  This should ensure compatibility with
      GigaMem.
    Added new function: ppCrunchBufferDest().  Allows you to crunch from
      one buffer to another.
    Crunching routine slightly optimized.
    Release 2.1f of reqtools.library included.

*****************************************************************************

powerpacker.library written by Nico Franois (Yes, Nico is my first name :-)
                    thanks to Moroder Andreas for the useful suggestions,
                              Kai Bolay for writing the Oberon interface,
                              Jan van den Baard for the Dice C libraries,
                              Martin Steppler for the Aztec C libraries
                              and Alain Penders for the 680x0 hacking!


"To lessen my troubles
 I stopped hanging out with vultures
 And empty saviours like you        " - The Black Crowes


(c) 1991-1993 Nico Franois

                                   //
                       Thanks to \X/ Amiga for being the best computer ever !

