exe386.pas 5.0 KB

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