anchor.diff:  
   implementation
   uses
  +  //TypInfo, KM_Log,
     KM_CommonTypes;
   
   const
  
positive.code:   Move(aData^, SenderClient.fBuffer[SenderClient.fBufferSize], aLength);
    SenderClient.fBufferSize := SenderClient.fBufferSize + aLength;
  
    //gLog.AddTime('----  Received data from ' + GetNetAddressStr(aHandle) + ': length = ' + IntToStr(aLength));
  
    //Try to read data packet from buffer
    while SenderClient.fBufferSize >= 6 do
  
negative.code: //Someone has send us something
  //Send only complete messages to allow to add server messages inbetween
  procedure TKMNetServer.DataAvailable(aHandle: TKMNetHandleIndex; aData: Pointer; aLength: Cardinal);
  //  function GetMessKind(aSenderHandle: TKMNetHandleIndex; aData: Pointer; aLength: Cardinal): TKMessageKind;
  //  var
  //    M: TKMemoryStream;
  //  begin
  //    M := TKMemoryStream.Create;
  //    M.WriteBuffer(aData^, aLength);
  //    M.Position := 0;
  //    M.Read(Result, SizeOf(TKMessageKind));
  //    M.Free;
  //  end;
  
  var
    PacketSender, PacketRecipient: TKMNetHandleIndex;
    PacketLength: Word;
    I, SenderRoom: Integer;
    SenderClient: TKMServerClient;
    Kind: TKMessageKind;
  begin
    Inc(BytesRX, aLength);
    SenderClient := fClientList.GetByHandle(aHandle);
    if SenderClient = nil then
    begin
      Status('Warning: Data Available from an unassigned client');
  //    gLog.AddTime('Warning: Data Available from an unassigned client');
      Exit;
    end;
  
    //Append new data to buffer
  