PDSOFT 93'
                            How to use "fishTank"
                               * fishTank.doc *
                               --************--
       
       
            This document explains how to  use  the  fishTank program to
       simulate an aquarium.  Additional  instructions  on how to expand
       the program's capabilities  can  be  found  in "makeFish.doc" and
       "makeTanks.doc".
       
       
                              * about fishTank *
                              --**************--
       
       
           "FishTank" is a program that  simulates  an aquarium. It was
       written entirely  in  object-oriented  JForth  (version 2.0). The
       intent of the program  is  to  provide  a  visually  pleasing and
       relatively  accurate  simulation  of  tropical  fish  in  a  home
       aquarium. While the behavior of  tropical  fish is very much more
       complex than the behavior  displayed  by my simulated fish, their
       survival characteristics are at  least  similar. "FishTank" could
       be used as a humane way of  testing  out  various combinations of
       fish and water conditions by those  planning (or just daydreaming
       about) a real aquarium.
          This program makes  extensive  use  of  the  Amiga's animation
       system. The screen is a double-buffered  HAM-mode screen, and the
       fish are  all  "AnimObs".  Although  I  probably  do  not use the
       AnimObs to their fullest  advantage,  they  do work in a reliable
       and consistent manner.
       
       
                                * setting up *
                                --**********--
       
       
            Before you do anything else,  you  will need to "de-arc" the
       program and all it's files.  I  will  assume  that  you have used
       "zoo" on the archive  already  (after  all  you're  reading this,
       aren't you ?), but  you  may  have  to  repeat  this step because
       "fishTank" uses a directory structure that needs to be duplicated
       exactly as it was when I zoo'ed  the  files  together. This means
       you will have to use zoo with the "//" option. Try this:
                 zoo x// fishTank.zoo
            Read the documentation that comes  with zoo if you need help
       with this.
       
       *** IMPORTANT  ***  You  will  have  to  name  the  disk that the
       fishTank files are  on  "fish"  or  it  will  not run. If you are
       installing fishTank on  a  hard  disk  you  will  have to "assign
       fish:" to the partition and directory that you put fishTank on.


                                    Page 1
                             How to use "fishTank"

            You can make as many copies of  "fishTank"  as you want, and
       give them away to anybody you  choose  to,  by any means you have
       available to you,  but  please  remember  to  keep  all the files
       together (that includes this  "read.me"  file,  and all the other
       documentation files), and  to  name  the  copies  "fish". You are
       expressly forbidden to sell  or  otherwise  make  money from this
       program.
       
           I am also requesting that  you  complete  the questionnaire I
       have included with  this  program  (it's  called "write.me"), and
       send it back to me either  by  ordinary  (paper  in  an envelope)
       mail, or by CompuServe. You can  find  my  address and CompuServe
       user ID number at the end of this document. This should only take
       a few minutes of your time, and I really would appreciate it very
       much.
       
       
           "FishTank" requires an Amiga  (1000,  500, 2000, 2500 ,etc.)
       with Workbench 1.2 or 1.3 and one megabyte of memory. This is not
       to say that the program may not run  on systems with less memory,
       however, I have experienced some problems running it in 512k, and
       have not tested it on systems with between 512k and one megabyte.
       I would recommend not multi-tasking fishTank with other programs 
       that are graphics-  or  sound-intensive  or  otherwise  use large
       amounts of chip memory.
       
            You will need  the  ARP  library,  version  1.3  to run this
       program. It is easy to install  in  your  "libs" directory and is
       available anywhere you find public-domain Amiga software.
       
            You should also make sure you have  the correct font for the
       menus I use. If you have "Times  15"  on  your Workbench you need
       not worry about doing this. If not, and if you have Workbench1.3,
       you will find this  font  on  your  "Extras"  disk,  so  type the
       following line in from your CLI or Shell:
                       ASSIGN fonts: "Extras 1.3:fonts"
       This will tell the  system  to  look  for  all  the  fonts on the
       "Extras 1.3:" disk in its  "fonts"  directory. If you want to run
       another program that uses Workbench fonts after you are done with
       the fishTank you will need to type the following:
                            ASSIGN fonts: sys:fonts
       This will get you back to the fonts on your Workbench disk.
            Don't be too upset if you don't have have this font or can't
       find a copy of it. The fishTank  will  still run normally without
       it, its menus will just not be as good looking.
       
       
            Now that you  have  a  disk  called  "fish:"  with  all  the
       fishTank  files  on  it,  you  can  run  the  program  by  either

                                    Page 2


                             How to use "fishTank"

       double-clicking on the "goFish"  icon,  or typing "run goFish" in
       your CLI or Shell. I would  recommend copying the program and all
       its  files  to  a  floppy-sized  "rad:"  disk  if  you  have  one
       available, as this will make the fishTank load much faster.
       
            You should  now  be  looking  at  a  screen  with  the  word
       "LOADING" written at  the  top.  Depending  on  weather  you  are
       working from a floppy or a ram disk, you could be looking at this
       for a while. You won't be able to 'drag' this screen, and I would
       strongly recommend not doing  anything  else  on your Amiga until
       this screen goes away.
            Once the program is done  loading,  you  will see three fish
       swimming around in an empty fishtank,  with  some numbers written
       on the title bar. If you press  the  right  mouse button you will
       see the menus. I will now  explain  the menus and menu selections
       in the order in which they appear.
       
       
                                    SYSTEM
                              ------------------
            The  system  menu  contains  items   that  affect  the  tank
       conditions, give general  information,  or  stop the program. The
       items in this menu are as follow:
       
                 Temperature
               ---------------
                 This allows you to change the water  temperature of the
       fishTank. When you select this option  a requester will appear in
       the fishtank. Click on the long, black rectangle at the bottom of
       the requester and a  blue  button  will  appear.  Move the button
       around by either clicking on the  rectangle  in the direction you
       want the temperature to change,  or  click  on  the button itself
       and drag it around in the rectangle. Once  you have the button in
       the position you want it in,  click  on the word "Update". If you
       want the temperature to  go  back  to  what it was before you saw
       this requester, click on the  word  "Cancel". Most of the fish in
       this tank like the  temperature  to  be  about 26 degrees Celsius
       (which is about 79 degrees Fahrenheit).  If the fish that were in
       the  tank  before  you  changed  the  temperature  have  suddenly
       disappeared, it means that the  change  in temperature has killed
       them. Check the "fishes" menu  to  see  which fish you can put in
       the tank now.
       
                 pH
               ------
                 This lets you change  the  acidity  of  the  water. The
       requester works in much  the  same  manner  as  the "temperature"
       requester. Most fish like the pH to be pretty close to 7.0, but I
       have included fish that will thrive in more acidic water (a lower
       pH), and more alkaline water (a higher pH).

                                   Page 3


                            How to use "fishTank"
                 Hardness
               ------------
                 The hardness option  lets  you  change  the  amount  of
       dissolved calcium  in  the  water.  Most  water has at least some
       calcium in it. A hardness of  about  200 ppm will support most of
       the fish I've included.
       
                 About
               ---------
                 This selection will tell you my  name  and  address. If
       you have any questions, comments,  or are interested in my source
       code, you can write to me at the address on this requester. Click
       on "Resume" to get rid of this requester.
       
                 Bibliography
               ----------------
                 If you select this you  will  see  the  name  of a book
       about fish that I used as reference when writing this program. If
       you click on "next", the name of another book will appear. If you
       get tired of reading these  entries  click on "resume" to go back
       to your fish.
       
                Load Tank
               -------------
                 This selection will let you  load  a  new tank into the
       background. It is mainly for  use  with tanks that you have drawn
       yourself. For more about this  read  "makeTanks.doc".  It is very
       important that the file you select  from this file requester is a
       320 by 200 HAM-mode IFF-picture file. Don't select any files that
       you are not sure of with this requester.
       
                 Load Fish
               -------------
                 You can use this menu selection to  load in a fish that
       you have drawn yourself. If the water  conditions are not correct
       for this fish it will still be  added  to  the "fishes" menu. See
       "makeFish.doc" for complete details  on making  your own fish. It
       is absolutely vital that any file you select with the "load fish"
       file requester is a genuine  ".ascii"  fish  file (one that meets
       all the specifications listed  in  "makeFish.doc"). If you try to
       load any other type of file with this requester the fishTank will
       "hang-up", causing you to have  to  reboot your machine. Once you
       have 20 fish on the  "fishes"  menu  this  menu selection will be
       "ghosted", and you will not be able to select it again.
       
                 Quit
               --------
                 If you chose this the fishTank will go away.
       

                                   Page 4

                             How to use "fishTank"


                                    FISHES
                              ------------------
       
               The "fishes" menu contains the  names  of all the fishes
       that are currently available to fishTank.  Some of the fishes may
       be "ghosted" on this menu. This  means  that the water conditions
       are not conducive to the survival of this fish. If you change the
       water conditions maybe you  will then  be able  to load this fish
       into your tank.
                 If a fish's name has a big red  dot  to the left of it,
       it means that this fish is in  the  tank  right now. To put a new
       fish in the tank, all you need to  do is move the cursor over its
       name on the menu. To remove a  fish  from the tank, just select a
       fish whose name has a dot next to it.
                 If you load your own fish  (by  selecting  "Load  Fish"
       from the "system" menu) its name will appear on this menu.
       
                 When you start up the fishTank, the following fish will
       be on the "fishes" menu:
                           platy
                           zebra
                           tetra
                           discus
                           snail
                           barb
                           oscar
                           goldfish
                           catfish
       
       
                                     TANK
                              ------------------
       
                 The tank menu will let you change the appearance of the
       tank. Not only will this make  the  background look different but
       it may affect the behavior of the fish. The "checked" item is the
       one which is currently selected. If you have loaded your own tank
       (with "Load Tank" from the  "system"  menu), the dot will be next
       to the selection that best describes your tank.
                 Tank menu selections are:
                           gravel only
                           densely planted
                           rocks, plants & driftwood
                           rocks, no plants
       
       
                                     FOOD
                              ------------------
       

                                   Page 5

                           How to use "fishTank"

                 The "food" menu lets you select  the  type of food your
       fish will receive. Different  fish  eat  different things, and if
       you don't feed a  fish  something  that  it will eat it will die.
       These are your choices:
                           flakes
                         ----------
                           "Flakes"  basically  refers   to   any   dry,
       prepared food you  would  give  to  a  fish.  Most  fish will eat
       flakes. As a  general  rule  feeding  your  fish  both  worms and
       vegetables is nutritionally equivalent to feeding them flakes.
                           worms
                         ---------
                           The "worms" selection lets you feed your fish
       small living creatures. Most  commonly  this  would mean worms or
       brine shrimp. Feeding worms  is  a  good  idea  for fish that you
       suspect are carnivorous.
                           vegetables
                         --------------
                           Some fish are herbivorous, and  feeding  them
       vegetables will make them happy (or at least well-fed).
                           guppies
                         -----------
                           "Guppies" refers to  any  small,  inexpensive
       fish that you might  want  to  feed  to  your  fish. The thing to
       remember here is that a fish  that  normally  feeds on other fish
       cannot distinguish between the fish you put in the tank for it to
       eat and the fish that you put in the  tank that you don't want it
       to eat.
       
                             * acknowledgments *
                             --***************--
       
       
           Source code is available upon request, and requires JForth2.0
       (which  is  available  from  Delta   Research).  The  code  makes
       extensive use  of  JForth's  "ODE"  (Object-oriented  Development
       Environment). I fear it may be  of  little  use to people who are
       unfamiliar  with  either  forth  or  object-oriented  programming
       techniques.
            Before I forget, I would  like  to  thank  John Friedman for
       helping  me  on   this   project   and   getting  me  started  in
       object-oriented  programming.  Without  his  help  and  support I
       probably never would have finished  "fishTank". I would also like
       to thank Tom DeFanti,  Dan  Sandin,  and  Maxine  Brown for their
       advice and for being so supportive of my ideas. I'd like to thank
       Irv Moy for the use of his Amiga 500 which convinced me that this
       program would run on systems other  than my old 1000. I know this
       list is getting long, but I would also like to thank the folks at
       Delta Research for a very well thought out language, and all that


                                    Page 6

                             How to use "fishTank"

       crisp, clear source code that  showed  me how the language really
       works, and I would  like  to  thank  all  the  helpful  people on
       CompuServe's AmigaTech forum for helping me get the information I
       needed to use the ARP fileRequester.
       
       
       You can write to me at:
                                 Harriet Lurie
                       Department of Art (Mail Code 036)
                       University of Illinois at Chicago
                                   Box 4348
                               Chicago, IL 60680
                                    U.S.A.
       
       or on CompuServe:
                                 Harriet Lurie
                                  73760,3624