LZEXE home page

What was LZEXE ?

LZEXE was the first wide known executable file compression for PCs under MSDOS. It allowed the MSDOS executables (.EXE or .COM files) to be compressed and then launched without having to decompress them explicitly.

I wrote LZEXE in 1989 and 1990 when I was 17. At that time, hard disks were small and expensive, and 5'' floppies were small (360K). Since I had only two floppy drives on my PC (an Amstrad PC1512), saving space was really an issue.

Although I wrote LZEXE for my own use, I gave it to some friends, and it was then put on some BBS's. LZEXE became then very famous, although I did not do anything to promote it. This success was quite unexpected for me.

How did it work ?

The compression engine of LZEXE was inspired by the method LZSS implemented in free sources distributed by Okumura (package available here). I rewrote it completly in 8086 assembler with a simpler structure and with an output bitstream allowing a small and very fast decompression engine.

The main problem was to find a way to decompress the executable just after its loading and to launch it. The decompressor had to be included in the executable and needed to be very small.

A good source of inspiration was the program EXEPACK from Microsoft which did a very simple compression on the executables. I used almost the same scheme. The main point was to decompress the executable while not using more memory than its decompressed size. It is not so easy because the compressor must guaranty that at each time during the decompression the compressed and decompressed parts do not overlap.

Versions

There were only two official versions of LZEXE. The version 0.90 was the first one, available in late 1989. The second and last one, the version 0.91 corrected a few bugs and adds some utilities. It was published in the beginning of 1990.

The version 0.91 of LZEXE turned out to be very reliable. Almost no bug have been found. I never had the time to work on a new version, even if I had many projects about it.
 
Version
File
LZEXE 0.91e (version 0.91 with contribution from various people)
lzexe91e.zip
LZEXE 0.91 (lastest version distributed by me)
lzexe91.zip
LZEXE 0.90 (first version of LZEXE)
(unavailable)
 

Other programs

LZEXE inspired of course many other people. The most famous clone of LZEXE is PKLITE. (to be completed)

If you look at the source code of the decompression engine of PKLITE, you'll notice that it looks like the one of LZEXE.

Source code

Currently unavailable, but may change if people ask it.

Fabrice Bellard, fabrice.bellard at free.fr.


[Back to my home page]

last update: Feb 9, 2003