Просмотр исходного кода

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

git-svn-id: trunk@31403 -
nickysn 10 лет назад
Родитель
Сommit
faa9362b44
1 измененных файлов с 12 добавлено и 0 удалено
  1. 12 0
      compiler/ogomf.pas

+ 12 - 0
compiler/ogomf.pas

@@ -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