[Dashboard\Mazda\Capella\Capella - 93C56 new]

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

Form
{
	Group("Пробег",35,13,120,50)
	{
		Digit(Distance," ",5,18,70);
		Label(lbkm,"КМ",90,20);
	}
	Group("Информация",5,80,270,45) 
	{
		Label(Message," ",0,18);
	}    
	Group("Описание",5,130,270,90) 
	{
		Label(lb1,"Калькулятор пробега Mazda Capella",0,20);
		Label(lb2,"EEPROM 93C56.",0,35);
		Label(lb3,"Введите нужное значение в окне ПРОБЕГ.",0,50);
		Label(lb4,"Нажмите кнопку <Применить>.",0,65);
	}
	Picture(Logo,"Mazda.bmp",185,15,0,0);
}

OnShow
{
	Var1 = 0x00; // Начальный адрес
	Var0 = @Var1 | (@(Var1 + 1) << 8); // Пробег в нулевой ячейке
	Var3 = 0;
	Var4 = 1;
	Var5 = 0;

	Var1 = Var1 + 2; // Начальный адрес второй (всего 50) копии пробега
	while(Var3 < 49) {
		Var10 = @Var1 | (@(Var1 + 1) << 8);
		if(Var10 = 0xCCCC) {Var5 = Var5 + 1;}
		Var11 = Var0 - Var10;
		if(Var11 > 0) {Var5 = Var5 + 1;}
		if(Var11 = 0) {Var4 = Var4 + 1;}
		Var1 = Var1 + 2;
		Var3 = Var3 + 1;
	}
	Var5 = Var5 + Var4;
	if (Var5 != 50)
	{
		Message.Color = 0xFF;
		Message.Bold = 1;
		Message = "Неверный дамп!";
		Distance = 0;
	}
	else
	{
		Var3 = Var0 - 0x3333;
		Var2 = (((Var3 >> 4) & 0x0F) * 10)   + ((Var3 & 0x0F)  *  1);
		Var12 = (((Var3 >> 12) & 0x0F) * 1000) + (((Var3 >> 8) & 0x0F)  *  100); 
		Var3 = (Var2 + Var12) * 100;
		Message.Color = 0x00;
		Message.Bold = 1;
		Message = "Дамп OK!";
		Distance = Var3 + (Var4 * 2);
		Message = "Введите пробег";
    }
}

OnApply
{
	Var2 = 0;       // индикатор ошибки
	Var5 = 0;       // Счетчик
	Var55 = 0x00;   // Малый круг

	if(Distance > 9999999) { Var2 = 1;}
	if(Var2 != 0)
	{
		// ----------------- неверное значение пробега
		Message.Color = 0x0000FF;
		Message = "Пробег должен быть не более 999999км.";        
	}
	else
	{
		Var0 = Distance / 100;
		Var10 = (Distance % 100) / 2;
		if(Var10 = 0) { Var10 = 50;}
		Var5 = Var0 % 10; Var0 = Var0 / 10;
		Var6 = Var0 % 10; Var0 = Var0 / 10;
		Var7 = Var0 % 10; Var0 = Var0 / 10;
		Var8 = Var0 % 10;
        
		Var16 = (Var6 << 4) | Var5;
		Var18 = (Var8 << 4) | Var7;
		Var9  = ((Var16 << 8) | Var18) + 0x3333;
		
		Var5 = 0;       // Счетчик
		Var6 = 0x00;    // Пробег

		Var11 = (Var9 >> 8) & 0xFF;
		Var12 = Var9 & 0xFF;
		if (Var10 != 50) {
			while (Var5 < Var10) {

				@Var6 = Var11; Var6 = Var6 + 1;
				@Var6 = Var12; Var6 = Var6 + 1;

				Var5 = Var5 + 1;
			}
		}
		if(Var10 > 0) {
			if(Distance < 100) {
				Var11 = 0xCC;
				Var12 = 0xCC;
			}
			else {	
				Var0 = Distance / 100 - 1;
				Var2 = Var0 % 10; Var0 = Var0 / 10;
				Var3 = Var0 % 10; Var0 = Var0 / 10;
				Var7 = Var0 % 10; Var0 = Var0 / 10;
				Var8 = Var0 % 10;
        
				Var16 = (Var3 << 4) | Var2;
				Var18 = (Var8 << 4) | Var7;
				Var9  = ((Var16 << 8) | Var18) + 0x3333;
				Var11 = (Var9 >> 8) & 0xFF;
				Var12 = Var9 & 0xFF;
			}
		}
		while (Var5 < 50) {

			@Var6 = Var11; Var6 = Var6 + 1;
			@Var6 = Var12; Var6 = Var6 + 1;

			Var5 = Var5 + 1;
		}

		Message.Color = 0xFF0000;
		Message.Bold = 1;
		Message.Alignment = 1;
		Message = "Дамп OK";
	}
}