Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!rice!uw-beaver!cornell!batcomputer!caen!sol.ctr.columbia.edu!ucselx!bionet!agate!usenet.ins.cwru.edu!ysub!psuvm!blekul11!ghgaea8 From: GHGAEA8@cc1.kuleuven.ac.be Newsgroups: comp.sys.amiga.programmer Subject: Data compression Message-ID: <91122.154531GHGAEA8@cc1.kuleuven.ac.be> Date: 2 May 91 15:43:31 GMT Organization: K.U.Leuven - Academic Computing Center Lines: 426 ========================================================================= Newsgroups: comp.compression Subject: LZRW1 derivative for 68000 This program should actually be listed in comp.compression (and it is), but since the code described herein is 68000 specific and was written on an Amiga it may be also at its place in .amiga.programmer, so here it is : ========================================================================= This file was written on an Amiga and then copied onto VM, therefor lines may ve longer than some mailers ro readers can handle, if so, I will UUENCODE the file and post it again. All bug reports are welcome at the addresses given in the listing ... A C listing containing the optimized LZRW1 compression will follow soon ! I added some optimization to the program when it was already on VM, so I haven't been able to test that yet. It's the part between the ELSE and ENDIF statements in FindMatch. If you should find a bug, be so kind as to report it ... Simply post it to Netnews and mail it to GHGAEA8 @ BLEKUL11 ************************************************************************** ** ** ** ###### # #### ## ## #### #### ## ## ##### ** ** ## ## ### ## ## ## ## ## ## ## ## ### ### ## ## ** ** ## ## ## ## ###### ## ## ## ####### ## ## ** ** #### ####### #### #### ## ## ## ## # ## ##### ** ** ## ## ## ## ## ## ## ## ## ## ## ** ** ## ## ## ## ## ## ## ## ## ## ## ## ## ## ** ** ###### ## ## #### ## #### #### ## ## ## ** ** ** ** A fast and easy-to-understand compression algoritm ** ** ** ** ** ** This compression routine is based on an algoritme written ** ** by Ross N. Williams. Some optimization was done by Kurt ** ** Haenen and the code was rewritten for 68000 assembler. ** ** ** ** If you should enhance or modify this code in any way, you ** ** should put an article in Netnews describing the changes ** ** you made and you should also include the source. This is ** ** not done to control the usage of the program (by the way, ** ** this stuff is completely public domain), but to keep up ** ** with the possible optimizations and enhancements which ** ** can be useful for others aswell ! I hope you'll like the ** ** code. I think this routine has one of the highest speed ** ** vs. compression ratios, zoo sometimes compresses better, ** ** but is much slower. There could still be some unefficient ** ** code floating around here ... for you to find it and post ** ** the fixed versions. Hope to hear from you all very soon. ** ** ** ** Kurt HAENEN ** ** ** ** Special thanks should go to the following persons: ** ** ** ** - Ross N. Williams for the original algoritm published in ** ** "An extremely fast data compression algoritm", Data ** ** Compression Conference, Utah, 7-11 April, 1991. ** ** - Sigrid Pinnoy for her constant support and her efforts ** ** to keep me away from my Amiga and study instead. ** ** - Lieven van Uytfanghe for his constant critics on my ** ** work and his supply of Bicky Burgers. ** ** - All the guys I know at the URC KU Leuven, who allow me ** ** to read netnews and get some EMAILs. ** ** ** ** If you should like to contact me, you can always try ** ** sending an EMAIL to GHGAEA8 @ BLEKUL11, however this ** ** account is only temporarily at my disposal, so if it's ** ** really important : ** ** my "-M-essing -A-round -I-n my -L-etters" address is ... ** ** ** ** Kurt HAENEN ** ** Homsemstraat 53 ** ** 3891 Borlo ** ** Belgium ** ** ** **----------------------------------------------------------------------** ** ANNOUNCEMENT UNDER THE NAME UTOPIA : ** ** ** ** /// I AM STILL SEARCHING FOR SOMEONE WHO'S ** ** /// WILLING TO DONATE AN AMIGA 3000 TO ME. ** ** \\\/// IF YOU'RE INTERESTED ... DON'T WAIT ! ** ** \XX/ SEND ME AN EMAIL, MAIL, OR ... ** ** ** ************************************************************************** ************************************************************************** ** ** ** This code was designed to be compiled with the MACRO 68 ** ** assembler on the Amiga. It should be easy to convert to ** ** other assemblers. Try removing the following lines ... ** ** ** ************************************************************************** EXEOBJ NEWSYNTAX MC68000 SYM ************************************************************************** ** ** ** Some Constants we use ** ** ** ************************************************************************** Block_CopiedAll EQU %10000000 Block_EasyCompression EQU %01000000 EntryBitsPerHash EQU 0 EntriesPerHash EQU (1<