[Dashboard\VAZ\2110_2115 VDO 93S56]

Size(280,270); // ширина и высота

Form 
{
    Group("Пробег",35,13,120,50)
    {
        Digit(Distance," ",5,18,70);
        Label(lbkm,"КМ",90,20);
    }
    Group("Информация",5,80,270,45) 
    {
        Label(Message," ",0,18);
    }    
    Group("Описание",5,130,270,90) 
    {
        Label(lb1,"Калькулятор пробега для VAZ 2110-2115.",0,20);
        Label(lb2,"Производитель панели VDO. EEPROM 93S56.",0,35);
        Label(lb3,"Введите нужное значение в окне <Пробег>.",0,50);
        Label(lb4,"Нажмите кнопку <Применить>.",0,65);
    }
    Picture(Logo,"Vaz.bmp",170,10,0,0);
}

Var Address, EndAddr, Constant;

OnShow
{
	Message.Bold = 1; 
	Message.Alignment = 1;
	Constant = 16;
	Address = 0;
	EndAddr = Address + Constant - 1;
	Var0 = ((@EndAddr << 8) | (@(EndAddr - 1))) ^ 0xFFFF;
	Var4 = 0; // точное вычисление пробега, добавка
	Var5 = Address; // точное вычисление пробега, смещение
	while(Var5 < EndAddr)
	{	
		Var6 = ((@(Var5 + 1) << 8) | (@Var5)) ^ 0xFFFF;
		if(Var6 > Var0) {Var4 = Var4 + 2;}
		Var5 = Var5 + 2;
	}
	Distance = (Var0 * Constant) + Var4; // точность 2км, младшая часть пока не найдена
	if (Distance <= 999999)
	{
		message.Color = 0xFF0000;
		message = "Дамп ОК. Введите пробег.";
	} // проверяем правильность дампа
	else
	{ 
		message.Color = 0x0000FF;
		Message = "Неверный дамп!";
	}
}

OnApply
{
	if(Distance > 999999)
	{
		message.Color = 0x0000FF;
		Message="Пробег должен не более 999999 км.";
	}
   	else
   	{
		Var3 = Distance % 2;
		if (Var3 = 1) {Distance = Distance-1;}
		Var0 = (Distance / Constant) ^ 0xFFFF;
		Var2 = Address;
		Var1 = (Distance % Constant) + Var2; // Вычисление добавки
		//запись старшей группы
		Var0 = Var0 - 1;
		while(Var2 < Var1) 
		{	
			@Var2 = Var0;		Var2 = Var2 + 1;
			@Var2 = Var0 >> 8;	Var2 = Var2 + 1; 
		}
		//запись младшей группы
		Var0 = Var0 + 1;
		while(Var2 <= EndAddr) 
		{	
			@Var2 = Var0;		Var2 = Var2 + 1;
			@Var2 = Var0 >> 8;	Var2 = Var2 + 1; 			
		}
		message.Color = 0xFF0000;
		message = "Дамп ОК. Новый пробег записан.";
	}
}