[Back to EXEC SWAG index] [Back to Main SWAG index] [Original]

    {
                     =======================================

                           EXE-HEAD (c) AVC Software
                                   Cardware

                      Display all  informations  containing
                      in the EXE DOS header.

                     =======================================

       Display all informations containing in the EXE DOS header.

                   ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
                   º                                        º°
                   º          AVONTURE CHRISTOPHE           º°
                   º              AVC SOFTWARE              º°
                   º     BOULEVARD EDMOND MACHTENS 157/53   º°
                   º           B-1080 BRUXELLES             º°
                   º              BELGIQUE                  º°
                   º                                        º°
                   ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼°
                   °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

    }

    Uses Crt;

    Var Fich : File;
        Header : Array[0..27] of Byte;

    Procedure Aide;

    Begin

       Writeln ('');
       Writeln ('Please specify the name of executable file.');
       Writeln ('');
       Writeln ('For exemple :  EXE-HEAD.EXE  EXEMPLE.EXE');
       Writeln ('');

    End;

    Function Word2Hex(Number: Word) : String;

    Const Hexa : Array [0..15] of Char = ('0','1','2','3','4','5','6','7','8',
                                          '9','A','B','C','D','E','F');

    Var Ch1 , Ch2 : Byte;
        Ch3 , Ch4 : Byte;

    Begin

      Ch1 := (Number Shr 8) shr (4);
      Ch2 := (Number Shr 8) - (Ch1 shl (4));
      Ch3 := (Number AND $FF) shr (4);
      Ch4 := (Number AND $FF)- (Ch3 shl (4));

      Word2Hex := Hexa[Ch1]+Hexa[Ch2]+Hexa[Ch3]+Hexa[Ch4];

    End;

    Begin

         If ((ParamCount = 0) or (ParamCount > 1)) then Aide
         Else Begin
              Assign (Fich, ParamStr(1));
              Reset (Fich, 1);
              BlockRead (Fich, Header, 28);
              Close (Fich);
              ClrScr;
              Writeln ('');
              Writeln ('þ AVC Software, Inc.                         (c) Octobre 1994');
              Writeln ('þ Exe-Head');
              WriteLn ('');
              If (Chr(Header[0]) = 'M') and (Chr(Header[1]) = 'Z') then Begin
                WriteLn ('Signature du fichier                        : ',Chr(Header[0]),Chr(Header[1]));
                WriteLn ('');
                WriteLn ('Taille de la derni�re page                  : ' ,Word2Hex((Header[3] shl 8) + Header[2]),'h');
                WriteLn ('Nombres de pages                            : ' ,Word2Hex((Header[5] shl 8) + Header[4]),'h');
                WriteLn ('Entr�es de la table de relocalisation       : ' ,Word2Hex((Header[7] shl 8) + Header[6]),'h');
                WriteLn ('Paragraphes de l''en-t�te                    : ',Word2Hex((Header[9] shl 8) + Header[8]),'h');
                WriteLn ('MINALLOC                                    : ' ,Word2Hex((Header[11] shl 8) + Header[10]),'h');
                WriteLn ('MAXALLOC                                    : ' ,Word2Hex((Header[13] shl 8) + Header[12]),'h');
                WriteLn ('ss initial                                  : ' ,Word2Hex((Header[15] shl 8) + Header[14]),'h');
                WriteLn ('sp initial                                  : ' ,Word2Hex((Header[17] shl 8) + Header[16]),'h');
                WriteLn ('Total de contr�le                           : ' ,Word2Hex((Header[19] shl 8) + Header[18]),'h');
                WriteLn ('ip initial                                  : ' ,Word2Hex((Header[21] shl 8) + Header[20]),'h');
                WriteLn ('cs initial                                  : ' ,Word2Hex((Header[23] shl 8) + Header[22]),'h');
                WriteLn ('Offset de la table de relocalisation        : ' ,Word2Hex((Header[25] shl 8) + Header[24]),'h');
                WriteLn ('Nombre du segemnt de recouvrement           : ' ,Word2Hex((Header[27] shl 8) + Header[26]),'h');
              End
              Else WriteLn (ParamStr(1),' n''est pas un fichier de type .EXE');
              WriteLn ('');
         End;

    End.

[Back to EXEC SWAG index] [Back to Main SWAG index] [Original]