Short:    A packer for the xpk-package, V1.3 (optimized, with modes)
Author:   K. Dagef"orde
Uploader: dagefoer@rzcipa03.rz.tu-bs.de
Type:     util/pack

---------------------------------------------------------------------------

                                    RAKE
                         A cruncher of the LZ77 family
                             for the XPK-package
                                Version 1.3
                     Copyright 1994 by Karsten Dageförde

                              Status: FREEWARE



                             License/Disclaimer
                             ------------------

   This  library  may  be  freely  distributed, as long as it is kept in its
original,  complete,  and  unmodified  form.  It may NOT be distributed in a
commercial package of any kind without my permission.

   This  program  is  distributed  in  the  hope that it will be useful, but
WITHOUT  ANY  WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE.


                                Installation
                                ------------

    You'll  need  to install the XPK package first to use this library.  The
XPK  package  should  be available on most Bulletin Board Systems, so try to
get it there.

    If  you  already have the  XPK package  installed, add  this  library to
your system simply by copying the xpkRAKE.library  to your LIBS:Compressors/
directory, or  if you've got a 68020 (or greater) processor, you should take
the xpkRAKE.library.68020' instead.


                                Description
                                -----------

    RAKE is an  XPK packer sublibrary  which  implements a highly  optimized
form  of  the popular  LZ77 compression  algorithm. It  uses  static huffman
coding   for   the  'len'   and  a  three-step  coding  for   the   'offset'
information.  The  major  feature   of this packer  is the  highly optimized
algorithm for tracking down redundant data.


    RAKE now supports four modes  at  compression.  To speed up  compression
everytime a better match (than the previous) is found  the 'dictionary' size
will be reduced dynamically according to the pack-mode by division ...

 0..25  : by 8, 
26..50  : by 4,
51..75  : by 2 (using 'lsr.w', of course).
76..100 : The  full  dictionary  size  of  approx. 20KB  will  be scanned for
          redundant data.

-----------------------------------------------------------------------------

    IMPORTANT: There is no need to repack files packed  with RAKE V1.0 - V1.2
               (68000 or 68020 version), because RAKE V1.3 is totally
               compatible with older versions  and  also vice versa,  it just
               works faster.

-----------------------------------------------------------------------------


                                 Statistics
                                 ----------

    Following  is  a table  briefly listing some  comparative statistics for
NUKE  and  RAKE.  These  were   generated   by   xBench   on   an   A3000/25
with 2MB ChipMem and 4MB FastMem, using the AmigaVision  executable as data.
Note that memory needs don't include  xpkmaster.library's buffers.


                                                        | Memory usage while
Packer      UComp   Comp    CF     CSpd     USpd        | packing  unpacking
----------------------------------------------------------------------------
68020_V1.1 (OLD VERSION)
rake       594712 322872 45.8%    67047   491497        |    256K         0K

nuke       594712 326908 45.1%    41472   613105        |    192K         0K

68020_V1.3
rake.100   594712 322932 45.7%    73877   632672        |    256K         0K
rake.75    594712 325028 45.4%    86190   632672        |    256K         0K
rake.50    594712 326948 45.1%    96387   626012        |    256K         0K
rake.25    594712 328848 44.8%   103608   626012        |    256K         0K

68000_V1.3
rake.100   594712 322932 45.7%    72703   499757        |    256K         0K
rake.75    594712 325028 45.4%    84596   499757        |    256K         0K
rake.50    594712 326948 45.1%    94548   495593        |    256K         0K
rake.25    594712 328848 44.8%   101313   495593        |    256K         0K




                                  History
                                 ---------

Sep-9-94   V1.0 First public release (68000,68020)

Sep-14-94  V1.1 BUGFIX: Uncompressable data (or remainder) should not  cause
                        XPKERR_SMALLOUTBUF  but  XPKERR_EXPANSION !
                        (Worst case: OutLen = OutBufLen + 5(<<XPK_MARGIN) :)

           V1.2 Not a public release (minor bugfix for xp>K<-handler)

Nov-6-94   V1.3 Using bit-field instructions for 68020 version. Pack-routine
                now fits in 68020 instruction cache.  Further  optimizations
                done to increase packing & unpacking speed :-). Memory
                shortage causes XPKERR_EXPANSION => files won't be packed but
                be saved uncompressed by XFH without aborting with an error.


                              Contact Address
                              ---------------

                        dagefoer@rzcipa03.rz.tu-bs.de
                                     OR
                          dagefoer@ibr.cs.tu-bs.de


============================= Archive contents =============================

Original  Packed Ratio    Date     Time    Name
-------- ------- ----- --------- --------  -------------
    6596    3703 43.8% 06-Nov-94 21:56:04  xpkRAKE_V1.3/68000/xpkRAKE.library
    7444    3676 50.6% 06-Nov-94 21:56:08  xpkRAKE_V1.3/68020/xpkRAKE.library
    5088    2034 60.0% 06-Nov-94 23:07:30  xpkRAKE_V1.3/xpkRAKE.doc
-------- ------- ----- --------- --------
   19128    9413 50.7% 11-Nov-94 10:04:38   3 files
