mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-06 06:28:04 +02:00
192 lines
4.1 KiB
ObjectPascal
192 lines
4.1 KiB
ObjectPascal
{$IFNDEF FPC_DOTTEDUNITS}
|
|
unit NEWEXE;
|
|
{$ENDIF FPC_DOTTEDUNITS}
|
|
|
|
interface
|
|
|
|
const
|
|
EMAGIC = $5A4D;
|
|
ENEWEXE = 8*5;
|
|
ENEWHDR = $003C;
|
|
ERESWDS = $0010;
|
|
ERES1WDS = $0004;
|
|
ERES2WDS = $000A;
|
|
ECP = $0004;
|
|
ECBLP = $0002;
|
|
EMINALLOC = $000A;
|
|
|
|
type
|
|
exe_hdr = record
|
|
e_magic : word;
|
|
e_cblp : word;
|
|
e_cp : word;
|
|
e_crlc : word;
|
|
e_cparhdr : word;
|
|
e_minalloc : word;
|
|
e_maxalloc : word;
|
|
e_ss : word;
|
|
e_sp : word;
|
|
e_csum : word;
|
|
e_ip : word;
|
|
e_cs : word;
|
|
e_lfarlc : word;
|
|
e_ovno : word;
|
|
e_res : array[0..ERES1WDS-1] of word;
|
|
e_oemid : word;
|
|
e_oeminfo : word;
|
|
e_res2 : array[0..ERES2WDS-1] of word;
|
|
e_lfanew : longint;
|
|
end;
|
|
|
|
const
|
|
NEMAGIC = $454E;
|
|
NERESBYTES = 8;
|
|
NECRC = 8;
|
|
|
|
type
|
|
new_exe = record
|
|
ne_magic : word;
|
|
ne_ver : byte;
|
|
ne_rev : byte;
|
|
ne_enttab : word;
|
|
ne_cbenttab : word;
|
|
ne_crc : longint;
|
|
ne_flags : word;
|
|
ne_autodata : word;
|
|
ne_heap : word;
|
|
ne_stack : word;
|
|
ne_csip : longint;
|
|
ne_sssp : longint;
|
|
ne_cseg : word;
|
|
ne_cmod : word;
|
|
ne_cbnrestab : word;
|
|
ne_segtab : word;
|
|
ne_rsrctab : word;
|
|
ne_restab : word;
|
|
ne_modtab : word;
|
|
ne_imptab : word;
|
|
ne_nrestab : longint;
|
|
ne_cmovent : word;
|
|
ne_align : word;
|
|
ne_cres : word;
|
|
ne_exetyp : byte;
|
|
ne_flagsothers : byte;
|
|
ne_res : array[0..NERESBYTES-1] of AnsiChar;
|
|
end;
|
|
|
|
const
|
|
NE_UNKNOWN = $0;
|
|
NE_OS2 = $1;
|
|
NE_WINDOWS = $2;
|
|
NE_DOS4 = $3;
|
|
NE_DEV386 = $4;
|
|
NENOTP = $8000;
|
|
NEIERR = $2000;
|
|
NEBOUND = $0800;
|
|
NEAPPTYP = $0700;
|
|
NENOTWINCOMPAT = $0100;
|
|
NEWINCOMPAT = $0200;
|
|
NEWINAPI = $0300;
|
|
NEFLTP = $0080;
|
|
NEI386 = $0040;
|
|
NEI286 = $0020;
|
|
NEI086 = $0010;
|
|
NEPROT = $0008;
|
|
NEPPLI = $0004;
|
|
NEINST = $0002;
|
|
NESOLO = $0001;
|
|
NElongintNAMES = $01;
|
|
NEWINISPROT = $02;
|
|
NEWINGETPROPFON = $04;
|
|
NEWLOAPPL = $80;
|
|
|
|
type
|
|
new_seg = record
|
|
ns_sector : word;
|
|
ns_cbseg : word;
|
|
ns_flags : word;
|
|
ns_minalloc : word;
|
|
end;
|
|
|
|
const
|
|
NSTYPE = $0007;
|
|
NSCODE = $0000;
|
|
NSDATA = $0001;
|
|
NSITER = $0008;
|
|
NSMOVE = $0010;
|
|
NSSHARED = $0020;
|
|
NSPRELOAD = $0040;
|
|
NSEXRD = $0080;
|
|
NSRELOC = $0100;
|
|
NSCONFORM = $0200;
|
|
NSEXPDOWN = $0200;
|
|
NSDPL = $0C00;
|
|
SHIFTDPL = 10;
|
|
NSDISCARD = $1000;
|
|
NS32BIT = $2000;
|
|
NSHUGE = $4000;
|
|
NSGDT = $8000;
|
|
NSPURE = NSSHARED;
|
|
NSALIGN = 9;
|
|
NSLOADED = $0004;
|
|
|
|
type
|
|
new_rlcinfo = record
|
|
nr_nreloc : word;
|
|
end;
|
|
|
|
{$PACKRECORDS NORMAL}
|
|
const
|
|
NRSTYP = $0f;
|
|
NRSBYT = $00;
|
|
NRSSEG = $02;
|
|
NRSPTR = $03;
|
|
NRSOFF = $05;
|
|
NRPTR48 = $06;
|
|
NROFF32 = $07;
|
|
NRSOFF32 = $08;
|
|
NRADD = $04;
|
|
NRRTYP = $03;
|
|
NRRINT = $00;
|
|
NRRORD = $01;
|
|
NRRNAM = $02;
|
|
NRROSF = $03;
|
|
|
|
type
|
|
rsrc_string = record
|
|
rs_len : AnsiChar;
|
|
rs_string : array[0..1-1] of AnsiChar;
|
|
end;
|
|
|
|
rsrc_typeinfo = record
|
|
rt_id : word;
|
|
rt_nres : word;
|
|
rt_proc : longint;
|
|
end;
|
|
|
|
rsrc_nameinfo = record
|
|
rn_offset : word;
|
|
rn_length : word;
|
|
rn_flags : word;
|
|
rn_id : word;
|
|
rn_handle : word;
|
|
rn_usage : word;
|
|
end;
|
|
|
|
const
|
|
RSORDID = $8000;
|
|
RNMOVE = $0010;
|
|
RNPURE = $0020;
|
|
RNPRELOAD = $0040;
|
|
RNDISCARD = $F000;
|
|
|
|
type
|
|
new_rsrc = record
|
|
rs_align : word;
|
|
rs_typeinfo : rsrc_typeinfo;
|
|
end;
|
|
|
|
implementation
|
|
|
|
end.
|