[Dashboard\Audi\A8\A8 24C17 var2]

Size(320,370); 

Form 
{
    Group("Пробег",5,10,110,50)
    {
        Digit(Distance," ",5,18,50);
        Label(lb1,"км",70,20);
       
    }
	Group("Login",5,80,310,45) 
    {
        Label(Login," ",0,15);
    }    
	Group("P\N",5,130,310,45) 
    {
        Label(Part," ",0,15);
    }    
	Group("Информация",5,185,310,45) 
    {
        Label(Message," ",0,18);
    }    
    Group("Описание",5,235,310,90) 
    {
        Label(lb5,"Калькулятор пробега для Audi A8",0,20);
        Label(lb2,"EEPROM 24C17 var2",0,35);
        Label(lb3,"Введите нужное значение в окне <Пробег>.",0,50);
        Label(lb4,"Нажмите кнопку <Применить>.",0,65);
    }
    Picture(Logo,"Audi.bmp",160,10,0,0);
}

OnShow 

{
   Var0=0xB8; // смещение первого блока
	Var1=0; // счетчик байт
	Var2=0; // счетчик добавки
	Var4=((@(0x01+Var0)<<8)+@(0x00+Var0))^0xFFFF; // первая группа
	Var17=Var4-1;
	Var5=((@(0x0F+Var0)<<8)+@(0x0E+Var0))^0xFFFF; // последняя группа
		
	// расчет добавки
	while (Var1<=0x0F)
		{
		Var15=(((@(Var1+Var0+1)<<8)|@(Var1+Var0))^0xFFFF)&0xFFFF; // текущая группа
		if (Var15!=Var17) {Var2=Var2+2;}			
		Var17=((Var17*2)+((Var17*2)>>16))&0xFFFF; // обработка первой группы  	
		Var1=Var1+2;
		}
	
	if (Var5=0)	{Var6=Var2%16;} 
	else {Var6=((Var4-1)*16)+Var2;}
	Distance=Var6-1000;
	
	Part.Bold =1;
	Part = "VAG P/N: 4D0 919 "+#c.@0x2A+#c.@0x2B+"?"+" "+#c.@0x2C+#c.@0x2D+"  "+#c.@0x32+#c.@0x33+#c.@0x34;
	
	Var0 = @0x7BC | (@0x7BD << 8);
	Var4 = (Var0 % 10) + 0x30; Var0 = Var0 / 10;
	Var5 = (Var0 % 10) + 0x30; Var0 = Var0 / 10;
	Var6 = (Var0 % 10) + 0x30; Var0 = Var0 / 10;
	Var7 = (Var0 % 10) + 0x30; Var0 = Var0 / 10;
	Var8 = (Var0 % 10) + 0x30;
	Login.Bold =1;
	Login = #c.Var8+#c.Var7+#c.Var6+#c.Var5+#c.Var4;
	message.Bold=1;
    message.Color=0xFF0000; message="Дамп ОК. Введите новый пробег."; 

}
    
OnApply

{
    Var10=Distance;
    if(Var10>999999) {message.Color=0x0000FF; message.Bold=1; message="Пробег должен быть не более 999999 км";}
	else
	{
	Var10=Var10+1000;
    
	// запись первой области
	Var0=0xB8; // смещение всего блока
	Var1=0; // счетчик байт
	Var2=Var10%16; // добавка
	Var4=Var10/16; // основная часть
	Var5=Var4+1;   // добавка
	// запись основной части
		while (Var1<=0x0F)
		{
		Var11=Var1+Var0;		
		@Var11=Var4^0xFFFF;
		Var11=Var11+1;
		@Var11=(Var4^0xFFFF)>>8;		
		Var4=((Var4*2)+((Var4*2)>>16))&0xFFFF; 
		Var1=Var1+2; 
		}	
	// запись добавки
		Var1=0; // счетчик байт
		
		while (Var1<Var2)
		{
		Var11=Var1+Var0;		
		@Var11=Var5^0xFFFF;
		Var11=Var11+1;
		@Var11=(Var5^0xFFFF)>>8;		
		Var5=((Var5*2)+((Var5*2)>>16))&0xFFFF; 
		Var1=Var1+2; 
		}
	message.Color=0xFF0000; message.Bold=1; message="Новый пробег записан."; 
    }
}








