[Avida-cvs] [avida-svn] r903 - development/documentation

brysonda at myxo.css.msu.edu brysonda at myxo.css.msu.edu
Mon Aug 28 12:45:59 PDT 2006


Author: brysonda
Date: 2006-08-28 15:45:59 -0400 (Mon, 28 Aug 2006)
New Revision: 903

Modified:
   development/documentation/environment.html
   development/documentation/inst_set.html
Log:
Update Instruction Set and Environment file documentation.

Modified: development/documentation/environment.html
===================================================================
--- development/documentation/environment.html	2006-08-28 14:52:19 UTC (rev 902)
+++ development/documentation/environment.html	2006-08-28 19:45:59 UTC (rev 903)
@@ -1,133 +1,211 @@
 <html>
-<title>The Environment File</title>
-<body
- bgcolor="#FFFFFF"
- text="#000000"
- link="#0000AA"
- alink="#0000FF"
- vlink="#000044">
+<head>
+  <title>Avida : The Environment File</title>
+</head>
+<body>
 
-<h2 align=center>The Environment File</h2>
+<div style="float: right">
+Revised 2006-08-28 DMB
+</div>
 
-<p>
-This is the setup file for the task/resource system in avida.
+<p><a href="index.html">Return to the Index</a></p>
+<hr />
 
+<div align="center">
+<h1>The Environment File</h1>
+</div>
+
 <p>
+This is the setup file for the task/resource system in Avida.
+</p>
+<p>
 Two main keywords are used in this file, RESOURCE and REACTION.  Their
 formats are:
-
+</p>
+<pre>
+  RESOURCE  name[:flow]  {name ...}
+  REACTION  name  task  [process:...]  [requisite:...]
+</pre>
 <p>
-&nbsp;&nbsp;&nbsp;RESOURCE  name[:flow]  {name ...}<br>
-&nbsp;&nbsp;&nbsp;REACTION  name  task  [process:...]  [requisite:...]
-
+Where <code>name</code> is a unique identifier.  Resources can have additional
+flow information to indicate starting amounts, inflow and outflow.  Reactions
+are further described by the task that triggers them, the processes they
+perform (including resources used and the results of using them), and
+requisites on when they can occur.
+</p>
 <p>
-Where 'name' is a unique identifier.   Resources can have additional flow
-information to indicate starting amounts, inflow and outflow.  Reactions are
-further described by
-the task that triggers them, the processes they perform (including
-resources used and the results of using them), and requisites on when
-they can occur.
-
-<p>
-All entries on a resource line are names of individual resources.
-Resources have a global quantity depleatable by all organisms.  The resource
-name "infinite" is used to refer to an undepleatable resource.  The
+All entries on a resource line are names of individual resources. Resources
+have a global quantity depleatable by all organisms.  The resource name
+<code>infinite</code> is used to refer to an undepleatable resource.  The
 following chart specifies additional descriptions for resource initialization.
+</p>
 
+
+<div align="center">
+<p>&nbsp;</p>
+<h3>Table 1: <span style="color: #004400">Resource Specifications</span></h3>
 <p>
-<p align=center><b>Table 1: <font color="#004400">Resource Specifications</font></b>
-<br>(<font color="#0000AA">blue</font> variables used for all resources
-while <font color="#AA0000">red</font> variables are only used for
+(<span style="color: #0000AA">blue</span> variables used for all resources
+while <span style="color: #AA0000">red</span> variables are only used for
 spatial resources)
-
-<table cellpadding=4 border=2>
-<tr><th>Argument <th>Description <th>Default
-<tr><td><font color="#0000AA">inflow</font>
-    <td>The number of units of the resource that enter the population over
-        the course of an update.  For a global resource this inflow
-        occurs evenly throughout the update, not all at once. For a
-        spatial resource this inflow amount is added every update
-        evenly to all grid cells in the rectangle described by the
-        points (inflowx1,inflowy1) and (inflowx2,inflowy2).
-    <td>0
-<tr><td><font color="#0000AA">outflow</font>
-    <td>The fraction of the resource that will flow out of the population
-        each update.  As with inflow, this happens continuously over the
-        course of the update for a global resource.  In the case of a
-        spatial resource the fraction is withdrawn each update from
-        each cell in the rectangle described by the points 
-        (outflowx1,outflowy1) and (outflowx2,outflowy2).
-
-    <td>0.0
-<tr><td><font color="#0000AA">initial</font>
-    <td>The initial abundance of the resource in the population at the
-        start of an experiment.  For a spatial resource the initial
-        amount is spread evenly to each cell in the world grid.
-    <td>0
-<tr><td><font color="#0000AA">geometry</font>
-    <td>The layout of the resource in space.<br>
-        <b><i>global</i></b> -- the entire pool of a resource is
-        available to all organisms<br>
-        <b><i>grid</i></b> -- organisms can only access resources in
-        their grid cell.  Resource can not flow past the edges of the
-        world grid. (resource will use spatial parameters)<br>
-        <b><i>torus</i></b> -- organisms can only access resources in
-        their grid cell.  Resource can flow to the oposite edges of the
-        world grid. (resource will use spatial parameters)
-    <td>global
-<tr><td><font color="#AA0000">inflowx1</font>
-    <td>Leftmost coordinate of the rectange where resource will flow
+</p>
+<table border="1" cellpadding="2">
+<tr>
+  <th>Argument</th>
+  <th>Description</th>
+  <th>Default</th>
+</tr>
+<tr>
+  <td style="color: #0000AA">inflow</td>
+  <td>
+    The number of units of the resource that enter the population over
+    the course of an update.  For a global resource this inflow
+    occurs evenly throughout the update, not all at once. For a
+    spatial resource this inflow amount is added every update
+    evenly to all grid cells in the rectangle described by the
+    points (inflowx1,inflowy1) and (inflowx2,inflowy2).
+  </td>
+  <td>0</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">outflow</td>
+  <td>
+    The fraction of the resource that will flow out of the population
+    each update.  As with inflow, this happens continuously over the
+    course of the update for a global resource.  In the case of a
+    spatial resource the fraction is withdrawn each update from
+    each cell in the rectangle described by the points 
+    (outflowx1,outflowy1) and (outflowx2,outflowy2).
+  </td>
+  <td>0.0</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">initial</td>
+  <td>
+    The initial abundance of the resource in the population at the
+    start of an experiment.  For a spatial resource the initial
+    amount is spread evenly to each cell in the world grid.
+  </td>
+  <td>0</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">geometry</td>
+  <td>
+    The layout of the resource in space.<br>
+    <em>global</em> -- the entire pool of a resource is
+    available to all organisms<br>
+    <em>grid</em> -- organisms can only access resources in
+    their grid cell.  Resource can not flow past the edges of the
+    world grid. (resource will use spatial parameters)<br>
+    <em>torus</em> -- organisms can only access resources in
+    their grid cell.  Resource can flow to the oposite edges of the
+    world grid. (resource will use spatial parameters)
+  </td>
+  <td>global</td>
+</tr>
+<tr>
+  <td style="color: #AA0000">inflowx1</td>
+  <td>
+    Leftmost coordinate of the rectange where resource will flow
     into world grid.
-    <td>0
-<tr><td><font color="#AA0000">inflowx2</font>
-    <td>Rightmost coordinate of the rectange where resource will flow
+  </td>
+  <td>0</td>
+</tr>
+<tr>
+  <td style="color: #AA0000">inflowx2</td>
+  <td>
+    Rightmost coordinate of the rectange where resource will flow
     into world grid.
-    <td>0
-<tr><td><font color="#AA0000">inflowy1</font>
-    <td>Topmost coordinate of the rectange where resource will flow
+  </td>
+  <td>0</td>
+</tr>
+<tr>
+  <td style="color: #AA0000">inflowy1</td>
+  <td>
+    Topmost coordinate of the rectange where resource will flow
     into world grid.
-    <td>0
-<tr><td><font color="#AA0000">inflowy2</font>
-    <td>Bottommost coordinate of the rectange where resource will flow
+  </td>
+  <td>0</td>
+</tr>
+<tr>
+  <td style="color: #AA0000">inflowy2</td>
+  <td>
+    Bottommost coordinate of the rectange where resource will flow
     into world grid.
-    <td>0
-<tr><td><font color="#AA0000">outflowx1</font>
-    <td>Leftmost coordinate of the rectange where resource will flow
+  </td>
+  <td>0</td>
+</tr>
+<tr>
+  <td style="color: #AA0000">outflowx1</td>
+  <td>
+    Leftmost coordinate of the rectange where resource will flow
     out of world grid.
-    <td>0
-<tr><td><font color="#AA0000">outflowx2</font>
-    <td>Rightmost coordinate of the rectange where resource will flow
+  </td>
+  <td>0</td>
+</tr>
+<tr>
+  <td style="color: #AA0000">outflowx2</td>
+  <td>
+    Rightmost coordinate of the rectange where resource will flow
     out of world grid.
-    <td>0
-<tr><td><font color="#AA0000">outflowy1</font>
-    <td>Topmost coordinate of the rectange where resource will flow
+  </td>
+  <td>0</td>
+</tr>
+<tr>
+  <td style="color: #AA0000">outflowy1</td>
+  <td>
+    Topmost coordinate of the rectange where resource will flow
     out of world grid.
-    <td>0
-<tr><td><font color="#AA0000">outflowy2</font>
-    <td>Bottommost coordinate of the rectange where resource will flow
+  </td>
+  <td>0</td>
+</tr>
+<tr>
+  <td style="color: #AA0000">outflowy2</td>
+  <td>
+    Bottommost coordinate of the rectange where resource will flow
     out of world grid.
-    <td>0
-<tr><td><font color="#AA0000">xdiffuse</font>
-    <td>How fast material will diffuse right <i>and</i> left.  This flow
+  </td>
+  <td>0</td>
+</tr>
+<tr>
+  <td style="color: #AA0000">xdiffuse</td>
+  <td>
+    How fast material will diffuse right <em>and</em> left.  This flow
     depends on the amount of resources in a given cell and amount in
     the cells to the right and left of it.  (0.0 - 1.0)
-    <td>1.0
-<tr><td><font color="#AA0000">xgravity</font>
-    <td>How fast material will move to the right <i>or</i> left.  This
+  </td>
+  <td>1.0</td>
+</tr>
+<tr>
+  <td style="color: #AA0000">xgravity</td>
+  <td>
+    How fast material will move to the right <em>or</em> left.  This
     movement depends only on the amount of resource in a given cell.
     (-1.0 - 1.0) 
-    <td>0
-<tr><td><font color="#AA0000">ydiffuse</font>
-    <td>How fast material will diffuse up <i>and</i> down.  This flow
+  </td>
+  <td>0</td>
+</tr>
+<tr>
+  <td style="color: #AA0000">ydiffuse</td>
+  <td>
+    How fast material will diffuse up <em>and</em> down.  This flow
     depends on the amount of resources in a given cell and amount in
     the cells above and below it.  (0.0 - 1.0)
-    <td>1.0
-<tr><td><font color="#AA0000">ygravity</font>
-    <td>How fast material will move to the up <i>or</i> down.  This
+  </td>
+  <td>1.0</td>
+</tr>
+<tr>
+  <td style="color: #AA0000">ygravity</td>
+  <td>
+    How fast material will move to the up <em>or</em> down.  This
     movement depends only on the amount of resource in a given cell.
     (-1.0 - 1.0) 
-    <td>0
+  </td>
+  <td>0</td>
+</tr>
 </table>
+<p>&nbsp;</p>
+</div>
 
 <p>
 An example of a RESOURCE statement that begins a run with a fixed amount of the
@@ -135,13 +213,15 @@
 <pre>
   RESOURCE  glucose:initial=10000
 </pre>
-
+</p>
+<p>
 If you wanted to make this into a chemostat with a 10000 equilibrium
 concentration for unused resources, you could put:
 <pre>
   RESOURCE  maltose:initial=10000:inflow=100:outflow=0.01
 </pre>
-
+</p>
+<p>
 If you want a resource that exists spatially where the resource enters
 from the top and flows towards the bottom where it exits the system,
 you could use:
@@ -150,259 +230,390 @@
   inflowx2=100:inflowy1=0:inflowy2=0:outflowx1=0:outflowx2=100:\
   outflowy1=100:outflowy2=100:ygravity=0.5
 </pre>
-
-
+</p>
+<p>
 Defining a resource with no parameters means that it will start at a zero
 quantity and have no inflow or outflow.  This is sometimes desirable if you
 want that resource to only be present as a byproduct of a reaction.
 Remember, though, that you should still have an outflow rate if its in
 a chemostat.
-
+</p>
 <p>
 Each reaction must have a task that triggers it.  Currently, eighty tasks
 have been implemented, as summarized in the following table (in approximate
 order of complexity):
+</p>
 
-<p>
-<p align=center><b>Table 2: <font color="#004400">Available Tasks</font></b>
-<table cellpadding=4 border=2>
-<tr><th>Task <th>Description
-<tr><td><font color="#0000AA">echo</font>
-    <td>This task is triggered when an organism inputs a single number and
+<div align="center">
+<p>&nbsp;</p>
+<h3>Table 2: <span style="color: #004400">Available Tasks</span></h3>
+<table border="1" cellpadding="2">
+<tr>
+  <th>Task</th>
+  <th>Description</th>
+</tr>
+<tr>
+  <td style="color: #0000AA">echo</td>
+  <td>
+    This task is triggered when an organism inputs a single number and
         outputs it without modification.
-<tr><td><font color="#0000AA">add</font>
-    <td>This task is triggered when an organism inputs two numbers, sums them
+  </td>
+</tr>
+<tr>
+  <td style="color: #0000AA">add</td>
+  <td>
+    This task is triggered when an organism inputs two numbers, sums them
         together, and outputs the result.
-<tr><td><font color="#0000AA">sub</font>
-    <td>This task is triggered when an organism inputs two numbers, subtracts
+  </td>
+</tr>
+<tr>
+  <td style="color: #0000AA">sub</td>
+  <td>
+    This task is triggered when an organism inputs two numbers, subtracts
         one from the other, and outputs the result.
-<tr><td><font color="#0000AA">not   </font>
-    <td>This task is triggered when an organism inputs a 32 bit number,
-        toggles all of the bits, and outputs the result.  This is typically
-        done either by nanding (by use of the <tt>nand</tt> instruction) the
-        sequence to itself, or negating it and subtracting one.  The latter
-        approach only works since numbers are stored in twos-complement
-        notation.
-<tr><td><font color="#0000AA">nand  </font>
-    <td>This task is triggered when two 32 bit numbers are input, the values
-        are "nanded" together in a bitwise fashion, and the result is output.
-        Nand stands for "not and".  
-        The nand operation returns a zero if and only if both inputs are one;
-        otherwise it returns a one.
-<tr><td><font color="#0000AA">and   </font>
-    <td>This task is triggered when two 32 bit numbers are input, the values
-        are "anded" together in a bitwise fashion, and the result is output.
-        The and operation returns a one if and only if both inputs are one;
-        otherwise it returns a zero.
-<tr><td><font color="#0000AA">orn   </font>
-    <td>This task is triggered when two 32 bit numbers are input, the values
-        are "orn" together in a bitwise fashion, and the result is output.
-        The orn operation stands for or-not.  It is returns true if for each
-        bit pair one input is one <i>or</i> the other one is zero.
-<tr><td><font color="#0000AA">or    </font>
-    <td>This task is triggered when two 32 bit numbers are input, the values
-        are "ored" together in a bitwise fashion, and the result is output.
-        It returns a one if either the first input <i>or</i> the second input
-        is a one, otherwise it returns a zero.
-<tr><td><font color="#0000AA">andn  </font>
-    <td>This task is triggered when two 32 bit numbers are input, the values
-        are "andn-ed" together in a bitwise fashion, and the result is output.
-        The andn operation stands for and-not.  It only returns a one if
-        for each bit pair one input is a one <i>and</i> the other input is
-        not a one.  Otherwise it returns a zero.
-<tr><td><font color="#0000AA">nor   </font>
-    <td>This task is triggered when two 32 bit numbers are input, the values
-        are "nored" together in a bitwise fashion, and the result is output.
-        The nor operation stands for not-or and returns a one only if both
-        inputs are zero.  Otherwise a zero is returned.
-<tr><td><font color="#0000AA">xor   </font>
-    <td>This task is triggered when two 32 bit numbers are input, the values
-        are "xored" together in a bitwise fashion, and the result is output.
-        The xor operation stands for "exclusive or" and returns a one
-        if one, but not both, of the inputs is a one.  Otherwise a zero is
-        returned.
-<tr><td><font color="#0000AA">equ   </font>
-    <td>This task is triggered when two 32 bit numbers are input, the values
-        are equated together in a bitwise fashion, and the result is output.
-        The equ operation stands for "equals" and will return a one if both
-        bits are identical, and a zero if they are different.
-<tr><td><font color="#0000AA">logic_3AA-<br> logic_3CP</font>
-    <td>These tasks include all 68 possible unique 3-input logic operations,
-        many of which don't have easy-to-understand human readable names.
+  </td>
+</tr>
+<tr>
+  <td style="color: #0000AA">not</td>
+  <td>
+    This task is triggered when an organism inputs a 32 bit number,
+    toggles all of the bits, and outputs the result.  This is typically
+    done either by nanding (by use of the <tt>nand</tt> instruction) the
+    sequence to itself, or negating it and subtracting one.  The latter
+    approach only works since numbers are stored in twos-complement
+    notation.
+  </td>
+</tr>
+<tr>
+  <td style="color: #0000AA">nand</td>
+  <td>
+    This task is triggered when two 32 bit numbers are input, the values
+    are 'nanded' together in a bitwise fashion, and the result is output.
+    Nand stands for "not and".  
+    The nand operation returns a zero if and only if both inputs are one;
+    otherwise it returns a one.
+  </td>
+</tr>
+<tr>
+  <td style="color: #0000AA">and</td>
+  <td>
+    This task is triggered when two 32 bit numbers are input, the values
+    are 'anded' together in a bitwise fashion, and the result is output.
+    The and operation returns a one if and only if both inputs are one;
+    otherwise it returns a zero.
+  </td>
+</tr>
+<tr>
+  <td style="color: #0000AA">orn</td>
+  <td>
+    This task is triggered when two 32 bit numbers are input, the values
+    are 'orn' together in a bitwise fashion, and the result is output.
+    The orn operation stands for or-not.  It is returns true if for each
+    bit pair one input is one <em>or</em> the other one is zero.
+  </td>
+</tr>
+<tr>
+  <td style="color: #0000AA">or</td>
+  <td>
+    This task is triggered when two 32 bit numbers are input, the values
+    are 'ored' together in a bitwise fashion, and the result is output.
+    It returns a one if either the first input <em>or</em> the second input
+    is a one, otherwise it returns a zero.
+  </td>
+</tr>
+<tr>
+  <td style="color: #0000AA">andn</td>
+  <td>
+    This task is triggered when two 32 bit numbers are input, the values
+    are 'andn-ed' together in a bitwise fashion, and the result is output.
+    The andn operation stands for and-not.  It only returns a one if
+    for each bit pair one input is a one <em>and</em> the other input is
+    not a one.  Otherwise it returns a zero.
+  </td>
+</tr>
+<tr>
+  <td style="color: #0000AA">nor</td>
+  <td>
+    This task is triggered when two 32 bit numbers are input, the values
+    are 'nored' together in a bitwise fashion, and the result is output.
+    The nor operation stands for not-or and returns a one only if both
+    inputs are zero.  Otherwise a zero is returned.
+  </td>
+</tr>
+<tr>
+  <td style="color: #0000AA">xor</td>
+  <td>
+    This task is triggered when two 32 bit numbers are input, the values
+    are 'xored' together in a bitwise fashion, and the result is output.
+    The xor operation stands for "exclusive or" and returns a one
+    if one, but not both, of the inputs is a one.  Otherwise a zero is
+    returned.
+  </td>
+</tr>
+<tr>
+  <td style="color: #0000AA">equ</td>
+  <td>
+    This task is triggered when two 32 bit numbers are input, the values
+    are equated together in a bitwise fashion, and the result is output.
+    The equ operation stands for 'equals' and will return a one if both
+    bits are identical, and a zero if they are different.
+  </td>
+</tr>
+<tr>
+  <td style="color: #0000AA">logic_3AA-<br />logic_3CP</td>
+  <td>
+    These tasks include all 68 possible unique 3-input logic operations,
+    many of which don't have easy-to-understand human readable names.
+  </td>
+</tr>
 </table>
+<p>&nbsp;</p>
+</div>
 
+
 <p>
-When describing a reaction, the "process" portion determines consumption
-of resources, their byproducts, and the resulting bonuses.  There are
-several arguments (separated by colons; example below) to detail the use of a
-resource.  Default values are in brackets:
+When describing a reaction, the <code>process</code> portion determines consumption
+of resources, their byproducts, and the resulting bonuses.  There are several
+arguments (separated by colons; example below) to detail the use of a resource. 
+Default values are in brackets:
+</p>
 
-<p>
-<p align=center><b>Table 3: <font color="#004400">Reaction Process Specifications</font></b>
-<table cellpadding=4 border=2>
-<tr><th>Argument <th>Description <th>Default
-<tr><td><font color="#0000AA">resource</font>
-    <td>The name of the resource consumed.  By default, no resource is being
-        consumed, and the 'max' limit is the amount absorbed.
-    <td>infinite
-<tr><td><font color="#0000AA">value</font>
-    <td>Multiply the value set here by the amount of the resource consumed
-        to obtain the bonus. (0.5 may be inefficient, while 5.0 is very
-        efficient.)  This allows different reactions to make use of the
-        same resource at different efficiency levels.
-    <td>1.0
-<tr><td><font color="#0000AA">type</font>
-    <td>Determines how to apply the bonus (i.e. the amount of the resource
-        absorbed times the value of this process) to change the merit of the
-        organism.<br>
-        <b>add</b>: Directly add the bonus to the current merit.<br>
-        <b>mult</b>: Multiply the current merit by the bonus (warning: if
-           the bonus is ever less than one, this will be detrimental!)<br>
-        <b>pow</b>: Multiply the current merit by 2<sup>bonus</sup>.
-           this is effectively multiplicative, but positive bonuses are
-           always beneficial, and negative bonuses are harmful.<br>
-    <td>add
-<tr><td><font color="#0000AA">max</font>
-    <td>The maximum amount of the resource consumed per occurrence.
-    <td>1.0
-<tr><td><font color="#0000AA">min</font>
-    <td>The minimum amount of resource required.  If less than this quantity
-        is available, the reaction ceases to proceed.
-    <td>0.0
-<tr><td><font color="#0000AA">frac</font>
-    <td>The maximum fraction of the available resource that can be consumed.
-    <td>1.0
-<tr><td><font color="#0000AA">product</font>
-    <td>The name of the by-product resource.  At the moment, only a single
-        by-product can be produced at a time.
-    <td>none
-<tr><td><font color="#0000AA">conversion</font>
-    <td>The conversion rate to by-product resource
-    <td>1.0
-<tr><td><font color="#0000AA">inst</font>
-    <td>The instruction that gets executed when this reaction gets preformed. If 
+<div align="center">
+<p>&nbsp;</p>
+<h3>Table 3: <span style="color: #004400">Reaction Process Specifications</span></h3>
+<table border="1" cellpadding="2">
+<tr>
+  <th>Argument</th>
+  <th>Description</th>
+  <th>Default</th>
+</tr>
+<tr>
+  <td style="color: #0000AA">resource</td>
+  <td>
+    The name of the resource consumed.  By default, no resource is being
+    consumed, and the 'max' limit is the amount absorbed.
+  </td>
+  <td>infinite</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">value</td>
+  <td>
+    Multiply the value set here by the amount of the resource consumed
+    to obtain the bonus. (0.5 may be inefficient, while 5.0 is very
+    efficient.)  This allows different reactions to make use of the
+    same resource at different efficiency levels.
+  </td>
+  <td>1.0</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">type</td>
+  <td>
+    Determines how to apply the bonus (i.e. the amount of the resource
+    absorbed times the value of this process) to change the merit of the
+    organism.
+    <br /><em>add</em>: Directly add the bonus to the current merit.
+    <br /><em>mult</em>: Multiply the current merit by the bonus (warning: if
+       the bonus is ever less than one, this will be detrimental!)
+    <br /><em>pow</em>: Multiply the current merit by 2<sup>bonus</sup>.
+       this is effectively multiplicative, but positive bonuses are
+       always beneficial, and negative bonuses are harmful.
+  </td>
+  <td>add</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">max</td>
+  <td>The maximum amount of the resource consumed per occurrence.</td>
+  <td>1.0</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">min</td>
+  <td>
+    The minimum amount of resource required.  If less than this quantity
+    is available, the reaction ceases to proceed.
+  </td>
+  <td>0.0</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">frac</td>
+  <td>The maximum fraction of the available resource that can be consumed.</td>
+  <td>1.0</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">product</td>
+  <td>
+    The name of the by-product resource.  At the moment, only a single
+    by-product can be produced at a time.
+  </td>
+  <td>none</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">conversion</td>
+  <td>The conversion rate to by-product resource</td>
+  <td>1.0</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">inst</td>
+  <td>
+    The instruction that gets executed when this reaction gets preformed. If 
     you do not want an organism to be able to have the instruction in their
     genome, you still must put it in the instruction set file, but set its weight
-    to zero. The instruction is executed at no cost to the organism. 
-    <td>none
-<tr><td><font color="#0000AA">lethal</font>
-    <td>Whether the cell dies after performing the process
-    <td>0
+    to zero. The instruction is executed at no cost to the organism.
+  </td>
+  <td>none</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">lethal</td>
+  <td>Whether the cell dies after performing the process</td>
+  <td>0</td>
+</tr>
 </table>
+<p>&nbsp;</p>
+</div>
 
+
 <p>
 If no process is given, a single associated process with all default
-settings is assumed.  If multiple process statements are given, <i>all</i> are
+settings is assumed.  If multiple process statements are given, <em>all</em> are
 acted upon when the reaction is triggered.  Assuming you were going to set
 all of the portions of process to be their default values, this portion of
 the reaction statement would appear as:
-
 <pre>
   process:resource=infinite:value=1:type=add:max=1:min=0:frac=1:product=none:conversion=1
 </pre>
-
+</p>
 <p>
 This statement has many redundancies; for example, it would indicate that the
 associated reaction should use the inifite resource, making 'frac' and 'min'
 settings irrelevant.  Likewise, since 'product' is set to none, the
 'conversion' rate is never considered.
-
+</p>
 <p>
-The "requisite" entry limits when this reaction can be triggered.  The
+The <code>requisite</code> entry limits when this reaction can be triggered.  The
 following requisites (in any combination) are possible:
+</p>
 
-<p>
-<p align=center><b>Table 4: <font color="#004400">Reaction Requisite Specifications</font></b>
-<table cellpadding=4 border=2>
-<tr><th>Argument <th>Description <th>Default
-<tr><td><font color="#0000AA">reaction</font>
-    <td>This limits this reaction from being triggered until the other
-        reaction specified here has been triggered first.  With this, the
-        user can force organisms to perform reactions in a specified order.
-    <td>none
-<tr><td><font color="#0000AA">noreaction</font>
-    <td>This limits this reaction from being triggered if the reaction
-        specified here has already been triggered.  This allows the user to
-        make mutually exclusive reactions, and force organisms to "choose"
-        their own path.
-    <td>none
-<tr><td><font color="#0000AA">min_count</font>
-    <td>This restriction requires that the task used to trigger this reaction
-        must be performed a certain number of times before the trigger will
-        actually occur.  This (along with max_count) allows the user to
-        provide different reactions depending on the number of times an
-        organism has performed a task.
-    <td>0
-<tr><td><font color="#0000AA">max_count</font>
-    <td>This restriction places a cap on the number of times a task can
-        be done and still trigger this reaction.  It allows the user to
-        limit the number of times a reaction can be done, as well as 
-        (along with min_count) provide different reactions depending on the
-        number of times an organism as performed a task.
-    <td>INT_MAX
+
+<div align="center">
+<p>&nbsp;</p>
+<h3>Table 4: <span style="color: #004400">Reaction Requisite Specifications</span></h3>
+<table border="1" cellpadding="2">
+<tr>
+  <th>Argument</th>
+  <th>Description</th>
+  <th>Default</th>
+</tr>
+<tr>
+  <td style="color: #0000AA">reaction</td>
+  <td>
+    This limits this reaction from being triggered until the other
+    reaction specified here has been triggered first.  With this, the
+    user can force organisms to perform reactions in a specified order.
+  </td>
+  <td>none</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">noreaction</td>
+  <td>
+    This limits this reaction from being triggered if the reaction
+    specified here has already been triggered.  This allows the user to
+    make mutually exclusive reactions, and force organisms to "choose"
+    their own path.
+  </td>
+  <td>none</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">min_count</td>
+  <td>
+    This restriction requires that the task used to trigger this reaction
+    must be performed a certain number of times before the trigger will
+    actually occur.  This (along with max_count) allows the user to
+    provide different reactions depending on the number of times an
+    organism has performed a task.
+  </td>
+  <td>0</td>
+</tr>
+<tr>
+  <td style="color: #0000AA">max_count</font>
+  <td>
+    This restriction places a cap on the number of times a task can
+    be done and still trigger this reaction.  It allows the user to
+    limit the number of times a reaction can be done, as well as 
+    (along with min_count) provide different reactions depending on the
+    number of times an organism as performed a task.
+  </td>
+  <td>INT_MAX</td>
+</tr>
 </table>
+<p>&nbsp;</p>
+</div>
 
 <p>
 No restrictions are present by default.  If there are multiple requisite 
 entries, only *one* of them need be satisfied in order to trigger the
 reaction.  Note though that a single requisite entry can have as many
 portions as needed.
+</p>
 
-<p>
-EXAMPLES:
+<h2>Examples</h2>
 
 <p>
 We could simulate the pre-environment system (in which no resources were
 present and task performace was rewarded with a fixed bonus) with a file
 including only lines like:
+<pre>
+  REACTION AND logic:2a process:type=mult:value=4.0   requisite:max_count=1
+  REACTION EQU logic:2h process:type=mult:value=32.0  requisite:max_count=1
+</pre>
+</p>
 
 <p>
-&nbsp;&nbsp;&nbsp;REACTION AND logic:2a process:type=mult:value=4.0   requisite:max_count=1<br>
-&nbsp;&nbsp;&nbsp;REACTION EQU logic:2h process:type=mult:value=32.0  requisite:max_count=1<br>
-
-<p>
 No RESOURCE statements need be included since only the infinite resource is
 used (by default, since we don't specify another resources' name)
 # To create an environment with two resources that are converted back and
 forth as tasks are performed, we might have:
-
+<pre>
+  RESOURCE  yummyA:initial=1000
+  RESOURCE  yummyB:initial=1000
+  REACTION  AtoB  gobbleA  process:resource=yummyA:frac=0.001:product=yummyB
+  REACTION  BtoA  gobbleB  process:resource=yummyB:frac=0.001:product=yummyA
+</pre>
+</p>
 <p>
-&nbsp;&nbsp;&nbsp;RESOURCE  yummyA:initial=1000<br>
-&nbsp;&nbsp;&nbsp;RESOURCE  yummyB:initial=1000<br>
-&nbsp;&nbsp;&nbsp;REACTION  AtoB  gobbleA  process:resource=yummyA:frac=0.001:product=yummyB<br>
-&nbsp;&nbsp;&nbsp;REACTION  BtoA  gobbleB  process:resource=yummyB:frac=0.001:product=yummyA<br>
+A value of 1.0 per reaction is default.  Obviously <code>gobbleA</code> and 
+<code>gobbleB</code> would have to be tasks described within Avida.
+</p>
 
 <p>
-A value of 1.0 per reaction is default.  Obviously "gobbleA" and "gobbleB"
-would have to be tasks described within avida.
-
-<p>
 A requisite against the other reaction being performed would prevent a
 single organism from garnering both rewards in equal measure.
-
+</p>
 <p>
-As an example, to simulate a chemostat, we might have:<br>
+As an example, to simulate a chemostat, we might have:
+<pre>
+  RESOURCE glucose:inflow=100:outflow=0.01
+</pre>
+</p>
 <p>
-&nbsp;&nbsp;&nbsp;RESOURCE glucose:inflow=100:outflow=0.01
-
-<p>
 This would create a resource called "glucose" that has a fixed inflow rate of
 10000 units where 20% flows out every update.  (Leaving a steady state of
 50,000 units if no organism-consumption occurs).
+</p>
 
 <p>
 Limitations to this system:
-<menu>
-<li>Resources are currently all global; at some point soon we need to
-    implement local resources.
-<li>Only a single resource can be required at a time, and only a single
-    by-product can be produced.
-<li>Events to affect resources have not yet been implemented.
-</menu>
+<ul>
+<li>
+  Resources are currently all global; at some point soon we need to implement
+  local resources.
+</li>
+<li>
+  Only a single resource can be required at a time, and only a single
+  by-product can be produced.
+</li>
+</ul>
 
 <p>
 The default setup is:
-
 <pre>
   REACTION  NOT  not   process:value=1.0:type=pow  requisite:max_count=1
   REACTION  NAND nand  process:value=1.0:type=pow  requisite:max_count=1
@@ -414,6 +625,7 @@
   REACTION  XOR  xor   process:value=4.0:type=pow  requisite:max_count=1
   REACTION  EQU  equ   process:value=5.0:type=pow  requisite:max_count=1
 </pre>
+</p>
 
 <p>
 This creates an environment where the organisms get a bonus for performing
@@ -421,11 +633,11 @@
 resource, the infinite resource is assumed, which is non-depeleatable.
 The max_count of one means they can only get the bonus from each reaction
 a single time.
+</p>
 
 <p>
 A similar setup that has 9 resources, one corresponding to each of the nine
 possible tasks listed above is:
-
 <pre>
   RESOURCE  resNOT:inflow=100:outflow=0.01   resNAND:inflow=100:outflow=0.01
   RESOURCE  resAND:inflow=100:outflow=0.01   resORN:inflow=100:outflow=0.01
@@ -443,7 +655,10 @@
   REACTION  XOR  xor   process:resource=resXOR:value=8.0:frac=0.0025
   REACTION  EQU  equ   process:resource=resEQU:value=16.0:frac=0.0025
 </pre>
+</p>
 
-<br><hr>
-Project hosted by:<br>
-<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=46761&type=2" width="125" height="37" border="0" alt="SourceForge.net"/></a>
+<hr />
+<p><a href="index.html">Return to the Index</a></p>
+
+</body>
+</html>

Modified: development/documentation/inst_set.html
===================================================================
--- development/documentation/inst_set.html	2006-08-28 14:52:19 UTC (rev 902)
+++ development/documentation/inst_set.html	2006-08-28 19:45:59 UTC (rev 903)
@@ -1,58 +1,89 @@
-<html> <title>The Instruction Set File</title> <body bgcolor="#FFFFFF"
- text="#000000"
- link="#0000AA"
- alink="#0000FF"
- vlink="#000044">
+<html>
+<head>
+  <title>Avida : The Instruction Set File</title>
+</head>
+<body>
 
-<h2 align=center>The Instruction Set File</h2>
+<div style="float: right">
+Revised 2006-08-28 DMB
+</div>
 
+<p><a href="index.html">Return to the Index</a></p>
+<hr />
+
+<div align="center">
+<h1>The Instruction Set File</h1>
+</div>
+
 <p>
 An instruction set file consists of a list of instructions that belong to
 that instruction set, each of which is followed by a series of numbers that
-define how that instruction should be used.  These numbers in order are:
-
+define how that instruction should be used.  The exact format is as follows:
+</p>
 <p>
-<table>
-<tr><td valign=top><b>[redundancy]</b>
-    <td>The frequency of the instruction in the set.  One instruction with
-        twice the redundancy of another with also have twice the probability
-        of being mutated to.  A redundancy of zero is allowed, and indicates
-        that injected organisms are allowed to have this instruction, but
-        it can never be mutated to.
-<tr><td valign=top><b>[cost]</b>
-    <td>The number of CPU cycles required to execute this instruction.  One
-        is the default if this value is not specified.
-<tr><td valign=top><b>[ft_cost]</b>
-    <td>The additional cost to be paid the first time this instruction is
-        executed.  This is used to lower the diversity of instructions 
-        inside an organism.  The default value here is 0.
-<tr><td valign=top><b>[prob_fail]</b>
-    <td>The probability of this instruction not working properly.  If an
-        instruction fails it will simply do nothing, but still cost the
-        CPU cycles to execute.  The defailt probability of failure is zero.
-</table>
+<code>inst-name redundancy cost ft_cost prob_fail</code>
+</p>
 
+
+<dl>
+<dt><strong>inst-name</strong></dt>
+<dd>
+  The name of the instruction to include in the described instruction set.
+</dd>
+<dt><strong>redundancy</strong></dt>
+<dd>
+  The frequency of the instruction in the set.  One instruction with
+  twice the redundancy of another with also have twice the probability
+  of being mutated to.  A redundancy of zero is allowed, and indicates
+  that injected organisms are allowed to have this instruction, but
+  it can never be mutated to.
+</dd>
+<dt><strong>cost</strong></dt>
+<dd>
+  The number of CPU cycles required to execute this instruction.  One
+  is the default if this value is not specified.
+</dd>
+<dt><strong>ft_cost</strong></dt>
+<dd>
+  The additional cost to be paid the first time this instruction is
+  executed.  This is used to lower the diversity of instructions 
+  inside an organism.  The default value here is 0.
+</dd>
+<dt><strong>prob_fail</strong></dt>
+<dd>
+  The probability of this instruction not working properly.  If an
+  instruction fails it will simply do nothing, but still cost the
+  CPU cycles to execute.  The defailt probability of failure is zero.
+</dd>
+</dl>
+
 <p>
 Normally only the first column of numbers is used in the file.
+</p>
 
-<h3>Description of Default Instruction Set</h3>
 
+<p>&nbsp;</p>
+<h2>Description of Default Instruction Set</h2>
+
 <p>
 Below are the descriptions of the instructions turned on in the file
-"inst_set.default".  The one-letter codes are assigned automatically to each
-instruction in the set, so if additional instructions are turned on, the
-letters given below may no longer correspond to the instructions they are
-presented with.  If more than 26 instructions are in a set, both lowercase
-and capital letters will be used, and then numbers.  Currently, no more that
-62 distinct instructions will be represented by unique symbols.
+<kbd>instset-classic.cfg</kbd>.  The one-letter codes are assigned
+automatically to each instruction in the set, so if additional instructions
+are turned on, the letters given below may no longer correspond to the
+instructions they are presented with.  If more than 26 instructions are in
+a set, both lowercase and capital letters will be used, and then numbers.
+Currently, no more than 62 distinct instructions will be represented by
+unique symbols.
+</p>
 <p>
 Most terminology below that may not be familiar to you has been given a
 link to a file containing its definition.
-<p>
-<b>(a - c) Nop Instructions</b><br>
+</p>
 
-The instructions <b><tt>nop-A</tt></b> (<b>a</b>), <b><tt>nop-B</tt></b>
-(<b>b</b>), and <b><tt>nop-C</tt></b> (<b>c</b>) are no-operation
+<h3>(a - c) Nop Instructions</h3>
+
+The instructions <code>nop-A</code> (<b>a</b>), <code>nop-B</code>
+(<b>b</b>), and <code>nop-C</code> (<b>c</b>) are no-operation
 instructions, and will not do
 anything when executed. They will, however, modifiy the behavior of the
 instruction preceeding it (by changing the <a href="glossary/help.CPU.html">CPU</a>
@@ -63,8 +94,7 @@
 <a href="glossary/help.Genome.html">genome</a>.
 
 
-<p>
-<b>(d) <tt>if-n-equ</tt></b><br>
+<h3>(d) <code>if-n-equ</code></h3>
 
 This instruction compares the
 <a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register to its
@@ -74,157 +104,195 @@
 present) is executed. If they are equal, that next instruction is skipped.
 
 
-<p>
-<b>(e) <tt>if-less</tt></b><br>
+<h3>(e) <code>if-less</code></h3>
 
-This instruction compares the <a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register to its <a href="glossary/help.Complement-Template.html">complement</a>. If ?BX? is the lesser of the pair, the next instruction (after a modifying <a href="glossary/help.nop-instructions.html">no-operation</a>  instruction, if one is present) is executed. If it is greater or equal, then that next instruction is skipped.
+This instruction compares the <a href="glossary/help.Nop-Register-Notation.html">?BX?</a>
+register to its <a href="glossary/help.Complement-Template.html">complement</a>. If ?BX?
+is the lesser of the pair, the next instruction (after a modifying
+<a href="glossary/help.nop-instructions.html">no-operation</a>  instruction, if one is
+present) is executed. If it is greater or equal, then that next instruction is skipped.
 
 
-<p>
-<b>(f) <tt>pop</tt></b><br>
+<h3>(f) <code>pop</code></h3>
 
-This instruction removes the top element from the active <a href="glossary/help.Stack.html">stack</a>, and places it into the <a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register.
+This instruction removes the top element from the active
+<a href="glossary/help.Stack.html">stack</a>, and places it into the
+<a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register.
 
 
-<p>
-<b>(g) <tt>push</tt></b><br>
+<h3>(g) <code>push</code></h3>
 
-This instruction reads in the contents of the <a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register, and places it as a new entry at the top of the active <a href="glossary/help.Stack.html">stack</a>. The ?BX? register itself remains unchanged.
+This instruction reads in the contents of the
+<a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register, and places it
+as a new entry at the top of the active <a href="glossary/help.Stack.html">stack</a>.
+The ?BX? register itself remains unchanged.
 
 
-<p>
-<b>(h) <tt>swap-stk</tt></b><br>
+<h3>(h) <code>swap-stk</code></h3>
 
 This instruction toggles the active <a href="glossary/help.Stack.html">stack</a>  in
 the <a href="glossary/help.CPU.html">CPU</a>. All other instructions that use a stack
 will always use the active one.
 
 
-<p>
-<b>(i) <tt>swap</tt></b><br>
+<h3>(i) <code>swap</code></h3>
 
 This instruction swaps the contents of the
 <a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register with its
 <a href="glossary/help.Complement-Template.html">complement</a>.
 
 
-<p>
-<b>(j) <tt>shift-r</tt></b><br>
+<h3>(j) <code>shift-r</code></h3>
 
-This instruction reads in the contents of the <a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register, and shifts all of the bits in that register to the right by one. In effect, it divides the value stored in the register by two, rounding down.
+This instruction reads in the contents of the
+<a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register, and shifts all
+of the bits in that register to the right by one. In effect, it divides the value
+stored in the register by two, rounding down.
 
 
-<p>
-<b>(k) <tt>shift-l</tt></b><br>
+<h3>(k) <code>shift-l</code></h3>
 
-This instruction reads in the contents of the <a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register, and shifts all of the bits in that register to the left by one, placing a zero as the new rightmost bit, and trunkating any bits beyond the 32 maximum. For values that require fewer than 32 bits, it effectively multiplies that value by two.
+This instruction reads in the contents of the
+<a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register, and shifts all
+of the bits in that register to the left by one, placing a zero as the new rightmost
+bit, and trunkating any bits beyond the 32 maximum. For values that require fewer
+than 32 bits, it effectively multiplies that value by two.
 
 
-<p>
-<b>(l) <tt>inc</tt> and (m) <tt>dec</tt></b><br>
+<h3>(l) <code>inc</code> and (m) <code>dec</code></h3>
 
-These instructions read in the contents of the <a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  <a href="glossary/help.Registers.html">register</a> and increment or decrement it by one.
+These instructions read in the contents of the
+<a href="glossary/help.Nop-Register-Notation.html">?BX?</a> 
+<a href="glossary/help.Registers.html">register</a> and increment or decrement it by
+one.
 
-<p>
-<b>(n) <tt>add</tt> and (o) <tt>sub</tt></b><br>
+<h3>(n) <code>add</code> and (o) <code>sub</code></h3>
 
-These instructions read in the contents of the BX and CX <a href="glossary/help.Registers.html">registers</a> and either sums them together or subtracts CX from BX (respectively). The result of this operation is then placed in the <a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register.
+These instructions read in the contents of the BX and CX
+<a href="glossary/help.Registers.html">registers</a> and either sums them together or
+subtracts CX from BX (respectively). The result of this operation is then placed in
+the <a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register.
 
-<p>
-<b>(p) <tt>nand</tt></b><br>
+<h3>(p) <code>nand</code></h3>
 
-This instruction reads in the contents of the BX and CX <a href="glossary/help.Registers.html">registers</a>  (each of which are 32-bit numbers) and performs a <a href="glossary/help.Bitwise.html">bitwise</a>  nand operation on them. The result of this operation is placed in the <a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register. Note that this is the only <a href="glossary/help.Logic.html">logic</a>  operation provided in the basic avida instruction set.
+This instruction reads in the contents of the BX and CX
+<a href="glossary/help.Registers.html">registers</a>  (each of which are 32-bit
+numbers) and performs a <a href="glossary/help.Bitwise.html">bitwise</a>  nand
+operation on them. The result of this operation is placed in the
+<a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  register. Note that
+this is the only <a href="glossary/help.Logic.html">logic</a>  operation provided in
+the basic avida instruction set.
 
 
-<p>
-<b>(q) <tt>IO</tt></b><br>
+<h3>(q) <code>IO</code></h3>
 
-This is the input/output instruction. It takes the contents of the <a href="glossary/help.Nop-Register-Notation.html">?BX?</a>  <a href="glossary/help.Registers.html">register</a>  and outputs it, checking it for any <a href="glossary/help.Tasks.html">tasks</a>  that may have been performed. It will then place a new <a href="glossary/help.Input-Output.html">input</a>  into ?BX?.
+This is the input/output instruction. It takes the contents of the
+<a href="glossary/help.Nop-Register-Notation.html">?BX?</a>
+<a href="glossary/help.Registers.html">register</a>  and outputs it, checking it
+for any <a href="glossary/help.Tasks.html">tasks</a>  that may have been performed.
+It will then place a new <a href="glossary/help.Input-Output.html">input</a> into ?BX?.
 
 
-<p>
-<b>(r) <tt>h-alloc</tt></b><br>
+<h3>(r) <code>h-alloc</code></h3>
 
-This instruction allocates additional <a href="glossary/help.Memory.html">memory</a>  for the organism up to the maximum it is allowed to use for its offspring.
+This instruction allocates additional <a href="glossary/help.Memory.html">memory</a>
+for the organism up to the maximum it is allowed to use for its offspring.
 
 
-<p>
-<b>(s) <tt>h-divide</tt></b><br>
+<h3>(s) <code>h-divide</code></h3>
 
-This instruction is used for an organism to divide off an finnished offspring. The original organism keeps the state of its <a href="glossary/help.Memory.html">memory</a>  up until the <a href="glossary/help.Heads.html">read-head</a>. The offspring's memory is initialized to everything between the read-head and the <a href="glossary/help.Heads.html">write-head</a>. All memory past the write-head is removed entirely.
+This instruction is used for an organism to divide off an finnished offspring. The
+original organism keeps the state of its <a href="glossary/help.Memory.html">memory</a>
+up until the <a href="glossary/help.Heads.html">read-head</a>. The offspring's memory is
+initialized to everything between the read-head and the
+<a href="glossary/help.Heads.html">write-head</a>. All memory past the write-head is
+removed entirely.
 
 
-<p>
-<b>(t) <tt>h-copy</tt></b><br>
+<h3>(t) <code>h-copy</code></h3>
 
-This instruction reads the contents of the organism's <a href="glossary/help.Memory.html">memory</a>  at the position of the <a href="glossary/help.Heads.html">read-head</a>, and copy that to the position of the <a href="glossary/help.Heads.html">write-head</a>. If a non-zero copy mutation rate is set, a test will be made based on this probability to determine if a <a href="glossary/help.Mutation.html">mutation</a>  occurs. If so, a random instruction (chosen from the full set with equal probability) will be placed at the write-head instead.
+This instruction reads the contents of the organism's
+<a href="glossary/help.Memory.html">memory</a>  at the position of the
+<a href="glossary/help.Heads.html">read-head</a>, and copy that to the position of the
+<a href="glossary/help.Heads.html">write-head</a>. If a non-zero copy mutation rate is
+set, a test will be made based on this probability to determine if a
+<a href="glossary/help.Mutation.html">mutation</a>  occurs. If so, a random instruction
+(chosen from the full set with equal probability) will be placed at the write-head
+instead.
 
 
-<p>
-<b>(u) <tt>h-search</tt></b><br>
+<h3>(u) <code>h-search</code></h3>
 
-This instruction will read in the <a href="glossary/help.Template.html">template</a>  the follows it, and find the location of a <a href="glossary/help.Complement-Template.html">complement</a>  template in the code. The BX <a href="glossary/help.Registers.html">register</a>  will be set to the distance to the complement from the current position of the <a href="glossary/help.Heads.html">instruction-pointer</a>, and the CX register will be set to the size of the template. The <a href="glossary/help.Heads.html">flow-head</a>  will also be placed at the beginning of the complement template. If no template follows, both BX and CX will be set to zero, and the flow-head will be placed on the instruction immediatly following the h-search.
+This instruction will read in the <a href="glossary/help.Template.html">template</a>
+the follows it, and find the location of a
+<a href="glossary/help.Complement-Template.html">complement</a> template in the code.
+The BX <a href="glossary/help.Registers.html">register</a> will be set to the distance
+to the complement from the current position of the
+<a href="glossary/help.Heads.html">instruction-pointer</a>, and the CX register will
+be set to the size of the template. The <a href="glossary/help.Heads.html">flow-head</a>
+will also be placed at the beginning of the complement template. If no template follows,
+both BX and CX will be set to zero, and the flow-head will be placed on the instruction
+immediatly following the h-search.
 
 
-<p>
-<b>(v) <tt>mov-head</tt></b><br>
+<h3>(v) <code>mov-head</code></h3>
 
-This instruction will cause the <a href="glossary/help.Nop-Head-Notation.html">?IP?</a>  to jump to the position in <a href="glossary/help.Memory.html">memory</a>  of the <a href="glossary/help.Heads.html">flow-head</a>.
+This instruction will cause the <a href="glossary/help.Nop-Head-Notation.html">?IP?</a>
+to jump to the position in <a href="glossary/help.Memory.html">memory</a>  of the
+<a href="glossary/help.Heads.html">flow-head</a>.
 
 
-<p>
-<b>(w) <tt>jmp-head</tt></b><br>
+<h3>(w) <code>jmp-head</code></h3>
 
 This instruction will read in the value of the CX
 <a href="glossary/help.Registers.html">register</a>, and the move the
-<a href="glossary/help.Nop-Head-Notation.html">?IP?</a>
-by that fixed amount through
+<a href="glossary/help.Nop-Head-Notation.html">?IP?</a> by that fixed amount through
 the organism's <a href="glossary/help.Memory.html">memory</a>.
 
 
-<p>
-<b>(x) <tt>get-head</tt></b><br>
+<h3>(x) <code>get-head</code></h3>
 
 This instruction will copy the position of the
 <a href="glossary/help.Nop-Head-Notation.html">?IP?</a> into the CX
 <a href="glossary/help.Registers.html">register</a>.
 
 
-<p>
-<b>(y) <tt>if-label</tt></b><br>
+<h3>(y) <code>if-label</code></h3>
 
-This instruction reads in the <a href="glossary/help.Template.html">template</a>  that follows it, and tests if its <a href="glossary/help.Complement-Template.html">complement</a>  template was the most recent series of instructions copied. If so, it executed the next instruction, otherwise it skips it. This instruction is commonly used for an organism to determine when it has finished producing its offspring.
+This instruction reads in the <a href="glossary/help.Template.html">template</a> that
+follows it, and tests if its <a href="glossary/help.Complement-Template.html">complement</a>
+template was the most recent series of instructions copied. If so, it executed the next
+instruction, otherwise it skips it. This instruction is commonly used for an organism to
+determine when it has finished producing its offspring.
 
 
-<p>
-<b>(z) <tt>set-flow</tt></b><br>
+<h3>(z) <code>set-flow</code></h3>
 
-This instruction moves the <a href="glossary/help.Heads.html">flow-head</a>  to the <a href="glossary/help.Memory.html">memory</a>  position denoted in the <a href="glossary/help.Nop-Register-Notation.html">?CX?</a>  register.
+This instruction moves the <a href="glossary/help.Heads.html">flow-head</a> to the
+<a href="glossary/help.Memory.html">memory</a>  position denoted in the
+<a href="glossary/help.Nop-Register-Notation.html">?CX?</a>  register.
 
-<p>
-<h3>Other available instructions</h3>
+<p>&nbsp;</p>
+<h2>Other available instructions</h2>
 
-<p>
-<b><tt>h-push</tt> and <tt>h-pop</tt></b><br>
+<h3><code>h-push</code> and <code>h-pop</code></h3>
 
-These instructions act siminar to <tt>push</tt> and <tt>pop</tt> above,
+These instructions act siminar to <code>push</code> and <code>pop</code> above,
 but instead of working with registers, the place the position of the 
 ?IP? on the stack, or put the ?IP? at the position taken from the stack
 (respectively).
 
-<p>
-<b><tt>inject</tt></b><br>
+<h3><code>inject</code></h3>
 
-This instruction acts similar to <tt>divide</tt>, but instead of splitting
+This instruction acts similar to <code>divide</code>, but instead of splitting
 off an offspring, it will remove the section of code between the read and
 write heads, and attempt to inject it into the neighbor that the organism
 is facing.  The template following this instruction will be used; if an
-<i>exact</i> match is found (with no extre nops in it) in the target organism,
+<em>exact</em> match is found (with no extre nops in it) in the target organism,
 the injected code will be placed immediately after that template.  Otherwise
 the command fails, and the code intended for injection is instead discarded.
 
-<p>
-<b><tt>rotate-l</tt> and <tt>rotate-r</tt></b><br>
+<h3><code>rotate-l</code> and <code>rotate-r</code></h3>
 
 These instructions rotate the facing of an organism.  If no teplate follows,
 the organism will turn one cell in the appropriate direction (left or right).
@@ -232,12 +300,10 @@
 it has made a full 360 degree turn, or else it finds an organism that
 possesses the complement template.
 
-<p>     
-<b><tt>div-asex</tt></b><br>
+<h3><code>div-asex</code></h3>
 Same as h-divide (added for symetry with the divide-sex). 
 
-<p>     
-<b><tt>div-sex</tt></b><br>
+<h3><code>div-sex</code></h3>
 Divide with recombination. After the offspring genome is created, it is not 
 immediately placed into the population. Instead, it goes into "birth chamber". 
 If there is already another genome there, they recombine. If not, it waits 
@@ -246,17 +312,16 @@
 swapped between the two genomes in the birth chamber. Then, they are both placed
 into the population. 
 
-<p>
-<b><tt>div-asex-w</tt></b><br>
+<h3><code>div-asex-w</code></h3>
 Control for the effect of sexual genomes waiting in the birth chamber. There is 
 no recombination here, but each genome must wait in the birth chamber until 
 another one arrives before they are both placed into the population. 
 
-<p>
-<b><tt>die</tt></b><br>
+<h3><code>die</code></h3>
 When executed, kills the organism, with the probability set by DIE_PROB in genesis. 
 
-<br><hr>
-Project hosted by:<br>
-<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=46761&type=2" width="125" height="37" border="0" alt="SourceForge.net"/></a>
+<hr />
+<p><a href="index.html">Return to the Index</a></p>
     
+</body>
+</html>




More information about the Avida-cvs mailing list