[Dashboard\Suzuki\Grand Vitara\Grand Vitara 24c16 VDO]

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,"Калькулятор пробега Suzuki Grand Vitara",0,20);
        Label(lb2,"EEPROM 24c16. Панель VDO",0,35);
        Label(lb3,"Введите нужное значение в окне ПРОБЕГ.",0,50);
        Label(lb4,"Нажмите кнопку <Применить>.",0,65);
    }
    Picture(Logo,"Toyota.bmp",180,10,0,0);
}

OnShow 
{
	Var1 = 0x7E0; // Начальный адрес
	Var0 = @Var1 | (@(Var1 + 1) << 8); // Пробег в нулевой ячейке
	Var3 = 0;
	Var4 = 1;
	Var5 = 0;

	Var1 = Var1 + 2; // Начальный адрес второй (всего 16) копии пробега
	while(Var3 < 15) {
		Var10 = @Var1 | (@(Var1 + 1) << 8);
		Var11 = Var10 - Var0;
		if(Var11 = 1) {Var5 = Var5 + 1;}
		if(Var11 = 0) {Var4 = Var4 + 1;}
		Var1 = Var1 + 2;
		Var3 = Var3 + 1;
	}
	Var5 = Var5 + Var4;
	if(Var4 = 16) { Var4 = 0;}
	if (Var5 != 16)
	{
		msg.Color = 0xFF;
		msg.Bold = 1;
		msg = "Неверный дамп!";
		Distance = 0;
	}
	else
	{
		Var3 = (Var10 ^ 0xFFFF) * 32;
		msg.Color = 0x00;
		msg.Bold = 1;
		msg = "Дамп OK!";
		Distance = Var3 + (Var4 * 2);
	}
}

OnApply 
{
	Var10 = Distance;
	Var0 = 0;
	if(Var10 < 100)     {Var0 = 1;}
	if(Var10 > 999900)  {Var0 = 1;}

	if(Var0 = 1)
	{
		msg.Color = 0xFF;
		msg.Bold = 1;
		msg = "Пробег должен быть от 100 до 999900 км";        
	}
	else
	{
		Var3 = 0;
		Var5 = 0x7E0;	// Начальный адрес
		Var6 = 16;		// Количество повторов пробега
		Var0 = (Var10 / 0x20) + 1;    
		Var11 = Var10 % 0x20;    
		Var12 = Var6 - (Var6 - (Var11 / 2));

		Var1 = (Var0 & 0xFF) ^ 0xFF; 
		Var2 = ((Var0 >> 8) & 0xFF) ^ 0xFF; 

		while (Var3 < Var12) { // заполняем дамп
			@Var5 = Var1; Var5 = Var5 + 1;
			@Var5 = Var2; Var5 = Var5 + 1;
			Var3 = Var3 + 1;
		} 

		Var0 = Var0 - 1;    
		Var12 = Var6 - Var12;
		
		Var1 = (Var0 & 0xFF) ^ 0xFF; 
		Var2 = ((Var0 >> 8) & 0xFF) ^ 0xFF; 

		Var3 = 0;
		while (Var3 < Var12) { // заполняем дамп
			@Var5 = Var1; Var5 = Var5 + 1;
			@Var5 = Var2; Var5 = Var5 + 1;
			Var3 = Var3 + 1;
        } 

        msg.Color = 0x00;
        msg.Bold = 1;
        msg = "Дамп OK!";
    }
}
