mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 05:39:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			190 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
unit NEWEXE;
 | 
						|
 | 
						|
  interface
 | 
						|
 | 
						|
    const
 | 
						|
       EMAGIC = $5A4D;
 | 
						|
       ENEWEXE = 8*5;
 | 
						|
       ENEWHDR = $003C;
 | 
						|
       ERESWDS = $0010;
 | 
						|
       ERES1WDS = $0004;
 | 
						|
       ERES2WDS = $000A;
 | 
						|
       ECP = $0004;
 | 
						|
       ECBLP = $0002;
 | 
						|
       EMINALLOC = $000A;
 | 
						|
 | 
						|
    type
 | 
						|
       exe_hdr = record
 | 
						|
          e_magic : word;
 | 
						|
          e_cblp : word;
 | 
						|
          e_cp : word;
 | 
						|
          e_crlc : word;
 | 
						|
          e_cparhdr : word;
 | 
						|
          e_minalloc : word;
 | 
						|
          e_maxalloc : word;
 | 
						|
          e_ss : word;
 | 
						|
          e_sp : word;
 | 
						|
          e_csum : word;
 | 
						|
          e_ip : word;
 | 
						|
          e_cs : word;
 | 
						|
          e_lfarlc : word;
 | 
						|
          e_ovno : word;
 | 
						|
          e_res : array[0..ERES1WDS-1] of word;
 | 
						|
          e_oemid : word;
 | 
						|
          e_oeminfo : word;
 | 
						|
          e_res2 : array[0..ERES2WDS-1] of word;
 | 
						|
          e_lfanew : longint;
 | 
						|
       end;
 | 
						|
 | 
						|
    const
 | 
						|
       NEMAGIC = $454E;
 | 
						|
       NERESBYTES = 8;
 | 
						|
       NECRC = 8;
 | 
						|
 | 
						|
    type
 | 
						|
       new_exe = record
 | 
						|
          ne_magic : word;
 | 
						|
          ne_ver : byte;
 | 
						|
          ne_rev : byte;
 | 
						|
          ne_enttab : word;
 | 
						|
          ne_cbenttab : word;
 | 
						|
          ne_crc : longint;
 | 
						|
          ne_flags : word;
 | 
						|
          ne_autodata : word;
 | 
						|
          ne_heap : word;
 | 
						|
          ne_stack : word;
 | 
						|
          ne_csip : longint;
 | 
						|
          ne_sssp : longint;
 | 
						|
          ne_cseg : word;
 | 
						|
          ne_cmod : word;
 | 
						|
          ne_cbnrestab : word;
 | 
						|
          ne_segtab : word;
 | 
						|
          ne_rsrctab : word;
 | 
						|
          ne_restab : word;
 | 
						|
          ne_modtab : word;
 | 
						|
          ne_imptab : word;
 | 
						|
          ne_nrestab : longint;
 | 
						|
          ne_cmovent : word;
 | 
						|
          ne_align : word;
 | 
						|
          ne_cres : word;
 | 
						|
          ne_exetyp : byte;
 | 
						|
          ne_flagsothers : byte;
 | 
						|
          ne_res : array[0..NERESBYTES-1] of char;
 | 
						|
       end;
 | 
						|
 | 
						|
    const
 | 
						|
       NE_UNKNOWN = $0;
 | 
						|
       NE_OS2 = $1;
 | 
						|
       NE_WINDOWS = $2;
 | 
						|
       NE_DOS4 = $3;
 | 
						|
       NE_DEV386 = $4;
 | 
						|
       NENOTP = $8000;
 | 
						|
       NEIERR = $2000;
 | 
						|
       NEBOUND = $0800;
 | 
						|
       NEAPPTYP = $0700;
 | 
						|
       NENOTWINCOMPAT = $0100;
 | 
						|
       NEWINCOMPAT = $0200;
 | 
						|
       NEWINAPI = $0300;
 | 
						|
       NEFLTP = $0080;
 | 
						|
       NEI386 = $0040;
 | 
						|
       NEI286 = $0020;
 | 
						|
       NEI086 = $0010;
 | 
						|
       NEPROT = $0008;
 | 
						|
       NEPPLI = $0004;
 | 
						|
       NEINST = $0002;
 | 
						|
       NESOLO = $0001;
 | 
						|
       NElongintNAMES = $01;
 | 
						|
       NEWINISPROT = $02;
 | 
						|
       NEWINGETPROPFON = $04;
 | 
						|
       NEWLOAPPL = $80;
 | 
						|
 | 
						|
    type
 | 
						|
       new_seg = record
 | 
						|
          ns_sector : word;
 | 
						|
          ns_cbseg : word;
 | 
						|
          ns_flags : word;
 | 
						|
          ns_minalloc : word;
 | 
						|
       end;
 | 
						|
 | 
						|
    const
 | 
						|
       NSTYPE = $0007;
 | 
						|
       NSCODE = $0000;
 | 
						|
       NSDATA = $0001;
 | 
						|
       NSITER = $0008;
 | 
						|
       NSMOVE = $0010;
 | 
						|
       NSSHARED = $0020;
 | 
						|
       NSPRELOAD = $0040;
 | 
						|
       NSEXRD = $0080;
 | 
						|
       NSRELOC = $0100;
 | 
						|
       NSCONFORM = $0200;
 | 
						|
       NSEXPDOWN = $0200;
 | 
						|
       NSDPL = $0C00;
 | 
						|
       SHIFTDPL = 10;
 | 
						|
       NSDISCARD = $1000;
 | 
						|
       NS32BIT = $2000;
 | 
						|
       NSHUGE = $4000;
 | 
						|
       NSGDT = $8000;
 | 
						|
       NSPURE = NSSHARED;
 | 
						|
       NSALIGN = 9;
 | 
						|
       NSLOADED = $0004;
 | 
						|
 | 
						|
    type
 | 
						|
       new_rlcinfo = record
 | 
						|
          nr_nreloc : word;
 | 
						|
       end;
 | 
						|
 | 
						|
{$PACKRECORDS NORMAL}
 | 
						|
    const
 | 
						|
       NRSTYP = $0f;
 | 
						|
       NRSBYT = $00;
 | 
						|
       NRSSEG = $02;
 | 
						|
       NRSPTR = $03;
 | 
						|
       NRSOFF = $05;
 | 
						|
       NRPTR48 = $06;
 | 
						|
       NROFF32 = $07;
 | 
						|
       NRSOFF32 = $08;
 | 
						|
       NRADD = $04;
 | 
						|
       NRRTYP = $03;
 | 
						|
       NRRINT = $00;
 | 
						|
       NRRORD = $01;
 | 
						|
       NRRNAM = $02;
 | 
						|
       NRROSF = $03;
 | 
						|
 | 
						|
    type
 | 
						|
       rsrc_string = record
 | 
						|
          rs_len : char;
 | 
						|
          rs_string : array[0..1-1] of char;
 | 
						|
       end;
 | 
						|
 | 
						|
       rsrc_typeinfo = record
 | 
						|
          rt_id : word;
 | 
						|
          rt_nres : word;
 | 
						|
          rt_proc : longint;
 | 
						|
       end;
 | 
						|
 | 
						|
       rsrc_nameinfo = record
 | 
						|
          rn_offset : word;
 | 
						|
          rn_length : word;
 | 
						|
          rn_flags : word;
 | 
						|
          rn_id : word;
 | 
						|
          rn_handle : word;
 | 
						|
          rn_usage : word;
 | 
						|
       end;
 | 
						|
 | 
						|
    const
 | 
						|
       RSORDID = $8000;
 | 
						|
       RNMOVE = $0010;
 | 
						|
       RNPURE = $0020;
 | 
						|
       RNPRELOAD = $0040;
 | 
						|
       RNDISCARD = $F000;
 | 
						|
 | 
						|
    type
 | 
						|
       new_rsrc = record
 | 
						|
          rs_align : word;
 | 
						|
          rs_typeinfo : rsrc_typeinfo;
 | 
						|
       end;
 | 
						|
 | 
						|
  implementation
 | 
						|
 | 
						|
end.
 |