[Dashboard\Peugeot\307\Dash 307 D780973 Var1]

Size(280,260); 

Form
{
    Group("Пробег",5,5,140,50)
    {
        Digit(Distance," ",5,18,90);
        Label(lb1,"KM",110,20);
    }
        
     Group("Информация",5,68,270,45)
    {
        Label(message," ",0,18);
    }
    Group("Описание",5,115,270,100) 
    {
        Label(lb4,"Калькулятор для Peugeot 307 Dash.",0,20);
        Label(lb5,"D780973 internal EEPROM",0,35);
        Label(lb2,"Введите нужное значение в окне ПРОБЕГ",0,55);
        Label(lb3,"и нажмите кнопку <Применить>.",0,70);
    }
    Picture(Picture1,"Peugeot.bmp",180,0,0,0);
}

OnShow 
{
    Message.Bold = 1;
    Var0 = 0;
    Var1 = @0xf6; 
    Var2 = @0xf7;
    Var3 = @0xf8;
    Var4 = @0xf9;
    Var5 = @0xfa;
    Var6 = @0xfb;
    Var7 = @0xfc;
    Var8 = @0xfd;
    Var9 = @0xfe;
    Var10 = @0xff;
    if (Var1 = 0xAA) {Var11 = Var10;}
    if (Var2 = 0xAA) {Var11 = Var1;}
    if (Var3 = 0xAA) {Var11 = Var2;}
    if (Var4 = 0xAA) {Var11 = Var3;}
    if (Var5 = 0xAA) {Var11 = Var4;}
    if (Var6 = 0xAA) {Var11 = Var5;}
    if (Var7 = 0xAA) {Var11 = Var6;}
    if (Var8 = 0xAA) {Var11 = Var7;}
    if (Var9 = 0xAA) {Var11 = Var8;}
    if (Var10 = 0xAA) {Var11 = Var9;}
    Var12 = (@0xe6 << 16) | (@0xe5 << 8) | Var11;
    Var13 = (@0xF0 << 16) | (@0xef << 8) | Var11;
    
    if (Var12 != Var13) {Var0 = Var0 +1;}
 
     if(Var0 != 0)
    {
        message.Color = 0x0000FF; 	
        Message = "Неверный дамп!";     
        Distance = 0;                   
    }
    else
    {
        Var14 =          ((Var12 >> 20) & 15) * 100000;
	Var14 = Var14 + (((Var12 >> 16) & 15) * 10000);
	Var14 = Var14 + (((Var12 >> 12) & 15) * 1000);
	Var14 = Var14 + (((Var12 >> 8) & 15) * 100);
	Var14 = Var14 + (((Var12 >> 4) & 15) * 10);
	Var14 = Var14 +   (Var12 & 15);

        message.Color = 0xFF0000;                    
        message = "Дамп ОК. Введите новый пробег.";  
        Distance =  Var14;  
    }                          
}

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

    if(Var0 != 0)
    {
        message.Color = 0x0000FF; 
        Message = "Пробег должен быть от 100 до 999900 км.";
    }
    else
    {
                 Var0 = Distance;
		Var2 = Var0 % 10; Var0 = Var0 / 10;
		Var2 = Var2 | ((Var0 % 10) << 4); Var0 = Var0 / 10;  
		Var2 = Var2 | ((Var0 % 10) << 8); Var0 = Var0 / 10;  
		Var2 = Var2 | ((Var0 % 10) << 12); Var0 = Var0 / 10;  
		Var2 = Var2 | ((Var0 % 10) << 16); Var0 = Var0 / 10;  
		Var2 = Var2 | ((Var0 % 10) << 20); Var0 = Var0 / 10; 
                
        
        
		@0xe6 = Var2 >> 16; 
		@0xe5 = Var2 >> 8;  
                @0xf0 = Var2 >> 16;
                @0xef = Var2 >>8;
                @0xf6 = 0xAA;
                Var3 = 0xff;
		while (Var3 != 0xf6)
                {
                 @Var3 = Var2 & 255;
                 Var3 = Var3 - 1;
		}

           // подсчет КС
           Var5 = @0xe2 + @0xe3 + @0xe4 + @0xe5 + @0xe6 + @0xe7 + @0xe8 + @0xe9 + @0xea; 
           
              @0xeb =  Var5; 
              @0xf5 =  Var5;   

        message.Color = 0xFF0000;  
        message = "Новый пробег записан. Дамп ОК.";
    }
}





















