[Dashboard\Citroen\C4\Dash C4 93C66]

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

OnShow 
{
    
    Var0 = 0x28; // Начальный адрес
    Var1 = 0; Var4 = 0; Var5 = 0;

    while(Var1 < 4)
    {
		Var2 = ((@(Var0 + 5) << 8) | (@(Var0 + 4))) ^ 0xFFFF;
		Var3 = ((@(Var0 + 7) << 8) | (@(Var0 + 6))) ^ 0xFFFF;
		Var3 = ((Var3 << 16) | Var2); // & 0xFFFF;

		Var12 = (@(Var0 + 0)) | (@(Var0 + 1) << 8);
        Var13 = (@(Var0 + 2)) | (@(Var0 + 3) << 8);
		Var13 = ((Var13 << 16) | Var12); // & 0xFFFF;
		if( Var13 != Var3 ) { Var5 = 1; }
		if(Var4 < Var13) {Var4 = Var13;} // Ищем наибольшее значение

        Var0 = Var0 + 10;
        Var1 = Var1 + 1;
    } 

    if(Var5 != 0)
    {
        msg.Color = 0x0000FF;
        msg.Bold = 1;
        msg = "Неверный дамп!";
        Distance = Var13;
    }
    else
    {
        msg.Bold = 1;
        msg.Color = 0xFF0000;                    
        msg = "Дамп ОК. Введите новый пробег.";
        Distance = Var13 / 10;
    }
}

OnApply 
{
    Var0 = 0x28; // Начальный адрес
    Var1 = Distance;
    Var5 = 0; // Индикатор ошибки
//    if(Var1 < 100)     {Var5 = 1;}
    if(Var1 > 999999)  {Var5 = 1;}

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

		Var1 = Var1 * 10;    
		// заполняем дамп
        while (Var5 < 4)
		{
			Var2 = Var1 & 0xFF; 
			Var3 = (Var1 >> 8) & 0xFF; 
			Var4 = (Var1 >> 16) & 0xFF; 
			Var6 = (Var1 >> 24) & 0xFF; 

			@Var0 = Var2;  Var0 = Var0 + 1;
			@Var0 = Var3;  Var0 = Var0 + 1;
			@Var0 = Var4;  Var0 = Var0 + 1;
			@Var0 = Var6;  Var0 = Var0 + 1;
			@Var0 = Var2 ^ 0xFF; Var0 = Var0 + 1;
			@Var0 = Var3 ^ 0xFF; Var0 = Var0 + 1;
			@Var0 = Var4 ^ 0xFF; Var0 = Var0 + 1;
			@Var0 = Var6 ^ 0xFF; Var0 = Var0 + 3;

			Var5 = Var5 + 1;
        } 

        msg.Color = 0xFF0000;
        msg.Bold = 1;
        msg = "Дамп OK. Новый пробег записан.";
    }
}


