home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / k / kboom11.zip / KBOOM11.DOC < prev    next >
Text File  |  1993-01-08  |  4KB  |  89 lines

  1.  
  2.                                KBOOM11.EXE
  3.  
  4.                        LZW file encoder/decoder 
  5.  
  6.  
  7.  1992 - Miles Pawski
  8.  Written in MASM 6.0
  9.  CIS - 70473,527
  10.   
  11.  THIS PROGRAM IS FREE  
  12.  
  13.  
  14.  This program is a basic reworking (in Assembler) of James Storer's
  15.  SQUEEZE program, which was written in PASCAL and is found in the back 
  16.  of his book: DATA COMPRESSION, METHODS AND THEORY, 1988 - Computer Science 
  17.  Press.                     
  18.  
  19.  In Mr. Storer's original program, he uses an LRU (Least Recently Used)
  20.  Queue in order to determine which leaves/nodes of the tree to delete. 
  21.  SQUEEZE and KBOOM11 (couldn't think of a better name and I really don't
  22.  care) are basically LZW dynamic dictionary programs.  In my code, I have
  23.  eliminated the LRU Queue since it really didn't provide any better 
  24.  compression, especially on larger files.  I have tried using LFU (Least
  25.  Frequently Used) routines but these didn't do any better.  I had 
  26.  complicated code to keep track of the frequency of the node use, but it
  27.  really didn't do any better.  I finally settled for the deletion of the
  28.  oldest leaf (without children) which seems to work better than the rest.  
  29.  Clear Codes are NOT used by this routine.  When the tree becomes full,
  30.  the oldest leaves (without children) are deleted one-by-one on a needed
  31.  basis.  Leaves are checked for the presence of children so that the 
  32.  children and their siblings aren't stranded and the information contained in
  33.  those nodes are not wasted.  
  34.  
  35.  This program is very fast and provides excellent compression.  Various
  36.  combinations of the DICTIONARY size, MAXINCREMENT factor, and MAXMATCH
  37.  are possible.  MAXINCREMENT of 1 indicates the FC (First Character)                       
  38.  mode.  PLEASE SEE MR. STORER'S ABOVE MENTIONED BOOK.  With FC, only the
  39.  first character of the current match is updated to the tree.  AP - all
  40.  prefixes indicates that MAXINCREMENT of the current match will be added
  41.  to the tree.  What seemes to work best are the combinations:
  42.  
  43.                    DICTIONARY   4096
  44.                    MAXINCREMENT    1
  45.                    MAXMATCH      100
  46.  
  47.              (The above is faster but the compression is not as good as the
  48.               following:)
  49.  
  50.                    DICTIONARY   8192
  51.                    MAXINCREMENT    4
  52.                    MAXMATCH      100     
  53.  
  54.  If you have MASM 6.0, you can change around the combinations and re-assemble.
  55.  You can easily adapt the code to external uses as object modules, etc.
  56.  
  57.  The following files are contained in this .ZIP:
  58.  
  59.      KBOOM11.EXE                        
  60.      KBOOM11.ASM
  61.      KBOOM11.DOC
  62.  
  63.  Kboom11's compression gets better with larger files.  It is not meant as
  64.  a replacement for anything.  It compresses better than ARC but not as good
  65.  as PKZIP's imploding method although it comes close.  It is fast and very
  66.  usable.
  67.  
  68.  Certain parts of KBOOM11 could be rewritten with 386 code to make it even
  69.  faster.  This was written in 8086 code.  The code is completely self-
  70.  contained and no external modules are used or provided.  Many macros are 
  71.  used for SPEED.        
  72.  
  73.  You really should read Mr. Storer's book: DATA COMPRESSION, METHODS AND
  74.  THEORY.  It is almost decipherable to non-mathematicians (like me).           
  75.  
  76.  USAGE:  KBOOM11 [input file name] [output file name] [/c][/d][/n]             
  77.             /c  -   compress file
  78.             /d  -   decompress file
  79.             /n  -   omit the logo
  80.  
  81.  Advanced error checking is not contained in this code.  If a file name
  82.  or path does not exist, it will indicate "error".  I use it under DOS 5.0
  83.  although I'm sure it will work under anything above DOS 3.3.  I don't really
  84.  know.  This program will only decompress programs compressed by KBOOM11.  
  85.  
  86.  KB00M11 is FREE.        
  87.  
  88.                                      -- Miles Pawski --
  89.