home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Elysian Archive
/
AmigaElysianArchive.iso
/
compress
/
lx100.lha
/
LX100.DOC
< prev
Wrap
Text File
|
1993-04-03
|
14KB
|
448 lines
LL XX XX
LL XX XX
LL XXX
LL XX XX
LLLLLL XX XX
Version 1.00
2nd April, 1993
Written by Jonathan Forbes
Copyright © 1993, Xenomiga Technology
1 - Distribution
This version of LX is freely distributable for non-commercial use, including
distribution on the Fred Fish disks; i.e. there is no "shareware" (or other)
fee for non-commercial use.
Permission is hereby granted to include the unmodified Version 1.00 LX
executable by itself (i.e. without this documentation) with any PUBLIC DOMAIN
or SHAREWARE package, provided that a brief credit note is included in the
program's documentation.
Enquiries for licensing LX or its algorithms for COMMERCIAL use should be
sent to:
Xenomiga Technology
1132 Bay Street
Toronto, Ontario
M5S 2Z4
Canada
2 - Introduction
LX is a fast dearchiver/decompressor for the Commodore Amiga. It is
compatible with LZ, Lhunarc, Lharc, LharcA, and LhA (all for the Amiga), and
Lharc and LHA for MS-DOS.
LX is the third generation of LZH utility released by Xenomiga Technology,
following Lhunarc and LZ.
LX is also an extremely small program (~ 16K) which makes it ideal for floppy
disk users to keep on a terminal disk.
Since LX reads and writes data asynchronously, the speed of the source and
destination devices (if they are different devices), be they floppy drives,
hard drives, or CD-ROM's, does not cripple LX as is common with the other
Amiga archivers.
This makes LX ideal for use in floppy-to-hard drive installation programs.
In fact, this is one of the purposes for which it was written.
3 - Performance
3.1 LX speed
LX is, at the time of release, the fastest LZH/LHA dearchiver available for
the Amiga. It goes without saying that the decompression routines were
written entirely in highly optimised assembly language.
LX was written with caching microprocessors in mind, and will perform better
the larger the size of your CPU's cache. LX's decompression code should run
almost entirely within the cache of the 68040.
3.2 LX/020
LX/020 is a version of LX which has been optimised for the Motorola 68020 and
later processors in the 680x0 generation.
It has been most optimised for the 68030, since LX was developed on an
Amiga 3000, although it will run on a 68020. It will not run on a 68000 or
68010 machine, however.
The speed increase is reasonably small (approximately 7% on an A3000), but if
you have a 68020 or better, it makes sense to rename LX020 to LX and use that.
4 - System requirements
LX requires AmigaDOS 2.0 or later to run.
LX/020 requires, in addition to the above, at least a Motorola 68020 CPU.
LX will run on an Amiga with 512 KB of RAM or more.
LX does NOT require arp.library.
5 - Compatibility
LX is intended to be compatible with all other LZH/LHA utilities, and supports
many of the Amiga-specific extensions to the standard LZH format.
LX can process archive headers of level 0 or 1, but does not process archive
headers of level 2, since the presence of such headers is essentially
non-existent on the Amiga, and would only incur additional overhead into
the program.
Note that LZ 1.92 and earlier can only process archive headers of level 0.
6 - Commands
LX supports the basic extraction command set:
'e' or 'x' - Extract file(s) from archive
This command is used to extract files from an archive.
If all files are extracted successfully, LX will
EXAMPLES
LX x splat.lzh
Extracts all files from the archive 'splat.lzh' to the current
directory.
LX x splat.lzh ram:
Extracts all files from the archive 'splat.lzh' to ram:
LX x splat.lzh ram: boing*
Extracts all files starting with 'boing' to ram:
LX x dh1:#?
Extracts all archives ending in '.lzh' or '.lha' on dh1: to the
current directory.
't' - Test file(s) in archive
This command is similar to extract (above), except that no files are
created. This command is used to check the integrity of all files in the
archive.
EXAMPLES
LX t splat.lzh
Tests all files in the archive 'splat.lzh'.
LX t splat.lzh boing*
Tests all files starting with 'boing' in the archive 'splat.lzh'.
'l' or 'v' - List or view the contents of an archive
This command lists the contents of an archive.
EXAMPLES
LX v splat.lzh
Views all files in the archive 'splat.lzh'
LX l splat.lzh
Lists all files in the archive 'splat.lzh'
The L command provides output similar to the following:
Original Packed Ratio Date Time Type CRC Name
-------- ------- ----- --------- -------- ----- ---- ------------
1535835 409839 73.3% 21-Feb-93 22:09:10 -lh5- 9A2E RADDiskImage
-------- ------- ----- --------- --------
1535835 409839 73.3% 20-Mar-93 12:57:26 1 file(s)
The V command provides output similar to the following:
Original Packed Ratio Date Time Name
-------- ------- ----- --------- -------- ------------
1535835 409839 73.3% 21-Feb-93 22:09:10 RADDiskImage
-------- ------- ----- --------- --------
1535835 409839 73.3% 20-Mar-93 12:57:26 1 file(s)
7 - Options
LX supports similar options to the other LZH utilities:
-a Preserve attributes
[SET by default]
Causes LX to restore Amiga file protection flags, if a level 1 archive
header is detected.
The attributes restored are:
r: read
w: write
e: execute
d: delete
a: archive
p: pure
s: script
h: hidden
If this option is disabled (by using -a0 on the command line), the
file protection flags are set to '----rwed' when files are extracted.
Note: Archive headers of level 1 identify the operating system on which
the files were compressed.
On such archives, LX will use '----rwed' if the archive was not
compressed using Amiga file attributes.
LX will also use '----rwed' if the archive header is level 0.
-A Set archive attributes
[NOT SET by default]
This option causes all files extracted from archives to have the following
file attributes: '---arw-d'.
If the -a option is also active, then any archives with a level 1 header
and the Amiga archive identifier, will be restored to the attributes
specified by the archive. All other files will have their attributes set
to '---arw-d' as mentioned above.
Thus, in order to ensure that ALL extracted files have the '---arw-d'
attributes, one must use both the -a0 and the -A option.
One may disable the archive bit ('a') by using the -C option (see below).
For example, in order to ensure that ALL extracted files have the
'----rw-d' attributes, one must use the -a0 -A -C options.
-c Confirm files
[NOT SET by default]
This option causes LX to prompt you before each file is extracted.
You will be asked the following:
'SomeFileName': extract? (Yes,No,All,Quit):
Pressing 'Y' will cause the file in question to be extracted.
'N' will cause the file in question NOT be extracted
(LX will skip to the next file in the archive)
'A' will cause ALL files from then onwards to be extracted
(essentially turning off the -c option from then on)
'Q' will cause LX to quit immediately
(without extracting any more files from the archive)
The prompt is hotkeyed; i.e. one does not need to press the
[<return>] key.
-C Clear archive bit
[NOT SET by default]
By default LX sets the archive bit ('a') on all extracted files
(for example: '---arw-d') if the archive header is level 0 or does not
does not carry the Amiga archive identifier.
Specifying this option causes the 'a' bit to be cleared for extracted
files; for example: '----rw-d'.
-E Touch extracted files
[NOT SET by default]
When this option is specified, all files extracted from archives will have
their modification date set to the present (as opposed to the date stored
with the file in the archive).
-f Ignore filenotes
[NOT SET by default]
When this option is specified, LX will not restore filenotes for extracted
files.
-F Fast progress display
[NOT SET by default]
This option causes LX to use a single line for all files extracted from
an archive, thus removing the need to scroll the display.
Since, on a fast Amiga, it can take longer to scroll the display than to
extract some files (especially many small files), the use of this option
can improve decompression performance.
This option also causes LX to skip the blank line it normally inserts
between the archive file name and the first file extracted, for a more
compacted output.
LX does use separate lines (separated by blanks) to display the names of
the archives as they are processed, however.
-l Lower case filenames
[NOT SET by default]
This option causes the filenames of all extracted files to be converted
to lower case.
This option and -u are mutually exclusive.
-m Disable interactivity
[NOT SET by default]
This option supresses any prompting by LX.
This option also causes existing files to be automatically overwritten if
they already exist.
This option is automatically enabled if standard input is not available
to LX.
-p Pause after loading
[NOT SET by default]
This option causes LX to wait for the user to press any key before
performing any commands.
Thus could be useful for users using floppy disks. LX is small enough
to fit into RAM quite easily, however.
-P Set task priority
[NOT SET by default]
This option causes LX to set its task priority to the provided value.
For example: -p-1 causes LX to run at task priority -1.
This can be useful when decompressing data in the background.
-q Quiet mode
[NOT SET by default]
This option suppresses all output from LX.
It also disables interactivity (like -m), and causes files to be
overwritten automatically if they already exist.
-u Upper case filenames
[NOT SET by default]
This option causes the filenames of all extracted files to be converted
to upper case.
This option and -l are mutually exclusive.
-Qs Do not activate * wildcard
[NOT SET by default]
By default, LX sets the AmigaDOS 2.0 WILDSTAR flag, which enables the
asterisk (*) to be used in pattern matching. LX does not restore this
flag to its original state upon exit.
The -Qs option causes LX not to set the WILDSTAR flag; this means that
unless you have set the WILDSTAR flag yourself, LX will not recognise
the asterisk (*) as a wildcard character.
8 - The history behind LX
The original Lharc (MS-DOS) was written by Haruyasu Yoshizaki, and uses a
compression scheme named "-lh1-".
In 1989, I took the public domain source code, "lzhuf.c", and rewrote sections
of it in assembly language to produce Lhunarc, the fastest Amiga LZH unarchiver
at that time. This was my first attempt at using 68000 assembly language; in
fact, part of the purpose of Lhunarc was for me to teach myself 68000 assembly
language.
In early 1990 I rewrote Lhunarc from scratch in a much more optimised form,
having learned an almost unimaginable number of assembly language tricks and
optimisations since Lhunarc. I also added the compression algorithms to the
program, so that it would be a more complete archiving package. The first
version of this program, named LZ 0.80, was released in May 1990, and was much
faster than Lhunarc or any other compatible utility.
In late 1990 I obtained the source code to the -lh5- compression routines
(AR002.ZIP) and used the new algorithms to create a hybrid -lh1-/-lh5-
algorithm compatible with the -lh1- compression scheme.
Essentially, AR's lazy match evaluation and match finding algorithms were used.
This increased compression by a few percent, and sped up compression by a
factor of almost 3. This version of LZ was released as version 1.0 in
February 1991, and allowed LZ to retain its lead in the compression field.
I added the -lh5- compression scheme to LZ soon after, in version 1.80.
By mid 1991, LZ 1.92 was released; the latest version of LZ to date. At that
point in time, I switched all of my efforts to my commercial Bulletin Board
Software package; Xenolink.
At the end of 1991, LZ was finally surpassed by another program; LhA, by
Stefan Boberg. Like LZ, LhA supported both -lh1- and -lh5-, but sported many
more features as well as faster compression and decompression. It also used
the -lh1-/-lh5- hybrid compression scheme pioneered by LZ.
In December 1991, I resdesigned and rewrote the decompression algorithms of LZ
from scratch, with the intention of releasing a significantly faster
decompression-only program named LX. However, Xenolink was taking up so much
of my software development time, that LX was put on the back-burner at this
point.
In January, 1993, I took off a couple of weeks off from Xenolink development
to complete the remaining portions of LX, and this is the program you are
looking at now, more or less; I just never got around to writing this document
until now (April!).
9 - Registered owners of LZ
A big thank-you to all registered users of LZ. Had it not been for the
extremely positive response to LZ, I would not have started writing LX in the
first place.
In fact, I am looking into the possibility of writing a much more compressive
archiving program; more compressive than ARJ 2.39b or PKZip 2.04.
However, that'll have to wait, since all of my efforts will continue to be
concentrated in Xenolink for the next long while.