home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
converters
/
a264_1
/
UUcoderDoc
< prev
Wrap
Text File
|
1990-03-04
|
7KB
|
156 lines
Documentation for UUcoder Module V1.00
--------------------------------------
********************** Incredibly boring Copyright Notice *********************
* *
* All program code is the copyright of Richard K. Lloyd and the 'borrowing' *
* any part of it without the permission of the author is prohibited. *
* *
*******************************************************************************
If you are passing on UUcoder to your friends, please include this
short text file (which I've called UUcoderDoc).
Installing UUcoder
------------------
The UUcoder is installed by typing *UUcoder. If there isn't enough RMA
workspace available, then the installation will fail. To remedy this, you can :
1) Type *GOS, which permits extra RMA space to be claimed because there is no
application (e.g. BASIC) active or
2) *RMKILL or *RMCLEAR unwanted RAM-based modules or
3) *UNPLUG unwanted ROM-based modules or
4) Use *Configure RMASize to allocate more space to the RMA or
If you still can't install the UUcoder after all that, then either you
have inordinately large *Configure SpriteSize/ScreenSize etc. settings or you
only have a 512K RAM A305, though God knows why you have - there's only 100K
free after booting !
So what does UUcoder do and why use it instead of someone else's version ?
--------------------------------------------------------------------------
*Help UUcoder will reveal a little about what the program does. UUcoder is a
UUencoder/UUdecoder entirely written in ARM code for speed and convenience.
I am now going to make the following bold claim :
UUcoder is the fastest and best UUdecoder/UUencoder available.
There, I said it !
Speed tests
-----------
To back up the previous rash statement, here's a table of UUencode/UUdecode
speeds for the three versions I know of on the Archimedes. The times are in
seconds for a 40K binary file using an 800K moderately fragmented floppy.
Program Size UUencode UUdecode Average Scaled
------- ---- -------- -------- ------- ------
Hearsay C version 40K/31.5K 12.7 11.3 12.0 1.8
BASIC UUcoder 1.00 (fast) 5K 129.0 191.2 160.1 23.5
ARM UUcoder 1.00 (slow) 4.5K 28.9 26.5 27.7 4.1
ARM UUcoder 1.00 (fast) 4.5K 6.5 7.1 6.8 1.0
Figures are unavailable for the 'slow' version of the BASIC UUcoder because
there's a bug in it ('String too long' - I'm not going to investigate it).
So my program is nearly twice as fast as the Hearsay version in the best case !
It is also smaller than any other version I know of and, dare I say it, has
more features...
The *UUencode command
---------------------
Syntax: *UUencode <filename> [<options>]
*UUencode takes the (usually binary) file specified and converts every 3 bytes
of binary into 4 bytes of ASCII. The resulting conversion is saved in a file
with the same core name as the input filename, but with an _uue extension.
The ASCII format of UUencoded files is highly convenient for file transfers
where the remote host can't cope with binary files. It is also more compact
than plain hex and has a checksum byte at the end of each encoded line.
The *UUdecode command
---------------------
Syntax: *UUdecode <filename> [<options>]
*UUdecode takes the previously UUencoded file specified and decodes it back
into the original binary, saving the result in the file mentioned in the
'begin' header of the input file. The decoded file has the file type &FFD
(Data), so you may need to set the correct file type (using *SetType) or
load/exec addresses afterwards.
Note: Many uuencoders/uudecoders don't bother with the checksum byte at the
end of line. *UUdecode will not complain if there is no checksum at the end
of line. HOWEVER, some uuencoders put a line sequence byte at the end of the
line instead and *UUdecode WILL moan about this. There's not much I can do
about this - I'd rather have the checksum than the line sequence byte anyday !
The command parameters
----------------------
<filename> : Maximum filename length of 23 characters. UUencoded lines must
be less than 87 characters long (they are usually a maximum of
61 or 62 characters).
<options> : If any of the options below are omitted, then the environmental
variable 'UUcoder$Options' is read for the default values of the
missing options. Use ~ to reverse the meaning of the option.
Option Default Description
F Off If on, forces overwriting of existing output file.
If off, you are asked if you wish to overwrite it.
Q Off If on, uses application workspace (&8000 onwards) to speed
up the operation. If there is insufficient memory to do so,
then the operation will be automatically switched off.
Memory required = 19 * binary file length / 8.
N.B. OS_Exit is called on completion if the Q option is on.
If off, uses two open data files and reads/writes one byte
at a time. This is much S L O W E R....
V On If on, verbose mode is used whereby percentage completed
will be displayed every 25th percentile and a '.' will be
shown for every 1K of data processed.
If off, the operation will be completely silent.
Revision History of UUcoder
---------------------------
BASIC version V1.00
-------------------
* Written in BASIC to test that the algorithm worked. Found a bug, but don't
know what it is and I'm not going to fix it - all support for this version
has now been dropped. The bug is NOT present in the ARM code version.
ARM code module version 1.00
----------------------------
* Written as a module - now (at least) 23 times faster (with the Q option on)
than the BASIC version !
Future Improvements to UUcoder V1.00
------------------------------------
* Ho hum. All those lovely options, but I haven't coded support for wildcards
yet ! V1.00 allows only a single file to be processed at a time - I shall
work on wildcards, mark my words...
* When wildcards are sorted out, a new C (for Confirm) option will be added.
Where to find me to report bugs or improvements to the UUcoder
--------------------------------------------------------------
Snail Mail JANET e-mail
---------- ------------
Richard K. Lloyd, rkl@uk.ac.liv.cs.mva
1, Banks Road,
Lower Heswall,
Wirral,
Merseyside.