[Dashboard\Audi\A2\A2 VDO 93C86 no crypto]

Size(280,300);

Form 
	{
		Group("Пробег",5,5,140,50)
		{
        Digit(Distance," ",5,18,90);
        Label(lb1,"KM",110,20);
		}
		Group("Идентификация",5,60,270,55)
		{
		Label(Part," ",0,25);
		}
		Group("Информация",5,120,270,45)
		{
		Label(message," ",0,18);
		}
		Group("Описание",5,165,270,85) 
		{
        Label(lb4,"Калькулятор пробега для Audi A2 VDO.",0,20);
        Label(lb5,"EEPROM 93C86",0,35);
        Label(lb2,"Введите нужное значение в окне <Пробег>.",0,50);
        Label(lb3,"и нажмите кнопку <Применить>.",0,65);
       }
    Picture(Logo,"Audi.bmp",170,20,0,0);
}

Var Address, EndAddr, Constant;

OnShow

{
	Message.Bold = 1; 
	Message.Alignment = 1;
	Constant = 16;
	Address = 0x42;
	EndAddr = Address + Constant - 1;
	Var0 = ((@EndAddr)|((@(EndAddr - 1))<<8)) ^ 0xFFFF;
	Var4 = 0; // точное вычисление пробега, добавка
	Var5 = Address; // точное вычисление пробега, смещение
	while(Var5 < EndAddr)
	{	
		Var6 = (@(Var5+1)|((@Var5)<<8)) ^ 0xFFFF;
		if(Var6 > Var0) {Var4 = Var4 + 2;}
		Var5 = Var5 + 2;
	}
	Distance = (Var0 * Constant) + Var4; // точность 2км, младшая часть пока не найдена
	Part.Bold =1;
	Part.Alignment = 1;
    Part = "VAG P/N: "+#c.@0x719+#c.@0x718+#c.@0x71B+" 920 "+#c.@0x71A+#c.@0x71D+#c.@0x71C+" "+#c.@0x71F+#c.@0x71E;
	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 >> 8;	Var2 = Var2 + 1; 
			@Var2 = Var0;		Var2 = Var2 + 1;
		}
		//запись младшей группы
		Var0 = Var0 + 1;
		while(Var2 <= EndAddr) 
		{	
			@Var2 = Var0 >> 8;	Var2 = Var2 + 1; 			
			@Var2 = Var0;		Var2 = Var2 + 1;
		}
		message.Color = 0xFF0000;
		message = "Дамп ОК. Новый пробег записан.";
	}
}