mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-26 02:11:40 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			246 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			246 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
| {$IFNDEF FPC_DOTTEDUNITS}
 | |
| unit Exe;
 | |
| {$ENDIF FPC_DOTTEDUNITS}
 | |
| 
 | |
|   interface
 | |
| 
 | |
|     type
 | |
|        exe = record
 | |
|           eid : word;
 | |
|           elast : word;
 | |
|           epagsiz : word;
 | |
|           erelcnt : word;
 | |
|           ehdrsiz : word;
 | |
|           eminfre : word;
 | |
|           emaxfre : word;
 | |
|           eiSS : word;
 | |
|           eiSP : word;
 | |
|           enegsum : word;
 | |
|           eiIP : word;
 | |
|           eiCS : word;
 | |
|           ereloff : word;
 | |
|           eovlnum : word;
 | |
|           ever : word;
 | |
|           dumy : word;
 | |
|           ebb : word;
 | |
|           dumy2 : array[0..6] of word;
 | |
|        end;
 | |
| 
 | |
|     const
 | |
|        EXEID = $5A4D;
 | |
| 
 | |
| { Declarations specific for LX-type executables follow }
 | |
|     const
 | |
|        BITPERword = 16;
 | |
|        BITPERBYTE = 8;
 | |
|        OBJPAGELEN = 4096;
 | |
|        E32MAGIC = $584C;
 | |
|        E32RESBYTES1 = 0;
 | |
|        E32RESBYTES2 = 0;
 | |
|        E32RESBYTES3 = 24;
 | |
|        E32LEBO = $00;
 | |
|        E32BEBO = $01;
 | |
|        E32LEWO = $00;
 | |
|        E32BEWO = $01;
 | |
|        E32LEVEL = 0;
 | |
|        E32CPU286 = $001;
 | |
|        E32CPU386 = $002;
 | |
|        E32CPU486 = $003;
 | |
| 
 | |
|     type
 | |
|        e32_exe = record
 | |
|           e32_magic : array[0..1] of byte;
 | |
|           e32_border : byte;
 | |
|           e32_worder : byte;
 | |
|           e32_level : longint;
 | |
|           e32_cpu : word;
 | |
|           e32_os : word;
 | |
|           e32_ver : longint;
 | |
|           e32_mflags : longint;
 | |
|           e32_mpages : longint;
 | |
|           e32_startobj : longint;
 | |
|           e32_eip : longint;
 | |
|           e32_stackobj : longint;
 | |
|           e32_esp : longint;
 | |
|           e32_pagesize : longint;
 | |
|           e32_pageshift : longint;
 | |
|           e32_fixupsize : longint;
 | |
|           e32_fixupsum : longint;
 | |
|           e32_ldrsize : longint;
 | |
|           e32_ldrsum : longint;
 | |
|           e32_objtab : longint;
 | |
|           e32_objcnt : longint;
 | |
|           e32_objmap : longint;
 | |
|           e32_itermap : longint;
 | |
|           e32_rsrctab : longint;
 | |
|           e32_rsrccnt : longint;
 | |
|           e32_restab : longint;
 | |
|           e32_enttab : longint;
 | |
|           e32_dirtab : longint;
 | |
|           e32_dircnt : longint;
 | |
|           e32_fpagetab : longint;
 | |
|           e32_frectab : longint;
 | |
|           e32_impmod : longint;
 | |
|           e32_impmodcnt : longint;
 | |
|           e32_impproc : longint;
 | |
|           e32_pagesum : longint;
 | |
|           e32_datapage : longint;
 | |
|           e32_preload : longint;
 | |
|           e32_nrestab : longint;
 | |
|           e32_cbnrestab : longint;
 | |
|           e32_nressum : longint;
 | |
|           e32_autodata : longint;
 | |
|           e32_debuginfo : longint;
 | |
|           e32_debuglen : longint;
 | |
|           e32_instpreload : longint;
 | |
|           e32_instdemand : longint;
 | |
|           e32_heapsize : longint;
 | |
|           e32_res3 : array[0..E32RESBYTES3-1] of byte;
 | |
|        end;
 | |
| 
 | |
|     const
 | |
|        E32NOTP = $8000;
 | |
|        E32NOLOAD = $2000;
 | |
|        E32PMAPI = $0300;
 | |
|        E32PMW = $0200;
 | |
|        E32NOPMW = $0100;
 | |
|        E32NOEXTFIX = $0020;
 | |
|        E32NOINTFIX = $0010;
 | |
|        E32LIBINIT = $0004;
 | |
|        E32LIBTERM = $40000000;
 | |
|        E32APPMASK = $0700;
 | |
|        E32PROTDLL = $10000;
 | |
|        E32DEVICE = $20000;
 | |
|        E32MODEXE = $00000;
 | |
|        E32MODDLL = $08000;
 | |
|        E32MODPROTDLL = $18000;
 | |
|        E32MODPDEV = $20000;
 | |
|        E32MODVDEV = $28000;
 | |
|        E32MODMASK = $38000;
 | |
|        RINTSIZE16 = 8;
 | |
|        RINTSIZE32 = 10;
 | |
|        RORDSIZE = 8;
 | |
|        RNAMSIZE16 = 8;
 | |
|        RNAMSIZE32 = 10;
 | |
|        RADDSIZE16 = 10;
 | |
|        RADDSIZE32 = 12;
 | |
|        NRSTYP = $0f;
 | |
|        NRSBYT = $00;
 | |
|        NRSSEG = $02;
 | |
|        NRSPTR = $03;
 | |
|        NRSOFF = $05;
 | |
|        NRPTR48 = $06;
 | |
|        NROFF32 = $07;
 | |
|        NRSOFF32 = $08;
 | |
|        NRSRCMASK = $0f;
 | |
|        NRALIAS = $10;
 | |
|        NRCHAIN = $20;
 | |
|        NRRTYP = $03;
 | |
|        NRRINT = $00;
 | |
|        NRRORD = $01;
 | |
|        NRRNAM = $02;
 | |
|        NRADD = $04;
 | |
|        NRRENT = $03;
 | |
|        NR32BITOFF = $10;
 | |
|        NR32BITADD = $20;
 | |
|        NR16OBJMOD = $40;
 | |
|        NR8BITORD = $80;
 | |
|        PAGEPERDIR = 62;
 | |
|        LG2DIR = 7;
 | |
| 
 | |
|     type
 | |
|        OBJPAGEDIR = record
 | |
|           next : longint;
 | |
|           ht : array[0..PAGEPERDIR-1] of word;
 | |
|        end;
 | |
| 
 | |
|        e32_obj = record
 | |
|           o32_size : longint;
 | |
|           o32_base : longint;
 | |
|           o32_flags : longint;
 | |
|           o32_pagemap : longint;
 | |
|           o32_mapsize : longint;
 | |
|           o32_reserved : longint;
 | |
|        end;
 | |
| 
 | |
|     const
 | |
|        OBJREAD = $0001;
 | |
|        OBJWRITE = $0002;
 | |
|        OBJRSRC = $0008;
 | |
|        OBJINVALID = $0080;
 | |
|        LNKNONPERM = $0600;
 | |
|        OBJNONPERM = $0000;
 | |
|        OBJPERM = $0100;
 | |
|        OBJRESIDENT = $0200;
 | |
|        OBJCONTIG = $0300;
 | |
|        OBJDYNAMIC = $0400;
 | |
|        OBJTYPEMASK = $0700;
 | |
|        OBJALIAS16 = $1000;
 | |
|        OBJBIGDEF = $2000;
 | |
|        OBJIOPL = $8000;
 | |
|        NSDISCARD = $0010;
 | |
|        NSMOVE = NSDISCARD;
 | |
|        NSSHARED = $0020;
 | |
|        NSPRELOAD = $0040;
 | |
|        NSEXRD = $0004;
 | |
|        NSCONFORM = $4000;
 | |
| 
 | |
|     type
 | |
|        o32_map = record
 | |
|           o32_pagedataoffset : longint;
 | |
|           o32_pagesize : word;
 | |
|           o32_pageflags : word;
 | |
|        end;
 | |
| 
 | |
|     const
 | |
|        VALID = $0000;
 | |
|        ITERDATA = $0001;
 | |
|        INVALID = $0002;
 | |
|        ZEROED = $0003;
 | |
|        RANGE = $0004;
 | |
|        ITERDATA2 = $0005;
 | |
| 
 | |
|     type
 | |
|        rsrc32 = record
 | |
|           _type : word;
 | |
|           name : word;
 | |
|           cb : longint;
 | |
|           obj : word;
 | |
|           offset : longint;
 | |
|        end;
 | |
| 
 | |
| {$PACKRECORDS 1}
 | |
| 
 | |
|        LX_Iter = record
 | |
|           LX_nIter : word;
 | |
|           LX_nBytes : word;
 | |
|           LX_Iterdata : byte;
 | |
|        end;
 | |
| 
 | |
|        b32_bundle = record
 | |
|           b32_cnt : byte;
 | |
|           b32_type : byte;
 | |
|           b32_obj : word;
 | |
|        end;
 | |
| 
 | |
| {$PACKRECORDS NORMAL}
 | |
|     const
 | |
|        FIXENT16 = 3;
 | |
|        FIXENT32 = 5;
 | |
|        GATEENT16 = 5;
 | |
|        FWDENT = 7;
 | |
|        EMPTY = $00;
 | |
|        ENTRY16 = $01;
 | |
|        GATE16 = $02;
 | |
|        ENTRY32 = $03;
 | |
|        ENTRYFWD = $04;
 | |
|        TYPEINFO = $80;
 | |
|        E32EXPORT = $01;
 | |
|        E32SHARED = $02;
 | |
|        E32PARAMS = $f8;
 | |
|        FWD_ORDINAL = $01;
 | |
| 
 | |
|   implementation
 | |
| 
 | |
| end.
 | 
