[Dashboard\Mazda\YNS 93Cx6]

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(message," ",0,18);
    }
    Group("Описание",5,105,270,100) 
    {
        Label(lb4,"Калькулятор пробега для Mazda алгоритм YNS.",0,20);
        Label(lb5,"EEPROM 93C56",0,35);
        Label(lb2,"Введите нужное значение в окне ПРОБЕГ",0,55);
        Label(lb3,"и нажмите кнопку <Применить>.",0,70);
    }
    Picture(Picture1,"Mazda.bmp",180,10,0,0);
}

OnShow
{
    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;
        Message.Bold = 1;
        Message.Alignment = 1;
        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 = "Пробег должен быть от 100 до 999900 км.";        
    }
    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 = "Дамп OK";
    }
}









