[Avida-cvs] [avida-svn] r437 - in development: Avida.xcodeproj source source/main source/script source/targets source/targets/avida source/targets/avida-s source/targets/avida-viewer

brysonda@myxo.css.msu.edu brysonda at myxo.css.msu.edu
Sun Jan 15 14:19:57 PST 2006


Author: brysonda
Date: 2006-01-15 16:54:54 -0500 (Sun, 15 Jan 2006)
New Revision: 437

Added:
   development/source/platform/
   development/source/script/
   development/source/script/AvidaScript.h
   development/source/script/FlexLexer.h
   development/source/script/cLexer.h
   development/source/script/cLexer.l
   development/source/targets/
   development/source/targets/CMakeLists.txt
   development/source/targets/avida-s/
   development/source/targets/avida-s/main.cc
   development/source/targets/avida-viewer/
   development/source/targets/avida-viewer/CMakeLists.txt
   development/source/targets/avida-viewer/cTextViewerDriver.cc
   development/source/targets/avida-viewer/cTextViewerDriver.h
   development/source/targets/avida-viewer/cZoomScreen.cc
   development/source/targets/avida-viewer/viewer.cc
   development/source/targets/avida/
   development/source/targets/avida/CMakeLists.txt
   development/source/targets/avida/primitive.cc
Removed:
   development/source/main/primitive.cc
   development/source/targets/avida-viewer/CMakeLists.txt
   development/source/targets/avida-viewer/cAvidaDriver_TextPopViewer.cc
   development/source/targets/avida-viewer/cAvidaDriver_TextPopViewer.h
   development/source/targets/avida-viewer/cZoomScreen.cc
   development/source/targets/avida-viewer/viewer.cc
   development/source/viewer/
   development/source/vista/
Modified:
   development/Avida.xcodeproj/project.pbxproj
   development/source/CMakeLists.txt
   development/source/main/CMakeLists.txt
Log:
Reorganize target structure.  Add initial AvidaScript lexer.

Modified: development/Avida.xcodeproj/project.pbxproj
===================================================================
--- development/Avida.xcodeproj/project.pbxproj	2006-01-13 20:24:42 UTC (rev 436)
+++ development/Avida.xcodeproj/project.pbxproj	2006-01-15 21:54:54 UTC (rev 437)
@@ -53,20 +53,6 @@
 		70422A34091B141000A5E67F /* cAnalyze.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A1C091B141000A5E67F /* cAnalyze.cc */; };
 		70422A3C091B141000A5E67F /* cAnalyzeGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A24091B141000A5E67F /* cAnalyzeGenotype.cc */; };
 		70422A3E091B141000A5E67F /* cAnalyzeUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A26091B141000A5E67F /* cAnalyzeUtil.cc */; };
-		704866D5090B51310048600A /* cBarScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866B5090B51310048600A /* cBarScreen.cc */; };
-		704866D8090B51310048600A /* cEnvironmentScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866B8090B51310048600A /* cEnvironmentScreen.cc */; };
-		704866DA090B51310048600A /* cHistScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866BA090B51310048600A /* cHistScreen.cc */; };
-		704866DD090B51310048600A /* cMapScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866BD090B51310048600A /* cMapScreen.cc */; };
-		704866DF090B51310048600A /* cMenuWindow.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866BF090B51310048600A /* cMenuWindow.cc */; };
-		704866E1090B51310048600A /* cOptionsScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866C1090B51310048600A /* cOptionsScreen.cc */; };
-		704866E3090B51310048600A /* cScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866C3090B51310048600A /* cScreen.cc */; };
-		704866E5090B51310048600A /* cStatsScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866C5090B51310048600A /* cStatsScreen.cc */; };
-		704866E7090B51310048600A /* cSymbolUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866C7090B51310048600A /* cSymbolUtil.cc */; };
-		704866E9090B51310048600A /* cTextWindow.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866C9090B51310048600A /* cTextWindow.cc */; };
-		704866EB090B51310048600A /* cView.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866CB090B51310048600A /* cView.cc */; };
-		704866ED090B51310048600A /* cViewInfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866CD090B51310048600A /* cViewInfo.cc */; };
-		704866EF090B51310048600A /* cZoomScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866CF090B51310048600A /* cZoomScreen.cc */; };
-		704866F2090B51310048600A /* viewer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704866D2090B51310048600A /* viewer.cc */; };
 		70486BA00826722F009328F0 /* analyze.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC3114B0762539E008F7A48 /* analyze.cfg */; };
 		70486BA10826722F009328F0 /* environment.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311800762539F008F7A48 /* environment.cfg */; };
 		70486BA20826722F009328F0 /* events.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311810762539F008F7A48 /* events.cfg */; };
@@ -88,14 +74,12 @@
 		70533482092A4F5D006BD186 /* cSpecies.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705332480929764A006BD186 /* cSpecies.cc */; };
 		70533483092A4F5F006BD186 /* cSpeciesControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE6A09296613009E311D /* cSpeciesControl.cc */; };
 		70533484092A4F60006BD186 /* cSpeciesQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7053324A0929764A006BD186 /* cSpeciesQueue.cc */; };
-		70658C44085DE5FF00486BED /* primitive.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC311090762539E008F7A48 /* primitive.cc */; };
 		70658C5A085DF67D00486BED /* libncurses.5.4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 70658C59085DF67D00486BED /* libncurses.5.4.dylib */; };
 		706D32E90854A39800D7DC8F /* dummy in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311950762539F008F7A48 /* dummy */; };
 		706D32EA0854A39900D7DC8F /* organism.4stack in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311970762539F008F7A48 /* organism.4stack */; };
 		706D32EB0854A39900D7DC8F /* organism.parasite in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311980762539F008F7A48 /* organism.parasite */; };
 		706D330F0854A7B900D7DC8F /* organism.smt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 706D330E0854A7B900D7DC8F /* organism.smt */; };
 		706D33280854A90D00D7DC8F /* inst_set.smt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 706D33270854A90D00D7DC8F /* inst_set.smt */; };
-		709D4B83095A2EFA00EC9358 /* cTextViewerDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 709D4B81095A2EFA00EC9358 /* cTextViewerDriver.cc */; };
 		70B0865908F4974300FC65FE /* cLandscape.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865108F4974300FC65FE /* cLandscape.cc */; };
 		70B0865C08F4974300FC65FE /* cLocalMutations.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865408F4974300FC65FE /* cLocalMutations.cc */; };
 		70B0865E08F4974300FC65FE /* cMutationLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865608F4974300FC65FE /* cMutationLib.cc */; };
@@ -247,6 +231,142 @@
 		70D46934085F61DA004C8409 /* trio.c in Sources */ = {isa = PBXBuildFile; fileRef = DCC3146D076253A1008F7A48 /* trio.c */; };
 		70D46935085F61DD004C8409 /* trionan.c in Sources */ = {isa = PBXBuildFile; fileRef = DCC31471076253A1008F7A48 /* trionan.c */; };
 		70D46936085F61DF004C8409 /* triostr.c in Sources */ = {isa = PBXBuildFile; fileRef = DCC31474076253A1008F7A48 /* triostr.c */; };
+		70DCAC7A097AF731002F8733 /* cBarScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC59097AF730002F8733 /* cBarScreen.cc */; };
+		70DCAC7D097AF731002F8733 /* cEnvironmentScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC5C097AF730002F8733 /* cEnvironmentScreen.cc */; };
+		70DCAC7F097AF731002F8733 /* cHistScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC5E097AF730002F8733 /* cHistScreen.cc */; };
+		70DCAC82097AF731002F8733 /* cMapScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC61097AF730002F8733 /* cMapScreen.cc */; };
+		70DCAC84097AF731002F8733 /* cMenuWindow.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC63097AF730002F8733 /* cMenuWindow.cc */; };
+		70DCAC86097AF731002F8733 /* cOptionsScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC65097AF730002F8733 /* cOptionsScreen.cc */; };
+		70DCAC88097AF731002F8733 /* cScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC67097AF730002F8733 /* cScreen.cc */; };
+		70DCAC8A097AF731002F8733 /* cStatsScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC69097AF730002F8733 /* cStatsScreen.cc */; };
+		70DCAC8C097AF731002F8733 /* cSymbolUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC6B097AF730002F8733 /* cSymbolUtil.cc */; };
+		70DCAC90097AF731002F8733 /* cTextWindow.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC6F097AF730002F8733 /* cTextWindow.cc */; };
+		70DCAC92097AF731002F8733 /* cView.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC71097AF730002F8733 /* cView.cc */; };
+		70DCAC94097AF731002F8733 /* cViewInfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC73097AF730002F8733 /* cViewInfo.cc */; };
+		70DCAC96097AF731002F8733 /* cZoomScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC75097AF730002F8733 /* cZoomScreen.cc */; };
+		70DCAC99097AF731002F8733 /* viewer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC78097AF730002F8733 /* viewer.cc */; };
+		70DCAC9A097AF754002F8733 /* cTextViewerDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC6D097AF730002F8733 /* cTextViewerDriver.cc */; };
+		70DCAC9C097AF7C0002F8733 /* primitive.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC9B097AF7C0002F8733 /* primitive.cc */; };
+		70DCACA0097AF7CC002F8733 /* avida.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3109C0762539E008F7A48 /* avida.cc */; };
+		70DCACA1097AF7CC002F8733 /* trio.c in Sources */ = {isa = PBXBuildFile; fileRef = DCC3146D076253A1008F7A48 /* trio.c */; };
+		70DCACA2097AF7CC002F8733 /* trionan.c in Sources */ = {isa = PBXBuildFile; fileRef = DCC31471076253A1008F7A48 /* trionan.c */; };
+		70DCACA3097AF7CC002F8733 /* triostr.c in Sources */ = {isa = PBXBuildFile; fileRef = DCC31474076253A1008F7A48 /* triostr.c */; };
+		70DCACA4097AF7CC002F8733 /* cCodeLabel.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF4608C393BA00F50912 /* cCodeLabel.cc */; };
+		70DCACA5097AF7CC002F8733 /* cCPUMemory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF5808C3948C00F50912 /* cCPUMemory.cc */; };
+		70DCACA6097AF7CC002F8733 /* cCPUStack.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF6108C3954700F50912 /* cCPUStack.cc */; };
+		70DCACA7097AF7CC002F8733 /* cCPUTestInfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF7108C3968700F50912 /* cCPUTestInfo.cc */; };
+		70DCACA8097AF7CC002F8733 /* cHardware4Stack.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF8B08C39BC500F50912 /* cHardware4Stack.cc */; };
+		70DCACA9097AF7CC002F8733 /* cHardware4Stack_Thread.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EFA208C39F2100F50912 /* cHardware4Stack_Thread.cc */; };
+		70DCACAA097AF7CC002F8733 /* cHardwareBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EFA308C39F2100F50912 /* cHardwareBase.cc */; };
+		70DCACAB097AF7CC002F8733 /* cHardwareCPU_Thread.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EFA408C39F2100F50912 /* cHardwareCPU_Thread.cc */; };
+		70DCACAC097AF7CC002F8733 /* cHardwareCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EFA508C39F2100F50912 /* cHardwareCPU.cc */; };
+		70DCACAD097AF7CC002F8733 /* cHardwareSMT_Thread.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02208C3C71300F50912 /* cHardwareSMT_Thread.cc */; };
+		70DCACAE097AF7CC002F8733 /* cHardwareSMT.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02308C3C71300F50912 /* cHardwareSMT.cc */; };
+		70DCACAF097AF7CC002F8733 /* cHardwareStatusPrinter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02408C3C71300F50912 /* cHardwareStatusPrinter.cc */; };
+		70DCACB0097AF7CC002F8733 /* cHeadCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02608C3C71300F50912 /* cHeadCPU.cc */; };
+		70DCACB1097AF7CC002F8733 /* cHeadMultiMem.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02708C3C71300F50912 /* cHeadMultiMem.cc */; };
+		70DCACB2097AF7CC002F8733 /* cTestCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02808C3C71300F50912 /* cTestCPU.cc */; };
+		70DCACB3097AF7CC002F8733 /* cTestUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02908C3C71300F50912 /* cTestUtil.cc */; };
+		70DCACB4097AF7CC002F8733 /* cEventList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F18F08C6A11100F50912 /* cEventList.cc */; };
+		70DCACB5097AF7CC002F8733 /* cEventTriggers.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F19108C6A11100F50912 /* cEventTriggers.cc */; };
+		70DCACB6097AF7CC002F8733 /* cEnvironment.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4EFC08DA5341007BA469 /* cEnvironment.cc */; };
+		70DCACB7097AF7CC002F8733 /* cPopulationInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4EFD08DA5341007BA469 /* cPopulationInterface.cc */; };
+		70DCACB8097AF7CC002F8733 /* cBirthChamber.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4F3F08DA61FE007BA469 /* cBirthChamber.cc */; };
+		70DCACB9097AF7CC002F8733 /* cGenome.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB408DB7F8200068AC2 /* cGenome.cc */; };
+		70DCACBA097AF7CC002F8733 /* cGenomeUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB508DB7F8200068AC2 /* cGenomeUtil.cc */; };
+		70DCACBB097AF7CC002F8733 /* cInstruction.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EBF08DB7F8200068AC2 /* cInstruction.cc */; };
+		70DCACBC097AF7CC002F8733 /* cInstSet.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EC008DB7F8200068AC2 /* cInstSet.cc */; };
+		70DCACBD097AF7CC002F8733 /* cInstUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EC108DB7F8200068AC2 /* cInstUtil.cc */; };
+		70DCACBE097AF7CC002F8733 /* cLandscape.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865108F4974300FC65FE /* cLandscape.cc */; };
+		70DCACBF097AF7CC002F8733 /* cLocalMutations.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865408F4974300FC65FE /* cLocalMutations.cc */; };
+		70DCACC0097AF7CC002F8733 /* cMutationLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865608F4974300FC65FE /* cMutationLib.cc */; };
+		70DCACC1097AF7CC002F8733 /* cMutationRates.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865708F4974300FC65FE /* cMutationRates.cc */; };
+		70DCACC2097AF7CC002F8733 /* cOrganism.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868708F49EA800FC65FE /* cOrganism.cc */; };
+		70DCACC3097AF7CC002F8733 /* cOrgMessage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868808F49EA800FC65FE /* cOrgMessage.cc */; };
+		70DCACC4097AF7CC002F8733 /* cPopulation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868908F49EA800FC65FE /* cPopulation.cc */; };
+		70DCACC5097AF7CC002F8733 /* cPopulationCell.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868A08F49EA800FC65FE /* cPopulationCell.cc */; };
+		70DCACC6097AF7CC002F8733 /* cPhenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0869C08F49F4800FC65FE /* cPhenotype.cc */; };
+		70DCACC7097AF7CC002F8733 /* cReaction.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0871E08F5E82D00FC65FE /* cReaction.cc */; };
+		70DCACC8097AF7CC002F8733 /* cReactionLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0871F08F5E82D00FC65FE /* cReactionLib.cc */; };
+		70DCACC9097AF7CC002F8733 /* cReactionResult.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872208F5E82D00FC65FE /* cReactionResult.cc */; };
+		70DCACCA097AF7CC002F8733 /* cResource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872308F5E82D00FC65FE /* cResource.cc */; };
+		70DCACCB097AF7CC002F8733 /* cResourceCount.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872408F5E82D00FC65FE /* cResourceCount.cc */; };
+		70DCACCC097AF7CC002F8733 /* cResourceLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872508F5E82D00FC65FE /* cResourceLib.cc */; };
+		70DCACCD097AF7CC002F8733 /* cSpatialCountElem.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872608F5E82D00FC65FE /* cSpatialCountElem.cc */; };
+		70DCACCE097AF7CC002F8733 /* cSpatialResCount.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872708F5E82D00FC65FE /* cSpatialResCount.cc */; };
+		70DCACCF097AF7CC002F8733 /* cStats.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872B08F5E82D00FC65FE /* cStats.cc */; };
+		70DCACD0097AF7CC002F8733 /* cTaskLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872D08F5E82D00FC65FE /* cTaskLib.cc */; };
+		70DCACD1097AF7CC002F8733 /* cChangeList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B087DF08F5F4BA00FC65FE /* cChangeList.cc */; };
+		70DCACD2097AF7CC002F8733 /* cConstSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B087E008F5F4BA00FC65FE /* cConstSchedule.cc */; };
+		70DCACD3097AF7CC002F8733 /* cCountTracker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B087E108F5F4BA00FC65FE /* cCountTracker.cc */; };
+		70DCACD4097AF7CC002F8733 /* cDataFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0884F08F5FE5800FC65FE /* cDataFile.cc */; };
+		70DCACD5097AF7CC002F8733 /* cDataFileManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885008F5FE5800FC65FE /* cDataFileManager.cc */; };
+		70DCACD6097AF7CC002F8733 /* cDataManager_Base.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885108F5FE5800FC65FE /* cDataManager_Base.cc */; };
+		70DCACD7097AF7CC002F8733 /* cDefaultMessageDisplay.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885208F5FE5800FC65FE /* cDefaultMessageDisplay.cc */; };
+		70DCACD8097AF7CC002F8733 /* cDoubleSum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885308F5FE5800FC65FE /* cDoubleSum.cc */; };
+		70DCACD9097AF7CC002F8733 /* cFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0888308F603D400FC65FE /* cFile.cc */; };
+		70DCACDA097AF7CC002F8733 /* cGenesis.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0888408F603D400FC65FE /* cGenesis.cc */; };
+		70DCACDB097AF7CC002F8733 /* cHelpAlias.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891608F7630100FC65FE /* cHelpAlias.cc */; };
+		70DCACDC097AF7CC002F8733 /* cHelpManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891708F7630100FC65FE /* cHelpManager.cc */; };
+		70DCACDD097AF7CC002F8733 /* cHelpType.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891808F7630100FC65FE /* cHelpType.cc */; };
+		70DCACDE097AF7CC002F8733 /* cHistogram.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891908F7630100FC65FE /* cHistogram.cc */; };
+		70DCACDF097AF7CC002F8733 /* cInitFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891A08F7630100FC65FE /* cInitFile.cc */; };
+		70DCACE0097AF7CC002F8733 /* cIntegratedSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891B08F7630100FC65FE /* cIntegratedSchedule.cc */; };
+		70DCACE1097AF7CC002F8733 /* cIntegratedScheduleNode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891C08F7630100FC65FE /* cIntegratedScheduleNode.cc */; };
+		70DCACE2097AF7CC002F8733 /* cIntSum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891D08F7630100FC65FE /* cIntSum.cc */; };
+		70DCACE3097AF7CC002F8733 /* cMerit.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891E08F7630100FC65FE /* cMerit.cc */; };
+		70DCACE4097AF7CC002F8733 /* cProbSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891F08F7630100FC65FE /* cProbSchedule.cc */; };
+		70DCACE5097AF7CC002F8733 /* cRandom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892008F7630100FC65FE /* cRandom.cc */; };
+		70DCACE6097AF7CC002F8733 /* cRunningAverage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892108F7630100FC65FE /* cRunningAverage.cc */; };
+		70DCACE7097AF7CC002F8733 /* cSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892208F7630100FC65FE /* cSchedule.cc */; };
+		70DCACE8097AF7CC002F8733 /* cString.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892308F7630100FC65FE /* cString.cc */; };
+		70DCACE9097AF7CC002F8733 /* cStringIterator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892408F7630100FC65FE /* cStringIterator.cc */; };
+		70DCACEA097AF7CC002F8733 /* cStringList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892508F7630100FC65FE /* cStringList.cc */; };
+		70DCACEB097AF7CC002F8733 /* cStringUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892608F7630100FC65FE /* cStringUtil.cc */; };
+		70DCACEC097AF7CC002F8733 /* cTools.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B08B9008FB2E6B00FC65FE /* cTools.cc */; };
+		70DCACED097AF7CC002F8733 /* cWeightedIndex.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B08B9108FB2E6B00FC65FE /* cWeightedIndex.cc */; };
+		70DCACEE097AF7CC002F8733 /* cAvidaConfig.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7013846009028B3E0087ED2E /* cAvidaConfig.cc */; };
+		70DCACEF097AF7CC002F8733 /* cWorld.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C5BC6309059A970028A785 /* cWorld.cc */; };
+		70DCACF0097AF7CC002F8733 /* cHardwareManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C5BD690905CE5F0028A785 /* cHardwareManager.cc */; };
+		70DCACF1097AF7CC002F8733 /* cEventManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7040CF1A0906A52E00AA820F /* cEventManager.cc */; };
+		70DCACF2097AF7CC002F8733 /* cMxCodeArray.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865808F4974300FC65FE /* cMxCodeArray.cc */; };
+		70DCACF3097AF7CC002F8733 /* cAnalyze.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A1C091B141000A5E67F /* cAnalyze.cc */; };
+		70DCACF4097AF7CC002F8733 /* cAnalyzeGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A24091B141000A5E67F /* cAnalyzeGenotype.cc */; };
+		70DCACF5097AF7CC002F8733 /* cAnalyzeUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A26091B141000A5E67F /* cAnalyzeUtil.cc */; };
+		70DCACF6097AF7CC002F8733 /* cFitnessMatrix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB208DB7F8200068AC2 /* cFitnessMatrix.cc */; };
+		70DCACF7097AF7CC002F8733 /* cClassificationManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DAF009290468009E311D /* cClassificationManager.cc */; };
+		70DCACF8097AF7CC002F8733 /* cGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DC9E09293E6F009E311D /* cGenotype.cc */; };
+		70DCACF9097AF7CC002F8733 /* cGenotypeControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE6809296613009E311D /* cGenotypeControl.cc */; };
+		70DCACFA097AF7CC002F8733 /* cSpeciesControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE6A09296613009E311D /* cSpeciesControl.cc */; };
+		70DCACFB097AF7CC002F8733 /* cGenotype_BirthData.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE700929678E009E311D /* cGenotype_BirthData.cc */; };
+		70DCACFC097AF7CC002F8733 /* cSpecies.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705332480929764A006BD186 /* cSpecies.cc */; };
+		70DCACFD097AF7CC002F8733 /* cSpeciesQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7053324A0929764A006BD186 /* cSpeciesQueue.cc */; };
+		70DCACFE097AF7CC002F8733 /* cInjectGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533364092A3DF4006BD186 /* cInjectGenotype.cc */; };
+		70DCACFF097AF7CC002F8733 /* cInjectGenotypeControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533366092A3DF4006BD186 /* cInjectGenotypeControl.cc */; };
+		70DCAD00097AF7CC002F8733 /* cInjectGenotypeQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533369092A3DF4006BD186 /* cInjectGenotypeQueue.cc */; };
+		70DCAD01097AF7CC002F8733 /* cLineage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705333E5092A4B7C006BD186 /* cLineage.cc */; };
+		70DCAD02097AF7CC002F8733 /* cFallbackWorldDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D915C094B864A008B845F /* cFallbackWorldDriver.cc */; };
+		70DCAD03097AF7CC002F8733 /* cDefaultRunDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D930C094CAD6B008B845F /* cDefaultRunDriver.cc */; };
+		70DCAD04097AF7CC002F8733 /* cDriverManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D9382094CBA69008B845F /* cDriverManager.cc */; };
+		70DCAD05097AF7CC002F8733 /* cDefaultAnalyzeDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D93E7094CBF71008B845F /* cDefaultAnalyzeDriver.cc */; };
+		70DCAD06097AF7CC002F8733 /* primitive.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC9B097AF7C0002F8733 /* primitive.cc */; };
+		70DCAD09097AF7CC002F8733 /* primitive in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC3164D07626CF3008F7A48 /* primitive */; };
+		70DCAD0A097AF7CC002F8733 /* analyze.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC3114B0762539E008F7A48 /* analyze.cfg */; };
+		70DCAD0B097AF7CC002F8733 /* environment.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311800762539F008F7A48 /* environment.cfg */; };
+		70DCAD0C097AF7CC002F8733 /* events.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311810762539F008F7A48 /* events.cfg */; };
+		70DCAD0D097AF7CC002F8733 /* inst_set.4stack in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311840762539F008F7A48 /* inst_set.4stack */; };
+		70DCAD0E097AF7CC002F8733 /* inst_set.default in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311850762539F008F7A48 /* inst_set.default */; };
+		70DCAD0F097AF7CC002F8733 /* organism.default in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311890762539F008F7A48 /* organism.default */; };
+		70DCAD10097AF7CC002F8733 /* dummy in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311950762539F008F7A48 /* dummy */; };
+		70DCAD11097AF7CC002F8733 /* organism.4stack in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311970762539F008F7A48 /* organism.4stack */; };
+		70DCAD12097AF7CC002F8733 /* organism.parasite in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC311980762539F008F7A48 /* organism.parasite */; };
+		70DCAD13097AF7CC002F8733 /* organism.smt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 706D330E0854A7B900D7DC8F /* organism.smt */; };
+		70DCAD14097AF7CC002F8733 /* inst_set.smt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 706D33270854A90D00D7DC8F /* inst_set.smt */; };
+		70DCAD15097AF7CC002F8733 /* organism.smtx in CopyFiles */ = {isa = PBXBuildFile; fileRef = 701384330900A45B0087ED2E /* organism.smtx */; };
+		70DCAD16097AF7CC002F8733 /* avida.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7013852C0902E36B0087ED2E /* avida.cfg */; };
+		70DCAD25097AF81A002F8733 /* cLexer.l in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAD21097AF81A002F8733 /* cLexer.l */; };
+		70DCAD2F097AF8BC002F8733 /* main.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC57097AF730002F8733 /* main.cc */; };
+		70DCAD38097AF972002F8733 /* CMakeLists.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 70DCAD37097AF972002F8733 /* CMakeLists.txt */; };
 		70F7D8CE09254787009E311D /* cFitnessMatrix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB208DB7F8200068AC2 /* cFitnessMatrix.cc */; };
 		70F7DAF409290468009E311D /* cClassificationManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DAF009290468009E311D /* cClassificationManager.cc */; };
 		70F7DCA009293E76009E311D /* cClassificationManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DAF009290468009E311D /* cClassificationManager.cc */; };
@@ -258,6 +378,19 @@
 		DCC3166107628531008F7A48 /* avida.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3109C0762539E008F7A48 /* avida.cc */; };
 /* End PBXBuildFile section */
 
+/* Begin PBXBuildRule section */
+		70DCAD2A097AF865002F8733 /* PBXBuildRule */ = {
+			isa = PBXBuildRule;
+			compilerSpec = com.apple.compilers.proxy.script;
+			fileType = sourcecode.lex;
+			isEditable = 1;
+			outputFiles = (
+				"$(DERIVED_FILES_DIR)/$(INPUT_FILE_BASE).cc",
+			);
+			script = "flex -+ -o${DERIVED_FILES_DIR}/${INPUT_FILE_BASE}.cc ${INPUT_FILE_PATH}";
+		};
+/* End PBXBuildRule section */
+
 /* Begin PBXBuildStyle section */
 		70486B8C08266CA2009328F0 /* Profile */ = {
 			isa = PBXBuildStyle;
@@ -335,6 +468,30 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		70DCAD08097AF7CC002F8733 /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = Avida.work;
+			dstSubfolderSpec = 16;
+			files = (
+				70DCAD09097AF7CC002F8733 /* primitive in CopyFiles */,
+				70DCAD0A097AF7CC002F8733 /* analyze.cfg in CopyFiles */,
+				70DCAD0B097AF7CC002F8733 /* environment.cfg in CopyFiles */,
+				70DCAD0C097AF7CC002F8733 /* events.cfg in CopyFiles */,
+				70DCAD0D097AF7CC002F8733 /* inst_set.4stack in CopyFiles */,
+				70DCAD0E097AF7CC002F8733 /* inst_set.default in CopyFiles */,
+				70DCAD0F097AF7CC002F8733 /* organism.default in CopyFiles */,
+				70DCAD10097AF7CC002F8733 /* dummy in CopyFiles */,
+				70DCAD11097AF7CC002F8733 /* organism.4stack in CopyFiles */,
+				70DCAD12097AF7CC002F8733 /* organism.parasite in CopyFiles */,
+				70DCAD13097AF7CC002F8733 /* organism.smt in CopyFiles */,
+				70DCAD14097AF7CC002F8733 /* inst_set.smt in CopyFiles */,
+				70DCAD15097AF7CC002F8733 /* organism.smtx in CopyFiles */,
+				70DCAD16097AF7CC002F8733 /* avida.cfg in CopyFiles */,
+				70DCAD38097AF972002F8733 /* CMakeLists.txt in CopyFiles */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
@@ -379,36 +536,6 @@
 		70422A26091B141000A5E67F /* cAnalyzeUtil.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cAnalyzeUtil.cc; sourceTree = "<group>"; };
 		70422A27091B141000A5E67F /* cAnalyzeUtil.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cAnalyzeUtil.h; sourceTree = "<group>"; };
 		70422A44091B1B8500A5E67F /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		704866B5090B51310048600A /* cBarScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cBarScreen.cc; sourceTree = "<group>"; };
-		704866B6090B51310048600A /* cBarScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cBarScreen.h; sourceTree = "<group>"; };
-		704866B7090B51310048600A /* cBaseTextWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cBaseTextWindow.h; sourceTree = "<group>"; };
-		704866B8090B51310048600A /* cEnvironmentScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cEnvironmentScreen.cc; sourceTree = "<group>"; };
-		704866B9090B51310048600A /* cEnvironmentScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cEnvironmentScreen.h; sourceTree = "<group>"; };
-		704866BA090B51310048600A /* cHistScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cHistScreen.cc; sourceTree = "<group>"; };
-		704866BB090B51310048600A /* cHistScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHistScreen.h; sourceTree = "<group>"; };
-		704866BC090B51310048600A /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		704866BD090B51310048600A /* cMapScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cMapScreen.cc; sourceTree = "<group>"; };
-		704866BE090B51310048600A /* cMapScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cMapScreen.h; sourceTree = "<group>"; };
-		704866BF090B51310048600A /* cMenuWindow.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cMenuWindow.cc; sourceTree = "<group>"; };
-		704866C0090B51310048600A /* cMenuWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cMenuWindow.h; sourceTree = "<group>"; };
-		704866C1090B51310048600A /* cOptionsScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cOptionsScreen.cc; sourceTree = "<group>"; };
-		704866C2090B51310048600A /* cOptionsScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cOptionsScreen.h; sourceTree = "<group>"; };
-		704866C3090B51310048600A /* cScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cScreen.cc; sourceTree = "<group>"; };
-		704866C4090B51310048600A /* cScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cScreen.h; sourceTree = "<group>"; };
-		704866C5090B51310048600A /* cStatsScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cStatsScreen.cc; sourceTree = "<group>"; };
-		704866C6090B51310048600A /* cStatsScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cStatsScreen.h; sourceTree = "<group>"; };
-		704866C7090B51310048600A /* cSymbolUtil.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cSymbolUtil.cc; sourceTree = "<group>"; };
-		704866C8090B51310048600A /* cSymbolUtil.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cSymbolUtil.h; sourceTree = "<group>"; };
-		704866C9090B51310048600A /* cTextWindow.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cTextWindow.cc; sourceTree = "<group>"; };
-		704866CA090B51310048600A /* cTextWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cTextWindow.h; sourceTree = "<group>"; };
-		704866CB090B51310048600A /* cView.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cView.cc; sourceTree = "<group>"; };
-		704866CC090B51310048600A /* cView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cView.h; sourceTree = "<group>"; };
-		704866CD090B51310048600A /* cViewInfo.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cViewInfo.cc; sourceTree = "<group>"; };
-		704866CE090B51310048600A /* cViewInfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cViewInfo.h; sourceTree = "<group>"; };
-		704866CF090B51310048600A /* cZoomScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cZoomScreen.cc; sourceTree = "<group>"; };
-		704866D0090B51310048600A /* cZoomScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cZoomScreen.h; sourceTree = "<group>"; };
-		704866D1090B51310048600A /* key_chart */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = key_chart; sourceTree = "<group>"; };
-		704866D2090B51310048600A /* viewer.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = viewer.cc; sourceTree = "<group>"; };
 		705332480929764A006BD186 /* cSpecies.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cSpecies.cc; sourceTree = "<group>"; };
 		705332490929764A006BD186 /* cSpecies.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cSpecies.h; sourceTree = "<group>"; };
 		7053324A0929764A006BD186 /* cSpeciesQueue.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cSpeciesQueue.cc; sourceTree = "<group>"; };
@@ -432,8 +559,6 @@
 		706D330E0854A7B900D7DC8F /* organism.smt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = organism.smt; sourceTree = "<group>"; };
 		706D33270854A90D00D7DC8F /* inst_set.smt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = inst_set.smt; sourceTree = "<group>"; };
 		707A687408E3750300576968 /* cHardwareTracer_SMT.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHardwareTracer_SMT.h; sourceTree = "<group>"; };
-		709D4B81095A2EFA00EC9358 /* cTextViewerDriver.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cTextViewerDriver.cc; sourceTree = "<group>"; };
-		709D4B82095A2EFA00EC9358 /* cTextViewerDriver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cTextViewerDriver.h; sourceTree = "<group>"; };
 		70B0864808F4972600FC65FE /* cLandscape.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cLandscape.h; sourceTree = "<group>"; };
 		70B0864B08F4972600FC65FE /* cLocalMutations.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cLocalMutations.h; sourceTree = "<group>"; };
 		70B0864C08F4972600FC65FE /* cMutation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cMutation.h; sourceTree = "<group>"; };
@@ -643,6 +768,47 @@
 		70CA6EF208DB7F9E00068AC2 /* cInstruction.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cInstruction.h; sourceTree = "<group>"; };
 		70CA6EF308DB7F9E00068AC2 /* cInstSet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cInstSet.h; sourceTree = "<group>"; };
 		70CA6EF408DB7F9E00068AC2 /* cInstUtil.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cInstUtil.h; sourceTree = "<group>"; };
+		70DCAC57097AF730002F8733 /* main.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = main.cc; sourceTree = "<group>"; };
+		70DCAC59097AF730002F8733 /* cBarScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cBarScreen.cc; sourceTree = "<group>"; };
+		70DCAC5A097AF730002F8733 /* cBarScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cBarScreen.h; sourceTree = "<group>"; };
+		70DCAC5B097AF730002F8733 /* cBaseTextWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cBaseTextWindow.h; sourceTree = "<group>"; };
+		70DCAC5C097AF730002F8733 /* cEnvironmentScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cEnvironmentScreen.cc; sourceTree = "<group>"; };
+		70DCAC5D097AF730002F8733 /* cEnvironmentScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cEnvironmentScreen.h; sourceTree = "<group>"; };
+		70DCAC5E097AF730002F8733 /* cHistScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cHistScreen.cc; sourceTree = "<group>"; };
+		70DCAC5F097AF730002F8733 /* cHistScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cHistScreen.h; sourceTree = "<group>"; };
+		70DCAC60097AF730002F8733 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
+		70DCAC61097AF730002F8733 /* cMapScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cMapScreen.cc; sourceTree = "<group>"; };
+		70DCAC62097AF730002F8733 /* cMapScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cMapScreen.h; sourceTree = "<group>"; };
+		70DCAC63097AF730002F8733 /* cMenuWindow.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cMenuWindow.cc; sourceTree = "<group>"; };
+		70DCAC64097AF730002F8733 /* cMenuWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cMenuWindow.h; sourceTree = "<group>"; };
+		70DCAC65097AF730002F8733 /* cOptionsScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cOptionsScreen.cc; sourceTree = "<group>"; };
+		70DCAC66097AF730002F8733 /* cOptionsScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cOptionsScreen.h; sourceTree = "<group>"; };
+		70DCAC67097AF730002F8733 /* cScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cScreen.cc; sourceTree = "<group>"; };
+		70DCAC68097AF730002F8733 /* cScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cScreen.h; sourceTree = "<group>"; };
+		70DCAC69097AF730002F8733 /* cStatsScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cStatsScreen.cc; sourceTree = "<group>"; };
+		70DCAC6A097AF730002F8733 /* cStatsScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cStatsScreen.h; sourceTree = "<group>"; };
+		70DCAC6B097AF730002F8733 /* cSymbolUtil.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cSymbolUtil.cc; sourceTree = "<group>"; };
+		70DCAC6C097AF730002F8733 /* cSymbolUtil.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cSymbolUtil.h; sourceTree = "<group>"; };
+		70DCAC6D097AF730002F8733 /* cTextViewerDriver.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cTextViewerDriver.cc; sourceTree = "<group>"; };
+		70DCAC6E097AF730002F8733 /* cTextViewerDriver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cTextViewerDriver.h; sourceTree = "<group>"; };
+		70DCAC6F097AF730002F8733 /* cTextWindow.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cTextWindow.cc; sourceTree = "<group>"; };
+		70DCAC70097AF730002F8733 /* cTextWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cTextWindow.h; sourceTree = "<group>"; };
+		70DCAC71097AF730002F8733 /* cView.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cView.cc; sourceTree = "<group>"; };
+		70DCAC72097AF730002F8733 /* cView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cView.h; sourceTree = "<group>"; };
+		70DCAC73097AF730002F8733 /* cViewInfo.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cViewInfo.cc; sourceTree = "<group>"; };
+		70DCAC74097AF730002F8733 /* cViewInfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cViewInfo.h; sourceTree = "<group>"; };
+		70DCAC75097AF730002F8733 /* cZoomScreen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cZoomScreen.cc; sourceTree = "<group>"; };
+		70DCAC76097AF730002F8733 /* cZoomScreen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cZoomScreen.h; sourceTree = "<group>"; };
+		70DCAC77097AF730002F8733 /* key_chart */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = key_chart; sourceTree = "<group>"; };
+		70DCAC78097AF730002F8733 /* viewer.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = viewer.cc; sourceTree = "<group>"; };
+		70DCAC9B097AF7C0002F8733 /* primitive.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = primitive.cc; sourceTree = "<group>"; };
+		70DCAD1C097AF7CC002F8733 /* primitive */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = primitive; sourceTree = BUILT_PRODUCTS_DIR; };
+		70DCAD1F097AF81A002F8733 /* AvidaScript.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AvidaScript.h; sourceTree = "<group>"; };
+		70DCAD20097AF81A002F8733 /* cLexer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cLexer.h; sourceTree = "<group>"; };
+		70DCAD21097AF81A002F8733 /* cLexer.l */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.lex; path = cLexer.l; sourceTree = "<group>"; };
+		70DCAD22097AF81A002F8733 /* FlexLexer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FlexLexer.h; sourceTree = "<group>"; };
+		70DCAD37097AF972002F8733 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
+		70DCAD39097AF985002F8733 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
 		70F7DAEF09290468009E311D /* cClassificationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cClassificationManager.h; sourceTree = "<group>"; };
 		70F7DAF009290468009E311D /* cClassificationManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cClassificationManager.cc; sourceTree = "<group>"; };
 		70F7DC9E09293E6F009E311D /* cGenotype.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = cGenotype.cc; sourceTree = "<group>"; };
@@ -662,7 +828,6 @@
 		DCC30FEB0762539D008F7A48 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
 		DCC3109C0762539E008F7A48 /* avida.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = avida.cc; sourceTree = "<group>"; };
 		DCC310A90762539E008F7A48 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		DCC311090762539E008F7A48 /* primitive.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = primitive.cc; sourceTree = "<group>"; };
 		DCC3114B0762539E008F7A48 /* analyze.cfg */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = analyze.cfg; sourceTree = "<group>"; };
 		DCC3114C0762539E008F7A48 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
 		DCC311680762539E008F7A48 /* environment.2paths */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = environment.2paths; sourceTree = "<group>"; };
@@ -769,6 +934,13 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		70DCAD07097AF7CC002F8733 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		DCC3164B07626CF3008F7A48 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -818,45 +990,84 @@
 			path = analyze;
 			sourceTree = "<group>";
 		};
-		704866B2090B51310048600A /* viewer */ = {
+		70DCAC54097AF730002F8733 /* targets */ = {
 			isa = PBXGroup;
 			children = (
-				709D4B81095A2EFA00EC9358 /* cTextViewerDriver.cc */,
-				709D4B82095A2EFA00EC9358 /* cTextViewerDriver.h */,
-				704866B5090B51310048600A /* cBarScreen.cc */,
-				704866B6090B51310048600A /* cBarScreen.h */,
-				704866B7090B51310048600A /* cBaseTextWindow.h */,
-				704866B8090B51310048600A /* cEnvironmentScreen.cc */,
-				704866B9090B51310048600A /* cEnvironmentScreen.h */,
-				704866BA090B51310048600A /* cHistScreen.cc */,
-				704866BB090B51310048600A /* cHistScreen.h */,
-				704866BC090B51310048600A /* CMakeLists.txt */,
-				704866BD090B51310048600A /* cMapScreen.cc */,
-				704866BE090B51310048600A /* cMapScreen.h */,
-				704866BF090B51310048600A /* cMenuWindow.cc */,
-				704866C0090B51310048600A /* cMenuWindow.h */,
-				704866C1090B51310048600A /* cOptionsScreen.cc */,
-				704866C2090B51310048600A /* cOptionsScreen.h */,
-				704866C3090B51310048600A /* cScreen.cc */,
-				704866C4090B51310048600A /* cScreen.h */,
-				704866C5090B51310048600A /* cStatsScreen.cc */,
-				704866C6090B51310048600A /* cStatsScreen.h */,
-				704866C7090B51310048600A /* cSymbolUtil.cc */,
-				704866C8090B51310048600A /* cSymbolUtil.h */,
-				704866C9090B51310048600A /* cTextWindow.cc */,
-				704866CA090B51310048600A /* cTextWindow.h */,
-				704866CB090B51310048600A /* cView.cc */,
-				704866CC090B51310048600A /* cView.h */,
-				704866CD090B51310048600A /* cViewInfo.cc */,
-				704866CE090B51310048600A /* cViewInfo.h */,
-				704866CF090B51310048600A /* cZoomScreen.cc */,
-				704866D0090B51310048600A /* cZoomScreen.h */,
-				704866D1090B51310048600A /* key_chart */,
-				704866D2090B51310048600A /* viewer.cc */,
+				70DCAC55097AF730002F8733 /* avida */,
+				70DCAC56097AF730002F8733 /* avida-s */,
+				70DCAC58097AF730002F8733 /* avida-viewer */,
+				70DCAD37097AF972002F8733 /* CMakeLists.txt */,
 			);
-			path = viewer;
+			path = targets;
 			sourceTree = "<group>";
 		};
+		70DCAC55097AF730002F8733 /* avida */ = {
+			isa = PBXGroup;
+			children = (
+				70DCAC9B097AF7C0002F8733 /* primitive.cc */,
+				70DCAD39097AF985002F8733 /* CMakeLists.txt */,
+			);
+			path = avida;
+			sourceTree = "<group>";
+		};
+		70DCAC56097AF730002F8733 /* avida-s */ = {
+			isa = PBXGroup;
+			children = (
+				70DCAC57097AF730002F8733 /* main.cc */,
+			);
+			path = "avida-s";
+			sourceTree = "<group>";
+		};
+		70DCAC58097AF730002F8733 /* avida-viewer */ = {
+			isa = PBXGroup;
+			children = (
+				70DCAC59097AF730002F8733 /* cBarScreen.cc */,
+				70DCAC5A097AF730002F8733 /* cBarScreen.h */,
+				70DCAC5B097AF730002F8733 /* cBaseTextWindow.h */,
+				70DCAC5C097AF730002F8733 /* cEnvironmentScreen.cc */,
+				70DCAC5D097AF730002F8733 /* cEnvironmentScreen.h */,
+				70DCAC5E097AF730002F8733 /* cHistScreen.cc */,
+				70DCAC5F097AF730002F8733 /* cHistScreen.h */,
+				70DCAC60097AF730002F8733 /* CMakeLists.txt */,
+				70DCAC61097AF730002F8733 /* cMapScreen.cc */,
+				70DCAC62097AF730002F8733 /* cMapScreen.h */,
+				70DCAC63097AF730002F8733 /* cMenuWindow.cc */,
+				70DCAC64097AF730002F8733 /* cMenuWindow.h */,
+				70DCAC65097AF730002F8733 /* cOptionsScreen.cc */,
+				70DCAC66097AF730002F8733 /* cOptionsScreen.h */,
+				70DCAC67097AF730002F8733 /* cScreen.cc */,
+				70DCAC68097AF730002F8733 /* cScreen.h */,
+				70DCAC69097AF730002F8733 /* cStatsScreen.cc */,
+				70DCAC6A097AF730002F8733 /* cStatsScreen.h */,
+				70DCAC6B097AF730002F8733 /* cSymbolUtil.cc */,
+				70DCAC6C097AF730002F8733 /* cSymbolUtil.h */,
+				70DCAC6D097AF730002F8733 /* cTextViewerDriver.cc */,
+				70DCAC6E097AF730002F8733 /* cTextViewerDriver.h */,
+				70DCAC6F097AF730002F8733 /* cTextWindow.cc */,
+				70DCAC70097AF730002F8733 /* cTextWindow.h */,
+				70DCAC71097AF730002F8733 /* cView.cc */,
+				70DCAC72097AF730002F8733 /* cView.h */,
+				70DCAC73097AF730002F8733 /* cViewInfo.cc */,
+				70DCAC74097AF730002F8733 /* cViewInfo.h */,
+				70DCAC75097AF730002F8733 /* cZoomScreen.cc */,
+				70DCAC76097AF730002F8733 /* cZoomScreen.h */,
+				70DCAC77097AF730002F8733 /* key_chart */,
+				70DCAC78097AF730002F8733 /* viewer.cc */,
+			);
+			path = "avida-viewer";
+			sourceTree = "<group>";
+		};
+		70DCAD1E097AF81A002F8733 /* script */ = {
+			isa = PBXGroup;
+			children = (
+				70DCAD1F097AF81A002F8733 /* AvidaScript.h */,
+				70DCAD20097AF81A002F8733 /* cLexer.h */,
+				70DCAD21097AF81A002F8733 /* cLexer.l */,
+				70DCAD22097AF81A002F8733 /* FlexLexer.h */,
+			);
+			path = script;
+			sourceTree = "<group>";
+		};
 		70F7D8C8092546DC009E311D /* classification */ = {
 			isa = PBXGroup;
 			children = (
@@ -915,9 +1126,10 @@
 				701D9115094B770B008B845F /* drivers */,
 				DCC30FD00762539D008F7A48 /* event */,
 				DCC310040762539D008F7A48 /* main */,
+				70DCAD1E097AF81A002F8733 /* script */,
+				70DCAC54097AF730002F8733 /* targets */,
 				DCC31340076253A0008F7A48 /* third-party */,
 				DCC314D8076253A2008F7A48 /* tools */,
-				704866B2090B51310048600A /* viewer */,
 				DCC30F7B0762539D008F7A48 /* CMakeLists.txt */,
 				701384A10902A16F0087ED2E /* defs.h */,
 				DCC30FCF0762539D008F7A48 /* Doxyfile */,
@@ -1074,7 +1286,6 @@
 				70B0875A08F5EC8900FC65FE /* nGeometry.h */,
 				70B0867208F499C100FC65FE /* nMutation.h */,
 				70B0875C08F5ECBC00FC65FE /* nReaction.h */,
-				DCC311090762539E008F7A48 /* primitive.cc */,
 				DCC310A90762539E008F7A48 /* CMakeLists.txt */,
 			);
 			path = main;
@@ -1372,6 +1583,7 @@
 			children = (
 				DCC3164D07626CF3008F7A48 /* primitive */,
 				700E2B83085DE50C00CF158A /* viewer */,
+				70DCAD1C097AF7CC002F8733 /* primitive */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -1379,9 +1591,9 @@
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
-		700E2AF3085DE50C00CF158A /* viewer */ = {
+		700E2AF3085DE50C00CF158A /* avida-viewer */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = 700E2B7E085DE50C00CF158A /* Build configuration list for PBXNativeTarget "viewer" */;
+			buildConfigurationList = 700E2B7E085DE50C00CF158A /* Build configuration list for PBXNativeTarget "avida-viewer" */;
 			buildPhases = (
 				704EAD9808FF3C1F005D5C24 /* ShellScript */,
 				700E2AF4085DE50C00CF158A /* Sources */,
@@ -1413,15 +1625,55 @@
 			};
 			dependencies = (
 			);
-			name = viewer;
+			name = "avida-viewer";
 			productName = primitive;
 			productReference = 700E2B83085DE50C00CF158A /* viewer */;
 			productType = "com.apple.product-type.tool";
 		};
-		DCC3164C07626CF3008F7A48 /* primitive */ = {
+		70DCAC9D097AF7CC002F8733 /* avida-s */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = 702442D20859E0B00059BD9B /* Build configuration list for PBXNativeTarget "primitive" */;
+			buildConfigurationList = 70DCAD17097AF7CC002F8733 /* Build configuration list for PBXNativeTarget "avida-s" */;
 			buildPhases = (
+				70DCAC9E097AF7CC002F8733 /* ShellScript */,
+				70DCAC9F097AF7CC002F8733 /* Sources */,
+				70DCAD07097AF7CC002F8733 /* Frameworks */,
+				70DCAD08097AF7CC002F8733 /* CopyFiles */,
+			);
+			buildRules = (
+				70DCAD2A097AF865002F8733 /* PBXBuildRule */,
+			);
+			buildSettings = {
+				GCC_ALTIVEC_EXTENSIONS = YES;
+				GCC_AUTO_VECTORIZATION = YES;
+				GCC_DEBUGGING_SYMBOLS = full;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_FAST_MATH = YES;
+				GCC_MODEL_CPU = G4;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = "";
+				GCC_UNROLL_LOOPS = YES;
+				HEADER_SEARCH_PATHS = source/event/;
+				INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)/work";
+				PRODUCT_NAME = primitive;
+				SKIP_INSTALL = YES;
+				WARNING_CFLAGS = (
+					"-Wmost",
+					"-Wno-four-char-constants",
+					"-Wno-unknown-pragmas",
+				);
+				ZERO_LINK = YES;
+			};
+			dependencies = (
+			);
+			name = "avida-s";
+			productName = primitive;
+			productReference = 70DCAD1C097AF7CC002F8733 /* primitive */;
+			productType = "com.apple.product-type.tool";
+		};
+		DCC3164C07626CF3008F7A48 /* avida */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 702442D20859E0B00059BD9B /* Build configuration list for PBXNativeTarget "avida" */;
+			buildPhases = (
 				704EAD8208FF2C0B005D5C24 /* ShellScript */,
 				DCC3164A07626CF3008F7A48 /* Sources */,
 				DCC3164B07626CF3008F7A48 /* Frameworks */,
@@ -1452,7 +1704,7 @@
 			};
 			dependencies = (
 			);
-			name = primitive;
+			name = avida;
 			productName = primitive;
 			productReference = DCC3164D07626CF3008F7A48 /* primitive */;
 			productType = "com.apple.product-type.tool";
@@ -1475,8 +1727,9 @@
 			productRefGroup = DCC3164E07626CF3008F7A48 /* Products */;
 			projectDirPath = "";
 			targets = (
-				DCC3164C07626CF3008F7A48 /* primitive */,
-				700E2AF3085DE50C00CF158A /* viewer */,
+				DCC3164C07626CF3008F7A48 /* avida */,
+				70DCAC9D097AF7CC002F8733 /* avida-s */,
+				700E2AF3085DE50C00CF158A /* avida-viewer */,
 			);
 		};
 /* End PBXProject section */
@@ -1508,6 +1761,19 @@
 			shellPath = /bin/bash;
 			shellScript = "mkdir -p $DERIVED_FILE_DIR\nif (test -x /usr/bin/svn)\nthen svncmd=/usr/bin/svn\nelif (test -x /usr/local/bin/svn)\nthen svncmd=/usr/local/bin/svn\nelif (test -x /usr/local/svn/bin/svn)\nthen svncmd=/usr/local/svn/bin/svn\nelse\n  echo \"Warning: 'svn' not found, please install subversion\"\n  if [[ ! -f $DERIVED_FILE_DIR/revision.h ]]\n  then\n    echo \"#ifndef revision_h\" > $DERIVED_FILE_DIR/revision.h\n    echo \"#define revision_h\" >> $DERIVED_FILE_DIR/revision.h\n    echo \"#define REVISION \\\"???\\\"\" >> $DERIVED_FILE_DIR/revision.h\n    echo \"#endif\" >> $DERIVED_FILE_DIR/revision.h\n  fi\nfi\n\necho \"#ifndef revision_h\" > /tmp/newrev.tmp\necho \"#define revision_h\" >> /tmp/newrev.tmp\n$svncmd status -v Avida.xcodeproj/project.pbxproj | sed '1!d' | sed 's/[^ ]* *\\([0-9]*\\).*/#define REVISION \"\\1\"/' >> /tmp/newrev.tmp\necho \"#endif\" >> /tmp/newrev.tmp\n\nif [[ -f $DERIVED_FILE_DIR/revision.h ]]\nthen\n  revdiff=`diff $DERIVED_FILE_DIR!
 /revision.h /tmp/newrev.tmp`\nelse\n  revdiff=\"yes\"\nfi\n\nif [[ -n \"$revdiff\" ]]\nthen\n  echo \"New revision.h Generated\"\n  cp /tmp/newrev.tmp $DERIVED_FILE_DIR/revision.h\n  touch $SRCROOT/source/main/avida.cc\nfi\n\nrm /tmp/newrev.tmp\n";
 		};
+		70DCAC9E097AF7CC002F8733 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/bash;
+			shellScript = "mkdir -p $DERIVED_FILE_DIR\nif (test -x /usr/bin/svn)\nthen svncmd=/usr/bin/svn\nelif (test -x /usr/local/bin/svn)\nthen svncmd=/usr/local/bin/svn\nelif (test -x /usr/local/svn/bin/svn)\nthen svncmd=/usr/local/svn/bin/svn\nelse\n  echo \"Warning: 'svn' not found, please install subversion\"\n  if [[ ! -f $DERIVED_FILE_DIR/revision.h ]]\n  then\n    echo \"#ifndef revision_h\" > $DERIVED_FILE_DIR/revision.h\n    echo \"#define revision_h\" >> $DERIVED_FILE_DIR/revision.h\n    echo \"#define REVISION \\\"???\\\"\" >> $DERIVED_FILE_DIR/revision.h\n    echo \"#endif\" >> $DERIVED_FILE_DIR/revision.h\n  fi\nfi\n\necho \"#ifndef revision_h\" > /tmp/newrev.tmp\necho \"#define revision_h\" >> /tmp/newrev.tmp\n$svncmd status -v Avida.xcodeproj/project.pbxproj | sed '1!d' | sed 's/[^ ]* *\\([0-9]*\\).*/#define REVISION \"\\1\"/' >> /tmp/newrev.tmp\necho \"#endif\" >> /tmp/newrev.tmp\n\nif [[ -f $DERIVED_FILE_DIR/revision.h ]]\nthen\n  revdiff=`diff $DERIVED_FILE_DIR!
 /revision.h /tmp/newrev.tmp`\nelse\n  revdiff=\"yes\"\nfi\n\nif [[ -n \"$revdiff\" ]]\nthen\n  echo \"New revision.h Generated\"\n  cp /tmp/newrev.tmp $DERIVED_FILE_DIR/revision.h\n  touch $SRCROOT/source/main/avida.cc\nfi\n\nrm /tmp/newrev.tmp\n";
+		};
 /* End PBXShellScriptBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
@@ -1596,20 +1862,6 @@
 				70C5BC6709059A970028A785 /* cWorld.cc in Sources */,
 				70C5BD6D0905CE5F0028A785 /* cHardwareManager.cc in Sources */,
 				7040CF1E0906A52E00AA820F /* cEventManager.cc in Sources */,
-				704866D5090B51310048600A /* cBarScreen.cc in Sources */,
-				704866D8090B51310048600A /* cEnvironmentScreen.cc in Sources */,
-				704866DA090B51310048600A /* cHistScreen.cc in Sources */,
-				704866DD090B51310048600A /* cMapScreen.cc in Sources */,
-				704866DF090B51310048600A /* cMenuWindow.cc in Sources */,
-				704866E1090B51310048600A /* cOptionsScreen.cc in Sources */,
-				704866E3090B51310048600A /* cScreen.cc in Sources */,
-				704866E5090B51310048600A /* cStatsScreen.cc in Sources */,
-				704866E7090B51310048600A /* cSymbolUtil.cc in Sources */,
-				704866E9090B51310048600A /* cTextWindow.cc in Sources */,
-				704866EB090B51310048600A /* cView.cc in Sources */,
-				704866ED090B51310048600A /* cViewInfo.cc in Sources */,
-				704866EF090B51310048600A /* cZoomScreen.cc in Sources */,
-				704866F2090B51310048600A /* viewer.cc in Sources */,
 				70422A28091B141000A5E67F /* cAnalyze.cc in Sources */,
 				70422A30091B141000A5E67F /* cAnalyzeGenotype.cc in Sources */,
 				70422A32091B141000A5E67F /* cAnalyzeUtil.cc in Sources */,
@@ -1628,16 +1880,141 @@
 				701D9310094CAD6B008B845F /* cDefaultRunDriver.cc in Sources */,
 				701D9384094CBA69008B845F /* cDriverManager.cc in Sources */,
 				701D93EB094CBF71008B845F /* cDefaultAnalyzeDriver.cc in Sources */,
-				709D4B83095A2EFA00EC9358 /* cTextViewerDriver.cc in Sources */,
+				70DCAC7A097AF731002F8733 /* cBarScreen.cc in Sources */,
+				70DCAC7D097AF731002F8733 /* cEnvironmentScreen.cc in Sources */,
+				70DCAC7F097AF731002F8733 /* cHistScreen.cc in Sources */,
+				70DCAC82097AF731002F8733 /* cMapScreen.cc in Sources */,
+				70DCAC84097AF731002F8733 /* cMenuWindow.cc in Sources */,
+				70DCAC86097AF731002F8733 /* cOptionsScreen.cc in Sources */,
+				70DCAC88097AF731002F8733 /* cScreen.cc in Sources */,
+				70DCAC8A097AF731002F8733 /* cStatsScreen.cc in Sources */,
+				70DCAC8C097AF731002F8733 /* cSymbolUtil.cc in Sources */,
+				70DCAC90097AF731002F8733 /* cTextWindow.cc in Sources */,
+				70DCAC92097AF731002F8733 /* cView.cc in Sources */,
+				70DCAC94097AF731002F8733 /* cViewInfo.cc in Sources */,
+				70DCAC96097AF731002F8733 /* cZoomScreen.cc in Sources */,
+				70DCAC99097AF731002F8733 /* viewer.cc in Sources */,
+				70DCAC9A097AF754002F8733 /* cTextViewerDriver.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		70DCAC9F097AF7CC002F8733 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				70DCACA0097AF7CC002F8733 /* avida.cc in Sources */,
+				70DCACA1097AF7CC002F8733 /* trio.c in Sources */,
+				70DCACA2097AF7CC002F8733 /* trionan.c in Sources */,
+				70DCACA3097AF7CC002F8733 /* triostr.c in Sources */,
+				70DCACA4097AF7CC002F8733 /* cCodeLabel.cc in Sources */,
+				70DCACA5097AF7CC002F8733 /* cCPUMemory.cc in Sources */,
+				70DCACA6097AF7CC002F8733 /* cCPUStack.cc in Sources */,
+				70DCACA7097AF7CC002F8733 /* cCPUTestInfo.cc in Sources */,
+				70DCACA8097AF7CC002F8733 /* cHardware4Stack.cc in Sources */,
+				70DCACA9097AF7CC002F8733 /* cHardware4Stack_Thread.cc in Sources */,
+				70DCACAA097AF7CC002F8733 /* cHardwareBase.cc in Sources */,
+				70DCACAB097AF7CC002F8733 /* cHardwareCPU_Thread.cc in Sources */,
+				70DCACAC097AF7CC002F8733 /* cHardwareCPU.cc in Sources */,
+				70DCACAD097AF7CC002F8733 /* cHardwareSMT_Thread.cc in Sources */,
+				70DCACAE097AF7CC002F8733 /* cHardwareSMT.cc in Sources */,
+				70DCACAF097AF7CC002F8733 /* cHardwareStatusPrinter.cc in Sources */,
+				70DCACB0097AF7CC002F8733 /* cHeadCPU.cc in Sources */,
+				70DCACB1097AF7CC002F8733 /* cHeadMultiMem.cc in Sources */,
+				70DCACB2097AF7CC002F8733 /* cTestCPU.cc in Sources */,
+				70DCACB3097AF7CC002F8733 /* cTestUtil.cc in Sources */,
+				70DCACB4097AF7CC002F8733 /* cEventList.cc in Sources */,
+				70DCACB5097AF7CC002F8733 /* cEventTriggers.cc in Sources */,
+				70DCACB6097AF7CC002F8733 /* cEnvironment.cc in Sources */,
+				70DCACB7097AF7CC002F8733 /* cPopulationInterface.cc in Sources */,
+				70DCACB8097AF7CC002F8733 /* cBirthChamber.cc in Sources */,
+				70DCACB9097AF7CC002F8733 /* cGenome.cc in Sources */,
+				70DCACBA097AF7CC002F8733 /* cGenomeUtil.cc in Sources */,
+				70DCACBB097AF7CC002F8733 /* cInstruction.cc in Sources */,
+				70DCACBC097AF7CC002F8733 /* cInstSet.cc in Sources */,
+				70DCACBD097AF7CC002F8733 /* cInstUtil.cc in Sources */,
+				70DCACBE097AF7CC002F8733 /* cLandscape.cc in Sources */,
+				70DCACBF097AF7CC002F8733 /* cLocalMutations.cc in Sources */,
+				70DCACC0097AF7CC002F8733 /* cMutationLib.cc in Sources */,
+				70DCACC1097AF7CC002F8733 /* cMutationRates.cc in Sources */,
+				70DCACC2097AF7CC002F8733 /* cOrganism.cc in Sources */,
+				70DCACC3097AF7CC002F8733 /* cOrgMessage.cc in Sources */,
+				70DCACC4097AF7CC002F8733 /* cPopulation.cc in Sources */,
+				70DCACC5097AF7CC002F8733 /* cPopulationCell.cc in Sources */,
+				70DCACC6097AF7CC002F8733 /* cPhenotype.cc in Sources */,
+				70DCACC7097AF7CC002F8733 /* cReaction.cc in Sources */,
+				70DCACC8097AF7CC002F8733 /* cReactionLib.cc in Sources */,
+				70DCACC9097AF7CC002F8733 /* cReactionResult.cc in Sources */,
+				70DCACCA097AF7CC002F8733 /* cResource.cc in Sources */,
+				70DCACCB097AF7CC002F8733 /* cResourceCount.cc in Sources */,
+				70DCACCC097AF7CC002F8733 /* cResourceLib.cc in Sources */,
+				70DCACCD097AF7CC002F8733 /* cSpatialCountElem.cc in Sources */,
+				70DCACCE097AF7CC002F8733 /* cSpatialResCount.cc in Sources */,
+				70DCACCF097AF7CC002F8733 /* cStats.cc in Sources */,
+				70DCACD0097AF7CC002F8733 /* cTaskLib.cc in Sources */,
+				70DCACD1097AF7CC002F8733 /* cChangeList.cc in Sources */,
+				70DCACD2097AF7CC002F8733 /* cConstSchedule.cc in Sources */,
+				70DCACD3097AF7CC002F8733 /* cCountTracker.cc in Sources */,
+				70DCACD4097AF7CC002F8733 /* cDataFile.cc in Sources */,
+				70DCACD5097AF7CC002F8733 /* cDataFileManager.cc in Sources */,
+				70DCACD6097AF7CC002F8733 /* cDataManager_Base.cc in Sources */,
+				70DCACD7097AF7CC002F8733 /* cDefaultMessageDisplay.cc in Sources */,
+				70DCACD8097AF7CC002F8733 /* cDoubleSum.cc in Sources */,
+				70DCACD9097AF7CC002F8733 /* cFile.cc in Sources */,
+				70DCACDA097AF7CC002F8733 /* cGenesis.cc in Sources */,
+				70DCACDB097AF7CC002F8733 /* cHelpAlias.cc in Sources */,
+				70DCACDC097AF7CC002F8733 /* cHelpManager.cc in Sources */,
+				70DCACDD097AF7CC002F8733 /* cHelpType.cc in Sources */,
+				70DCACDE097AF7CC002F8733 /* cHistogram.cc in Sources */,
+				70DCACDF097AF7CC002F8733 /* cInitFile.cc in Sources */,
+				70DCACE0097AF7CC002F8733 /* cIntegratedSchedule.cc in Sources */,
+				70DCACE1097AF7CC002F8733 /* cIntegratedScheduleNode.cc in Sources */,
+				70DCACE2097AF7CC002F8733 /* cIntSum.cc in Sources */,
+				70DCACE3097AF7CC002F8733 /* cMerit.cc in Sources */,
+				70DCACE4097AF7CC002F8733 /* cProbSchedule.cc in Sources */,
+				70DCACE5097AF7CC002F8733 /* cRandom.cc in Sources */,
+				70DCACE6097AF7CC002F8733 /* cRunningAverage.cc in Sources */,
+				70DCACE7097AF7CC002F8733 /* cSchedule.cc in Sources */,
+				70DCACE8097AF7CC002F8733 /* cString.cc in Sources */,
+				70DCACE9097AF7CC002F8733 /* cStringIterator.cc in Sources */,
+				70DCACEA097AF7CC002F8733 /* cStringList.cc in Sources */,
+				70DCACEB097AF7CC002F8733 /* cStringUtil.cc in Sources */,
+				70DCACEC097AF7CC002F8733 /* cTools.cc in Sources */,
+				70DCACED097AF7CC002F8733 /* cWeightedIndex.cc in Sources */,
+				70DCACEE097AF7CC002F8733 /* cAvidaConfig.cc in Sources */,
+				70DCACEF097AF7CC002F8733 /* cWorld.cc in Sources */,
+				70DCACF0097AF7CC002F8733 /* cHardwareManager.cc in Sources */,
+				70DCACF1097AF7CC002F8733 /* cEventManager.cc in Sources */,
+				70DCACF2097AF7CC002F8733 /* cMxCodeArray.cc in Sources */,
+				70DCACF3097AF7CC002F8733 /* cAnalyze.cc in Sources */,
+				70DCACF4097AF7CC002F8733 /* cAnalyzeGenotype.cc in Sources */,
+				70DCACF5097AF7CC002F8733 /* cAnalyzeUtil.cc in Sources */,
+				70DCACF6097AF7CC002F8733 /* cFitnessMatrix.cc in Sources */,
+				70DCACF7097AF7CC002F8733 /* cClassificationManager.cc in Sources */,
+				70DCACF8097AF7CC002F8733 /* cGenotype.cc in Sources */,
+				70DCACF9097AF7CC002F8733 /* cGenotypeControl.cc in Sources */,
+				70DCACFA097AF7CC002F8733 /* cSpeciesControl.cc in Sources */,
+				70DCACFB097AF7CC002F8733 /* cGenotype_BirthData.cc in Sources */,
+				70DCACFC097AF7CC002F8733 /* cSpecies.cc in Sources */,
+				70DCACFD097AF7CC002F8733 /* cSpeciesQueue.cc in Sources */,
+				70DCACFE097AF7CC002F8733 /* cInjectGenotype.cc in Sources */,
+				70DCACFF097AF7CC002F8733 /* cInjectGenotypeControl.cc in Sources */,
+				70DCAD00097AF7CC002F8733 /* cInjectGenotypeQueue.cc in Sources */,
+				70DCAD01097AF7CC002F8733 /* cLineage.cc in Sources */,
+				70DCAD02097AF7CC002F8733 /* cFallbackWorldDriver.cc in Sources */,
+				70DCAD03097AF7CC002F8733 /* cDefaultRunDriver.cc in Sources */,
+				70DCAD04097AF7CC002F8733 /* cDriverManager.cc in Sources */,
+				70DCAD05097AF7CC002F8733 /* cDefaultAnalyzeDriver.cc in Sources */,
+				70DCAD06097AF7CC002F8733 /* primitive.cc in Sources */,
+				70DCAD25097AF81A002F8733 /* cLexer.l in Sources */,
+				70DCAD2F097AF8BC002F8733 /* main.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		DCC3164A07626CF3008F7A48 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 				DCC3166107628531008F7A48 /* avida.cc in Sources */,
-				70658C44085DE5FF00486BED /* primitive.cc in Sources */,
 				70D46934085F61DA004C8409 /* trio.c in Sources */,
 				70D46935085F61DD004C8409 /* trionan.c in Sources */,
 				70D46936085F61DF004C8409 /* triostr.c in Sources */,
@@ -1739,6 +2116,7 @@
 				701D930E094CAD6B008B845F /* cDefaultRunDriver.cc in Sources */,
 				701D9383094CBA69008B845F /* cDriverManager.cc in Sources */,
 				701D93E9094CBF71008B845F /* cDefaultAnalyzeDriver.cc in Sources */,
+				70DCAC9C097AF7C0002F8733 /* primitive.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1989,10 +2367,42 @@
 			};
 			name = Profile;
 		};
+		70DCAD18097AF7CC002F8733 /* Development */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_MODEL_CPU = G4;
+				PRODUCT_NAME = primitive;
+			};
+			name = Development;
+		};
+		70DCAD19097AF7CC002F8733 /* Deployment-G4 */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_MODEL_CPU = G4;
+				PRODUCT_NAME = primitive;
+			};
+			name = "Deployment-G4";
+		};
+		70DCAD1A097AF7CC002F8733 /* Deployment-G5 */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_MODEL_CPU = G4;
+				PRODUCT_NAME = primitive;
+			};
+			name = "Deployment-G5";
+		};
+		70DCAD1B097AF7CC002F8733 /* Profile */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_MODEL_CPU = G4;
+				PRODUCT_NAME = primitive;
+			};
+			name = Profile;
+		};
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
-		700E2B7E085DE50C00CF158A /* Build configuration list for PBXNativeTarget "viewer" */ = {
+		700E2B7E085DE50C00CF158A /* Build configuration list for PBXNativeTarget "avida-viewer" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				700E2B7F085DE50C00CF158A /* Development */,
@@ -2003,7 +2413,7 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = "Deployment-G4";
 		};
-		702442D20859E0B00059BD9B /* Build configuration list for PBXNativeTarget "primitive" */ = {
+		702442D20859E0B00059BD9B /* Build configuration list for PBXNativeTarget "avida" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				702442D30859E0B00059BD9B /* Development */,
@@ -2025,6 +2435,17 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = "Deployment-G4";
 		};
+		70DCAD17097AF7CC002F8733 /* Build configuration list for PBXNativeTarget "avida-s" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				70DCAD18097AF7CC002F8733 /* Development */,
+				70DCAD19097AF7CC002F8733 /* Deployment-G4 */,
+				70DCAD1A097AF7CC002F8733 /* Deployment-G5 */,
+				70DCAD1B097AF7CC002F8733 /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = "Deployment-G4";
+		};
 /* End XCConfigurationList section */
 	};
 	rootObject = DCC30C4D0762532C008F7A48 /* Project object */;

Modified: development/source/CMakeLists.txt
===================================================================
--- development/source/CMakeLists.txt	2006-01-13 20:24:42 UTC (rev 436)
+++ development/source/CMakeLists.txt	2006-01-15 21:54:54 UTC (rev 437)
@@ -1,8 +1,5 @@
 
-SUBDIRS(analyze classification cpu drivers event main third-party tools support utils/task_events)
-IF(AVD_GUI_NCURSES)
-  SUBDIRS(viewer)
-ENDIF(AVD_GUI_NCURSES)
+SUBDIRS(analyze classification cpu drivers event main targets third-party tools support utils/task_events)
 IF(AVD_PY_BINDINGS)
   SUBDIRS(bindings python)
 ENDIF(AVD_PY_BINDINGS)

Modified: development/source/main/CMakeLists.txt
===================================================================
--- development/source/main/CMakeLists.txt	2006-01-13 20:24:42 UTC (rev 436)
+++ development/source/main/CMakeLists.txt	2006-01-15 21:54:54 UTC (rev 437)
@@ -36,10 +36,3 @@
 )
 
 ADD_LIBRARY(main ${libmain_a_SOURCES})
-
-IF(AVD_PRIMITIVE)
-  ADD_EXECUTABLE(primitive primitive.cc)
-  TARGET_LINK_LIBRARIES(primitive main classification cpu event analyze drivers analyze cpu main tools)
-  LINK_DIRECTORIES(${ALL_LIB_DIRS})
-  INSTALL_TARGETS(/work primitive)
-ENDIF(AVD_PRIMITIVE)

Deleted: development/source/main/primitive.cc
===================================================================
--- development/source/main/primitive.cc	2006-01-13 20:24:42 UTC (rev 436)
+++ development/source/main/primitive.cc	2006-01-15 21:54:54 UTC (rev 437)
@@ -1,45 +0,0 @@
-/*
- *  primitive.cc
- *  Avida
- *
- *  Copyright 2005-2006 Michigan State University. All rights reserved.
- *
- */
-
-#include <signal.h>
-
-#include "avida.h"
-#include "cAvidaConfig.h"
-#include "cDefaultAnalyzeDriver.h"
-#include "cDefaultRunDriver.h"
-#include "cDriverManager.h"
-#include "cWorld.h"
-
-using namespace std;
-
-int main(int argc, char * argv[])
-{
-  // Catch Interrupt making sure to close appropriately
-  signal(SIGINT, ExitAvida);
-
-  printVersionBanner();
-  
-  cDriverManager::Initialize();
-  
-  // Initialize the configuration data...
-  cWorld* world = new cWorld(cAvidaConfig::LoadWithCmdLineArgs(argc, argv));
-  cAvidaDriver* driver = NULL;
-
-  if (world->GetConfig().ANALYZE_MODE.Get() > 0) {
-    driver = new cDefaultAnalyzeDriver(world, (world->GetConfig().ANALYZE_MODE.Get() == 2));
-  } else {
-    driver = new cDefaultRunDriver(world);
-  }
-
-  cout << endl;
-  
-  driver->Run();
-
-  // Exit Nicely
-  ExitAvida(0);
-}

Added: development/source/script/AvidaScript.h
===================================================================
--- development/source/script/AvidaScript.h	2006-01-13 20:24:42 UTC (rev 436)
+++ development/source/script/AvidaScript.h	2006-01-15 21:54:54 UTC (rev 437)
@@ -0,0 +1,78 @@
+/*
+ *  AvidaScript.h
+ *  avida_test_language
+ *
+ *  Created by David on 1/14/06.
+ *  Copyright 2006 Michigan State University. All rights reserved.
+ *
+ */
+
+#ifndef AvidaScript_h
+#define AvidaScript_h
+
+enum eASTokens {
+  SUPRESS = 1,
+  ENDL,
+  
+  OP_BIT_NOT,
+  OP_BIT_AND,
+  OP_BIT_OR,
+  
+  OP_LOGIC_NOT,
+  OP_LOGIC_AND,
+  OP_LOGIC_OR,
+  
+  OP_ADD,
+  OP_SUB,
+  OP_MUL,
+  OP_DIV,
+  OP_MOD,
+  
+  DOT,
+  ASSIGN,
+  
+  OP_EQ,
+  OP_LE,
+  OP_GE,
+  OP_LT,
+  OP_GT,
+  OP_NEQ,
+  
+  PREC_OPEN,
+  PREC_CLOSE,
+  
+  IDX_OPEN,
+  IDX_CLOSE,
+  
+  ARR_OPEN,
+  ARR_CLOSE,
+  ARR_RANGE,
+  ARR_EXPAN,
+  
+  TYPE_BOOL,
+  TYPE_CHAR,
+  TYPE_FLOAT,
+  TYPE_INT,
+  TYPE_VOID,
+  
+  CMD_IF,
+  CMD_ELSE,
+  CMD_ENDIF,
+  
+  CMD_WHILE,
+  CMD_ENDWHILE,
+  
+  CMD_FOREACH,
+  CMD_ENDFOREACH,
+  
+  ID,
+  
+  FLOAT,
+  INT,
+  STRING,
+  CHAR,
+  
+  ERR
+};
+
+#endif


Property changes on: development/source/script/AvidaScript.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: development/source/script/FlexLexer.h
===================================================================
--- development/source/script/FlexLexer.h	2006-01-13 20:24:42 UTC (rev 436)
+++ development/source/script/FlexLexer.h	2006-01-15 21:54:54 UTC (rev 437)
@@ -0,0 +1,189 @@
+// $Header: /cvs/root/flex/flex/FlexLexer.h,v 1.2 2003/07/29 23:09:28 landonf Exp $
+
+// FlexLexer.h -- define interfaces for lexical analyzer classes generated
+//		  by flex
+
+// Copyright (c) 1993 The Regents of the University of California.
+// All rights reserved.
+//
+// This code is derived from software contributed to Berkeley by
+// Kent Williams and Tom Epperly.
+//
+// Redistribution and use in source and binary forms with or without
+// modification are permitted provided that: (1) source distributions retain
+// this entire copyright notice and comment, and (2) distributions including
+// binaries display the following acknowledgement:  ``This product includes
+// software developed by the University of California, Berkeley and its
+// contributors'' in the documentation or other materials provided with the
+// distribution and in all advertising materials mentioning features or use
+// of this software.  Neither the name of the University nor the names of
+// its contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+
+// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+// WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+// This file defines FlexLexer, an abstract class which specifies the
+// external interface provided to flex C++ lexer objects, and yyFlexLexer,
+// which defines a particular lexer class.
+//
+// If you want to create multiple lexer classes, you use the -P flag
+// to rename each yyFlexLexer to some other xxFlexLexer.  You then
+// include <FlexLexer.h> in your other sources once per lexer class:
+//
+//	#undef yyFlexLexer
+//	#define yyFlexLexer xxFlexLexer
+//	#include <FlexLexer.h>
+//
+//	#undef yyFlexLexer
+//	#define yyFlexLexer zzFlexLexer
+//	#include <FlexLexer.h>
+//	...
+
+#ifndef __FLEX_LEXER_H
+// Never included before - need to define base class.
+#define __FLEX_LEXER_H
+
+extern "C++" {
+
+#include <iostream>
+  
+  using namespace std;
+
+struct yy_buffer_state;
+typedef int yy_state_type;
+
+class FlexLexer {
+public:
+	virtual ~FlexLexer()	{ }
+
+	const char* YYText()	{ return yytext; }
+	int YYLeng()		{ return yyleng; }
+
+	virtual void
+		yy_switch_to_buffer( struct yy_buffer_state* new_buffer ) = 0;
+	virtual struct yy_buffer_state*
+		yy_create_buffer( istream* s, int size ) = 0;
+	virtual void yy_delete_buffer( struct yy_buffer_state* b ) = 0;
+	virtual void yyrestart( istream* s ) = 0;
+
+	virtual int yylex() = 0;
+
+	// Call yylex with new input/output sources.
+	int yylex( istream* new_in, ostream* new_out = 0 )
+		{
+		switch_streams( new_in, new_out );
+		return yylex();
+		}
+
+	// Switch to new input/output streams.  A nil stream pointer
+	// indicates "keep the current one".
+	virtual void switch_streams( istream* new_in = 0,
+					ostream* new_out = 0 ) = 0;
+
+	int lineno() const		{ return yylineno; }
+
+	int debug() const		{ return yy_flex_debug; }
+	void set_debug( int flag )	{ yy_flex_debug = flag; }
+
+protected:
+	char* yytext;
+	int yyleng;
+	int yylineno;		// only maintained if you use %option yylineno
+	int yy_flex_debug;	// only has effect with -d or "%option debug"
+};
+
+}
+#endif
+
+#if defined(yyFlexLexer) || ! defined(yyFlexLexerOnce)
+// Either this is the first time through (yyFlexLexerOnce not defined),
+// or this is a repeated include to define a different flavor of
+// yyFlexLexer, as discussed in the flex man page.
+#define yyFlexLexerOnce
+
+class yyFlexLexer : public FlexLexer {
+public:
+	// arg_yyin and arg_yyout default to the cin and cout, but we
+	// only make that assignment when initializing in yylex().
+	yyFlexLexer( istream* arg_yyin = 0, ostream* arg_yyout = 0 );
+
+	virtual ~yyFlexLexer();
+
+	void yy_switch_to_buffer( struct yy_buffer_state* new_buffer );
+	struct yy_buffer_state* yy_create_buffer( istream* s, int size );
+	void yy_delete_buffer( struct yy_buffer_state* b );
+	void yyrestart( istream* s );
+
+	virtual int yylex();
+	virtual void switch_streams( istream* new_in, ostream* new_out );
+
+protected:
+	virtual int LexerInput( char* buf, int max_size );
+	virtual void LexerOutput( const char* buf, int size );
+	virtual void LexerError( const char* msg );
+
+	void yyunput( int c, char* buf_ptr );
+	int yyinput();
+
+	void yy_load_buffer_state();
+	void yy_init_buffer( struct yy_buffer_state* b, istream* s );
+	void yy_flush_buffer( struct yy_buffer_state* b );
+
+	int yy_start_stack_ptr;
+	int yy_start_stack_depth;
+	int* yy_start_stack;
+
+	void yy_push_state( int new_state );
+	void yy_pop_state();
+	int yy_top_state();
+
+	yy_state_type yy_get_previous_state();
+	yy_state_type yy_try_NUL_trans( yy_state_type current_state );
+	int yy_get_next_buffer();
+
+	istream* yyin;	// input source for default LexerInput
+	ostream* yyout;	// output sink for default LexerOutput
+
+	struct yy_buffer_state* yy_current_buffer;
+
+	// yy_hold_char holds the character lost when yytext is formed.
+	char yy_hold_char;
+
+	// Number of characters read into yy_ch_buf.
+	int yy_n_chars;
+
+	// Points to current character in buffer.
+	char* yy_c_buf_p;
+
+	int yy_init;		// whether we need to initialize
+	int yy_start;		// start state number
+
+	// Flag which is used to allow yywrap()'s to do buffer switches
+	// instead of setting up a fresh yyin.  A bit of a hack ...
+	int yy_did_buffer_switch_on_eof;
+
+	// The following are not always needed, but may be depending
+	// on use of certain flex features (like REJECT or yymore()).
+
+	yy_state_type yy_last_accepting_state;
+	char* yy_last_accepting_cpos;
+
+	yy_state_type* yy_state_buf;
+	yy_state_type* yy_state_ptr;
+
+	char* yy_full_match;
+	int* yy_full_state;
+	int yy_full_lp;
+
+	int yy_lp;
+	int yy_looking_for_trail_begin;
+
+	int yy_more_flag;
+	int yy_more_len;
+	int yy_more_offset;
+	int yy_prev_more_offset;
+};
+
+#endif


Property changes on: development/source/script/FlexLexer.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: development/source/script/cLexer.h
===================================================================
--- development/source/script/cLexer.h	2006-01-13 20:24:42 UTC (rev 436)
+++ development/source/script/cLexer.h	2006-01-15 21:54:54 UTC (rev 437)
@@ -0,0 +1,16 @@
+/*
+ *  cLexer.h
+ *  avida_test_language
+ *
+ *  Created by David on 1/13/06.
+ *  Copyright 2006 Michigan State University. All rights reserved.
+ *
+ */
+
+#ifndef cLexer_h
+
+#undef yyFlexLexer
+#define yyFlexLexer cLexer
+#include "FlexLexer.h"
+
+#endif


Property changes on: development/source/script/cLexer.h
___________________________________________________________________
Name: svn:eol-style
   + native

Added: development/source/script/cLexer.l
===================================================================
--- development/source/script/cLexer.l	2006-01-13 20:24:42 UTC (rev 436)
+++ development/source/script/cLexer.l	2006-01-15 21:54:54 UTC (rev 437)
@@ -0,0 +1,94 @@
+%{
+/*
+ *  cLexer.l
+ *  avida_test_language
+ *
+ *  Created by David on 1/13/06.
+ *  Copyright 2006 Michigan State University. All rights reserved.
+ *
+ */
+
+#include "cLexer.h"
+  
+#include "AvidaScript.h"
+  
+#include <iostream>
+
+%}
+
+%option c++
+%option noyywrap
+
+%%
+
+#.*\n       /* ignore comments */
+\/\/        /* ignore comments */
+[ \t]+      /* ignore whitespace */
+
+
+;           return SUPRESS;       // End-of-line
+\n          return ENDL;
+
+~           return OP_BIT_NOT;    // Bitwise Operators
+&           return OP_BIT_AND;
+\|          return OP_BIT_OR;
+
+!           return OP_LOGIC_NOT;  // Logic Operators
+&&          return OP_LOGIC_AND;
+\|\|        return OP_LOGIC_OR;
+
+\+          return OP_ADD;        // Arithmetic Operators
+-           return OP_SUB;
+\*          return OP_MUL;
+\/          return OP_DIV;
+%           return OP_MOD;
+
+\.          return DOT;
+=           return ASSIGN;        // Assignment
+
+==          return OP_EQ;         // Relational Operators
+\<=         return OP_LE;
+\>=         return OP_GE;
+\<          return OP_LT;
+\>          return OP_GT;
+!=          return OP_NEQ;
+
+\(          return PREC_OPEN;     // Precedence Grouping
+\)          return PREC_CLOSE;
+
+\[          return IDX_OPEN;      // Index Grouping
+\]          return IDX_CLOSE;
+
+\{          return ARR_OPEN;      // Array Definition Grouping
+\}          return ARR_CLOSE;
+:           return ARR_RANGE;
+\^          return ARR_EXPAN;
+
+bool        return TYPE_BOOL;     // Built-in Types
+char        return TYPE_CHAR;
+float       return TYPE_FLOAT;
+int         return TYPE_INT;
+void        return TYPE_VOID;
+
+if          return CMD_IF;        // If Blocks
+else        return CMD_ELSE;
+endif       return CMD_ENDIF;
+
+while       return CMD_WHILE;     // While Blocks
+endwhile    return CMD_ENDWHILE;
+
+foreach     return CMD_FOREACH;   // Foreach Blocks
+endforeach  return CMD_ENDFOREACH;
+
+([a-zA-Z]|_+[a-zA-Z])[a-zA-Z0-9_]*  return ID;      // Identifiers
+  
+[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?    return FLOAT;   // Literal Values
+[0-9]+                              return INT;
+\"\"                                return STRING;
+\"([^"\\\n]|\\\"|\\\\|\\.)*\"       return STRING;
+\'([^'\\\n]|\\\'|\\\\)\'            return CHAR;
+
+.           return ERR;           // Unrecognized Tokens
+
+
+


Property changes on: development/source/script/cLexer.l
___________________________________________________________________
Name: svn:eol-style
   + native

Added: development/source/targets/CMakeLists.txt
===================================================================
--- development/source/targets/CMakeLists.txt	2006-01-13 20:24:42 UTC (rev 436)
+++ development/source/targets/CMakeLists.txt	2006-01-15 21:54:54 UTC (rev 437)
@@ -0,0 +1,6 @@
+IF(AVD_PRIMITIVE)
+  SUBDIRS(avida)
+ENDIF(AVD_PRIMITIVE)
+IF(AVD_GUI_NCURSES)
+  SUBDIRS(avida-viewer)
+ENDIF(AVD_GUI_NCURSES)


Property changes on: development/source/targets/CMakeLists.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: development/source/targets/avida/CMakeLists.txt
===================================================================
--- development/source/targets/avida/CMakeLists.txt	2006-01-13 20:24:42 UTC (rev 436)
+++ development/source/targets/avida/CMakeLists.txt	2006-01-15 21:54:54 UTC (rev 437)
@@ -0,0 +1,6 @@
+INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
+
+ADD_EXECUTABLE(avida primitive.cc)
+TARGET_LINK_LIBRARIES(avida main classification cpu event analyze drivers analyze cpu main tools)
+LINK_DIRECTORIES(${ALL_LIB_DIRS})
+INSTALL_TARGETS(/work avida)


Property changes on: development/source/targets/avida/CMakeLists.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Copied: development/source/targets/avida/primitive.cc (from rev 436, development/source/main/primitive.cc)

Added: development/source/targets/avida-s/main.cc
===================================================================
--- development/source/targets/avida-s/main.cc	2006-01-13 20:24:42 UTC (rev 436)
+++ development/source/targets/avida-s/main.cc	2006-01-15 21:54:54 UTC (rev 437)
@@ -0,0 +1,23 @@
+/*
+ *  main.cc
+ *  avida_test_language
+ *
+ *  Created by David on 1/13/06.
+ *  Copyright 2006 Michigan State University. All rights reserved.
+ *
+ */
+
+#include "cLexer.h"
+#include <iostream>
+
+int main (int argc, char * const argv[])
+{
+  cLexer* lexer = new cLexer;
+  
+  int tok = lexer->yylex();
+  while (tok) {
+    std::cout << "Token(" << tok << "): '" << lexer->YYText() << "'" << endl;
+    tok = lexer->yylex();
+  }
+  return 0;
+}


Property changes on: development/source/targets/avida-s/main.cc
___________________________________________________________________
Name: svn:eol-style
   + native

Copied: development/source/targets/avida-viewer (from rev 425, development/source/viewer)

Deleted: development/source/targets/avida-viewer/CMakeLists.txt
===================================================================
--- development/source/viewer/CMakeLists.txt	2005-12-20 18:54:00 UTC (rev 425)
+++ development/source/targets/avida-viewer/CMakeLists.txt	2006-01-15 21:54:54 UTC (rev 437)
@@ -1,44 +0,0 @@
-INCLUDE(${PROJECT_SOURCE_DIR}/CMakeModules/FindNcurses.cmake)
-
-IF(AVD_GUI_NCURSES)
-  INCLUDE_DIRECTORIES(
-    ${ALL_INC_DIRS}
-    ${NCURSES_INCLUDE_PATH}
-  )
-
-  SET(libviewer_SOURCES
-    cAvidaDriver_TextPopViewer.cc
-    cBarScreen.cc
-    cEnvironmentScreen.cc
-    cHistScreen.cc
-    cMapScreen.cc
-    cMenuWindow.cc
-    cOptionsScreen.cc
-    cScreen.cc
-    cStatsScreen.cc
-    cSymbolUtil.cc
-    cTextWindow.cc
-    cView.cc
-    cViewInfo.cc
-    cZoomScreen.cc
-  )
-  ADD_LIBRARY(cursesviewer ${libviewer_SOURCES})
-
-  ADD_EXECUTABLE(viewer viewer.cc)
-  TARGET_LINK_LIBRARIES(viewer
-    cursesviewer
-    main
-    classification
-    cpu
-    event
-    analyze
-    cpu
-    main
-    tools
-    trio
-    ${NCURSES_LIBRARY}
-  )
-  LINK_DIRECTORIES(${ALL_LIB_DIRS} ${THIRDPARTY_BLD_DIR}/trio)
-
-  INSTALL_TARGETS(/work viewer)
-ENDIF(AVD_GUI_NCURSES)

Copied: development/source/targets/avida-viewer/CMakeLists.txt (from rev 436, development/source/viewer/CMakeLists.txt)
===================================================================
--- development/source/viewer/CMakeLists.txt	2006-01-13 20:24:42 UTC (rev 436)
+++ development/source/targets/avida-viewer/CMakeLists.txt	2006-01-15 21:54:54 UTC (rev 437)
@@ -0,0 +1,44 @@
+INCLUDE(${PROJECT_SOURCE_DIR}/CMakeModules/FindNcurses.cmake)
+
+INCLUDE_DIRECTORIES(
+  ${ALL_INC_DIRS}
+  ${NCURSES_INCLUDE_PATH}
+)
+
+SET(libviewer_SOURCES
+  cBarScreen.cc
+  cEnvironmentScreen.cc
+  cHistScreen.cc
+  cMapScreen.cc
+  cMenuWindow.cc
+  cOptionsScreen.cc
+  cScreen.cc
+  cStatsScreen.cc
+  cSymbolUtil.cc
+  cTextViewerDriver.cc
+  cTextWindow.cc
+  cView.cc
+  cViewInfo.cc
+  cZoomScreen.cc
+)
+ADD_LIBRARY(cursesviewer ${libviewer_SOURCES})
+
+ADD_EXECUTABLE(avida-viewer viewer.cc)
+TARGET_LINK_LIBRARIES(avida-viewer
+  cursesviewer
+  main
+  classification
+  cpu
+  event
+  analyze
+  drivers
+  analyze
+  cpu
+  main
+  tools
+  trio
+  ${NCURSES_LIBRARY}
+)
+LINK_DIRECTORIES(${ALL_LIB_DIRS} ${THIRDPARTY_BLD_DIR}/trio)
+
+INSTALL_TARGETS(/work avida-viewer)

Deleted: development/source/targets/avida-viewer/cAvidaDriver_TextPopViewer.cc
===================================================================
--- development/source/viewer/cAvidaDriver_TextPopViewer.cc	2005-12-20 18:54:00 UTC (rev 425)
+++ development/source/targets/avida-viewer/cAvidaDriver_TextPopViewer.cc	2006-01-15 21:54:54 UTC (rev 437)
@@ -1,96 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2001 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#include "cAvidaDriver_TextPopViewer.h"
-
-#include "cPopulation.h"
-#include "cView.h"
-#include "cWorld.h"
-
-#include <iostream>
-
-using namespace std;
-
-cAvidaDriver_TextPopViewer::
-cAvidaDriver_TextPopViewer(cWorld* world)
-  : cAvidaDriver_Population(world)
-  , viewer(NULL)
-{
-  cout << "Initializing Text Viewer... " << flush;
-
-  viewer = new cView(world);
-  viewer->SetViewMode(world->GetConfig().VIEW_MODE.Get());
-
-  cout << " ...done" << endl;
-}
-
-cAvidaDriver_TextPopViewer::~cAvidaDriver_TextPopViewer()
-{
-  if (viewer != NULL) EndProg(0);
-}
-
-void cAvidaDriver_TextPopViewer::ProcessOrganisms()
-{
-  // Process the update.
-  const int UD_size = m_world->GetConfig().AVE_TIME_SLICE.Get() * m_world->GetPopulation().GetNumOrganisms();
-  const double step_size = 1.0 / (double) UD_size;
-
-  // Are we stepping through an organism?
-  if (viewer->GetStepOrganism() != -1) {  // Yes we are!
-    // Keep the viewer informed about the organism we are stepping through...
-    for (int i = 0; i < UD_size; i++) {
-      const int next_id = m_world->GetPopulation().ScheduleOrganism();
-      if (next_id == viewer->GetStepOrganism()) viewer->NotifyUpdate();
-      m_world->GetPopulation().ProcessStep(step_size, next_id);
-    }
-  }
-  else {
-    for (int i = 0; i < UD_size; i++) m_world->GetPopulation().ProcessStep(step_size);
-  }
-
-  // end of update stats...
-  m_world->GetPopulation().CalcUpdateStats();
-
-  // Setup the viewer for the new update.
-  if (viewer->GetStepOrganism() == -1) NotifyUpdate();
-}
-
-void cAvidaDriver_TextPopViewer::NotifyComment(const cString & in_string)
-{
-  // Send a commment to the user.
-  viewer->NotifyComment(in_string);
-}
-
-void cAvidaDriver_TextPopViewer::NotifyWarning(const cString & in_string)
-{
-  // Send a warning to the user.
-  viewer->NotifyWarning(in_string);
-}
-
-void cAvidaDriver_TextPopViewer::NotifyError(const cString & in_string)
-{
-  // Send an error to the user.
-  viewer->NotifyError(in_string);
-}
-
-void cAvidaDriver_TextPopViewer::NotifyUpdate()
-{
-  viewer->NotifyUpdate();
-  viewer->NewUpdate();
-
-  // This is needed to have the top bar drawn properly; I'm not sure why...
-  static bool first_update = true;
-  if (first_update) {
-    viewer->Refresh();
-    first_update = false;
-  }
-}
-
-void cAvidaDriver_TextPopViewer::SignalBreakpoint()
-{
-  viewer->DoBreakpoint();
-}

Deleted: development/source/targets/avida-viewer/cAvidaDriver_TextPopViewer.h
===================================================================
--- development/source/viewer/cAvidaDriver_TextPopViewer.h	2005-12-20 18:54:00 UTC (rev 425)
+++ development/source/targets/avida-viewer/cAvidaDriver_TextPopViewer.h	2006-01-15 21:54:54 UTC (rev 437)
@@ -1,34 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2001 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef cAvidaDriver_TextPopViewer_h
-#define cAvidaDriver_TextPopViewer_h
-
-#ifndef cAvidaDriver_Population_h
-#include "cAvidaDriver_Population.h"
-#endif
-
-class cView;
-
-class cAvidaDriver_TextPopViewer : public cAvidaDriver_Population {
-protected:
-  cView* viewer;
-public:
-  cAvidaDriver_TextPopViewer(cWorld* world);
-  ~cAvidaDriver_TextPopViewer();
-
-  virtual void ProcessOrganisms();
-
-  virtual void NotifyComment(const cString & in_string);
-  virtual void NotifyWarning(const cString & in_string);
-  virtual void NotifyError(const cString & in_string);
-  virtual void NotifyUpdate();
-
-  virtual void SignalBreakpoint();
-};
-
-#endif

Copied: development/source/targets/avida-viewer/cTextViewerDriver.cc (from rev 436, development/source/viewer/cTextViewerDriver.cc)

Copied: development/source/targets/avida-viewer/cTextViewerDriver.h (from rev 436, development/source/viewer/cTextViewerDriver.h)

Deleted: development/source/targets/avida-viewer/cZoomScreen.cc
===================================================================
--- development/source/viewer/cZoomScreen.cc	2005-12-20 18:54:00 UTC (rev 425)
+++ development/source/targets/avida-viewer/cZoomScreen.cc	2006-01-15 21:54:54 UTC (rev 437)
@@ -1,2162 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Copyright (C) 1993 - 2001 California Institute of Technology             //
-//                                                                          //
-// Read the COPYING and README files, or contact 'avida at alife.org',         //
-// before continuing.  SOME RESTRICTIONS MAY APPLY TO USE OF THIS FILE.     //
-//////////////////////////////////////////////////////////////////////////////
-
-#include "cZoomScreen.h"
-
-#include "cEnvironment.h"
-#include "functions.h"
-
-#include "cGenotype.h"
-#include "cOrganism.h"
-#include "cPhenotype.h"
-#include "cPopulation.h"
-#include "cPopulationCell.h"
-#include "cStringUtil.h"
-#include "cTaskEntry.h"
-
-#include "cHardwareCPU.h"
-#include "cHardware4Stack.h"
-#include "cHardwareSMT.h"
-
-#include "cView.h"
-#include "cMenuWindow.h"
-
-
-using namespace std;
-
-
-/////////////////////
-//  The Zoom Screen
-/////////////////////
-
-cZoomScreen::cZoomScreen(int y_size, int x_size, int y_start, int x_start,
-                         cViewInfo & in_info, cPopulation & in_pop)
-: cScreen(y_size, x_size, y_start, x_start, in_info), population(in_pop)
-{
-  memory_offset = 0;
-  parasite_zoom = false;
-  mode = ZOOM_MODE_STATS;
-  //map_mode = MAP_BASIC;
-  inst_view_mode = true;
-  active_section = ZOOM_SECTION_MEMORY;
-  task_offset = 0;
-  //hardware_type = info.GetActiveCell()->GetOrganism()->GetHardware().GetType();
-  cur_stack=0;
-  cur_mem_space=0;
-  cur_view_thread=0;
-  
-  //map_mode = MAP_BASIC;
-  mini_center_id = 0;
-  map_x_size = population.GetWorldX();
-  map_y_size = population.GetWorldY();
-}
-
-
-
-
-void cZoomScreen::Draw()
-{
-  // Draw the options block which is on all screens.
-  
-  SetBoldColor(COLOR_WHITE);
-  Print(OPTIONS_Y, OPTIONS_X, "[<]                [>]");
-  if (info.GetPauseLevel()) {
-    Print(OPTIONS_Y+2, OPTIONS_X+2, "Un-[P]ause");
-    Print(OPTIONS_Y+3, OPTIONS_X+2, "[N]ext Update");
-    Print(OPTIONS_Y+4, OPTIONS_X+2, "[Space] Next Inst");
-  } else {
-    Print(OPTIONS_Y+2, OPTIONS_X+2, "[P]ause   ");
-    Print(OPTIONS_Y+3, OPTIONS_X+2, "             ");
-    Print(OPTIONS_Y+4, OPTIONS_X+2, "                 ");
-  }
-  
-  SetBoldColor(COLOR_CYAN);
-  Print(OPTIONS_Y, OPTIONS_X+1, "<");
-  Print(OPTIONS_Y, OPTIONS_X+20, ">");
-  if (info.GetPauseLevel()) {
-    Print(OPTIONS_Y+2, OPTIONS_X+6, "P");
-    Print(OPTIONS_Y+3, OPTIONS_X+3, "N");
-    //Print(OPTIONS_Y+4, OPTIONS_X+3, "Space");
-  } else {
-    Print(OPTIONS_Y+2, OPTIONS_X+3, "P");
-  }
-  
-  // Redirect to the proper Draw() method.
-  
-  if (mode == ZOOM_MODE_CPU)
-  {
-    if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_ORIGINAL) 
-      DrawCPU_Original();
-    if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_4STACK) 
-      DrawCPU_4Stack();
-    if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_SMT) 
-      DrawCPU_SMT();
-  }
-  else if (mode == ZOOM_MODE_STATS) DrawStats();
-  else if (mode == ZOOM_MODE_GENOTYPE) DrawGenotype();
-  
-  Update();
-  Refresh();
-}
-
-void cZoomScreen::DrawStats()
-{
-  // Creature Status
-  
-  SetBoldColor(COLOR_WHITE);
-  
-  Print(1, 0, "GenotypeID:");
-  Print(2, 0, "Geno Name.:");
-  Print(3, 0, "Species.ID:");
-  
-  Print(5, 0, "Fitness...:");
-  Print(6, 0, "Gestation.:");
-  Print(7, 0, "CPU Speed.:");
-  Print(8, 0, "Cur Merit.:");
-  Print(9, 0, "GenomeSize:");
-  Print(10, 0, "Mem Size..:");
-  Print(11, 0, "Faults....:");
-  
-  Print(1,  27, "Location..:");
-  
-  Print(4,  27, "Generation:");
-  Print(5,  27, "Age.......:");
-  Print(6,  27, "Executed..:");
-  Print(7,  27, "LastDivide:");
-  Print(8,  27, "Offspring.:");
-  
-  Print(10, 27, "Thread:");
-  Print(11, 27, "IP....:");
-  
-  if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_ORIGINAL)
-  {
-    Print(12, 27, "AX....:");
-    Print(13, 27, "BX....:");
-    Print(14, 27, "CX....:");
-    Print(15, 27, "Stack.:");
-    Print(16, 27, "---- Memory ----");
-  }
-  else if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_4STACK)
-  {
-    Print(12, 27, "Stack AX:");
-    Print(13, 27, "Stack BX:");
-    Print(14, 27, "Stack CX:");
-    Print(15, 27, "Stack DX:");
-    Print(16, 27, "---- Memory ----");
-  }
-  else if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_SMT)
-  {
-    Print(12, 27, "Stack AX:");
-    Print(13, 27, "Stack BX:");
-    Print(14, 27, "Stack CX:");
-    Print(15, 27, "Stack DX:");
-    Print(16, 27, "---- Memory ----");
-  }
-  
-  Print(CPU_FLAGS_Y, CPU_FLAGS_X, "---- Flags ----");
-  
-  // --== Options ==--
-  SetBoldColor(COLOR_YELLOW);
-  Print(OPTIONS_Y, OPTIONS_X+4, "CPU Stats Zoom");
-  
-  // --== Tasks ==--
-  SetColor(COLOR_WHITE);
-  Box(TASK_X, TASK_Y, 30, Height()-TASK_Y);
-  
-  
-  int task_num = task_offset;
-  int col_num = 0;
-  const cTaskLib & task_lib = population.GetEnvironment().GetTaskLib();
-  for (int cur_col = TASK_X + 2;
-       task_num < info.GetWorld().GetNumTasks();
-       cur_col += 14) {
-    for (int cur_row = TASK_Y + 1;
-         cur_row < Height() - 1 && task_num < info.GetWorld().GetNumTasks();
-         cur_row++) {
-      Print(cur_row, cur_col, "........:");
-      Print(cur_row, cur_col, "%s", task_lib.GetTask(task_num).GetName()());
-      task_num++;
-    }
-    col_num++;
-    if (col_num == 2) break;
-  }
-  
-  if (task_num < info.GetWorld().GetNumTasks() || task_offset != 0) {
-    SetBoldColor(COLOR_WHITE);
-    Print(Height()-1, Width() - 23, " [<-] More [->] ");
-    SetBoldColor(COLOR_CYAN);
-    Print(Height()-1, Width() - 21, "<-");
-    Print(Height()-1, Width() - 11, "->");
-  }
-}
-
-void cZoomScreen::DrawCPU_Original()
-{
-  SetColor(COLOR_WHITE);
-  
-  // --== Registers ==--
-  Box(REG_X, REG_Y, 19, 7);
-  Print(REG_Y + 1, REG_X + 2, "Registers");
-  HLine(REG_Y + 2, REG_X, 19);
-  
-  SetBoldColor(COLOR_WHITE);
-  Print(REG_Y + 3, REG_X + 2, "AX:");
-  Print(REG_Y + 4, REG_X + 2, "BX:");
-  Print(REG_Y + 5, REG_X + 2, "CX:");
-  SetColor(COLOR_WHITE);
-  
-  // --== Inputs ==--
-  Box(INPUT_X, INPUT_Y, 16, 7);
-  Print(INPUT_Y + 1, INPUT_X + 2, "Inputs");
-  HLine(INPUT_Y + 2, INPUT_X, 16);
-  
-  // --== Mini-Map ==--
-  Box(MINI_MAP_X, MINI_MAP_Y, 17, 3);
-  Print(MINI_MAP_Y + 1, MINI_MAP_X + 2, "Mini-Map");
-  // HLine(MINI_MAP_Y + 2, MINI_MAP_X, 19);
-  
-  SetBoldColor(COLOR_WHITE);
-  Print(MINI_MAP_Y + 11, MINI_MAP_X,  "[-]           [+]");
-  SetBoldColor(COLOR_CYAN);
-  Print(MINI_MAP_Y + 11, MINI_MAP_X + 1,  '-');
-  Print(MINI_MAP_Y + 11, MINI_MAP_X + 15, '+');
-  SetColor(COLOR_WHITE);
-  
-  // --== Memory ==--
-  Box(MEMORY_X, MEMORY_Y, 36, 5 + MEMORY_PRE_SIZE + MEMORY_POST_SIZE);
-  Print(MEMORY_Y + 1, MEMORY_X + 2,  "Memory:");
-  HLine(MEMORY_Y + 2, MEMORY_X, 36);
-  
-  // --== Stack ==--
-  Box(STACK_X, STACK_Y, 15, 7);
-  HLine(STACK_Y + 2, STACK_X, 15);
-  
-  // --== Options ==--
-  SetBoldColor(COLOR_YELLOW);
-  Print(OPTIONS_Y, OPTIONS_X+4,    "Component Zoom");
-  SetBoldColor(COLOR_WHITE);
-  
-  Print(OPTIONS_Y+6, OPTIONS_X+2, "[E]dit Component");
-  Print(OPTIONS_Y+7, OPTIONS_X+2, "[V]iew Component");
-  if(info.GetConfig().MAX_CPU_THREADS.Get() >1)
-    Print(OPTIONS_Y+8, OPTIONS_X+2, "Next [T]hread");
-  Print(OPTIONS_Y+9, OPTIONS_X+2, "[TAB] Shift Active");
-  
-  if (info.GetPauseLevel()) {
-    Print(OPTIONS_Y+10, OPTIONS_X+2, "[Arrows] Scroll");
-  } else {
-    Print(OPTIONS_Y+10, OPTIONS_X+2, "               ");
-  }
-  
-  
-  SetBoldColor(COLOR_CYAN);
-  Print(OPTIONS_Y+6, OPTIONS_X+3, "E");
-  Print(OPTIONS_Y+7, OPTIONS_X+3, "V");
-  if(info.GetConfig().MAX_CPU_THREADS.Get() >1)
-    Print(OPTIONS_Y+8, OPTIONS_X+8, "T");
-  Print(OPTIONS_Y+9, OPTIONS_X+3, "TAB");
-  
-  if (info.GetPauseLevel()) {
-    Print(OPTIONS_Y+10, OPTIONS_X+3, "Arrows");
-  }
-  
-  // Highlight the active section...
-  SetActiveSection(active_section);
-  
-  // Add on a bunch of special characters to smooth the view out...
-  Print(INPUT_Y,     INPUT_X, CHAR_TTEE);
-  Print(INPUT_Y + 2, INPUT_X, CHAR_PLUS);
-  Print(INPUT_Y + 6, INPUT_X, CHAR_BTEE);
-  
-  Print(STACK_Y,     STACK_X, CHAR_TTEE);
-  Print(STACK_Y + 2, STACK_X, CHAR_PLUS);
-  Print(STACK_Y + 6, STACK_X, CHAR_BTEE);
-  
-  
-  // A few stats on this screen...
-  
-  SetBoldColor(COLOR_WHITE);
-  
-  Print(13, 52, "Location.....:");
-  Print(14, 52, "Genotype ID..:");
-  Print(15, 52, "Genotype Name:");
-  
-  Print(17, 52, "Faults.......:");
-  Print(18, 52, "Offspring....:");
-  Print(19, 52, "Thread.......:");
-}
-
-void cZoomScreen::DrawCPU_4Stack()
-{
-  SetColor(COLOR_WHITE);
-  
-  // --== Registers ==--
-  Box(REG_X, REG_Y-1, 19, 8);
-  Print(REG_Y, REG_X + 2, "Stacks:");
-  HLine(REG_Y + 1, REG_X, 19);
-  
-  SetBoldColor(COLOR_WHITE);
-  Print(REG_Y + 2, REG_X + 2, "AX:");
-  Print(REG_Y + 3, REG_X + 2, "BX:");
-  Print(REG_Y + 4, REG_X + 2, "CX:");
-  Print(REG_Y + 5, REG_X + 2, "DX:");
-  SetColor(COLOR_WHITE);
-  
-  // --== Inputs ==--
-  Box(INPUT_X, INPUT_Y-1, 16, 8);
-  Print(INPUT_Y, INPUT_X + 2, "Inputs:");
-  HLine(INPUT_Y+1, INPUT_X, 16);
-  
-  // --== Mini-Map ==--
-  Box(MINI_MAP_X, MINI_MAP_Y, 17, 3);
-  Print(MINI_MAP_Y + 1, MINI_MAP_X + 2, "Mini-Map");
-  //HLine(MINI_MAP_Y + 2, MINI_MAP_X, 19);
-  
-  SetBoldColor(COLOR_WHITE);
-  Print(MINI_MAP_Y + 11, MINI_MAP_X,  "[ ]           [ ]");
-  SetBoldColor(COLOR_CYAN);
-  Print(MINI_MAP_Y + 11, MINI_MAP_X + 1,  '-');
-  Print(MINI_MAP_Y + 11, MINI_MAP_X + 15, '+');
-  SetColor(COLOR_WHITE);
-  
-  // --== Memory ==--
-  Box(MEMORY_X, MEMORY_Y, 36, 5 + MEMORY_PRE_SIZE + MEMORY_POST_SIZE);
-  Print(MEMORY_Y + 1, MEMORY_X + 2,  "Memory Space");
-  HLine(MEMORY_Y + 2, MEMORY_X, 36);
-  
-  // --== Stack ==--
-  Box(STACK_X, STACK_Y-1, 15, 8);
-  HLine(STACK_Y + 1, STACK_X, 15);
-  
-  // --== Options ==--
-  SetBoldColor(COLOR_YELLOW);
-  Print(OPTIONS_Y, OPTIONS_X+4,    "Component Zoom");
-  SetBoldColor(COLOR_WHITE);
-  
-  //Print(OPTIONS_Y+6, OPTIONS_X+2, "[E]dit Component");
-  //Print(OPTIONS_Y+7, OPTIONS_X+2, "[V]iew Component");
-  Print(OPTIONS_Y+5, OPTIONS_X+2, "Next Stac[K]");
-  if(info.GetConfig().MAX_CPU_THREADS.Get() >1)
-    Print(OPTIONS_Y+6, OPTIONS_X+2, "Next [T]hread");
-  //Print(OPTIONS_Y+9, OPTIONS_X+2, "[TAB] Shift Active");
-  
-  if (info.GetPauseLevel()) {
-    Print(OPTIONS_Y+7, OPTIONS_X+2, "[UP, DOWN]");
-    Print(OPTIONS_Y+8, OPTIONS_X+2, "Scroll Instruction");
-    Print(OPTIONS_Y+9, OPTIONS_X+2, "[LEFT, RIGHT]");
-    Print(OPTIONS_Y+10, OPTIONS_X+2, "Change Mem Space");
-  } else {
-    Print(OPTIONS_Y+7, OPTIONS_X+2, "               ");
-    Print(OPTIONS_Y+8, OPTIONS_X+2, "                  ");
-    Print(OPTIONS_Y+9, OPTIONS_X+2, "               ");
-    Print(OPTIONS_Y+10, OPTIONS_X+2, "                 ");
-  }
-  
-  
-  SetBoldColor(COLOR_CYAN);
-  Print(OPTIONS_Y+5, OPTIONS_X+12, "K");
-  if(info.GetConfig().MAX_CPU_THREADS.Get() >1)
-    Print(OPTIONS_Y+6, OPTIONS_X+8, "T");
-  
-  if (info.GetPauseLevel()) {
-    Print(OPTIONS_Y+7, OPTIONS_X+3, "UP, DOWN");
-    Print(OPTIONS_Y+9, OPTIONS_X+3, "LEFT, RIGHT");
-  }
-  
-  // Highlight the active section...
-  SetActiveSection(active_section);
-  
-  // Add on a bunch of special characters to smooth the view out...
-  Print(INPUT_Y - 1, INPUT_X, CHAR_TTEE);
-  Print(INPUT_Y + 1, INPUT_X, CHAR_PLUS);
-  Print(INPUT_Y + 6, INPUT_X, CHAR_BTEE);
-  
-  Print(STACK_Y - 1, STACK_X, CHAR_TTEE);
-  Print(STACK_Y + 1, STACK_X, CHAR_PLUS);
-  Print(STACK_Y + 6, STACK_X, CHAR_BTEE);
-  
-  
-  // A few stats on this screen...
-  
-  SetBoldColor(COLOR_WHITE);
-  
-  Print(13, 52, "Location.....:");
-  Print(14, 52, "Genotype ID..:");
-  Print(15, 52, "Genotype Name:");
-  
-  Print(17, 52, "Faults.......:");
-  Print(18, 52, "Offspring....:");
-  Print(19, 52, "Thread.......:");
-}
-
-void cZoomScreen::DrawCPU_SMT()
-{
-  SetColor(COLOR_WHITE);
-  
-  // --== Registers ==--
-  Box(REG_X, REG_Y-1, 19, 8);
-  Print(REG_Y, REG_X + 2, "Stacks:");
-  HLine(REG_Y + 1, REG_X, 19);
-  
-  SetBoldColor(COLOR_WHITE);
-  Print(REG_Y + 2, REG_X + 2, "AX:");
-  Print(REG_Y + 3, REG_X + 2, "BX:");
-  Print(REG_Y + 4, REG_X + 2, "CX:");
-  Print(REG_Y + 5, REG_X + 2, "DX:");
-  SetColor(COLOR_WHITE);
-  
-  // --== Inputs ==--
-  Box(INPUT_X, INPUT_Y-1, 16, 8);
-  Print(INPUT_Y, INPUT_X + 2, "Inputs:");
-  HLine(INPUT_Y+1, INPUT_X, 16);
-  
-  // --== Mini-Map ==--
-  Box(MINI_MAP_X, MINI_MAP_Y, 17, 3);
-  Print(MINI_MAP_Y + 1, MINI_MAP_X + 2, "Mini-Map");
-  //HLine(MINI_MAP_Y + 2, MINI_MAP_X, 19);
-  
-  SetBoldColor(COLOR_WHITE);
-  Print(MINI_MAP_Y + 11, MINI_MAP_X,  "[ ]           [ ]");
-  SetBoldColor(COLOR_CYAN);
-  Print(MINI_MAP_Y + 11, MINI_MAP_X + 1,  '-');
-  Print(MINI_MAP_Y + 11, MINI_MAP_X + 15, '+');
-  SetColor(COLOR_WHITE);
-  
-  // --== Memory ==--
-  Box(MEMORY_X, MEMORY_Y, 36, 5 + MEMORY_PRE_SIZE + MEMORY_POST_SIZE);
-  Print(MEMORY_Y + 1, MEMORY_X + 2,  "Memory Space");
-  HLine(MEMORY_Y + 2, MEMORY_X, 36);
-  
-  // --== Stack ==--
-  Box(STACK_X, STACK_Y-1, 15, 8);
-  HLine(STACK_Y + 1, STACK_X, 15);
-  
-  // --== Options ==--
-  SetBoldColor(COLOR_YELLOW);
-  Print(OPTIONS_Y, OPTIONS_X+4,    "Component Zoom");
-  SetBoldColor(COLOR_WHITE);
-  
-  //Print(OPTIONS_Y+6, OPTIONS_X+2, "[E]dit Component");
-  //Print(OPTIONS_Y+7, OPTIONS_X+2, "[V]iew Component");
-  Print(OPTIONS_Y+5, OPTIONS_X+2, "Next Stac[K]");
-  if(info.GetConfig().MAX_CPU_THREADS.Get() >1)
-    Print(OPTIONS_Y+6, OPTIONS_X+2, "Next [T]hread");
-  //Print(OPTIONS_Y+9, OPTIONS_X+2, "[TAB] Shift Active");
-  
-  if (info.GetPauseLevel()) {
-    Print(OPTIONS_Y+7, OPTIONS_X+2, "[UP, DOWN]");
-    Print(OPTIONS_Y+8, OPTIONS_X+2, "Scroll Instruction");
-    Print(OPTIONS_Y+9, OPTIONS_X+2, "[LEFT, RIGHT]");
-    Print(OPTIONS_Y+10, OPTIONS_X+2, "Change Mem Space");
-  } else {
-    Print(OPTIONS_Y+7, OPTIONS_X+2, "               ");
-    Print(OPTIONS_Y+8, OPTIONS_X+2, "                  ");
-    Print(OPTIONS_Y+9, OPTIONS_X+2, "               ");
-    Print(OPTIONS_Y+10, OPTIONS_X+2, "                 ");
-  }
-  
-  
-  SetBoldColor(COLOR_CYAN);
-  Print(OPTIONS_Y+5, OPTIONS_X+12, "K");
-  if(info.GetConfig().MAX_CPU_THREADS.Get() >1)
-    Print(OPTIONS_Y+6, OPTIONS_X+8, "T");
-  
-  if (info.GetPauseLevel()) {
-    Print(OPTIONS_Y+7, OPTIONS_X+3, "UP, DOWN");
-    Print(OPTIONS_Y+9, OPTIONS_X+3, "LEFT, RIGHT");
-  }
-  
-  // Highlight the active section...
-  SetActiveSection(active_section);
-  
-  // Add on a bunch of special characters to smooth the view out...
-  Print(INPUT_Y - 1, INPUT_X, CHAR_TTEE);
-  Print(INPUT_Y + 1, INPUT_X, CHAR_PLUS);
-  Print(INPUT_Y + 6, INPUT_X, CHAR_BTEE);
-  
-  Print(STACK_Y - 1, STACK_X, CHAR_TTEE);
-  Print(STACK_Y + 1, STACK_X, CHAR_PLUS);
-  Print(STACK_Y + 6, STACK_X, CHAR_BTEE);
-  
-  
-  // A few stats on this screen...
-  
-  SetBoldColor(COLOR_WHITE);
-  
-  Print(13, 52, "Location.....:");
-  Print(14, 52, "Genotype ID..:");
-  Print(15, 52, "Genotype Name:");
-  
-  Print(17, 52, "Faults.......:");
-  Print(18, 52, "Offspring....:");
-  Print(19, 52, "Thread.......:");
-}
-
-void cZoomScreen::DrawGenotype()
-{
-  SetBoldColor(COLOR_YELLOW);
-  Print(OPTIONS_Y, OPTIONS_X + 4, "Genotype Zoom");
-  
-  // Genotype status.
-  
-  SetBoldColor(COLOR_WHITE);
-  
-  Print(1, 0, "GenotypeID:");
-  Print(2, 0, "Geno Name.:");
-  Print(3, 0, "Species ID:");
-  
-  Print(5, 0, "Abundance.:");
-  Print(6, 0, "Length....:");
-  Print(7, 0, "CopyLength:");
-  Print(8, 0, "Exe Length:");
-  
-  Print(10, 0, "Fitness...:");
-  Print(11, 0, "Gestation.:");
-  Print(12, 0, "Merit.....:");
-  Print(13, 0, "ReproRate.:");
-  
-  Print(1, 27, "Update Born:");
-  Print(2, 27, "Parent ID..:");
-  Print(3, 27, "Parent Dist:");
-  Print(4, 27, "Gene Depth.:");
-  
-  Print(6, 27,  "-- This Update --");
-  Print(7, 27,  "Deaths.....:");
-  Print(8, 27,  "Divides....:");
-  Print(9, 27,  "Breed True.:");
-  Print(10, 27, "Breed In...:");
-  Print(11, 27, "Breed Out..:");
-  
-  Print(13, 27, "-- Totals --");
-  Print(14, 27, "Abundance..:");
-  Print(15, 27, "Divides....:");
-  Print(16, 27, "Breed True.:");
-  Print(17, 27, "Breed In...:");
-  Print(18, 27, "Breed Out..:");
-}
-
-void cZoomScreen::Update()
-{
-  if (info.GetActiveCell() == NULL ||
-      info.GetActiveCell()->IsOccupied() == false) return;
-  
-  cHardwareBase & hardware = info.GetActiveCell()->GetOrganism()->GetHardware();
-  if(mode == ZOOM_MODE_CPU) UpdateCPU(hardware);
-  else if (mode == ZOOM_MODE_STATS) UpdateStats(hardware);
-  else if (mode == ZOOM_MODE_GENOTYPE) UpdateGenotype();
-  
-  Refresh();
-}
-
-void cZoomScreen::UpdateStats(cHardwareBase & hardware)
-{
-  if (info.GetActiveCell() == NULL ||
-      info.GetActiveCell()->IsOccupied() == false) return;
-  
-  cGenotype * genotype = info.GetActiveGenotype();
-  cPhenotype & phenotype = info.GetActiveCell()->GetOrganism()->GetPhenotype();
-  
-  //cHardwareBase & hardware =
-  //  info.GetActiveCell()->GetOrganism()->GetHardware();
-  
-  SetBoldColor(COLOR_CYAN);
-  
-  // if there is an Active Genotype name AND it is not empty, show it
-  Print(1, 12, "%9d", info.GetActiveGenotypeID());
-  Print(2, 12, "%s", info.GetActiveName()());
-  
-  if (info.GetActiveSpecies())
-    Print(3, 12, "%9d", info.GetActiveSpeciesID());
-  else
-    Print(3, 15, "(none) ");
-  
-  const cMerit cur_merit(phenotype.GetCurBonus());
-  
-  PrintFitness(5, 14, phenotype.GetFitness());
-  Print(6, 15, "%6d ", phenotype.GetGestationTime());
-  PrintMerit(7, 14, phenotype.GetMerit());
-  PrintMerit(8, 14, cur_merit);
-  Print(9, 15, "%6d ", genotype ? genotype->GetLength() : 0);
-  Print(10, 15, "%6d ", hardware.GetMemory().GetSize());
-  
-  Print(11, 15, "%6d ", phenotype.GetCurNumErrors());
-  
-  Print(4, 39, "%9d ", phenotype.GetGeneration());
-  Print(5, 39, "%9d ", phenotype.GetAge());
-  Print(6, 39, "%9d ", phenotype.GetTimeUsed());
-  Print(7, 39, "%9d ", phenotype.GetGestationStart());
-  Print(8, 39, "%9d ", phenotype.GetNumDivides());
-  
-  if (info.GetThreadLock() != -1) Print(10, 36, "LOCKED");
-  else Print(10, 36, "      ");
-  
-  if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_ORIGINAL)
-    UpdateStats_CPU(hardware);
-  else if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_4STACK)
-    UpdateStats_4Stack(hardware);
-  else if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_SMT)
-    UpdateStats_SMT(hardware);
-  
-  if (phenotype.ParentTrue()) SetBoldColor(COLOR_CYAN);
-  else SetColor(COLOR_CYAN);
-  Print(CPU_FLAGS_Y + 2, CPU_FLAGS_X + 1, "Parent True");
-  
-  if (phenotype.IsInjected()) SetBoldColor(COLOR_CYAN);
-  else SetColor(COLOR_CYAN);
-  Print(CPU_FLAGS_Y + 3, CPU_FLAGS_X + 1, "Injected");
-  
-  if (phenotype.IsParasite()) SetBoldColor(COLOR_CYAN);
-  else SetColor(COLOR_CYAN);
-  Print(CPU_FLAGS_Y + 4, CPU_FLAGS_X + 1, "Parasite");
-  
-  if (phenotype.IsMutated()) SetBoldColor(COLOR_CYAN);
-  else SetColor(COLOR_CYAN);
-  Print(CPU_FLAGS_Y + 5, CPU_FLAGS_X + 1, "Mutated");
-  
-  if (phenotype.IsModified()) SetBoldColor(COLOR_CYAN);
-  else SetColor(COLOR_CYAN);
-  Print(CPU_FLAGS_Y + 6, CPU_FLAGS_X + 1, "Modified");
-  
-  SetColor(COLOR_WHITE);
-  
-  if (info.GetPauseLevel() && info.GetActiveCell() && phenotype.IsParasite()) {
-    if (parasite_zoom == true) Print(17, 12, "[X] Host Code    ");
-    else Print(17, 12, "[X] Parasite Code");
-  }
-  
-  // Place the task information onto the screen.
-  SetColor(COLOR_CYAN);
-  
-  int task_num = task_offset;
-  int col_num = 0;
-  for (int cur_col = TASK_X + 12;
-       task_num < info.GetWorld().GetNumTasks();
-       cur_col += 14) {
-    for (int cur_row = TASK_Y + 1;
-         cur_row <= Height() - 2 && task_num < info.GetWorld().GetNumTasks();
-         cur_row++) {
-      if (col_num < 2) {
-        Print(cur_row, cur_col, "%2d", phenotype.GetCurTaskCount()[task_num]);
-      }
-      task_num++;
-    }
-    col_num++;
-  }
-  
-  
-  
-  if (info.GetActiveCell() == NULL) {
-    info.SetActiveCell( &(population.GetCell(0)) );
-  }
-  SetBoldColor(COLOR_WHITE);
-  
-  // Figure out which CPU we're pointing at (useful for watching parasites)
-  Print(2, 27, "Facing....:");
-  
-  // Show the location of the CPU we are looking at.
-  SetBoldColor(COLOR_CYAN);
-  Print(1, 40, "[%2d, %2d] ",
-        info.GetActiveID() % population.GetWorldX(),
-        info.GetActiveID() / population.GetWorldY());
-  
-  // Now show the location of the CPU we are facing.
-  int id = info.GetActiveCell()->ConnectionList().GetFirst()->GetID();
-  Print(2, 40, "[%2d, %2d] ",
-        id % population.GetWorldX(), id / population.GetWorldY());
-  
-  
-  
-}
-
-void cZoomScreen::UpdateStats_CPU(cHardwareBase & hardware)
-{
-  cHardwareCPU & hardwareCPU = (cHardwareCPU &) hardware;
-  
-  Print(10, 43, "%2d/%2d", hardwareCPU.GetCurThread() + 1,
-        hardwareCPU.GetNumThreads());
-  
-  Print(12, 34, "%14d", hardwareCPU.GetRegister(0));
-  Print(13, 34, "%14d", hardwareCPU.GetRegister(1));
-  Print(14, 34, "%14d", hardwareCPU.GetRegister(2));
-  Print(15, 34, "%14d", hardwareCPU.GetStack(0));
-  
-  cHeadCPU inst_ptr(hardwareCPU.IP());
-  const cInstSet & inst_set = hardwareCPU.GetInstSet();
-  
-  for (int pos = 0; pos < 3; pos++) {
-    // Clear the line
-    Print(17+pos, 29, "                    ");
-    if (inst_ptr.InMemory() == false) continue;
-    if (pos == 1) SetColor(COLOR_CYAN);
-    
-    // Draw the current instruction.
-    Print(17+pos, 29, "%s",	inst_set.GetName(inst_ptr.GetInst())());
-    inst_ptr.Advance();
-  }
-  
-  // Flags...
-  if (hardwareCPU.GetMalActive()) SetBoldColor(COLOR_CYAN);
-  else SetColor(COLOR_CYAN);
-  Print(CPU_FLAGS_Y + 1, CPU_FLAGS_X + 1, "Mem Allocated");
-  
-  // And print the IP.
-  const cHeadCPU & active_inst_ptr = hardwareCPU.IP();
-  // @CAO assume no parasites for now.
-  int cur_id = info.GetActiveCell()->GetID();
-  //active_inst_ptr.GetCurHardware()->GetOrganism()->GetEnvironment()->GetID();
-  Print(11, 36, "%12s", cStringUtil::Stringf("[%2d,%2d] : %2d",
-                                             cur_id % population.GetWorldX(), cur_id / population.GetWorldX(),
-                                             active_inst_ptr.GetPosition())() );
-}
-
-void cZoomScreen::UpdateStats_4Stack(cHardwareBase & hardware)
-{
-  cHardware4Stack & hardware4Stack = (cHardware4Stack &) hardware;
-  
-  Print(10, 43, "%2d/%2d", hardware4Stack.GetCurThread() + 1,
-        hardware4Stack.GetNumThreads());
-  
-  Print(12, 34, "%14d", hardware4Stack.GetStack(0, 0));
-  Print(13, 34, "%14d", hardware4Stack.GetStack(0, 1));
-  Print(14, 34, "%14d", hardware4Stack.GetStack(0, 2));
-  Print(15, 34, "%14d", hardware4Stack.GetStack(0, 3));
-  
-  cHeadMultiMem inst_ptr(hardware4Stack.IP());
-  const cInstSet & inst_set = hardware4Stack.GetInstSet();
-  
-  for (int pos = 0; pos < 3; pos++) {
-    // Clear the line
-    Print(17+pos, 29, "                    ");
-    if (inst_ptr.InMemory() == false) continue;
-    if (pos == 1) SetColor(COLOR_CYAN);
-    
-    // Draw the current instruction.
-    Print(17+pos, 29, "%s",	inst_set.GetName(inst_ptr.GetInst())());
-    inst_ptr.Advance();
-  }
-  
-  // And print the IP.
-  const cHeadMultiMem & active_inst_ptr = hardware4Stack.IP();
-  // @CAO assume no parasites for now.
-  //int cur_id = info.GetActiveCell()->GetID();
-  //active_inst_ptr.GetCurHardware()->GetOrganism()->GetEnvironment()->GetID();
-  Print(11, 36, "%12s", cStringUtil::Stringf("(%2d, %2d)",
-                                             active_inst_ptr.GetMemSpace(),
-                                             active_inst_ptr.GetPosition())() );
-}
-
-void cZoomScreen::UpdateStats_SMT(cHardwareBase & hardware)
-{
-  cHardwareSMT& hardware4Stack = (cHardwareSMT&) hardware;
-  
-  Print(10, 43, "%2d/%2d", hardware4Stack.GetCurThread() + 1,
-        hardware4Stack.GetNumThreads());
-  
-  Print(12, 34, "%14d", hardware4Stack.GetStack(0, 0));
-  Print(13, 34, "%14d", hardware4Stack.GetStack(0, 1));
-  Print(14, 34, "%14d", hardware4Stack.GetStack(0, 2));
-  Print(15, 34, "%14d", hardware4Stack.GetStack(0, 3));
-    
-  cHeadMultiMem inst_ptr(hardware4Stack.IP());
-  const cInstSet & inst_set = hardware4Stack.GetInstSet();
-  
-  for (int pos = 0; pos < 3; pos++) {
-    // Clear the line
-    Print(17+pos, 29, "                    ");
-    if (inst_ptr.InMemory() == false) continue;
-    if (pos == 1) SetColor(COLOR_CYAN);
-    
-    // Draw the current instruction.
-    Print(17+pos, 29, "%s",	inst_set.GetName(inst_ptr.GetInst())());
-    inst_ptr.Advance();
-  }
-  
-  // And print the IP.
-  const cHeadMultiMem & active_inst_ptr = hardware4Stack.IP();
-  // @CAO assume no parasites for now.
-  //int cur_id = info.GetActiveCell()->GetID();
-  //active_inst_ptr.GetCurHardware()->GetOrganism()->GetEnvironment()->GetID();
-  Print(11, 36, "%12s", cStringUtil::Stringf("(%2d, %2d)",
-                                             active_inst_ptr.GetMemSpace(),
-                                             active_inst_ptr.GetPosition())() );
-}
-
-void cZoomScreen::UpdateCPU(cHardwareBase & hardware)
-{
-  // Place the visible section of the current memory onto the screen.
-  
-  SetBoldColor(COLOR_WHITE);
-  if (info.GetPauseLevel() == PAUSE_OFF) {
-    // If not paused, then set user desired offset to zero AND always show
-    // the code that is executing (ie. do not show original Parasite code if
-    // host is executing)
-    memory_offset = 0;
-    parasite_zoom = false;
-  }
-  
-  Print(14, 69, "%10d", info.GetActiveGenotypeID());
-  Print(15, 69, "%10s", info.GetActiveName()());
-  
-  cPhenotype & phenotype = info.GetActiveCell()->GetOrganism()->GetPhenotype();
-  Print(17, 69, "%10d", phenotype.GetCurNumErrors());
-  Print(18, 69, "%10d", phenotype.GetNumDivides());
-  if (info.GetThreadLock() != -1) Print(19, 67, "LOCKED");
-  else Print(19, 67, "      ");
-  
-  if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_ORIGINAL)
-    UpdateCPU_Original(hardware);
-  else if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_4STACK)
-    UpdateCPU_4Stack(hardware);
-  else if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_SMT)
-    UpdateCPU_SMT(hardware);
-  
-  // Place the input buffer on the screen.
-  
-  SetBoldColor(COLOR_CYAN);
-  Print(INPUT_Y+3, INPUT_X+2, "%12d", info.GetActiveCell()->GetInput(0));
-  
-  SetColor(COLOR_CYAN);
-  for (int i = 1; i < nHardware::IO_SIZE; i++) {
-    Print(INPUT_Y+3+i, INPUT_X+2, "%12d", info.GetActiveCell()->GetInput(i));
-  }
-  
-  const cString & cur_fault = phenotype.GetFault();
-  if (cur_fault.GetSize() > 0) {
-    SetBoldColor(COLOR_RED);
-    Print(FAULT_Y, FAULT_X, "Fault:");
-    SetBoldColor(COLOR_CYAN);
-    Print(FAULT_Y, FAULT_X + 7, cur_fault());
-  } else {
-    Print(FAULT_Y, FAULT_X, "                                        ");
-  }
-  
-  SetBoldColor(COLOR_WHITE);
-  
-  Print(13, 70, "[%3d,%3d] ",
-        info.GetActiveID() % population.GetWorldX(),
-        info.GetActiveID() / population.GetWorldY());
-  
-  SetBoldColor(COLOR_CYAN);
-  Refresh();
-}
-
-void cZoomScreen::UpdateCPU_Original(cHardwareBase & hardware)
-{
-  cHardwareCPU & hardwareCPU = (cHardwareCPU &) hardware;
-  //hardwareCPU.SetThread(cur_view_thread);
-  
-  // Place the registers onto the screen.
-  SetBoldColor(COLOR_CYAN);
-  for (int i = 0; i < nHardwareCPU::NUM_REGISTERS; i++) {
-    Print(REG_Y+3 + i, REG_X+6, "%11d", hardwareCPU.GetRegister(i));
-  }
-  
-  // Place the active stack onto the screen.
-  
-  // Stack A
-  // SetBoldColor(COLOR_CYAN);   // -Redundant
-  SetColor(COLOR_WHITE);
-  Print(STACK_Y + 1, STACK_X + 2, "Stack %s", 'A' + hardwareCPU.GetActiveStack());
-  
-  SetBoldColor(COLOR_CYAN);
-  Print(STACK_Y+3, STACK_X + 2, "%11d", hardwareCPU.GetStack(0));
-  SetColor(COLOR_CYAN);
-  for (int i = 1; i <= 2; i++) {
-    Print(STACK_Y+3 + i, STACK_X+2, "%11d", hardwareCPU.GetStack(i));
-  }
-  
-  // Place the input buffer on the screen.
-  
-  SetBoldColor(COLOR_CYAN);
-  Print(INPUT_Y+3, INPUT_X+2, "%12d", info.GetActiveCell()->GetInput(0));
-  
-  SetColor(COLOR_CYAN);
-  for (int i = 1; i < nHardware::IO_SIZE; i++) {
-    Print(INPUT_Y+3+i, INPUT_X+2, "%12d", info.GetActiveCell()->GetInput(i));
-  }
-  
-  Print(19, 74, "%2d/%2d", hardwareCPU.GetCurThread() + 1,
-        hardwareCPU.GetNumThreads());
-  
-  // This line gets the creature that is currently executing. Usually the
-  // creature we are viewing, but can also be a different one (if this is a
-  // parasite).
-  
-  const cCPUMemory & memory = (parasite_zoom) ?
-    hardware.GetMemory() : hardwareCPU.IP().GetMemory();
-  SetColor(COLOR_WHITE);
-  Print(MEMORY_Y + 1, MEMORY_X + 9, "%4d", memory.GetSize());
-  
-  
-  
-  // Nothing past this point gets executed for empty creatures....
-  if (memory.GetSize() == 0) {
-    for (int i = -MEMORY_PRE_SIZE; i <= MEMORY_POST_SIZE; i++) {
-      HLine(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X, 36);
-    }
-    return;
-  }
-  
-  int adj_inst_ptr = 0;
-  int base_inst_ptr = hardwareCPU.IP().GetPosition();
-  if (base_inst_ptr < 0 || parasite_zoom == true) base_inst_ptr = 0;
-  
-  const cInstSet & inst_set = hardwareCPU.GetInstSet();
-  
-  // Determine the center (must be between 0 and size - 1)
-  int center_pos = (base_inst_ptr + memory_offset) % memory.GetSize();
-  if (center_pos < 0) center_pos += memory.GetSize();
-  
-  for (int i = -MEMORY_PRE_SIZE; i <= MEMORY_POST_SIZE; i++) {
-    adj_inst_ptr = (center_pos + i) % (memory.GetSize() + 1);
-    if (adj_inst_ptr < 0) adj_inst_ptr += memory.GetSize() + 1;
-    
-    if (adj_inst_ptr == memory.GetSize()) {
-      HLine(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X, 36);
-    } else {
-      Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X, CHAR_VLINE);
-      Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 35, CHAR_VLINE);
-      
-      // If we are on the instruction about to be executed by the CPU,
-      // hilight it...
-      if (adj_inst_ptr == base_inst_ptr) {
-        SetBoldColor(COLOR_WHITE);
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 1, "%3d: ",
-              adj_inst_ptr);
-        SetBoldColor(COLOR_CYAN);
-      } else {
-        if (i == 0) SetBoldColor(COLOR_YELLOW);
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 1, "%3d: ",
-              adj_inst_ptr);
-        // If we are scrolling through memory, make the current position
-        // yellow.
-        if (i == 0) SetColor(COLOR_YELLOW);
-        else SetColor(COLOR_CYAN);
-      }
-      
-      // Print the instruction...
-      Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 6, "%8s ",
-            inst_set.GetName( memory[adj_inst_ptr] )());
-      
-      Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 15,
-            "                    ");
-      
-      // Only list the "Cpy" flag or the "Inj" flag...
-      if (memory.FlagCopied(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 15, "Cpy");
-      }
-      if (memory.FlagInjected(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 15, "Inj");
-      }
-      
-      // Other flags we're interested in...
-      if (memory.FlagMutated(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 19, "Mut");
-      }
-      if (memory.FlagExecuted(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 23, "Exe");
-      }
-      if (memory.FlagBreakpoint(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 27, "Bp");
-      }
-      
-      if (adj_inst_ptr == hardwareCPU.GetHead(nHardware::HEAD_READ).GetPosition()) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 30, "R");
-      }
-      if (adj_inst_ptr == hardwareCPU.GetHead(nHardware::HEAD_WRITE).GetPosition()) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 31, "W");
-      }
-      if (adj_inst_ptr == hardwareCPU.GetHead(nHardware::HEAD_FLOW).GetPosition()) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 32, "F");
-      }
-    }
-    SetColor(COLOR_WHITE);
-  }
-  
-  DrawMiniMap();
-}
-
-void cZoomScreen::UpdateCPU_4Stack(cHardwareBase & hardware)
-{
-  cHardware4Stack & hardware4Stack = (cHardware4Stack &) hardware;
-  
-  if(cur_view_thread>=hardware4Stack.GetNumThreads())
-  {
-    cur_view_thread=0;
-    cur_mem_space = hardware4Stack.IP(cur_view_thread).GetMemSpace();
-  }
-  //hardware4Stack.SetThread(cur_view_thread);
-  cHeadMultiMem & cur_ip = hardware4Stack.IP(cur_view_thread);
-  
-  // Place the stacks onto the screen.
-  SetBoldColor(COLOR_CYAN);
-  for (int i = 0; i < 4; i++) {
-    Print(REG_Y+2 + i, REG_X+6, "%11d", hardware4Stack.GetStack(0, i, cur_view_thread));
-  }
-  
-  // Place the active stack onto the screen.
-  
-  // Stack AX
-  //SetBoldColor(COLOR_CYAN);   // -Redundant
-  SetColor(COLOR_WHITE);
-  
-  Print(STACK_Y, STACK_X + 2, "Stack   :");
-  Print(STACK_Y, STACK_X + 8, "%cX" , 'A' + cur_stack);
-  
-  //SetBoldColor(COLOR_CYAN);
-  //Print(STACK_Y+2, STACK_X + 2, "%11d", hardware4Stack.GetStack(0, cur_stack));
-  SetColor(COLOR_CYAN);
-  for (int i = 0; i <= 3; i++) {
-    Print(STACK_Y+2 + i, STACK_X+2, "%11d", hardware4Stack.GetStack(i, cur_stack, cur_view_thread));
-  }
-  
-  Print(19, 74, "%2d/%2d", cur_view_thread + 1,
-        hardware4Stack.GetNumThreads());
-  
-  // This line gets the creature that is currently executing. Usually the
-  // creature we are viewing, but can also be a different one (if this is a
-  // parasite).
-  
-  const cCPUMemory & memory = hardware4Stack.GetMemory(cur_mem_space);
-  SetBoldColor(COLOR_BLUE);
-  Print(MEMORY_Y + 1, MEMORY_X + 8, " Space ");	
-  SetColor(COLOR_WHITE);
-  Print(MEMORY_Y + 1, MEMORY_X + 15, "%2d", cur_mem_space);
-  
-  Print(MEMORY_Y + 1, MEMORY_X + 17, ":");	
-  Print(MEMORY_Y + 1, MEMORY_X + 18, "%4d", memory.GetSize());
-  
-  
-  
-  // Nothing past this point gets executed for empty creatures....
-  if (memory.GetSize() == 0) {
-    for (int i = -MEMORY_PRE_SIZE; i <= MEMORY_POST_SIZE; i++) {
-      HLine(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X, 36);
-    }
-    return;
-  }
-  
-  int adj_inst_ptr = 0;
-  int base_inst_ptr = cur_ip.GetPosition();
-  if (base_inst_ptr < 0 || parasite_zoom == true) base_inst_ptr = 0;
-  
-  const cInstSet & inst_set = hardware4Stack.GetInstSet();
-  
-  // Determine the center (must be between 0 and size - 1)
-  int center_pos = (base_inst_ptr + memory_offset) % memory.GetSize();
-  if (center_pos < 0) center_pos += memory.GetSize();
-  
-  for (int i = -MEMORY_PRE_SIZE; i <= MEMORY_POST_SIZE; i++) {
-    adj_inst_ptr = (center_pos + i) % (memory.GetSize() + 1);
-    if (adj_inst_ptr < 0) adj_inst_ptr += memory.GetSize() + 1;
-    
-    if (adj_inst_ptr == memory.GetSize()) {
-      HLine(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X, 36);
-    } else {
-      Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X, CHAR_VLINE);
-      Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 35, CHAR_VLINE);
-      
-      // If we are on the instruction about to be executed by the CPU,
-      // hilight it...
-      if (adj_inst_ptr == base_inst_ptr && 
-          hardware4Stack.IP(cur_view_thread).GetMemSpace() == cur_mem_space) {
-        SetBoldColor(COLOR_WHITE);
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 1, "%3d: ",
-              adj_inst_ptr);
-        SetBoldColor(COLOR_CYAN);
-      } else {
-        if (i == 0) SetBoldColor(COLOR_YELLOW);
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 1, "%3d: ",
-              adj_inst_ptr);
-        // If we are scrolling through memory, make the current position
-        // yellow.
-        if (i == 0) SetColor(COLOR_YELLOW);
-        else SetColor(COLOR_CYAN);
-      }
-      
-      // Print the instruction...
-      Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 6, "%8s ",
-            inst_set.GetName( memory[adj_inst_ptr] )());
-      
-      Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 15,
-            "                    ");
-      
-      // Only list the "Cpy" flag or the "Inj" flag...
-      if (memory.FlagCopied(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 16, "Cpy");
-      }
-      if (memory.FlagInjected(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 16, "Inj");
-      }
-      
-      // Other flags we're interested in...
-      if (memory.FlagMutated(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 20, "Mut");
-      }
-      if (memory.FlagExecuted(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 24, "Exe");
-      }
-      if (memory.FlagBreakpoint(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 28, "Bp");
-      }
-      
-      if (adj_inst_ptr == hardware4Stack.GetHead(nHardware::HEAD_READ, cur_view_thread).GetPosition() &&
-          cur_mem_space == hardware4Stack.GetHead(nHardware::HEAD_READ, cur_view_thread).GetMemSpace()) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 31, "R");
-      }
-      if (adj_inst_ptr == hardware4Stack.GetHead(nHardware::HEAD_WRITE, cur_view_thread).GetPosition() &&
-          cur_mem_space == hardware4Stack.GetHead(nHardware::HEAD_WRITE, cur_view_thread).GetMemSpace()) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 32, "W");
-      }
-      if (adj_inst_ptr == hardware4Stack.GetHead(nHardware::HEAD_FLOW, cur_view_thread).GetPosition() &&
-          cur_mem_space == hardware4Stack.GetHead(nHardware::HEAD_FLOW, cur_view_thread).GetMemSpace()) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 33, "F");
-      }
-    }
-    SetColor(COLOR_WHITE);
-  }
-  
-  DrawMiniMap();
-}
-
-void cZoomScreen::UpdateCPU_SMT(cHardwareBase & hardware)
-{
-  cHardwareSMT& hardware4Stack = (cHardwareSMT&) hardware;
-  
-  if(cur_view_thread>=hardware4Stack.GetNumThreads())
-  {
-    cur_view_thread=0;
-    cur_mem_space = hardware4Stack.IP(cur_view_thread).GetMemSpace();
-  }
-  //hardware4Stack.SetThread(cur_view_thread);
-  cHeadMultiMem & cur_ip = hardware4Stack.IP(cur_view_thread);
-  
-  // Place the stacks onto the screen.
-  SetBoldColor(COLOR_CYAN);
-  for (int i = 0; i < 4; i++) {
-    Print(REG_Y+2 + i, REG_X+6, "%11d", hardware4Stack.GetStack(0, i, cur_view_thread));
-  }
-  
-  // Place the active stack onto the screen.
-  
-  // Stack AX
-  //SetBoldColor(COLOR_CYAN);   // -Redundant
-  SetColor(COLOR_WHITE);
-  
-  Print(STACK_Y, STACK_X + 2, "Stack   :");
-  Print(STACK_Y, STACK_X + 8, "%cX" , 'A' + cur_stack);
-  
-  //SetBoldColor(COLOR_CYAN);
-  //Print(STACK_Y+2, STACK_X + 2, "%11d", hardware4Stack.GetStack(0, cur_stack));
-  SetColor(COLOR_CYAN);
-  for (int i = 0; i <= 3; i++) {
-    Print(STACK_Y+2 + i, STACK_X+2, "%11d", hardware4Stack.GetStack(i, cur_stack, cur_view_thread));
-  }
-  
-  Print(19, 74, "%2d/%2d", cur_view_thread + 1,
-        hardware4Stack.GetNumThreads());
-  
-  // This line gets the creature that is currently executing. Usually the
-  // creature we are viewing, but can also be a different one (if this is a
-  // parasite).
-  
-  const cCPUMemory & memory = hardware4Stack.GetMemory(cur_mem_space);
-  SetBoldColor(COLOR_BLUE);
-  Print(MEMORY_Y + 1, MEMORY_X + 8, " Space ");	
-  SetColor(COLOR_WHITE);
-  Print(MEMORY_Y + 1, MEMORY_X + 15, "%2d", cur_mem_space);
-  
-  Print(MEMORY_Y + 1, MEMORY_X + 17, ":");	
-  Print(MEMORY_Y + 1, MEMORY_X + 18, "%4d", memory.GetSize());
-  
-  
-  
-  // Nothing past this point gets executed for empty creatures....
-  if (memory.GetSize() == 0) {
-    for (int i = -MEMORY_PRE_SIZE; i <= MEMORY_POST_SIZE; i++) {
-      HLine(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X, 36);
-    }
-    return;
-  }
-  
-  int adj_inst_ptr = 0;
-  int base_inst_ptr = cur_ip.GetPosition();
-  if (base_inst_ptr < 0 || parasite_zoom == true) base_inst_ptr = 0;
-  
-  const cInstSet & inst_set = hardware4Stack.GetInstSet();
-  
-  // Determine the center (must be between 0 and size - 1)
-  int center_pos = (base_inst_ptr + memory_offset) % memory.GetSize();
-  if (center_pos < 0) center_pos += memory.GetSize();
-  
-  for (int i = -MEMORY_PRE_SIZE; i <= MEMORY_POST_SIZE; i++) {
-    adj_inst_ptr = (center_pos + i) % (memory.GetSize() + 1);
-    if (adj_inst_ptr < 0) adj_inst_ptr += memory.GetSize() + 1;
-    
-    if (adj_inst_ptr == memory.GetSize()) {
-      HLine(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X, 36);
-    } else {
-      Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X, CHAR_VLINE);
-      Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 35, CHAR_VLINE);
-      
-      // If we are on the instruction about to be executed by the CPU,
-      // hilight it...
-      if (adj_inst_ptr == base_inst_ptr && 
-          hardware4Stack.IP(cur_view_thread).GetMemSpace() == cur_mem_space) {
-        SetBoldColor(COLOR_WHITE);
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 1, "%3d: ",
-              adj_inst_ptr);
-        SetBoldColor(COLOR_CYAN);
-      } else {
-        if (i == 0) SetBoldColor(COLOR_YELLOW);
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 1, "%3d: ",
-              adj_inst_ptr);
-        // If we are scrolling through memory, make the current position
-        // yellow.
-        if (i == 0) SetColor(COLOR_YELLOW);
-        else SetColor(COLOR_CYAN);
-      }
-      
-      // Print the instruction...
-      Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 6, "%8s ",
-            inst_set.GetName( memory[adj_inst_ptr] )());
-      
-      Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 15,
-            "                    ");
-      
-      // Only list the "Cpy" flag or the "Inj" flag...
-      if (memory.FlagCopied(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 16, "Cpy");
-      }
-      if (memory.FlagInjected(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 16, "Inj");
-      }
-      
-      // Other flags we're interested in...
-      if (memory.FlagMutated(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 20, "Mut");
-      }
-      if (memory.FlagExecuted(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 24, "Exe");
-      }
-      if (memory.FlagBreakpoint(adj_inst_ptr) == true) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 28, "Bp");
-      }
-      
-      if (adj_inst_ptr == hardware4Stack.GetHead(nHardware::HEAD_READ, cur_view_thread).GetPosition() &&
-          cur_mem_space == hardware4Stack.GetHead(nHardware::HEAD_READ, cur_view_thread).GetMemSpace()) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 31, "R");
-      }
-      if (adj_inst_ptr == hardware4Stack.GetHead(nHardware::HEAD_WRITE, cur_view_thread).GetPosition() &&
-          cur_mem_space == hardware4Stack.GetHead(nHardware::HEAD_WRITE, cur_view_thread).GetMemSpace()) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 32, "W");
-      }
-      if (adj_inst_ptr == hardware4Stack.GetHead(nHardware::HEAD_FLOW, cur_view_thread).GetPosition() &&
-          cur_mem_space == hardware4Stack.GetHead(nHardware::HEAD_FLOW, cur_view_thread).GetMemSpace()) {
-        Print(MEMORY_Y + MEMORY_PRE_SIZE + 3 + i, MEMORY_X + 33, "F");
-      }
-    }
-    SetColor(COLOR_WHITE);
-  }
-  
-  DrawMiniMap();
-}
-
-void cZoomScreen::UpdateGenotype()
-{
-  SetBoldColor(COLOR_CYAN);
-  
-  Print(1, 12, "%9d", info.GetActiveGenotypeID());
-  Print(2, 12, "%9s", info.GetActiveName()());
-  Print(3, 12, "%9d", info.GetActiveSpeciesID());
-  
-  if (info.GetActiveGenotype() != NULL) {
-    cGenotype & genotype = *(info.GetActiveGenotype());
-    Print(5, 12, "%9d", genotype.GetNumOrganisms());
-    Print(6, 12, "%9d", genotype.GetLength());
-    Print(7, 12, "%9d", genotype.GetCopiedSize());
-    Print(8, 12, "%9d", genotype.GetExecutedSize());
-    
-    PrintFitness(10, 14, genotype.GetFitness());
-    Print(11, 12, "%9f", genotype.GetGestationTime());
-    Print(12, 14, "%9f", genotype.GetMerit());
-    Print(13, 12, "%9f", genotype.GetReproRate());
-    
-    // Column 2
-    Print(1, 40, "%9d", genotype.GetUpdateBorn());
-    Print(2, 40, "%9d", genotype.GetParentID());
-    Print(3, 40, "%9d", genotype.GetParentDistance());
-    Print(4, 40, "%9d", genotype.GetDepth());
-    
-    Print(7, 40,  "%9d", genotype.GetThisDeaths());
-    Print(8, 40,  "%9d", genotype.GetThisBirths());
-    Print(9, 40,  "%9d", genotype.GetThisBreedTrue());
-    Print(10, 40, "%9d", genotype.GetThisBreedIn());
-    Print(11, 40, "%9d", genotype.GetThisBirths() - genotype.GetThisBreedTrue());
-    
-    Print(14, 40, "%9d", genotype.GetTotalOrganisms());
-    Print(15, 40, "%9d", genotype.GetBirths());
-    Print(16, 40, "%9d", genotype.GetBreedTrue());
-    Print(17, 40, "%9d", genotype.GetBreedIn());
-    Print(18, 40, "%9d", genotype.GetBirths() - genotype.GetBreedTrue());
-  }
-  else {
-    Print(5, 12, "  -------");
-    Print(6, 12, "  -------");
-    Print(7, 12, "  -------");
-    Print(8, 12, "  -------");
-    
-    Print(10, 12, "  -------");
-    Print(11, 12, "  -------");
-    Print(12, 12, "  -------");
-    Print(13, 12, "  -------");
-    
-    // Column 2
-    Print(1, 40, "  -------");
-    Print(2, 40, "  -------");
-    Print(3, 40, "  -------");
-    Print(4, 40, "  -------");
-    
-    Print(7, 40,  "  -------");
-    Print(8, 40,  "  -------");
-    Print(9, 40,  "  -------");
-    Print(10, 40, "  -------");
-    Print(11, 40, "  -------");
-    
-    Print(14, 40, "  -------");
-    Print(15, 40, "  -------");
-    Print(16, 40, "  -------");
-    Print(17, 40, "  -------");
-    Print(18, 40, "  -------");
-  }
-}
-
-void cZoomScreen::EditMemory()
-{
-  // Collect all of the needed variables.
-  cHardwareCPU & hardware =
-  (cHardwareCPU &) info.GetActiveCell()->GetOrganism()->GetHardware();
-  const cInstSet & inst_set = hardware.GetInstSet();
-  cHeadCPU edit_head( hardware.IP() );
-  if (parasite_zoom == true) {
-    edit_head.Set(0, &(info.GetActiveCell()->GetOrganism()->GetHardware()) );
-  }
-  edit_head.LoopJump(memory_offset);
-  
-  // Assemble first choice window.
-  cMenuWindow menu1(NUM_INST_EDITS);
-  menu1.SetTitle("Choose Edit method:");
-  menu1.AddOption(INST_EDIT_BREAKPOINT, "Toggle [B]reakpoint");
-  menu1.AddOption(INST_EDIT_JUMP_IP,    "[J]ump IP");
-  menu1.AddOption(INST_EDIT_CHANGE,     "[E]dit Instruction");
-  menu1.AddOption(INST_EDIT_INSERT,     "[I]nsert Instruction");
-  menu1.AddOption(INST_EDIT_REMOVE,     "[D]elete Instruction");
-  menu1.SetActive(INST_EDIT_CHANGE);
-  int edit_method = menu1.Activate();
-  cView::Redraw();
-  
-  // If we need to choose a new instruction, bring up a window for it.
-  
-  int new_inst = 0;
-  if (edit_method == INST_EDIT_CHANGE || edit_method == INST_EDIT_INSERT) {
-    cMenuWindow inst_menu(inst_set.GetSize());
-    inst_menu.SetTitle("Choose new instruction: ");
-    for (int j = 0; j < inst_set.GetSize(); j++) {
-      inst_menu.AddOption(j, inst_set.GetName(j)());
-    }
-    inst_menu.SetActive(edit_head.GetInst().GetOp());
-    new_inst = inst_menu.Activate();
-    
-    cView::Redraw();
-    if (new_inst == -1) {
-      //  cView::Notify("Aborted!");
-      return;
-    }
-  }
-  
-  // Finally, act on the edit method!
-  switch (edit_method) {
-    case INST_EDIT_BREAKPOINT:
-      ToggleBool( edit_head.FlagBreakpoint() );
-      break;
-    case INST_EDIT_JUMP_IP:
-      hardware.IP() = edit_head;
-      memory_offset = 0;
-      break;
-    case INST_EDIT_CHANGE:
-      edit_head.SetInst(cInstruction(new_inst));
-      break;
-    case INST_EDIT_INSERT:
-      edit_head.InsertInst(cInstruction(new_inst));
-      break;
-    case INST_EDIT_REMOVE:
-      edit_head.RemoveInst();
-      break;
-    default:
-      //    cView::Notify("Aborted!");
-      break;
-  }
-  
-  Update();
-}
-
-void cZoomScreen::ViewMemory()
-{
-  // Collect all of the needed variables.
-  cHardwareCPU& hardware = (cHardwareCPU&) info.GetActiveCell()->GetOrganism()->GetHardware();
-  cHeadCPU view_head( hardware.IP() );
-  if (parasite_zoom == true) {
-    view_head.Set(0, &(info.GetActiveCell()->GetOrganism()->GetHardware()) );
-  }
-  view_head.LoopJump(memory_offset);
-  
-  // Act on the view method!
-  if (inst_view_mode == true) inst_view_mode = false;
-  else inst_view_mode = true;
-  
-  Update();
-}
-
-void cZoomScreen::ThreadOptions()
-{
-  int thread_method = THREAD_OPTIONS_VIEW;
-  
-  // Assemble first choice window.
-  cMenuWindow menu1(NUM_THREAD_OPTIONS);
-  menu1.SetTitle("Choose threading option:");
-  menu1.AddOption(THREAD_OPTIONS_VIEW, "[V]iew Thread Info");
-  menu1.AddOption(THREAD_OPTIONS_LOCK, "[T]oggle Thread Lock");
-  menu1.SetActive(THREAD_OPTIONS_VIEW);
-  thread_method = menu1.Activate();
-  cView::Redraw();
-  
-  // Act on the view method!
-  switch (thread_method) {
-    case THREAD_OPTIONS_VIEW:
-      ViewThreads();
-      break;
-    case THREAD_OPTIONS_LOCK:
-      if (info.GetThreadLock() != -1) info.SetThreadLock(-1);
-      else {
-        cHardwareCPU & hardware =
-        (cHardwareCPU &) info.GetActiveCell()->GetOrganism()->GetHardware();
-        info.SetThreadLock( hardware.GetCurThread() );
-      }
-        
-        break;
-    default:
-      break;
-  }
-  
-  Update();
-}
-
-void cZoomScreen::ViewInstruction()
-{
-  cTextWindow * window = new cTextWindow(10, 40, 7, 20);
-  window->SetBoldColor(COLOR_WHITE);
-  window->Box();
-  
-  // Place the data.
-  
-  cHardwareCPU & hardware =
-    (cHardwareCPU &) info.GetActiveCell()->GetOrganism()->GetHardware();
-  cHeadCPU inst_ptr( hardware.IP() );
-  if (parasite_zoom == true) {
-    inst_ptr.Set(0, &(info.GetActiveCell()->GetOrganism()->GetHardware()) );
-  }
-  inst_ptr.LoopJump(memory_offset);
-  
-  const cInstSet & inst_set = hardware.GetInstSet();
-  
-  window->SetBoldColor(COLOR_YELLOW);
-  window->Print(2, 16, "%s", inst_set.GetName(inst_ptr.GetInst())());
-  
-  window->SetBoldColor(COLOR_WHITE);
-  
-  window->Print(2, 2, "Instruction: ");
-  window->Print(4, 2, "Line Num...: ");
-  window->Print(6, 2, "Redundancy.: ");
-  window->Print(7, 2, "Cost.......: ");
-  
-  window->SetBoldColor(COLOR_CYAN);
-  
-  const int inst_id = inst_ptr.GetInst().GetOp();
-  
-  window->Print(4, 14, "%3d", inst_ptr.GetPosition());
-  window->Print(6, 14, "%3d", inst_set.GetRedundancy(cInstruction(inst_id)) );
-  window->Print(7, 14, "%3d", inst_set.GetCost(cInstruction(inst_id)) );
-  
-  if (inst_ptr.FlagCopied() == true) window->SetBoldColor(COLOR_CYAN);
-  else window->SetColor(COLOR_CYAN);
-  window->Print(4, 25, "Copied");
-  
-  if (inst_ptr.FlagMutated() == true) window->SetBoldColor(COLOR_CYAN);
-  else window->SetColor(COLOR_CYAN);
-  window->Print(5, 25, "Mutated");
-  
-  if (inst_ptr.FlagExecuted() == true) window->SetBoldColor(COLOR_CYAN);
-  else window->SetColor(COLOR_CYAN);
-  window->Print(6, 25, "Executed");
-  
-  if (inst_ptr.FlagBreakpoint() == true) window->SetBoldColor(COLOR_CYAN);
-  else window->SetColor(COLOR_CYAN);
-  window->Print(7, 25, "Breakpoint");
-  
-  
-  // Print it!
-  window->Refresh();
-  
-  // Wait for the results.
-  bool finished = false;
-  int cur_char;
-  
-  while (finished == false) {
-    cur_char = GetInput();
-    switch (cur_char) {
-      case 'q':
-      case 'Q':
-      case ' ':
-      case '\n':
-      case '\r':
-        finished = true;
-        break;
-    }
-  }
-  
-  delete window;
-  cView::Redraw();
-}
-
-void cZoomScreen::ViewRegisters()
-{
-  cTextWindow * window = new cTextWindow(9, 54, 4, 13);
-  cHardwareCPU & hardware =
-    (cHardwareCPU &) info.GetActiveCell()->GetOrganism()->GetHardware();
-  
-  window->SetBoldColor(COLOR_WHITE);
-  window->Box();
-  
-  window->Print(2, 2, "Registers");
-  
-  for (int i = 0; i < 3; i++) {
-    const char reg_letter = 'A' + i;
-    const int reg_value = hardware.GetRegister(i);
-    window->SetBoldColor(COLOR_WHITE);
-    window->Print(4+i, 2, "%cX:", reg_letter);
-    window->Print(4+i, 17, '[');
-    window->Print(4+i, 50, ']');
-    window->SetBoldColor(COLOR_CYAN);
-    window->Print(4+i, 6, "%10d", reg_value);
-    window->PrintBinary(4+i, 18, reg_value);
-  }
-  
-  // Print it!
-  window->Refresh();
-  
-  // Wait for the results.
-  bool finished = false;
-  while (!finished) {
-    int cur_char = GetInput();
-    switch (cur_char) {
-      case 'q':
-      case 'Q':
-      case ' ':
-      case '\n':
-      case '\r':
-        finished = true;
-        break;
-    }
-  }
-  
-  delete window;
-  cView::Redraw();
-}
-
-
-void cZoomScreen::ViewStack()
-{
-  cTextWindow * window = new cTextWindow(16, 50, 4, 15);
-  cHardwareCPU & hardware =
-    (cHardwareCPU &) info.GetActiveCell()->GetOrganism()->GetHardware();
-  
-  bool finished = false;
-  int active_stack = hardware.GetActiveStack();
-  
-  
-  while (finished == false) {
-    window->SetBoldColor(COLOR_WHITE);
-    window->Box();
-    
-    char stack_letter = 'A' + active_stack;
-    window->Print(2, 5, "[<] Stack %c [>]", stack_letter);
-    window->SetBoldColor(COLOR_CYAN);
-    window->Print(2, 6, '<');
-    window->Print(2, 18, '>');
-    
-    window->SetBoldColor(COLOR_WHITE);
-    for (int i = 0; i < 10; i++) {
-      const int stack_value = hardware.GetStack(i,active_stack);
-      window->Print(4+i, 2, "%10d : ", stack_value);
-      window->PrintBinary(4+i, 15, stack_value);
-    }
-    
-    // Print it!
-    window->Refresh();
-    
-    // Wait for the results.
-    bool legal_keypress = false;
-    while (!legal_keypress) {
-      int cur_char = GetInput();
-      switch (cur_char) {
-        case ',':
-        case '<':
-        case '.':
-        case '>':
-          active_stack = 1 - active_stack;
-          legal_keypress = true;
-          break;
-        case 'q':
-        case 'Q':
-        case ' ':
-        case '\n':
-        case '\r':
-          finished = true;
-          legal_keypress = true;
-          break;
-      }
-    }
-    
-  }
-  
-  delete window;
-  cView::Redraw();
-}
-
-
-void cZoomScreen::ViewInputs()
-{
-  cTextWindow * window = new cTextWindow(9, 54, 4, 13);
-  
-  window->SetBoldColor(COLOR_WHITE);
-  window->Box();
-  
-  window->Print(2, 2, "Inputs");
-  
-  for (int i = 0; i < 3; i++) {
-    const int input_value = info.GetActiveCell()->GetInput(i);
-    window->SetBoldColor(COLOR_WHITE);
-    window->Print(4+i, 2, "%d:", i);
-    window->Print(4+i, 17, '[');
-    window->Print(4+i, 50, ']');
-    window->SetBoldColor(COLOR_CYAN);
-    window->Print(4+i, 6, "%10d", input_value);
-    window->PrintBinary(4+i, 18, input_value);
-  }
-  
-  // Print it!
-  window->Refresh();
-  
-  // Wait for the results.
-  bool finished = false;
-  while (finished == false) {
-    int cur_char = GetInput();
-    switch (cur_char) {
-      case 'q':
-      case 'Q':
-      case ' ':
-      case '\n':
-      case '\r':
-        finished = true;
-        break;
-    }
-  }
-  
-  delete window;
-  cView::Redraw();
-}
-
-
-void cZoomScreen::ViewThreads()
-{
-}
-
-cCoords cZoomScreen::GetSectionCoords(int in_section)
-{
-  switch (in_section) {
-    case ZOOM_SECTION_MEMORY:
-      return cCoords(MEMORY_X, MEMORY_Y);
-      break;
-      
-    case ZOOM_SECTION_REGISTERS:
-      if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_ORIGINAL)
-      {
-        return cCoords(REG_X, REG_Y);
-      }
-      else if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_4STACK)
-      {
-        return cCoords(REG_X, REG_Y-1);
-      }
-      else if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_SMT)
-      {
-        return cCoords(REG_X, REG_Y-1);
-      }
-      break;
-      
-    case ZOOM_SECTION_STACK:
-      if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_ORIGINAL)
-      {
-        return cCoords(STACK_X, STACK_Y);
-      }
-      else if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_4STACK)
-      {
-        return cCoords(STACK_X, STACK_Y-1);
-      }
-      else if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_SMT)
-      {
-        return cCoords(STACK_X, STACK_Y-1);
-      }
-      break;
-      
-    case ZOOM_SECTION_INPUTS:
-      if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_ORIGINAL)
-      {
-        return cCoords(INPUT_X, INPUT_Y);
-      }
-      else if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_4STACK)
-      {
-        return cCoords(INPUT_X, INPUT_Y-1);
-      }
-      else if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_SMT)
-      {
-        return cCoords(INPUT_X, INPUT_Y-1);
-      }
-      break;
-      
-    case ZOOM_SECTION_MAP:
-      return cCoords(MINI_MAP_X, MINI_MAP_Y);
-      break;
-  }
-  
-  return cCoords(0,0);
-}
-
-/*
- cString cZoomScreen::GetSectionName(int in_section)
- {
-   switch (in_section) {
-     case ZOOM_SECTION_MEMORY:
-       if(cConfig::GetHardwareType()==HARDWARE_TYPE_CPU_ORIGINAL)
-       {
-         return cString("Memory");
-       }
-       else if(cConfig::GetHardwareType()==HARDWARE_TYPE_CPU_4STACK)
-       {
-         return cString("Memory Space");
-       }
-       break;
-       
-     case ZOOM_SECTION_REGISTERS:
-       if(cConfig::GetHardwareType()==HARDWARE_TYPE_CPU_ORIGINAL)
-       {
-         return cString("Registers:");
-       }
-       else if(cConfig::GetHardwareType()==HARDWARE_TYPE_CPU_4STACK)
-       {
-         return cString("Stacks:");
-       }
-       break;
-       
-     case ZOOM_SECTION_STACK:
-       return cString("Stack ");
-       break;
-       
-     case ZOOM_SECTION_INPUTS:
-       return cString("Inputs:");
-       break;
-       
-     case ZOOM_SECTION_MAP:
-       return cString("Mini-Map");
-       break;
-   }
-   
-   return cString("Unknown!");
- }*/
-
-char* cZoomScreen::GetSectionName(int in_section)
-{
-  switch (in_section) {
-    case ZOOM_SECTION_MEMORY:
-      if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_ORIGINAL)
-      {
-        return "Memory";
-      }
-      else if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_4STACK)
-      {
-        return "Memory Space";
-      }
-      else if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_SMT)
-      {
-        return "Memory Space";
-      }
-      break;
-      
-    case ZOOM_SECTION_REGISTERS:
-      if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_ORIGINAL)
-      {
-        return "Registers:";
-      }
-      else if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_4STACK)
-      {
-        return "Stacks:";
-      }
-      else if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_SMT)
-      {
-        return "Stacks:";
-      }
-      break;
-      
-    case ZOOM_SECTION_STACK:
-      return "Stack ";
-      break;
-      
-    case ZOOM_SECTION_INPUTS:
-      return "Inputs:";
-      break;
-      
-    case ZOOM_SECTION_MAP:
-      return "Mini-Map";
-      break;
-  }
-  
-  return "Unknown!";
-}
-
-void cZoomScreen::SetActiveSection(int in_section)
-{
-  if (in_section != active_section) {
-    // Set the old section to be normal white
-    cCoords sect_coords(GetSectionCoords(active_section));
-    sect_coords.Translate(2, 1);
-    SetColor(COLOR_WHITE);
-    Print(sect_coords.GetY(), sect_coords.GetX(), "%s",
-          GetSectionName(active_section));
-    active_section = in_section;
-  }
-  
-  cCoords sect_coords(GetSectionCoords(active_section));
-  sect_coords.Translate(2, 1);
-  SetBoldColor(COLOR_BLUE);
-  Print(sect_coords.GetY(), sect_coords.GetX(), "%s",
-        GetSectionName(active_section));
-  SetColor(COLOR_WHITE);
-}
-
-void cZoomScreen::DoInput(int in_char)
-{
-  // First do the Mode specific io...
-  
-  if (mode == ZOOM_MODE_CPU      && DoInputCPU(in_char)) return;
-  if (mode == ZOOM_MODE_STATS    && DoInputStats(in_char)) return;
-  if (mode == ZOOM_MODE_GENOTYPE && DoInputGenotype(in_char)) return;
-  
-  int num_threads = 0;
-  if (info.GetActiveCell()->GetOrganism() != NULL) {
-    num_threads = info.GetActiveCell()->GetOrganism()->GetHardware().GetNumThreads();
-  }
-  switch(in_char) {
-    case 't':
-    case 'T':
-      if(num_threads>1)
-      {
-        memory_offset=0;
-        ++cur_view_thread%=num_threads;
-        if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_4STACK)
-        {
-          cHardware4Stack & hardware4Stack = 
-          (cHardware4Stack &) info.GetActiveCell()->GetOrganism()->GetHardware();
-          cur_mem_space=hardware4Stack.IP(cur_view_thread).GetMemSpace();
-        }
-        else if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_SMT)
-        {
-          cHardwareSMT & hardwareSMT = 
-          (cHardwareSMT&) info.GetActiveCell()->GetOrganism()->GetHardware();
-          cur_mem_space=hardwareSMT.IP(cur_view_thread).GetMemSpace();
-        }
-        Update();
-      }
-      break;
-    case ' ':
-      memory_offset = 0;
-      parasite_zoom = false;
-      info.GetActiveCell()->GetOrganism()->GetPhenotype().SetFault("");
-      info.EngageStepMode();
-      break;
-    case '>':
-    case '.':
-      mode++;
-      if (mode == NUM_ZOOM_MODES) mode = 0;
-        Clear();
-      Draw();
-      break;
-    case '<':
-    case ',':
-      mode--;
-      if (mode == -1) mode = NUM_ZOOM_MODES - 1;
-        
-        Clear();
-      Draw();
-      break;
-      
-    default:
-      cerr << "Unknown Command (#"
-      << (int) in_char << "): [" << in_char << "]" << endl;
-      break;
-  }
-}
-
-
-bool cZoomScreen::DoInputCPU(int in_char)
-{
-  switch(in_char) {
-    case '2':
-    case KEY_DOWN:
-      if (active_section == ZOOM_SECTION_MAP) {
-        mini_center_id += map_x_size;
-        mini_center_id %= population.GetSize();
-        cur_view_thread=0;
-        if (population.GetCell(mini_center_id).IsOccupied()) {
-          memory_offset = 0;
-          info.SetActiveCell( &(population.GetCell(mini_center_id)));
-        }
-        Update();
-      } else if (active_section == ZOOM_SECTION_MEMORY) {
-        memory_offset++;
-        Update();
-      }
-      break;
-    case '8':
-    case KEY_UP:
-      if (active_section == ZOOM_SECTION_MAP) {
-        mini_center_id -= map_x_size;
-        cur_view_thread=0;
-        if (mini_center_id < 0) mini_center_id += population.GetSize();
-        if (population.GetCell(mini_center_id).IsOccupied()) {
-          memory_offset = 0;
-          info.SetActiveCell( &(population.GetCell(mini_center_id)));
-        }
-        Update();
-      } else if (active_section == ZOOM_SECTION_MEMORY) {
-        memory_offset--;
-        Update();
-      }
-      break;
-    case '6':
-    case KEY_RIGHT:
-      if (active_section == ZOOM_SECTION_MAP) {
-        mini_center_id++;
-        if (mini_center_id == population.GetSize()) mini_center_id = 0;
-        if (population.GetCell(mini_center_id).IsOccupied()) {
-          memory_offset = 0;
-          info.SetActiveCell( &(population.GetCell(mini_center_id)));
-        }
-      }
-      else if (active_section == ZOOM_SECTION_MEMORY) {
-        if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_4STACK)
-        {
-          cur_mem_space++;
-          cur_mem_space %= nHardware4Stack::NUM_MEMORY_SPACES;
-        }
-        else if(info.GetConfig().HARDWARE_TYPE.Get() == HARDWARE_TYPE_CPU_SMT)
-        {
-          cur_mem_space++;
-          // @DMB - Should handle the extensibility of SMT Memory Spaces
-          cur_mem_space %= 1;
-        }
-      }
-      Update(); 
-      break;
-    case '4':
-    case KEY_LEFT:
-      if (active_section == ZOOM_SECTION_MAP) {
-        mini_center_id--;
-        if (mini_center_id < 0) mini_center_id += population.GetSize();
-        if (population.GetCell(mini_center_id).IsOccupied()) {
-          memory_offset = 0;
-          info.SetActiveCell( &(population.GetCell(mini_center_id)));
-        }
-      }
-      else if (active_section == ZOOM_SECTION_MEMORY) {
-        if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_4STACK) {
-          cur_mem_space--;
-          if (cur_mem_space < 0) cur_mem_space = nHardware4Stack::NUM_MEMORY_SPACES - 1;
-        }
-        else if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_SMT) {
-          cur_mem_space--;
-          // @DMB - Should handle the extensibility of SMT Memory Spaces
-          if (cur_mem_space < 0) cur_mem_space = 0;
-        }
-      }
-      Update();
-      break;
-    case 'K':
-    case 'k':
-      if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_4STACK) {
-        ++cur_stack%=4;
-      }
-      else if(info.GetConfig().HARDWARE_TYPE.Get()==HARDWARE_TYPE_CPU_SMT) {
-        ++cur_stack%=4;
-      }
-      Update();
-      break;
-    case '+':
-    case '=':
-      info.IncMapMode();
-      Update();
-      break;
-    case '-':
-    case '_':
-      info.DecMapMode();
-      Update();
-      break;
-    case '\n':
-    case '\r':
-      if (active_section == ZOOM_SECTION_MAP) {
-        memory_offset = 0;
-        info.SetActiveCell( &(population.GetCell(mini_center_id)));
-      }
-      Update();
-      break;
-    case '\t':
-    {
-      int next_section = active_section + 1;
-      if (next_section == NUM_ZOOM_SECTIONS) next_section = 0;
-      SetActiveSection(next_section);
-    }
-      Refresh();
-      break;
-      
-    case 'e':
-    case 'E':
-      if( active_section == ZOOM_SECTION_MEMORY) {
-        EditMemory();
-      }
-      break;
-      
-    case 'v':
-    case 'V':
-      switch (active_section) {
-        case ZOOM_SECTION_MEMORY:
-          ViewMemory();
-          break;
-        case ZOOM_SECTION_REGISTERS:
-          ViewRegisters();
-          break;
-        case ZOOM_SECTION_STACK:
-          ViewStack();
-          break;
-        case ZOOM_SECTION_INPUTS:
-          ViewInputs();
-          break;
-      }
-      break;
-      
-      
-    default:
-      return false;
-  };
-
-return true;
-}
-
-bool cZoomScreen::DoInputStats(int in_char)
-{
-  switch(in_char) {
-    case '6':
-    case KEY_RIGHT:
-    {
-      const int new_task_offset = task_offset + Height() - TASK_Y - 2;
-      if (new_task_offset < info.GetWorld().GetNumTasks()) {
-        task_offset = new_task_offset;
-        Draw();
-      }
-    }
-      break;
-    case '4':
-    case KEY_LEFT:
-    {
-      const int new_task_offset = task_offset - Height() + TASK_Y + 2;
-      if (new_task_offset >= 0) {
-        task_offset = new_task_offset;
-        Draw();
-      }
-    }
-      break;
-      
-    default:
-      return false;
-  }
-  
-  return true;
-}
-
-bool cZoomScreen::DoInputGenotype(int in_char)
-{
-  return false;
-}
-
-void cZoomScreen::DrawMiniMap()
-{
-  // if (GetSubWindow(0) == NULL) AddSubWindow(map_screen, 0);
-  // map_screen->Update();
-  
-  // Setup the start color for the map...
-  SetColor(COLOR_WHITE);
-  mini_center_id = info.GetActiveCell()->GetID();
-  
-  const int name_x = MINI_MAP_X + 4;
-  const int name_y = MINI_MAP_Y + 11;
-  if (info.GetMapMode() == MAP_BASIC)           Print(name_y, name_x, "Genotypes");
-  else if (info.GetMapMode() == MAP_SPECIES)    Print(name_y, name_x, " Species ");
-  else if (info.GetMapMode() == MAP_COMBO)      Print(name_y, name_x, "  Combo  ");
-  else if (info.GetMapMode() == MAP_INJECT)     Print(name_y, name_x, "Modified ");
-  else if (info.GetMapMode() == MAP_RESOURCE)   Print(name_y, name_x, "Resources");
-  else if (info.GetMapMode() == MAP_AGE)        Print(name_y, name_x, "   Age   ");
-  else if (info.GetMapMode() == MAP_BREED_TRUE) Print(name_y, name_x, "BreedTrue");
-  else if (info.GetMapMode() == MAP_PARASITE)   Print(name_y, name_x, "Parasites");
-  else if (info.GetMapMode() == MAP_MUTATIONS)  Print(name_y, name_x, "Mutations");
-  else if (info.GetMapMode() == MAP_THREAD)     Print(name_y, name_x, " Threads ");
-  else if (info.GetMapMode() == MAP_LINEAGE)    Print(name_y, name_x, " Lineage ");
-  
-  
-  int virtual_x = (mini_center_id % map_x_size) + map_x_size;
-  int virtual_y = (mini_center_id / map_x_size) + map_y_size;
-  
-  info.SetupSymbolMaps(info.GetMapMode(), HasColors());
-  
-  for (int y = -3; y <= 3 && y < map_y_size - 3; y++) {
-    Move(MINI_MAP_Y + 6 + y, MINI_MAP_X + 2);
-    int cur_y = (y + virtual_y) % map_y_size;
-    for (int x = -3; x <= 3 && x < map_x_size - 3; x++) {
-      int cur_x = (x + virtual_x) % map_x_size;
-      int index = cur_y * map_x_size + cur_x;
-      
-      SetSymbolColor(info.ColorSymbol(index));
-      if (info.MapSymbol(index) > 0) Print(info.MapSymbol(index));
-      else Print(CHAR_BULLET);
-      
-      // Space between columns
-      for (int i = 0; i < AVIDA_MAP_X_SPACING - 1; i++)  Print(' ');
-    }
-  }
-  SetColor(COLOR_WHITE);
-  Print(MINI_MAP_Y + 6, MINI_MAP_X + 7, '[');
-  Print(MINI_MAP_Y + 6, MINI_MAP_X + 9, ']');
-  
-  Refresh();
-}
-

Copied: development/source/targets/avida-viewer/cZoomScreen.cc (from rev 436, development/source/viewer/cZoomScreen.cc)

Deleted: development/source/targets/avida-viewer/viewer.cc
===================================================================
--- development/source/viewer/viewer.cc	2005-12-20 18:54:00 UTC (rev 425)
+++ development/source/targets/avida-viewer/viewer.cc	2006-01-15 21:54:54 UTC (rev 437)
@@ -1,41 +0,0 @@
-/*
- *  viewer.cc
- *  Avida
- *
- *  Copyright 2005 Michigan State University. All rights reserved.
- *
- */
-
-#include <signal.h>
-
-#include "avida.h"
-#include "cAvidaConfig.h"
-#include "cAvidaDriver_Analyze.h"
-#include "cAvidaDriver_TextPopViewer.h"
-#include "cWorld.h"
-
-using namespace std;
-
-int main(int argc, char * argv[])
-{
-  // Catch Interrupt making sure to close appropriately
-  signal(SIGINT, ExitAvida);
-
-  printVersionBanner();
-  
-  // Initialize the configuration data...
-  cWorld* world = new cWorld(cAvidaConfig::LoadWithCmdLineArgs(argc, argv));
-  
-  if (world->GetConfig().ANALYZE_MODE.Get() > 0) {
-    cAvidaDriver_Base::main_driver = new cAvidaDriver_Analyze(world, (world->GetConfig().ANALYZE_MODE.Get() == 2));
-  } else {
-    cAvidaDriver_Base::main_driver = new cAvidaDriver_TextPopViewer(world);
-  }
-  
-  cout << endl;
-  
-  cAvidaDriver_Base::main_driver->Run();
-
-  // Exit Nicely
-  ExitAvida(0);
-}

Copied: development/source/targets/avida-viewer/viewer.cc (from rev 436, development/source/viewer/viewer.cc)




More information about the Avida-cvs mailing list