1 unit Exe;
2 
3   interface
4 
5     type
6        exe = record
7           eid : word;
8           elast : word;
9           epagsiz : word;
10           erelcnt : word;
11           ehdrsiz : word;
12           eminfre : word;
13           emaxfre : word;
14           eiSS : word;
15           eiSP : word;
16           enegsum : word;
17           eiIP : word;
18           eiCS : word;
19           ereloff : word;
20           eovlnum : word;
21           ever : word;
22           dumy : word;
23           ebb : word;
24           dumy2 : array[0..6] of word;
25        end;
26 
27     const
28        EXEID = $5A4D;
29 
30 { Declarations specific for LX-type executables follow }
31     const
32        BITPERword = 16;
33        BITPERBYTE = 8;
34        OBJPAGELEN = 4096;
35        E32MAGIC = $584C;
36        E32RESBYTES1 = 0;
37        E32RESBYTES2 = 0;
38        E32RESBYTES3 = 24;
39        E32LEBO = $00;
40        E32BEBO = $01;
41        E32LEWO = $00;
42        E32BEWO = $01;
43        E32LEVEL = 0;
44        E32CPU286 = $001;
45        E32CPU386 = $002;
46        E32CPU486 = $003;
47 
48     type
49        e32_exe = record
50           e32_magic : array[0..1] of byte;
51           e32_border : byte;
52           e32_worder : byte;
53           e32_level : longint;
54           e32_cpu : word;
55           e32_os : word;
56           e32_ver : longint;
57           e32_mflags : longint;
58           e32_mpages : longint;
59           e32_startobj : longint;
60           e32_eip : longint;
61           e32_stackobj : longint;
62           e32_esp : longint;
63           e32_pagesize : longint;
64           e32_pageshift : longint;
65           e32_fixupsize : longint;
66           e32_fixupsum : longint;
67           e32_ldrsize : longint;
68           e32_ldrsum : longint;
69           e32_objtab : longint;
70           e32_objcnt : longint;
71           e32_objmap : longint;
72           e32_itermap : longint;
73           e32_rsrctab : longint;
74           e32_rsrccnt : longint;
75           e32_restab : longint;
76           e32_enttab : longint;
77           e32_dirtab : longint;
78           e32_dircnt : longint;
79           e32_fpagetab : longint;
80           e32_frectab : longint;
81           e32_impmod : longint;
82           e32_impmodcnt : longint;
83           e32_impproc : longint;
84           e32_pagesum : longint;
85           e32_datapage : longint;
86           e32_preload : longint;
87           e32_nrestab : longint;
88           e32_cbnrestab : longint;
89           e32_nressum : longint;
90           e32_autodata : longint;
91           e32_debuginfo : longint;
92           e32_debuglen : longint;
93           e32_instpreload : longint;
94           e32_instdemand : longint;
95           e32_heapsize : longint;
96           e32_res3 : array[0..E32RESBYTES3-1] of byte;
97        end;
98 
99     const
100        E32NOTP = $8000;
101        E32NOLOAD = $2000;
102        E32PMAPI = $0300;
103        E32PMW = $0200;
104        E32NOPMW = $0100;
105        E32NOEXTFIX = $0020;
106        E32NOINTFIX = $0010;
107        E32LIBINIT = $0004;
108        E32LIBTERM = $40000000;
109        E32APPMASK = $0700;
110        E32PROTDLL = $10000;
111        E32DEVICE = $20000;
112        E32MODEXE = $00000;
113        E32MODDLL = $08000;
114        E32MODPROTDLL = $18000;
115        E32MODPDEV = $20000;
116        E32MODVDEV = $28000;
117        E32MODMASK = $38000;
118        RINTSIZE16 = 8;
119        RINTSIZE32 = 10;
120        RORDSIZE = 8;
121        RNAMSIZE16 = 8;
122        RNAMSIZE32 = 10;
123        RADDSIZE16 = 10;
124        RADDSIZE32 = 12;
125        NRSTYP = $0f;
126        NRSBYT = $00;
127        NRSSEG = $02;
128        NRSPTR = $03;
129        NRSOFF = $05;
130        NRPTR48 = $06;
131        NROFF32 = $07;
132        NRSOFF32 = $08;
133        NRSRCMASK = $0f;
134        NRALIAS = $10;
135        NRCHAIN = $20;
136        NRRTYP = $03;
137        NRRINT = $00;
138        NRRORD = $01;
139        NRRNAM = $02;
140        NRADD = $04;
141        NRRENT = $03;
142        NR32BITOFF = $10;
143        NR32BITADD = $20;
144        NR16OBJMOD = $40;
145        NR8BITORD = $80;
146        PAGEPERDIR = 62;
147        LG2DIR = 7;
148 
149     type
150        OBJPAGEDIR = record
151           next : longint;
152           ht : array[0..PAGEPERDIR-1] of word;
153        end;
154 
155        e32_obj = record
156           o32_size : longint;
157           o32_base : longint;
158           o32_flags : longint;
159           o32_pagemap : longint;
160           o32_mapsize : longint;
161           o32_reserved : longint;
162        end;
163 
164     const
165        OBJREAD = $0001;
166        OBJWRITE = $0002;
167        OBJRSRC = $0008;
168        OBJINVALID = $0080;
169        LNKNONPERM = $0600;
170        OBJNONPERM = $0000;
171        OBJPERM = $0100;
172        OBJRESIDENT = $0200;
173        OBJCONTIG = $0300;
174        OBJDYNAMIC = $0400;
175        OBJTYPEMASK = $0700;
176        OBJALIAS16 = $1000;
177        OBJBIGDEF = $2000;
178        OBJIOPL = $8000;
179        NSDISCARD = $0010;
180        NSMOVE = NSDISCARD;
181        NSSHARED = $0020;
182        NSPRELOAD = $0040;
183        NSEXRD = $0004;
184        NSCONFORM = $4000;
185 
186     type
187        o32_map = record
188           o32_pagedataoffset : longint;
189           o32_pagesize : word;
190           o32_pageflags : word;
191        end;
192 
193     const
194        VALID = $0000;
195        ITERDATA = $0001;
196        INVALID = $0002;
197        ZEROED = $0003;
198        RANGE = $0004;
199        ITERDATA2 = $0005;
200 
201     type
202        rsrc32 = record
203           _type : word;
204           name : word;
205           cb : longint;
206           obj : word;
207           offset : longint;
208        end;
209 
210 {$PACKRECORDS 1}
211 
212        LX_Iter = record
213           LX_nIter : word;
214           LX_nBytes : word;
215           LX_Iterdata : byte;
216        end;
217 
218        b32_bundle = record
219           b32_cnt : byte;
220           b32_type : byte;
221           b32_obj : word;
222        end;
223 
224 {$PACKRECORDS NORMAL}
225     const
226        FIXENT16 = 3;
227        FIXENT32 = 5;
228        GATEENT16 = 5;
229        FWDENT = 7;
230        EMPTY = $00;
231        ENTRY16 = $01;
232        GATE16 = $02;
233        ENTRY32 = $03;
234        ENTRYFWD = $04;
235        TYPEINFO = $80;
236        E32EXPORT = $01;
237        E32SHARED = $02;
238        E32PARAMS = $f8;
239        FWD_ORDINAL = $01;
240 
241   implementation
242 
243 end.
244