[Dashboard\Nissan\Qashqai\Qashqai 93C66 Kansey]

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

Form
{
	Group("Пробег",5,5,140,50)
	{
		Digit(Distance," ",10,18,60);
		Label(lb1,"KM",80,23);
	}
	Group("Информация",5,60,270,45)
	{
		Label(msg," ",0,18);
	}
	Group("Описание",5,110,270,100) 
	{
		Label(lb4,"Калькулятор пробега для Nissan 350ZX.",0,20);
		Label(lb5,"EEPROM S93C66.",0,35);
		Label(lb2,"Введите нужное значение в окне ПРОБЕГ",0,60);
		Label(lb3,"и нажмите кнопку <Применить>.",0,75);
	}
	Picture(Logo,"Nissan.bmp",170,0,0,0);
}

Var Address, Error, Constant;

OnShow
{
	Address = 0x68; // Начальный адрес
	Constant = 0xB73D;
	Error = 1;
	// --------------- проверяем правильность дампа
	Var2 = (@(Address + 8)) | (@(Address + 9) << 8); 
	if(Var2 = 0xFE3F)   { Error = 0;}
	if(Var2 = 0xFFFF)   { Error = 0;}
	
	Var1 = ( @(Address + 1) << 8 ) | @Address;
	if(Var1 > Constant)	{ Error = 1;}
	Var1 = Constant - Var1;
	Var1 = (Var1) << 6;
	Var1 = (Var1 * 838857) / 1000000;
	if(Var1 > 999999)	{ Error = 1;}

	if(Error = 1)
	{
		msg.Color = 0x0000FF;
		msg.Bold = 1;
		msg = "Неверный дамп!";
		Distance = 0;
	}
	else
	{
		msg.Color = 0xFF0000;
		msg.Bold = 1;
		msg.Alignment = 1;
		msg = "Дамп ОК. Введите новый пробег.";
		Distance = Var1;
	}
}

OnApply
{
	Var0 = 0;       // индикатор ошибки
	Var10 = Distance;
	Var3 = Address;
	Var4 = Var3 + 0x08;
	if(Var10 > 9999900) { Var0 = 1;}
	if(Var10 < 100)     { Var0 = 1;}
	if(Var0 != 0)
	{
		// ----------------- неверное значение пробега
		msg.Color = 0x0000FF;
		msg = "Пробег должен быть от 100 до 999900 км.";        
	}
    else
    {
		Var10 = ((Var10 * 1000000) / 838857) >> 6;
		Var10 = Constant - Var10;
		Var7 = Var10;
		while(Var3 != Var4)
		{
			@Var3 = Var7 & 0xFF;		Var3 = Var3 + 1;
			@Var3 = Var7 >> 8 & 0xFF;	Var3 = Var3 + 1;
			Var6 = Var7 * 2;
			Var7 = (Var6 >> 16 + Var6) & 0xFFFF;
		}
		Var7 = ((@(Address + 2) ) | (@(Address + 3) << 8)) + 2;
		Var3 = Address + 10;
		Var4 = Var3 + 0x04;
		while(Var3 != Var4)
		{
			@Var3 = Var7 & 0xFF;		Var3 = Var3 + 1;
			@Var3 = Var7 >> 8 & 0xFF;	Var3 = Var3 + 1;
			Var6 = Var7 * 2;
			Var7 = (Var6 >> 16 + Var6) & 0xFFFF;
		}
		msg.Color = 0xFF0000;
		msg.Bold = 1;
		msg.Alignment = 1;
		msg = "Дамп OK. Новый пробег записан.";
	}
}