fpc/rtl/os2/newexe.pas
2023-07-27 19:04:03 +02:00

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.