anchor.diff:                   (S + T) band 16#3ffff
                end,
   
  -   {SX,DSX} = pop(DS),
  -
  -   CPUX = CPU#cpu{ t  = R,
  -                   s  = SX,
  -                   ds = DSX
  -                 },
  -
  -   trace(?PLUS,CPUX),     
  -   {ok,CPUX};
  +   CPUX = pop(ds,CPU),
  +   CPUY = CPUX#cpu{ t  = R
  +                  },
  +
  +   trace(?PLUS,CPUY),     
  +   {ok,CPUY};
   
   % 16#18  dup
   exec_impl(?DUP,CPU) ->
  
positive.code:                                      s=S,
                                       ds=DS,
                                       ram=RAM}),
     assert([{ram,4,678},{t,S},{s,1},{dsx,{1,[1,2,3,4,5,6,7,8]}}],CPU).
  
  nop_test() ->
     A = 1,
  
negative.code:    plus_test_impl(16#0200,16#3ffff,16#00001,1,1).
  
  plus_test_impl(P,T,S,C,R) ->
     DS  = {0,array:from_list([3,4,5,6,7,8,9,10])},
     {ok,CPU} = exec_impl(?PLUS,#cpu{ p=P,
                                      t=T,
                                      s=S,
                                      ds=DS,
                                      carry=C }),
     assert([{t,R},{s,3},{ds,{1,[3,4,5,6,7,8,9,10]}}],CPU).
  
  dup_test() ->
     {ok,CPU} = exec_impl(?DUP,#cpu{t=1,
                                    s=2,
                                    ds={0,array:from_list([3,4,5,6,7,8,9,10])}}),
  
     assert([{t,1},{s,1},{ds,{7,[3,4,5,6,7,8,9,2]}}],CPU).
  
  assert ([],_CPU) ->
     ok;
  