https://zx-pk.ru/threads/34789-podde...=1#post1172928
Код:
type
ThdrZ80 = packed record
a,f:Byte;
bc,hl,pc,sp:Word;
i,r,flags:Byte;
de,bc1,de1,hl1:Word;
a1,f1:Byte;
iy,ix:Word;
iff1, iff2, im:Byte;
{ 2.01 extension }
len, newpc:Word;
model, p7FFD:Byte;
r1,r2, p7FFD_1:Byte;
AY:Array[0..15] of Byte;
{ 3.0 extension }
LowT:Word;
HighT:Byte;
ReservedFlag:Byte;
MgtRom:Byte;
MultifaceRom:Byte;
RamRom0:Byte; // 0000-1FFF ram/rom
RamRom1:Byte; // 2000-3FFF ram/rom
KbMap1:Array[0..9] of Byte;
KbMap2:Array[0..9] of Byte;
MgtType:Byte;
Disciple1:Byte;
Disciple2:Byte;
p1FFD:Byte;
end;
Значение len равно длине дополнительного заголовка без учета самого поля len. То есть для того, чтобы найти начало данных страниц, нужно прочитать изначальный заголовок, проверить если PC=0, то прочитать два байта в len и пропустить len байт. Надеюсь не слишком спутано объяснил, в исходнике по ссылке будет понятнее.