An Optimizing Executable Data Compression Program. A Hybrid LZ77 and RLE, uses an Elias Gamma Code for lengths, Gamma
Code and linear for LZ77 offset, and ranked RLE bytes indexed by the same Gamma Code. Uses no 'extra' memory in decompression.
Features/Requirements/Restrictions:
Handles Commodore C64 executables of upto 64933 bytes (located at $0258-$fffd);
Attaches decompressor code so that the resulting file is runnable on the C64 like the original program;
Does in-place decompressing (single memory buffer);
Uses as little memory as possible during decompression (preferably no run-time data structures);
Has a short and relatively fast decompression routine (for C64);
Does not mess up the kernel or basic interpreter variables nor the return address on the stack;
Reasonable compression time;
Reasonable memory usage during compression (~1 MB for maximum-sized file);
Should offer better compression and/or faster decompression than any packer/cruncher program available for
C64;
Selects the best parameters for the compression of each file automatically, but allows users to override them.