[Dashboard\Audi\A4\A4 UKNS 93C56 v2]

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

Form
{
    Group("Пробег",35,13,120,50)
    {
        Digit(Distance," ",5,18,70);
        Label(lbkm,"КМ",90,20);
    }
    Group("Информация",5,80,270,45) 
    {
        Label(msg," ",0,18);
    }    
    Group("Описание",5,130,270,90) 
    {
        Label(lb1,"Калькулятор пробега Audi A4 UKNS",0,20);
        Label(lb2,"EEPROM 93C56.",0,35);
        Label(lb3,"Введите нужное значение в окне ПРОБЕГ.",0,50);
        Label(lb4,"Нажмите кнопку <Применить>.",0,65);
    }
    Picture(Logo,"Audi.bmp",185,15,0,0);
}


Var Var0,Var1,Var2,Var3,Var4,Var5,Var10,Var11;

OnShow 
{
    // просматриваем дамп от адреса 0 до адреса 100
    // считаем количество одинаковых ячеек
    

// --------------- проверяем правильность дампа
	// проверяем правильность дампа
	Var0 = 0;
	Var1 = 0xF0; 
	while(Var1 != 0x100)
	{
		Var2 = @Var1;
		if(Var2 != 0xFF) { Var0 = 1;}
		Var1 = Var1 + 1;
	}
	if(Var0 = 0)
	{
		msg.Color = 0x0000FF;
		msg.Bold = 1;
		msg = "Неверный дамп!";
		Distance = 0;
	}
      else
      {

           Var0 = (@0x70 << 8) | @0x71;     // значение в нулевой ячейке
           // переводим пробеги из двоично-десятичного вида в десятичный
           Var0 = ((Var0 >> 12)*100000) + (((Var0 >> 8)&0x0f)*10000) + (((Var0 >> 4)&0x0f)*1000) + ((Var0 & 0x0f)*100);          
           msg.Color = 0xFF0000;
           msg.Bold = 1;
           msg = "Дамп ОК. Введите новый пробег.";
           Var0 = var0 + (47);
           Distance = Var0;

     }
    
}

OnApply 
{
    Var1 = Distance;

    Var0 = 1;
    if(Var1 < 100)      { Var0 = Var0 - 1; }
    if(Var1 > 999900)   { Var0 = Var0 - 1; }

    if(Var0 = 0)
    {
        msg.Color = 0x0000FF;
        msg.Bold = 1;
        msg = "Пробег должен быть от 100 до 999900 км"; 
    }

    else
    {
                
        // переводим из двоично-десятичного в двоичный вид
        Var1 = Distance;
	Var2 = Var1 % 10; Var1 = Var1 / 10;
	Var2 = Var2 | ((Var1 % 10) << 4); Var1 = Var1 / 10;  
	Var2 = Var2 | ((Var1 % 10) << 8); Var1 = Var1 / 10;  
	Var2 = Var2 | ((Var1 % 10) << 12); Var1 = Var1 / 10;  
	Var2 = Var2 | ((Var1 % 10) << 16); Var1 = Var1 / 10;  
	Var2 = Var2 | ((Var1 % 10) << 20); Var1 = Var1 / 10;  
	Var2 = Var2 | ((Var1 % 10) << 24); Var1 = Var1 / 10;  
	Var2 = Var2 | ((Var1 % 10) << 28);  



        Var0 = 0x70;
        while(Var0 < 0xD4)
        {
                
                @Var0 = Var2 >> 16; Var0 = Var0 + 1;
                @Var0 = Var2 >> 8;  Var0 = Var0 + 1;
        }
                   
        msg.Color = 0xFF0000;
        msg.Bold = 1;
        msg = "Дамп OK. Новый пробег записан.";
        Distance = Distance;

    }
}


