Category : OS/2 Files
Archive   : CVTICONS.ZIP
Filename : NEWEXE.H
#define WIN 2
#define ICO 3
#define RS_CURSOR 1
#define RS_BITMAP 2
#define RS_ICON 3
#define RS_MENU 4
#define RS_DIALOG 5
#define RS_STRING 6
#define RS_FONTDIR 7
#define RS_FONT 8
#define RS_ACCELERATOR 9
#define RS_RESDATA 0xA
#define RS_ICONDIR 0xE
#define RS_RESNAMES 0xF
#define CODE_DATA 0x0007
#define ITERATION 0x0008
#define MOVE_FIX 0x0010
#define PURITY 0x0020
#define LOADING 0x0040
#define READ_WRITE_PRIV 0x0080
#define RELOCATIONS 0x0100
#define CONFORMITY 0x2000
#define PRIVLEGES 0xC000
#define DISCARDABLE 0x1000
#define CODESEG 0x2000
#define SIZESEG 0x4000
#define DGROUP 0x0002
#define INIT 0x0007
#define OPMODE 0x0008
#define ONLY8086 0x0010
#define HAS286 0x0020
#define HAS386 0x0040
#define HASFLOAT 0x0080
#define APPTYPE 0x0700
#define FAMILYAPP 0x0800
#define VALID 0x2000
#define APP_DLL 0x8000
#define RC_RSRVD1 0x000F
#define RC_FIX_MOV 0x0010
#define RC_PURITY 0x0020
#define RC_LOADING 0x0040
#define RC_RSRVD2 0x0F80
#define RC_DISCARD 0xF000
#define SEG_MOVABLE 0xFF
#define SEG_EXPORT 0x01
#define SEG_DATA 0x02
#define SEG_PARMS 0xF8
typedef struct tagOLDEXEHDR
{
BYTE bySigByte1, /* Signature byte 1 'M' */
bySigByte2; /* Signature byte 2 'Z' */
WORD wModFilLen, /* Length of file header and program image MOD 512 */
wPagFilLen, /* Number of 512-byte pages of header and prog image*/
wRelocItems, /* Number of relocation table items for MS-DOS stub */
wHeaderSize, /* size of old EXE header in 16-byte paragraphs */
wMinMem, /* Minimum # of paragraphs of mem needed to run stub*/
wMaxMem, /* Maximum # of paragraphs of mem needed to run stub*/
wWinStubSS, /* Segement displacement of stub program stack */
wWinStubSP, /* Contents of SP register in stub program entry */
wWinStubCRC, /* Checksum of stub program */
wWinStubIP, /* Contents of IP register at stub program entry */
wWinStubCS, /* Segment displacement of stub program code */
wRelocOfs, /* 0040h if NEWEXE, offset to first stub prog reloc */
wOverlayNbr, /* Overlay number '0' */
wMemoryNeeded, /* */
wReserved1[3],
wOEMId, /* OEM Identifier */
wOEMInfo, /* OEM information */
wReserved2[10];
DWORD dwNewExeOfs; /* File offset of new EXE Header */
} OLDEXEHDR;
typedef struct tagNEWEXEHDR
{
BYTE bySigByte1, /* Signature byte 1 'N' */
bySigByte2, /* Signature byte 2 'E' */
byLinkMajVer, /* Linker major version number */
byLinkMinVer; /* Linker minor version number */
WORD wEntryOfs, /* Offset of entry table relative to start of new ex*/
wEntrySize; /* Length of entry table */
DWORD dwFileLoadCRC; /* 32-bit Checksum of entire file */
WORD wModuleFlags, /* Module Flags */
wAutoDataSeg, /* Segment Number of DGROUP */
wHeap, /* Initial Heap Size */
wStack, /* Initial Stack Size */
wProgIP, /* Contents of IP register at program entry */
wProgCS, /* Segment number containing entry point */
wProgSP, /* Contents of SP register at program entry */
wProgSS, /* Segment number containg stack */
wSegEntries, /* Entries in segment table */
wResNameSize, /* Entries in module reference table */
wNonResNameSize,/* Length of NonResident names table */
wSegOfs, /* Offset of Segment Table relative to new EXE hdr */
wResourceOfs, /* Offset of Resource Table relative to new EXE hdr */
wResidentOfs, /* Offset of Resident Names Table rel to new EXE hdr*/
wModuleOfs, /* Offset of Module refernce table rel to new EXE hd*/
wImportNameOfs; /* Offset of Imported names table rel to new EXE hdr*/
DWORD dwNonResNameOfs;/* Offset of NonResident names table rel start of fi*/
WORD wMoveEntryPtCnt,/* Number of moveable entry points */
wLogSectorAlign,/* Size of file alignment unit (power of 2) */
wResourceSegs; /* Number of resource table entries */
BYTE byTargetSystem, /* Target operating
0: UnKnown 1: OS/2
2: Windows 3: MS-DOS 4
*/
byBytesLeft; /* Number of Bytes that are valid in rsrvd following*/
WORD wReserved[4];
} NEWEXEHDR;
/*********************** Module Flags Bit Significance **********************
Bit(s) Significance
0 - 1 DGROUP characteristics
0 : no DGROUP
1 : single DGROUP (shared)
2 : multiple DGROUPs (unshared)
2 0 : Global Initilization (DLLs)
1 : Instance Initilization
3 0 : Real or Protected Mode
1 : Protected Mode Only
4 1 : Only contains 8086 instructions
5 1 : contains 80286 instructions
6 1 : contains 80386 instructions
7 1 : contains floating-point instructions
8 - 10 Application type
0 : UnKnown
1 : Full Screen
2 : Vio App, can run in a window
3 : Presntation Manager / Windows
11 0 : Not a Family Application
1 : Family Application
12 RESERVED
13 0 : File is executable
1 : invalid load module (errors in linking)
14 RESERVED
15 0 : Application
1 : DLL or Driver
****************************************************************************/
typedef struct tagSEGTABLE
{
WORD wSectorOfs, /* Offset of beginning of segment within file
Expressed as multiple of file unit size */
wSegmentLen, /* Length of segment ( 0 = 65,536 ) */
wSegFlags, /* Segment Flags
Bit(s) Significance
0 - 2 Segment Type
0 : Code
1 : Data
3 0 : Noniterated Data
1 : Iterated Data
4 0 : Fixed
1 : Moveable
5 0 : Impure or Nonshareable
1 : Pure or Shareable
6 0 : Load-on-Call
1 : Preload
7 0 : Execute/read if code, r/w if data
1 : Execute-only if code, read if data
8 0 : No relocation table
1 : Relocation table present
9 0 : Nonconforming
1 : Conforming
10 - 11 Privilege level
12 0 : Nondiscardable
1 : discardable
13 0 : 16-bit code segment
1 : 32-bit code segment
14 0 : normal segment
1 : huge segment
15 RESERVED
*/
wAllocSize; /* Minimum allocation size for segment (0 = 65,536 )*/
} SEGTABLE;
typedef struct tagRSRCTBL
{
WORD wShiftCount, /* power of 2 which determines resource unit size */
wType, /* Resource Type */
wFollowing, /* Number of Resources follwing */
wReserved;
} RSRCTBL;
/********************** Resource Types ******************************
1 -- Cursor
2 -- Bitmap
3 -- Icon
4 -- Menu
5 -- Dialog
6 -- String
7 -- Font Dir
8 -- Font
9 -- Accelerator
A -- Resource Data
B --
C --
D --
E -- ICO file header / directory entry
F -- Resource Name
****************************************************************************/
typedef struct tagRSRCENTRY
{
WORD wReserved1,
wOffset, /* Offset to resource from start of file */
wLength, /* Length of resource */
wRsrcFlags, /* Resource flags
Bit(s) Significance
0 - 3 RESERVED
4 0 : Fixed
1 : Moveable
5 0 : Impure or Nonshareable
1 : Pure or Shareable
6 0 : Load-on-Call
1 : Preload
7 - 11 RESERVED
12 - 15 Discard Priority
*/
wRsrcNum, /* Resource Number if bit 15 set offset to string */
wReserved2;
} RSRCENTRY;
typedef RSRCENTRY *PRSRCENTRY;
typedef RSRCENTRY far *LPRSRCENTRY;
typedef struct tagMOVSEG
{
BYTE byEntryFlags; /* Bit(s) Significancs
0 0 : Entry point not exported
1 : Entry point Exported
1 0 : Entry Point uses Instance data
1 : Entry Point uses Single data
2 RESERVED
3 - 7 Number of stack parameter words
*/
WORD w3FIns; /* Int 3FH instruction (CDH 3FH) */
BYTE bySegNbr; /* Segment number of entry point */
WORD wSegOfs; /* Offset of entry point within segment */
} MOVSEG;
typedef struct tagFIXSEG
{
BYTE byEntryFlags; /* Entry point flags same as above */
WORD wSegOfs; /* Offset of entry point within segment */
} FIXSEG;
typedef struct tagRESNAMES
{
WORD wLen,
wType;
} RESNAMES;
typedef RESNAMES *PRESNAMES;
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/