ESS-CODE

From AtariForumWiki
Jump to: navigation, search
                           E S S - C o d e   6 . 1
                          """""""""""""""""""""""""

                     Copyright 1993, 1994, Michel Forget
                     
                           Electric Storm Software      
                
                * * * I M P O R T A N T   N O T I C E ! * * *

     As a direct result of the growing investment of time and effort
     placed into this application, ESS-Code is now a SHAREWARE product.

     Users who register ESS-Code will receive a disk with the latest
     version of ESS-Code (optimized), and a registered (optimized,
     personalized) version of MasterBrowse (which also includes MasterPrint,
     AutoDate, ACC-Pad, ShadowTerm II, and a coupon for a free catalog from
     Suzy B's Software and a $3 credit toward the purchase of a disk from
     the Suzy B's Software collection).

     The continued development of ESS-Code depends _solely_ on user
     contributions; if no such contributions are received, this
     application will not be developed further.

     For more information on registration, please read the "Registration"
     section of this manual.

                * * * * * * * * * * * * * * * * * * * * * * *

     *-----------------------------------------------------------------*
     | For information about the distribution of ESS-Code, please read |
     | the section of this manual entitled "Distribution".             |
     *-----------------------------------------------------------------*

                                 - CONTENTS -

                        I. INTRODUCTION

                       II. REGISTRATION

                      III. INSTALLING & USING ESS-CODE
                          
                       IV. OPTIONS
                           A. Confirm Termination
                           B. Confirm Overwrites
                           C. Progress Displays
                           D. Unix Line Termination
                           E. TOS 1.4 File Selector
                           F. AutoSave Options
                           G. Use Fast SHIP Encoding
                           I. Include Paths
                           J. Specify Segments
                           K. Select Target
                           L. Segmentation
                           
                        V. ACKNOWLEDGEMENTS
                       
                       VI. DISCLAIMER
                        
                      VII. DISTRIBUTION
                       
                     VIII. CONTACTING THE AUTHOR
                      
                       IX. THE ART OF BINARY <-> ASCII CONVERSION

                        X. CLOSING


I. INTRODUCTION
-=-=-=-=-=-=-=-

    This program was designed to allow computer users to exchange binary
files over computer networks that do not support the transmission of
binary data.  This can be done by converting the binary file to an ASCII
file, then converting the ASCII file back to its original binary state
after transmission.

    There are four popular methods of conversion; UUEncoding/UUDecoding,
MIME-Encoding/MIME-Decoding, BTOA-Encoding/BTOA-Decoding, and SHIP-Encoding/
SHIP-Decoding.  Since each of these conversion methods is an accepted
standard, there are a wide variety of encoding/decoding utilities for
every computer platform.

    If output size is not an issue, the best conversion method to use is
UUEncoding/UUDecoding.  This method is fast, reliable, and allows large
files to be segmented (and re-assembled) automatically.

    If output size is an issue, however, the best conversion method to use
is MIME-Encoding/MIME-Decoding.  This conversion method is not very fast,
but produces very compact output.  It is rapidly replacing UUEncoding/
UUDecoding as the conversion method of choice, because it is has all of
the power of UUEncoding/UUDecoding and is nearly as widely supported.

    Why should you use ESS-Code instead of one of the many other utilities
currently available?

    Here are six good reasons:
    
        1)  SPEED - ESS-Code is much faster than other coding programs
            that I have tested.  In some cases, the difference is as much
            as 469%!  (Yes, that is correct.)
            
        2)  APPEARANCE - ESS-Code uses GEM!  This means that you are given
            a nicely formatted progress display (which shows the output file,
            the input file, the currently active parameters, the source and
            destination path, and a "percentage" meter in both numeric and
            graphic form that indicates how much of the current file
            has been processed.  Since it is a GEM program, you can access
            your desk accessories at any time, and set your options using
            pull-down menus.  ESS-Code uses NON-MODAL window dialogs and
            alert boxes, so you can use your accessories or applications
            (or even other ESS-Code dialog boxes) while inside a dialog box!
            With MultiTOS, all dialog boxes (and alert boxes) can be
            iconified.

        3)  FLEXABILITY - ESS-Code supports UUEncoding, UUDecoding,
            BTOA-Encoding, BTOA-Decoding, SHIP-Encoding, SHIP-Decoding,
            MIME-Encoding, MIME-Decoding, RAW-Splitting, and RAW-Concatening
            of files.  All of your file conversion needs are handled by one
            program.

        4)  COMPATIBILITY - While conversion methods have remained roughly
            the same, the Atari ST has not.  ESS-Code has support for the
            ARGV command line standard that Atari has adopted, as well as
            support for the default command line standard used by older ST
            systems.

        5)  OPTIONS - ESS-Code has more options than any other encoding or
            decoding program available for the Atari.

        6)  HELP - Using the ST-Guide HyperText accessory, the entire
            ESS-Code manual is available at any time from within
            ESS-Code.


II. REGISTRATION
-=-=-=-=-=-=-=-=

OR:  Why should I send this person money if I have the program already?

    I would like to start this section of the manual by saying I am not
going to try to make you feel guilty; I would like to say it, but I will
not.

    Like many authors of Shareware products, I have come to learn that
very few people register Shareware software.  I do not know why; I can
only guess the reasons.  The reasons do not really matter, though,
because the end result is always the same.  On GEnie, MasterBrowse is
regularly downloaded by over 150 users.  The numbers are much the same
for CompuServe and Delphi, and much higher on the Internet.  Only 23
people have registered MasterBrowse, though.

    I hope that more people elect to register ESS-Code.  There are many
incentives to do so, but the largest incentive of all is this; there
will be no further development of this product unless some registrations
are received.  I cannot say it any more clearly; I love to write software
for this system, but I cannot continue to do it without your support.

    Users who register ESS-Code will receive an optimized version of
ESS-Code, a registered (and optimized) version of the popular text
file viewer MasterBrowse, a series of utilities (AutoDate, ACC-Pad,
MasterPrint, ShadowTerm II, and a coupon for a free catalog from
Suzy B's Software.

    To register ESS-Code, send $15 (Canadian/US) to:

    Michel Forget
    12209 Dovercourt Avenue
    Edmonton, Alberta
    CANADA
    T5L 4E1

    If you do not live in North America (and you are writing to this 
address instead of the address for users in the United Kingdom), please
send an international money order or the equivalent of $15 in your own
currency.  Please do not send a personal cheque unless you live in North
America.

    If you live in the United Kingdom, you can send 14 UKPounds (cheque
or money order) to Denesh Bhabuta:

     ESS (c/o Denesh Bhabuta)
     203 Parr Lane
     Unsworth
     Bury
     Lancashire
     BL9 8JW

III. INSTALLING & USING ESS-CODE
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

    ESS-Code is a very versatile application, so there are several ways that
it can be invoked:
        
    1)  The simplest way to use ESS-Code is to execute ESSCODE.PRG and then
        select the options you would like to use and initiate an encoding
        or decoding operation.

    2)  If you have a hard disk, you may want to install ESSCODE.PRG an an
        application.  For best results, please ensure that the current
        directory is set to "top window".  Since TOS 1.2 does not handle
        installed applications correctly, it may be neccessary to edit
        the DESKTOP.INF file (add the full pathname of ESS-Code to the
        line containing the filename ESSCODE.PRG).

    3)  ESS-Code can also be installed on the desktop as an icon; this
        allows an entire group of files to be processed in a single
        pass.  Simply drag the desired files to the ESS-Code icon and
        release the mouse button.  ESS-Code will _automatically_ decide
        which files should be encoded and which files should be decoded.
        Depending on your preferences, ESS-Code will also decide which
        conversion method to use or ask which conversion method should be
        used.

    4)  ESS-Code can easily be invoked from a command line interpreter;
        commands are not case-sensitive, but must be in the correct order
        and contain the correct number of arguments.  The following
        commands are available:

        -uue     source destination_file
        -uud     source destination_file
        -btoa    source destination_file
        -atob    source destination_file
        -ship    source destination_file
        -unship  destination_file source [source ...]
        -mime    source destination_file
        -unmime  source destination_file

        To set the segment size (which does not change very often) define
        the environment variable "SEGSIZE".  It should contain the maximum
        number of kilobytes in a segment.


IV. OPTIONS
-=-=-=-=-=-

    There are several options that can be set to control how ESS-Code
behaves:

    A. Confirm Termination - This option determines whether or not
       ESS-Code will ask for confirmation before terminating.

    B. Confirm Overwrites - This option determines how ESS-Code will
       behave if an existing file will be overwritten by an encoding
       or decoding operation; if it is enabled, you will be given the
       option of aborting the operation.

    C. Progress Displays - This option determines whether or not ESS-Code
       will show progress displays.  Other than saving screen space, there
       is no real advantage to turning progress displays off.

    D. Unix Line Termination - This option will force ESS-Code to terminate
       ASCII lines with a linefeed (Unix) instead of a linefeed/carriage
       return (IBM/Atari).

    E. TOS 1.4 File Selector - If this option is enabled, ESS-Code will
       display prompts in the file selector.

    F. AutoSave Options - If this option is activated, ESS-Code will save
       your options when you exit the program.  
    
    G. Use Fast SHIP Encoding - If this option is enabled, ESS-Code will
       use an alternate (faster but less efficient) conversion method
       during SHIP-Encoding operations.

    H. Include Paths - If this option is used, ESS-Code will include the
       complete path of the source file in the encoded data.  Thus, when
       decoding, the file will be written to the same path.  This option
       should usually not be used, since it is unlikely that the system
       that will receive the file will have the same directory structure
       as your system.

    I. Specify Segments - This option (when selected) causes ESS-Code to
       prompt the user for the name and location (using the file selector)
       of each piece of the file to be UUDecoded.  This option will mainly
       be of interest to users of Hermes UUCP or UPoint, who will no longer
       have to copy messages out of their news directory, and then waste
       time renaming the segments.
    
    J. Select Target - This option allows you to choose the destination
       path for any encoding/decoding operation.  This option is mainly
       for floppy users who want to decode to a ramdisk or a second floppy
       disk and CLI users (who must specify a destination on the command
       line).

       For those who would like the file selector to always be opened to
       the same path (which is especially useful for people who always
       extract files to the same place) the environment variable
       "ESS_DPATH" can be defined; it should contain a "\" terminated
       pathname.

    K. Default Conversion Method - This option determines which conversion
       method ESS-Code will use when processing a group of files (such as
       when the user selects "Process Batch" or when ESS-Code is passed
       files on the command line).

    L. Segmentation - An encoded file can be divided into pieces, which
       will be automatically joined together when being decoded.  This
       makes it easier for network mailing software to process the
       encoded file.  You can choose one of the preset sizes, or set your
       own.  (Unless you are sure it will work, you should not use
       segment sizes larger than 50K).

       The segment size can also be set through the environment, which is
       especially useful for CLI users.  To do this, defined the environment
       variable "SEGSIZE", and set it to the maximum number of kilobytes
       of data a segment can contain.

 
V. ACKNOWLEDGEMENTS
-=-=-=-=-=-=-=-=-=-

    There are many people who are deserving of recognition for their aid
in creating this application:

    First, I would like to thank Steve Yelvington, the author of UUCODER
1.0 (the program on which ESS-Code was based).

    Another person deserving of recognition is Christian Grunenberg, the
author of the excellent EnhancedGEM Library which is the core of ESS-Code.

    I would also like to thank Ofir Gal, Traci J. Ingram, Gerhard Hoelscher,
Carsten Friehe, the users of the MausNet, the users of the Internet, Mark
Adler, Steve Wells, Michael Mies, John G. Myers, and RSA Data Security
Incorporated.
   

VI. DISCLAIMER
-=-=-=-=-=-=-=

    ESS-Code does not come with any warranty, express or implied.  If you
use ESS-Code, you do so at your own risk.  Neither the author of ESS-Code
(Michel Forget) nor any other party will accept responsability for any
equipment damage, data loss, or other unforseen consequence of the use or
mis-use of ESS-Code.


VII. DISTRIBUTION
-=-=-=-=-=-=-=-=-

    There are two limitations placed on the distribution of ESS-Code:

    1) When distributed, ESS-Code must contain all files found in the
       original archive.

    2) ESS-Code may not be distributed on the cover disk of any magazine
       without the express written permission of the author.  This
       limitation does not apply to electronic (or non-profit)
       magazines.


VIII. CONTACTING THE AUTHOR
-=-=-=-=-=-=-=-=-=-=-=-=-=-

    If you would like to contact me with bug reports, suggestions, or
comments, you can do so through the following addresses (in order of
personal preference):

Internet:  mforget@elfhaven.ersys.edmonton.ab.ca
           ess@tibalt.supernet.ab.ca
 
    Mail:  Michel Forget
           12209 Dovercourt Avenue
           Edmonton, Alberta
           CANADA
           T5L 4E1


IX. THE ART OF BINARY <-> ASCII CONVERSION
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

     ESS-Code is an extremely flexible application; this section of the
manual discusses (in detail) each of the four conversion methods supported
by ESS-Code, and compares them.

     UUEncode/UUDecode
     -----------------

     SYNOPSIS --          Speed:  Very Fast
                      Expansion:  Poor (25%-30%)
                   Segmentation:  Yes
                 Reconstruction:  Automatic
                 
     This method of conversion is one of the first to gain popularity,
and is thus one of the most widely accepted/used conversion methods to
date.  It is supported on every computer platform, and provides reasonably
good error checking.  It is very fast, but not very efficient.  The main
advantages of using this conversion method are the speed, the ability to
break up the output generated into small segments, and the ability to
automatically reconstruct the segmented output.  The main (perhaps only)
disadvantage of using this conversion method is that it generates output
that is 25% (or more) larger than the original binary information.

     BTOA-Encode/BTOA-Decode
     -----------------------

     SYNOPSIS --          Speed:  Slow
                      Expansion:  Good (20%-25%)
                   Segmentation:  No
                 Reconstruction:  Manual

     While this method of conversion is popular, it is not as widely
used/accepted as UUEncode/UUDecode.  It is vastly slower than UUEncode/
UUDecode, but it generates more compact output.  The main advantage of
using this conversion method is that it provides slightly better error
checking that UUEncode/UUDecode.  There are numerous disadvantages, though,
such as the lack of automatic segmentation or reconstruction.

     SHIP-Encode/SHIP-Decode
     -----------------------

     SYNOPSIS --          Speed:  Average
                      Expansion:  Good (20%-25%)
                   Segmentation:  Yes
                 Reconstruction:  Semi-Automatic

     While this conversion method is not as widely accepted/used as any of
the other conversion methods, it is used extensively on HP-UNIX platforms.
It is faster than BTOA-Encode/BTOA-Decode, and offers a nearly identical
expansion rate, but has very light error checking.  It can create segmented
output, and has semi-automaic reconstruction of segmented output.  There
are two variations of this conversion method; the 'Fast' conversion
algorithm is somewhat faster than the default conversion algorithm, but
(oddly) has a nearly identical expansion rate.

     MIME-Encode/MIME-Decode
     -----------------------

     SYNOPSIS --          Speed:  Fast
                      Expansion:  Average (20%-30%)
                   Segmentation:  Yes
                 Reconstruction:  Automatic

     This conversion method is rapidly becoming more popular than any
other conversion method to date.  It is fast, but has a low expansion
rate.  This conversion method, like UUEncode/UUDecode, has very good
error checking.  It can generate segmented output, and reconstruct
that output with no user intervention.  One of the main advantages to
using this conversion method is that it is supported on nearly every
computer platform; UNIX, Macintosh, IBM, Amiga, Atari, and others.

     The Exact Figures
     -----------------

     Conversion Utility:  ESS-Code 6.0 (Shareware)
                          Electric Storm Software

     Archive #1: COMA_210.ZIP

                 Orginal      UUE        BTOA       SHIP       MIME
               --------------------------------------------------------
          Size | 256,695  | 355,276  | 321,079  | 321,422  | 343,520  |
          Time | MM.SS.XX | 00.28.57 | 02.00.24 | 01.28.50 | 00.52.38 |
               --------------------------------------------------------

     Archive #2: EGEMSOZX.LZH

                 Orginal      UUE        BTOA       SHIP       MIME
               --------------------------------------------------------
          Size | 166,715  | 233,505  | 211,131  | 211,235  | 225,937  |
          Time | MM.SS.XX | 00.20.55 | 01.20.59 | 00.59.41 | 00.36.45 |
               --------------------------------------------------------

     Archive #3: LPR_UTL3.ZOO

                 Orginal      UUE        BTOA       SHIP       MIME
               --------------------------------------------------------
          Size | 117,911  | 165,181  | 149,080  | 149,412  | 159,961  |
          Time | MM.SS.XX | 00.15.11 | 00.58.59 | 00.43.22 | 00.26.52 |
               --------------------------------------------------------

     Conclusions
     -----------

     Each of the four conversion methods is acceptable, but your specific
situation may indicate which of the four conversion methods is best for
you.  The average user will probably prefer to use UUEncode/UUDecode, since
it is the fastest of the four conversion methods, and offers automatic
segmentation and automatic reconstruction of segmented output.  People who
use UNIX often should probably consider using MIME-Encoding; it is very
common on UNIX systems, and is rapidly replacing all other conversion
methods.  If you are paying for data transfer by the kilobyte, though,
SHIP-Encoding is probably the best solution for you.  It creates extremely
compact output, and offers automatic segmentation and semi-automatic
reconstruction of segmented output.  The error checking is light, but this
is usually not a problem.

X. CLOSING
-=-=-=-=-=

   I hope that you are pleased with ESS-Code, and decide to continue using
it after you have experimented with it.

    I have invested more than a year of my life in the creation of this
program, though, so I _also_ hope that you will seriously consider sending
in the requested donation.

    If the Atari is going to remain a viable system in the future, it needs
more Shareware, Donation-Ware, Freeware, and Public Domain applications to
compensate for the lack of commercial products available.  In order to make
programming for the Atari viable, though, the Atari community needs to show
support for the programmers of these applications.

                                                   -Michel Forget
                                                    Electric Storm Software
                                                    June 29, 1994


Back to Packer/Depacker