home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume24 / yabbawhap / part01 / README < prev    next >
Text File  |  1991-10-09  |  9KB  |  224 lines

  1. yabbawhap - Y and AP compression filters
  2.  
  3. yabba applies Y compression to its input; unyabba decompresses the
  4. result. whap applies AP compression to its input; unwhap decompresses
  5. the result. whap and unwhap run at about the same speed as UNIX compress
  6. and uncompress, which use LZW coding; yabba and unyabba are two to three
  7. times slower. AP and Y compression are typically 10-20% more effective
  8. than LZW compression in the same amount of memory. Y coding, unlike LZW
  9. coding and AP coding, is unpatented. It should be possible to use these
  10. programs on any reasonable C platform, though they were originally
  11. designed on a BSD UNIX system.
  12.  
  13. yabbawhap version 1.00, March 19, 1991.
  14. Placed into the public domain by Daniel J. Bernstein.
  15.  
  16. Thanks to the gamma testers for their comments, criticism, and code:
  17.  
  18.   Eirik Fuller <eirik@theory.tn.cornell.edu>
  19.   Marc Andreessen <andreessen@uimrl7.mrl.uiuc.edu>
  20.   Loren J. Rittle <cs326ag@ux1.cso.uiuc.edu>
  21.   Jean-loup Gailly <jloup@chorus.fr>
  22.   Terje Malmedal <malmedal@dhmolde.no>
  23.   Lennart Augustsson <augustss@cs.chalmers.se>
  24.   John C. Schultz <schultz@halley.serc.3m.com>
  25.   Dave Gudeman <gudeman@cs.arizona.edu>
  26.   Colin Plumb <ccplumb@rose.waterloo.edu>
  27.   Ozan Yigit <oz@nexus.yorku.ca>
  28.   Benno Tietz <tietz@cs.bonn.edu>
  29.   Alexios Zavras <zvr@theseas.ntua.gr>
  30.   Hans Henrik Eriksen <hhe@ifi.uio.no>
  31.   Frank Wales <frank@grep.co.uk>
  32.   Paul A. Houle <pahsnsr@jupiter.nmt.edu>
  33.   Graham Thoal <gtoal@ed.ac.uk>
  34.   Robert Kelley <rjk@sequent.com>
  35.  
  36.  
  37. Organization of README:
  38.  
  39. 1. Files
  40. 2. Requirements
  41. 3. How to configure
  42. 4. How to compile
  43. 5. How to install
  44. 6. TODO list
  45.  
  46.  
  47. 1. Files:
  48.  
  49. BLURB        advertisement
  50. CHANGES      list of changes since first distributed version
  51. README       this file
  52. FORMLETTER   form letter to send to the author
  53. PATENTS      some notes on compression patents
  54. QUESTIONS    questions and answers about yabbawhap
  55. FILES        file list
  56. sysconf      script to test for certain system features
  57. checkconf.c  tool to ease Makefile configuration
  58. Makefile     compilation commands
  59. try          script to test yabba and unyabba and compare to compress
  60. tryap        script to test whap and unwhap and compare to compress
  61. tryapy       combination of try and tryap
  62. INSTALL      script to install the programs
  63. yabba.1      man page for yabba and whap
  64. unyabba.1    man page for unyabba and unwhap
  65. huptrie.h    huptrie library
  66. bitout.h     bit output library
  67. percent.h    percent library, computes 100a/b without overflow
  68. texts.h      various messages printed by the programs
  69. yw.c         main code for yabba and whap
  70. unwhap.c     main code for unwhap
  71. unyabba.c    main code for unyabba
  72. bitout.c     bit output code
  73. percent.c    percent code
  74. texts.c      texts code
  75. ycoding.4b   Y Coding, paper draft 4b
  76. ycoding.uu   yabba'd, uuencoded version of ycoding.4b
  77.  
  78.  
  79.  
  80. 2. Requirements
  81.  
  82. You should be able to adapt yabbawhap to practically any C platform
  83. (with 8-bit characters). However, this package was designed on a UNIX
  84. system. The compressors do not take file names; they only act as
  85. filters. The support files are also oriented towards UNIX.
  86.  
  87. yabbawhap has been reported to work on the following systems:
  88.  
  89.   Sun 4/280, SunOS 4.0.3 (1.00)
  90.   Sun 4/280, SunOS 4.0.3 (0.98)
  91.   Sun 4/280, SunOS 4.0.3, gcc (0.98)
  92.   Sun 4/330, SunOS 4.0.3 (0.95)
  93.   Sun 4/330, SunOS 4.0.3c (0.98)
  94.   SPARC?, SunOS 4.1 (0.95)
  95.   Sun 3/?, SunOS 4.1 (0.95)
  96.   Sun 3/160, SunOS 4.1 (1.00)
  97.   Sun 3/480, SunOS 4.1 (0.98)
  98.   SPARCStation SLC, SunOS 4.1 (0.95)
  99.   Sun 3/50, SunOS 4.1.1, gcc (0.98)
  100.   Sun 3/60, SunOS 4.1.1, gcc (0.98)
  101.   Sun 3/60, SunOS 4.1.1, gcc 1.39 (0.95)
  102.   SparcStation 2, SunOS 4.1.1 (0.98)
  103.   DECStation 5400, Ultrix 4.1 (1.00)
  104.   DECStation 5000/200, Ultrix 4.1 (0.95)
  105.   DECStation 5000/200, Ultrix 4.1, gcc (0.98)
  106.   DECStation 5000/200, Ultrix 4.1 (0.98)
  107.     may need -Olimit 2500 to compile with DEC's ANSI C compiler V2.10
  108.   DECStation 3100, Ultrix 4.0 (0.95)
  109.   DECStation 3100, Ultrix 4.0 (0.98)
  110.   DECSystem 5820, Ultrix 4.1 (0.98)
  111.   DECSystem 5820, Ultrix 4.1 (1.00)
  112.   VAX 11/780, BSD 4.3 (0.95)
  113.   VAX ?, BSD 4.3, gcc 1.39 (0.95)
  114.   Tek 4316, Utek 4.1, gcc 1.39 (0.95)
  115.     need -DBRAINDAMAGED
  116.   Sequent S811, Dynix 3.0.17 (0.95)
  117.   Sequent Symmetry, Dynix 3.0.17.9 (0.95)
  118.   Sequent ?, BSD 4.2? (0.95)
  119.   Apollo DN3500, DOMAIN/OS SR10.2, cc -A cpu,3000 -W0,-opt,2 (1.00)
  120.   Convex C1-XP, Convex UNIX 9.0, cc -pcc (1.00)
  121.     need -pcc for the new compiler; -UPTRS faster than -DPTRS
  122.   IBM RS/6000, AIX 3.1 (0.95)
  123.   HP 9000s300, HP/UX 7.0 (0.98)
  124.     -O rather than -O2, optimizer appears buggy anyway
  125.   NeXT, NeXT Mach 1.0 (0.98)
  126.   Astronautics ZS, ZSUnix 1.2 (1.00)
  127.   Amiga, AmigaOS 1.3.2 (0.95)
  128.   
  129. (Under gcc, always use -O -fstrength-reduce in place of -O2 in CCOPTS.
  130. Don't even bother with -finline-functions or the other function-call
  131. optimizations.)
  132.  
  133. If your machine isn't in this list, and you get the programs working,
  134. *please* send a note to me at brnstnd@nyu.edu on the Internet describing
  135. what you had to do to make the programs compile. (Of course, please also
  136. let me know if you have trouble, or if you have comments, questions, or
  137. suggestions.) I'd rather be flooded with reports and be able to compile
  138. a more comprehensive list than have no feedback because everyone assumes
  139. someone else has talked to me first. You can use FORMLETTER if you want.
  140. Thanks for being a good sport.
  141.  
  142.  
  143.  
  144. 3. How to configure
  145.  
  146. First, run the sysconf shell script. It will try to figure out whether
  147. you have bzero(), memset(), and a certain putchar() bug, and will modify
  148. Makefile accordingly.
  149.  
  150. Next, make checkconf. Then run checkconf to see a few facts about your
  151. current configuration. You can give it options, like -DNODEMAX=21000,
  152. and it will instantly show you how that change will affect the size of
  153. the programs if you add it to CCOPTS in the Makefile. It will also make
  154. sure that various constraints are met. checkconf -H shows a help screen.
  155.  
  156. Next, read through the option descriptions in the Makefile, or print out
  157. a copy and peruse it at your leisure. You can configure yabba, unyabba,
  158. whap, and unwhap in several different ways to change compression size,
  159. speed, and power. No single configuration is right for every job.
  160.  
  161. Finally, armed with checkconf and the option descriptions, decide how
  162. you want to configure the programs. Change Makefile appropriately, and
  163. remake checkconf just in case you want to experiment with changes later.
  164.  
  165. If you want to get through configuration as quickly as possible, run
  166.  
  167.   % ./sysconf
  168.  
  169. and press return when it asks whether it should make and run checkconf.
  170. But don't complain to me about teething trouble if you haven't read
  171. through all of README and Makefile, as well as the checkconf output.
  172.  
  173. Two big caveats: 1. ZEROFILLED should be off on practically any non-UNIX
  174. operating system. 2. If you increase NODEMAX, you probably want to set
  175. -DNODENUM=65533 unless you know your recipients have compiled with the
  176. same high value of NODEMAX.
  177.  
  178.  
  179.  
  180. 4. How to compile
  181.  
  182. Just make. You'll get yabba and unyabba. If your optimizer dies, first
  183. try defining -DOPTCANT5 in the Makefile. If that doesn't work, try
  184. -DOPTCANT2. If that doesn't work, try -DOPTCANT1, or lower the
  185. optimization level.
  186.  
  187. To test the programs, run the ``try'' shell script with a filename
  188. argument. % ./try yw.shar, for instance. try will give you times and
  189. results for yabba, unyabba, compress, and uncompress on the file. (Note
  190. that it does not test for nonexistent files or symbolic links.)
  191.  
  192. If you want to compile whap and unwhap, beware! AP coding is patented.
  193. (Then again, LZW coding is patented, and people use compress all the
  194. time.) You should understand the information in PATENTS first. Then if
  195. you're curious to see how well AP coding can do, make AP. You can then
  196. run the tryap and tryapy shell scripts the same way as try.
  197.  
  198. Another test you can run is to uudecode ycoding.uu and unyabba -m9999
  199. the result, ycoding.Y. You should get a perfect copy of ycoding.4b.
  200.  
  201.  
  202. 5. How to install
  203.  
  204. By default, yabba and unyabba are installed in /usr/local/bin; whap and
  205. unwhap are installed in /usr/local/bin; yabba.1 and unyabba.1 are
  206. installed in /usr/man/man1. If you want to change these defaults, edit
  207. INSTALL. Then run it from a root shell; it will check every action with
  208. you before proceeding.
  209.  
  210.  
  211. 6. TODO list
  212.  
  213. -E errs
  214. -f filterfile
  215.   (Please don't bug me about having yabba take a filename argument
  216.   until you've seen what -f does.)
  217. -F
  218. flexible -m? report size? (tnx dg)
  219. make no-header and random-bits independent?
  220. better RESET defaults?
  221. put compression in function? will happen with -f
  222. rename as fwhap, fyabba, funwhap, fyabba? no
  223. use array trie for top level or two?
  224.