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