#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 7)."
# Contents:  MANIFEST README.T1 arg.1 arg.prj arginst.h ccarg cctierra
#   configur.h debug.h depend geneban1 geneban1/0022abn.tie
#   geneban1/0045aaa.tie geneban1/list geneban1/list4580
#   geneban1/list80 tiedat tierra.prj
# Wrapped by ray@life on Mon Nov  4 22:56:30 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'MANIFEST'\"
else
echo shar: Extracting \"'MANIFEST'\" \(1509 characters\)
sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
X   File Name		Archive #	Description
X-----------------------------------------------------------
X MANIFEST                   1	This shipping list
X Makefile                   3	
X README.T1                  1	
X README.T2                  2	
X arg.1                      1	
X arg.c                      3	
X arg.prj                    1	
X arginst.h                  1	
X bookeep.c                  5	
X ccarg                      1	
X cctierra                   1	
X configur.h                 1	
X debug.h                    1	
X declare.h                  3	
X depend                     1	
X extern.h                   4	
X extract.c                  3	
X frontend.c                 3	
X geneban1                   1	
X geneban1/0022abn.tie       1	
X geneban1/0045aaa.tie       1	
X geneban1/0072etq.tie       2	
X geneban1/0080aaa.tie       3	
X geneban1/list              1	
X geneban1/list4580          1	
X geneban1/list80            1	
X genebank.c                 6	
X genio.c                    6	
X instruct.c                 7	
X license.h                  3	
X memalloc.c                 4	
X parse.c                    4	
X portable.c                 3	
X portable.h                 3	
X prototyp.h                 4	
X queues.c                   4	
X slicers.c                  3	
X soup_in                    3	
X soup_in.h                  3	
X tiedat                     1	
X tierra.c                   5	
X tierra.h                   5	
X tierra.prj                 1	
X trand.c                    3	
X tsetup.c                   7	
END_OF_FILE
if test 1509 -ne `wc -c <'MANIFEST'`; then
    echo shar: \"'MANIFEST'\" unpacked with wrong size!
fi
# end of 'MANIFEST'
fi
if test -f 'README.T1' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README.T1'\"
else
echo shar: Extracting \"'README.T1'\" \(36165 characters\)
sed "s/^X//" >'README.T1' <<'END_OF_FILE'
X/* READMET  28-10-91  documentation for the Tierra Simulator */
X/** Tierra Simulator V3.0: Copyright (c) 1991 Thomas S. Ray **/
X
Xsccsid: @(#)READMET	1.3 10/7/91
X
XThis file contains the following sections:
X
X1)  LICENSE AGREEMENT
X2)  WHAT THIS PROGRAM IS
X3)  RELATED SOFTWARE (IMPORTANT)
X4)  QUICK START (UNIX AND DOS VERSIONS)
X5)  RUNNING TIERRA
X  5.1) Startup
X  5.2) The Assembler/Disassembler
X  5.3) The Standard Output
X  5.4) The Birth-Death Output
X  5.5) The Genebank Output
X  5.6) The Interrupt Handler
X  5.7) Using the Turbo Debugger as a Frontend
X  5.8) Restarting an Old Run
X6)  LISTING OF DISTRIBUTION FILES
X7)  SOUP_IN PARAMETERS
X8)  THE ANCESTOR & WRITING A CREATURE
X  8.1) The Ancestor
X  8.2) Writing a Creature
X9)  IF YOU WANT TO MODIFY THE SOURCE CODE
X  9.1) Creating a Frontend
X  9.2) Creating New Instruction Sets
X  9.3) Creating New Slicer Mechanisms
X  9.4) Creating a Sexual Model
X  9.5) Creating a Multi-cellular Model
X10) KNOWN BUGS
X11) IF YOU HAVE PROBLEMS
X  11.1) Problems with Installation
X  11.2) Problems Running Tierra
X
X1)  LICENSE AGREEMENT
X
X/* 
X * Tierra Simulator V3.0: Copyright (c) 1991 Thomas S. Ray
X * 
X * by Tom Ray, ray@brahms.udel.edu (the bulk of the code)
X *    Tom Uffner, tom@genie.slhs.udel.edu (rework of genebanker & assembler)
X *    Dan Pirone, cocteau@life.slhs.udel.edu (the interrupt handler)
X *    Marc Cygnus, cygnus@udel.edu (connections to the ALmond monitor)
X * 
X * This code and documentation is copyrighted and is not in the public domain.
X * All rights reserved.  This package may be freely copied and distributed
X * without fees, subject to the following restrictions:
X * 
X * - This notice may not be removed or altered.
X * 
X * - You may not try to make money by distributing the package or by using the
X *   process that the code creates.
X * 
X * - You may not prevent others from copying it freely.
X * 
X * - You may not distribute modified versions without clearly documenting your
X *   changes and notifying the principal author.
X * 
X * - The origin of this software must not be misrepresented, either by
X *   explicit claim or by omission.  Since few users ever read sources,
X *   credits must appear in the documentation.
X * 
X * - Altered versions must be plainly marked as such, and must not be
X *   misrepresented as being the original software.  Since few users ever read
X *   sources, credits must appear in the documentation.
X * 
X * - The University and the authors are not responsible for the
X *   consequences of use of this software, no matter how awful, even if they
X *   arise from flaws in it.
X * 
X * - Neither the name of the University, nor the authors of
X *   the code may be used to endorse or promote products derived from this
X *   software without specific prior written permission.
X * 
X * - The provision of support and software updates is at our discretion.
X * 
X * Please contact Tom Ray (full address below) if you have
X * questions or would like an exception to any of the above restrictions.
X * 
X * If you make changes to the code, or have suggestions for changes,
X * let us know!  If we use your suggestion, you will receive full credit
X * of course.
X * 
X * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
X * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
X * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X *
X *    Tom Ray
X *    University of Delaware
X *    School of Life & Health Sciences
X *    Newark, Delaware  19716
X *    ray@tierra.slhs.udel.edu
X *    ray@life.slhs.udel.edu
X *    ray@brahms.udel.edu
X *    302-451-2281 (FAX)
X *    302-451-2753 (Phone)
X */
X
X2)  WHAT THIS PROGRAM IS
X
X     This problem is under very active development.  The source code in the
Xftp site will probably be updated on a roughly weekly basis.  We urge you
Xto pick up the latest version frequently if you use the program.  Very
Xsignificant improvements are in the works.
X
X     The C source code creates a virtual computer and its operating system,
Xwhose architecture has been designed in such a way that the executable
Xmachine codes are evolvable.  This means that the machine code can be mutated
X(by flipping bits at random) or recombined (by swapping segments of code
Xbetween algorithms), and the resulting code remains functional enough of the
Xtime for natural (or presumably artificial) selection to be able to improve
Xthe code over time.
X
X     Along with the C source code which generates the virtual computer, we
Xprovide four programs written in the assembler code of the virtual computer.
XOne of these was written by a human and does nothing more than make copies
Xof itself in the RAM of the virtual computer.  The other three evolved from
Xthe first, and are included to illustrate the power of natural selection.
X
X     The virtual machine is an emulation of a MIMD (multiple instruction
Xstream, multiple data stream) computer.  This is a massively parallel computer
Xin which each processor is capable of executing a sequence of operations
Xdistinct from the other processors.  The parallelism is only emulated by
Xtime slicing, but there really are numerous virtual CPUs.  One CPU will be
Xcreated and assigned to each ``creature'' (self-replicating algorithm)
Xliving in the RAM of the virtual computer.  The RAM of the virtual computer
Xis known as the ``soup''.
X
X     The operating system of the virtual computer provides memory management
Xand timesharing services.  It also provides control for a variety of factors
Xthat affect the course of evolution: three kinds of mutation rates,
Xdisturbances, the allocation of CPU time to each creature, the size of the
Xsoup, etc.  In addition, the operating system provides a very elaborate
Xobservational system that keeps a record of births and deaths, sequences
Xthe code of every creature, and maintains a genebank of successful genomes.
XThe operating system also provides facilities for automating the ecological
Xanalysis, that is, for recording the kinds of interactions taking place
Xbetween creatures.
X
X     The version of the software currently being distributed is considered
Xto be a research grade implementation.  This means two things: 1) It is
Xunder very rapid development, and is not bug free.  2) We have chosen to
Xgo with modifiability and modularity over speed of execution.
X
X     If you find bugs in the code, please report them to us.  By the time
Xyou find them and report them, we may have eliminated them, and would be
Xable to provide you with a fixed version.  If not, we will be able to fix
Xthe bug, and would like to make the fix available to other users.
X
X     We have chosen modifiability over speed primarily because we know that
Xthe current version of the virtual computer is very poorly designed, except
Xwith respect to the features that make it evolvable.  Specifically, consider
Xthat one third of the present instruction set is taken up by pushing and
Xpopping from the stack; there are only two inter-register moves, ax to bx and
Xcx to dx; dx isn't used for anything; there is no I/O; and there is no
Xway of addressing a data segment (in the original version, dx was used to
Xset the template size, but that has been abandoned).
X
X     In August, 100% of the original virtual CPU code was replaced, with
Xnew code that does exactly the same thing.  However, the new code is written
Xin a generalized way that will make it trivial to alter the machine
Xarchitecture.  With the new implementation of the virtual computer, it will
Xbe possible for anyone to painlessly swap in their favorite CPU architecture
Xand instruction set, and their innovation will be seamlessly embedded within
Xthe heart of the elaborate observational software.  Knowing how bad the
Xoriginal design was, there was a temptation to fix it when the virtual computer
Xwas reworked, but the original implementation was retained for historical
Xreasons.  In spite of its shortcomings, life proliferated in the environment
Xthat it created.  Things should get interesting as we improve the
Xarchitecture.  The new organization of the code should make that easy.
X
X     The bulk of the code and documentation was written by Tom Ray, whose
Xaddress is listed at the end of this file.  Substantial contributions have
Xbeen made by Tom Uffner, tom@genie.slhs.udel.edu, who has been reworking the
Xgenebanker.  Dan Pirone, cocteau@life.slhs.udel.edu, has written the
Xinterrupt handler and is now working on a frontend for the DOS release.
XMarc Cygnus, cygnus@udel.edu, developed the ALmond monitor, a separate
Xpiece of software that displays activity in a running Tierra (see below).
X
X     The behavior of this software is described in the following publications:
X
XRay, T. S.  1991.  ``Is it alive, or is it GA?''
XProceedings of the 1991 International Conference on Genetic Algorithms,
XEds. Belew, R. K., and L. B. Booker, San Mateo, CA: Morgan Kaufmann, 527-534.
X
XRay, T. S.  1991.  ``An approach to the synthesis of life.''
XArtificial Life II, Santa Fe Institute Studies in the Sciences of
XComplexity, vol. XI, Eds. Farmer, J. D., C. Langton, S. Rasmussen, &
XC. Taylor, Redwood City, CA: Addison-Wesley, 371-408.
X
XRay, T. S.  1991.  ``Population dynamics of digital organisms.''
XArtificial Life II Video Proceedings,  Ed. C.G. Langton,
XRedwood City, CA: Addison Wesley.
X
XRay, T. S.  In Press.  ``Evolution and optimization of digital
Xorganisms.''  1990 IBM Supercomputing Competition: Large Scale
XComputing Analysis and Modeling Conference Proceedings, Ed. H. Brown,
XUniversity of Georgia Press.
X
X     This research was also reported in the August 10 issue of Science News,
Xthe August 27 issue of the New York Times in the Science Times section,
Xand the April issue of Technology Review.
X
X3)  RELATED SOFTWARE (IMPORTANT)
X
X     The Tierra simulator is the central piece of a growing set of programs.
XThe accessory programs aid in observing the results of Tierra runs.  We have
Xrushed to make the Tierra source available, however, the related software has
Xnot been placed in the ftp site yet.  We hope to have the other programs in
Xthe ftp site within the next few weeks.  When they are available, you will
Xwant to select one or both of the following:
X
X  3.1) The Beagle Explorer which graphically displays the output that Tierra
X   saves to disk.  Beagle runs only on DOS systems, and while the heart of
X   the source code is available, Beagle uses the Greenleaf DataWindows
X   interface, and that source can not be distributed (available from
X   Greenleaf Software, 16479 Dallas Parkway, Bent Tree Tower Two, Suite 570,
X   Dallas, Texas, 75248, phone: 214-248-2561).  Beagle would normally be
X   distributed in the executable form.  Beagle is currently configured only
X   for the CGA or VGA graphics modes, but can be extended on request, in time.
X   A "pre-release" version of Beagle in already in the ftp site in the
X   directory /tierra/beagle.
X
X  3.2) The ALmond Monitor which displays activity in a running Tierra
X   simulator.  ALmond runs as a simultaneous but independent process (from
X   Tierra) on the same or on a seperate machine, and establishes network socket
X   communication with Tierra.  ALmond can be attached to and detached from a
X   running Tierra simulator without interrupting the simulation.  ALmond runs
X   only on unix systems supporting X Windows.  The entire ALmond source code is
X   available.  Almond was developed and tested on Sun 3 and Sun 4 machines.  It
X   was developed under X11R4 by Marc Cygnus.
X
X4)  QUICK START (UNIX AND DOS VERSIONS)
X
X     UNIX QUICK START (for DOS see below)
X
X  4.1)  You should have a directory containing the source code and two
Xsubdirectories: tiedat and geneban1
XThe tiedat directory is where a record of births and deaths will be written
XThe geneban1 directory contains the initial genomes used to innoculate the
Xsoup, and the genebanker will save new genomes to this directory.
X
X  4.2)  You must compile the assember/disassembler, arg, and the simulator,
Xtierra.  Two executable files, ccarg and cctierra are included which
Xperform the compilation.  You may have to alter the flags for your system.
XJust type ccarg, then type cctierra to get the programs compiled.
XThere is also a Makefile include which is preferable, if it works on your
Xsystem.  If you can use the Makefile, type: make, and follow instructions.
X
X  4.3)  You must assemble the initial genomes, as binaries are not portable.
XTo do this, go into the geneban1 directory and type:
X
X../arg c 0080.gen 80 0080aaa.tie
X../arg c 0045.gen 45 0045aaa.tie
X
XThis will create the two binary files 0080.gen and 0045.gen which contain two
Xcreatures that you can use to innoculate the soup, the ancestor 0080aaa
Xand a parasite that evolved from the ancestor, 0045aaa.  You can check to
Xsee if this worked by disassembling the two genomes, by typing:
X
X../arg x 0080.gen aaa
X../arg x 0045.gen aaa
X
XThis will create the two ascii files 0080aaa and 0045aaa.  Compare them to
Xthe originals, 0080aaa.tie and 0045aaa.tie.  Before you start a run, copy
X0080.gen to 0080gen.ori and copy 0045.gen to 0045gen.ori, in order to have
Xvirgin copies for use later when you start another run.
X
Xcp 0045.gen 0045gen.ori
Xcp 0080.gen 0080gen.ori
X
X  4.4)  Go back to the source code directory and examine the file soup_in.
XThis file contains all of the parameters that control the run.  It is currently
Xset up to innoculate the soup with one cell of genotype 0080aaa, and to run
Xfor 50 million instructions in a soup of 60,000 instructions.
X
X  4.5)  Run the simulator by typing:
X           tierra
X       or: tierra &           (to run it in the background)
X       or: tierra > tieout &  (to run it in background, and save the output
X                               in a file called tieout)
X
X  4.6)  When the run is over, if you want to start a new run, you should
Xclean up the genebank, because the simulator will read in all genomes in the
Xgenebank at startup.  The best way to do this is to go into the geneban1
Xdirectory and remove all .gen and .tmp files, and then copy the backup
Xversion of the 0080.gen file:
X
Xcd geneban1
Xrm *.gen
Xrm *.tmp
Xcp 0080gen.ori 0080.gen
Xcp list80 list
X
X     DOS QUICK START (for UNIX see above)
X
X  4.1)  You should have a directory containing the source code and two
Xsubdirectories: tiedat and geneban1
XThe tiedat directory is where a record of births and deaths will be written
XThe geneban1 directory contains the initial genomes used to innoculate the
Xsoup, and the genebanker will save new genomes to this directory.
X
X  4.2)  You must compile the assember/disassembler, arg, and the simulator,
Xtierra.  We include the two Turbo C V 2.0 project files: tierra.prj and
Xarg.prj.  If you are using a Borland C++ file you will have to make your
Xown .prj file, listing the files in the .prj files that we have included.
XCompile these projects using the large memory model.  Put the executables
Xin the path.
X
X  4.3)  You must assemble the initial genomes, as binaries are not portable.
XTo do this, go into the geneban1 directory and type:
X
Xarg c 0080.gen 80 0080aaa.tie
Xarg c 0045.gen 45 0045aaa.tie
X
XThis will create the two binary files 0080.gen and 0045.gen which contain two
Xcreatures that you can use to innoculate the soup, the ancestor 0080aaa
Xand a parasite that evolved from the ancestor, 0045aaa.  You can check to
Xsee if this worked by disassembling the two genomes, by typing:
X
Xarg x 0080.gen aaa
Xarg x 0045.gen aaa
X
XThis will create the two ascii files 0080aaa and 0045aaa.  Compare them to
Xthe originals, 0080aaa.tie and 0045aaa.tie.  Before you start a run, copy
X0080.gen to 0080gen.ori and copy 0045.gen to 0045gen.ori, in order to have
Xvirgin copies for use later when you start another run.
X
Xcopy 0045.gen 0045gen.ori
Xcopy 0080.gen 0080gen.ori
X
X  4.4)  Go back to the source code directory and examine the file soup_in.
XThis file contains all of the parameters that control the run.  It is currently
Xset up to innoculate the soup with one cell of genotype 0080aaa, and to run
Xfor 50 million instructions in a soup of 60,000 instructions.  You will need
Xa text editor to do this.  If you use a regular word processor, be sure that
Xyou write the file back out as a plain ASCII text file.
X
X  4.5)  Run the simulator by typing: tierra
X
X  4.6)  When the run is over, if you want to start a new run, you should
Xclean up the genebank, because the simulator will read in all genomes in the
Xgenebank at startup.  The best way to do this is to go into the geneban1
Xdirectory and remove all .gen and .tmp files, and then copy the backup
Xversion of the 0080.gen file:
X
Xcd geneban1
Xdel *.gen
Xdel *.tmp
Xcopy 0080gen.ori 0080.gen
Xcopy list80 list
X
X5)  RUNNING TIERRA
X
X     This section has the following sub-sections:
X
X  5.1) Startup
X  5.2) The Assembler/Disassembler
X  5.3) The Standard Output
X  5.4) The Birth-Death Output
X  5.5) The Genebank Output
X  5.6) The Interrupt Handler
X  5.7) Using the Turbo Debugger as a Frontend
X  5.8) Restarting an Old Run
X
X  5.1) Startup
X
X     The first steps in running Tierra are described briefly above.  One must
Xplace the genomes in the geneban1 directory, and one must have created the
Xtiedat directory to receive the output of birth and death data.  The genome
Xfiles are supplied in the form of ASCII assembler code files.  These must
Xbe assembled into binary form to be able to execute on the virtual machine.
XIf you type arg, the assembler will give you a brief listing of assembler
Xoptions.  More complete documentation of the assembler follows:
X
X  5.2) The Assembler/Disassembler
X
X     This documentation was written by Tom Uffner.  A troff version is
Xincluded in arg.1
X
XArg(1)                   USER COMMANDS                     Arg(1)
X
XNAME
X     arg - genbank archive utility
X
XSYNOPSIS
X     arg c|r[vo12...9] afile size file1 [file2...]
X     arg x|t[vo12...9] afile [gen1 [gen2...]]
X
XDESCRIPTION
X     The arg utility is used to manipulate the genebank  archives
X     that  are used by tierra(1).  It is used to assemble or dis-
X     sasemble tierra code, list the genomes contained in a  file,
X     and also to convert between the old and new file formats.
X
X     The arg commands are:
X
X          c - create afile and add genomes in file1...filen
X
X          r - replace  in  afile  (or  add  to  end)  genomes  in
X               file1...filen
X
X          x - extract entire contents or specified  genomes  from
X               afile
X
X          t - list entire contents or specified genomes in afile
X
X     The optional modifiers are:
X
X          v - verbose output
X
X          o - old. will cause c & r to expect an old-style genome
X               file  rather  than assembly code, and x to produce
X               old format rather than disassembled  listing,  has
X               no effect on t.
X
X          1,2...9 - instruction set (defaults to INST == 1)
X
X     Where filen and afile are any legal filenames, genn is  a  3
X     character genome label, and size is a decimal integer. (Note
X     that tierra(1) expects archives to have names consisting  of
X     4 digits, and an extension of .gen, .tmp, or .mem.
X
XFILES
X     GenebankPath/nnnn.gen permanantly saved genomes
X     GenebankPath/nnnn.tmp genomes from periodic saves
X     GenebankPath/nnnn.mem genomes swapped to disk
X
XSEE ALSO
X     An Approach to the Synthesis of Life
X     tierra(1), ov(1X), beagle(1DOS), genio(3), arg(5)
X
XBUGS
X     Genome extraction and internal  search  functions  could  be
X     faster, and will be in the next release.
X
XTierra, V 3.0      Last change: 7 October 1991                  2
X
X  5.3) The Standard Output
X
X     When Tierra runs it produces output to the console that looks like this:
X
XUsing instruction set (INST) = 1
Xsizeof(Instruction)   = 1
Xsizeof(struct cell)   = 180
Xsizeof(struct mem_fr) = 16
X    60000 bytes allocated for soup
X    108000 bytes allocated for cells
X    8000 bytes allocated for mem_fr
Xtsetup: arrays allocated without error
Xbeginning of GetNewSoup
Xseed = 686777517
Xinit of soup complete
XGetNewSoup: about to read 80 instructions of cell 0
XInstExeC = 0  Generations = 0  NumCells = 1  Sun Oct  6 15:31:57 1991
X    RateMut = 4787  RateMovMut = 1280  RateFlaw = 25600
X    num_gen = 1  num_genq = 0  num_genl = 1  AverageSize = 80
Xtsetup: soup gotten
Xextract: about to save genome 0080aao = 8
XInstExeC = 1  Generations = 3  NumCells = 265  Sun Oct  6 15:33:05 1991
X    births = 828  deaths = 564  AvgPop = 256  AvgSize = 79
X    RateMut = 6615  RateMovMut = 1264  RateFlaw = 25280
X    num_gen = 2  num_genq = 151  num_genl = 152  AverageSize = 79
X    MaxGenPop = 80aaa = 150  MaxGenMem = 80aaa = 150
XInstExeC = 2  Generations = 5  NumCells = 298  Sun Oct  6 15:34:17 1991
X    births = 825  deaths = 792  AvgPop = 318  AvgSize = 80
X    RateMut = 7628  RateMovMut = 1280  RateFlaw = 25600
X    num_gen = 2  num_genq = 163  num_genl = 164  AverageSize = 80
X    MaxGenPop = 80aaa = 147  MaxGenMem = 80aaa = 147
Xextract: about to save genome 0080abq = 7
Xextract: about to save genome 0080acv = 7
Xextract: about to save genome 0080aew = 8
Xextract: about to save genome 0080adh = 6
Xextract: about to save genome 0080abk = 7
XInstExeC = 3  Generations = 8  NumCells = 338  Sun Oct  6 15:35:25 1991
X    births = 808  deaths = 768  AvgPop = 318  AvgSize = 80
X    RateMut = 8652  RateMovMut = 1280  RateFlaw = 25600
X    num_gen = 7  num_genq = 179  num_genl = 180  AverageSize = 80
X    MaxGenPop = 80aaa = 127  MaxGenMem = 80aaa = 127
Xextract: about to save genome 0081aab = 7
Xextract: about to save genome 0079aab = 7
Xextract: about to save genome 0080abp = 7
XInstExeC = 4  Generations = 10  NumCells = 259  Sun Oct  6 15:36:35 1991
X    births = 781  deaths = 860  AvgPop = 318  AvgSize = 80
X    RateMut = 6630  RateMovMut = 1280  RateFlaw = 25600
X    num_gen = 10  num_genq = 184  num_genl = 185  AverageSize = 80
X    MaxGenPop = 80aaa = 92  MaxGenMem = 80aaa = 92
Xextract: about to save genome 0080ads = 6
Xextract: about to save genome 0080aei = 6
Xextract: about to save genome 0080aab = 7
XInstExeC = 5  Generations = 13  NumCells = 315  Sun Oct  6 15:37:44 1991
X    births = 828  deaths = 772  AvgPop = 314  AvgSize = 80
X    RateMut = 8064  RateMovMut = 1280  RateFlaw = 25600
X    num_gen = 13  num_genq = 206  num_genl = 207  AverageSize = 80
X    MaxGenPop = 80aaa = 101  MaxGenMem = 80aaa = 101
X
X     The meaning of each different kind of information is described below:
X
X> Using instruction set (INST) = 1
X
X     Because we are likely to proliferate instruction sets in the near
Xfuture, the system lets us know which one it is using.
X
X> sizeof(Instruction)   = 1
X> sizeof(struct cell)   = 180
X> sizeof(struct mem_fr) = 16
X
X     The size in bytes of each of the main structures, of which the system
Xwill allocate large arrays at startup.
X
X>     60000 bytes allocated for soup
X>     108000 bytes allocated for cells
X>     8000 bytes allocated for mem_fr
X
X     The total number of bytes used for each of the three main arrays of
Xstructures.
X
X> tsetup: arrays allocated without error
X
X     Statement indicating that the arrays were allocated without error.
X
X> beginning of GetNewSoup
X
X     Statement indicating that the program is entering the GetNewSoup()
Xfunction.
X
X> seed = 686777517
X
X     A record of the seed of the random number generator used in this run.
XThis can be used to repeat the run if desired.
X
X> init of soup complete
X
X     A statement indicating that the soup has been initialized.
X
X> GetNewSoup: about to read 80 instructions of cell 0
X
X     A statement indicating that the system is innoculating the soup with
Xa creature of size 80.  There will be a comparable line for every creature
Xused in innoculating the soup at startup.
X
X> InstExeC = 0  Generations = 0  NumCells = 1  Sun Oct  6 15:31:57 1991
X>     RateMut = 4787  RateMovMut = 1280  RateFlaw = 25600
X>     num_gen = 1  num_genq = 0  num_genl = 1  AverageSize = 80
X> tsetup: soup gotten
X
X     These lines indicate the starting conditions of several variables which
Xwill be explained below.
X
X> extract: about to save genome 0080aao = 8
X
X     This line indicates that the genotype 0080aao crossed one of the
Xfrequency thresholds set in the soup_in file, SavThrMem or SavThrPop,
Xand that there were eight adult creatures of this genotype in the soup
Xat the threshold frequency.  This genotype has been assigned a permanent
Xname and is being saved to disk in the 0080.gen file in the geneban1
Xdirectory.
X
X> InstExeC = 1  Generations = 3  NumCells = 265  Sun Oct  6 15:33:05 1991
X>     births = 828  deaths = 564  AvgPop = 256  AvgSize = 79
X>     RateMut = 6615  RateMovMut = 1264  RateFlaw = 25280
X>     num_gen = 2  num_genq = 151  num_genl = 152  AverageSize = 79
X>     MaxGenPop = 80aaa = 150  MaxGenMem = 80aaa = 150
X
X     A statement of this form is printed after every million instructions
Xexecuted by the system.  See the plan() function in the bookeep.c module
Xfor more details on this.
X
X     InstExeC = 1 tells us that one million instructions have been executed
Xin this run.  Generations = 3 tells us that roughly three generations of
Xcreatures have passed during this run.  NumCells = 265 tells us that there
Xwere 265 adult cells (and a roughly equal number of daughter cells) at this
Xpoint in the run.  Sun Oct  6 15:33:05 1991 tells us the time and date at
Xthis point in the run.
X
X     births = 828 tells us that during the last million instructions, there
Xwere 828 births.  deaths = 564 tells us that during the last million
Xinstructions, there were 564 deaths.  AvgPop = 256 tells us that during the
Xlast million instructions the average population was 256 adult cells.
XAvgSize = 79 tells us that during the last million instructions the average
Xadult cell size was 79 instructions.
X
X     RateMut = 6615 tells us that the actual average background (cosmic ray)
Xmutation rate for the upcoming million instructions will be one mutation per
X6615/2 instructions exectued.  RateMovMut = 1264 tells us that the actual
Xaverage move mutation rate (copy error) for the upcoming million instructions
Xwill be one mutation for every 1264/2 instructions copied.  RateFlaw = 25280
Xtells us that the actual average flaw rate for the upcoming million
Xinstructions will be one flaw for every 25280/2 instructions exectued.  The
Xreason that these numbers represent twice the average mutation rates is that
Xthey are used to set the range of a uniform random variate determining the
Xinterval between mutations.
X
X     num_gen = 2 tells us that there are two permanent genotype names saved
Xto disk.  num_genq = 151 tells us that there are 151 distinct genotype names
Xand genomes stored in the RAM genebank.  num_genl = 152 tells us that there
Xare 152 genotype names in the list stored in RAM.  AverageSize = 79 tells us
Xthat at this time the average size of adult cells is 79 instructions.
X
X     MaxGenPop = 80aaa = 150 tells us that at this time, the genotype with
Xthe largest population is 80aaa, and that it has a population of 150 adult
Xcells.  MaxGenMem = 80aaa = 150 tells us that the genotype whose adult cells
Xoccupy the largest share of space in the soup is 80aaa, and that it has a
Xpopulation of 150 adult cells.
X
X  5.4) The Birth-Death Output
X
X     During a run, if the DiskOut parameter is non-zero, a record of births
Xand deaths will be written to disk in the path specified by OutPath, to
Xfiles whose names depend on the BrkupSiz parameter.  The format of this
Xfile is a bit cryptic, so it will be explained here.  The file has either
Xthree or four columns of output, depending on whether the GeneBnker parameter
Xis set.  Three of the columns remain the same either way: 1) elapsed time
Xsince last birth or death event in instructions, output in hexidecimal format.
X2) a `b' or a `d' depending on whether this is a birth or a death.  3) the size
Xof the creature in instructions, output in decimal format.  If the genebanker
Xis on, then there will be a fourth column containg the three letter code
Xidentifying the genotype of the creature.  Mutations in appear in the
Xbirth-death record as the death of one genotype followed by the birth of
Xanother, with an elapsed time of zero between the two events.
X
X     What makes the file cryptic, and also compact, is that columns are
Ximplied to be identical in successive records unless otherwise indicated.
XOnly the first column, elapsed time since last record, must be printed on
Xevery line, and only the first record must have all three or four columns.
XTherefore, if there is a series of successive births, only the first birth
Xrecord in the series will contain the b.  Notice that at the beginning of
Xthe file, there will generally be many lines with just one column, because
Xat the outset, all records are of births of the same size and genotype.
X
X     The record of births and deaths is read by the Beagle program, and
Xconverted into a variety of graphic displays: frequency distributions over
Xtime, phase diagrams of the interactions between pairs of sizes or genotypes,
Xor diversity and related measures over time.
X
X  5.5) The Genebank Output
X
X     If the GeneBnker parameter is set to a non-zero value, then as each
Xcreature is born, its genome will be sequenced and compared to that of its
Xmother.  If they are identical, the daughter will be assigned the same name
Xas the mother.  If they are different, the genome of the daughter will be
Xcompared to the same size genomes held in the RAM genebank.  If the daughter
Xgenome is found in the bank, it will be given the same name as the matching
Xgenome in the bank.  If the daughter genome is not found in the RAM genebank,
Xit will be compared to any same size genomes stored on the disk that are not
Xin the RAM genebank.  If the daughter genome is found in the disk genebank,
Xti will be given the same name as the matching genome in the bank.  If the
Xdaughter genome does not match the mother or any genome in either the RAM
Xor disk banks, then it will be assigned an arbitrary but unique three letter
Xcode for identification.
X
X     The genebank keeps track of the frequency of each size class and each
Xgenotype is the soup.  If a genotype exceeds one of the two genotype frequency
Xthresholds, SavThrMem or SavThrPop, its assigned name will be made permanent,
Xand it will be saved to disk.  Genotypes are grouped into individual files on
Xthe basis of size.  For example, all permanent genotypes of size 80 will be
Xstored together in binary form in a file called 0080.gen.
X
X     When the simulator comes down, or when the state of the simulator is
Xsaved periodically during a run, all genotypes present in the soup which have
Xnot been assigned permanent names will be stored in files with a .tmp
Xextension.  For example, all temporary genotype names of size 45 would be
Xstored in binary form in a file called 0045.tmp.
X
X     The binary genebank files can be examined with the assembler-disassembler
Xarg (see the relevant documentation, section 5.2 above).  Also, the Beagle
XExplorer program contains utilities for examing the structure of genomes.
XOne tool condenses the code by pulling out all instructions using templates,
Xwhich can reveal the pattern of control flow of the algorithm.  Another
Xfunction allows one genome to be used as a probe of another, to compare
Xthe similarities and differences between genomes, or to look for the presence
Xof a certain sequence in a genome.
X
X  5.6) The Interrupt Handler
X
X     When Tierra is running in the foreground it is possible to interrupt
Xit on either DOS or UNIX, usually by typing Ctrl C (^C).  When you do this
Xyou will get a brief message listing your options, which looks something
Xlike this:
X
X        TIERRA: traped a signal! # 2 @ 128519
X        TIERRA: port 4072
X        TIERRA: traped a signal! # 2 @ 128519
X        TIERRA: port 4072
XVariable | siZe info | Save soup | save & Quit |
XExit     | Continue  | {v,z,s,q,e,c}
X
X     You must now choose one of the options by typing one of the corresponding
Xletters: vzsqec.  When you type the letter, the simulator will either prompt
Xyou for more input or do the requested operation.  The six options are:
X
XVariable: allows you to alter the value of any of the variables in the
X     soup_in file at any point during a run.
X
XsiZe info: will display some information about creatures of the indicated
X     size.  This option is not currently implemented.
X
XSave soup: will cause the state of the system to be saved at this point, and
X     then continue the run.
X
Xsave & Quit: will cause the state of the system to be saved at this point, and
X     then exit from the run.
X
XExit: will exit immediately without saving the state of the system.
X
XContinue: continue the run.
X
X  5.7) Using the Turbo Debugger as a Frontend
X
X     If you run Tierra under DOS, it is best to run Tierra under the Turbo
XDebugger (386 virtual version).  This provides a very flexible and handy
Xfrontend, and does not degrade the performance of the system.  If you try
Xto run Tierra under the regular (non-virtual) debugger, you will probably
Xhave memory problems unless you run a very small soup.
X
X     I suggest the following setup for viewing the run:  Startup the
Xdebugger with the tierra program.  Then do the following:
X
XCtrl F7
XInstExe (Enter)
XCtrl F7
XNumCells (Enter)
X
X     This will place the variables InstExe and NumCells into the watch
Xwindow (2) at the bottom of the screen.  InstExe records the number of
Xinstructions executed by the system (see the structure definition in tierra.h).
XNumCells records the current number of cells.  Then type:
X
XCtrl S
XTimeSlice (Enter)
X
X     This will search for the TimeSlice routine which is the central loop
Xof the simulator.  This is the best place to watch the action.  Now place
Xthe cursor on the line: ce = cells + ci; and type F4.  This will cause the
Xsimulator to start up, and then stop execution at the current line.  Now
Xplace the cursor on the variable cells on the current line, and type:
X
XCtrl I
XCtrl R
X0, 400 (Enter)
XF5
X
X     This will allow you to inspect the cells array, which is where the
Xmost useful information is contained.  See the tierra.h module for the
Xstructure definitions.  You should adjust the size of the cells array window
Xso that it does not overlap the watch window.  You do this by using the
XScroll Lock and arrow keys.  Now type F9 to continue the run.  Whenever you
Xwant to see how things are going type Ctrl Break to stop the run.  It is
Xlikely that the CPU window will pop up.  The best thing to do when this
Xhappens is to type Alt 2 followed by Alt 3, which will cause the windows you
Xwant to see to be above the CPU window.
X
X  5.8) Restarting an Old Run
X
X     When you start Tierra by typing tierra to the prompt, you may provide
Xan optional command line argument, which is the name of the file to use as
Xinput.  This is the file that contains the startup parameters.  The default
Xfile name is soup_in.  When a simulator comes down, and periodically during
Xa run, the complete state of the machine is saved so that the simulator can
Xstart up again where it left off.  In order to do this you must have the
Xsimulator read the file soup_out on startup.  This means that you must type:
X
Xtierra soup_out
X
X     That is all there is to it.
X
X     It appears that this does not work for the version of the current
Xdistribution.  Check again later.  We have this working in the newer version
Xcurrently under development.
X
X11) IF YOU HAVE PROBLEMS
X
X  11.1) Problems with Installation
X
X     Read the installation instructions carefully.  Where we present
Xalternative methods, try them all.  If it still doesn't work, please
Xlet us know.  We would like to help people with installation, and make
Xsure that our instructions are clear.  If you are using a compiler or
Xmachine we have not tested, we may not be able to help you, but we want
Xto accomodate these additional conditions.  We would like to help you
Xfind a solution and incorporate the solution in future releases.
X
X  11.2) Problems Running Tierra
X
X     Read all of the README files.  You may find the answer there.  If a
Xproblem still persists, get a new copy of the source code out of the ftp
Xsite.  It is likely that the source code will be updated on a roughly
Xweekly basis as we continue to improve the program.  By the time you are
Xsure there is a problem, we may already have fixed it and placed a fix
Xin the ftp site.
X
X     If the problem still persists after you have tested the latest version
Xof the software, let us know about the problem.  We would like to fix it.
END_OF_FILE
if test 36165 -ne `wc -c <'README.T1'`; then
    echo shar: \"'README.T1'\" unpacked with wrong size!
fi
# end of 'README.T1'
fi
if test -f 'arg.1' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'arg.1'\"
else
echo shar: Extracting \"'arg.1'\" \(1861 characters\)
sed "s/^X//" >'arg.1' <<'END_OF_FILE'
X.TH Arg 1 "7 October 1991" "Tierra, V 3.0"
X\" @(#)arg.1	1.1	10/7/91
X\" Copyright (c) 1991 Tom Uffner
X.SH NAME
Xarg \- genbank archive utility
X.SH SYNOPSIS
X.B arg
X.BR c | r [ vo12...9 ]
X.I afile size file1
X.RI [ file2... ]
X.br
X.B arg
X.BR x | t [ vo12...9 ]
X.I afile
X.RI [ gen1
X.RI [ gen2... ]]
X.SH DESCRIPTION
XThe
X.I arg
Xutility is used to manipulate the genebank archives that are used by
X.IR tierra (1).
XIt is used to assemble or dissasemble tierra code, list the genomes contained
Xin a file, and also to convert between the old and new file formats.
X.PP
XThe
X.I arg
Xcommands are:
X.RS
X.HP
X.B c
X\- create afile and add genomes in
X.IR file 1... file n
X.HP
X.B r
X\- replace in
X.I afile
X(or add to end) genomes in
X.IR file 1... file n
X.HP
X.B x
X\- extract entire contents or specified genomes from
X.I afile
X.HP
X.B t
X\- list entire contents or specified genomes in
X.I afile
X.RE
X.PP
XThe optional modifiers are:
X.RS
X.HP
X.B v
X\- verbose output
X.HP
X.B o
X\- old. will cause c & r to expect an old-style genome file rather than
Xassembly code, and x to produce old format rather than disassembled
Xlisting, has no effect on t.
X.HP
X.B 1,2...9
X\- instruction set (defaults to INST == 1)
X.RE
X.PP
XWhere
X.IR file n
Xand
X.I afile
Xare any legal filenames,
X.IR gen n
Xis a 3 character genome label, and 
X.I size
Xis a decimal integer. (Note that 
X.IR tierra (1)
Xexpects archives to have names consisting of 4 digits, and an extension of
X.IR .gen ,
X.IR .tmp ,
Xor
X.IR .mem .
X.SH FILES
X.IR GenebankPath / nnnn .gen
X\tpermanantly saved genomes
X.br
X.IR GenebankPath / nnnn .tmp
X\tgenomes from periodic saves
X.br
X.IR GenebankPath / nnnn .mem
X\tgenomes swapped to disk
X.SH "SEE ALSO"
X.I "An Approach to the Synthesis of Life"
X.br
Xtierra\|(1), ov\|(1X), beagle\|(1DOS), genio\|(3), arg\|(5)
X.SH BUGS
XGenome extraction and internal search functions could be faster (and will
Xin the next release)
X
END_OF_FILE
if test 1861 -ne `wc -c <'arg.1'`; then
    echo shar: \"'arg.1'\" unpacked with wrong size!
fi
# end of 'arg.1'
fi
if test -f 'arg.prj' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'arg.prj'\"
else
echo shar: Extracting \"'arg.prj'\" \(149 characters\)
sed "s/^X//" >'arg.prj' <<'END_OF_FILE'
Xarg.c       (tierra.h, declare.h, portable.h, arginst.h)
Xgenio.c     (tierra.h, extern.h,  portable.h)
Xportable.c  (tierra.h, extern.h,  portable.h)
END_OF_FILE
if test 149 -ne `wc -c <'arg.prj'`; then
    echo shar: \"'arg.prj'\" unpacked with wrong size!
fi
# end of 'arg.prj'
fi
if test -f 'arginst.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'arginst.h'\"
else
echo shar: Extracting \"'arginst.h'\" \(1471 characters\)
sed "s/^X//" >'arginst.h' <<'END_OF_FILE'
X/* arginst.h  8-10-91  Artificial Life simulator setup routines */
X
X#include "license.h"
X
X/*
X#ifndef lint
Xstatic char sccsid[] = "%W%	%G%";
X#endif
X*/
X
X#ifndef ARGINST_H
X#define ARGINST_H
X
XI32s  GeneBnker = 1; /* turn genebanker on and off */
XI32s  RateMut = 2000; /* mutation rate control by raw rate, ("cosmic ray") */
XI32s  RateMovMut = 2000; /* mut rate control by raw rate, (copy mutation) */
XI32s  RateFlaw = 2000; /* flaw control by raw rate */
XI32s  NumCells = 1; /* # of creatures and gaps used to inoculate new soup */
X
X/* the aid[INSTNUM] array is created by editing the id[INSTNUM] array
X   in soup_in.h */
X
X#if INST == 1
X
Xstruct ArgInstDef  aid[INSTNUM] =
X    {{ 0x00, "nop_0" },
X     { 0x01, "nop_1" },
X     { 0x02, "or1" },
X     { 0x03, "shl" },
X     { 0x04, "zero" },
X     { 0x05, "if_cz" },
X     { 0x06, "sub_ab" },
X     { 0x07, "sub_ac" },
X     { 0x08, "inc_a" },
X     { 0x09, "inc_b" },
X     { 0x0a, "dec_c" },
X     { 0x0b, "inc_c" },
X     { 0x0c, "push_ax" },
X     { 0x0d, "push_bx" },
X     { 0x0e, "push_cx" },
X     { 0x0f, "push_dx" },
X     { 0x10, "pop_ax" },
X     { 0x11, "pop_bx" },
X     { 0x12, "pop_cx" },
X     { 0x13, "pop_dx" },
X     { 0x14, "jmp" },
X     { 0x15, "jmpb" },
X     { 0x16, "call" },
X     { 0x17, "ret" },
X     { 0x18, "mov_cd" },
X     { 0x19, "mov_ab" },
X     { 0x1a, "mov_iab" },
X     { 0x1b, "adr" },
X     { 0x1c, "adrb" },
X     { 0x1d, "adrf" },
X     { 0x1e, "mal" },
X     { 0x1f, "divide" }};
X
X#endif /* INST == 1 */
X
X#endif
END_OF_FILE
if test 1471 -ne `wc -c <'arginst.h'`; then
    echo shar: \"'arginst.h'\" unpacked with wrong size!
fi
# end of 'arginst.h'
fi
if test -f 'ccarg' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'ccarg'\"
else
echo shar: Extracting \"'ccarg'\" \(59 characters\)
sed "s/^X//" >'ccarg' <<'END_OF_FILE'
Xcc -DINST=1 arg.c genio.c frontend.c portable.c -lm -o arg
END_OF_FILE
if test 59 -ne `wc -c <'ccarg'`; then
    echo shar: \"'ccarg'\" unpacked with wrong size!
fi
chmod +x 'ccarg'
# end of 'ccarg'
fi
if test -f 'cctierra' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'cctierra'\"
else
echo shar: Extracting \"'cctierra'\" \(166 characters\)
sed "s/^X//" >'cctierra' <<'END_OF_FILE'
Xcc -DINST=1 bookeep.c extract.c frontend.c genebank.c genio.c instruct.c \
Xmemalloc.c parse.c portable.c queues.c slicers.c tierra.c trand.c tsetup.c \
X-lm -o tierra
END_OF_FILE
if test 166 -ne `wc -c <'cctierra'`; then
    echo shar: \"'cctierra'\" unpacked with wrong size!
fi
chmod +x 'cctierra'
# end of 'cctierra'
fi
if test -f 'configur.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'configur.h'\"
else
echo shar: Extracting \"'configur.h'\" \(1081 characters\)
sed "s/^X//" >'configur.h' <<'END_OF_FILE'
X/* configur.h 8-10-91  configurable parameters at compile time */
X/** Tierra Simulator V3.0: Copyright (c) 1991 Thomas S. Ray **/
X
X#include "license.h"
X
X/*
X#ifndef lint
Xstatic char     sccsid[] = "%W%     %G%";
X#endif
X*/
X
X#ifndef CONFIGUR_H
X#define CONFIGUR_H
X
X#define INSTBITNUM 5
X#define INSTNUM 32         /* INSTNUM = 2 ^ INSTBITNUM */
X#define PLOIDY 1
X
X#ifndef INST
X#define INST 1 
X#endif
X
X#define STDIO      0
X#define GREENLEAF  1
X
X#ifndef FRONTEND
X#define FRONTEND STDIO
X#endif
X
X#if INST == 1
X#define STACK_SIZE 10
X#define NUM_REGS 4
X#endif
X
X/* #define ERROR */    /* use to include error checking code */
X/* #define SOCKETS */    /* define for socket communications */
X
X/* the following definitions should be provided by the compilers,
X   except for IBM3090 which must be manually defined */
X
X/* __TURBOC__  = Turbo C for DOS */
X/* OS2_MC      = Microsoft C for OS/2 */
X/* IBM3090     = IBM 3090 the compiler will not define this, do it manually */
X/* unix        = for unix systems */
X/* __GNUC__    = gcc unix compiler */
X/* ANSI        = for ANSI environment */
X
X#endif
END_OF_FILE
if test 1081 -ne `wc -c <'configur.h'`; then
    echo shar: \"'configur.h'\" unpacked with wrong size!
fi
# end of 'configur.h'
fi
if test -f 'debug.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'debug.h'\"
else
echo shar: Extracting \"'debug.h'\" \(745 characters\)
sed "s/^X//" >'debug.h' <<'END_OF_FILE'
X/* debug.h  28-10-91  debugging functions for the tierra simulator */
X/** Tierra Simulator V3.0: Copyright (c) 1991 Thomas S. Ray **/
X/** Tierra Simulator V3.0: Copyright (c) 1990, 1991 Marc W. Cygnus **/
X
X#include "license.h"
X
X/*
Xdebug_h_sccsid: %W%	%G%
X*/
X
X#ifndef _DEBUG_H
X#define _DEBUG_H
X
X#ifndef u_long
X#include <sys/types.h>
X#ifdef __TURBOC__
X#define u_long unsigned long
X#endif
X#endif
X
X#ifdef _DBGMainModule
Xu_long		debug_state = 0L;
X#else
Xextern u_long	debug_state; 
X#endif
X
X#define	DEBUG(dbgst)	if (debug_state & (dbgst)) {
X#define	ENDDB()		}
X
X#define	DBGIOTrace	0x0001
X#define	DBGIOTrace2	0x0002
X#define	DBGReqTrace	0x0004
X#define	DBGFlowCon	0x0008
X
X#define DBGX		0x0010
X
X#define DBGD		0x0020
X
X#endif	/* add nothing past this line */
END_OF_FILE
if test 745 -ne `wc -c <'debug.h'`; then
    echo shar: \"'debug.h'\" unpacked with wrong size!
fi
# end of 'debug.h'
fi
if test -f 'depend' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'depend'\"
else
echo shar: Extracting \"'depend'\" \(1423 characters\)
sed "s/^X//" >'depend' <<'END_OF_FILE'
Xarginst.h   (none)
Xconfigur.h  (none)
Xdebug.h     (none)
Xdeclare.h   (none)
Xextern.h    (none)
Xportable.h  (none)
Xprototyp.h  (none)
Xsoup_in.h   (none)
Xtierra.h    (configur.h, portable.h, prototyp.h)
Xarg.c       (tierra.h, configur.h, portable.h, prototyp.h, arginst.h)
Xbookeep.c   (tierra.h, configur.h, portable.h, prototyp.h, extern.h)
Xextract.c   (tierra.h, configur.h, portable.h, prototyp.h, extern.h)
Xfrontend.c  (tierra.h, configur.h, portable.h, prototyp.h, extern.h)
Xgenebank.c  (tierra.h, configur.h, portable.h, prototyp.h, extern.h)
Xgenio.c     (tierra.h, configur.h, portable.h, prototyp.h, extern.h)
Xinstruct.c  (tierra.h, configur.h, portable.h, prototyp.h, extern.h)
Xmemalloc.c  (tierra.h, configur.h, portable.h, prototyp.h, extern.h)
X            #ifdef SOCKETS (allayer.h, tlayer.h)
Xparse.c     (tierra.h, configur.h, portable.h, prototyp.h, extern.h)
Xportable.c  (tierra.h, configur.h, portable.h, prototyp.h, extern.h)
X            #ifdef SOCKETS (allayer.h)
Xqueues.c    (tierra.h, configur.h, portable.h, prototyp.h, extern.h)
Xslicers.c   (tierra.h, configur.h, portable.h, prototyp.h, extern.h)
Xtierra.c    (tierra.h, configur.h, portable.h, prototyp.h, declare.h,
X                soup_in.h, debug.h)
X            #ifdef SOCKETS (alreques.h, allayer.h, tlayer.h)
Xtrand.c     (tierra.h, configur.h, portable.h, prototyp.h, extern.h)
Xtsetup.c    (tierra.h, configur.h, portable.h, prototyp.h, extern.h)
END_OF_FILE
if test 1423 -ne `wc -c <'depend'`; then
    echo shar: \"'depend'\" unpacked with wrong size!
fi
# end of 'depend'
fi
if test ! -d 'geneban1' ; then
    echo shar: Creating directory \"'geneban1'\"
    mkdir 'geneban1'
fi
if test -f 'geneban1/0022abn.tie' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'geneban1/0022abn.tie'\"
else
echo shar: Extracting \"'geneban1/0022abn.tie'\" \(909 characters\)
sed "s/^X//" >'geneban1/0022abn.tie' <<'END_OF_FILE'
X
Xformat: 1  bits: 3
Xgenotype: 0022abn  parent genotype: 0022aak
X1st_daughter:  flags: 1  inst: 146  mov_daught: 22  breed_true: 1
X2nd_daughter:  flags: 0  inst: 142  mov_daught: 22  breed_true: 1
XInstExecC: 437  InstExec: 625954  origin: 662865379  Wed Jan  2 20:16:19 1991
XMaxPropPop: 0.1231  MaxPropInst: 0.0568
Xploidy: 1  track: 0
X
Xtrack 0: prot
X          xwr
Xnop_0   ; 010 000 00   0
Xadrb    ; 010 000 1c   1
Xnop_1   ; 010 000 01   2
Xdivide  ; 010 000 1f   3
Xsub_ac  ; 010 000 07   4
Xmov_ab  ; 010 000 19   5
Xadrf    ; 010 000 1d   6
Xnop_0   ; 010 000 00   7
Xinc_a   ; 010 000 08   8
Xsub_ab  ; 010 000 06   9
Xmal     ; 010 000 1e  10
Xpush_bx ; 010 000 0d  11
Xnop_0   ; 010 000 00  12
Xmov_iab ; 010 000 1a  13
Xdec_c   ; 010 000 0a  14
Xif_cz   ; 010 000 05  15
Xret     ; 010 000 17  16
Xinc_a   ; 010 000 08  17
Xinc_b   ; 010 000 09  18
Xjmpb    ; 010 000 15  19
Xnop_1   ; 010 000 01  20
Xmov_iab ; 000 1a  21
END_OF_FILE
if test 909 -ne `wc -c <'geneban1/0022abn.tie'`; then
    echo shar: \"'geneban1/0022abn.tie'\" unpacked with wrong size!
fi
# end of 'geneban1/0022abn.tie'
fi
if test -f 'geneban1/0045aaa.tie' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'geneban1/0045aaa.tie'\"
else
echo shar: Extracting \"'geneban1/0045aaa.tie'\" \(1493 characters\)
sed "s/^X//" >'geneban1/0045aaa.tie' <<'END_OF_FILE'
X
Xformat: 1  bits: 3  EX TC TP MF MT MB
Xgenotype: 0045aaa  parent genotype: 0080aek
X1st_daughter:  flags: 0  inst: 489  mov_daught: 45  breed_true: 1
X2nd_daughter:  flags: 0  inst: 463  mov_daught: 45  breed_true: 1
XInstExe.m: 0  InstExe.i: 0  origin: 0  Thu Jan 01 -5:00:00 1970
XMaxPropPop: 0.0214  MaxPropInst: 0.0054
Xploidy: 1  track: 0
X
Xtrack 0: prot
X          xwr
Xnop_1   ; 010 000 01   0
Xnop_1   ; 010 000 01   1
Xnop_1   ; 010 000 01   2
Xnop_1   ; 010 000 01   3
Xzero    ; 010 000 04   4
Xor1     ; 010 000 02   5
Xshl     ; 010 000 03   6
Xshl     ; 010 000 03   7
Xmov_cd  ; 010 000 18   8
Xadrb    ; 010 000 1c   9
Xnop_0   ; 010 000 00  10
Xnop_0   ; 010 000 00  11
Xnop_0   ; 010 000 00  12
Xnop_0   ; 010 000 00  13
Xsub_ac  ; 010 000 07  14
Xmov_ab  ; 010 000 19  15
Xadrf    ; 010 000 1d  16
Xnop_0   ; 010 000 00  17
Xnop_0   ; 010 000 00  18
Xnop_0   ; 010 000 00  19
Xnop_1   ; 010 000 01  20
Xinc_a   ; 010 000 08  21
Xsub_ab  ; 010 000 06  22
Xnop_1   ; 010 000 01  23
Xnop_1   ; 010 000 01  24
Xnop_0   ; 010 000 00  25
Xnop_1   ; 010 000 01  26
Xmal     ; 010 000 1e  27
Xcall    ; 010 000 16  28
Xnop_0   ; 010 000 00  29
Xnop_0   ; 010 000 00  30
Xnop_1   ; 010 000 01  31
Xnop_1   ; 010 000 01  32
Xdivide  ; 010 000 1f  33
Xjmp     ; 010 000 14  34
Xnop_0   ; 010 000 00  35
Xnop_0   ; 010 000 00  36
Xnop_1   ; 010 000 01  37
Xnop_0   ; 010 000 00  38
Xif_cz   ; 010 000 05  39
Xnop_1   ; 010 000 01  40
Xnop_1   ; 010 000 01  41
Xnop_1   ; 010 000 01  42
Xnop_0   ; 010 000 00  43
Xpush_ax ; 010 000 0c  44
END_OF_FILE
if test 1493 -ne `wc -c <'geneban1/0045aaa.tie'`; then
    echo shar: \"'geneban1/0045aaa.tie'\" unpacked with wrong size!
fi
# end of 'geneban1/0045aaa.tie'
fi
if test -f 'geneban1/list' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'geneban1/list'\"
else
echo shar: Extracting \"'geneban1/list'\" \(84 characters\)
sed "s/^X//" >'geneban1/list' <<'END_OF_FILE'
XNumSizes: 1  num_gentypes: 1  Sun Dec 30 18:32:23 1990
X0080 1
X0080aaa 0.000 0.000 3
END_OF_FILE
if test 84 -ne `wc -c <'geneban1/list'`; then
    echo shar: \"'geneban1/list'\" unpacked with wrong size!
fi
# end of 'geneban1/list'
fi
if test -f 'geneban1/list4580' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'geneban1/list4580'\"
else
echo shar: Extracting \"'geneban1/list4580'\" \(113 characters\)
sed "s/^X//" >'geneban1/list4580' <<'END_OF_FILE'
XNumSizes: 2  num_gentypes: 2  Sun Dec 30 18:32:23 1990
X0045 1
X0080 1
X0045aaa 0.000 0.000 3
X0080aaa 0.000 0.000 3
END_OF_FILE
if test 113 -ne `wc -c <'geneban1/list4580'`; then
    echo shar: \"'geneban1/list4580'\" unpacked with wrong size!
fi
# end of 'geneban1/list4580'
fi
if test -f 'geneban1/list80' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'geneban1/list80'\"
else
echo shar: Extracting \"'geneban1/list80'\" \(84 characters\)
sed "s/^X//" >'geneban1/list80' <<'END_OF_FILE'
XNumSizes: 1  num_gentypes: 1  Sun Dec 30 18:32:23 1990
X0080 1
X0080aaa 0.000 0.000 3
END_OF_FILE
if test 84 -ne `wc -c <'geneban1/list80'`; then
    echo shar: \"'geneban1/list80'\" unpacked with wrong size!
fi
# end of 'geneban1/list80'
fi
if test ! -d 'tiedat' ; then
    echo shar: Creating directory \"'tiedat'\"
    mkdir 'tiedat'
fi
if test -f 'tierra.prj' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'tierra.prj'\"
else
echo shar: Extracting \"'tierra.prj'\" \(834 characters\)
sed "s/^X//" >'tierra.prj' <<'END_OF_FILE'
Xbookeep.c   (tierra.h, prototyp.h, extern.h,  portable.h)
Xextract.c   (tierra.h, prototyp.h, extern.h,  portable.h)
Xfrontend.c  (tierra.h, prototyp.h, extern.h,  portable.h)
Xgenebank.c  (tierra.h, prototyp.h, extern.h,  portable.h)
Xgenio.c     (tierra.h, prototyp.h, extern.h,  portable.h, arginst.h)
Xinstruct.c  (tierra.h, prototyp.h, extern.h,  portable.h)
Xmemalloc.c  (tierra.h, prototyp.h, extern.h,  portable.h)
Xparse.c     (tierra.h, prototyp.h, extern.h,  portable.h)
Xportable.c  (tierra.h, prototyp.h, extern.h,  portable.h)
Xqueues.c    (tierra.h, prototyp.h, extern.h,  portable.h)
Xslicers.c   (tierra.h, prototyp.h, extern.h,  portable.h)
Xtierra.c    (tierra.h, prototyp.h, declare.h, portable.h, soup_in.h)
Xtrand.c     (tierra.h, prototyp.h, extern.h,  portable.h)
Xtsetup.c    (tierra.h, prototyp.h, extern.h,  portable.h)
END_OF_FILE
if test 834 -ne `wc -c <'tierra.prj'`; then
    echo shar: \"'tierra.prj'\" unpacked with wrong size!
fi
# end of 'tierra.prj'
fi
echo shar: End of archive 1 \(of 7\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 6 7 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 7 archives.
    echo "Please see the README file(s) 
    for detailed instructions"
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
