| 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
|
|---|