[Dashboard\Ssang Yong\Musso 93C56]

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

Form 
{
    Group("Пробег",5,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,"Калькулятор пробега для Ssang Yong Musso.",0,20);
        Label(lb2,"EEPROM 93C56.",0,35);
        Label(lb3,"Введите нужное значение в окне <Пробег>.",0,50);
        Label(lb4,"Нажмите кнопку <Применить>.",0,65);
    }
    Picture(Logo,"ssangyong.bmp",170,5,0,0);
}

Var Address, TempAddr, TempDist, MaxDist, Error;

OnShow 
{
	Address = 0x09;
	MaxDist = 0x00; 
	Error = 0x00; 
	Var1 = 0x00;
	TempAddr = Address;
	// проверяем правильность дампа и ищем максимальный пробег
	Var1 = (@Address << 8) | (@(Address + 1));
	if(Var1 > 0x9897) {Error = 1; TempAddr = 0x78;}
	while(TempAddr < 0x78)
	{
		Var2 = (@TempAddr << 8) | (@(TempAddr + 1));
		if((Var1 - Var2) > 1) {Error = 1; TempAddr = 0x78;}
		TempDist = (@TempAddr << 16) | (@(TempAddr + 1) << 8) | (@(TempAddr + 2));
		if(TempDist >  MaxDist) { MaxDist = TempDist;}
		TempAddr = TempAddr + 12;
	}
	if(Error = 1)
	{
		msg.Color = 0x0000FF;
		msg.Bold = 1;
		msg = "Неверный дамп!";
		Distance = 0;
	}
	else
	{
       	msg.Color = 0xFF0000;
       	msg.Bold = 1;
       	msg = "Дамп ОК. Введите новый пробег.";
       	Distance = MaxDist / 10;
	}
}

OnApply 
{
	TempAddr = Address;
	Error = 0x00; 
    Var2 = Distance;

    if(Var2 > 999900) {Error = 1;}
    if(Var2 < 0) 	  {Error = 1;}
    if(Error != 0)
    {
        msg.Color = 0x0000FF;
        msg.Bold = 1;
        msg = "Пробег должен быть от 0 до 999900 км";
    }
    else
    {
		Var2 = Var2 * 10;
		while(TempAddr < 0x78)
		{
			@TempAddr = (Var2 >> 16) & 0xFF;	TempAddr = TempAddr + 1;
			@TempAddr = (Var2 >> 8) & 0xFF;		TempAddr = TempAddr + 1;
			@TempAddr = Var2 & 0xFF;			TempAddr = TempAddr + 10;
        }
        msg.Color = 0xFF0000;
        msg.Bold = 1;
        msg = "Дамп OK. Новый пробег записан.";
    }
}
