Browse Source

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

git-svn-id: trunk@31403 -
nickysn 10 years ago
parent
commit
faa9362b44
1 changed files with 12 additions and 0 deletions
  1. 12 0
      compiler/ogomf.pas

+ 12 - 0
compiler/ogomf.pas

@@ -277,6 +277,7 @@ interface
         procedure WriteMap_HeaderData;
         procedure WriteMap_HeaderData;
         function FindStackSegment: TMZExeUnifiedLogicalSegment;
         function FindStackSegment: TMZExeUnifiedLogicalSegment;
         procedure FillLoadableImageSize;
         procedure FillLoadableImageSize;
+        procedure FillMinExtraParagraphs;
         procedure FillStartAddress;
         procedure FillStartAddress;
         procedure FillStackAddress;
         procedure FillStackAddress;
         procedure FillHeaderData;
         procedure FillHeaderData;
@@ -2163,6 +2164,8 @@ implementation
       begin
       begin
         exemap.AddHeader('Header data');
         exemap.AddHeader('Header data');
         exemap.Add('Loadable image size: '+HexStr(Header.LoadableImageSize,8));
         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('Initial stack pointer: '+HexStr(Header.InitialSS,4)+':'+HexStr(Header.InitialSP,4));
         exemap.Add('Entry point address: '+HexStr(Header.InitialCS,4)+':'+HexStr(Header.InitialIP,4));
         exemap.Add('Entry point address: '+HexStr(Header.InitialCS,4)+':'+HexStr(Header.InitialIP,4));
       end;
       end;
@@ -2205,6 +2208,14 @@ implementation
           end;
           end;
       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;
     procedure TMZExeOutput.FillStartAddress;
       var
       var
         EntryMemPos: qword;
         EntryMemPos: qword;
@@ -2240,6 +2251,7 @@ implementation
       begin
       begin
         Header.MaxExtraParagraphs:=$FFFF;
         Header.MaxExtraParagraphs:=$FFFF;
         FillLoadableImageSize;
         FillLoadableImageSize;
+        FillMinExtraParagraphs;
         FillStartAddress;
         FillStartAddress;
         FillStackAddress;
         FillStackAddress;
         if assigned(exemap) then
         if assigned(exemap) then