anchor.diff:  implementation
   
   { -- TStack -- }
  -procedure TStack.Push( val : longint );
  +procedure TStack<T>.Push( val : T );
     begin
       slots[count] := val; inc(count)
     end;
   
  -function TStack.Pop : longint;
  +function TStack<T>.Pop : T;
     begin
       Dec(count); Pop := slots[count];
     end;
   
  -function TStack.TOS : longint; inline;
  +function TStack<T>.TOS : T; inline;
     begin
       tos := slots[count-1]
     end;
   
  -function TStack.NOS : longint; inline;
  +function TStack<T>.NOS : T; inline;
     begin
       nos := slots[count-2]
     end;
   
  -procedure TStack.Dup;
  +procedure TStack<T>.Dup;
     begin
       Push(tos)
     end;
   
  -procedure TStack.Swap;
  +procedure TStack<T>.Swap;
     var tmp : longint;
     begin
       tmp := tos;
  
positive.code:     public
        ibuf, obuf : string; { input/output buffers (255 chars) }
        ip, rp, wp : byte;
        data, addr : TStack;
        memory     : TByteArray;
        procedure RunOp( op:OpCode );
        procedure Step;
      end;
  
negative.code:     slots[ count-2 ] := tmp;
    end;
  
  procedure TStack<T>.Over;
    begin
      Push(tos)
    end;
  
  procedure TStack<T>.Rot;
    var tmp : longint;
    begin
      tmp := slots[count-3];
  