[Dashboard\BMW\E32 24C02 Green.cal]

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

Form
{
    Group("Пробег",5,10,110,50)
    {
	Digit(Distance," ",5,18,50);
    Label(lb1,"км",80,20);
    }
    Group("Сброс сервисного интервала",5,65,270,45)
	{
	CheckBox(service,"Выполнить",10,20);
	}
	Group("Идентификация",5,115,270,60)
    {
    Label(fg," ",0,20);
    Label(nr," ",0,35);
    } 
    Group("Информация",5,180,270,45)
    {
    Label(message," ",0,18);
    }
    Group("Описание",5,230,270,100) 
    {
    Label(lb4,"Калькулятор пробега для BMW E32.",0,20);
    Label(lb5,"EEPROM X24C02 (зеленая фишка).",0,35);
    Label(lb2,"Введите нужное значение в окне <Пробег>.",0,55);
    Label(lb3,"и нажмите кнопку <Применить>.",0,70);
    }
    Picture(Picture1,"BMW.bmp",160,6,0,0);
}

OnShow 

{
	Var6=@0x2c; Var6=Var6>>4;
    fg.Bold=1;
    fg="FGSTNR: "+#c.@0x28+#c.@0x29+#b.@0x2a+#b.@0x2b+#i.var6;
    nr.Bold=1; 
	Var7=@0x1c; Var8=(Var7>>4)&15;Var9=Var7&15;
	nr="BMWTNR: "+#i.@0x1a+"."+#b.@0x1b+#i.Var8+"."+#i.Var9+#b.@0x1d;
    Var2=0x0; Var3=0; Var4=0; Var5=0;
    Var1=0x60;
	Var10=((@0xF2)<<16)|((@0xF1)<<8)|(@0xF0);
	if (Var10<9) {Distance=Var10;} // при пробеге меньше 9км используем только данные из последней группы
	else
	{
	    while(Var1!= 0x100)
		{
		Var2=@Var1; Var1=Var1+1;
		Var3=@Var1<<8; Var2=Var2|Var3; Var1=Var1+1;
		Var4=@Var1<<16; Var2=Var2|Var4; 
		if(var2>Var5) {var5=Var2;} Var1=Var1+14;
		}
		Distance=Var5;
	}	
    message.Color=0xFF0000; message.Bold=1; message="Дамп ОК. Введите новый пробег.";
}
      
OnApply 

{
    Var5=0;
    Var2=Distance;
    if(Var2>999999)	{message.Color=0x0000FF; Message="Пробег должен не более 999999 км.";}
    else
    {
    Var2=Var2-9;
    Var3=0x60;
        while(Var3!=0x100)
        {
			@Var3=Var2&255; Var3=Var3+1;
            @Var3=(Var2>>8)&255; Var3=Var3+1;
            @Var3=(Var2>>16)&255; Var3=Var3+14;
            Var2=Var2+1;
        }
    }
	if (service=1) {@0xA3=0;@0xA4=0;@0xB3=0;@0xB4=0;@0xC3=0;@0xC4=0;@0xD3=0;@0xD4=0;}
		
	message.Color=0xFF0000; message="Дамп ОК. Новый пробег записан.";
}
