Document Crunch-Mania V1.95 User's Guide

                         Crunch-Mania User's Guide

                 Registered / Test Version 1.95 - 11.04.95



                         Written by Thomas Schwarz

                  Copyright (c) 1991-95 by Thomas Schwarz
                            All rights reserved


1. Introduction
================


1.1. Copyright & Registration
------------------------------

    Crunch-Mania  is  Copyright  (c)  1989-95  by  Thomas  Schwarz.  It was
 released  under  the  concept of "Shareware".  All versions until V1.6 are
 Public Domain, but starting with V1.7 they are Shareware.  I have released
 a  test  version  that  may  be spread to give you a hint on the program's
 abilities.   If,  after  a  testing  period  of  some weeks, you find this
 program  useful,  please  register.   By cooperating with this concept you
 help to ensure continued development of this product.

    Registered   Users   will   receive   the  latest  release  version  of
 Crunch-Mania,  a  faster library, the latest version of RTDD, includes and
 autodocs  for  the  CrM.library  and  separate  decrunch  sourcecodes  (in
 Assembler).    The   registered   version  has  no  annoying  registration
 requesters  and  has  some  more  features  which  are ghosted in the test
 version.

    No  person(s)  or  businesses  other  than the author are authorized to
 accept  any  registration  or  distribution  fees  in any form whatsoever,
 except as specified by the author.  Only people who have sent US 20, DM 30
 or  more  to  the  following address will be regarded as registered users.
 Only these two currencies and only bank-notes will be accepted.

                              Thomas Schwarz
                              Dammstrasse 12
                            70806 Kornwestheim
                                 Germany

    Just  put  the  money  in an envelope together with some piece of paper
 with  your  request  and your address on it or print out the orderform and
 then post it to me.

    Delivery  may  take  two to eight weeks.  Usually you will be sent your
 registered  version  right  away,  but  if a new version is imminent to be
 completed, you will get that one as soon as it becomes available.

    I  am  still  searching  for somebody or a company who distributes this
 program  as a commercial product, so I can spend my time in developing new
 features and not in pasting stamps on envelopes.  So be free to contact me
 to relieve my pain!

    The  reqtools.library this program uses starting with V1.8 is copyright
 1991/1992 by Nico François.  That's what I call cool!


1.2. Distribution
------------------

    Basically,  the  test version of Crunch-Mania may be distributed freely
 as long as the following conditions are met:

    The  Distributor may only charge a fee up to the costs of obtaining any
 common  public  domain  disk.  The distributor agrees to stop distributing
 the  programs and data involved on request of the author.  The distributor
 may  only  distribute an unmodified copy of the original program, with all
 the supplied documentation and copyright notices left intact.


1.3. Support
-------------

    If  you  have any suggestions, bug reports or questions, please contact
 the author at the above address.

    When   sending   bug   reports,  please  describe  exactly  under  what
 circumstances  the bug occured, what equipment was used and what happened.
 If  possible  also try to give me enough information to reproduce the bug.
 It  is  very  difficult  to  find  bugs  when  you don't know exactly what
 happened.   Please  don't  just  send  messages like "my machine sometimes
 crashes  when  I  try  to  load  xxx",  that  really  doesn't help me.  If
 possible,  submit  the offending file in crunched and original state to me
 so I can test it myself, or give me a pointer where I can find the files.


1.4. License
-------------

 1.   This  license  applies to the product called "Crunch-Mania", a set of
 programs  for  the  Commodore-Amiga  computer, published by Thomas Schwarz
 under  the  concepts  of  ShareWare,  and  the accompanying documentation,
 example files and anything else that comes with the original distribution.
 The  terms  "Programs",  "Crunch-Mania"  and  "CrM"  below,  refer to this
 product.  The licensee is addressed as "you".

 2.   You  may  copy  and  distribute  verbatim  copies  of  the  programs'
 executable  code  and  documentation  as  you  receive  it, in any medium,
 provided  that  you  conspicuously  and  appropriately  publish  only  the
 original,  unmodified programs, with all copyright notices and disclaimers
 of  warranty  intact  and  including  all  the accompanying documentation,
 example files and anything else that came with the original.

 3.   You  may  not  copy  and/or  distribute  these  programs  without the
 accompanying  documentation  and other additional files that came with the
 original.   You  may not copy and/or distribute modified versions of these
 programs.

 4.   You  may  not  copy,  modify,  sublicense, distribute or transfer the
 programs  except  as  expressly  provided under this license.  Any attempt
 otherwise to copy, modify, sublicense, distribute or transfer the programs
 is  void, and will automatically terminate your rights to use the programs
 under  this license.  However, parties who have received copies, or rights
 to  use  copies,  from you under this license will not have their licenses
 terminated so long as such parties remain in full compliance.

 5.   By  copying, distributing and/or using the programs you indicate your
 acceptance of this license to do so, and all its terms and conditions.

 6.   Each  time you redistribute the programs, the recipient automatically
 receives  a  license from the original licensor to copy, distribute and/or
 use  the  programs  subject  to  these  terms and conditions.  You may not
 impose  any further restrictions on the recipients' exercise of the rights
 granted herein.

 7.   You  may  not  disassemble, decompile, re-source or otherwise reverse
 engineer the programs.

 8.   You  may  use  the programs for a period of up to 30 days for testing
 purposes.  After that, you have to register.

 9.   If you wish to incorporate parts of the programs into other programs,
 write to the author to ask for permission.

 10.   You  agree  to  cease distributing the programs and data involved if
 requested to do so by author.

 11.   You  may  charge  a  fee to recover distribution costs.  The fee for
 diskette  distribution  may not be more than the cost to obtain any common
 public domain disk.

 12.   Only  the test version is intended to be distributed, the registered
 version may only be used by registered users and nobody else.


1.5. Disclaimer
----------------

    THERE  IS  NO  WARRANTY  FOR  THE  PROGRAMS, TO THE EXTENT PERMITTED BY
 APPLICABLE  LAW.   EXCEPT  WHEN  OTHERWISE STATED IN WRITING THE COPYRIGHT
 HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAMS "AS IS" WITHOUT WARRANTY
 OF  ANY  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
 THE  IMPLIED  WARRANTIES  OF  MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 PURPOSE.   THE  ENTIRE  RISK  AS  TO  THE  QUALITY  AND PERFORMANCE OF THE
 PROGRAMS IS WITH YOU.  SHOULD THE PROGRAMS PROVE DEFECTIVE, YOU ASSUME THE
 COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

    IN  NO  EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
 WILL  ANY  COPYRIGHT  HOLDER,  OR ANY OTHER PARTY WHO MAY REDISTRIBUTE THE
 PROGRAMS  AS  PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
 GENERAL,  SPECIAL,  INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
 USE OR INABILITY TO USE THE PROGRAMS (INCLUDING BUT NOT LIMITED TO LOSS OF
 DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
 PARTIES  OR A FAILURE OF THE PROGRAMS TO OPERATE WITH ANY OTHER PROGRAMS),
 EVEN  IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
 SUCH DAMAGES.


1.6. Future Plans
------------------

    The  program  is planned to be a real multi-talent.  So a disk archiver
 and  a files archiver will be added as soon as I have any spare time.  But
 my  special  attention will be given to the development of faster and more
 effective  algorithms.   Another  goal  is to adapt the GUI to Commodore's
 styleguide rules.

    If  you  register and support my program, you will speed up the release
 of  new  and  better  versions.  If there is little demand I may drop this
 project and start coding something else and that would be a great pity.


1.7. Why buy the registered Version?
-------------------------------------

    Well,  first  of  all you should buy the registered version, if you use
 this  program  for  a  longer  time.  With a registration you will support
 future  releases.   The registered version is faster both in crunching and
 in  decrunching.  With the registered version you can decrunch reloc files
 and  not  only  data files.  Registered users get the latest version of my
 run-time-data-decruncher  (RTDD)  which is very useful e.g.  for crunching
 icons or include files, they will be automatically decrunched.  The source
 code  of  the  decruncher  is  also provided to be implemented in your own
 releases.  Registered users receive a library that crunches and decrunches
 faster.   A  registered  user gets the latest version of this product plus
 the next version as soon as it gets available!  A program worth using is a
 program worth buying!



2. General Information
=======================


2.1. Outward Appearance
------------------------

    The  program  opens a 2 planes intuition screen which is *NOT* a public
 screen.  It uses the intuition.library for full multitasking compatiblity,
 the  gadtools.library for nicer gadgets and menus and the reqtools.library
 ((c)  Nico  Francois) for nice requesters.  It is self-detaching so you do
 not  need  to  call it with "run".  You can either run it from CLI or from
 the Workbench.

    The  program  is  controlled  by  gadgets and menus.  On the right side
 there  is an area for tables and error messages and at the bottom there is
 a  statusline  combined with a percentage display which indicates what the
 program is just doing.


2.2. Numbers Input & Output
----------------------------

 Input:
    You can enter hex and decimal numbers, but hexadecimal numbers are only
 recognized  with  a leading "$".  To get negative numbers put a "-" at the
 beginning  of the line.  An empty gadget has the same effect as one with a
 zero, sometimes this also means that you want to disable this option, e.g.
 an empty "Stack At"-gadget means that you don't want to set the stack to a
 special  address.   Some  extra functions can be reached by entering chars
 instead of numbers.

 Output:
    The  output  follows  the  same  rules as the input:  a "$" indicates a
 hexadecimal  number,  the  rest  is  decimal.  But there is one exception:
 while  loading  executables  in  the  Address-  or  Link-Mode the dehunker
 displays  hexadecimal  numbers  without  a leading "$".  This has not been
 forgotten but left out as a result of lack of space.


2.3. System Requirements
-------------------------

    For  packing  small  files 512KB may suffice but the full power of this
 program  can  only  be  obtained  with  at least 1MB memory resulting from
 200-400KB  of  tables  depending  on  the  version, the crunchmode and the
 offset.   Two  drives are comfortable but not necessary.  No problems have
 occured  under  Kickstart  1.2,  2.0 and 3.0, so it should also work under
 1.3, 2.x and 3.x+.


2.4. Other Information
-----------------------

    There  are  no known bugs.  Nevertheless the author is in no way liable
 for  any  errors and gurus invoked by the Program.  In most cases the user
 himself produces the errors by misusing the Program.

    This  document will only deal with the important things.  Understanding
 minor details like Filelen is expected.  These things are left out.


2.5. A Word on the Keys
------------------------

     You  may  invoke  actions by pressing special keys.  These actions are
 the  same  as  the corresponding gadgets would cause.  The key that stands
 for a certain gadget is underlined in the text next to or in the gadget.

     When  pressing a key, the gadget behaves as if you had used the mouse,
 i.e.  it looks like being pressed down.  In this state no actions have yet
 happened,  you may cancel your choice by pressing one of the <Shift> keys.
 Otherwise  the  action will be performed as supposed.  Only one key at the
 same time is regarded as pressed, keys that are pressed while an other key
 is still pressed will be ignored.



3. CLI-Options, Menus & Gadgets
================================


3.1. Command Line Options
--------------------------

    Here  is  a list of all options and parameters available and adjustable
 via  the  CLI.   The  same  options  can be used in the configuration file
 "S:CrM.cfg".   This  file is processed before the command line, so you can
 change  your defaults via the CLI.  A "+" instead of a "-" in front of the
 option reverses the result.


3.1.1. <?>  - CLI Help
-----------------------

    This  option  lists  all currently available options in the CLI to give
 you  a  brief  overview  of  what you can do there and then asks for a new
 command  line.  This option has to be the first in the command line and no
 other options may be specified with it.

 EXAMPLE

 1> CrM ?

 Crunch-Mania V1.9r - Copyright (c) 1991-93 Thomas Schwarz

 Command Line Options:
        .
        :

 Enter Command Line:

 (Well, with <Esc>-codes this looks a bit nicer)


3.1.2. <-c> - Set Screen Colors
--------------------------------

    With  this option followed by four hexadecimal numbers you can set your
 own  personally  preferred  screen colors fitting your needs.  The highest
 nibble of each number stands for the red part of the color, the mid nibble
 for the green part and the lowest nibble for the blue part.

 EXAMPLES

 1> CrM -c$889 $2 $ccd $358                ;These are the default colors.
 or
 1> CrM -c$0 $bbb $2a2 $137


3.1.3. <-d> - Enable Auto Makedir
----------------------------------

    This  option comes into effect when you crunch whole directories or use
 the  multiselect  feature  of  the  filerequester and you select a subdir.
 When this option is active this dir will be automatically created when CrM
 tries to access a file located in this dir, otherwise there will appear an
 information  requester.   When  you  deny  this requester the whole dir is
 skipped.

 EXAMPLES

 1> CrM +d                              ;lets a requester appear


3.1.4. <-e> - Set Extra Mem Size
---------------------------------

    As  this  program does not support floating compression, the source and
 destination  memory blocks overlap to reduce the memory needed.  Extra Mem
 specifies the distance between the two blocks.

    The  error message "File not crunchable!!!" indicates that the cruncher
 would  have  overwritten  some  data which has not yet been processed with
 crunched  data.   Nevertheless you can crunch those files by setting extra
 mem  to  a higher value, but the files usually then become longer than the
 original.

    Extra  Mem  may be set by the option <-e> directly followed by a number
 in the range from 100 to 10000.  Default is 100.

 EXAMPLES

 1> CrM -e100                           ; Sets Extra Mem to 100
 or
 1> CrM -e$200                          ; Sets Exrta Mem to 512


3.1.5. <-f> - Enable LED-Flash
-------------------------------

     While  packing the power-LED flashes to show the user that the program
 is working.  As you certainly know, the power-LED also steers the low-pass
 filter  for  the  four audio channels.  This may lead to an annoying sound
 when listening to a tune while crunching.  To prevent this you can disable
 the flickering with the option <+f>, default is on.

 EXAMPLE

 1> CrM -f                    ;Enable LED-Flash (default)


3.1.6. <-g> - Enable Segment-BPTRs
-----------------------------------

    This  option  only  comes  into  effect  in the address and link modes.
 There  you  can relocate executable to a certain address.  The dos.library
 does the same but it adds the lenght of a hunk and the pointer to the next
 hunk  in memory to all hunks.  Normally this is only for internal DOS use,
 but  some  programs  use  these  BPTRs to calculate the addresses of their
 hunks.   You  can  enable  the  creation of BPTRs with this option so that
 these  programs  don't crash any more.  As you don't need this option very
 often the default setting is off.

 EXAMPLE

 1> CrM -g			;now BPTRs are created


3.1.7. <-h> - Set Huffman Buffer Size
--------------------------------------

    This  option  can  be  used  to  set the size of the buffer used in the
 LZ-Huffman  compression  mode for collecting statistics.  The size of this
 buffer  affects the compression ratio in unpredictable ways.  As a general
 rule, keep this at the default, but if you are compressing homogenous data
 with  an  approximately  fixed  relative  frequency  of symbols (like text
 files),  setting this to a large value will improve compression.  Binaries
 generally compress best with the default setting.

    The  Huffman  buffer  may be of any size between 4K and 64K and must be
 specified immediately following the <-h> string, in kilobytes.

 EXAMPLE

 1> CrM -h32                 ;Sets the Huffman buffer size to 32768 (32K)
                             ;bytes

 The default Huffman buffer size is 16K.


3.1.8. <-i> - Set Subdir-Level
-------------------------------

    CrM  takes  care  of  this  option  when  you  want to crunch an entire
 directory  or  use the multiselect feature of the filerequester and select
 dirs.   This  number  specifies the level upto which the dirs are scanned.
 The  number  follows  immediately  after  the  "-i", see examples for more
 details.  Accepted values range from "-1" to "127".

    Let's  say  you  want  to  crunch the whole ramdisk and let's say yours
 looks  like  mine  below.  If you specify "-1" as number the whole ramdisk
 will  be  compressed.   If  you  enter "0" only "dirlist" will be crunched
 because  it  is  the  only  file in the rootdir.  When you take "1" as the
 number   CrM  will  crunch  "dirlist"  and  the  files  "ASM-One.Pref"  to
 "ZOOMOPTS"  in the env directory.  Taking "2" as number will have the same
 effect as "-1" (in this example case).

 RAM DISK:
      ENV (dir)
           GadToolsBox (dir)
             GadToolsBox.prefs
           egs (dir)
             mouse.prefs
           Sys (dir)
             floppy.prefs                     font.prefs
             icontrol.prefs                   input.prefs
             locale.prefs                     overscan.prefs
             palette.ilbm                     pointer.ilbm
             printer.prefs                    printergfx.prefs
             printerps.prefs                  screenmode.prefs
             serial.prefs                     sound.prefs
             sysfont.prefs                    wb.pat
             wbconfig.prefs                   wbfont.prefs
             win.pat
        ASM-One.Pref                     NEWLIST_LANG
        TERMPATH                         xprascii
        xprzspeed                        ZedZapWindow
        ZOOMOPTS
      Clipboards (dir)
      T (dir)
   dirlist

 EXAMPLES

 1> CrM -i-1                  ;take whole directory

 1> CrM -i1                   ;crunch sourcedir and the files of the dirs
                              ;in it

 Default is -1 (scan entire directory).


3.1.9. <-I> - Ignore Configfile
--------------------------------

    In the configuration file "S:CrM.cfg" you may specify your own personal
 default  settings  which  are  loaded  immediately  after the start of the
 program.   This  option prevents CrM from loading the config file what may
 come  in  handy  when you don't have your boot disk inserted.  This option
 has to be the first in the command line but others may also be set there.

 EXAMPLE

 1> CrM -I +r       ;don't load config file and don't load reqtools.library

 1> CrM -I          ;don't load config file and use internal defaults
                    ;instead


3.1.10. <-p> - Set Taskpriority
--------------------------------

    This  value  sets  the  taskpriority  of  the  background task which is
 responsible  for  loading,  crunching  and  saving.  The task handling the
 windows,  menus and gadgets always has a higher priority so that it is not
 frozen  while  crunching.   Nevertheless  you  have to select the priority
 wisely  because  high  priorities  will interfere multitasking which makes
 this machine so powerful!  This value ranges from "-128" to "126".

 EXAMPLE

 1> CrM -p-5                            ;Set Pri to -5

 Default is -1.


3.1.11. <-r> - Enable reqtools.library
---------------------------------------

    The  reqtools.library  is  loaded  by  default  and  is  used  for user
 communication.   When  you  are  short  of memory you may prevent CrM from
 loading it with the option <+r>.

    The  reqtools.library  is  copyright  Nico  Fracois.   It  is  used for
 filerequesters,   numberrequesters  and  informationrequesters.   CrM  can
 operate without this library, but it is more comfortable to use it.

 1> CrM +r            ;don't open reqtools.library


3.1.12. <-s> - Enable Sample Encoding
--------------------------------------

    This  feature  is  especially  designed  for compressing 8-Bit samples.
 Generally  this  option will only reduce the crunched size with samples as
 this  algorithm  is  comparable  with delta-encryption.  It calculates the
 relative difference between two bytes instead of the absolute values.  Now
 imagine  a sine wave.  The difference between two bytes is in the range of
 -4  to  +4,  but  the absolute values go from -128 to +127.  The algorithm
 will  convert  the file into one with about 20 different values instead of
 256.

    To  give  you  a hint on the efficiency of this algorithm I have put up
 the  following  chart.   The  files are standard 31 Instruments Protracker
 modules taken from the "Mayday Attack Vol.  II" packed with the LZ-Huffman
 compression algorithm.  The proportional numbers reflect the saved bytes.

   Name                   | Original | Sample-Mode=Off |  Sample-Mode=On
   -----------------------+----------+-----------------+----------------
   mod.acid_yell          |   230764 | 19.7%    185338 | 27.0%    168350
   mod.badada             |   112742 | 35.1%     73196 | 41.2%     66338
   mod.flatliner          |   140886 | 29.3%     96648 | 47.8%     73612
   mod.fuck_you!          |   142652 | 24.8%    107238 | 33.3%     95202
   mod.gotta_speed        |   108594 | 21.4%     85338 | 33.7%     71992
   mod.hard_attack        |   108100 | 47.0%     57260 | 54.6%     49118
   mod.leck_mich_am_arsch |   125486 | 39.0%     76528 | 46.3%     67338
   mod.something_big      |   162756 | 19.5%    131092 | 27.2%    118556
   mod.world_of_terror    |   102114 | 48.2%     52932 | 51.8%     49174
   mod.you_gotta_believe  |    85092 | 24.7%     64084 | 26.6%     62490
   -----------------------+----------+-----------------+----------------
   Total                  |  1319186 | 29.5%    929654 | 37.7%    822170

 EXAMPLE

 1> CrM -m		;Enable Sample Encoding

 Default is off, as most files compress worse with it.


3.1.13. <-t> - Set Textbuffersize
----------------------------------

    This  value  specifies  the  size  of  the history buffer in lines.  On
 Kick1.2/1.3   this   value   is   fixed  to  18,  as  my  version  of  the
 gadtools13.library  always  crashed when I tried to scroll the outputfield
 whith the slider next to it.  You may enter values from "18" to "999".

 EXAMPLE

 1> CrM -t200                           ;Set history size to 200 lines

 Default is 100.


3.1.14. <-u> - Enable Free Mem Updating
----------------------------------------

    The  title  bar  of  the  screen  or  the window displays the currently
 available  unused memory.  This display is updated every 1/10 second.  You
 can  disable  this  with  <+u> to gain a bit more speed, but it's not very
 much.

 EXAMPLE

 1> CrM +u                    ;no updating


3.1.15. <-y> - Enable Data Encryption
--------------------------------------

    Starting  with  CrM  V1.9  you have the possiblity to encrypt your data
 with  a  password.   You have to enter this password when the crunching is
 finished.   You  will see only spaces in the requester, therefore you have
 to  enter  it  twice  to  be  sure  that  you  have  entered it correctly.
 Currently  this  only works in the Data-Mode, in all other modes the state
 of this flag is ignored.

 EXAPMLE

 1> CrM -y                              ;Enable pw encryption

 Default is off.


3.2. Menu Options
------------------

    In the following lines the functions of the menus are described.  Menus
 are accessible via the right mousebutton.


3.2.1. Project Menu
--------------------

    In  this  menu  the basic operations have found their place.  They have
 the  same  effect  as  the corresponding gadgets, just for people who like
 menus  more  than  gadgets.   For  "About"  and  "Save  Prefs" there is no
 corresponding gadget.


3.2.2. About     - <a>
-----------------------

    This  will  display  the text that is shown when you start the program.
 When the reqtools.library is active a requester is called instead.  In the
 registered version this requester also displays the user's address.


3.2.3. Load File - <l>
-----------------------

    Load a File, has the same function as Load gadget, see `Load'.


3.2.4. Crunch    - <c>
-----------------------

    Crunch  the  loaded  data,  has the same function as Crunch gadget, see
 `Crunch'.


3.2.5. Save File - <s>
-----------------------

    Save a File, has the same function as Save gadget, see `Save'.


3.2.6. Save Prefs
------------------

    This  function  has  no  equivalent gadget.  It creates the config file
 "S:CrM.cfg" and saves the current status of the menus to it.  You may edit
 the  created  file  with  any texteditor for the prefs are saved as normal
 ASCII-text.


3.2.7. Iconify   - <i>
-----------------------

    Close  screen  and  window  and  open  a  small window on the workbench
 screen, same effect as Iconify Gadget, see `Iconify'.


3.2.8. Quit      - <Q>
-----------------------

    Leave Crunch-Mania, same as Quit gadet, see `Quit'.

 NOTE:  you have to press <Shift> when using the keyboard shortcut.


3.2.10. Options Menu
---------------------

    This  menu contains several preferences and values that are used in the
 program.  There are no corresponding gadgets, so you have to use the menu.
 Some options are disabled when the the reqtools.library is not active.


3.2.11. Free Mem Update
------------------------

    See `<-u> - Enable Free Mem Updating' for details.  Default is on.


3.2.12. reqtools.library
-------------------------

    See `<-r> - Enable reqtools.library' for details.  Default is on.


3.2.13. Segment-Ptrs
---------------------

    Consult `<-g> - Enable Segment-BPTRs' for more information.  Default is
 off.


3.2.14. LED-Flash
------------------

    See `<-f> - Enable LED-Flash' for further information.  Default is on.


3.2.15. Sample-Mode
--------------------

    See `<-s> - Enable Sample Encoding' for more details.  Default is off.


3.2.16. Encrypt Data
---------------------

    See `<-y> - Enable Data Encryption' for datails.  Default is off.


3.2.17. Auto Makedir
---------------------

    See `<-d> - Enable Auto Makedir' for details.  Default is on.


3.2.18. Priority
-----------------

    Here  you  can  set the task priority of Crunch-Mania.  There are three
 given possibilities (-3, 0, 3) the custom option The current task priority
 is  shown  behind  the double point.  Select your priority wisely, because
 high  priorities  will  interfere multitasking, and that's what makes this
 machine  so powerful!  See `<-p> - Set Taskpriority' for more information.
 Default is -1.


3.2.19. Include Subdirs
------------------------

    Here  you can set the rekursion depth for scanning dirs.  There are two
 predefined  possibilities,  "All Subdirs" which equals -1 and "No Subdirs"
 meaning 0, and the Set Level option where you can set any level between -1
 and 128.  See `<-i> - Set Subdir-Level' for more details.  Default is -1.


3.2.20. Extra Mem
------------------

    See   `<-e> - Set Extra Mem Size'  for  a  detailed  description.   The
 current  value  is  shown  after  the  double point.  You may change it by
 selecting the menu item.  The new value will be used when the next file is
 loaded.  Default is 100.


3.2.21. Huffman-Buf
--------------------

    See `<-h> - Set Huffman Buffer Size' for more details.  Default size is
 16K.


3.2.22. Text Buffer
--------------------

    See  `<-t> - Set Textbuffersize' for more details.  Default size is 100
 lines.



3.3. Gadgets
-------------

    Most   gadgets  behave  as  you  expect  it.   Only  the  mode  gadgets
 (Reloc/Data/  Address/Link)  are  a  bit special.  You can only change the
 mode  when the buffer is empty.  To empty the buffer you have to press the
 abort gadget.


3.3.1. Quit
------------

    Uuh,  I  forgot  the function of this gadget.  Well, I think you should
 not  use  it,  cause  it's the end of everything.  It's the most senseless
 gadget  of all.  Anyway, when pressing it a requester is invoked where you
 have to confirm your choice.


3.3.2. Abort
-------------

    Generally  you  need  this gadget only to stop crunching.  But you also
 have  to  press  this button when you e.g.  loaded something in reloc mode
 and now want to load something in data mode.  You will experience that you
 can't  do  this  unless  you  press  this  gadget.  You may not change the
 crunchmode when something is loaded because then the decrunchers would not
 fit.  By pressing this gadget you unlock that feature.


3.3.3. Iconify
---------------

    This  closes  the  main  screen  and  opens  a  new small window on the
 workbench  screen.   The  new window displays the togo-counter, so you can
 crunch something and see when it has finished.  You may return to the main
 screen by pressing the right mousebutton when the window is active.


3.3.4. Crunchmode
------------------

    Here  you  may select between the four crunchmodes.  These are:  Reloc,
 Data,  Address,  Link.   There  is  also  an  "Auto" Checkbox.  When it is
 selected CrM automatically detects whether a file is executable or not and
 changes the Crunchmode accordingly.  This is only for registered users.

    In the reloc mode you can load any executable except overlayed files (I
 think  there  are  not  too  many).   The  hunk  structure is analysed and
 displayed  while loading.  Name, Symbol and Debug hunks are skipped, Reloc
 hunks  are  sorted  and  precompensated.   This  new reloc table format is
 shorter and even better crunchable than the one DOS uses!

    The  data mode was designed for normal not-executable data files.  They
 are  loaded  into  memory,  compressed  and  then  saved with a small data
 header.  The small comment which is also saved is for RTDD which takes the
 original  len  out  of  it  without opening the file resulting in a faster
 access when reading the dir.

    The address mode is a bit similar to the ByteKiller cruncher.  Here you
 can   load   executables   and   fix  them  to  a  special  address,  load
 position-depentant  code or just load pure data.  The decruncher then puts
 this  data  to  a  specified  memory  block  and  jumps  somewhere.   This
 crunchmode  is  not very DOS-friendly (especially the decruncher) but very
 handy e.g.  for bootloading games.  The dehunker displays some hexadecimal
 numbers without a leading "$", so don't get confused.

    The  link  mode resembles tetrapack/defpack.  In this mode you can load
 several executable and data files into a precleared memory block which you
 have  to  define  first.   Executables  are relocated to certain addresses
 inside  the  block,  data  files are loaded to a specified position in the
 block.

    I  recomend  to  use the last two modes only with proggies which do not
 return  to  the CLI because important system-parameters and -tables may be
 destroyed.

    When the Auto checkbox is checked CrM behaves in an itelligent way.  It
 detects  whether  the  loaded  file is executable or not, and then decides
 which mode (reloc or data) is the right one.


3.3.5. LowMem & HighMem
------------------------

    These  two  gadgets  are only available in link mode.  They specify the
 memory  block  to  which  the  files  are  loaded.  This block is buffered
 someplace else in memory while loading and crunching, so you don't have to
 care about crashes.  LowMem and HighMem both have to be even addresses and
 HighMem  has  to  be  higher  than  LowMem.   It is recommended to set the
 "Decrunch to" address to LowMem to avoid unwanted results.


3.3.6. Load|Fix File to
------------------------

    These two gadgets are active in the address and link mode.  The "Load /
 Fix"  gadget  determines  whether  an  executable is loaded as a data file
 (Load)  or  relocated  to  the address given in the string gadget below it
 (Fix).   For  data  files this cycle gadget has no effect.  In the address
 mode  the string gadget is only important for executables, it contains the
 address  where  to fix them to.  In the link mode this gadget affects both
 executable and data files in the same way:  with the address in the gadget
 an  offset to the beginning of the memory block is calculated and the file
 is  then loaded there.  The file has to fit completely in the given memory
 block.


3.3.7. Load
------------

    With  the "Load" gadget you may load files in all modes.  When there is
 no filename given in the string gadget next to it, or when the filename in
 the  string  gadget  has  not  been  changed  since  the  last  loading, a
 reqtools.library  filerequester  apppears  (when enabled).  After pressing
 "Load" and then selecting a file the program immediatly begins to load the
 file.  You may select more that one file and even dirs by holding down the
 <Shift> key.  Then you will be asked for a destination dir.

    With  the  DIR  gadget  next  to  the  load  filename  you may select a
 directory  to crunch.  Now the whole directory will be packed, subdirs may
 be included or not, this depends on the Include Subdirs Level (see chapter
 3.1  for  details).   You  may  activate  the  string  gadget  by pressing
 <Return>.

    When  loading  an  executable  its  hunk  structure is displayed in the
 output  field  either  with  decimal  numbers  (reloc) or with hexadecimal
 numbers  (adress  and  link),  where  Range  is  the  part the entire hunk
 occupies  and  Len  is  the  length  of  the actual data in the hunk.  The
 filelength  is  shown  below the load string gadget.  "Processed Len" only
 appears  in  the Reloc mode in the display field and shows the size of the
 stripped and precompressed data.  This is the len of the data the cruncher
 really crunches.

    When you load a file that has been crunched in reloc or in data mode it
 is  automatically  decrunched presuming you selected the right mode (reloc
 for  executable  files  and data for data files) so you can recrunch it or
 save  the original file.  After it has been decrunched the file is treated
 as if you had loaded it in its original form.


3.3.8. Algorithm
-----------------

    This  is  again  a  rotating  gadget.   You may select beween these two
 crunch algorithms:  LZ-Huffman and CrM-Normal.

    LZ-Huffman is the best of these algorithms, but not the fastest.  Files
 crunched  in  this  mode need 1248 bytes of additional memory to decrunch.
 The  decruncher  is  also  slightly  slower than the one of the CrM-Normal
 mode.  To crunch files in this mode you need continuous memory blocks with
 the sizes:
    128K
  + 5*Crunchoffset
  + Huffman Buffer
 With  the default values of $7ffe and 16K this will lead to a memory usage
 of 304K.

    The advantage of the CrM-Normal mode is its fast decruncher and its low
 memory  usage.   But  its  results  are  the worst of the two modes partly
 caused  by  the  Crunchoffset  which  is  limited  to  $4200.  It needs no
 additional  memory  to decrunch.  The memory used while crunching is shown
 in the following table:
    128K
  + 5*Crunchoffset
 With the default Crunchoffset of $4200 this will lead to a memory usage of
 210K.


3.3.9. Offset
--------------

    This  value specifies the range in which redundant data is searched and
 eliminated.   Higher  values produce better results but also longer crunch
 times.   Values range from 1 to $4200 in the CrM-Normal mode and from 1 to
 $7ffe  in  the  LZH mode.  Values which are too high will be automatically
 reduced to the maximum.


3.3.10. Crunch
---------------

    Now  you  have  started  the  real crunching process.  This will take a
 while, so be patient.  The ToGo counter is displayed in the status line at
 the  bottom.   It  shows  how  much data has not yet been processed.  This
 counter  is  permanently  updated and is also shown in the Iconify window.
 When  finished  the  crunched  len of the file is displayed above the save
 string  gadget.   This  is  not  the final length!  The decruncher or data
 header is not yet added.

    The  error  "File  not  crunchable!" indicates that there is not enough
 space  between the original and the crunched data.  You may increase Extra
 Mem  to  avoid  this message, but generally these files become longer when
 crunched.

    The  message  "Min  Security-Distance"  shows  the distance between the
 source  and destination memory block which is needed to decrunch a file in
 the  same  memory block properly.  The crunched data has to be in front of
 the  decrunched  data.  For more information have a look at the decruncher
 source.


3.3.11. Decruncher
-------------------

    With  this  gadget  you  can  select  the  decruncher  you  want.  Each
 crunchmode  has  a  special  set of decrunchers.  Not all gadgets that are
 displayed  are  also needed for the selected decruncher.  So be careful to
 select the right decruncher especially in the address and link mode.

    First  of all there is the data mode.  As it is really senseless to put
 a  decruncher before a data file there is only the data option.  This will
 save  a  14  bytes  data  header  in  front  of  the encoded data which is
 necessary  for  decrunch.   This  header  is  described  in the decruncher
 source.  This decruncher does not any other input.

    Then  there  is  the  reloc  mode.  If you choose the simple decruncher
 (it's  the shortest one with implemented decruncher) you have a pretty low
 level  decruncher.   When  a  crunched  program  is running, twice as much
 memory is used as needed.  The decruncher doesn't free the needless memory
 but lets this do the dos.library after the whole program has done its job.
 You  can  only  use  this  decruncher  in  combination with the CrM-Normal
 algorithm.  This decruncher takes no input from other gadgets.

    The  decruncher  you should use is the normal decruncher.  It frees the
 unnecessary  memory  before  running  the  program.   Here  you can choose
 whether  to  kill  the decruncher or not.  Killing it will result in a bit
 more  free memory, a longer decruncher and the cli_module in pr_CLI in the
 process  structure  pointing on the first hunk of the program (normally it
 points  on the decruncher).  Some programs need this (e.g.  CygnusEd).  As
 you  might  have guessed this decruncher pays attention to the "Kill Decr"
 gadget.

    The  latest  decruncher  is the library decruncher.  It is the shortest
 one,  but  you need the CrM.library to run a program with that decruncher.
 With  this  decruncher  you  should  have  no problems with the cli_module
 pointer.  You can use this decruncher to crunch libraries, fonts, devices,
 handlers  (careful  with  the  last  two,  crunch  them only with Kick2.0+
 because  DOS  uses  an  internal  jumptable  that  cannot  be  patched  in
 Kick1.2/1.3).  This decruncher is independent of any gadgets.

    The  address  and  link  modes  have the same decrunchers.  Normally it
 suffices to use the normal decruncher.  You can tell him where to decrunch
 the  data  and  where  to jump.  When you use the LZ-Huffman algorithm you
 also  have  to  supply  a value to the "LZH-Table at" gadget, because this
 decruncher  needs  some  memory  for a 1248 bytes large table to build the
 huffman tree.

    The  professional  decruncher  has  some more options.  You can set the
 stack  as well as locate the decruncher somewhere in memory.  You may stop
 the  drives,  set  the  status  register  and init some important hardware
 registers  or  addresses.   You may let out some options by clearing their
 gadget.   This  packer  saves  only  the really necessary parts and not an
 ultimate  decuncher  where only some values are changed and much senseless
 code is dragged along.

    Finally you can save the files as data files.  This has the same effect
 as just loading them in data mode.


3.3.12. Decrunch to
--------------------

    The  "Decrunch  To"-address  specifies  the  address  where the data is
 decrunched  to.   By  entering  here  a  "p"  no special address is taken.
 Instead  of  this some mem is allocated (in the Hunk-Header) and there the
 data  will  be  decrunched to.  "c" has almost the same effect but here it
 will be in Chip-Mem (e.g.  for proggies with internal copperlist).


3.3.13. Jump to
----------------

    "Jump  to"  is  the  address  where  the  decruncher will jump to after
 decrunching.    In   most   cases   this   is  the  same  address  as  the
 Decrunch-address.   If  there is a "p" or "c" as the Decrunch-Address, the
 Jump-Address is relative to the beginning of the data.  By entering here a
 "r" the decruncher will return to the calling code after decrunching.


3.3.14. Stack at
-----------------

    This  gadget specifies where the stack should be put.  The Stackaddress
 is written into a7 (stackpointer) as the first action before decrunching.


3.3.15. Decruncher at
----------------------

    The  decruncher  can  copy  itself to a safe position which is fixed by
 "Decruncher at".  Of course this is done before decrunching.


3.3.16. Stop Drives
--------------------

    You   may   stop  all  floppies  either  before  decrunching  or  after
 decrunching  (or  both).   The  left column is responsible for all actions
 before  decrunching  and  the right one for after.  Stopping drives "lame"
 will  switch off the motor but not the drive LED (at least it does so with
 my external drive).  To turn it out you have to select "pro".


3.3.17. SR (Status Reg)
------------------------

    The  value  given  in  this  gadget  is  written in the status register
 immediately before the program is entered.  You may also enter values with
 the  supervisor bit set (e.g.  $2700), the status register is set with the
 help  of  trap #0.  This may cause some troubles with accelerated machines
 when the vbr is not at address 0.


3.3.18. Move Gadgets
---------------------

    These  are  the  twenty  gadgets placed in five rows with two times two
 columns  each.   They  are  designed  to  write  certain values to special
 addresses  outa  the data range.  In the first column there are the values
 which can be wordened with a following ".w" (e.g.  $0.w) and in the second
 one  there are the addresses which are automatically shortened if possible
 (like  in  Ass:   e.g.   move.w  #0,$dff180).   The  first two columns are
 executed  before  decrunching  and  the  second  two after.  E.g.  you can
 change the background color before decrunching to red and when decrunching
 has finished to black.  Or you can turn off all interrupts and DMAs.

 EXAMPLES

 1) move  "$0.w     " , "$dff180  "            ;set colour0 to black
    move  "$f00.w   " , "$dff182  "            ;set colour1 to red

 You can also combine the above two lines into a single one:

    move  "$f00     " , "$dff180  "            ;set colour0/1 to back/red

 2) move  "$60000   " , "$6c      "            ;set level 3 interrupt to
                                               ;$60000
 3) move  "$7fff.w  " , "$dff09a  "            ;disable all interrupts


3.3.19. Save
-------------

    The  save filerequester and filename follow the same rules as described
 in 3.3.7.  The save directory may be different to the load directory.  You
 can  save  the original file before pressing the crunch button or save the
 crunched file after crunching it.  NOTE:  decrunched executables are never
 totally  equal  to  their  original  state, because some useless hunks are
 removed,  reloc tables are sorted and Hunk_Ends are added.  The final file
 lenght is displayed above the save string gadget.

    When pressing the DIR gadget next to the save filename you may select a
 destination  directory  for  multiple  selected  files and for crunching a
 whole directory.  While crunching you can select a new save filename (Save
 gadget is ghosted).


3.3.20. LZH-Table At
---------------------

    This  gadget  determines where the LZH-Decruncher locates the tables it
 needs  to  decrunch the data.  This gadget is only in the address and link
 modes  important  when  you the LZ-Huffman crunch algorithm.  The table is
 1248 bytes large, so it won't be too hard to find some space for it.


3.3.21. Advanced Options
-------------------------

    This  gadget opens and closes the Advanced Options window.  It contains
 the  "Move" gadgets and "Stop Drives" gadgets.  Compared to older versions
 it looks more jovial this way.


3.3.22. Slider Bar
-------------------

    The Slider Bar may be used to scroll the output field.  When the slider
 bar  is at the bottom each text that is printed out will cause the display
 to  scroll  up, if it is somewhere in the middle, the display will stay at
 it's  place  but  the slider bar will scroll instead.  When the slider bar
 reaches  the  top, the display will scroll again.  This way you can reread
 something that was previously printed without being disturbed.



4. Supplied Utilities
======================

    This  section describes the utilities which have to do with this packer
 and which are supplied with this package.


4.1. Run-time Data-Decruncher (RTDD)
-------------------------------------

    This  utility  is  very  powerful and useful.  It patches some (6 or 9)
 vectors  of  the dos.library, so any loaded datafile will be automatically
 decrunched.   When  the  file  is  loaded entirely no extra mem is needed,
 otherwise the program will allocate a memoryblock as large as the original
 file  and  will  decrunch  it there.  In all further read calls the wanted
 data  is  only  copied  from  this  buffer,  so  this  will  also speed up
 disk-access.   In  the  current  version  (v1.9)  RTDD supports all crunch
 algorithms  (CrM!,  CrM2),  any  Min  Security-Len,  the  sample-mode  and
 password  encrypted data.  In combination with the CrM.library you will be
 able  to  crunch  almost  EVERY  file without realizing anything (except a
 little slow-down).

 The following entries of the dos.library are patched:
 - Open()
 - Close()
 - Read()
 - Seek()
 - Examine()
 - ExNext()
 When you are running Kick2.0+ these are also patched:
 - ExAll()
 - ExamineFH()
 - OpenFromLock()

 RTDD also supports some command line options:
 "?" ··· This will display a help page.
 "-i" ·· Install Only, DON'T remove RTDD. Useful for scripts.
 "-r" ·· Remove Only, DON'T install RTDD. Useful for scripts.
 When  no options are given RTDD assumes that you want to change it's state
 from installed to removed or vice versa.

 You CANNOT run RTDD from the workbench!

 There  have  occured  some  strange effects when using RTDD in combination
 with Directory Opus.  I will try to fix this in future versions.


 RTDD V2.0
 ----------
 RTDD  2.0  has the same task as RTDD 1.9, but there is a major difference:
 it  is  a commodity.  CLI options and icon tooltypes are the same and they
 will be explained together now.

 CX_PRIORITY - Specifies the priority RTDD has among other commodities.
               NOTE: This is NOT the task priority!
 CX_POPKEY   - Specifies the combination of keys which will let RTDD's
               window appear.
 CX_POPUP    - Specifies whether RTDD's window will popup when RTDD is
               started.
 PATCH       - Tells RTDD whether or not to patch the system.
 CACHE       - Function not yet implemented
 MAXMEM      - Function not yet implemented

 EXAMPLE:
 1> RTDD CX_PRIORITY=0 CX_POPKEY="ctrl alt d" CX_POPUP=NO PATCH=YES
         CACHE=NO MAXMEM=524288

 The  "Active"  menu  was  designed for a very special case.  Let's say you
 have  installed  RTDD and you want to remove it (for whatever reason), but
 you  can't remove it, because another program has also patched the vectors
 that RTDD uses.  With the old version there was no way to get rid of RTDD,
 but  by  turning  off  the  "Active"  menu  you  may prevent RTDD now from
 decrunching data while the patches are still installed.


4.2. The CrM.library
---------------------

    This  program  has  the option to save crunched execuatables which will
 use  the CrM.library to decrunch.  Furthermore this library can be used by
 any  programmer  to decrunch data files easily.  Each registered user will
 get  the  includes  and  autodocs of the library and may use it in his own
 productions.  Registered users also get a faster version of the library.

    Starting  with  release  1.9  (v4) the library also includes the crunch
 algorithms,  so  any programmer can use the library to crunch his (or her)
 own  data.   CrM  will  also  use  the  library.  Consult the autodocs for
 further information how to program it.

    The  library  supports Sample encoded and password encoded files.  When
 you  want  to  decrunch  a  password  crunched  file the library sets up a
 reqtools requester where you can enter the password.  The entered password
 is  saved  in a list so you don't have to enter the password all the time.
 When  you  enter  the  same  password  twice  you  may  remove  it (or all
 passwords) from the list.


4.3. The xpkCRM2.library
-------------------------

    This  library  is  an  xpk  interface for the CrM.library.  It uses the
 crunch  and  decrunch  routines  of  the  LZ-Huffman  mode the CrM.library
 provides.  It behaves like any other standard xpk library, so there should
 not  occur  any  problems  with  any  application  using xpk.  It requires
 CrM.library v4+.

    The  internal benchmarks which are displayed with the xQuery command do
 not reflect the real performance of the library.  As I don't own a A3000 i
 cannot execute them correctly.  Sorry for the inconvenience.


4.4. The xpkCRMS.library
-------------------------

    This  library  is  an  xpk  interface for the CrM.library.  It uses the
 crunch  and  decrunch  routines of the LZ-Huffman mode in combination with
 the  Sample  mode  the  CrM.library  provides.   It behaves like any other
 standard  xpk  library,  so  there  should not occur any problems with any
 application  using  xpk.   It  requires  CrM.library v4+.  This library is
 quite  like  the  xpkCRM2.library,  the  only  difference  is that it uses
 additionally  the  Sample  mode.   Thus  your data is also delta encrypted
 which   may   lead   to   better   results   with   8-bit   samples.   See 
 `<-s> - Enable Sample Encoding' for more details.

    The  internal benchmarks which are displayed with the xQuery command do
 not reflect the real performance of the library.  As I don't own a A3000 i
 cannot execute them correctly.  Sorry for the inconvenience.


4.5. CrMPW
-----------

    With this little program you can add or remove passwords to or from the
 list  the  CrM.library  keeps to decrypt data.  The use of this program is
 really  self-explanatory,  just  type  in  the  program's  name  to get an
 overview of the parameters.

    The  commands  are case-insensitive, but the "all" has to be in lowcase
 to clear the whole list.


4.6. CrMData
-------------

    This  is  another  tiny but useful utility in the Crunch-Mania package.
 It allows to crunch and decrunch data files via the CLI.  You may also use
 it in combination with your directory utility (e.g.  DiskMaster, DirOpus).
 To  get  a  list  of  the  supported options just call CrMData without any
 parameters.   The  parameters  have  the  same result as the corresponding
 switches in the main program (CrM).



5. Trivialities
================

 Many Thanx may reach:
 - Commodore for this fantastic Computer with Multitasking
 - my HD for having no head-crashs anymore after trashing the v1.8 source
 - Rene for Beta-Testing
 - Michael Mutschler for Beta-Testing and detecting the Enforcer Hits
 - Karsten Weiß for telling me that my GUI is not "styleguide"-like
     and for testing the xpk sublib (now it works perfect!)
 - Alexander Ehlert for his Oberon Interface

 Greetinx and Handsheix fly over to:
   Michael, Rene, Tobias, Karsten, Christian, Christoph, Uli, ...



6. Performance Test
====================

    This  test  was  done  on  my  Amiga  500 with 7.14MHz, 512K Chip, 512K
 fake-Fast, 2M real-Fast, 105M HD, with all files being loaded from dh0:.

 1) "PageStream2" - Main program of Pagestream V2.2, crunched as executable
 437576 bytes, 110 Hunks, 22369 Reloc Offsets
 Using Library-Decruncher when available, Times with loading from dh0:

 Cruncher         Crunched Len  Crunch Time  Decrunch Time
 CrM 1.8r LZH           178848         235s            12s
 CrM 1.8t LZH           178848         352s            15s
 CrM 1.8r Normal        186932         179s            10s
 CrM 1.8t Normal        186932         303s            10s


 2) same file as in (1), but crunched as data file

 Cruncher         Crunched Len  Crunch Time  Decrunch Time
 CrM 1.8r LZH           211058         285s            14s
 CrM 1.8t LZH           211058         429s            18s
 CrM 1.8r Normal        230344         185s            12s
 CrM 1.8t Normal        230344         331s            12s

 3) "Lha.man" - Text File (Doc of Lha 1.42), 122451 bytes

 Cruncher         Crunched Len  Crunch Time  Decrunch Time
 CrM 1.8r LZH            36872          55s             2s
 CrM 1.8t LZH            36872          83s             3s
 CrM 1.8r Normal         42648          46s             2s
 CrM 1.8t Normal         42648          79s             2s

    The speed and ratio comparisons towards other packers have been removed
 to  ensure  equal  competition.  I don't want to urge people to my packer,
 they have to find out on their own which packer is the best.



7. History
===========

 ********** V1.3 **************
 First Release Version, with almost all Options as V1.4
 not bugfree (Crunch-Routine could produce Shit without a clear Stack)

 ********** V1.4 **************
 Intuition Interface added, now callable from Workbench, self-detaching,
 Req-Lib FileRequester
 some Bugs fixed (all code was totally overworked)

 ********** V1.5 **************
 V1.5a:	Demo Version, no Saving possible
 V1.5b:	Release Version
 Both Versions released for the Amiga '91 in Cologne!
 Crunch-Routine optimized, now 0,5-2%. better Results!
 Menu-Options "Priority" and "LED-Flash" added!
 Program sometimes crashed when you quitted it, now fixed
 V1.5c:  Auto-SetComment for run-time Data-Decruncher added

 ********** V1.6 **************
 Decruncher added
 User-Communication improved
 Quit-Bug finally removed

 ********** V1.7 ** 02-Aug-92 **********
 First Release with a free Test-Version and a Registered-Version
 New Crunchalgorithms: LZ-Huffman and Quick-LZH
 Not available in Address and Link Modes
 New Crunchmodes: Data    to crunch Datafiles easily (not via Address-Mode)
                  Switch  which detects Reloc and Data-Files and switches
                          between the Modes (only registered Version)
 Speed Improvements: Crunching takes now only half the Time! (only reg.)
 Data-Decruncer added
 Now Source and Destination Dir can be different
 Current Dir of Caller is now the CD of CrM (not df0:)
 2.0-style Intuition Interface added
 More CLI-Options (including CLI-Help)
 New Iconify-Window: shows now ToGo-Counter
 Minor Bugfixes (various Actions caused Crashes)
 RTDD now removeable, supports new crunchalgorithms

 ********** V1.8 ** 02-Nov-92 **********
 New Decruncher:Library, uses CrM.library
 Introducing Library: CrM.library used for executables and data files
 Registered Users get Documentation of Library! and a faster one.
 Now supports reqtools.library V38! (still uses req.library)
 Added Keyboard shortcuts
 Added Project Menu
 New Mode: Sample-mode, get better ratios with 8-Bit Samples
 New Option: Copy Icons (...)
 Now supports multiple select possibilities of file requesters
 Whole directories may now be crunched
 Some changes made to the appearance (Logo, bigger Gads, ...)


               ********** CrM V1.9 ** 08-Oct-93 **********

 - Yes! After almost one year another version...

 - new GUI: now uses gadtools.library, on Kick1.2/1.3 gadtools13.library is
   used!

 - removed possibility to open a window on the wb

 - removed  support  of req.library, as there is no new version supporting
   the 2.0-Look

 - new Decruncher: LZH-Algo now also available in Address and Link modes

 - added History for Textoutput (only Kick2.0+) (default: 100 Lines)

 - added  Percentage Display while crunching, in the main window it's also
   graphical, in the iconify window there is only text.  Ffirst to suggest
   this was Michael

 - completely  rewrote  support  for  filerequester, I hope it won't crash
   anymore.   With  multiselect you can now also select dirs, unfortunally
   this doesn't work with mfr (at least it doesn't with my version).

 - when  packing entire directories or using the multiselect feature of the
   filerequester  a complete filelist is created before crunching any file.
   Now  Source  and  destination  dirs  may be the same without the risk of
   confusing dos.

 - memory  display now uses the correct colors on Kick3.0, thanx to Uli who
   detected this bug and helped me to remove it.

 - added menu  : Project / Save Prefs
 - added menu  : Options / Encrypt Data
 - added menu  : Options / Auto Makedir
 - added menu  : Options / Include Subdirs
 - added menu  : Options / Text Buffer
 - removed menu: Options / Req.library, as CrM no longer supports this lib

 - "Copy Icons" still not included, sorry! (menu removed)

 - improved user communication.  The display field displays now all actions
   the user has done and looks like a real logfile.

 - Reloc/Normal  Decruncher/Kill  Decruncher=Yes  would  let the decruncher
   crash always.  fixed.

 - CrM uses and needs now CrM.library V4+

 - removed some enforcer hits.


 CrM.library v4:
 ----------------
 - added  crunching  algorithms  and  possibility  to  encrypt  data with a
   password

 - when  you  enter a password to decrunch some data this pw is stored in a
   list so you have to enter this pw only once per reset.

 - speeded up decrunch routines. Optimisation ideas by Fabien Letouzey!

 - new functions: cmProcessPW(), cmCryptData(), cmProcessCrunchStruct() and
   cmCrunchData(). See Autodocs for details.


 xpkCRM2.library:
 -----------------
 - xpk sublibrary using CrM.library v4+

 - uses LZ-Huffman algorithm

 - first release version


 CrMPW v1.0:
 ------------
 - small  tool  to add/remove pws to/from the library internal list without
   using the reqtools.library (affects only decryption)

 - provided as assembler example source

 - first release version


 CrMData v1.0:
 --------------
 - small command line version of CrM to crunch/decrunch data files.

 - supports all algorithms and modes: LZH, Normal, Sample, Password

 - provided as assembler example source

 - first release version


 RTDD v1.9:
 -----------
 - now  additionally  patches  ExAll(), OpenFromLock() and ExamineFH() on a
   system with Kick2.0+

 - now uses and needs CrM.library (no special version required)

 - supports  encrypted data:  it automatically asks for the pw and decrypts
   the data.

 - new command line parameters: -i: Install Only
                                -r: Remove Only (useful for scripts)


               ********** CrM V1.91 ** 11-Feb-94 **********

 - A Null message at CrM's messageport caused some Enforcerhits. They
   occured when you tried to scroll the output field down. Fixed.

 - When  you  wanted  to  quit  from the Iconify window  and you denied the
   requester, CrM would crash.  Fixed.

 - CrM caused some Enforcerhits when run from workbench.  Fixed.

 - CrM crashed very often when you returned from the Iconify window. Fixed.

 - This document is now also available in the amigaguide format.

 - Overworked menus: multiple selection (right and left mousebutton) is now
   possible, Quit shortcut now really only works in combination with SHIFT and
   the Project menu was reorganized.

 - CrM crashed when trying to open a filerequester and reqtools being
   disabled. Fixed.

 - Kicked out "Quick-LZH" mode (actually it was already kicked in V1.8, but it
   was still in the cycle gadget)

 - Changed Task Names to "CrM V1.91 GUI Task.1" and "CrM V1.91 Action Task.1"

 - Load/Save/Crunch menus are now also ghosted like the corresponding gadgets.


 CrM.library V4.2:
 ------------------
 - The BSS segment in combined Data/BSS or Code/BSS hunks was not cleared
   properly. Thus some programs (e.g. Term) crashed. Fixed.

 - Added Oberon interface for this library. Thanx to Alexander Ehlert!

 - A mungwall hit frequently occured when crunching in LZH mode, one byte
   outside the allocated buffer was used. Fixed.


 RTDD V2.0:
 -----------
 - RTDD is now a commodity and works only with KS2.0+.

 - You can now deactivate RTDD without removing the patches (sometimes you
   couldn't remove them because another program had also patched some DOS
   functions).


 CrMData V1.01:
 ---------------
 - CrMData crashed when the gain was negative. Fixed.

 - new option -l: CrMData now defaultly skips files which become longer
   when being crunched. With "-l" these files may be saved.


 xpkCRMS.library V1.1:
 ----------------------
 - xpk sublibrary using CrM.library v4+

 - uses LZ-Huffman algorithm plus Sample Mode (delta encryption)

 - first release version

               ********** CrM V1.95 ** 11-Arl-95 **********

 - A Null message at CrM's messageport caused some Enforcerhits. They
   occured when you tried to scroll the output field down. Fixed.

 - When  you  wanted  to  quit  from the Iconify window  and you denied the
   requester, CrM would crash.  Fixed.

 - CrM caused some Enforcerhits when run from workbench.  Fixed.

 - CrM crashed very often when you returned from the Iconify window. Fixed.

 - This document is now also available in the amigaguide format.

 - Overworked menus: multiple selection (right and left mousebutton) is now
   possible, Quit shortcut now really only works in combination with SHIFT and
   the Project menu was reorganized.

 - CrM crashed when trying to open a filerequester and reqtools being
   disabled. Fixed.

 - Kicked out "Quick-LZH" mode (actually it was already kicked in V1.8, but it
   was still in the cycle gadget)

 - Changed Task Names to "CrM V1.91 GUI Task.1" and "CrM V1.91 Action Task.1"

 - Load/Save/Crunch menus are now also ghosted like the corresponding gadgets.


 CrM.library V4.2:
 ------------------
 - The BSS segment in combined Data/BSS or Code/BSS hunks was not cleared
   properly. Thus some programs (e.g. Term) crashed. Fixed.

 - Added Oberon interface for this library. Thanx to Alexander Ehlert!

 - A mungwall hit frequently occured when crunching in LZH mode, one byte
   outside the allocated buffer was used. Fixed.


 RTDD V2.0:
 -----------
 - RTDD is now a commodity and works only with KS2.0+.

 - You can now deactivate RTDD without removing the patches (sometimes you
   couldn't remove them because another program had also patched some DOS
   functions).


 CrMData V1.01:
 ---------------
 - CrMData crashed when the gain was negative. Fixed.

 - new option -l: CrMData now defaultly skips files which become longer
   when being crunched. With "-l" these files may be saved.


 xpkCRMS.library V1.1:
 ----------------------
 - xpk sublibrary using CrM.library v4+

 - uses LZ-Huffman algorithm plus Sample Mode (delta encryption)

 - first release version

 ·  ·   -  - -- --- --=- -=-=- -===- -=- -===- -=-=- -=-- --- -- -  -  ·  ·

 If you find any shit or nonsense above this line please tell me.  This may
 occur  as  I  don't  read  the  complete manual each time a new version is
 released, and as I am really too lazy to care about that...

 Finito - May the Force be with you!!!

                                       //
                           :-)        //    (-:
                                  \\ //
                                   \X/
