+ calculate and fill "min extra paragraphs" in the MZ header

git-svn-id: trunk@31403 -
This commit is contained in:
nickysn 2015-08-24 21:33:26 +00:00
parent 6665cec157
commit faa9362b44

View File

@ -277,6 +277,7 @@ interface
procedure WriteMap_HeaderData;
function FindStackSegment: TMZExeUnifiedLogicalSegment;
procedure FillLoadableImageSize;
procedure FillMinExtraParagraphs;
procedure FillStartAddress;
procedure FillStackAddress;
procedure FillHeaderData;
@ -2163,6 +2164,8 @@ implementation
begin
exemap.AddHeader('Header data');
exemap.Add('Loadable image size: '+HexStr(Header.LoadableImageSize,8));
exemap.Add('Min extra paragraphs: '+HexStr(Header.MinExtraParagraphs,4));
exemap.Add('Max extra paragraphs: '+HexStr(Header.MaxExtraParagraphs,4));
exemap.Add('Initial stack pointer: '+HexStr(Header.InitialSS,4)+':'+HexStr(Header.InitialSP,4));
exemap.Add('Entry point address: '+HexStr(Header.InitialCS,4)+':'+HexStr(Header.InitialIP,4));
end;
@ -2205,6 +2208,14 @@ implementation
end;
end;
procedure TMZExeOutput.FillMinExtraParagraphs;
var
ExeSec: TMZExeSection;
begin
ExeSec:=MZFlatContentSection;
Header.MinExtraParagraphs:=(align(ExeSec.Size,16)-align(Header.LoadableImageSize,16)) div 16;
end;
procedure TMZExeOutput.FillStartAddress;
var
EntryMemPos: qword;
@ -2240,6 +2251,7 @@ implementation
begin
Header.MaxExtraParagraphs:=$FFFF;
FillLoadableImageSize;
FillMinExtraParagraphs;
FillStartAddress;
FillStackAddress;
if assigned(exemap) then