home *** CD-ROM | disk | FTP | other *** search
-
- -------------------------------------------
- LhSFX - Self Extracting Archive Creator
- Original program written by Mike Kennedy
-
- Cruncher and Decruncher © by
- Holger P. Krekel & Olaf `Olsen' Barthel
-
- Improved by Ralf Thanner in 91/92
-
- req.library © by C.W. Fox & Bruce Dawson
- -------------------------------------------
-
-
- Version 1.5 04/11/92
-
-
-
- To use all features of LhSFX the 'req.library' should be installed!
- ----------------------------------------------------------------------
-
- Have you ever wanted to create a self-extracting archive? They make
- life much easier for software developers and provide protection from
- bogus copies of your precious work. LHSFX allows you to create your
- own self-extracting archives... with data compression better than ZIP
- and LHARC.
-
- LHSFX uses compression an improved version of the LHARC compression
- algorithm which allows an speed increase of over 40% and 3% better
- compression. Decompression is almost incomparable... Apples to
- Oranges... Usually around 500% faster. On small files the increased
- compression may not be apparent because the extraction header is a
- little over 2k long.
-
- Here are some comparisons between LHSFX, LHARC and other packer....
-
-
-
- 1. Picture, 320x256, (32 colours), hand-drawn, 1 pixel = 1 byte
- ---------------------------------------------------------------
- Input length in bytes: 81920
-
-
- Output Compression Decompression
- -------------------------------------
- Lh(sfx) 11838 01:56 00:01
- LhArcA 11849 02:04 00:10
- The Imploder 13076 01:41 00:01
- PowerPacker 14868 00:30 00:01
-
-
- 2. Picture, 320x256, (32 colours), hand-drawn, bitplanes
- --------------------------------------------------------
- Input length in bytes: 51200
-
-
- Output Compression Decompression
- -------------------------------------
- Lh(sfx) 13870 01:27 00:02
- LhArcA 14041 02:40 00:10
- The Imploder 15342 02:40 00:01
- PowerPacker 15840 00:27 00:01
-
-
- 3. Picture, 640x400, (16 colours), sampled, 1 pixel = 1 byte
- ------------------------------------------------------------
- Input length in bytes: 256000
-
-
- Output Compression Decompression
- -------------------------------------
- Lh(sfx) 76428 03:01 00:06
- LhArcA 77970 04:05 00:38
- The Imploder 93152 09:12 00:08
- PowerPacker 90728 02:20 00:08
-
-
- 4. Picture, 640x400, (16 colours), sampled, bitplanes
- -----------------------------------------------------
- Input length in bytes: 128000
-
-
- Output Compression Decompression
- -------------------------------------
- Lh(sfx) 81886 01:02 00:09
- LhArcA 81580 01:42 00:44
- The Imploder 93152 09:12 00:02
- PowerPacker 86956 01:52 00:06
-
-
- 5. Executable file, Amiga-hunk format
- -------------------------------------
- Input length in bytes: 130964
-
-
- Output Compression Decompression
- -------------------------------------
- Lh(sfx) 71330 01:07 00:08
- LhArcA 77970 01:48 00:34
- The Imploder 73172 08:23 00:03
- PowerPacker 74208 01:40 00:06
-
-
-
-
- LHSFX is easy to use. Once you've started it, enter the name of the
- archive you want to create. It will check to see whether it exists
- and if it does, it will ask you if you'd like to overwrite it. Then
- begin entering names of files you want compressed. If you want a text
- file to be displayed while the archive is being extracted, enter it's
- name and press D for Display at the prompt. Otherwise, press F for
- File. For files, enter the extract path, in other words the name of
- the file when it is decrunched, including names of subdirectories.
- Here's an example...
-
- When you don't have the 'req.library' in your LIBS: drawer LHsfx will
- use a Shell-interface. Here you must enter the extract path and the
- file name for each crunched file! The req.library version will always
- take the original file name and the extract path has to be declared
- only once.
-
- The 'Extract path' and the filename together _must_ not be longer than
- 48 chars.
-
- =========================================================================
-
- ARCHIVE NAME > ram:testfile ['.sfx' will be added automagically]
-
- ORIGINAL > df0:info.txt
-
- »> df0:info.txt (1234 bytes)
-
- Compressing... Please Wait.
-
- Crunched 1234 bytes to 374 bytes.
-
- [F]ile or [D]isplay : D
-
- File Added to Archive.
-
- ORIGINAL > df0:program
-
- »> df0:program (4321 bytes)
-
- Compressing... Please Wait.
-
- Crunched 4321 bytes to 1342 bytes.
-
- [F]ile or [D]isplay : F
-
- Extract Path > ram:and_the_extract_name
-
- File Added To Archive.
-
- ORIGINAL > another file or EXIT [quits program]
-
- =========================================================================
-
- To close off and finish an archive just press return at an empty
- ORIGINAL prompt. LHSFX will then complete and close your archive. It
- is now a fully self-contained, self-extracting archive. To extract
- the above archive, all you'd type 'testfile.sfx' at the Shell prompt.
-
-
- > Mike Kennedy <
- > 140 Westside Dr. < Because he wrote a program with a lousy
- > Oakville, Ontario < interface, many bugs and a stolen cruncher
- > Canada L6K 1P3 < send donations ($10) to the address below:
-
-
- =========================================================================
-
-
- Send suggestions and registration fees to:
-
- Olaf 'Olsen' Barthel
- Brabeckstrasse 35
- D-3000 Hannover 71
-
- Federal Republic of Germany
-
-
- =========================================================================
- CHANGES
- =========================================================================
-
-
- V1.1 - window bug fixed by 'FLASH of TRSI'.
-
- -------------------------------------------------------------------------
-
- LHSFX V1.1 was the version I got, but the guy 'FLASH' wrote in his
- docs that LHSFX did not work correct under Kickstart 1.3 and the only
- thing he patched was the bug in the 'window open' routine.
-
- -------------------------------------------------------------------------
-
- V1.2 28/05/91 [INTERNAL]
-
- - added filerequester of req.library!
- (if you don't have the req.lib you must type the name.-(
-
- - removed screen color cycle during crunch.
-
- - tried to improve the code a little bit!
- ( fixed bugs, added file req., made it more multitasking
- friendly and the code is still shorter! )
-
- - changed: DESTINATION > ram:testfile
- to ARCHIVE NAME > ram:testfile
-
-
- - changed: 'Press Left Mouse Button'
- to 'Press RIGHT Mouse Button' for DMOUSE user!
-
- -------------------------------------------------------------------------
-
- V1.3 14/06/91 [INTERNAL]
-
- - the filerequester is now also used for 'ARCHIV NAME' and
- 'EXTRACT PATH'.
-
- - short instructions at the beginning. ( only with req.lib. )
-
- - '.SFX' will be added automagically to archiv name.
-
- - added led-cycling during crunch. ( is he still crunching?? )
- ( In a multitasking system i prefer something more subtil than
- a flashing screen. )
-
- - added requester for '[F]ile' or '[D]isplay' choice.
-
- - 'CON' and 'ANSI' part thrown out.
- ( filelenght reduced from 18kb to 9kb! )
-
- -------------------------------------------------------------------------
-
- V1.4 22/10/91 [INTERNAL]
-
- - added requester for 'Overwrite [Y]es / [N]o' decision.
-
- - removed some of my own bugs.
-
- - the 'EXTRACT PATH' has only to be declared once.
-
- -------------------------------------------------------------------------
-
- V1.5 03/11/92 Public release
-
- - rewrote part of the code and removed bugs.
-
- - changed TASKPRI during crunch from '0' to '+8'.
-
- - rewrote the doc;-)
-
- =========================================================================
-
- »»» All changes done by RALF THANNER in 91/92 «««
-
- =========================================================================
- **** COMMENT ****
- =========================================================================
-
- Normally I don't like to snoop around in other programs, but in this
- case it was something different. This Lhsfx was just the program I
- needed and always wanted to write myself. There was only one thing
- that I didn't like and that was the lousy `interface'.
- So I decided to add a filerequester. When I was snooping around in
- the code, I noticed two entirely different programming styles: One was
- close to brilliant and the other was less than lousy! After a short
- time of modifing the source I thought to myself: I cannot believe
- that Mike has written the cruncher. He seems to be a beginner (don't
- take it too hard Mike, I also wrote such kind of code at the
- beginning) and the cruncher was one of the best pieces of code I have
- ever seen.
- Then I remembered that about one year ago two friends of mine had
- written an LZH cruncher/decruncher. Holger Krekel needed about one
- month to improve and speed up the code for the MC68000. At least it
- was one of the best LZHUF cruncher available. Together with Olaf
- `Olsen' Barthel he released the lh.library as shareware, requiring
- explicit permission to use it in shareware and commercial programs --
- great surprise!!! I remembered that Olaf had handed me the source, so
- I started to compare the code of Lhsfx and lh.library:
-
- THEY ARE BYTE BY BYTE IDENTICAL!
-
- It's theft to release a programm as shareware if the only achievement
- is a lousy CLI-interface and the main piece of the cake (the cruncher)
- is stolen! Mike, I hope that you will have a good explanation for
- this!
-
-
- The reason why this progamm is released one year later when there are
- better and faster programms available (LHAsfx) is simple! I had spent
- many hours improving the code and the only reason why it was not
- released last year was the fact that I forgot this program on one of
- my source backup disks.
-
- But last week I found the source, remembered that this proggy never
- reached the public, rewrote some parts of the code and voila... here
- it is!
-
-
- Some examples of Lhsfx code
- ---------------------------
- This code is not shown to humble Mike, but to make clear how surprised
- I was when I compared the different styles between the cruncher and
- the rest of the program. The first three examples are from Mike and
- the fifth from MXM. Have a look on your own...
-
- This code was thrown out by 'RESOURCE V4.0' a great tool for programmer.
-
- * EXAMPLE #1 * MIKE
- ----
- MOVE.L D0,lbL000DA8 ; what about : Move.l d0,xxx-var(a5)
- MOVE.L lbL000DB0,D2 ; and : move.l xxx(pc),d2
- MOVE.L lbL000DB8,D3 ;
- MOVE.L lbL000C90,A6 ; 'how to get huge reloc hunks!'
-
- * EXAMPLE #2 *
-
- MOVE.L D0,lbL000CA0 ; what about : Move.l d0,xxx-var(a5)
- MOVE.L lbL000CA0,D1 ; and : move.l d0,d1
-
- * EXAMPLE #3 *
-
- lbC000612
- BTST #6,$BFE001 ; what about adding a DOS-DELAY for
- BNE lbC000612 ; a minimum of multi-tasking?
-
-
- * EXAMPLE #5 * Original (part of cruncher)
- -------- (comments taken from source)
-
-
- ;**** 1. Current node = last node ***
-
- move 0(a5,d5.w),0(a5,d0.w) ;dad(r) = dad(p)
- move 0(a3,d5.w),0(a3,d0.w) ;lson(r)=lson(p)
- move 0(a4,d5.w),0(a4,d0.w) ;rson(r)=rson(p)
-
- ;**** 2. Put parent node into last node. ***
-
-
- move 0(a3,d5.w),d2 ;
- move d0 ,0(a5,d2.w) ; dad(lson(p))=r
- move 0(a4,d5.w),d2
- move d0 ,0(a5,d2.w) ; dad(rson(p))=r
-
- ;**** 3. Put son of last node into current ***
- ;**** node. ***
-
- move 0(a5,d5.w),d2
- cmp 0(a4,d2.w),d5 ; IF rson(dad(p)) == p
-
- ==========================================================================
-
- - LH -
- A data compression system for the Commodore Amiga computer
- written by Holger P. Krekel and Olaf 'Olsen' Barthel
- © Copyright 1990, all rights reserved.
-
- ==========================================================================
-
- ******* Thanks for these versions ********
- LZHUF.C English version 1.0
- Based on Japanese version 29-NOV-1988
- LZSS coded by Haruhiko OKUMURA
- Adaptive Huffman Coding coded by Haruyasu YOSHIZAKI
- Edited and translated to English by Kenji RIKITAKE
-
- ******* Many thanks to Olaf for knowledge and the above *******
- ******* sourcecodes *******
- ******* they were used to get to know some methods *******
- ***************************************************************
- ******* LZHUF Packing *******
- ******* written in assembly by HPK 24/08/90 for MXM *******
-
-
- =========================================================================
-
- Ralf Thanner
- Ellerstr. 83
- D-4000 Duesseldorf 1
-
- Federal Republic of Germany
-
- =========================================================================
- EoD
-