// // Модуль: утилита конвертации прошивок // // Компилятор: Microsoft Visual C++ v6.0 // Ревизия: от 9 августа 2013 года // // 9 августа 2013 // Написан первый код // #include "config.h" #include "rev16.h" // // Загрузка входного файла в буфер памяти // BOOL EXE_Read(PBUF pBuf) { char* name; name = CL_GetInFile(); if (name == NULL) { ERR_ShowError(ERR_FATAL"Unable to get input file name\n\r"); return TRUE; } // // считывание входного HEX-файла // return FL_LoadHex(name, pBuf, 0); } // // Сохранение буфера в выходном файле // BOOL EXE_Write(PBUF pBuf) { char* name; name = CL_GetOutFile(); if (name == NULL) { ERR_ShowError(ERR_FATAL"Unable to get output file name\n\r"); return TRUE; } return FL_SaveHex(name, pBuf, 0); } // // Выполнение преобразование - инвертирвание адреса и данных 16-битных слов // BOOL EXE_Convert(PBUF Inp, PBUF Out) { DWORD Addr, Data; ERR_Verbose("\nConverting data : Wait.."); Addr = 0; while(Addr < REV16_SIZE) { Addr = BF_NextByte(Inp, Addr); if(Addr == BF_ERR_NOMORE) { break; } if( Addr >= REV16_SIZE) { break; } Data = BF_ReadByte(Inp, Addr); Data = (~Data) & 0xFF; BF_WriteByte(Out, Addr ^ (REV16_SIZE-2), (BYTE)Data); Addr++; } ERR_VerboseDone(); return FALSE; } // // Заполнение пробелов выходных данных указанной моделью // BOOL EXE_Fill(PBUF pBuf) { if(CL_KeyPresent(KEY_F_BIT)) { DWORD Addr, Data; Data = *(DWORD*)CL_GetValuePtr(KEY_F_BIT); ERR_Verbose("\nFilling gaps in data : Wait.."); for(Addr=0; Addr