[Dashboard\Mini\Cooper Dash HC912DG128]

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

Form 
{
    Group("Пробег",10,13,120,50)
    {
        Digit(Distance," ",5,18,70);
        Label(lbkm,"КМ",90,20);
        
    }
    Group("Информация",5,70,270,45) 
    {
        Label(msg," ",0,18);
    }    
    Group("Описание",5,120,270,85) 
    {
        Label(lb1,"Калькулятор пробега для Mini Cooper.",0,15);
        Label(lb2,"Процессор HC912DG128.",0,30);
        Label(lb3,"Введите нужное значение в окне <Пробег>.",0,45);
        Label(lb4,"Нажмите кнопку <Применить>.",0,60);
    }

    Picture(Logo,"Mini.bmp",170,24,0,0);
    
}

OnShow 
{
     if(@0x400 != 0xff)
      {
       var0 = 0x400; var1 = 0x401; Var2 = 0;
       while(var0 != 0x480)
       {
        Var2 = Var2 + ((@Var0 << 8)|@Var1); Var0 = Var0 + 2; Var1 = Var1 + 2;
       }
        msg.Color = 0xFF0000;
        msg.Bold = 1;
        msg = "Дамп ОК. Введите новый пробег.";
        
        Distance = Var2 * 4;
      }
     else
      {
        msg.Color = 0x0000FF;
        msg.Bold = 1;
        msg = "Неверный дамп.";
        
        Distance = 0;
      }
}

OnApply 
{
	Var0 = Distance;
	Var1 = 0;			// инидкатор ошибки
	if(Var0 > 999900) {Var1 = 1;}
	if(Var1 != 0)
	{
        msg.Color = 0x0000FF;
        msg.Bold = 1;
        msg = "Пробег должен быть до 999900 км";
    }
    else
    {
	Var0 = Distance;
        Var1 = Var0 % 265; Var1 = Var1 / 4;
        Var2 = Var0 - Var1; Var2 = Var2 / 256; Var4 = Var2 & 0xFF; Var5 = (Var2 >> 8) & 0xFF;
       // Var1 = Var1 / 4;
        Var3 = 0x400;
        while(Var3 !=0x480)
        {
          @Var3 = Var5; Var3 = Var3 + 1;
          if(Var1 > 0)
           {
            @Var3 = Var4 + 1; Var1 = Var1 - 1;
           }
          else
           {
            @Var3 = Var4;
           }
          Var3 = Var3 + 1; 
        }	

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