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