[Dashboard\Land Rover\Range Rover Supercharged 93C86 Miles]

Size(320,370); 

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

OnShow 

{
   Var0=0x466; // смещение первого блока
	Var1=0; // счетчик байт
	Var2=0; // счетчик добавки
	Var4=((@(0x00+Var0)<<8)+@(0x01+Var0))^0xFFFF; // первая группа
	Var17=Var4-1;
	Var5=((@(0x0E+Var0)<<8)+@(0x0F+Var0))^0xFFFF; // последняя группа
		
	// расчет добавки
	while (Var1<=0x0F)
		{
		Var15=(((@(Var1+Var0)<<8)|@(Var1+Var0+1))^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;}
	Var6=Var6-1000;
	Var24=(Var6*1000000)/16093; Var14=Var24%100; if (Var14<50) {Var24=Var24/100;} else {Var24=(Var24/100)+1;}
	Distance=Var24;
	
	message.Color = 0xFF0000; message.Bold=1; message="Дамп ОК. Введите новый пробег."; 
	VIN.Bold=1;
	VIN=#c.@0x04+#c.@0x05+#c.@0x06+#c.@0x07+#c.@0x08+#c.@0x09+#c.@0x0A+#c.@0x0B+#c.@0x0C+#c.@0x0D+#c.@0x0E+#c.@0x0F+#c.@0x10+#c.@0x11+#c.@0x12+#c.@0x13;
	PN.Bold=1;
	PN=#c.@0x2D2+#c.@0x2D3+#c.@0x2D4+#c.@0x2D5+#c.@0x2D6+#c.@0x2D7+#c.@0x2D8+#c.@0x2D9+#c.@0x2DA+#c.@0x2DB+#c.@0x2DC+#c.@0x2DD+#c.@0x2DE+#c.@0x2DF+#c.@0x2E0+#c.@0x2E1;
    message.Color=0xFF0000; message="Дамп ОК. Введите новый пробег."; 

}
    
OnApply

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








