mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 04:31:35 +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.
 | 
