[Dashboard\Fiat\Sedici 93C66]
Size(280,330); // ширина и высота

Form
{
    Group("Пробег",5,10,110,50)
    {
	Digit(Distance," ",5,18,50);
    Label(lb1,"км",80,20);
    }
    Group("Идентификация",5,65,270,60)
    {
    Label(PN1," ",0,20);
    Label(PN2," ",0,35);
    } 
    Group("Информация",5,130,270,45)
    {
    Label(message," ",0,18);
    }
    Group("Описание",5,180,270,100) 
    {
    Label(lb4,"Калькулятор пробега для Fiat Sedici",0,20);
    Label(lb5,"EEPROM 93C66, панель Siemens-VDO",0,35);
    Label(lb2,"Введите нужное значение в окне <Пробег>.",0,55);
    Label(lb3,"и нажмите кнопку <Применить>.",0,70);
    }
    Picture(Logo,"fiat.bmp",145,0,0,0);
}

OnShow 

{
		Message.Bold=1; Message.Alignment=1;
        // 	проверяем правильность дампа
		Var0=(@0x1FF<<8)|(@0x1FE);
		if(Var0!=0x0000)
        {
		Var4=0; // точное вычисление пробега, добавка
		Var5=0x1F0; // точное вычисление пробега, смещение
		while(Var5<=0x1FF)
			{	
			Var7=(@(Var5+1)<<8)|(@(Var5));
			if(Var7<Var0) {Var4=Var4+2;}
			Var5=Var5+2;
			}
		Distance=((Var0^0xFFFF)*16)+Var4;
        message.Color=0xFF0000;
        message="Дамп ОК. Введите пробег.";
		
        PN1.Bold=1; PN2.Bold=1; PN1.Alignment=1; PN2.Alignment=1;
        PN1=#c.@0x00+#c.@0x01+#c.@0x02+#c.@0x03+#c.@0x04+#c.@0x05+#c.@0x06+#c.@0x07+#c.@0x08+#c.@0x09;
		PN2=#c.@0x123+#c.@0x124+#c.@0x125+#c.@0x126+#c.@0x127+#c.@0x128+#c.@0x129+#c.@0x12A+#c.@0x12B+#c.@0x12C+#c.@0x12D+#c.@0x12E+#c.@0x12F+#c.@0x130+#c.@0x131+#c.@0x132;
        }
		else
		{
        message.Color=0x0000FF; Message="Неверный дамп!"; Distance=0;   
		}
}

OnApply

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

		//запись младшей группы
		while(Var2<=0x1FE) 
			{	
			@Var2=(Var0)^0xFFFF;
			Var2=Var2+1;
	        @Var2=(Var0>>8)^0xFFFF;
			Var2=Var2+1; 
			}
        message.Color=0xFF0000; message="Дамп ОК. Новый пробег записан.";
 	}
}