****************************************************************************
* I'll make this documentation short n' sweet so you can either start      *
* using these utilities immediately or delete them without further effort. *
****************************************************************************

    -=> NOTICE!  All these programs were written for the CLI only! <=-

    Three of these programs (do, setup, shutdown) are quick n' dirty (tm)
programs I wrote to make my life ents.

   |        PIPE specifier.  The output from the command on the left becomes
            the input to the command on the right.  The current SHELL
            implimentation uses temporary files to store the data.

   !!       execute the previously executed command.
   !nn      (nn is a number).  Insert the history command numbered n (see
            the HISTORY command)
   !partial search backwards through the history list for a command which
            looks the same as 'partial', and execute it.

   #        Enter comment.  The rest of the line is discarded (note: \#
            will, of course, overide the comment character's special
            meaning)

   ^search^replace
            a '^' at the beginning of the line indicates history
            replacement.  The first occurance of 'search' in the previous
            command is changed to 'replace', and the command executed.



                             SHELL COMMANDS


   The first argument is the command-name... if it doesn't exist in the
   list below and isn't an alias, it is assumed to be an external (disk)
   command.

   AUTOMATIC SOURCING may be accomplished by naming shell scripts with a
   .sh suffix.  Thus, if you say 'stuff' and the file 'stuff.sh' exists in
   your current or C: directory, it will be SOURCED with any arguments you
   have placed in the $_passed variable.

                          EXCEPTION_PROCESSING

      if no _except variable exists, any command which fails causes the
      rest of the line to abort as if an ABORTLINE had been executed.  If
      the _except variable exists, it is of the form:

      "nnn;commands..."

      where nnn is some value representing the minimum return code required
      to cause an error.  Whenever a command returns a code which is
      larger or equal to nnn, the commands in _except are executed before
      anything.  WHEN _except EXISTS, THE COMMAND LINE DOES NOT ABORT
      AUTOMATICALLY.  Thus, if you want the current line being executed
      to be aborted, the last command in _except should be an "abortline".

      exception handling is disabled while in the exception handling routine
      (thus you can't get into any infinite loops this way).

      Thus if _except = ";", return codes are completely ignored.

      example:

      set _except "20;abortline"


   ABORTLINE

      or just 'abort'.  Causes the rest of the line to be aborted. Used in
      conjunction with exception handling.

      % echo a;abort;echo b
      a


   HELP

      simply displays all the available commands.  The commands are
      displayed in search-order.  That is, if you give a partial name
      the first command that matches that name in this list is the one
      executed.  Generally, you should specify enough of a command so that
      it is completely unique.

   QUIT
   EXIT
   RETURN [n]

      quit my SHELL (awww!).  End, El-Zappo, Kapow. Done, Finis.  If you
      use RETURN and are on the top source level, the shell exits with the
      optional return code.  (see RETURN below)


   SET
   SET name
   SET name string

      The first method lists all current variable settings.
      The second method lists the setting for that particular variable,
      or creates the variable if it doesn't exist (to "")
      The last method sets a variable to a string.

      see the section on special _ variables down below


   UNSrn
searching.  Yes, you can use wildcards in your '$value's.  I use the '*' to
replace any SINGLE character.  Yeah, maybe I should've used '?', but I
might fix that next version (if enough interest is generated).  For example,
"$8*4e" will match $08(any value)4e, and "$1a**ff" will match
$1a(any value)(any value)ff.  DiskSearch will return in what block and at
what hex value it found $value.

    Instead of searching for a value, you can simply dump whatever's on
blocks [start] to [end] by using a filename instead of a hex value.  Note
that DiskSearch parses the command line really stupid-like, so anything that
doesn't start with a '$' is a filename.  Again, sorry.  You can then do
whatever you like with the file produced.  If, for example, a file is
"hidden" on a disk, you can find where it starts and where it ends (using
DiskX perhaps, or searching for a $3f3/$3f2 pattern) and then use DiskSearch
to dump those blocks to a file that you can fiddle with to your heart's
content.

    [start] and [end] are optional, although if you want an [end], you HAVE
TO also supply a [start].  These are the blocks that the program will search
in/dump to a file.  Default values are [0] and [1759], the limits of normal
3 1/2" Amiga disks.  Note this program will not work with any other type of
disk drive, 5 1/4" or hard or otherwise.  Real limited, but if people want
an expanded version, I'll try to make it more "worldly."

    The usefulness of DiskSearch is only limited by your imagination.  I
used it (and originally wrote it for) looking in a disk-based game (no
helpful filenames to DIR) for where it decrements the number of lives you
had (a SUBQ.W #1, <address> command) and eliminating it.  The process went
really fast with the '*' wildcarding.

===========================================================================

    That should do it.  If you have any comments/questions/suggestions/
flames/etc., I can be reached at any of the following addresses:

Arthur Johnson Jr. -=> {uiucuxc, hoptoad, petsd}!peora!rtmvax!bilver!alj
-=-=-=-=-=-=-=-=-  -=> alj@bilver.UUCP
                   -=> PLink: DUNG
                   -=> GEnie: A.JOHNSONJR

    - or -

    Arthur Johnson Jr.
    225 Montego Bay Court
    Merritt Island, FL  32953
    (407) 277-0548

    P.S.  I apologize for the state of this documentation.  Usually I manage
to be a little more explanatory and clear, but for some reason it's harder
to tell people what a real simple program does than for a long and involved
one.  Strange but true.
    P.S.S.  Now that I have these programs out o' my hair, look for ShowFont
version 3.3 in the next couple of weeks with bug fixes and new features.
