home *** CD-ROM | disk | FTP | other *** search
- ;Text for INT2GUID conversion program, topic 21.
- ;INT2GUID converts INTERRUP.LST files to input for GUIDE.
- ;
- ;This file contains tables extracted from the INTERRUP.LST file. Tabs in
- ;the extracted text were filtered to 1 - 8 spaces.
- ;
- ;This file includes 4 extra topics. Reserve additionally 6 topics, or a
- ;total of 10.
- ;
- ;Topic headings are included in the GUIDE main index unless the configuration
- ;file specifies mask 0x8000.
- ;
- PSP Format, Environment Block, Country Specific Information, Error List
-
- This entry gives access to tables extracted from the INTERRUP.LST file.
-
- 22PSP + Env. Program Segment Prefix Format + Environment
- 23Country Specific Information
- 24Errors Returned by DOS Funtion Calls
- 25EXE *.EXE File Header etc.
- ;
- !TOPIC 22 PSP Format
- !! 0x8000
- !NOINDEX
- !! 0
- ;
- ----------2126-------------------------------
- INT 21 - DOS 1+ - CREATE NEW PROGRAM SEGMENT PREFIX
- AH = 26h
- DX = segment at which to create PSP (see below for format)
- Notes: new PSP is updated with memory size information; INTs 22h, 23h, 24h
- taken from interrupt vector table
- (DOS 2+) DOS assumes that the caller's CS is the segment of the PSP to
- copy
- SeeAlso: AH=4Bh,AH=50h,AH=51h,AH=55h,AH=62h,AH=67h
-
- Format of PSP:
- Offset Size Description
- 00h 2 BYTEs INT 20 instruction for CP/M CALL 0 program termination
- 02h WORD segment of first byte beyond memory allocated to program
- 04h BYTE unused filler
- 05h BYTE CP/M CALL 5 service request (FAR JMP to 000C0h)
- BUG: (DOS 2+) PSPs created by INT 21/AH=4Bh point at 000BEh
- 06h WORD CP/M compatibility--size of first segment for .COM files
- 08h 2 BYTEs remainder of FAR JMP at 05h
- 0Ah DWORD stored INT 22 termination address
- 0Eh DWORD stored INT 23 control-Break handler address
- 12h DWORD DOS 1.1+ stored INT 24 critical error handler address
- 16h WORD segment of parent PSP
- 18h 20 BYTEs DOS 2+ Job File Table, one byte per file handle, FFh = closed
- 2Ch WORD DOS 2+ segment of environment for process
- 2Eh DWORD DOS 2+ process's SS:SP on entry to last INT 21 call
- 32h WORD DOS 3+ number of entries in JFT (default 20)
- 34h DWORD DOS 3+ pointer to JFT (default PSP:0018h)
- 38h DWORD DOS 3+ pointer to previous PSP (default FFFFFFFFh in 3.x)
- used by SHARE in DOS 3.3
- 3Ch 4 BYTEs unused by DOS versions <= 5.00
- 40h 2 BYTEs DOS 5.0 version to return on INT 21/AH=30h
- 42h 14 BYTEs unused by DOS versions <= 5.00
- 50h 3 BYTEs DOS 2+ service request (INT 21/RETF instructions)
- 53h 9 BYTEs unused in DOS versions <= 5.00
- 5Ch 16 BYTEs first default FCB, filled in from first commandline argument
- overwrites second FCB if opened
- 6Ch 16 BYTEs second default FCB, filled in from second commandline argument
- overwrites beginning of commandline if opened
- 7Ch 4 BYTEs unused
- 80h 128 BYTEs commandline / default DTA
- command tail is BYTE for length of tail, N BYTEs for the tail,
- followed by a BYTE containing 0Dh
- Notes: in DOS versions 3.0 and up, the limit on simultaneously open files may
- be increased by allocating memory for a new open file table, filling
- it with FFh, copying the first 20 bytes from the default table, and
- adjusting the pointer and count at 34h and 32h. However, DOS
- versions through at least 3.30 will only copy the first 20 file
- handles into a child PSP (including the one created on EXEC).
- network redirectors based on the original MS-Net implementation use
- values of 80h-FEh in the open file table to indicate remote files
- MSDOS 5.00 incorrectly fills the FCB fields when loading a program
- high; the first FCB is empty and the second contains the first
- parameter
- Format of environment block:
- Offset Size Description
- 00h N BYTEs first environment variable, ASCIZ string of form "var=value"
- N BYTEs second environment variable, ASCIZ string
- ...
- N BYTEs last environment variable, ASCIZ string of form "var=value"
- BYTE 00h
- ---DOS 3+---
- WORD number of strings following environment (normally 1)
- N BYTEs ASCIZ full pathname of program owning this environment
- other strings may follow
- ;
- !TOPIC 23 Country Info
- !! 0x8000
- !NOINDEX
- !! 0
- ;
- ----------2138-------------------------------
- INT 21 - DOS 2+ - GET COUNTRY-SPECIFIC INFORMATION
- AH = 38h
- --DOS 2.x--
- AL = 00h get current-country info
- DS:DX -> buffer for returned info (see below)
- Return: CF set on error
- AX = error code (02h)
- CF clear if successful
- AX = country code (MSDOS 2.11 only)
- buffer at DS:DX filled
- --DOS 3+--
- AL = 00h for current country
- AL = 01h thru 0FEh for specific country with code <255
- AL = 0FFh for specific country with code >= 255
- BX = 16-bit country code
- DS:DX -> buffer for returned info (see below)
- Return: CF set on error
- AX = error code (02h)
- CF clear if successful
- BX = country code
- DS:DX buffer filled
- SeeAlso: AH=65h,INT 10/AX=5001h,INT 2F/AX=110Ch,INT 2F/AX=1404h
-
- Format of PCDOS 2.x country info:
- Offset Size Description
- 00h WORD date format 0 = USA mm dd yy
- 1 = Europe dd mm yy
- 2 = Japan yy mm dd
- 02h BYTE currency symbol
- 03h BYTE 00h
- 04h BYTE thousands separator char
- 05h BYTE 00h
- 06h BYTE decimal separator char
- 07h BYTE 00h
- 08h 24 BYTEs reserved
-
- Format of MSDOS 2.x,DOS 3+ country info:
- Offset Size Description
- 00h WORD date format (see above)
- 02h 5 BYTEs ASCIZ currency symbol string
- 07h 2 BYTEs ASCIZ thousands separator
- 09h 2 BYTEs ASCIZ decimal separator
- 0Bh 2 BYTEs ASCIZ date separator
- 0Dh 2 BYTEs ASCIZ time separator
- 0Fh BYTE currency format
- bit 2 = set if currency symbol replaces decimal point
- bit 1 = number of spaces between value and currency symbol
- bit 0 = 0 if currency symbol precedes value
- 1 if currency symbol follows value
- 10h BYTE number of digits after decimal in currency
- 11h BYTE time format
- bit 0 = 0 if 12-hour clock
- 1 if 24-hour clock
- 12h DWORD address of case map routine
- (FAR CALL, AL = character to map to upper case [>= 80h])
- 16h 2 BYTEs ASCIZ data-list separator
- 18h 10 BYTEs reserved
-
- Values for country code:
- 001h United States
- 002h Canadian-French
- 003h Latin America
- 01Fh Netherlands
- 020h Belgium
- 021h France
- 022h Spain
- 024h Hungary (not supported by DR-DOS 5.0)
- 026h Yugoslavia (not supported by DR-DOS 5.0)
- 027h Italy
- 029h Switzerland
- 02Ah Czechoslovakia (not supported by DR-DOS 5.0)
- 02Bh Austria (DR-DOS 5.0)
- 02Ch United Kingdom
- 02Dh Denmark
- 02Eh Sweden
- 02Fh Norway
- 030h Poland (not supported by DR-DOS 5.0)
- 031h Germany
- 037h Brazil (not supported by DR-DOS 5.0)
- 03Dh International English [Australia in DR-DOS 5.0]
- 051h Japan (DR-DOS 5.0)
- 052h Korea (DR-DOS 5.0)
- 15Fh Portugal
- 166h Finland
- 311h Middle East (DR-DOS 5.0)
- 3CCh Israel (DR-DOS 5.0)
- ----------2138-------------------------------
- INT 21 - DOS 3+ - SET COUNTRY CODE
- AH = 38h
- AL = 01h thru 0FEh for specific country with code <255
- AL = FFh for specific country with code >= 255
- BX = 16-bit country code
- DX = FFFFh
- Return: CF set on error
- AX = error code (see AH=59h)
- CF clear if successful
- Note: not supported by OS/2
- SeeAlso: INT 2F/AX=1403h
- ----------2165-------------------------------
- INT 21 - DOS 3.3+ - GET EXTENDED COUNTRY INFORMATION
- AH = 65h
- AL = info ID
- 01h get general internationalization info
- 02h get pointer to uppercase table
- 04h get pointer to filename uppercase table
- 05h get pointer to filename terminator table
- 06h get pointer to collating sequence table
- 07h (DOS 4+) get pointer to Double-Byte Character Set table
- BX = code page (-1=global code page)
- DX = country ID (-1=current country)
- ES:DI -> country information buffer (see below)
- CX = size of buffer (>= 5)
- Return: CF set on error
- AX = error code (see AH=59h)
- CF clear if succesful
- CX = size of country information returned
- ES:DI -> country information
- Notes: AL=05h appears to return same info for all countries and codepages; it
- has been documented for DOS 5.0, but was undocumented in ealier
- versions
- NLSFUNC must be installed to get info for countries other than the
- default
- subfunctions 02h and 04h are identical under OS/2
- SeeAlso: AH=38h,INT 2F/AX=1401h,INT 2F/AX=1402h
-
- Format of country information:
- Offset Size Description
- 00h BYTE info ID
- ---if info ID = 01h---
- 01h WORD size
- 03h WORD country ID
- 05h WORD code page
- 07h 34 BYTEs country-dependent info (see AH=38h)
- ---if info ID = 02h---
- 01h DWORD pointer to uppercase table (see below)
- ---if info ID = 04h---
- 01h DWORD pointer to filename uppercase table (see below)
- ---if info ID = 05h---
- 01h DWORD pointer to filename character table (see below)
- ---if info ID = 06h---
- 01h DWORD pointer to collating table (see below)
- ---if info ID = 07h (DOS 4+)---
- 01h DWORD pointer to DBCS lead byte table (see below)
-
- Format of uppercase table:
- Offset Size Description
- 00h WORD table size
- 02h 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
-
- Format of collating table:
- Offset Size Description
- 00h WORD table size
- 02h 256 BYTEs values used to sort characters 00h to FFh
-
- Format of filename terminator table:
- Offset Size Description
- 00h WORD table size (not counting this word)
- 02h BYTE ??? (01h for MSDOS 3.30-5.00)
- 03h BYTE lowest permissible character value for filename
- 04h BYTE highest permissible character value for filename
- 05h BYTE ??? (00h for MSDOS 3.30-5.00)
- 06h BYTE first excluded character in range \ all characters in this
- 07h BYTE last excluded character in range / range are illegal
- 08h BYTE ??? (02h for MSDOS 3.30-5.00)
- 09h BYTE number of illegal (terminator) characters
- 0Ah N BYTES characters which terminate a filename: ."/\[]:|<>+=;,
- Note: partially documented for DOS 5.0, but undocumented for earlier versions
-
- Format of filename uppercase table:
- Offset Size Description
- 00h WORD table size
- 02h 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
-
- Format of DBCS lead byte table:
- Offset Size Description
- 00h WORD length
- 02h 2N BYTEs start/end for N lead byte ranges
- WORD 0000h (end of table)
- ----------2165-------------------------------
- INT 21 - DOS 4+ - COUNTRY-DEPENDENT CHARACTER CAPITALIZATION
- AH = 65h
- AL = function
- 20h capitalize character
- DL = character to capitalize
- Return: DL = capitalized character
- 21h capitalize string
- DS:DX -> string to capitalize
- CX = length of string
- 22h capitalize ASCIZ string
- DS:DX -> ASCIZ string to capitalize
- Return: CF set on error
- AX = error code (see AH=59h)
- CF clear if successful
- Note: these calls have been documented for DOS 5+, but were undocumented in
- DOS 4.x.
- ----------216523-----------------------------
- INT 21 - DOS 4+ internal - DETERMINE IF CHARACTER REPRESENTS YES/NO RESPONSE
- AX = 6523h
- DL = character
- DH = second character of double-byte character (if applicable)
- Return: CF set on error
- CF clear if successful
- AX = type
- 00h no
- 01h yes
- 02h neither yes nor no
- ----------2165-------------------------------
- INT 21 - DOS 4+ internal - COUNTRY-DEPENDENT FILENAME CAPITALIZATION
- AH = 65h
- AL = function
- A0h capitalize filename character
- DL = character to capitalize
- Return: DL = capitalized character
- A1h capitalize counted filename string
- DS:DX -> filename string to capitalize
- CX = length of string
- A2h capitalize ASCIZ filename
- DS:DX -> ASCIZ filename to capitalize
- Return: CF set on error
- AX = error code (see AH=59h)
- CF clear if successful
- Note: nonfunctional in DOS 4.00 through 5.00 due to a bug (the code sets a
- pointer depending on the high bit of AL, but doesn't clear the
- bit before branching by function number).
- ----------216601-----------------------------
- INT 21 - DOS 3.3+ - GET GLOBAL CODE PAGE TABLE
- AX = 6601h
- Return: CF set on error
- AX = error code (see AH=59h)
- CF clear if successful
- BX = active code page (see AX=6602h)
- DX = system code page
- SeeAlso: AX=6602h
- ----------216602-----------------------------
- INT 21 - DOS 3.3+ - SET GLOBAL CODE PAGE TABLE
- AX = 6602h
- BX = active code page
- 437 US
- 850 Multilingual
- 852 Slavic/Latin II (DOS 5+)
- 857 Turkish
- 860 Portugal
- 861 Iceland
- 863 Canada (French)
- 865 Norway/Denmark
- DX = system code page (active page at boot time)
- Return: CF set on error
- AX = error code (see AH=59h)
- CF clear if successful
- SeeAlso: AX=6601h
- !TOPIC 24 Error Codes
- !! 0x8000
- !NOINDEX
- !! 0
- ;
- ----------2159--BX0000-----------------------
- INT 21 - DOS 3+ - GET EXTENDED ERROR INFORMATION
- AH = 59h
- BX = 0000h
- Return: AX = extended error code (see below)
- BH = error class (see below)
- BL = recommended action (see below)
- CH = error locus (see below)
- CL, DX, SI, DI, BP, DS, and ES destroyed
- Notes: functions available under DOS 2.x map the true DOS 3+ error code into
- one supported under DOS 2.x
- you should call this function to retrieve the true error code when an
- FCB or DOS 2.x call returns an error
- SeeAlso: AX=5D0Ah,INT 2F/AX=122Dh
-
- Values for extended error code:
- 00h no error
- 01h function number invalid
- 02h file not found
- 03h path not found
- 04h too many open files (no handles available)
- 05h access denied
- 06h invalid handle
- 07h memory control block destroyed
- 08h insufficient memory
- 09h memory block address invalid
- 0Ah environment invalid (usually >32K in length)
- 0Bh format invalid
- 0Ch access code invalid
- 0Dh data invalid
- 0Eh reserved
- 0Fh invalid drive
- 10h attempted to remove current directory
- 11h not same device
- 12h no more files
- ---DOS 3+---
- 13h disk write-protected
- 14h unknown unit
- 15h drive not ready
- 16h unknown command
- 17h data error (CRC)
- 18h bad request structure length
- 19h seek error
- 1Ah unknown media type (non-DOS disk)
- 1Bh sector not found
- 1Ch printer out of paper
- 1Dh write fault
- 1Eh read fault
- 1Fh general failure
- 20h sharing violation
- 21h lock violation
- 22h disk change invalid
- ES:DI -> ASCIZ volume label of required disk
- 23h FCB unavailable
- 24h sharing buffer overflow
- 25h (DOS 4+) code page mismatch
- 26h (DOS 4+) cannot complete file operation (out of input)
- 27h (DOS 4+) insufficient disk space
- 28h-31h reserved
- 32h network request not supported
- 33h remote computer not listening
- 34h duplicate name on network
- 35h network name not found
- 36h network busy
- 37h network device no longer exists
- 38h network BIOS command limit exceeded
- 39h network adapter hardware error
- 3Ah incorrect response from network
- 3Bh unexpected network error
- 3Ch incompatible remote adapter
- 3Dh print queue full
- 3Eh queue not full
- 3Fh not enough space to print file
- 40h network name was deleted
- 41h network: Access denied
- 42h network device type incorrect
- 43h network name not found
- 44h network name limit exceeded
- 45h network BIOS session limit exceeded
- 46h temporarily paused
- 47h network request not accepted
- 48h network print/disk redirection paused
- 49h (LANtastic) invalid network version
- 4Ah (LANtastic) account expired
- 4Bh (LANtastic) password expired
- 4Ch (LANtastic) login attempt invalid at this time
- 4Dh (LANtastic v3+) disk limit exceeded on network node
- 4Eh (LANtastic v3+) not logged in to network node
- 4Fh reserved
- 50h file exists
- 51h reserved
- 52h cannot make directory
- 53h fail on INT 24h
- 54h (DOS 3.3+) too many redirections
- 55h (DOS 3.3+) duplicate redirection
- 56h (DOS 3.3+) invalid password
- 57h (DOS 3.3+) invalid parameter
- 58h (DOS 3.3+) network write fault
- 59h (DOS 4+) function not supported on network
- 5Ah (DOS 4+) required system component not installed
-
- Values for Error Class:
- 01h out of resource (storage space or I/O channels)
- 02h temporary situation (file or record lock)
- 03h authorization (denied access)
- 04h internal (system software bug)
- 05h hardware failure
- 06h system failure (configuration file missing or incorrect)
- 07h application program error
- 08h not found
- 09h bad format
- 0Ah locked
- 0Bh media error
- 0Ch already exists
- 0Dh unknown
-
- Values for Suggested Action:
- 01h retry
- 02h delayed retry
- 03h prompt user to reenter input
- 04h abort after cleanup
- 05h immediate abort
- 06h ignore
- 07h retry after user intervention
-
- Values for Error Locus:
- 01h unknown or not appropriate
- 02h block device (disk error)
- 03h network related
- 04h serial device (timeout)
- 05h memory related
- ;
- !TOPIC 25 EXE Header etc
- !! 0x8000
- !NOINDEX
- !! 0
- ;
- ----------214B-------------------------------
- INT 21 - DOS 2+ - "EXEC" - LOAD AND/OR EXECUTE PROGRAM
- AH = 4Bh
- AL = type of load
- 00h load and execute
- 01h load but do not execute
- 03h load overlay
- 04h load and execute in background (European MSDOS 4.0 only)
- (see also AH=80h)
- DS:DX -> ASCIZ program name (must include extension)
- ES:BX -> parameter block (see below)
- Return: CF clear if successful
- BX,DX destroyed
- if subfunction 01h, process ID set to new program's PSP; get with
- INT 21/AH=62h
- CF set on error
- AX = error code (01h,02h,05h,08h,0Ah,0Bh) (see AH=59h)
- Notes: DOS 2.x destroys all registers, including SS:SP
- for functions 00h and 01h, the calling process must ensure that there
- is enough unallocated memory available; if necessary, by releasing
- memory with AH=49h or AH=4Ah
- for function 01h, the value to be passed to the child program is put
- on top of the child's stack
- for function 03h, DOS assumes that the overlay is being loaded into
- memory allocated by the caller
- function 01h has been documented for DOS 5+, but was undocumented in
- prior versions
- BUG: DOS 2.00 assumes that DS points at the current program's PSP
- SeeAlso: AX=4B05h,AH=4Ch,AH=4Dh,INT 2E
-
- Format of EXEC parameter block for AL=00h,01h,04h:
- Offset Size Description
- 00h WORD segment of environment to copy for child process (copy caller's
- environment if 0000h)
- 02h DWORD pointer to command tail to be copied into child's PSP
- 06h DWORD pointer to first FCB to be copied into child's PSP
- 0Ah DWORD pointer to second FCB to be copied into child's PSP
- 0Eh DWORD (AL=01h) will hold subprogram's initial SS:SP on return
- 12h DWORD (AL=01h) will hold entry point (CS:IP) on return
-
- Format of EXEC parameter block for AL=03h:
- Offset Size Description
- 00h WORD segment at which to load overlay
- 02h WORD relocation factor to apply to overlay if in .EXE format
-
- Format of .EXE file header:
- Offset Size Description
- 00h 2 BYTEs .EXE signature, either "MZ" or "ZM" (5A4Dh or 4D5Ah)
- 02h WORD number of bytes in last 512-byte page of executable
- 04h WORD total number of 512-byte pages in executable (includes any
- partial last page)
- 06h WORD number of relocation entries
- 08h WORD header size in paragraphs
- 0Ah WORD minimum paragraphs of memory to allocation in addition to
- executable's size
- 0Ch WORD maximum paragraphs to allocate in addition to executable's size
- 0Eh WORD initial SS relative to start of executable
- 10h WORD initial SP
- 12h WORD checksum (one's complement of sum of all words in executable)
- 14h DWORD initial CS:IP relative to start of executable
- 18h WORD offset within header of relocation table
- 1Ah WORD overlay number (normally 0000h = main program)
- ---Borland TLINK---
- 1Ch 2 BYTEs ??? (apparently always 01h 00h)
- 1Eh BYTE signature FBh
- 1Fh BYTE TLINK version (major in high nybble, minor in low nybble)
- 20h 2 BYTEs ??? (v2.0 apparently always 72h 6Ah, v3.0 seems always 6Ah 72h)
- ---other linkers---
- 1Ch var optional information
- ---
- N N DWORDs relocation items
- ---new executable only---
- 3Ch DWORD offset of new executable header if offset of relocation table
- is 40h or greater
- Notes: if word at offset 02h is 4, it should be treated as 00h, since pre-1.10
- versions of the MS linker set it that way
- if both minimum and maximum allocation (offset 0Ah/0Ch) are zero, the
- program is loaded as high in memory as possible
- the maximum allocation is set to FFFFh by default
-
- Format of new executable header:
- Offset Size Description
- 00h 2 BYTEs "NE" (4Eh 45h) signature
- 02h 2 BYTEs linker version (major, then minor)
- 04h WORD offset to entry table
- 06h WORD length of entry table in bytes
- 08h DWORD file load CRC (0 in Borland's TPW)
- 0Ch BYTE program flags
- bits 0-1 DGROUP type
- 0 = none
- 1 = single shared
- 2 = multiple (unshared)
- 3 = (null)
- bit 2: global initialization
- bit 3: protected mode only
- bit 4: 8086 instructions
- bit 5: 80286 instructions
- bit 6: 80386 instructions
- bit 7: 80x87 instructions
- 0Dh BYTE application flags
- bits 0-2: application type
- 001 full screen (not aware of Windows/P.M. API)
- 010 compatible with Windows/P.M. API
- 011 uses Windows/P.M. API
- bit 3: is a Family Application (OS/2)
- bit 5: 0=executable, 1=errors in image
- bit 7: DLL or driver rather than application
- 0Eh WORD auto data segment index
- 10h WORD initial local heap size
- 12h WORD initial stack size
- 14h DWORD program entry point (CS:IP)
- 18h DWORD initial stack pointer (SS:SP)
- 1Ch WORD segment count
- 1Eh WORD module reference count
- 20h WORD length of nonresident names table
- 22h WORD offset from start of this header to segment table (see below)
- 24h WORD offset from start of this header to resource table
- 26h WORD offset from start of this header to resident names table
- 28h WORD offset from start of this header to module reference table
- 2Ah WORD offset from start of this header to imported names table
- 2Ch DWORD offset from start of file to nonresident names table
- 30h WORD count of moveable entry point listed in entry table
- 32h WORD file alignment size shift count
- 0 is equivalent to 9 (default 512-byte pages)
- 34h WORD number of resource table entries
- 36h BYTE target operating system
- 00h unknown
- 01h OS/2
- 02h Windows
- 03h European MS-DOS 4.x
- 04h Windows 386
- 37h BYTE other EXE flags
- bit 0: supports long filenames
- bit 1: 2.X protected mode
- bit 2: 2.X proportional font
- bit 3: gangload area
- 38h WORD offset to return thunks or start of gangload area
- 3Ah WORD offset to segment reference thunks or length of gangload area
- 3Ch WORD minimum code swap area size
- 3Eh 2 BYTEs expected Windows version (minor version first)
-
- Format of segment table record:
- 00h WORD offset in file (shift left by alignment shift to get byte offs)
- 02h WORD length of image in file
- 04h WORD attributes
- bit 0,1,2: DATA segment flags
- bit 3: iterated
- bit 4: movable
- bit 5: sharable
- bit 6: preloaded
- bit 7: execute-only
- bit 8: relocations (directly following code for this segment)
- bit 9: debug info
- bits 10,11: 80286 DPL bits
- bit 12: discardable
- bits 13-15: discard priority
- 06h WORD size to allocate
-
- Enhanced Mode New executable header:
- Offset Size Description
- 00h 2 BYTEs "LE" (4Ch 45h) signature
- 02h WORD ??? (may be linker version, but EXEHDR doesn't report it)
- 04h DWORD executable format level
- 08h WORD CPU type (see also INT 15/AH=C9h)
- 01h Intel 80286 or upwardly compatibile
- 02h Intel 80386 or upwardly compatibile
- 03h Intel 80486 or upwardly compatibile
- 0Ah WORD target operating system
- 01h OS/2
- 02h Windows
- 03h DOS4.x
- 04h Windows 386
- 0Ch DWORD module version
- 10h DWORD module type
- bit 2: initialization (only for DLLs)
- 0 = global
- 1 = per-process
- bit 4: no internal fixups in executable image
- bit 5: no external fixups in executable image
- bits 8,9,10:
- 1 = incompatible with PM windowing \
- 2 = compatible with PM windowing > (only for
- 3 = uses PM windowing API / programs)
- bit 13: module not loadable (only for programs)
- bit 15: module is DLL rather than program
- 14h DWORD number of memory pages
- 18h Initial CS:EIP
- DWORD object
- DWORD offset
- 20h Initial SS:ESP
- DWORD object
- DWORD offset
- 28h DWORD memory page size
- 2Ch DWORD bytes on last page
- 30h DWORD fixup section size
- 34h DWORD fixup section checksum
- 38h DWORD loader section size
- 3Ch DWORD loader section checksum
- 40h DWORD object table offset
- 44h DWORD object table entries
- 48h DWORD 010Ch ???
- 4CH DWORD 0000h ???
- 50h DWORD resource table offset
- 54h DWORD resource table entries
- 58h DWORD resident names table offset
- 5Ch DWORD entry table offset
- 60h DWORD module directives table offset
- 64h DWORD Module Directives entries
- 68h DWORD ??? apparently unknown table #1 offset
- 6Ch DWORD ??? apparently unknown table #2 offset
- 70h DWORD imported modules name table offset
- 74h DWORD imported modules
- 78h DWORD imported procedures name table offset
- 7Ch DWORD per-page checksum table offset
- 80h DWORD preload pages ??? offset
- 84h DWORD preload pages number
- 88h DWORD non-resident names table offset
- 8Ch DWORD non-resident names table length
- 90h DWORD non-resident names checksum
- 94h DWORD automatic data object
- 98h DWORD debug information offset
- 9Ch DWORD debug information length
- A0h DWORD preload instance pages number
- A4h DWORD demand instance pages number
- A8h DWORD extra heap allocation
- ACh ???
- Note: used by EMM386.EXE, QEMM, and Windows 3.0 Enhanced Mode drivers
-