program test;
 
{$MODE DELPHI}
 
uses
  SysUtils;
 
function CalcCRC(Data: string): string;
var
  CRC: byte;
  i: integer;
begin
  CRC := 255;
  for i := 1 to Length(Data) do
    CRC := CRC xor byte(Data[i]);
  Result := IntToHex(CRC, 2);
end;
 
var
  Data : string;
begin
  Data := '1;0$e21S&0D28.29/28.29/';
  Data := StringReplace(Data, '&0D', #13, [rfReplaceAll]);
  Writeln(#27 + 'P' + Data + CalcCRC(Data) + #27 + '\');
end.