[Dashboard\Nissan\Maxima\Maxima - 93C46 Kansey]

// ------------- Kansey 46 ----------------------

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

Form
{
    Group("Пробег",5,5,140,50)
    {
        Digit(Distance," ",5,18,90);
        Label(lb1,"KM",110,20);
    }
    Group("Информация",5,58,270,45)
    {
        Label(msg," ",0,18);
    }
    Group("Описание",5,105,270,100) 
    {
        Label(lb4,"Калькулятор пробега для Nissan Maxima.",0,20);
        Label(lb5,"EEPROM 93C46 (Kansey)",0,35);
        Label(lb2,"Введите нужное значение в окне ПРОБЕГ",0,55);
        Label(lb3,"и нажмите кнопку <Применить>.",0,70);
    }
    Picture(Picture1,"Nissan.bmp",180,10,0,0);
}

OnShow
{
    	Msg.Color = 0xFF0000;
    	Msg.Bold = 1;
    	Distance = 0;

    	// --------------- проверяем правильность дампа

     	Var0 = 0;

	Var1 = @0x6A + @0x6B + @0x6C + @0x6D + @0x6E + @0x6F;
	if(Var1 = 1530) { Var0 = 1;}
	Var1 = @0x6B << 8 | @0x6A;
	if((Var1 & 0x8000) != 0x8000) { Var0 = 1;}
	Var2 = 0;
	Var4 = 0;
	Var5 = 1; // маска		
	while(Var4 != 5)
	{
		if((Var1 & 7) !=0)
		{
			if((Var1 & 7) = 7)  { Var2 = Var2 | Var5; }
			else                { Var0 = 1;           }
		} 
		Var4 = Var4 + 1;
		Var1 = Var1 >> 3;
		Var5 = Var5 << 1;		
	}
	Var12 = Var2;     	// третья цифра пробега

	Var1 = @0x6D<< 8 | @0x6C;
	if((Var1 & 0x8000) != 0x8000) { Var0 = 1;}
	Var2 = 0;
	Var4 = 0;
	Var5 = 1; // маска		
	while(Var4 != 5)
	{
		if((Var1 & 7) !=0)
		{
			if((Var1 & 7) = 7)  { Var2 = Var2 | Var5; 	}
			else                { Var0 = 1;        }
		} 
		Var4 = Var4 + 1;
		Var1 = Var1 >> 3;		
		Var5 = Var5 << 1;		
	}
	Var11 = Var2;     	// вторая цифра пробега

	Var1 = @0x6F<< 8 | @0x6E;
	if((Var1 & 0x8000) != 0x8000) { Var0 = 1;}
	Var2 = 0;
	Var4 = 0;
	Var5 = 1; // маска		
	while(Var4 != 5)
	{
		if((Var1 & 7) !=0)
		{
			if((Var1 & 7) = 7)  { Var2 = Var2 | Var5; 	}
			else                { Var0 = 1;         }
		} 
		Var4 = Var4 + 1;
		Var1 = Var1 >> 3;		
		Var5 = Var5 << 1;		
	}
      Var10 = Var2;     	// первая цифра пробега

	if(Var0 = 0)
	{
		msg.Color = 0xFF0000;
            msg.Bold = 1;
            msg = "Дамп ОК. Введите новый пробег."; 
		Var0 = ((Var10 << 10) + (Var11 << 5) + var12) * 537 / 10;

		if(Var0 > 1000000)
			{
			Var0 = Var0-1000000;
			}



		Distance = Var0;
	}
	else
	{
		msg.Color = 0x0000FF;
		msg.Bold = 1;
		msg = "Неверный дамп!";
		Distance = 0;

	}
}

OnApply
{

    
    Var0 = 0;       		// индикатор ошибки
    Var10 = Distance;
    if(Var10 > 9999900) { Var0 = 1;}
    if(Var10 < 100)     { Var0 = 1;}
    if(Var0 != 0)
    {
        msg.Color = 0x0000FF;
        msg.Bold = 1;
        msg = "Пробег должен быть от 100 до 999900 км";        
    }
    else
    {
	Var10 = Var10 * 10 / 537;

	Var2 = Var10 & 31;       
        Var4 = 0;
	Var11 = 0x8000;
	Var5 = 7;   
	while(Var4 != 5)
	{
		if((Var2 & 1) = 1) { Var11 = Var11 | Var5;}
		Var5 = Var5 << 3;
		Var2 = Var2 >> 1;
		Var4 = Var4 + 1;	
	}
	@0x6B = Var11 >> 8;
	@0x6A = Var11;

	Var2 = (Var10 >> 5) & 31;       
        Var4 = 0;
	Var11 = 0x8000;
	Var5 = 7;   
	while(Var4 != 5)
	{
		if((Var2 & 1) = 1) { Var11 = Var11 | Var5;}
		Var5 = Var5 << 3;
		Var2 = Var2 >> 1;
		Var4 = Var4 + 1;	
	}
	@0x6D = Var11 >> 8;
	@0x6C = Var11;

	Var2 = (Var10 >> 10) & 31;       
        Var4 = 0;
	Var11 = 0x8000;
	Var5 = 7;   
	while(Var4 != 5)
	{
		if((Var2 & 1) = 1) { Var11 = Var11 | Var5;}
		Var5 = Var5 << 3;
		Var2 = Var2 >> 1;
		Var4 = Var4 + 1;	
	}
	@0x6F = Var11 >> 8;
	@0x6E = Var11;

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


    }
}










