[Dashboard\Lexus\LX\LX470 93C56.cal]

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

Form 

{   Group("Пробег",5,5,110,50)
 	{
	Digit(Distance," ",15,18,70);
	}
	Group("Информация",5,88,270,45)
    {Label(message," ",0,18);}
    Group("Описание",5,135,270,100) 
    {
	Label(lb4,"Калькулятор пробега для Lexus LX470",0,20);
    Label(lb5,"EEPROM 93C56, панель Yazaki",0,35);
    Label(lb2,"Введите нужное значение в окне ПРОБЕГ",0,50);
    Label(lb3,"и нажмите кнопку <Применить>.",0,65);
    }
	Picture(Picture1,"Lexus.bmp",165,20,0,0);
}

OnShow

{   
	Message.Bold = 1;
	// разделяем алгоритм до 47 км включительно и от 48 км

        Var0=((@0x5F<<8)|(@0x5E));
        if(Var0=0xFFFF) // работа по алгоритму до 47 км включительно
        {
	        Var4=0; // точное вычисление пробега
		Var5=0; // точное вычисление пробега, смещение
			while(Var5!=0x60)
				{
				Var6=((@(Var5+1)<<8)|(@Var5));
				if(Var6=0) {Var4=Var4+1;}
				Var5 = Var5+2;
				}
	Distance=Var4;
        }
       	else
        {
	//работа по алгоритму от 48 км
		Var3=48; // точное вычисление пробега, добавка
		Var5=0; // точное вычисление пробега, смещение
			while(Var5!=0x60)
				{
				Var6=((@(Var5+1)<<8)|(@Var5));
				if(Var6>Var0) {Var3=Var3+1;}
				Var5 = Var5+2;
				}
	   Distance=(Var0*48)+Var3;
    	}
	message.Color = 0xFF0000; message = "Дамп ОК, нажмите кнопку <Применить>";	
}

OnApply

{
	Message.Bold = 1;
	Var4=Distance;
	Distance=Var4; 
	Var1=Distance;
    	if(Var1>999999) {message.Color=0x0000FF; Message = "Пробег должен быть не более 999999.";}
    	else	

	{ 	// разделяем алгоритм до 47 км включительно и от 48 км
		if(Var1<48) //работа по алгоритму до 47 км включительно	
		{	Var2=0;
			Var1=Var1*2;
			while(Var2<Var1) 
				{	
				@Var2=0x00;
				Var2=Var2+1;
				}
			while(Var2<0x60) 
				{	
				@Var2=0xFF;
				Var2=Var2+1;
				}
		}
		else
		{	
			//работа по алгоритму от 48 км
			Var0=((Var1-48)/48);
        		Var1=(Distance%48)*2; // Вычисление добавки
        		Var2=0;
			//запись старшей группы
			while(Var2<Var1) 
				{
				@Var2=Var0+1;
				Var2=Var2+1;
		        	@Var2=Var0>>8;
				Var2=Var2+1; 
				}
			//запись младшей группы
			while(Var2<0x60) 
				{
				@Var2=Var0;
				Var2=Var2+1;
		        	@Var2=Var0>>8;
				Var2=Var2+1; 
				}
		}
        	message.Color=0xFF0000;
		message="Дамп ОК. Новый пробег записан.";
	}
}









