const
// константа Rom Section Info
CNS_ROM_SECT_INFO = $66FC328A;
// константа конца заголовка файла в Rom Section
CNS_END_NAME_FILE = $2387AB76;
CNS_ROM_TYPE_1: array [0..7] of Byte = ($8A, $32, $FC, $66, $FF, $FF, $FF, $FF);
CNS_ROM_TYPE_2: array [0..7] of Byte = ($00, $00, $00, $00, $8A, $32, $FC, $66);
type
// поиск имен Rom секций
TRomSecName = record
SecPath: string;
SecName: string;
SecType: Integer;
end;
TArrRomSecName = array of TRomSecName;
// заголовок секции
TRomSecHdr = record // равно 0x100
Crc32: DWORD; // контрольная сумма 4 байта
Version: DWORD; // версия = 2 символа, по 2 байта на символ
DateSec: DWORD; // дата = день = 1 байт, месяц = 1 байт, год = 2 байта
// год - 2 старших байта
LengthSec: DWORD; // длина секции 4 байта
MemAddress: DWORD; // Memory адрес 4 байта
FlagSection: DWORD; // флаг 4 байта
MagicConst: DWORD; // константа секции 4 байта CNS_MAGIC_CONSTANT
ZeroBytes: array [1..57] of DWORD; // 224 нулевых байт
end;
//..............................ROM TYPE 1....................................//
// информационный заголовок (количество файлов и константа)
TRomSecInfoType_1 = record // равно 0x800
RomFileCount: DWORD; // количество файлов в секции Rom
RomSecConst: DWORD; // CNS_ROM_SECT_INFO = $66FC328A
RomReserved: array [0..2039] of Byte; // заполнен FF-значениями
end;
// имена файлов Rom секции
TRomFileNameType_1 = record // равно 0x80
NameFile: array [0..115] of Byte; // длина имени файла = 116 байт
OffsetFile: DWORD; // стартовый адрес начала файла + 0x100 байт RomHeader
LengthFile: DWORD; // длина тела файла
ConstFileName: DWORD; // CNS_END_NAME_FILE = $2387AB76
end;
TArrRFN_1 = array of TRomFileNameType_1;
//..............................ROM TYPE 2....................................//
// информационный заголовок (количество файлов и константа)
TRomSecInfoType_2 = record // равно 0x80
RomSecConst: DWORD; // CNS_ROM_SECT_INFO = $66FC328A
RomFileCount: DWORD; // количество файлов в секции Rom
end;
// имена файлов Rom секции
TRomFileNameType_2 = record // равно 0x4C
NameFile: array [0..63] of Byte; // длина имени файла = 64 байта
LengthFile: DWORD; // длина тела файла
OffsetFile: DWORD; // стартовый адрес начала файла + 0x100 байт RomHeader
Crc32File: DWORD; // Crc32 файла
end;
TArrRFN_2 = array of TRomFileNameType_2;