[Dashboard\BMW\E38, E39\E38, E39_93S66 high SW12,13_.cal]
Size(280,370); // ширина и высота

Form
{
    Group("Пробег",5,10,110,50)
    {
	Digit(Distance," ",5,18,50);
    Label(lb1,"км",80,20);
    }
    Group("Идентификация",5,65,270,100)
    {
    //Label(fg," ",0,20);
    //Label(nr," ",0,35);
	//Label(fg," ",0,50);
    //Label(nr," ",0,65);
    } 
    Group("Информация",5,170,270,45)
    {
    Label(message," ",0,18);
    }
    Group("Описание",5,220,270,100) 
    {
    Label(lb4,"Калькулятор пробега для BMW E38, E39",0,20);
    Label(lb5,"Тип HIGH SW12 и 13, EEPROM 93S66",0,35);
    Label(lb2,"Введите нужное значение в окне <Пробег>.",0,55);
    Label(lb3,"и нажмите кнопку <Применить>.",0,70);
    }
    Picture(Picture1,"BMW.bmp",160,6,0,0);
}

OnShow 

{
	Message.Bold=1; Message.Alignment=1;
    // проверяем правильность дампа
	Var2=@0x40; Var1=@0x41; Var4=@0x42; Var3=@0x43; Var6=@0x44; Var5=@0x45;
	Var11=Var1^Var4; Var12=Var2^Var5;
	Var0=0;
	if (Var11=0x31) {if (Var12=0x61) {Var0=24;}} // выбор алгоритма high sw12/sw13, алго 24
	if (Var0=24)
	{
	Var10=(((@0x41)<<16)|((@0x40)<<8)|@0x43);
	Distance=(Var10^0x21580C)/2;				 // наложим маску	
	}
	else {message.Color=0x0000FF; Message="Неверный дамп или тип панели!"; Distance=0;}
	

}

OnApply

{
    if(Distance>999999)	{message.Color=0x0000FF; Message="Пробег должен не более 999999 км.";}
    else
    {
	// наложим маску
	Var0=(Distance*2)^0x21580C;
	Var1=Var0^0x316142;
		
	@0x41=Var0>>16; @0x40=Var0>>8; @0x43=Var0; @0x42=Var1>>16; @0x45=Var1>>8; @0x44=Var1;
	@0x47=Var0>>16; @0x46=Var0>>8; @0x49=Var0; @0x48=Var1>>16; @0x4B=Var1>>8; @0x4A=Var1;	 
	
	message.Color=0xFF0000; message="Дамп ОК. Новый пробег записан.";	
 	}
}
