[Dashboard\Motobikes\Suzuki\Suzuki DRZ400]

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

Form
{
	Group("Пробег",5,15,120,50)
	{
		Digit(Distance," ",5,18,70);
		Label(lb1,"KM",80,23);
	}
	Group("Информация",5,80,270,45)
	{
		Label(message," ",0,18);
	}
	Group("Описание",5,130,270,100)
	{
        Label(lb4,"Калькулятор пробега для Suzuki DRZ400.",0,20);
        Label(lb5,"EEPROM 93C46",0,35);
		Label(lb2,"Введите нужное значение в окне ПРОБЕГ",0,50);
		Label(lb3,"и нажмите кнопку <Применить>.",0,65);
	}
	Picture(Picture1,"Suzuki.bmp",160,5,0,0);
}

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

    // --------------- проверяем правильность дампа
    Var0 = 0; 
    Var1 = (@0x33 << 24) | (@0x32 << 16) | (@0x31 << 8) | @0x30;
    Var2 = (@0x37 << 24) | (@0x36 << 16) | (@0x35 << 8) | @0x34;
    Var3 = (@0x3b << 24) | (@0x3a << 16) | (@0x39 << 8) | @0x38;

    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) * 1000000;
	Var0 = Var0 + ((Var1 >> 24) & 15) * 100000;
	Var0 = Var0 + ((Var1 >> 20) & 15) * 10000;
	Var0 = Var0 + ((Var1 >> 16) & 15) * 1000;
	Var0 = Var0 + ((Var1 >> 12) & 15) * 100;
	Var0 = Var0 + ((Var1 >> 8) & 15) * 10;
	Var0 = Var0 + ((Var1 >> 4) & 15) * 1;
	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 ;
	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 = 0x33;
        
	@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 = 0x37;
        
	@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 = 0x3b;
        
	@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 = "Дамп ОК. Новый пробег записан.";
    }
}











