[Dashboard\BMW\LCM5_9S12XDP512 (0L15Y).cal]
@LCM_X3_XDP512.JPG



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

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

OnShow 

{
	Message.Bold=1;
    Var0=0;
    Var1=(@0xb12<<8)|@0xb13;
    if(Var0 != 0)
    {
    message.Color=0x0000FF; 	
    Message="Неверный дамп!";     
    Distance=0;                   
    }
else
    {
    message.Color=0xFF0000;                    
    message="Дамп ОК. Введите новый пробег.";  
    Distance=Var1*100;
    fg.Bold=1;var2=@0xb11;var3=var2>>4;
    fg="FGSTNR: "+#c.@0xb0d+#c.@0xb0e+#b.@0xb0f+#b.@0xb10+#i.var3;
	nr.Bold=1;
	Var7=@0xB06;Var8=(Var7>>4)&15;Var9=Var7&15;
	Var10=(@0xB04)&15;
    nr="BMWTNR:"+#i.Var10+"."+#b.@0xB05+#i.Var8+"."+#i.Var9+#b.@0xB07;
        
    }      



}

OnApply 

{
    Var1=Distance;
    if (Distance>999999)
    {
    message.Color=0x0000FF; Message="Пробег должен быть не более 999999 км.";
    }
    else
    {
    Var0=Distance/100;
    Var3=Var0>>8;Var4=Var0&255;
    Var8=0xb12;      
    while (Var8!=0xb14)
    {
    @Var8=Var3; Var8=Var8+1;
    @Var8=Var4; Var8=Var8+1;
    }
	message.Color=0xFF0000; message="Новый пробег записан. Дамп ОК.";
    }
}
