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