[Dashboard\Isuzu\Forward\93c56.v1 cal]

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

Form 
{	Group("Пробег",5,5,150,50){Digit(Distance," ",5,20,90);}
	Group("Информация",5,110,310,45)	{Label(message," ",0,20);}
	Group ("Пересчет",5,55,170,50) {ComboBox(cbx1," ",5,20,150,"Вручную","Пересчитать Мили в Км","Пересчитать Км в Мили");}
    	Group("Описание",5,155,310,80) 
    	{
	Label(lb1,"Калькулятор для Isuzu Forward 93c56.",0,15);
        Label(lb2,"1999-2007 г.",0,30);
	Label(lb3,"EEPROM 93C56, панель Yazaki.",0,45);
        Label(lb4,"Выберите Вариант и Нажмите Кнопку <Применить>.",0,60);
    	}
    	Picture(Picture1,"Isuzu.bmp",190,15,0,0);
}

OnShow

{	cbx1=0;
	Message.Bold=1;
    	Message.Alignment=1;
    	// проверяем правильность дампа
	Var15=0x80;
	Var16=0; // счетчик ошибок
	Var17=@0xAF;
	Var3=@0x2F;
	while(Var15<=0xAF)
		{	
		if(Var17!=@Var15) {Var16=Var16+1;}
		if(Var17=0xFF)   {Var16=Var16+2;} // выявление пробега менее 48км
		Var15=Var15+1;
		}
	        
	if(Var16=0) 
	{
	Var0=(Var17<<8)|Var3;
	Var1=0; // точное вычисление пробега, добавка
	Var5=0; // точное вычисление пробега, смещение
		while(Var5<=0x2F)
		{	
		if(Var3!=@Var5) {Var1=Var1+1;}
		Var5=Var5+1;
		}
	Distance=(Var0*48)+Var1+48;
	}
	if(Var16=96) // пробег менее 48км
	{
	Var1=0; // точное вычисление пробега, добавка
	Var5=0; // точное вычисление пробега, смещение
		while(Var5<=0x2F)
		{	
		if(@Var5=0) {Var1=Var1+1;}
		Var5=Var5+1;
		}
	Distance=Var1;
	Var16=0;
	}
	if (Var16!=0) {message.Color=0x0000FF; Message = "Неверный дамп!";}
    	else
    	{message.Color=0xFF0000;message="Дамп ОК. Введите пробег.";}

}

OnApply

{
	if(cbx1=0) {Var4=Distance;}
	if(cbx1=1) {Var4=(Distance*16093)/10000;}
	if(cbx1=2) {Var4=(Distance*1000000)/16093; Var14=Var4%100; if (Var14<50) {Var4=Var4/100;} else {Var4=(Var4/100)+1;}}
	Distance=Var4;
	
	if(Var4>999999)	{message.Color=0x0000FF; Message="Пробег должен быть не более 999999.";}
	else
	{
		if(Var4<48) // разделение на алгоритм по 47км и от 48км
		{
			Var2=0;	
			//запись старшей группы
			while(Var2<Var4) 
			{
			@Var2=0x00;
			Var2=Var2+1;
			}
			//запись младшей группы
			while(Var2<=0x2F) 
			{
			@Var2=0xFF;
			Var2=Var2+1;
			}
			//запись основной группы
			Var2=0x80;
			while(Var2<=0xAF) 
			{
			@Var2=0xFF;
			Var2=Var2+1;
			}
		}
		if(Var4>47) 
		{
			Var0=((Var4-48)/48);
	        	Var1=((Var4-48)%48); // Вычисление добавки
			Var2=0;
			Var5=Var0&0xFF;	     // Младшая группа
			Var6=(Var0>>8)&0xFF; // Основная группа
			//запись старшей группы
			while(Var2<Var1) 
			{
			@Var2=Var5+1;
			Var2=Var2+1;
			}
			//запись младшей группы
			while(Var2<=0x2F) 
			{
			@Var2=Var5;
			Var2=Var2+1;
			}	
			//запись основной группы
			Var2=0x80;
			while(Var2<=0xAF) 
			{
			@Var2=Var6;
			Var2=Var2+1;
			}	
		}
	message.Color=0xFF0000;	message="Дамп ОК. Новый пробег записан.";
	}
}
