[Dashboard\Toyota\Spacio\Spacio 24C02.cal]

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

Form 

{    	Group("Пробег",5,5,150,50)
 	{
	Digit(Distance," ",5,18,90);
	}
	Group("Информация",5,88,310,45)
    	{Label(message," ",0,18);}
    	Group("Описание",5,135,310,100) 
    	{
	Label(lb4,"Калькулятор пробега для Toyota Spasio 24C02.",0,20);
        Label(lb5,"EEPROM 93C46, панель Denso.",0,35);
        Label(lb2,"Введите нужное значение в окне ПРОБЕГ",0,50);
        Label(lb3,"и нажмите кнопку <Применить>.",0,65);
    	}
    Picture(Picture1,"Toyota.bmp",200,20,0,0);
	}

OnShow

{	Message.Bold=1;
	Message.Alignment=1;
       	//проверяем правильность дампа
	Var11=@0x8+3;
	Var12=((@(0x8)-0x18)/3)*65536; 	//определение добавки из 0x08, в каждой группе по 65536км, соответственно максимальный пробег 65536*5-1=327679км
	Var0=0; // счетчик ошибок	
	Var10=0x18; //начальное смещение  	
		while(Var10<Var11)
			{
			Var1=(@(Var10)<<16)	|(@(Var10+1)<<8)	|@(Var10+2);
			Var2=(@(Var10+15)<<16)	|(@(Var10+16)<<8)	|@(Var10+17);
			Var3=(@(Var10+30)<<16)	|(@(Var10+31)<<8)	|@(Var10+32);
			if(Var1!=Var2) {Var0=Var0+1;}
			if(Var2!=Var3) {Var0=Var0+1;}
			Var10=Var10+3;
			}	
	if(Var0!=0) {message.Color=0x0000FF;Message="Неверный дамп!";}
    	else {message.Color=0xFF0000;message="Дамп ОК, нажмите кнопку <Применить>";Distance=(Var1&0xFFFF)+Var12;}	

}

OnApply

{	
    	if(Distance>327679)	{message.Color=0x0000FF; Message="Пробег должен быть не более 327679 км.";}
    	else
	{
        Var1=Distance/65536; //расчет количества старших групп
	Var2=Var1*3+0x18; // вычисление индексов адресов начала младшей группы	
	Var3=Distance%65536; //вычисление младшей части
	Var4=((Var3>>8)+Var3)&0xFF; // расчет КС
		@0x08=Var2;@0x09=Var2;@0x0A=Var2;@0x0C=Var2;@0x0D=Var2;@0x0E=Var2; //запись индексов адресов начала младшей группы
		Var6=0x18; // смещение				
		while(Var6<0x45) // стирание массива
		{
		@Var6=0xFF;			
		Var6=Var6+1;			
		}
		Var6=0x18; // смещение
		while(Var6<Var2) // запись старшей группы
		{	
		@Var6=0xFE; Var6=Var6+1; @Var6=0xFF; Var6=Var6+1; @Var6=0xFF;		
		Var6=Var6+13;	
		@Var6=0xFE; Var6=Var6+1; @Var6=0xFF; Var6=Var6+1; @Var6=0xFF;		
		Var6=Var6+13;	
		@Var6=0xFE; Var6=Var6+1; @Var6=0xFF; Var6=Var6+1; @Var6=0xFF;		
		Var6=Var6+3;				
		}
		// запись младшей группы	
		@Var2=Var4; Var2=Var2+1; @Var2=Var3>>8; Var2=Var2+1; @Var2=Var3;
		Var2=Var2+13;
		@Var2=Var4; Var2=Var2+1; @Var2=Var3>>8; Var2=Var2+1; @Var2=Var3;
		Var2=Var2+13;
		@Var2=Var4; Var2=Var2+1; @Var2=Var3>>8; Var2=Var2+1; @Var2=Var3;
	message.Color=0xFF0000;
        message="Дамп ОК. Новый пробег записан.";
	}
}

