оpмат файлов хобеты

ZXNet echo conference «zx.spectrum»

From Ilya Zverev To All 29 October 1997


¥ [”]                      èءہغثة, All!                           ¨

ïقإخط خصضإخ سءآض, pls.

[Team Win95-Suxx] [Team Pascal] ًةسطحد ةسذدpشةج Ilya
[Team نءإغط CD ذد 5 شظp! ] [Team ZX - rulez]

... Hد×ةخثء - Microsoft Sux for Windows 95! (c)خإ حدت

From Alexei Bugai To All 31 October 1997

Peace unto you, _Ilya_!

29 Oct 97 Ilya Zverev write to All about "оpмат файлов хобеты":

IZ> Очень нужен сабж, pls.

== Cut ==
Структура 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, очевидно, поинтер на начало заголовка.
=== Cut ===


With best wishes, [ZX_Power Team]
Dr.Squizer. [Power_ZX Team]

... Don't try to understand me... You never will!