оpмат файлов хобеты
ZXNet эхоконференция «zx.spectrum»
От Ilya Zverev → Кому All 29.10.1997
¥ [”] èءہغثة, All! ¨
ïقإخط خصضإخ سءآض, pls.
[Team Win95-Suxx] [Team Pascal] ًةسطحد ةسذدpشةج Ilya
[Team نءإغط CD ذد 5 شظp! ] [Team ZX - rulez]
... Hد×ةخثء - Microsoft Sux for Windows 95! (c)خإ حدت
От Alexei Bugai → Кому All 31.10.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!