newexe.pas 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. unit NEWEXE;
  2. interface
  3. const
  4. EMAGIC = $5A4D;
  5. ENEWEXE = 8*5;
  6. ENEWHDR = $003C;
  7. ERESWDS = $0010;
  8. ERES1WDS = $0004;
  9. ERES2WDS = $000A;
  10. ECP = $0004;
  11. ECBLP = $0002;
  12. EMINALLOC = $000A;
  13. type
  14. exe_hdr = record
  15. e_magic : word;
  16. e_cblp : word;
  17. e_cp : word;
  18. e_crlc : word;
  19. e_cparhdr : word;
  20. e_minalloc : word;
  21. e_maxalloc : word;
  22. e_ss : word;
  23. e_sp : word;
  24. e_csum : word;
  25. e_ip : word;
  26. e_cs : word;
  27. e_lfarlc : word;
  28. e_ovno : word;
  29. e_res : array[0..ERES1WDS-1] of word;
  30. e_oemid : word;
  31. e_oeminfo : word;
  32. e_res2 : array[0..ERES2WDS-1] of word;
  33. e_lfanew : longint;
  34. end;
  35. const
  36. NEMAGIC = $454E;
  37. NERESBYTES = 8;
  38. NECRC = 8;
  39. type
  40. new_exe = record
  41. ne_magic : word;
  42. ne_ver : byte;
  43. ne_rev : byte;
  44. ne_enttab : word;
  45. ne_cbenttab : word;
  46. ne_crc : longint;
  47. ne_flags : word;
  48. ne_autodata : word;
  49. ne_heap : word;
  50. ne_stack : word;
  51. ne_csip : longint;
  52. ne_sssp : longint;
  53. ne_cseg : word;
  54. ne_cmod : word;
  55. ne_cbnrestab : word;
  56. ne_segtab : word;
  57. ne_rsrctab : word;
  58. ne_restab : word;
  59. ne_modtab : word;
  60. ne_imptab : word;
  61. ne_nrestab : longint;
  62. ne_cmovent : word;
  63. ne_align : word;
  64. ne_cres : word;
  65. ne_exetyp : byte;
  66. ne_flagsothers : byte;
  67. ne_res : array[0..NERESBYTES-1] of char;
  68. end;
  69. const
  70. NE_UNKNOWN = $0;
  71. NE_OS2 = $1;
  72. NE_WINDOWS = $2;
  73. NE_DOS4 = $3;
  74. NE_DEV386 = $4;
  75. NENOTP = $8000;
  76. NEIERR = $2000;
  77. NEBOUND = $0800;
  78. NEAPPTYP = $0700;
  79. NENOTWINCOMPAT = $0100;
  80. NEWINCOMPAT = $0200;
  81. NEWINAPI = $0300;
  82. NEFLTP = $0080;
  83. NEI386 = $0040;
  84. NEI286 = $0020;
  85. NEI086 = $0010;
  86. NEPROT = $0008;
  87. NEPPLI = $0004;
  88. NEINST = $0002;
  89. NESOLO = $0001;
  90. NElongintNAMES = $01;
  91. NEWINISPROT = $02;
  92. NEWINGETPROPFON = $04;
  93. NEWLOAPPL = $80;
  94. type
  95. new_seg = record
  96. ns_sector : word;
  97. ns_cbseg : word;
  98. ns_flags : word;
  99. ns_minalloc : word;
  100. end;
  101. const
  102. NSTYPE = $0007;
  103. NSCODE = $0000;
  104. NSDATA = $0001;
  105. NSITER = $0008;
  106. NSMOVE = $0010;
  107. NSSHARED = $0020;
  108. NSPRELOAD = $0040;
  109. NSEXRD = $0080;
  110. NSRELOC = $0100;
  111. NSCONFORM = $0200;
  112. NSEXPDOWN = $0200;
  113. NSDPL = $0C00;
  114. SHIFTDPL = 10;
  115. NSDISCARD = $1000;
  116. NS32BIT = $2000;
  117. NSHUGE = $4000;
  118. NSGDT = $8000;
  119. NSPURE = NSSHARED;
  120. NSALIGN = 9;
  121. NSLOADED = $0004;
  122. type
  123. new_rlcinfo = record
  124. nr_nreloc : word;
  125. end;
  126. {$PACKRECORDS NORMAL}
  127. const
  128. NRSTYP = $0f;
  129. NRSBYT = $00;
  130. NRSSEG = $02;
  131. NRSPTR = $03;
  132. NRSOFF = $05;
  133. NRPTR48 = $06;
  134. NROFF32 = $07;
  135. NRSOFF32 = $08;
  136. NRADD = $04;
  137. NRRTYP = $03;
  138. NRRINT = $00;
  139. NRRORD = $01;
  140. NRRNAM = $02;
  141. NRROSF = $03;
  142. type
  143. rsrc_string = record
  144. rs_len : char;
  145. rs_string : array[0..1-1] of char;
  146. end;
  147. rsrc_typeinfo = record
  148. rt_id : word;
  149. rt_nres : word;
  150. rt_proc : longint;
  151. end;
  152. rsrc_nameinfo = record
  153. rn_offset : word;
  154. rn_length : word;
  155. rn_flags : word;
  156. rn_id : word;
  157. rn_handle : word;
  158. rn_usage : word;
  159. end;
  160. const
  161. RSORDID = $8000;
  162. RNMOVE = $0010;
  163. RNPURE = $0020;
  164. RNPRELOAD = $0040;
  165. RNDISCARD = $F000;
  166. type
  167. new_rsrc = record
  168. rs_align : word;
  169. rs_typeinfo : rsrc_typeinfo;
  170. end;
  171. implementation
  172. end.