anchor.diff:  
   [source, yaml]
   ----
  +# sys161 configuration
   conf:
  -  cpus: 8    # 1-32 are valid
  -  ram: 1M    # Number of bytes, with optional K or M prefix
  -  disk1:     # disabled by default, but should be enabled when you want swap disk
  +  # 1-32 are valid
  +  cpus: 8
  +
  +  # Number of bytes of memory, with optional K or M prefix
  +  ram: 1M
  +
  +  # Random number generated at runtime. This can be overridden by specifying an
  +  # unsigned 32 bit integer to use as the random seed.
  +  random: seed=random
  +
  +  # Disabled by default, but should be enabled when you want swap disk
  +  disk1:
       enabled: false
       rpm: 7200
       bytes: 32M
       nodoom: true
  -    random: seed=random # random number generated at configuration time
  -  disk2: #    disabled by default, but uses these defaults if configured
  +
  +  # Disabled by default, but uses these defaults if configured
  +  disk2: 
       enabled: false
       rpm: 7200
       bytes: 32M
       nodoom: false
  -    random: seed=random # random number generated at configuration time
  +
  +# stat161 configuration. The window specifies the number of stat objects we
  +# keep around, while the resolution represents the interval (s) that we
  +# request stats from stat161.
   stat:
     resolution: 0.01
     window: 1
  +
  +# Monitor configuration
   monitor:
     enabled: true
  -  window: 400  # Number of samples to include in kernel and user calculations
  +
  +  # Number of samples to include in kernel and user calculations
  +  window: 400
  +
  +  # Monitor configuration for tracking kernel cycles. The ratio of kernel
  +  # cycles to total cycles to be >= min (if enabled) and <= max.
     kernel:
       enablemin: false
  -    min: 0.001  # Min ratio of instructions that must be attributed to kernel code
  -    max: 1.0    # Max ratio of instructions that attributed to kernel code
  +    min: 0.001
  +    max: 1.0
  +
  +  # Monitor configuration for tracking user cycles. The ratio of user cycles
  +  # to total cycles to be >= min (if enabled) and <= max.
     user:
       enablemin: false
  -    min: 0.0001 # Min ratio of instructions that must be attributed to user code
  -    max: 1.0    # Max ratio of instructions that attributed to user code
  -  progresstimeout: 10.0 # Seconds without character output before the test fails
  -  commandtimeout: 0.0   # Seconds of command runtime before a test is stopped
  +    min: 0.0001
  +    max: 1.0
  +
  +  # Sim time (s) without character output before the test is stopped
  +  progresstimeout: 10.0
  +
  +  # Sim time (s) a command is allowed to execute before it is stopped
  +  commandtimeout: 60.0
  +
  +# Miscelleneous configuration
   misc:
     # The next three configuration parameters deal with sys161 occasionally
  -  # dropping input characters, such as when programmatically sending a command.
  -  charactertimeout: 1000  # Time (s) to wait for a character to appear in the
  -                          # output stream after sending it.
  -  retrycharacters: true   # Whether or not to retry sending characters if the
  -                          # character timeout is exceeded.
  -  commandretries: 5       # Number of times a command is retried if the number
  -                          # of character retries is exceeded.
  -  prompttimeout: 1800.0   # Time (s) before halting a test if the current prompt
  -                          # is not seen in the output stream.
  -  killonexit: false       # If true, send the kill signal to sys161. This should
  -                          # not generally be needed.
  +  # dropping input characters.
  +
  +  # Time (ms) to wait for a character to appear in the output stream after
  +  # sending it.
  +  charactertimeout: 1000
  +
  +  # Whether or not to retry sending characters if the character timeout is
  +  # exceeded.
  +  retrycharacters: true
  +
  +  # Number of times a command is retried if the number of character retries is
  +  # exceeded.
  +  commandretries: 5
  +
  +  # Time (s) before halting a test if the current prompt is not seen in the
  +  # output stream.
  +  prompttimeout: 1800.0   
  +
  +  # If true, send the kill signal to sys161. This should not generally be
  +  # needed.
  +  killonexit: false
   ----
   
   ===== Command Override
  
positive.code: # Each commands file consists of a collection of templates. An * indicates the
  # default option.
  templates:
     # Command name/id. For userland tests, include the path and binary name.
   - name: /testbin/true
  
     # An array of input arguments (optional). This should be included if the
     # command needs default arguments.
     input:
       - arg 1
       - arg 2
  
     # An array of expected output lines (optional). This should be specified
     # if the output differs from the default <name>: SUCESS.
     output:
         # The expected output text
       - text: "You should see this message if the test passed!"
         # true if the output is secured, false if not
         trusted:  true
         # true if text references an external command, false* if not
         external: false
  
     # Whether or not the command panics - yes, no*, or maybe
     panics: no
  
     # Whether or not the command is expected to time out - yes, no*, maybe
     timesout: no
  
     # Time (s) after which the test is terminated - 0.0* indicates no timeout
     timeout: 0.0
  ----
  
  Minimally, any command that is to be evaluated for correctness needs to be
  present in exactly one commands (.tc) file with the `name` property specified.
  If no output is specified, the expected output is `<command name>: SUCCESS`.
  
  ==== Examples
  
  In the following example, several tests are specified all of which expect the
  default output.
  
  [source,yaml]
  
negative.code: points: 10
  
  # The associated kernel configuration file. test161 uses this value to
  # configure and compile your kernel.
  kconfig: ASST1
  
  # true if the userland binaries should be compiled, false (default) if not.
  