Repository URL to install this package:
Version:
9.0~241217-2.fc42 ▾
|
/*
* Interactive disassembler (IDA).
* Version 3.00
* Copyright (c) 1990-94 by Ilfak Guilfanov. (2:5020/209@fidonet)
* ALL RIGHTS RESERVED.
*
*/
#ifndef _DOS_OVR_H_
#define _DOS_OVR_H_
// the following structures are 1-byte aligned (!)
#pragma pack(push,1)
struct fbov_t
{
ushort fb;
#define FB_MAGIC 0x4246
ushort ov;
#define OV_MAGIC 0x564F
uint32 ovrsize;
uint32 exeinfo;
int32 segnum;
};
struct seginfo_t
{
ushort seg;
ushort maxoff; // FFFF - unknown
ushort flags;
#define SI_COD 0x0001
#define SI_OVR 0x0002
#define SI_DAT 0x0004
ushort minoff;
};
struct stub_t
{
uchar CDh; // 0
uchar intnum; // 1
ushort memswap; // 2
int32 fileoff; // 4
ushort codesize; // 8
ushort relsize; // 10
ushort nentries; // 12
ushort prevstub; // 14
#define STUBUNK_SIZE (0x20-0x10)
uchar unknown[STUBUNK_SIZE];
};
struct ovrentry_t
{
ushort int3f;
ushort off;
char segc;
};
CASSERT(sizeof(ovrentry_t) == 5);
struct ms_entry
{
uchar CDh;
uchar intnum; // normally 3Fh
ushort ovr_index;
ushort entry_off;
};
bool pos_read(linput_t *fp, uint32 pos, void *buf, size_t size);
int CheckCtrlBrk(void);
void add_segm_by_selector(sel_t base, const char *sclass);
extern const char e_exe[];
//
enum o_type { ovr_noexe, ovr_pascal, ovr_cpp, ovr_ms };
o_type PrepareOverlayType(linput_t *fp, exehdr *E);
linput_t *CheckExternOverlays(void);
sel_t LoadCppOverlays(linput_t *fp);
sel_t LoadMsOverlays(linput_t *fp, bool PossibleDynamic);
void LoadPascalOverlays(linput_t *fp);
NORETURN void errstruct(void);
#pragma pack(pop)
#endif