[Avida-cvs] [Avida2-svn] r180 - in branches/brysonda: Avida2.xcode source source/cpu source/main source/support source/viewers

brysonda at myxo.css.msu.edu brysonda at myxo.css.msu.edu
Mon Jun 6 12:43:13 PDT 2005


Author: brysonda
Date: 2005-06-06 15:43:12 -0400 (Mon, 06 Jun 2005)
New Revision: 180

Added:
   branches/brysonda/source/support/genesis.smt
   branches/brysonda/source/support/inst_set.smt
   branches/brysonda/source/support/organism.smt
Modified:
   branches/brysonda/Avida2.xcode/project.pbxproj
   branches/brysonda/source/cpu/hardware_factory.cc
   branches/brysonda/source/cpu/hardware_smt.h
   branches/brysonda/source/defs.hh
   branches/brysonda/source/main/config.cc
   branches/brysonda/source/main/primitive.cc
   branches/brysonda/source/support/genesis.4stack
   branches/brysonda/source/viewers/symbol_util.cc
Log:
Fixed hardware factory to actually support loading SMT hardware.  Added SMT config files.   Organism does not replicate, though.

Modified: branches/brysonda/Avida2.xcode/project.pbxproj
===================================================================
--- branches/brysonda/Avida2.xcode/project.pbxproj	2005-06-06 14:59:29 UTC (rev 179)
+++ branches/brysonda/Avida2.xcode/project.pbxproj	2005-06-06 19:43:12 UTC (rev 180)
@@ -34,6 +34,12 @@
 				70486BA60826722F009328F0,
 				70486BA70826722F009328F0,
 				706D3158085243CD00D7DC8F,
+				706D32E90854A39800D7DC8F,
+				706D32EA0854A39900D7DC8F,
+				706D32EB0854A39900D7DC8F,
+				706D330F0854A7B900D7DC8F,
+				706D33110854A7D700D7DC8F,
+				706D33280854A90D00D7DC8F,
 			);
 			isa = PBXCopyFilesBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -174,6 +180,66 @@
 			refType = 4;
 			sourceTree = "<group>";
 		};
+		706D32E90854A39800D7DC8F = {
+			fileRef = DCC311950762539F008F7A48;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		706D32EA0854A39900D7DC8F = {
+			fileRef = DCC311970762539F008F7A48;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		706D32EB0854A39900D7DC8F = {
+			fileRef = DCC311980762539F008F7A48;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		706D330E0854A7B900D7DC8F = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			path = organism.smt;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		706D330F0854A7B900D7DC8F = {
+			fileRef = 706D330E0854A7B900D7DC8F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		706D33100854A7D700D7DC8F = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			path = genesis.smt;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		706D33110854A7D700D7DC8F = {
+			fileRef = 706D33100854A7D700D7DC8F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		706D33270854A90D00D7DC8F = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			path = inst_set.smt;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		706D33280854A90D00D7DC8F = {
+			fileRef = 706D33270854A90D00D7DC8F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
 		70CBFCE80815E7FE0078D8CC = {
 			fileEncoding = 30;
 			isa = PBXFileReference;
@@ -4213,13 +4279,16 @@
 				DCC311810762539F008F7A48,
 				DCC311820762539F008F7A48,
 				DCC311830762539F008F7A48,
+				706D33100854A7D700D7DC8F,
 				DCC311840762539F008F7A48,
 				DCC311850762539F008F7A48,
 				DCC311860762539F008F7A48,
+				706D33270854A90D00D7DC8F,
 				DCC311870762539F008F7A48,
 				DCC311890762539F008F7A48,
 				DCC3118A0762539F008F7A48,
 				DCC3118B0762539F008F7A48,
+				706D330E0854A7B900D7DC8F,
 				DCC3118C0762539F008F7A48,
 			);
 			isa = PBXGroup;

Modified: branches/brysonda/source/cpu/hardware_factory.cc
===================================================================
--- branches/brysonda/source/cpu/hardware_factory.cc	2005-06-06 14:59:29 UTC (rev 179)
+++ branches/brysonda/source/cpu/hardware_factory.cc	2005-06-06 19:43:12 UTC (rev 180)
@@ -10,6 +10,7 @@
 #include "hardware_base.hh"
 #include "hardware_cpu.hh"
 #include "hardware_4stack.hh"
+#include "hardware_smt.h"
 #include "inst_set.hh"
 #include "organism.hh"
 
@@ -29,14 +30,20 @@
   cHardwareBase * new_hardware = NULL;
 
   // If there is nothing to recycle, just create a new one.
-  if (hardware_cpu_list.GetSize() == 0) {
+  if (hardware_cpu_list.GetSize() == 0)
+  {
     new_count++;
-    if (type == HARDWARE_TYPE_CPU_ORIGINAL) {
-      new_hardware = new cHardwareCPU(in_org, inst_set);
+    switch (type)
+    {
+      case HARDWARE_TYPE_CPU_ORIGINAL:
+        new_hardware = new cHardwareCPU(in_org, inst_set);
+        break;
+      case HARDWARE_TYPE_CPU_4STACK:
+        new_hardware = new cHardware4Stack(in_org, inst_set);
+        break;
+      case HARDWARE_TYPE_CPU_SMT:
+        new_hardware = new cHardwareSMT(in_org, inst_set);
     }
-    else if (type == HARDWARE_TYPE_CPU_4STACK) {
-      new_hardware = new cHardware4Stack(in_org, inst_set);
-    }
   }
 
   // If we do have hardware to recycle, do so!

Modified: branches/brysonda/source/cpu/hardware_smt.h
===================================================================
--- branches/brysonda/source/cpu/hardware_smt.h	2005-06-06 14:59:29 UTC (rev 179)
+++ branches/brysonda/source/cpu/hardware_smt.h	2005-06-06 19:43:12 UTC (rev 180)
@@ -236,7 +236,7 @@
   cHeadMultiMem FindLabel(const cCodeLabel & in_label, int direction);
   cHeadMultiMem FindFullLabel(const cCodeLabel & in_label);
 	
-  int GetType() const { return HARDWARE_TYPE_CPU_4STACK; }
+  int GetType() const { return HARDWARE_TYPE_CPU_SMT; }
   bool InjectParasite(double mut_multiplier);
   bool InjectHost(const cCodeLabel & in_label, const cGenome & injection);
   int InjectThread(const cCodeLabel &, const cGenome &) { return -1; }

Modified: branches/brysonda/source/defs.hh
===================================================================
--- branches/brysonda/source/defs.hh	2005-06-06 14:59:29 UTC (rev 179)
+++ branches/brysonda/source/defs.hh	2005-06-06 19:43:12 UTC (rev 180)
@@ -75,9 +75,9 @@
 // the macro VERSION is defined by automake (in the file 'configure.in' in
 // the top-level directory).
 #ifndef VERSION
- #define VERSION "2.3.0"
+ #define VERSION "2.3.1"
 #endif
-#define AVIDA_VERSION VERSION
+#define AVIDA_VERSION "2.3.1 (Padawan)"
 
 #ifdef QUICK_BASE_TEST_CPU
 #define QUICK_TEST_CPU

Modified: branches/brysonda/source/main/config.cc
===================================================================
--- branches/brysonda/source/main/config.cc	2005-06-06 14:59:29 UTC (rev 179)
+++ branches/brysonda/source/main/config.cc	2005-06-06 19:43:12 UTC (rev 180)
@@ -451,7 +451,7 @@
      << "# For more information, see doc/genesis.html" << endl
      << "#############################################################################" << endl
      << endl
-     << "VERSION_ID " << AVIDA_VERSION << "   # Do not change this value."
+     << "VERSION_ID " << VERSION << "   # Do not change this value."
      << endl;
 
   // Loop through the groups, and print out all of the variables.
@@ -568,10 +568,10 @@
   }
 
   cString version_id = genesis.ReadString("VERSION_ID", "Unknown");
-  if (genesis.IsOpen() == true && version_id != AVIDA_VERSION) {
+  if (genesis.IsOpen() == true && version_id != VERSION) {
     cerr << "/  WARNING   WARNING   WARNING   WARNING   WARNING  \\" << endl
 	 << "|   Using incorrect genesis file.                   |" << endl
-	 << "|   Version needed = \"" << AVIDA_VERSION
+	 << "|   Version needed = \"" << VERSION
 	 << "\".  Version used = \"" << version_id() << "\"   |" << endl
 	 << "\\  WARNING   WARNING   WARNING   WARNING   WARNING  /" << endl
 	 << endl;
@@ -649,7 +649,7 @@
     } else if (cur_arg == "-version" || cur_arg == "-v") {
       cout << " by Charles Ofria" << endl;
       cout << " designed by Charles Ofria, Chris Adami, Travis Collier, C. Titus Brown, and Claus Wilke" << endl;
-      cout << " For more information, see: http://dllab.caltech.edu/avida/" << endl;
+      cout << " For more information, see: http://devolab.cse.msu.edu/software/avida/" << endl;
       exit(0);
     } else if (cur_arg == "-set") {
       if (arg_num + 1 == argc || arg_num + 2 == argc) {

Modified: branches/brysonda/source/main/primitive.cc
===================================================================
--- branches/brysonda/source/main/primitive.cc	2005-06-06 14:59:29 UTC (rev 179)
+++ branches/brysonda/source/main/primitive.cc	2005-06-06 19:43:12 UTC (rev 180)
@@ -75,7 +75,7 @@
   signal(SIGINT, ExitAvida);
 
   // output copyright message
-  printf( "Avida version %s\nCopyright (C) 1993-2003 California Institute of Technology.\n\n", AVIDA_VERSION );
+  printf( "Avida %s\nCopyright (C) 1993-2003 California Institute of Technology.\n\n", AVIDA_VERSION );
   printf( "Avida comes with ABSOLUTELY NO WARRANTY.\n" );
   printf( "This is free software, and you are welcome to redistribute it\nunder certain conditions. See file COPYING for details.\n\n" );
 

Modified: branches/brysonda/source/support/genesis.4stack
===================================================================
--- branches/brysonda/source/support/genesis.4stack	2005-06-06 14:59:29 UTC (rev 179)
+++ branches/brysonda/source/support/genesis.4stack	2005-06-06 19:43:12 UTC (rev 180)
@@ -3,7 +3,7 @@
 # For more information, see doc/genesis.html
 #############################################################################
 
-VERSION_ID 2.3.0		# Do not change this value!
+VERSION_ID 2.3.1		# Do not change this value!
 
 ### Architecture Variables ###
 MAX_UPDATES  -1         # Maximum updates to run simulation (-1 = no limit)
@@ -24,7 +24,7 @@
 EVENT_FILE events.cfg             # File containing list of events during run
 ANALYZE_FILE analyze.cfg          # File used for analysis mode
 ENVIRONMENT_FILE environment.cfg  # File that describes the environment
-START_CREATURE preset_organisms/organism.4stack    # Organism to seed the soup
+START_CREATURE organism.4stack    # Organism to seed the soup
 
 ### Reproduction ###
 BIRTH_METHOD 4   # 0 = Replace random organism in neighborhood

Added: branches/brysonda/source/support/genesis.smt
===================================================================
--- branches/brysonda/source/support/genesis.smt	2005-06-06 14:59:29 UTC (rev 179)
+++ branches/brysonda/source/support/genesis.smt	2005-06-06 19:43:12 UTC (rev 180)
@@ -0,0 +1,168 @@
+#############################################################################
+# This file includes all the basic run-time defines for avida.
+# For more information, see doc/genesis.html
+#############################################################################
+
+VERSION_ID 2.3.1		# Do not change this value!
+
+### Architecture Variables ###
+MAX_UPDATES  -1         # Maximum updates to run simulation (-1 = no limit)
+MAX_GENERATIONS -1      # Maximum generations to run simulation (-1 = no limit)
+END_CONDITION_MODE 0    # End run when ...
+                        # 0 = MAX_UPDATES _OR_ MAX_GENERATIONS is reached
+                        # 1 = MAX_UPDATES _AND_ MAX_GENERATIONS is reached
+WORLD-X 60              # Width of the world in Avida mode.
+WORLD-Y 60              # Height of the world in Avida mode.
+RANDOM_SEED 0           # Random number seed. (0 for based on time)
+HARDWARE_TYPE 2         # 0 = Original CPUs
+                        # 1 = New, Stack-based CPUs
+                        # 2 = Newer -- Stacks, Memory, Threading
+MAX_CPU_THREADS 1       # Number of Threads CPUs can spawn
+
+### Configuration Files ###
+DEFAULT_DIR ../work/              # Directory in which config files are found
+INST_SET inst_set.smt             # File containing instruction set
+EVENT_FILE events.cfg             # File containing list of events during run
+ANALYZE_FILE analyze.cfg          # File used for analysis mode
+ENVIRONMENT_FILE environment.cfg  # File that describes the environment
+START_CREATURE organism.smt       # Organism to seed the soup
+
+### Reproduction ###
+BIRTH_METHOD 4   # 0 = Replace random organism in neighborhood
+		  # 1 = Replace oldest organism in neighborhood
+		  # 2 = Replace largest Age/Merit in neighborhood
+		  # 3 = Place only in empty cells in neighborhood
+		  # 4 = Replace random from entire population (Mass Action)
+		  # 5 = Replace oldest in entire population (like Tierra)
+DEATH_METHOD 0    # 0 = Never die of old age.
+		  # 1 = Die when inst executed = AGE_LIMIT (with deviation)
+		  # 2 = Die when inst executed = length * AGE_LIMIT (+ dev.)
+AGE_LIMIT 5000    # Modifies DEATH_METHOD
+AGE_DEVIATION 0   # Modified DEATH_METHOD
+ALLOC_METHOD 0    # 0 = Allocated space is set to default instruction.
+                  # 1 = Set to section of dead genome (Necrophilia)
+                  # 2 = Allocated space is set to random instruction.
+DIVIDE_METHOD 2   # 0 = Divide leaves state of mother untouched.
+                  # 1 = Divide resets state of mother
+                  #     (after the divide, we have 2 children)
+		  # 2 = Divide resets only the current thread of the mother
+		  #     (useful in 4-stack CPU w/ parasites)
+
+GENERATION_INC_METHOD 0 # 0 = Only the generation of the child is
+                        #     increased on divide.
+			# 1 = Both the generation of the mother and child are
+			#     increased on divide (good with DIVIDE_METHOD 1).
+
+### Divide Restrictions ####
+CHILD_SIZE_RANGE 2.0	# Maximal differential between child and parent sizes.
+MIN_COPIED_LINES 0.5    # Code fraction which must be copied before divide.
+MIN_EXE_LINES    0.5    # Code fraction which must be executed before divide.
+REQUIRE_ALLOCATE   1    # Is a an allocate required before a divide? (0/1)
+REQUIRED_TASK -1  # Number of task required for successful divide.
+
+### Mutations ###
+
+# mutations that occur during execution..
+POINT_MUT_PROB  0.0     # Mutation rate (per-location per update)
+COPY_MUT_PROB   0.0075  # Mutation rate (per copy).
+
+# mutations that occur on divide...
+INS_MUT_PROB    0.0     # Insertion rate (per site, applied on divide).
+DEL_MUT_PROB    0.0     # Deletion rate (per site, applied on divide).
+DIV_MUT_PROB    0.0     # Mutation rate (per site, applied on divide).
+DIVIDE_MUT_PROB 0.0     # Mutation rate (per divide).
+DIVIDE_INS_PROB 0.05    # Insertion rate (per divide).
+DIVIDE_DEL_PROB 0.05    # Deletion rate (per divide).
+PARENT_MUT_PROB 0.0     # Per-site, in parent, on divide
+
+# heads based mutations
+# READ_SHIFT_PROB   0.0
+# READ INS_PROB     0.0
+# READ_DEL_PROB     0.0
+# WRITE_SHIFT_PROB  0.0
+# WRITE_INS_PROB    0.0
+# WRITE_DEL_PROB    0.0
+
+
+### Mutation reversions ###
+# these slow down avida a lot, and should be set to 0 normally.
+REVERT_FATAL       0.0  # Should any mutations be reverted on birth?
+REVERT_DETRIMENTAL 0.0  #   0.0 to 1.0; Probability of reversion.
+REVERT_NEUTRAL     0.0
+REVERT_BENEFICIAL  0.0
+
+STERILIZE_FATAL       0.0  # Should any mutations clear (kill) the organism?
+STERILIZE_DETRIMENTAL 0.0  #   0.0 to 1.0; Probability of reset.
+STERILIZE_NEUTRAL     0.0
+STERILIZE_BENEFICIAL  0.0
+
+FAIL_IMPLICIT     0	# Should copies that failed *not* due to mutations
+			# be eliminated?
+
+### Time Slicing ###
+AVE_TIME_SLICE 30
+SLICING_METHOD 2	# 0 = CONSTANT: all organisms get default...
+			# 1 = PROBABILISTIC: Run _prob_ proportional to merit.
+			# 2 = INTEGRATED: Perfectly integrated deterministic.
+SIZE_MERIT_METHOD 4	# 0 = off (merit is independent of size)
+			# 1 = Merit proportional to copied size
+			# 2 = Merit prop. to executed size
+			# 3 = Merit prop. to full size
+			# 4 = Merit prop. to min of executed or copied size
+			# 5 = Merit prop. to sqrt of the minimum size
+TASK_MERIT_METHOD 1	# 0 = No task bonuses
+			# 1 = Bonus just equals the task bonus
+THREAD_SLICING_METHOD 1 # 0 = One thread executed per time slice.
+			# 1 = All threads executed each time slice.
+ 			# Formula for an organism's thread slicing: 
+			# 1 + (num_organism_threads-1) * THREAD_SLICING_METHOD
+
+MAX_LABEL_EXE_SIZE 1	# Max nops marked as executed when labels are used
+MERIT_TIME 1            # 0 = Merit Calculated when task completed
+		        # 1 = Merit Calculated on Divide
+MAX_NUM_TASKS_REWARDED -1  # -1 = Unlimited
+
+### Genotype Info ###
+THRESHOLD 3		# Number of organisms in a genotype needed for it
+			#   to be considered viable.
+GENOTYPE_PRINT 0	# 0/1 (off/on) Print out all threshold genotypes?
+GENOTYPE_PRINT_DOM 0	# Print out a genotype if it stays dominant for
+                        #   this many updates. (0 = off)
+SPECIES_THRESHOLD 2     # max failure count for organisms to be same species
+SPECIES_RECORDING 0	# 1 = full, 2 = limited search (parent only)
+SPECIES_PRINT 0		# 0/1 (off/on) Print out all species?
+TEST_CPU_TIME_MOD 20    # Time allocated in test CPUs (multiple of length)
+TRACK_MAIN_LINEAGE 1    # Track primary lineage leading to final population?
+
+### Log Files ###
+LOG_CREATURES 0		# 0/1 (off/on) toggle to print file.
+LOG_GENOTYPES 0		# 0 = off, 1 = print ALL, 2 = print threshold ONLY.
+LOG_THRESHOLD 0		# 0/1 (off/on) toggle to print file.
+LOG_SPECIES 0		# 0/1 (off/on) toggle to print file.
+LOG_LANDSCAPE 0		# 0/1 (off/on) toggle to print file.
+
+LOG_LINEAGES 0          # 0/1 (off/on) to log advantageous mutations
+# This one can slow down avida a lot. It is used to get an idea of how
+# often an advantageous mutation arises, and where it goes afterwards.
+# See also LINEAGE_CREATION_METHOD.
+
+LINEAGE_CREATION_METHOD 0
+# Lineage creation options are.  Works only when LOG_LINEAGES is set to 1.
+#   0 = manual creation (on inject, use successive integers as lineage labels).
+#   1 = when a child's (potential) fitness is higher than that of its parent.
+#   2 = when a child's (potential) fitness is higher than max in population.
+#   3 = when a child's (potential) fitness is higher than max in dom. lineage
+#	*and* the child is in the dominant lineage, or (2)
+#   4 = when a child's (potential) fitness is higher than max in dom. lineage
+#	(and that of its own lineage)
+#   5 = same as child's (potential) fitness is higher than that of the
+#       currently dominant organism, and also than that of any organism
+#       currently in the same lineage.
+#   6 = when a child's (potential) fitness is higher than any organism
+#       currently in the same lineage.
+#   7 = when a child's (potential) fitness is higher than that of any
+#       organism in its line of descent
+
+### END ###
+
+

Added: branches/brysonda/source/support/inst_set.smt
===================================================================
--- branches/brysonda/source/support/inst_set.smt	2005-06-06 14:59:29 UTC (rev 179)
+++ branches/brysonda/source/support/inst_set.smt	2005-06-06 19:43:12 UTC (rev 180)
@@ -0,0 +1,38 @@
+Nop-A      	1	#1 	(a)	
+Nop-B      	1  	#2	(b)
+Nop-C      	1   	#3	(c)
+Nop-D		1	#4	(d)
+#Nop-X		1	#	
+Val-Shift-R    	1	#5	(e)
+Val-Shift-L    	1   	#6	(f)
+Val-Nand      	1   	#7	(g)
+Val-Add        	1   	#8	(h)
+Val-Sub        	1   	#9	(i)
+Val-Mult	1	#10	(j)
+Val-Div		1	#11	(k)
+SetMemory    	1   	#12	(l)
+Divide   	1   	#13 	(m)
+Inst-Read	1	#14	(n)
+Inst-Write	1	#15	(o)
+#Inst-Copy     	1   	     	()
+If-Equal	1	#16	(p)
+If-Not-Equal  	1	#17	(q)
+If-Less    	1   	#18	(r)
+If-Greater	1	#19	(s)
+Head-Push	1	#20	(t)
+Head-Pop	1	#21	(u)
+Head-Move   	1   	#22   	(v)
+Search   	1   	#23  	(w)
+Push-Next	1	#24	(x)
+Push-Prev	1	#25	(y)
+Push-Comp	1	#26	(z)
+Val-Delete	1	#27	(A)
+Val-Copy	1	#28	(B)
+#ThreadFork	1	#29	()
+#if-label   	1   		()
+Val-Inc		1	#30	(C)
+Val-Dec		1	#31 	(D)
+Val-Mod		1	#32	(E)
+#ThreadKill	1	#33	()
+IO		1	#34	(F)
+Inject		1	#35	(G)
\ No newline at end of file

Added: branches/brysonda/source/support/organism.smt
===================================================================
--- branches/brysonda/source/support/organism.smt	2005-06-06 14:59:29 UTC (rev 179)
+++ branches/brysonda/source/support/organism.smt	2005-06-06 19:43:12 UTC (rev 180)
@@ -0,0 +1,108 @@
+# SAMPLE ORGANISM:
+#
+Search       #  1:  Find organism end.
+Nop-C        #  2:  - Match CD:AB
+Nop-D
+#ThreadFork   #  3:
+#Nop-D	     #  4:
+Push-Prev    #  5:  Move end position to Stack-A
+SetMemory    #  6:  Place FLOW-head in memory space for offspring
+Head-Move    #  7:  Move Write head to flow head position
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Nop-C        #  8:
+Search       #  9:  Drop flow head at start of copy loop
+Inst-Read    # 10:
+Inst-Write   # 11: 
+Head-Push    # 12:  Get current position of...
+Nop-C        # 13:  - Read-Head
+If-Equal     # 14:  Test if we are done copying...
+Divide       # 15:  ...If so, divide.
+Head-Move    # 16:  ...If not, continue with loop.
+Nop-A        # 17:
+Nop-B		
\ No newline at end of file

Modified: branches/brysonda/source/viewers/symbol_util.cc
===================================================================
--- branches/brysonda/source/viewers/symbol_util.cc	2005-06-06 14:59:29 UTC (rev 179)
+++ branches/brysonda/source/viewers/symbol_util.cc	2005-06-06 19:43:12 UTC (rev 180)
@@ -117,21 +117,18 @@
 //    if (thread_count < 200) return 'C';
   //const cHardwareBase * hardware; 
   int num_threads;
-  if(cConfig::GetHardwareType() == HARDWARE_TYPE_CPU_ORIGINAL)
-    {
-      //const cHardwareCPU & hard_cpu= (cHardwareCPU &) cell.GetOrganism()->GetHardware();
-      //num_threads = hard_cpu.GetNumThreads();
+  switch (cConfig::GetHardwareType())
+  {
+    case HARDWARE_TYPE_CPU_ORIGINAL:
       num_threads = ((cHardwareCPU &) cell.GetOrganism()->GetHardware()).GetNumThreads();
       return (char) ('0' + num_threads);
-    }
-  else
-    {
-      //const cHardware4Stack & hard_4stack= (cHardware4Stack &) cell.GetOrganism()->GetHardware();
-      //num_threads = hard_4stack.GetNumThreads();
+    case HARDWARE_TYPE_CPU_4STACK:
       num_threads = ((cHardware4Stack &) cell.GetOrganism()->GetHardware()).GetNumThreads();
       return (char) ('0' + num_threads);
-    }
-  //return '+';
+    case HARDWARE_TYPE_CPU_SMT:
+      num_threads = static_cast<cHardwareSMT&>(cell.GetOrganism()->GetHardware()).GetNumThreads();
+      return (char) ('0' + num_threads);
+  }
 }
 
 char cSymbolUtil::GetLineageSymbol(const cPopulationCell & cell)




More information about the Avida-cvs mailing list