#include <stdio.h>
//#include <stdlib.h>
#include <io.h>
//#include <bios.h>
#include <conio.h>
#include <dos.h>
#include <stat.h>
//#include <string.h>
#include <fcntl.h>
#include <dir.h>

struct ffblk Info;
//--------------------------------------------------------------------------
void main( void)
{
clrscr();
char string[12];
int err;
int x=1;int y=1;
gotoxy(x,y);

do 	{
	gotoxy(x,y);
	printf("Задайте входной файл :");
	err=scanf("%s", string);
	err=findfirst(string, &Info, FA_RDONLY);
	gotoxy(x,y);
	if(err==-1) printf("Файл не найден \n ");
	delay(300);
	}
	while ( err==-1);

int dd;
dd = open(string,O_RDONLY,S_IREAD);
long dim_size = filelength(dd);
close(dd);

FILE *dmp;
dmp = fopen (string, "rb" );
FILE *txt;
txt = fopen ("out.txt", "wt" );

unsigned int *dim = new unsigned int[dim_size];
fread(dim, dim_size, 1, dmp);

y+=2;
gotoxy(x,y);
int nnn = dim[0x20] & 0xFF00;
nnn >>=8;
printf("Номер двигателя  %04X%02X", dim[0x21], nnn);
y++;
gotoxy(x,y);
printf("Номер кузова     %01X%04X", dim[0x24] & 0x000F, dim[0x23]);

//printf("Задайте количество входных сигналов (от 1 до 8) - ");
//scanf("%i",n_line);


unsigned int  data, data_old;
data_old = 0;
int kk=0;
unsigned int ii;
while(kk < 0x30)
	{
	ii = dim[kk];
	data = data_old ^ ii;
	fprintf(txt,"%04X  %04X  %04X\n", kk, ii, data);
	kk++;
	data_old = data;
	}

y++;
gotoxy(x,y);
fprintf(txt,"%04X  старое значение  %04X\n", 0x30, dim[0x30]);
printf("%04X  старое значение  %04X\n", 0x30, dim[0x30]);
dim[0x30] = 0x7F7F ^ data;
y++;
gotoxy(x,y);
fprintf(txt,"%04X  корект значение  %04X\n", 0x30, dim[0x30]);
printf("%04X  корект значение  %04X\n", 0x30, dim[0x30]);
fwrite(dim, dim_size, 1, dmp);
y++;
gotoxy(x,y);
printf("Файл скоректирован");
fcloseall();
delay(1000);
return ;
}
//---------------------------------------------------------------------------

