[Dashboard\Volvo\S80 CJB 0 95320]

Size(280,270);

Form
{
    Group("Пробег",35,13,120,50)
    {
        Digit(Distance," ",5,18,70);
        Label(lbkm,"КМ",90,20);
    }
    Group("Информация",5,80,270,45) 
    {
        Label(msg," ",0,18);
    }    
    Group("Описание",5,130,270,90) 
    {
        Label(lb1,"Калькулятор пробега для Volvo S80.",0,20);
        Label(lb2,"Модуль CJB. Криптодамп. EEPROM 95320",0,35);
        Label(lb3,"Устанавливает пробег 0.",0,50);
        Label(lb4,"Нажмите кнопку <Применить>.",0,65);
    }
     Picture(Logo,"Volvo.bmp",185,10,0,0);
}

OnShow 
{
      Var0 = 0; Var1 = 0; Var2 = 0; Var3 = 0;
      Var0 = (@0xa0 ^ (@0xFA0 ^ 0xFF)) | ((@0xa1 ^ (@0xFA1 ^ 0xFF)) << 8) | ((@0xa2 ^ (@0xFA2 ^ 0xFF)) << 16) | ((@0xa3 ^ (@0xFA3 ^ 0xFF)) << 24);  
           
      msg.Color = 0xFF0000;
      msg.Bold = 1;
      msg = "Дамп ОК. Введите пробег.";
      Distance = Var0; 
}

OnApply {
    Var5 = 0;
    Var2 = Distance;
    
    if(Var2 > 999900) {Var5 = 1;}
    if(Var5 != 0)
    {
        msg.Color = 0x0000FF;
        msg.Bold = 1;
        msg = "Пробег должен быть до 999900 км";
    }
    else
    {
       //определение маски криптования 4х байт пробега и запись в регистры Var10 - Var15; 
       Var10 = 0; Var11 = 0; Var12 = 0; Var13 = 0; Var14 = 0; Var15 = 0; // Обнуляем регистры;
       Var10 = @0xFA0 ^0xFF; Var11 = @0xFA1 ^0xFF; Var12 = @0xFA2 ^0xFF; Var13 = @0xFA3 ^0xFF; Var14 = @0xFA4 ^0xFF; Var15 = @0xFA5 ^0xFF;
       Var14 = Var14 ^ 0x21; Var15 = Var15 ^ 0x03;
       // Заносим значение регистров по адресам пробега в дампе;
       Var3 = 0xA0;
       while(Var3 != 0xA6)
        {
         @Var3 = Var10; Var3 = Var3 + 1;
         @Var3 = Var11; Var3 = Var3 + 1;
         @Var3 = Var12; Var3 = Var3 + 1;
         @Var3 = Var13; Var3 = Var3 + 1;
         @Var3 = Var14; Var3 = Var3 + 1;
         @Var3 = Var15; Var3 = Var3 + 1;
        }
        //определяем маску для второй области пробега;
        Var10 = 0; Var11 = 0; Var12 = 0; Var13 = 0;  Var14 = 0; Var15 = 0; // Обнуляем регистры;
        Var10 = @0xFA6 ^0xFF; Var11 = @0xFA7 ^0xFF; Var12 = @0xFA8 ^0xFF; Var13 = @0xFA9 ^0xFF; Var14 = @0xFAA ^0xFF; Var15 = @0xFAB ^0xFF;
        Var14 = Var14 ^ 0x21; Var15 = Var15 ^ 0x03;
        // Заносим значение регистров по адресам пробега в дампе;
       Var3 = 0xA6;
       while(Var3 != 0xAc)
        {
         @Var3 = Var10; Var3 = Var3 + 1;
         @Var3 = Var11; Var3 = Var3 + 1;
         @Var3 = Var12; Var3 = Var3 + 1;
         @Var3 = Var13; Var3 = Var3 + 1;
         @Var3 = Var14; Var3 = Var3 + 1;
         @Var3 = Var15; Var3 = Var3 + 1;
        }
            msg.Color = 0xFF0000;
            msg.Bold = 1;
            msg = "Новый пробег записан.";
        
        }
    }
}
