[Dashboard\VAZ\Kalina AP 24C65]

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,"Калькулятор пробега для VAZ Kalina.",0,20);
        Label(lb2,"Производитель панели AP. EEPROM 24C65.",0,35);
        Label(lb3,"Введите нужное значение в окне <Пробег>.",0,50);
        Label(lb4,"Нажмите кнопку <Применить>.",0,65);
    }
	Picture(Logo,"Vaz.bmp",170,10,0,0);
}

OnShow 
{
	Var0 = 0;
	Var1 = @0x1b00; 
	if (Var1  = 0xFF) {Var0 = 1;}
	
        if(Var0 != 0)
	{
		msg.Color = 0x0000FF;
		msg.Bold = 1;
		msg = "Неверный дамп!";
		Distance = 0;
	}
	else
	{
       	Var2 = @0x1B05 ^ 0x26; Var3 = @0x1B04 ^ 0xBB; Var4 = @0x1B03 ^ 0x50; 
          
        Var12 = (((Var2 >> 4) & 0x0F) * 100000) + ((Var2 & 0x0F) * 10000 ); 
        Var13 = (((Var3 >> 4) & 0x0F) * 1000)   + ((Var3 & 0x0F) * 100 );
        Var14 = (((Var4 >> 4) & 0x0F) * 10)     + ( Var4 & 0x0F);

        Var7 = Var12 + Var13 + Var14;

      	msg.Color = 0xFF0000;
       	msg.Bold = 1;
       	msg = "Дамп ОК. Введите новый пробег.";
       	Distance = Var7;
	}
}

OnApply 
{
    Var5 = 0;
    Var0 = Distance;
    if(Var0 > 999999) {Var5 = 1;}
    if(Var5 != 0)
    {
        msg.Color = 0x0000FF;
        msg.Bold = 1;
        msg = "Пробег должен быть не более 999999 км";
    }
    else
    {
		Var3 = Var0 % 10; Var0 = Var0 / 10;
		Var4 = Var0 % 10; Var0 = Var0 / 10;
		Var5 = Var0 % 10; Var0 = Var0 / 10;
		Var6 = Var0 % 10; Var0 = Var0 / 10;
		Var7 = Var0 % 10; Var0 = Var0 / 10;
		Var8 = Var0 % 10;

		Var14 = (Var4 << 4) | Var3;
		Var16 = (Var6 << 4) | Var5;
		Var18 = (Var8 << 4) | Var7;
		Var9 = 0xCF - (Var14 + Var16 + Var18); // Контролька
        
		Var11 = 0x1B00;
		while(Var11 != 0x1B20)
		{
			@Var11 = 0x0F; Var11 = Var11 + 1; 
			@Var11 = 0x7A; Var11 = Var11 + 1; // По адресам +1 и +2 от базового
			@Var11 = 0xE5; Var11 = Var11 + 1; // хранится суточник - обнуляем его
			@Var11 = Var14 ^ 0x50; Var11 = Var11 + 1;
			@Var11 = Var16 ^ 0xBB; Var11 = Var11 + 1;
			@Var11 = Var18 ^ 0x26; Var11 = Var11 + 1;
			@Var11 = 0x91; Var11 = Var11 + 1; 
			@Var11 = Var9  ^ 0xFC; Var11 = Var11 + 1;
		}
		msg.Color = 0xFF0000;
		msg.Bold = 1;
		msg = "Дамп OK. Новый пробег записан.";
	}
}