[Dashboard\!\Mitsubishi Delica YNS 93C46.cal]

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

Form 

{    	Group("Пробег",5,5,150,50){Digit(Distance," ",5,20,90); {Label(lbkm,"км",110,20);}
	Group("Информация",5,110,310,45)	{Label(message," ",0,20);}
	Group("Описание",5,155,310,80) 
    	{
	Label(lb1,"Калькулятор для Mitsubishi Delica",0,15);
        Label(lb2,"1995-2001 г.",0,30);
	Label(lb3,"EEPROM 93C46, панель YNS.",0,45);
        Label(lb4,"Выберите Вариант и Нажмите Кнопку <Применить>.",0,60);
    	}
    	Picture(Picture1,"Mitsubishi.bmp",190,15,0,0);
}

OnShow

{	Message.Bold = 1;
        Message.Alignment = 1;
   	Var1 = 0;
	Var2 = 0;
    	Var3 = 0;
    	Var4 = 0;
    	Var5 = 0x00; // адрес малого круга
    	Var6 = 100;
    	Var10 = 0;
    	Var11 = 0; // Error
    	Var22 = 0;
    	Var0 = (@Var5 << 8) | @(Var5 + 1);	Var5 = Var5 + 2; // значение в ячейке 0

	if (Var0 = 0xDEFB) { Var1 = 0; Var3 = Var3 + 1; }
	if (Var0 = 0xBDF7) { Var1 = 1; Var3 = Var3 + 1; }
	if (Var0 = 0x7BEF) { Var1 = 2; Var3 = Var3 + 1; }
	if (Var0 = 0xF7DE) { Var1 = 4; Var3 = Var3 + 1; }
	if (Var0 = 0xEFBD) { Var1 = 8; Var3 = Var3 + 1; }

	while (Var5 < 0x33) 
	{
       	Var10 = (@Var5 << 8) | @(Var5 + 1);     
       	if (Var10 = 0xEFBD) {Var3 = Var3 + 1; }
       	if (Var10 = 0xDEFB) {Var3 = Var3 + 1; }
       	if (Var10 = 0xBDF7) {Var3 = Var3 + 1; }
       	if (Var10 = 0x7BEF) {Var3 = Var3 + 1; }
       	if (Var10 = 0xF7DE) {Var3 = Var3 + 1; }
        
	Var5 = Var5 + 2;
	if(Var5 = 0x14) {Var5 = 0x20;}
	if(Var0 = Var10) {Var22 = Var22 + 1;}
	}

	if (Var1 = 0x00) { Var99 = 0 + Var22;}
	if (Var1 = 0x01) { Var99 = 20 + Var22;}
	if (Var1 = 0x02) { Var99 = 40 + Var22;}
	if (Var1 = 0x04) { Var99 = 60 + Var22;}
	if (Var1 = 0x08) { Var99 = 80 + Var22;}
	
	if(Var3 < 20) {Var11 = 1;} // Error

	Var1 = 0;
	Var3 = 0;
	Var5 = 0x40;  // адрес

	while (Var2 < 4) 
	{
       	Var0 = (@Var5 << 8) | @(Var5 + 1);
       	if (Var0 = 0xEFBD) { Var1 = 0; Var3 = Var3 + 1; }
       	if (Var0 = 0xDEFB) { Var1 = 1; Var3 = Var3 + 1; }
       	if (Var0 = 0xBDF7) { Var1 = 2; Var3 = Var3 + 1; }
       	if (Var0 = 0x8CB1) { Var1 = 3; Var3 = Var3 + 1; }
       	if (Var0 = 0x7BEF) { Var1 = 4; Var3 = Var3 + 1; }
       	if (Var0 = 0x4AA9) { Var1 = 5; Var3 = Var3 + 1; }
       	if (Var0 = 0x29A5) { Var1 = 6; Var3 = Var3 + 1; }
       	if (Var0 = 0x18E3) { Var1 = 7; Var3 = Var3 + 1; }
       	if (Var0 = 0xF7DE) { Var1 = 8; Var3 = Var3 + 1; }
       	if (Var0 = 0xC698) { Var1 = 9; Var3 = Var3 + 1; }
	Var4 = Var4 + (Var1 * Var6);
       	Var6 = Var6 * 10;
	Var5 = Var5 + 2;
       	Var2 = Var2 + 1;
    	}
	
    	if(Var3 != 4)  {Var11 = 1;}
	if(Var11 != 0)
    	{
        // неверное значение пробега
        Message.Color = 0x0000FF;
        Message = "Неверный дамп!!!";
        Distance = 0;
    	}
    	else
    	{
        Message.Color = 0xFF0000;
        Distance = Var4 + Var99;
        Message = "Дамп ОК. Введите пробег.";
    	}
}

OnApply

{	Var2 = 0;       // индикатор ошибки
	Var5 = 0;       // Счетчик
	Var55 = 0x00;    // Малый круг
	Var6 = 0x40;    // Пробег
	if(Distance > 9999999) { Var2 = 1;}
    	if(Var2 != 0)
    	{ Message.Color = 0x0000FF; Message = "Пробег должен быть не более 999999 км.";}
	else
    	{
		Var10 = Distance;
		Var7 = Var10 % 10; Var10 = Var10 / 10;
		Var8 = Var10 % 10; Var10 = Var10 / 10;
		Var9 = (Var8 * 10) + Var7;
		Var7 = Var9 / 20;
		Var8 = (Var9 % 20) + 1;
		
        	if (Var7 = 0) { Var11 = 0xEFBD; Var12 = 0xDEFB;}
	        if (Var7 = 1) { Var11 = 0xDEFB; Var12 = 0xBDF7;}
        	if (Var7 = 2) { Var11 = 0xBDF7; Var12 = 0x7BEF;}
	        if (Var7 = 3) { Var11 = 0x7BEF; Var12 = 0xF7DE;}
        	if (Var7 = 4) { Var11 = 0xF7DE; Var12 = 0xEFBD;}

	        Var21 = (Var11 >> 8) & 0xFF;
        	Var22 = Var11 & 0xFF;
	        Var31 = (Var12 >> 8) & 0xFF;
        	Var32 = Var12 & 0xFF;

	        while (Var55 < 0x33) 
			{
			if(Var5 < Var8) {@Var55 = Var31; @Var55.Mismatch = 1; Var55 = Var55 + 1; @Var55 = Var32; @Var55.Mismatch = 1; Var55 = Var55 + 1;}
			else {@Var55 = Var21; @Var55.Mismatch = 1; Var55 = Var55 + 1; @Var55 = Var22; @Var55.Mismatch = 1; Var55 = Var55 + 1;}
			Var5 = Var5 + 1;
			if(Var55 = 0x14) {Var55 = 0x20;}
			}
		
		Var5 = 0;       // Счетчик
	        while (Var5 < 4) 
		{
	        Var4 = (Var10 % 10); Var10 = Var10 / 10;
	        if (Var4 = 0) { Var1 = 0xEFBD; }
        	if (Var4 = 1) { Var1 = 0xDEFB; }
	        if (Var4 = 2) { Var1 = 0xBDF7; }
	        if (Var4 = 3) { Var1 = 0x8CB1; }
	        if (Var4 = 4) { Var1 = 0x7BEF; }
	        if (Var4 = 5) { Var1 = 0x4AA9; }
	        if (Var4 = 6) { Var1 = 0x29A5; }
	        if (Var4 = 7) { Var1 = 0x18E3; }
	        if (Var4 = 8) { Var1 = 0xF7DE; }
        	if (Var4 = 9) { Var1 = 0xC698; }

	        Var11 = (Var1 >> 8) & 0xFF;
            	Var12 = Var1 & 0xFF;
            	@Var6 = Var11; @Var6.Mismatch = 1;
             	Var6 = Var6 + 1;
            	@Var6 = Var12; @Var6.Mismatch = 1;
             	Var6 = Var6 + 1;
 	        Var5 = Var5 + 1;
        	}
        Message.Color = 0xFF0000; Message.Bold = 1; Message.Alignment = 1; Message = "Дамп ОК. Новый пробег записан.";
    	}
}