mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
2.7 KiB
113 lines
2.7 KiB
BREAK <EXEC and EXE file structures>
|
|
|
|
;
|
|
;----------------------------------------------------------------------------
|
|
;
|
|
; M00x : 4b04 implementation
|
|
;
|
|
;----------------------------------------------------------------------------
|
|
;
|
|
|
|
;** EXE.INC - Definitions for the EXEC command and EXE files
|
|
;
|
|
; The following get used as arguments to the EXEC system call. They indicate
|
|
; whether or not the program is executed or whether or not a program header
|
|
; gets created.
|
|
|
|
EXEC_FUNC_NO_EXECUTE EQU 1 ; no execute bit
|
|
EXEC_FUNC_OVERLAY EQU 2 ; overlay bit
|
|
|
|
EXEC0 STRUC
|
|
EXEC0_ENVIRON dw ? ; seg addr of environment
|
|
EXEC0_COM_LINE dd ? ; pointer to asciz command line
|
|
EXEC0_5C_FCB dd ? ; default fcb at 5C
|
|
EXEC0_6C_FCB dd ? ; default fcb at 6C
|
|
EXEC0 ENDS
|
|
|
|
EXEC1 STRUC
|
|
EXEC1_ENVIRON dw ? ; seg addr of environment
|
|
EXEC1_COM_LINE dd ? ; pointer to asciz command line
|
|
EXEC1_5C_FCB dd ? ; default fcb at 5C
|
|
EXEC1_6C_FCB dd ? ; default fcb at 6C
|
|
EXEC1_SP dw ? ; stack pointer of program
|
|
EXEC1_SS dw ? ; stack seg register of program
|
|
EXEC1_IP dw ? ; entry point IP
|
|
EXEC1_CS dw ? ; entry point CS
|
|
EXEC1 ENDS
|
|
|
|
EXEC3 STRUC
|
|
EXEC3_LOAD_ADDR DW ? ; seg address of load point
|
|
EXEC3_RELOC_FAC DW ? ; relocation factor
|
|
EXEC3 ENDS
|
|
|
|
|
|
;** Exit codes (in upper byte) for terminating programs
|
|
|
|
EXIT_TERMINATE EQU 0
|
|
EXIT_ABORT EQU 0
|
|
EXIT_CTRL_C EQU 1
|
|
EXIT_HARD_ERROR EQU 2
|
|
EXIT_KEEP_PROCESS EQU 3
|
|
|
|
|
|
|
|
;** EXE File Header Description
|
|
;
|
|
|
|
EXE_FILE STRUC
|
|
|
|
EXE_SIGNATURE dw ? ; must contain 4D5A (yay zibo!)
|
|
EXE_LEN_MOD_512 dw ? ; low 9 bits of length
|
|
EXE_PAGES dw ? ; number of 512b pages in file
|
|
EXE_RLE_COUNT dw ? ; count of reloc entries
|
|
EXE_PAR_DIR dw ? ; number of paragraphs before image
|
|
EXE_MIN_BSS dw ? ; minimum number of para of BSS
|
|
EXE_MAX_BSS dw ? ; max number of para of BSS
|
|
EXE_SS dw ? ; stack of image
|
|
EXE_SP dw ? ; SP of image
|
|
EXE_CHKSUM dw ? ; checksum of file (ignored)
|
|
EXE_IP dw ? ; IP of entry
|
|
EXE_CS dw ? ; CS of entry
|
|
EXE_RLE_TABLE dw ? ; byte offset of reloc table
|
|
EXE_IOV dw ? ; overlay number (0 for root)
|
|
EXE_SYM_TAB dd ? ; offset of symbol table in file
|
|
|
|
EXE_FILE ENDS
|
|
|
|
EXE_VALID_SIGNATURE EQU 5A4Dh
|
|
EXE_VALID_OLD_SIGNATURE EQU 4D5Ah
|
|
|
|
|
|
;** EXE file symbol info definitions
|
|
|
|
SYMBOL_ENTRY STRUC
|
|
SYM_VALUE dd ?
|
|
SYM_TYPE dw ?
|
|
SYM_LEN db ?
|
|
SYM_NAME db 255 dup (?)
|
|
SYMBOL_ENTRY ENDS
|
|
|
|
|
|
;
|
|
; M00x - BEGIN
|
|
;
|
|
;** Data structure passed for ExecReady call
|
|
|
|
ERStruc STRUC
|
|
ER_Reserved dw ? ; reserved, should be zero
|
|
ER_Flags dw ?
|
|
ER_ProgName dd ? ; ptr to ASCIIZ str of prog name
|
|
ER_PSP dw ? ; PSP of the program
|
|
ER_StartAddr dd ? ; Start CS:IP of the program
|
|
ER_ProgSize dd ? ; Program size including PSP
|
|
ERStruc ENDS
|
|
|
|
;** bit fields in ER_Flags
|
|
|
|
ER_EXE equ 0001h
|
|
ER_OVERLAY equ 0002h
|
|
|
|
;
|
|
; M00x - END
|
|
;
|
|
|