home *** CD-ROM | disk | FTP | other *** search
- AppSquash 1.23
- ¯¯¯¯¯¯¯¯¯
- Written by Darren Salt
- LZW code based on Michael Rozdoba's Squash-compatible code
- Squeeze and UnSqueeze © Acorn Computers Ltd
-
- LZW decompression now StrongARM compliant - hopefully...
-
-
- AppSquash will squash application image files, modules, and BASIC¹ programs,
- producing files that, when run, will unsquash themselves and then run as if
- they hadn't been squashed. It can also handle modules squeezed using modsqz
- (though for particularly large modules, it may fail).
-
-
- All you need to do is to drag the file(s) you want to compress to the
- AppSquash icon, and for each file in turn, a save box will appear. You are
- *not* allowed to overwrite the original file!
-
- The available options are:
-
- Squash Squeeze
- Absolute € €
- Module €
- BASIC €
-
- The 'Better' option forces the application (if Squeeze is selected) or module
- to be squeezed anyway, even if the resulting file would be larger.
-
- Once you have decided where to save the file (in the normal way - it's just
- a standard save box), AppSquash will compress the file, and, if successful,
- will save it for you. If it fails for any reason, you will be told why and no
- file will be created. Note that if the file is not compressible, an exact
- copy will be made.
-
-
- AppSquash will also unsquash files. Just follow the same procedure; the file
- will be saved according to its original filetype.
-
- The datestamp is always preserved when using the LZW method; Squeeze, for
- some reason, doesn't preserve it - AppSquash will ensure that the original
- datestamp is written to the squeezed (or unsqueezed) file.
-
-
- Squeeze must be in either !AppSquash or somewhere on Run$Path; your library
- directory is a good place to put it. UnSqueeze must be installed in
- AppSquash.
-
-
- Notes
-
- 1. BASIC programs
- There is a slight problem with command line parameters. Though the
- programs will run without problem (as long as the unsquashed version did),
- command line parameters cannot be passed to them because Acorn left a nice
- little bomb in BASIC's in-core program loader code - it quite unhelpfully
- dictates that, immediately following the addresses, the command string is
- terminated. This leaves nowhere for the parameters!
- Fortunately there is a way round this, as long as your program is packaged
- in an application directory. (In the following description, I am assuming
- that your BASIC program is called "!RunImage", and that the file which runs
- it is "!Run". If your filenames are different, substitute yours as
- appropriate.)
- In "!Run":
- Just before the line which runs "!RunImage", insert
- Set Obey$Args ""
- and move the parameters part of the line running "!RunImage" (complete
- with leading spaces) into the quotation marks in the line above. For
- example:
- Run <Obey$Dir>.!RunImage -with %*0
- becomes
- Set Obey$Args "-with %*0"
- Run <Obey$Dir>.!RunImage
- In "!RunImage":
- Search for the line looking something like
- SYS "OS_GetEnv" TO env$
- (OS_GetEnv is SWI number &10) and replace the command with
- SYS "OS_ReadVarVal","Obey$Args",buf%,255 TO ,,len%
- buf%?len%=13:env$=$buf%
- SYS "OS_SetVarVal","Obey$Args",,-1
- substituting your own variable names where necessary.
- Also, occasionally, a program may not run in its squashed form. In this
- case, unsquash it and make sure the first few lines are highly compressible
- (eg. several spaces).
-
-
- Contact: arcsalt@spuddy.mew.co.uk
-