[Dashboard\Nissan\Nissan Maxima 2000 (93C56)]

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

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

OnShow
{
    Message.Color = 0xFF0000;
    Message.Bold = 1;
    Message.Alignment = 1;
    Distance = 0;
    Message = "Введите пробег";

    // --------------- проверяем правильность дампа

}

OnApply
{

    Message = "";
    
    Var0 = 0;       // индикатор ошибки
    Var10 = Distance;
    if(Var10 > 9999900) { Var0 = 1;}
    if(Var10 < 100)     { Var0 = 1;}
    if(Var0 != 0)
    {
        // ----------------- неверное значение пробега
        Message.Color = 0x0000FF;
        Message = "Пробег должен быть от 100 до 999900 км.";        
    }
    else
    {
        
        Var10 = Var10 / 54;

        //------ в зависимости от остатка округляем

        Var3 = Distance % 54;
        if(Var3 > 27) {Var10 = Var10 + 1;}
        Var2 = 0xb73d - Var10;

        @0x68 = Var2 >> 8;    @0x68.Mismatch = 1;
        @0x69 = Var2 & 255;   @0x69.Mismatch = 1;

        Var3 = (Var2 & 0x8000) >> 15;   // запоминаем старший бит
        Var2 = (Var2 << 1) | Var3;      // сдвигаем влево
          
        @0x6A = Var2 >> 8;    @0x6A.Mismatch = 1;
        @0x6B = Var2 & 255;   @0x6B.Mismatch = 1;

        Var3 = (Var2 & 0x8000) >> 15;   // запоминаем старший бит
        Var2 = (Var2 << 1) | Var3;      // сдвигаем влево

        @0x6C = Var2 >> 8;    @0x6C.Mismatch = 1;
        @0x6D = Var2 & 255;   @0x6D.Mismatch = 1;

        Var3 = (Var2 & 0x8000) >> 15;   // запоминаем старший бит
        Var2 = (Var2 << 1) | Var3;      // сдвигаем влево

        @0x6E = Var2 >> 8;    @0x6E.Mismatch = 1;
        @0x6F = Var2 & 255;   @0x6F.Mismatch = 1;

        Var2 = 0xb73d - Var10 - 1;

        @0x72 = Var2 >> 8;    @0x72.Mismatch = 1;
        @0x73 = Var2 & 255;   @0x73.Mismatch = 1;

        Var3 = (Var2 & 0x8000) >> 15;   // запоминаем старший бит
        Var2 = (Var2 << 1) | Var3;      // сдвигаем влево

        @0x74 = Var2 >> 8;    @0x74.Mismatch = 1;
        @0x75 = Var2 & 255;   @0x75.Mismatch = 1;
    
        Message.Color = 0xFF0000;
        Message.Bold = 1;
        Message.Alignment = 1;
        Distance = 0;
        Message = "Дамп OK";

    }
}









