anchor.diff:       procedure NouzReleaseLoko();
   //     procedure LokComErr(Sender:TObject; addr:Integer);                         // event oznamujici chybu komunikace s danou lokomotivou (je volan paralelne s error callback eventem, ale jen pro urcite prikazy - pro prikazy tykajici se rizeni konkretni lokomotivy).
   //     procedure LokComOK(Sender:TObject; addr:Integer);                          // event potvrzujici komunikaci s danym HV (je volan pokazde, pokud centrala odpovi na prikaz o nasatveni dat HV)
  -                                                                                // je protipol predchoziho eventu
  -
  -     // eventy z .Trakce pri zapinani systemu (tj. odpoved na priklad GET-STATUS)
  -//     procedure InitStatErr(Sender:TObject; Data:Pointer);
  -//    procedure InitStatOK(Sender:TObject; Data:Pointer);
  -
  -     // event z .Tracke pri ozivovani systemu po neuspesnem prikazu GET-STATUS
  -     // oziveni - prikaz DCC STOP; tyto eventy tedy odpovidaji inicializacnimu prikazu STOP
  -//     procedure InitStopErr(Sender:TObject; Data:Pointer);
  -//     procedure InitStopOK(Sender:TObject; Data:Pointer);
  -
  -     // Obecne nastaveni callback komunikacnich eventu
  -     // Tyto funkce nastavi callback eventy do .Trakce
  -//     procedure SetCallbackErr(callback_err:TCommandCallback);
  -//     procedure SetCallbackOK(callback_ok:TCommandCallback);
   
        // eventy z komunikace s centralou pri prebirani a odhlasovani HV (tj. prebirani a odhlasovani VSECH LOKO)
   //     procedure PrebiraniUpdateOK(Sender:TObject; Data:Pointer);                 // loko uspesne prevzato
   //     procedure PrebiraniUpdateErr(Sender:TObject; Data:Pointer);                // prevzeti se nazdarilo (napr. centrala neodpovedela na prikaz o prevzeti, na POM ...)
   //     procedure OdhlasovaniUpdateOK(Sender:TObject; Data:Pointer);               // loko uspesne uvolneno
   //     procedure OdhlasovaniUpdateErr(Sender:TObject; Data:Pointer);              // uvolneni loko se nezdarilo (napr. centrala nedopovedela na POM, ...)
  -
  -     // eventy spojene s jednotlivymi fazemi prebirani HV
  -//     procedure AcquireErr(Sender:TObject; Data:Pointer);
  -
  -//     procedure AcquiredFunc1328(Sender:TObject; Data:Pointer);
  -//     procedure AcquiredDirection(Sender:TObject; Data:Pointer);
  -//     procedure AcquiredPOM(Sender:TObject; Data:Pointer);
  -//     procedure AcquiredFunc(Sender:TObject; Data:Pointer);
  -//     procedure AcquireFuncErr(Sender:TObject; Data:Pointer);
  -
  -     // eventy spojene s jedntlivymi fazemi odhlasovani loko:
  -//     procedure Released(Sender:TObject; Data:Pointer);
  -//     procedure ReleaseErr(Sender:TObject; Data:Pointer);
  -//     procedure ReleasePOMOK(Sender:TObject; Data:Pointer);
  -//     procedure ReleasePOMErr(Sender:TObject; Data:Pointer);
  -
  -     // callbacky spojene s nastavovanim funkci:
  -     // Funkce nastavujeme po jednotlivych sadach.
  -     // K nastaveni dalsi sady dojde az po uspesnem nastaveni sady predchozi - tj. prichodu prikazu OK z centraly, resp. zavolani OK callbacku
  -//     procedure FuncOK(Sender:TObject; Data:Pointer);
  -//     procedure FuncErr(Sender:TObject; Data:Pointer);
   
   //     procedure AllPrevzato();                                                   // je volana, pokud jsou vsechny loko prevzaty (primarni vyuziti = interakce s GUI)
   //     procedure AllOdhlaseno();                                                  // je volana, pokud jsou vsechny loko odhlaseny (primarni vyuziti = interakce s GUI)
  
positive.code: 
  ////////////////////////////////////////////////////////////////////////////////
  
  { procedure TTrakce.LocoAcquire(HV:THV);
  var cb:Pointer;
  begin
   if (not Self.openned) then
    begin
     Self.Log(tllError, 'ERR: COM not openned');
     raise ENotOpenned.Create('COM not openned');
    end;
  
   Self.TrkLog(self, tllCommand, 'PUT: LOK-2-MYCONTROL: '+HV.data.Nazev+' ('+IntToStr(HV.Adresa)+')');
   HV.Slot.prevzato_full := false;
   HV.RecordUseNow();
  
   GetMem(cb, sizeof(TPrevzitCallback));
   TPrevzitCallback(cb^).callback_ok  := Self.Trakce.callback_ok;
   TPrevzitCallback(cb^).callback_err := Self.Trakce.callback_err;
   TPrevzitCallback(cb^).addr         := HV.adresa;
  
   if (not HV.Slot.prevzato) then
    begin
     // ok callback neni potreba, protoze se vola ConnectChange
     Self.callback_ok  := TTrakce.GenerateCallback(nil, cb);    // cb tu ale presto musi byt (je potreba v ConnectChange)
     Self.callback_err := TTrakce.GenerateCallback(Self.PrevzatoErr, cb);
     Self.Trakce.Lok2MyControl(HV.Adresa);
    end else begin
     Self.callback_err := TTrakce.GenerateCallback(nil);
     Self.callback_ok  := TTrakce.GenerateCallback(nil);
     Self.ConnectChange(Self, HV.adresa, Tconnect_code.TC_Connected, cb);
    end;
  end;
  
  procedure TTrakce.LocoRelease(HV:THV);
  var cb:Pointer;
  begin
   if (not Self.openned) then
    begin
     Self.Log(tllError, 'ERR: COM not openned');
     raise ENotOpenned.Create('COM not openned');
    end;
  
   Self.TrkLog(self, tllCommand, 'PUT: LOK-FROM-MYCONTROL: '+HV.data.Nazev+' ('+IntToStr(HV.Adresa)+')');
  
   GetMem(cb, sizeof(TPrevzitCallback));
   TPrevzitCallback(cb^).callback_ok  := Self.Trakce.callback_ok;
   TPrevzitCallback(cb^).callback_err := Self.Trakce.callback_err;
   TPrevzitCallback(cb^).addr         := HV.adresa;
  
   Self.callback_ok  := TTrakce.GenerateCallback(Self.OdhlasenoPOMOK, cb);
   Self.callback_err := TTrakce.GenerateCallback(Self.OdhlasenoPOMErr, cb);
  
   // nenastavovat HV.ruc, POM si tady delame sami !!
   HV.Stav.ruc := false;
   HV.RecordUseNow();
  
   if (HV.Slot.pom <> TPomStatus.released) then
     Self.POMWriteCVs(Self, HV, HV.Data.POMrelease, TPomStatus.released)
   else
     Self.OdhlasenoPOMOK(Self, cb);
  end; }
  
  ////////////////////////////////////////////////////////////////////////////////
  
  procedure TTrakce.AcquireAllLocos();
  var i:Integer;
      data:Pointer;
  
negative.code: end;
  
  ////////////////////////////////////////////////////////////////////////////////
  
  procedure TTrakce.NouzReleaseLoko();
  var i:Integer;
  