This program is a basic reworking (in Assembler) of James Storer's SQUEEZE
program, which was written in PASCAL and is found in the back of his book.
In Mr. Storer's original program, he uses an LRU (Least Recently
Used) Queue in order to determine which leaves/nodes of the tree to delete. SQUEEZE and KBOOM11 (couldn't think of a better name and I really don't
care) are basically LZW dynamic dictionary programs. In my code, I have eliminated the LRU Queue since it really didn't provide any better
compression, especially on larger files. I have tried using LFU (Least Frequently
Used) routines but these didn't do any better. I had complicated code to keep track of the frequency of the node use, but it really didn't do any better. I finally settled for the deletion of the oldest leaf (without children) which seems to work better than the rest.
Clear Codes are NOT used by this routine. When the tree becomes
full, the oldest leaves (without children) are deleted one-by-one on a needed
basis. Leaves are checked for the presence of children so that the children and their siblings aren't stranded and the information contained in those nodes are not wasted.
This program is very fast and provides excellent compression
(?). Various combinations of the DICTIONARY size, MAXINCREMENT factor, and MAXMATCH are
possible.