****************************************************************************
* 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 easier:

DO       : presents a small menu of up to 8 CLI commands for the user to
            select
SETUP    : looks in 'S:Setup' and executes the commands it finds there
            depending on what directory you are currently in
SHUTDOWN : same as 'SETUP', but looks in 'S:Shutdown'

    I've always found that actual examples are much more useful than tons o'
prose, so this is what my 'S:Setup' file looks like:

-------------------------------- S:Setup -----------------------------------

HD:Assembly
    echo "Remember to do a 'shutdown' when you're done!"
    assign lib: HD:Lattice/lib
STOP
HD:Games/NetHack
    assign NetHack: ""
    do < * 'run nethack' 'dir save' 'dir levels' 'delete levels/bones.??' 'delete levels/bones.#?'
    assign NetHack:
STOP
HD:Games/Tetrix
    assign Tetrix: ""
    Tetrix
    assign Tetrix:
STOP
HD:Lattice
    echo "Remember to do a 'shutdown' when you're done!"
    assign lc: hd:compilers
    assign lib: lib
    assign include: include
    assign quad: vdk:
    rez > NIL: blink lc lc1 lc2
STOP

----------------------------------------------------------------------------

    The corresponding 'S:Shutdown' file looks like so:

------------------------------ S:Shutdown ----------------------------------

HD:Assembly
    assign lib:
STOP
HD:Lattice
    assign lc:
    assign lib:
    assign include:
    assign quad:
    rez > NIL: -r blink lc lc1 lc2
STOP

---------------------------------------------------------------------------

    OK, so what does it all actually mean?  Well, you've probably already
picked out the directory names (HD:Assembly, HD:Lattice, etc.).  What
'Setup' and 'Shutdown' do is find which directory you are currently CD'd to,
and then search for that directory in either 'S:Setup' or 'S:Shutdown'.  If
it is found, the two programs then begin executing the commands after that
directory name line, until the 'STOP' keyword is reached.
    Since I have a bunch o' programs on my hard drive that require custom
ASSIGN's before they can run, I decided that - instead of keeping an
executable 'setup' file in each directory - it would be nice to keep them
all in one place.  'S:Setup' and 'S:Shutdown' do that.  If you have a hard
drive, these programs might help you.  They might even be of use on a two-
drive system.

    In the 'S:Setup' file, I have an example using 'DO'.  Notice that all
commands with spaces in them are enclosed by SINGLE quotes.  I made it
single quotes so that you can use double quotes around whatever needs them,
i.e., 'dir "saved games"', or 'run "program with spaces"'.  The ' < *' is to
insure that 'DO' gets its input from the CLI.  Please include ' < *'
whenever running 'DO' from within 'S:Setup' or 'S:Shutdown', or any time
that (after running) it prints 'Do #' over and over and over again without
stopping.  That's your cue to put ' < *' before the commands (after
re-booting).

    So much for the quick programs.  'DiskSearch' is a disk searching
utility.  From CLI, type:

        DiskSearch df?: ($value | filename) [start] [end]\n");

    'df?:' refers to 'DF0:' or 'DF1:' or 'DF2:', etc.  DiskSearch will only
work with standard Amiga 3 1/2" drives, and probably not with FFS disks.

    '$value' is a hexadecimal value.  Sorry - no string searching.  DiskX
already does that, and the primary reason I wrote this program is that
DiskX won't (currently) search for hexadecimal values, or do pattern
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.
