[Dashboard\Toyota\FJ-cruiser 93C66 Yazaki 17]

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

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

    // проверяем правильность дампа
	Var0=((@0x21 << 8) | (@0x20));
	if(Var0 < 0xFFFF)
	{
		message.Color = 0xFF0000;
		message =  "Дамп ОК. Введите пробег.";
		Var4 = 0; // точное вычисление пробега, добавка
		Var5 = 0; // точное вычисление пробега, смещение
		while(Var5 != 0x22)
		{
			Var6=((@(Var5 + 1) << 8) | (@Var5));
			if(Var6 > Var0) {Var4 = Var4 + 1;}
			Var5 = Var5 + 2;
		}
		Distance=(Var0 * 17) + Var4;
	}
	else
	{
		message.Color = 0x0000FF;
		Message = "Неверный дамп!";
		Distance = 0;
	}
}

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