home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 5
/
DATAFILE_PDCD5.iso
/
utilities
/
a
/
appsquash
/
!AppSquash
/
!Help
next >
Wrap
Text File
|
1997-03-02
|
3KB
|
88 lines
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