[Dashboard\Ford\Lynx 93C56]

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

OnShow 
{
    
    
    Var0 = (@0 << 8) | @1;    
    
    Var2 = 2;
    Var3 = 0;
    Var4 = 0;
    Var5 = 0;
    while(Var4 = 0)
    {
        if(Var2 > 98)    
        { 
            Var4 = 1; 
            Var3 = 0;
            Var5 = 100;
        }
        else
        {   
            Var3 = Var3 + 1;
            Var1 = (@Var2 << 8);
            Var2 = Var2 + 1;
            Var1 = Var1 | @Var2;
            Var2 = Var2 + 1;
            if(Var1 != Var0)  
            { 
                Var4 = 1; 
                Var0 = Var0 - 0x3333;
                Var1 = Var1 - 0x3333;
                // переводим пробеги из двоично-десятичного вида в десятичный
                Var0 = ((Var0 >> 12)*100000) + (((Var0 >> 8)&0x0f)*10000) + (((Var0 >> 4)&0x0f)*1000) + ((Var0 & 0x0f)*100);
                Var1 = ((Var1 >> 12)*100000) + (((Var1 >> 8)&0x0f)*10000) + (((Var1 >> 4)&0x0f)*1000) + ((Var1 & 0x0f)*100);
                Var5 = Var0 - Var1; // разница между новым и старым пробегом
            }
        }
    }
    if(Var5 != 100)
    {
        msg.Color = 0xFF;
        msg.Bold = 1;
        msg = "Неверный дамп!";
        Distance = 0;
    }
    else
    {
        // переменная Var3 содержит значение одинаковых слов
        // от начала дампа - отсчеты по 2 км 

        msg.Color = 0x00;
        msg.Bold = 1;
        msg = "Дамп OK!";
        Distance = Var1 + (Var3 * 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 = Var10 % 100;     // сотни километров
        Var10 = Var10 / 100;    
        
        // переводим из десятичной системы в двоично-десятичную

        Var11 = (Var10 % 10);Var10 = Var10 / 10;
        Var11 = Var11 | ((Var10 % 10) << 4);Var10 = Var10 / 10;
        Var11 = Var11 | ((Var10 % 10) << 8);Var10 = Var10 / 10;
        Var11 = Var11 | ((Var10 % 10) << 12);

        Var10 = Var11 + 1;
        if((Var10 & 0x000F) = 0x000A) {Var10 = Var10 + 0x06;}
        if((Var10 & 0x00F0) = 0x00A0) {Var10 = Var10 + 0x60;}
        if((Var10 & 0x0F00) = 0x0A00) {Var10 = Var10 + 0x600;}

        // заполняем дамп

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


