[Dashboard\Toyota\Avensis\ Avensis VDO 93c56.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,"Калькулятор для Toyota Avensis.",0,15);
        Label(lb2,"1998-2002 г.",0,30);
	Label(lb3,"EEPROM 93C56, панель VDO.",0,45);
        Label(lb4,"Выберите Вариант и Нажмите Кнопку <Применить>.",0,60);
    	}
    	Picture(Picture1,"Toyota.bmp",190,15,0,0);
}

OnShow

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

OnApply

{
    	if(Distance>999999)	{message.Color=0x0000FF; Message="Пробег должен не более 999999 км.";}
    	else
    	{
	Var3=(Distance%2);
	if (Var3=1) {Distance=Distance-1;}
        Var0=(Distance/32)^0xFFFF;
        Var1=(Distance%32); // Вычисление добавки
        Var2=0;
		//запись старшей группы
		while(Var2<Var1) 
			{	
			@Var2=Var0-1;
			Var2=Var2+1;
		        @Var2=Var0>>8;
			Var2=Var2+1; 
			}

		//запись младшей группы
		while(Var2<=0x1E) 
			{	
			@Var2=Var0;
			Var2=Var2+1;
	        	@Var2=Var0>>8;
			Var2=Var2+1; 
			}
        message.Color=0xFF0000; message="Дамп ОК. Новый пробег записан.";
 	}
}
