home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 57 / af057sub.adf / lx103.lzh / LX103.DOC < prev    next >
Text File  |  1993-11-27  |  14KB  |  445 lines

  1.  
  2.  
  3.                                  LL      XX   XX
  4.                                  LL       XX XX
  5.                                  LL        XXX
  6.                                  LL       XX XX
  7.                                  LLLLLL  XX   XX
  8.  
  9.                                    Version 1.03
  10.  
  11.                                 27th November, 1993
  12.  
  13.  
  14.                              Written by Jonathan Forbes
  15.  
  16.                        Copyright © 1993, Xenomiga Technology
  17.  
  18.  
  19.  
  20. 1 - Distribution
  21.  
  22. This version of LX is freely distributable for non-commercial use, including
  23. distribution on the Fred Fish disks; i.e. there is no "shareware" (or other)
  24. fee for non-commercial use.
  25.  
  26. Permission is hereby granted to include the unmodified Version 1.03 LX
  27. executable by itself (i.e. without this documentation) with any PUBLIC DOMAIN
  28. or SHAREWARE package, provided that a brief credit note is included in the
  29. program's documentation.
  30.  
  31. Enquiries for licensing LX or its algorithms for COMMERCIAL use should be
  32. sent to:
  33.  
  34. Xenomiga Technology
  35. 1132 Bay Street
  36. Toronto, Ontario
  37. M5S 2Z4
  38. Canada
  39.  
  40.  
  41. 2 - Introduction
  42.  
  43. LX is a fast dearchiver/decompressor for the Commodore Amiga.  It is
  44. compatible with LZ, Lhunarc, Lharc, LharcA, and LhA (all for the Amiga), and
  45. Lharc and LHA for MS-DOS.
  46.  
  47. LX is the third generation of LZH utility released by Xenomiga Technology,
  48. following Lhunarc and LZ.
  49.  
  50. LX is also an extremely small program (~ 16K) which makes it ideal for floppy
  51. disk users to keep on a terminal disk.
  52.  
  53. Since LX reads and writes data asynchronously, the speed of the source and
  54. destination devices (if they are different devices), be they floppy drives,
  55. hard drives, or CD-ROM's, does not cripple LX as is common with the other
  56. Amiga archivers.
  57.  
  58. This makes LX ideal for use in floppy-to-hard drive installation programs.
  59. In fact, this is one of the purposes for which it was written.
  60.  
  61.  
  62. 3 - Performance
  63.  
  64. 3.1 LX speed
  65.  
  66. LX is, at the time of release, the fastest LZH/LHA dearchiver available for
  67. the Amiga.  It goes without saying that the decompression routines were
  68. written entirely in highly optimised assembly language.
  69.  
  70. LX was written with caching microprocessors in mind, and will perform better
  71. the larger the size of your CPU's cache.  LX's decompression code should run
  72. almost entirely within the cache of the 68040.
  73.  
  74.  
  75. 3.2 LX/020
  76.  
  77. LX/020 is a version of LX which has been optimised for the Motorola 68020 and
  78. later processors in the 680x0 generation.
  79.  
  80. It has been most optimised for the 68030, since LX was developed on an
  81. Amiga 3000, although it will run on a 68020.  It will not run on a 68000 or
  82. 68010 machine, however.
  83.  
  84. The speed increase is reasonably small (approximately 7% on an A3000), but if
  85. you have a 68020 or better, it makes sense to rename LX020 to LX and use that.
  86.  
  87.  
  88. 4 - System requirements
  89.  
  90. LX requires AmigaDOS 2.0 or later to run.
  91.  
  92. LX/020 requires, in addition to the above, at least a Motorola 68020 CPU.
  93.  
  94. LX will run on an Amiga with 512 KB of RAM or more.
  95.  
  96. LX does NOT require arp.library.
  97.  
  98.  
  99. 5 - Compatibility
  100.  
  101. LX is intended to be compatible with all other LZH/LHA utilities, and supports
  102. many of the Amiga-specific extensions to the standard LZH format.
  103.  
  104. LX can process archive headers of level 0 or 1, but does not process archive
  105. headers of level 2, since the presence of such headers is essentially
  106. non-existent on the Amiga, and would only incur additional overhead into
  107. the program.
  108.  
  109. Note that LZ 1.92 and earlier can only process archive headers of level 0.
  110.  
  111.  
  112. 6 - Commands
  113.  
  114. LX supports the basic extraction command set:
  115.  
  116. 'e' or 'x' - Extract file(s) from archive
  117.  
  118.    This command is used to extract files from an archive.
  119.  
  120.    If all files are extracted successfully, LX will
  121.  
  122.    EXAMPLES
  123.  
  124.       LX x splat.lzh
  125.  
  126.       Extracts all files from the archive 'splat.lzh' to the current
  127.       directory.
  128.  
  129.  
  130.       LX x splat.lzh ram:
  131.  
  132.       Extracts all files from the archive 'splat.lzh' to ram:
  133.  
  134.  
  135.       LX x splat.lzh ram: boing*
  136.  
  137.       Extracts all files starting with 'boing' to ram:
  138.  
  139.  
  140.       LX x dh1:#?
  141.  
  142.       Extracts all archives ending in '.lzh' or '.lha' on dh1: to the
  143.       current directory.
  144.  
  145.  
  146. 't' - Test file(s) in archive
  147.  
  148.    This command is similar to extract (above), except that no files are
  149.    created.  This command is used to check the integrity of all files in the
  150.    archive.
  151.  
  152.  
  153.    EXAMPLES
  154.  
  155.       LX t splat.lzh
  156.  
  157.       Tests all files in the archive 'splat.lzh'.
  158.  
  159.  
  160.       LX t splat.lzh boing*
  161.  
  162.       Tests all files starting with 'boing' in the archive 'splat.lzh'.
  163.  
  164.  
  165. 'l' or 'v' - List or view the contents of an archive
  166.  
  167.    This command lists the contents of an archive.
  168.  
  169.    EXAMPLES
  170.  
  171.       LX v splat.lzh
  172.  
  173.       Views all files in the archive 'splat.lzh'
  174.  
  175.  
  176.       LX l splat.lzh
  177.  
  178.       Lists all files in the archive 'splat.lzh'
  179.  
  180.  
  181.    The L command provides output similar to the following:
  182.  
  183.    Original  Packed Ratio   Date      Time   Type  CRC  Name
  184.    -------- ------- ----- --------- -------- ----- ---- ------------
  185.     1535835  409839 73.3% 21-Feb-93 22:09:10 -lh5- 9A2E RADDiskImage
  186.    -------- ------- ----- --------- --------
  187.     1535835  409839 73.3% 20-Mar-93 12:57:26 1 file(s)
  188.  
  189.  
  190.    The V command provides output similar to the following:
  191.  
  192.    Original  Packed Ratio   Date      Time   Name
  193.    -------- ------- ----- --------- -------- ------------
  194.     1535835  409839 73.3% 21-Feb-93 22:09:10 RADDiskImage
  195.    -------- ------- ----- --------- --------
  196.     1535835  409839 73.3% 20-Mar-93 12:57:26 1 file(s)
  197.  
  198.  
  199. 7 - Options
  200.  
  201. LX supports similar options to the other LZH utilities:
  202.  
  203. -a  Preserve attributes
  204.     [SET by default]
  205.  
  206.     Causes LX to restore Amiga file protection flags, if a level 1 archive
  207.     header is detected.
  208.  
  209.     The attributes restored are:
  210.  
  211.     r: read
  212.     w: write
  213.     e: execute
  214.     d: delete
  215.     a: archive
  216.     p: pure
  217.     s: script
  218.     h: hidden
  219.  
  220.     If this option is disabled (by using -a0 on the command line), the
  221.     file protection flags are set to '----rwed' when files are extracted.
  222.  
  223.     Note: Archive headers of level 1 identify the operating system on which
  224.           the files were compressed.
  225.  
  226.           On such archives, LX will use '----rwed' if the archive was not
  227.           compressed using Amiga file attributes.
  228.  
  229.           LX will also use '----rwed' if the archive header is level 0.
  230.  
  231.  
  232. -A  Set archive attributes
  233.     [NOT SET by default]
  234.  
  235.     This option causes all files extracted from archives to have the following
  236.     file attributes: '---arw-d'.
  237.  
  238.     If the -a option is also active, then any archives with a level 1 header
  239.     and the Amiga archive identifier, will be restored to the attributes
  240.     specified by the archive.  All other files will have their attributes set
  241.     to '---arw-d' as mentioned above.
  242.  
  243.     Thus, in order to ensure that ALL extracted files have the '---arw-d'
  244.     attributes, one must use both the -a0 and the -A option.
  245.  
  246.     One may disable the archive bit ('a') by using the -C option (see below).
  247.  
  248.     For example, in order to ensure that ALL extracted files have the
  249.     '----rw-d' attributes, one must use the -a0 -A -C options.
  250.  
  251.  
  252. -c  Confirm files
  253.     [NOT SET by default]
  254.  
  255.     This option causes LX to prompt you before each file is extracted.
  256.  
  257.     You will be asked the following:
  258.  
  259.     'SomeFileName': extract? (Yes,No,All,Quit):
  260.  
  261.     Pressing 'Y' will cause the file in question to be extracted.
  262.              'N' will cause the file in question NOT be extracted
  263.                  (LX will skip to the next file in the archive)
  264.              'A' will cause ALL files from then onwards to be extracted
  265.                  (essentially turning off the -c option from then on)
  266.              'Q' will cause LX to quit immediately
  267.                  (without extracting any more files from the archive)
  268.  
  269.     The prompt is hotkeyed; i.e. one does not need to press the
  270.     [<return>] key.
  271.  
  272.  
  273. -C  Clear archive bit
  274.     [NOT SET by default]
  275.  
  276.     By default LX sets the archive bit ('a') on all extracted files
  277.     (for example: '---arw-d') if the archive header is level 0 or does not
  278.     does not carry the Amiga archive identifier.
  279.  
  280.     Specifying this option causes the 'a' bit to be cleared for extracted
  281.     files; for example: '----rw-d'.
  282.  
  283.  
  284. -E  Touch extracted files
  285.     [NOT SET by default]
  286.  
  287.     When this option is specified, all files extracted from archives will have
  288.     their modification date set to the present (as opposed to the date stored
  289.     with the file in the archive).
  290.  
  291.  
  292. -f  Ignore filenotes
  293.     [NOT SET by default]
  294.  
  295.     When this option is specified, LX will not restore filenotes for extracted
  296.     files.
  297.  
  298.  
  299. -F  Fast progress display
  300.     [NOT SET by default]
  301.  
  302.     This option causes LX to use a single line for all files extracted from
  303.     an archive, thus removing the need to scroll the display.
  304.  
  305.     Since, on a fast Amiga, it can take longer to scroll the display than to
  306.     extract some files (especially many small files), the use of this option
  307.     can improve decompression performance.
  308.  
  309.     This option also causes LX to skip the blank line it normally inserts
  310.     between the archive file name and the first file extracted, for a more
  311.     compacted output.
  312.  
  313.     LX does use separate lines (separated by blanks) to display the names of
  314.     the archives as they are processed, however.
  315.  
  316.  
  317. -l  Lower case filenames
  318.     [NOT SET by default]
  319.  
  320.     This option causes the filenames of all extracted files to be converted
  321.     to lower case.
  322.  
  323.     This option and -u are mutually exclusive.
  324.  
  325.  
  326. -m  Disable interactivity
  327.     [NOT SET by default]
  328.  
  329.     This option supresses any prompting by LX.
  330.  
  331.     This option also causes existing files to be automatically overwritten if
  332.     they already exist.
  333.  
  334.     This option is automatically enabled if standard input is not available
  335.     to LX.
  336.  
  337.  
  338. -p  Pause after loading
  339.     [NOT SET by default]
  340.  
  341.     This option causes LX to wait for the user to press any key before
  342.     performing any commands.
  343.  
  344.     Thus could be useful for users using floppy disks.  LX is small enough
  345.     to fit into RAM quite easily, however.
  346.  
  347.  
  348. -P  Set task priority
  349.     [NOT SET by default]
  350.  
  351.     This option causes LX to set its task priority to the provided value.
  352.     For example: -p-1 causes LX to run at task priority -1.
  353.  
  354.     This can be useful when decompressing data in the background.
  355.  
  356.  
  357. -q  Quiet mode
  358.     [NOT SET by default]
  359.  
  360.     This option suppresses all output from LX.
  361.  
  362.     It also disables interactivity (like -m), and causes files to be
  363.     overwritten automatically if they already exist.
  364.  
  365.  
  366. -u  Upper case filenames
  367.     [NOT SET by default]
  368.  
  369.     This option causes the filenames of all extracted files to be converted
  370.     to upper case.
  371.  
  372.     This option and -l are mutually exclusive.
  373.  
  374.  
  375. -Qs Do not activate * wildcard
  376.     [NOT SET by default]
  377.  
  378.     By default, LX sets the AmigaDOS 2.0 WILDSTAR flag, which enables the
  379.     asterisk (*) to be used in pattern matching.  LX does not restore this
  380.     flag to its original state upon exit.
  381.  
  382.     The -Qs option causes LX not to set the WILDSTAR flag; this means that
  383.     unless you have set the WILDSTAR flag yourself, LX will not recognise
  384.     the asterisk (*) as a wildcard character.
  385.  
  386.  
  387. 8 - The history behind LX
  388.  
  389. The original Lharc (MS-DOS) was written by Haruyasu Yoshizaki, and uses a
  390. compression scheme named "-lh1-".
  391.  
  392. In 1989, I took the public domain source code, "lzhuf.c", and rewrote sections
  393. of it in assembly language to produce Lhunarc, the fastest Amiga LZH unarchiver
  394. at that time.  This was my first attempt at using 68000 assembly language; in
  395. fact, part of the purpose of Lhunarc was for me to teach myself 68000 assembly
  396. language.
  397.  
  398. In early 1990 I rewrote Lhunarc from scratch in a much more optimised form,
  399. having learned an almost unimaginable number of assembly language tricks and
  400. optimisations since Lhunarc.  I also added the compression algorithms to the
  401. program, so that it would be a more complete archiving package.  The first
  402. version of this program, named LZ 0.80, was released in May 1990, and was much
  403. faster than Lhunarc or any other compatible utility.
  404.  
  405. In late 1990 I obtained the source code to the -lh5- compression routines
  406. (AR002.ZIP) and used the new algorithms to create a hybrid -lh1-/-lh5-
  407. algorithm compatible with the -lh1- compression scheme.
  408.  
  409. Essentially, AR's lazy match evaluation and match finding algorithms were used.
  410. This increased compression by a few percent, and sped up compression by a
  411. factor of almost 3.  This version of LZ was released as version 1.0 in
  412. February 1991, and allowed LZ to retain its lead in the compression field.
  413.  
  414. I added the -lh5- compression scheme to LZ soon after, in version 1.80.
  415.  
  416. By mid 1991, LZ 1.92 was released; the latest version of LZ to date.  At that
  417. point in time, I switched all of my efforts to my commercial Bulletin Board
  418. Software package; Xenolink.
  419.  
  420. At the end of 1991, LZ was finally surpassed by another program; LhA, by
  421. Stefan Boberg.  Like LZ, LhA supported both -lh1- and -lh5-, but sported many
  422. more features as well as faster compression and decompression.  It also used
  423. the -lh1-/-lh5- hybrid compression scheme pioneered by LZ.
  424.  
  425. In December 1991, I resdesigned and rewrote the decompression algorithms of LZ
  426. from scratch, with the intention of releasing a significantly faster
  427. decompression-only program named LX.  However, Xenolink was taking up so much
  428. of my software development time, that LX was put on the back-burner at this
  429. point.
  430.  
  431. In January, 1993, I took off a couple of weeks off from Xenolink development
  432. to complete the remaining portions of LX, and this is the program you are
  433. looking at now, more or less; I just never got around to writing this document
  434. until now (April!).
  435.  
  436.  
  437. 9 - Registered owners of LZ
  438.  
  439. A big thank-you to all registered users of LZ.  Had it not been for the
  440. extremely positive response to LZ, I would not have started writing LX in the
  441. first place.
  442.  
  443. In fact, I am looking into the possibility of writing a much more compressive
  444. archiving program; more compressive than ARJ 2.39b or PKZip 2.04.
  445.