[Dashboard\Toyota\Hino\Hino 93C46 Yazaki 48]

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,"Калькулятор пробега для Toyota Hino",0,20);
		Label(lb5,"EEPROM 93C46, панель Yazaki.",0,35);
		Label(lb2,"Введите нужное значение в окне ПРОБЕГ",0,50);
		Label(lb3,"и нажмите кнопку <Применить>.",0,65);
	}
	Picture(Picture1,"Toyota.bmp",160,5,0,0);
}

OnShow
{
	// разделяем алгоритм до 47 км включительно и от 48 км
	Var0 = ((@0x5F << 8) | (@0x5E));
	if(Var0 = 0xFFFF) // работа по алгоритму до 47 км включительно
	{
		Var4 = 0; // точное вычисление пробега
		Var5 = 0; // точное вычисление пробега, смещение
		while(Var5 != 0x60)
		{
			Var6 =((@(Var5 + 1) << 8) | (@Var5));
			if(Var6 = 0) {Var4 = Var4 + 1;}
			Var5 = Var5 + 2;
		}
		Distance = Var4;
	}
	else
	{
		//работа по алгоритму от 48 км
		Var3 = 48; // точное вычисление пробега, добавка
		Var5 = 0; // точное вычисление пробега, смещение
		while(Var5 != 0x60)
		{
			Var6 = ((@(Var5 + 1) << 8) | (@Var5));
			if(Var6 > Var0) {Var3 = Var3 + 1;}
			Var5 = Var5 + 2;
		}
		Distance = (Var0 * 48) + Var3;
		Message.Bold = 1;
		message.Color = 0xFF0000;
		message =  "Дамп ОК. Введите пробег.";
	}
}

OnApply
{
	Var1 = Distance;
	if(Var4 > 999999)
	{
		Message.Bold = 1;
		message.Color = 0x0000FF;
		Message = "Пробег должен не более 999999 км.";
	}
	else
	{ 	// разделяем алгоритм до 47 км включительно и от 48 км
		if(Var1 < 48) //работа по алгоритму до 47 км включительно
		{
			Var2 = 0;
			Var1 = Var1*2;
			while(Var2 < Var1)
			{
				@Var2 = 0x00;	Var2 = Var2 + 1;
			}
			while(Var2 < 0x60)
			{
				@Var2 = 0xFF;	Var2 = Var2 + 1;
			}
		}
		else
		{
			//работа по алгоритму от 48 км
			Var0 = ((Var1 - 48) / 48);
			Var1 = (Distance % 48) * 2; // Вычисление добавки
			Var2 = 0;
			//запись старшей группы
			while(Var2 < Var1)
			{
				@Var2 = Var0 + 1;	Var2 = Var2 + 1;
				@Var2 = Var0 >> 8;	Var2 = Var2 + 1;
			}
			//запись младшей группы
			while(Var2<0x60)
			{
				@Var2 = Var0;		Var2 = Var2 + 1;
				@Var2 = Var0 >> 8;	Var2 = Var2 + 1;
			}
		}
		Message.Bold = 1;
		message.Color = 0xFF0000;
		message="Дамп ОК. Новый пробег записан.";
	}
}