[Dashboard\Mitsubishi\Endeavor\Endeavor - 93C66 Yazaki Miles]

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

Form
{
	Group("Пробег",5,15,120,50)
	{
		Digit(Distance," ",5,18,70);
		Label(lb1,"Миль",80,23);
	}
	Group("Информация",5,80,270,45)
	{
		Label(message," ",0,18);
	}
	Group("Описание",5,130,270,100)
	{
		Label(lb4,"Калькулятор пробега для Mitsubishi Endeavor.",0,20);
		Label(lb5,"EEPROM 93C66, панель Yazaki.",0,35);
		Label(lb2,"Введите нужное значение в окне ПРОБЕГ",0,50);
		Label(lb3,"и нажмите кнопку <Применить>.",0,65);
	}
	Picture(Picture1,"Mitsubishi.bmp",160,5,0,0);
}

OnShow
{
	Message.Bold = 1;
	Message.Alignment = 1;

	// проверяем правильность дампа
	Var0 = ((@0x3D << 8) | (@0x3C));
	if(Var0 < 0xFFFF)
	{
		message.Color = 0xFF0000;
		message =  "Дамп ОК. Введите пробег.";
		Var4 = 0; // точное вычисление пробега, добавка
		Var5 = 0; // точное вычисление пробега, смещение
		while(Var5 != 0x3E)
		{
			Var6 =((@(Var5 + 1) << 8) | (@Var5));
			if(Var6 > Var0) {Var4 = Var4 + 1;}
			Var5 = Var5 + 2;
		}
		Var10 = (Var0 * 31) + Var4;
		Var11=(Var10*1000000)/16093; Var14=Var11%100; if (Var14<50) {Var11=Var11/100;} else {Var11=(Var11/100)+1;}		
		Distance=Var11;
	
	}
	else
	{
		message.Color = 0x0000FF;
		Message = "Неверный дамп!";
		Distance = 0;
	}
}

OnApply

{
		Var1=(Distance*160934)/100000;

    	if(Distance>999999)
    	{
        message.Color=0x0000FF;
        Message = "Пробег должен не более 999999 км.";
    	}
    	else
    	{
        Var0=Var1/31;
        Var1=(Var1%31)*2; // Вычисление добавки
        Var2=0;
		//запись старшей группы
		while(Var2<Var1) 
			{	
				@Var2=Var0+1;
				Var2=Var2+1;
		        	@Var2=Var0>>8;
				Var2=Var2+1; 
			}

		//запись младшей группы
		while(Var2<0x3E) 
			{	
				@Var2=Var0;
				Var2=Var2+1;
		        	@Var2=Var0>>8;
				Var2=Var2+1; 
			}
	//запись контрольной суммы
	Var3=Var0%2; // Расчет знака контрольки, FF или 00

		while(Var2<(0x3E+Var1)) 
			{	
				if(Var3=0) {@Var2=0xFF;} else {@Var2=0x00;}
				Var2=Var2+1;
				if(Var3=0) {@Var2=0xFF;} else {@Var2=0x00;}
				Var2=Var2+1;
			}
		while(Var2<0x7B) 
			{	
				if(Var3=0) {@Var2=0x00;} else {@Var2=0xFF;}
				Var2=Var2+1;
				if(Var3=0) {@Var2=0x00;} else {@Var2=0xFF;}
				Var2=Var2+1;
			}
		

	
        message.Color=0xFF0000;
        message="Дамп ОК. Новый пробег записан.";

    	}
}