[Dashboard\Honda\Element 93C46 denso]

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

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

//$WrongDump = "Неверный дамп!";
//$EnterDistance = "Дамп ОК. Введите пробег.";
//$WrongDistance = "Пробег должен быт от 100 до 999900 км.";
//$NewDumpOK = "Дамп ОК. Новый пробег записан.";

//Var Var0,Var1,Var2,Var3;

OnShow
{
    Message.Bold = 1;
    Message.Alignment = 1;

    // --------------- проверяем правильность дампа
    Var0 = 0; 
    Var1 = (@0xB << 24) | (@0xA << 16) | (@0x9 << 8) | @0x8;
    Var2 = (@0xF << 24) | (@0xE << 16) | (@0xD << 8) | @0xC;
    Var3 = (@0x13 << 24) | (@0x12 << 16) | (@0x11 << 8) | @0x10;

    if(Var1 = 0xFFFFFFFF) 	{ Var0 = Var0 + 1;}	
    if(Var1 != Var2) 		{ Var0 = Var0 + 1;}
    if(Var1 != Var3) 		{ Var0 = Var0 + 1;}
    if(Var3 != Var2) 		{ Var0 = Var0 + 1;}

    if(Var0 != 0)
    {
        message.Color = 0x0000FF;
        Message = "Неверный дамп!";
        Distance = 0;
    }
    else
    {
	Var1 = 0xFFFFFFFF ^ Var1;
        // переводим в двоично-десятичный вид
	Var0 =        ((Var1 >> 28) & 15) * 10000000;
	Var0 = Var0 + (((Var1 >> 24) & 15) * 1000000);
	Var0 = Var0 + (((Var1 >> 20) & 15) * 100000;
	Var0 = Var0 + (((Var1 >> 16) & 15) * 10000;
	Var0 = Var0 + (((Var1 >> 12) & 15) * 1000;
	Var0 = Var0 + (((Var1 >> 8) & 15) * 100;
	Var0 = Var0 + (((Var1 >> 4) & 15) * 10;
	Var0 = Var0 + (Var1 & 15);
        message.Color = 0xFF0000;
        message = "Дамп ОК. Введите пробег.";
        Distance =  Var0;
    }
}

OnApply
{
    Var1 = Distance;

    Var0 = 0;
    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;  
	Var2 = Var2 | ((Var0 % 10) << 24); Var0 = Var0 / 10;  
	Var2 = Var2 | ((Var0 % 10) << 28);  

	Var2 = Var2 ^ 0xFFFFFFFF;
	// заполняем дамп
        Var0 = 0x0b;
        
	@Var0 = Var2 >> 24;Var0 = Var0 - 1;
	@Var0 = Var2 >> 16;Var0 = Var0 - 1;
	@Var0 = Var2 >> 8; Var0 = Var0 - 1;
	@Var0 = Var2 & 255;Var0 = Var0 - 1;

        Var0 = 0x0F;
        
	@Var0 = Var2 >> 24; Var0 = Var0 - 1;
	@Var0 = Var2 >> 16; Var0 = Var0 - 1;
	@Var0 = Var2 >> 8; Var0 = Var0 - 1;
	@Var0 = Var2 & 255; Var0 = Var0 - 1;

        Var0 = 0x13;
        
	@Var0 = Var2 >> 24; Var0 = Var0 - 1;
	@Var0 = Var2 >> 16; Var0 = Var0 - 1;
	@Var0 = Var2 >> 8; Var0 = Var0 - 1;
	@Var0 = Var2 & 255; Var0 = Var0 - 1;
        message.Color = 0xFF0000;
        message = "Дамп ОК. Новый пробег записан.";
    }
}
