newexe.pas 4.1 KB

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