anchor.diff:      F18A = f18A:create(n406,n000,ROM,RAM),
       Context#context{ node = F18A }.
   
  +listen(Context) ->
  +    M = self(),
  +    util:unregister(n000),
  +    register(n000,spawn(fun() ->
  +                           L = read(),
  +                           M ! {rx,L}
  +                        end)),
  +
  +    Context.
  +
  +verify(Context) ->
  +    trace:trace(scenario2,n406_verify),
  +    Context.
  +
   reset(Context) ->
       trace:trace(scenario2,n406_reset),
       f18A:reset(Context#context.node),
       Context.
   
  -step5(Context) ->
  +step_impl(Context,N) ->
       trace:trace(scenario2,n406_step),
       F18A = Context#context.node,
  -    f18A:step(F18A,wait),
  -    f18A:step(F18A,wait),
  -    f18A:step(F18A,wait),
  -    f18A:step(F18A,wait),
  -    f18A:step(F18A,wait),
  +    step_impl(f18A,F18A,N),
       Context.
   
  -verify(Context) ->
  -    trace:trace(scenario2,n406_verify),
  -    Context.
  +step_impl(f18A,_F18A,0) ->
  +   ok;
  +
  +step_impl(f18A,F18A,N) ->
  +   f18A:step(F18A,wait),
  +   step_impl(f18A,F18A,N-1).
  +
  +read() ->
  +   read([]).
  +
  +read(L) ->
  +   receive
  +      {F18A,write,X} ->
  +         F18A ! { n000,read,ok },
  +         read([X|L]);
  +
  +      _else ->
  +         lists:reverse(L)
  +   end.
   
   % EUNIT TESTS
   
  
positive.code:                   "",
                    "Scenario: N406", 
                    "   Given  Node 406 is initialised from ../cucumber/N406.bin",
                    "     And  Node 406 is reset",
                    "     And  Node 406 is stepped 5 times",
                    "    Then  Trace should match N406.trace"
                  ]).
  
  -record(context,{ node
  
negative.code: step(Context,given,Condition) ->
     initialise(Context,re:run(Condition,"^Node ([0-9]{3}) is initialised from (.*)$",[{capture,all_but_first,list}]));
  
  step(Context,'and',"Node 000 listening on RIGHT") ->
      listen(Context);
  
  step(Context,'and',"Node 406 is reset") ->
      reset(Context);
  
  step(Context,'and',"Node 406 is stepped 19 times") ->
      step_impl(Context,32);
  
  step(Context,then,"Trace should match N406.trace") ->
      verify(Context);
  
  step(Context,'and',"Node 000 should have received [6,8]") ->
      n000 ! stop,
      ?assertEqual([6,8],receive {rx,L} -> L end),
      Context.
  
  
  % INTERNAL
  
  