1 | ;
|
---|
2 | ; HEADERS.INC -- Header structures
|
---|
3 | ;
|
---|
4 | ; Copyright (c) 1991-1995 by Eberhard Mattes
|
---|
5 | ;
|
---|
6 | ; This file is part of emx.
|
---|
7 | ;
|
---|
8 | ; emx is free software; you can redistribute it and/or modify it
|
---|
9 | ; under the terms of the GNU General Public License as published by
|
---|
10 | ; the Free Software Foundation; either version 2, or (at your option)
|
---|
11 | ; any later version.
|
---|
12 | ;
|
---|
13 | ; emx is distributed in the hope that it will be useful,
|
---|
14 | ; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
15 | ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
16 | ; GNU General Public License for more details.
|
---|
17 | ;
|
---|
18 | ; You should have received a copy of the GNU General Public License
|
---|
19 | ; along with emx; see the file COPYING. If not, write to
|
---|
20 | ; the Free Software Foundation, 59 Temple Place - Suite 330,
|
---|
21 | ; Boston, MA 02111-1307, USA.
|
---|
22 | ;
|
---|
23 | ; See emx.asm for a special exception.
|
---|
24 | ;
|
---|
25 |
|
---|
26 | ;
|
---|
27 | ; emxbind header
|
---|
28 | ;
|
---|
29 | BIND_HEADER STRUC
|
---|
30 | BND_SIGNATURE BYTE 16 DUP (?)
|
---|
31 | BND_BIND_FLAG BYTE FALSE
|
---|
32 | BND_FILL_1 BYTE ?
|
---|
33 | BND_HDR_LOC DWORD ?
|
---|
34 | BND_OPTIONS BYTE 64 DUP (0)
|
---|
35 | BIND_HEADER ENDS
|
---|
36 |
|
---|
37 | ;
|
---|
38 | ; EXE header
|
---|
39 | ;
|
---|
40 | EXE1_HEADER STRUC
|
---|
41 | EXE_MAGIC DW ?
|
---|
42 | EXE_LAST_PAGE DW ?
|
---|
43 | EXE_PAGES DW ?
|
---|
44 | EXE_RELOC_SIZE DW ?
|
---|
45 | EXE_HDR_SIZE DW ?
|
---|
46 | EXE_MIN_ALLOC DW ?
|
---|
47 | EXE_MAX_ALLOC DW ?
|
---|
48 | EXE_SS DW ?
|
---|
49 | EXE_SP DW ?
|
---|
50 | EXE_CHKSUM DW ?
|
---|
51 | EXE_IP DW ?
|
---|
52 | EXE_CS DW ?
|
---|
53 | EXE_RELOC_PTR DW ?
|
---|
54 | EXE_OVL DW ?
|
---|
55 | EXE1_HEADER ENDS
|
---|
56 |
|
---|
57 | ;
|
---|
58 | ; Additional data of EXE header
|
---|
59 | ;
|
---|
60 | EXE2_HEADER STRUC
|
---|
61 | EXE_RES1 DW 16 DUP (?)
|
---|
62 | EXE_NEW_LO DW ?
|
---|
63 | EXE_NEW_HI DW ?
|
---|
64 | EXE2_HEADER ENDS
|
---|
65 |
|
---|
66 | ;
|
---|
67 | ; a.out header
|
---|
68 | ;
|
---|
69 | A_OUT_HEADER STRUC
|
---|
70 | A_MAGIC DW ?
|
---|
71 | A_MACHTYPE DB ?
|
---|
72 | A_FLAGS DB ?
|
---|
73 | A_TEXT_SIZE DD ?
|
---|
74 | A_DATA_SIZE DD ?
|
---|
75 | A_BSS_SIZE DD ?
|
---|
76 | A_SYM_SIZE DD ?
|
---|
77 | A_ENTRY DD ?
|
---|
78 | A_TRSIZE DD ?
|
---|
79 | A_DRSIZE DD ?
|
---|
80 | A_OUT_HEADER ENDS
|
---|
81 |
|
---|
82 | A_OUT_MAGIC = 010BH
|
---|
83 | A_OUT_OFFSET = 0400H ; First page of code
|
---|
84 | UMAGIC = 010FH
|
---|
85 | U_OFFSET = 0400H ; First page of data
|
---|
86 | KERNEL_U_ADDR = 0E0000000H ; Subtract this from U_AR0
|
---|
87 |
|
---|
88 | ;
|
---|
89 | ; This structure that starts a core file
|
---|
90 | ;
|
---|
91 | USER_AREA STRUC
|
---|
92 | U_MAGIC DW ?
|
---|
93 | U_RESERVED1 DW ?
|
---|
94 | U_DATA_BASE DD ?
|
---|
95 | U_DATA_END DD ?
|
---|
96 | U_DATA_OFF DD ?
|
---|
97 | U_HEAP_BASE DD ?
|
---|
98 | U_HEAP_END DD ?
|
---|
99 | U_HEAP_OFF DD ?
|
---|
100 | U_HEAP_BRK DD ?
|
---|
101 | U_STACK_BASE DD ?
|
---|
102 | U_STACK_END DD ?
|
---|
103 | U_STACK_OFF DD ?
|
---|
104 | U_STACK_LOW DD ?
|
---|
105 | U_AR0 DD ?
|
---|
106 | U_FPVALID DB ?
|
---|
107 | U_RESERVED2 DB 3 DUP (?)
|
---|
108 | U_FPSTATE DD 27 DUP (?)
|
---|
109 | U_FPSTATUS DD ?
|
---|
110 | U_RESERVED3 DD 23 DUP (?)
|
---|
111 | U_GS DW ?, 0
|
---|
112 | U_FS DW ?, 0
|
---|
113 | U_ES DW ?, 0
|
---|
114 | U_DS DW ?, 0
|
---|
115 | U_EDI DD ?
|
---|
116 | U_ESI DD ?
|
---|
117 | U_EBP DD ?
|
---|
118 | U_ESP DD ?
|
---|
119 | U_EBX DD ?
|
---|
120 | U_EDX DD ?
|
---|
121 | U_ECX DD ?
|
---|
122 | U_EAX DD ?
|
---|
123 | U_TRAPNO DD ?
|
---|
124 | U_ERRCD DD ?
|
---|
125 | U_EIP DD ?
|
---|
126 | U_CS DW ?, 0
|
---|
127 | U_EFL DD ?
|
---|
128 | U_UESP DD ?
|
---|
129 | U_SS DW ?, 0
|
---|
130 | USER_AREA ENDS
|
---|
131 |
|
---|
132 | U_REGS EQU U_GS
|
---|
133 |
|
---|
134 | L_FLAG_DLL = 0001H ; Executable is a DLL
|
---|
135 | L_FLAG_LINK386 = 0002H ; Linked by LINK386
|
---|
136 |
|
---|
137 | ;
|
---|
138 | ; This table is at the beginning of the data section
|
---|
139 | ;
|
---|
140 | LAYOUT_TABLE STRUC
|
---|
141 | L_TEXT_BASE DD ?
|
---|
142 | L_TEXT_END DD ?
|
---|
143 | L_DATA_BASE DD ?
|
---|
144 | L_DATA_END DD ?
|
---|
145 | L_BSS_BASE DD ?
|
---|
146 | L_BSS_END DD ?
|
---|
147 | L_HEAP_BASE DD ?
|
---|
148 | L_HEAP_END DD ?
|
---|
149 | L_HEAP_BRK DD ?
|
---|
150 | L_HEAP_OFF DD ?
|
---|
151 | L_OS2_DLL DD ?
|
---|
152 | L_STACK_BASE DD ?
|
---|
153 | L_STACK_END DD ?
|
---|
154 | L_FLAGS DD ?
|
---|
155 | L_RESERVED DD 2 DUP (?)
|
---|
156 | L_OPTIONS DB 64 DUP (?)
|
---|
157 | LAYOUT_TABLE ENDS
|
---|