[Dashboard\Audi\A8\A8 VDO 93S56]



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


Form {
         Group("Пробег",5,5,140,50)
    {
        Digit(Distance," ",5,18,90);
        Label(lb1,"KM",110,20);
    }

    
    Group("Информация",5,55,270,45)
    {
        Label(msg," ",0,18);
    }


    Group("Описание",5,100,270,95) 
    {
        Label(lb4,"Калькулятор пробега для Audi A8 OLD VDO.",0,20);
        Label(lb5,"EEPROM 93S56",0,35);
        Label(lb2,"Введите нужное значение в окне <Пробег>.",0,55);
        Label(lb3,"и нажмите кнопку <Применить>.",0,70);
    }
    Picture(Logo,"Audi.bmp",170,0,0,0);
}

OnShow 
{
	// проверяем правильность дампа
	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
	{
		Var2 = ((@0x00 | (@0x01 << 8)) ^ 0xFFFF) << 4;
       	msg.Color = 0xFF0000;
       	msg.Bold = 1;
       	msg = "Дамп ОК. Введите новый пробег.";
       	Distance = Var2;
	}
}

OnApply 
{
    Var5 = 0;
    Var2 = Distance >> 4;
    if(Var2 > 0xFFFF) {Var5 = 1;}
    if(Var2 < 0x03)   {Var5 = 1;}
    if(Var5 != 0)
    {
        msg.Color = 0x0000FF;
        msg.Bold = 1;
        msg = "Пробег должен быть от 100 до 999900 км";
    }
    else
    {
        Var3 = 0x00;
        while(Var3 != 0x10)
        {
            @Var3 = (Var2 & 255) ^ 0xFF;		Var3 = Var3 + 1;
            @Var3 = ((Var2 >> 8) & 255) ^ 0xFF;	Var3 = Var3 + 1;
        }
        msg.Color = 0xFF0000;
        msg.Bold = 1;
        msg = "Дамп OK. Новый пробег записан.";
        Var2 = Var2 << 4;
		Distance = Var2;
    }
}