BOSS User Guide

The main screen


This is the main screen where you will be running your organisms. The upper left region with the darker colored parts represent organisms at that particular time. The lighter colored regions represent the allocated space of the darker color organism.



The file menu has 5 options, two which are not currently implemented.
  • New World... - Creates a new memory soup and disposes of the current one.
  • Load Organism... - Loads an organism from file into the current memory soup.
  • Quit - Quits the program.




These top buttons open separate windows. The first button creates a system statistics window, the second button creates a window with many different graphing options.





The system statistics window


The statistics window shows several real time statistics of the simulation system. Most of these should be self explanatory. Rogue Organisms is the number of organisms that have done something "wrong". This may include individual instructions that have failed to execute properly.





The graphing tool window


The graphing tool produces real-time results of histories of some system statistics. A user may select to plot the birth, population, mutation, or rogue organism history.





The configurable preferences


  • Number of Executor threads: The number of Executor threads that will be running at any given time. If you have only one processor, you should keep this at 1 for maximal speeds. (must be an integer greater than zero)
  • Number of Mutator threads: The number of Mutator threads that will be running at any given time. This will also increase the chance of a mutation. Each thread at every timestep will have a chance to cause a mutation. This does not affect mutations at birth. (must be an integer equal to, or greater than zero)
  • Number of Disturbance threads: The number of Disturbance threads that will be running at any given time. This will also increase the chance of a disturbance. Each thread at every timestep will have a chance to cause a disturbance. (must be an integer equal to, or greater than zero)


  • Memory size: The size of the soup. This should be an integer that is a multiple of 5. This must be at least 3 times the size of the organism you plan to load in.
  • Allocation allowance: This is how much each organism is allowed to allocate relative to it's own size. An allocation allowance of 1.0 means each organism can allocate a maximal amount of space equal to it's own size. An allocation allowance of 3.0 means an organism can allocate as much as three times it's original size. (must be a floating point greater than 0.0)
  • Used memory allowance: This is the maximum percent of memory we are allowed to use at any given time. If the memory soup reaches this maximal percentage, we do some spring cleaning to kill off organisms until we reach the desired level. (must be between 0.0 and 1.0)


  • Max stack size: This is the maximum stack size of the cpu. A smaller stack will cause larger organisms to have more errors.




  • Allow mutations: Check this if you want mutations.
  • Mutation chance: Percent chance to mutate during each timestep. (must be between 0.0 and 1.0)
  • Birth mutation chance: Percent chance to mutate during cell division. (must be between 0.0 and 1.0)


  • Allow Instruction flaws: Check this if you want instruction flaws.
  • Instruction flaw chance: Percent chance to for an instruction to be flawed. (must be between 0.0 and 1.0)


  • Allow disturbances: Check this if you want disturbances.
  • Disturbances chance: Percent chance to for there to be a disturbance at every timestep. (must be between 0.0 and 1.0)


  • Allow genetic recombination: Check this if you want genetic recombination during cell division
  • Birth recombination chance: Percent chance to recombinate (must be between 0.0 and 1.0)




  • DEBUG: A general debugging flag.
  • EMERGENCY_DEBUG: Debugging flag for occurrences that should generally not happen if there are no mutations, disturbances, or genetic recombination.
  • SLICER_DEBUG: Debugging flag to monitor the slicer.
  • REAPER_DEBUG: Debugging flag to monitor the reaper.
  • WORLD_DEBUG: Debugging flag to monitor the world.
  • GUI_DEBUG: Debugging flag to monitor any GUI functions.


  • MEMORY_DEBUG: Debugging flag for general memory debug statements.
  • SEGMENT_MAP_DEBUG: Debugging flag to print out the segment map at certain places.
  • MEMORY_SOUP_DEBUG: Debugging flag to print out the entire memory soup at certain places.
  • TEMPLATE_SOUP_DEBUG: Debugging flag to print out the template soup at certain places. (Generally not useful if you don't know what you're doing)
  • GARBAGE_COLLECTOR_DEBUG: Debugging flag for the garbage collector.
  • SPRING_CLEANING_DEBUG: Debugging flag when the memory reaches the allowed used memory percentage and we have to clean out organisms to reach a good level.


  • CPU_DEBUG: Debugging flag that causes the cpu to print out each instruction during execution.
  • CPU_REGISTERS_DEBUG: Debugging flag that causes the cpu to print out the state of all registers during execution.
  • SLOW_MOTION_DEBUG: Debugging flag to cause a 10 millisecond wait after executing one instruction. Useful for debugging cpu registers or cpu instructions which usually scroll by too fast for debugging purposes.


  • ORGANISM_DEBUG: Debugging flag to monitor each organism.
  • TRANSLATOR_DEBUG: Debugging flag to monitor the mnemonics translator.
  • EXECUTOR_DEBUG: Debugging flag to monitor the thread that controls when an organism should execute the next instruction.


BOSS Version 1.01
Dean Mao