Структура 17-байтного заголовка, добавляемого к TR-DOSным
файлам программой HoBeta.exe:

00-07 - имя файла
08    - тип файла
09-0A - Start
0B-0C - Length
0D-0E - Length в 256-байтных записях (байт 0E - pазмеp в сектоpах)
0F-10 - Контрольная сумма

Таким образом, первые 14 байт копируются из TR-DOSовского каталога.

Вычиление контрольной суммы: S=S+257*Di+i, где

S начальное=0
Di - значение байта
i - порядковый номер байта (если не ошибаюсь, начиная с 0, а не с 1)


C src:

union {
        struct {
          unsigned char tr_filename[8];
          unsigned char tr_filetype;
          unsigned int  tr_address;
          unsigned int  tr_length;
          unsigned int  tr_tr;
          unsigned int  tr_crc;
        } tr_head;
        unsigned char head[17];
} header;

unsigned int CheckSum;
int i;

CheckSum=0;
for (i=0; i<=14; CheckSum = CheckSum + (header.head[i] * 257) + i, i++);
header.tr_head.tr_crc = CheckSum;




Вот в одной из своих программок нашел такой забавный способ подсчета
контрольной суммы заголовка:

  checksum=0;
  for (i=0; i<=14; checksum+=(unsigned char)*(bufptr+i), i++);
  checksum*=257;
  checksum+=105;

bufptr, очевидно, поинтер на начало заголовка.
