Subversion Repositories Kolibri OS

Rev

Rev 7129 | Rev 7132 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7129 Rev 7130
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
2
;;                                                              ;;
3
;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;;
3
;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
7
 
8
$Revision: 7129 $
8
$Revision: 7130 $
9
 
9
 
10
 
10
 
11
dpl0    equ  10010000b      ; data read       dpl0
11
dpl0    equ  10010000b      ; data read       dpl0
12
drw0    equ  10010010b      ; data read/write dpl0
12
drw0    equ  10010010b      ; data read/write dpl0
13
drw3    equ  11110010b      ; data read/write dpl3
13
drw3    equ  11110010b      ; data read/write dpl3
14
cpl0    equ  10011010b      ; code read dpl0
14
cpl0    equ  10011010b      ; code read dpl0
15
cpl3    equ  11111010b      ; code read dpl3
15
cpl3    equ  11111010b      ; code read dpl3
16
 
16
 
17
D32     equ  01000000b      ; 32bit segment
17
D32     equ  01000000b      ; 32bit segment
18
G32     equ  10000000b      ; page gran
18
G32     equ  10000000b      ; page gran
19
 
19
 
20
 
20
 
21
;;;;;;;;;;;;cpu_caps flags;;;;;;;;;;;;;;;;
21
;;;;;;;;;;;;cpu_caps flags;;;;;;;;;;;;;;;;
22
 
22
 
23
CPU_386        equ 3
23
CPU_386        equ 3
24
CPU_486        equ 4
24
CPU_486        equ 4
25
CPU_PENTIUM    equ 5
25
CPU_PENTIUM    equ 5
26
CPU_P6         equ 6
26
CPU_P6         equ 6
27
CPU_PENTIUM4   equ 0x0F
27
CPU_PENTIUM4   equ 0x0F
28
 
28
 
29
CAPS_FPU       equ    00 ;on-chip x87 floating point unit
29
CAPS_FPU       equ    00 ;on-chip x87 floating point unit
30
CAPS_VME       equ    01 ;virtual-mode enhancements
30
CAPS_VME       equ    01 ;virtual-mode enhancements
31
CAPS_DE        equ    02 ;debugging extensions
31
CAPS_DE        equ    02 ;debugging extensions
32
CAPS_PSE       equ    03 ;page-size extensions
32
CAPS_PSE       equ    03 ;page-size extensions
33
CAPS_TSC       equ    04 ;time stamp counter
33
CAPS_TSC       equ    04 ;time stamp counter
34
CAPS_MSR       equ    05 ;model-specific registers
34
CAPS_MSR       equ    05 ;model-specific registers
35
CAPS_PAE       equ    06 ;physical-address extensions
35
CAPS_PAE       equ    06 ;physical-address extensions
36
CAPS_MCE       equ    07 ;machine check exception
36
CAPS_MCE       equ    07 ;machine check exception
37
CAPS_CX8       equ    08 ;CMPXCHG8B instruction
37
CAPS_CX8       equ    08 ;CMPXCHG8B instruction
38
CAPS_APIC      equ    09 ;on-chip advanced programmable
38
CAPS_APIC      equ    09 ;on-chip advanced programmable
39
                         ; interrupt controller
39
                         ; interrupt controller
40
;                     10 ;unused
40
;                     10 ;unused
41
CAPS_SEP       equ    11 ;SYSENTER and SYSEXIT instructions
41
CAPS_SEP       equ    11 ;SYSENTER and SYSEXIT instructions
42
CAPS_MTRR      equ    12 ;memory-type range registers
42
CAPS_MTRR      equ    12 ;memory-type range registers
43
CAPS_PGE       equ    13 ;page global extension
43
CAPS_PGE       equ    13 ;page global extension
44
CAPS_MCA       equ    14 ;machine check architecture
44
CAPS_MCA       equ    14 ;machine check architecture
45
CAPS_CMOV      equ    15 ;conditional move instructions
45
CAPS_CMOV      equ    15 ;conditional move instructions
46
CAPS_PAT       equ    16 ;page attribute table
46
CAPS_PAT       equ    16 ;page attribute table
47
 
47
 
48
CAPS_PSE36     equ    17 ;page-size extensions
48
CAPS_PSE36     equ    17 ;page-size extensions
49
CAPS_PSN       equ    18 ;processor serial number
49
CAPS_PSN       equ    18 ;processor serial number
50
CAPS_CLFLUSH   equ    19 ;CLFUSH instruction
50
CAPS_CLFLUSH   equ    19 ;CLFUSH instruction
51
 
51
 
52
CAPS_DS        equ    21 ;debug store
52
CAPS_DS        equ    21 ;debug store
53
CAPS_ACPI      equ    22 ;thermal monitor and software
53
CAPS_ACPI      equ    22 ;thermal monitor and software
54
                         ;controlled clock supported
54
                         ;controlled clock supported
55
CAPS_MMX       equ    23 ;MMX instructions
55
CAPS_MMX       equ    23 ;MMX instructions
56
CAPS_FXSR      equ    24 ;FXSAVE and FXRSTOR instructions
56
CAPS_FXSR      equ    24 ;FXSAVE and FXRSTOR instructions
57
CAPS_SSE       equ    25 ;SSE instructions
57
CAPS_SSE       equ    25 ;SSE instructions
58
CAPS_SSE2      equ    26 ;SSE2 instructions
58
CAPS_SSE2      equ    26 ;SSE2 instructions
59
CAPS_SS        equ    27 ;self-snoop
59
CAPS_SS        equ    27 ;self-snoop
60
CAPS_HTT       equ    28 ;hyper-threading technology
60
CAPS_HTT       equ    28 ;hyper-threading technology
61
CAPS_TM        equ    29 ;thermal monitor supported
61
CAPS_TM        equ    29 ;thermal monitor supported
62
CAPS_IA64      equ    30 ;IA64 capabilities
62
CAPS_IA64      equ    30 ;IA64 capabilities
63
CAPS_PBE       equ    31 ;pending break enable
63
CAPS_PBE       equ    31 ;pending break enable
64
 
64
 
65
;ecx
65
;ecx
66
CAPS_SSE3      equ    32 ;SSE3 instructions
66
CAPS_SSE3      equ    32 ;SSE3 instructions
67
;                     33
67
;                     33
68
;                     34
68
;                     34
69
CAPS_MONITOR   equ    35 ;MONITOR/MWAIT instructions
69
CAPS_MONITOR   equ    35 ;MONITOR/MWAIT instructions
70
CAPS_DS_CPL    equ    36 ;
70
CAPS_DS_CPL    equ    36 ;
71
CAPS_VMX       equ    37 ;virtual mode extensions
71
CAPS_VMX       equ    37 ;virtual mode extensions
72
;                     38 ;
72
;                     38 ;
73
CAPS_EST       equ    39 ;enhansed speed step
73
CAPS_EST       equ    39 ;enhansed speed step
74
CAPS_TM2       equ    40 ;thermal monitor2 supported
74
CAPS_TM2       equ    40 ;thermal monitor2 supported
75
;                     41
75
;                     41
76
CAPS_CID       equ    42 ;
76
CAPS_CID       equ    42 ;
77
;                     43
77
;                     43
78
;                     44
78
;                     44
79
CAPS_CX16      equ    45 ;CMPXCHG16B instruction
79
CAPS_CX16      equ    45 ;CMPXCHG16B instruction
80
CAPS_xTPR      equ    46 ;
80
CAPS_xTPR      equ    46 ;
81
CAPS_XSAVE     equ    (32 + 26) ; XSAVE and XRSTOR instructions
81
CAPS_XSAVE     equ    (32 + 26) ; XSAVE and XRSTOR instructions
82
CAPS_OSXSAVE   equ    (32 + 27)
82
CAPS_OSXSAVE   equ    (32 + 27)
83
; A value of 1 indicates that the OS has set CR4.OSXSAVE[bit 18] to enable
83
; A value of 1 indicates that the OS has set CR4.OSXSAVE[bit 18] to enable
84
; XSETBV/XGETBV instructions to access XCR0 and to support processor extended
84
; XSETBV/XGETBV instructions to access XCR0 and to support processor extended
85
; state management using XSAVE/XRSTOR.
85
; state management using XSAVE/XRSTOR.
86
CAPS_AVX       equ    (32 + 28) ; not AVX2
86
CAPS_AVX       equ    (32 + 28) ; not AVX2
87
;
87
;
88
;reserved
88
;reserved
89
;
89
;
90
;ext edx /ecx
90
;ext edx /ecx
91
CAPS_SYSCAL    equ    64 ;
91
CAPS_SYSCAL    equ    64 ;
92
CAPS_XD        equ    65 ;execution disable
92
CAPS_XD        equ    65 ;execution disable
93
CAPS_FFXSR     equ    66 ;
93
CAPS_FFXSR     equ    66 ;
94
CAPS_RDTSCP    equ    67 ;
94
CAPS_RDTSCP    equ    67 ;
95
CAPS_X64       equ    68 ;
95
CAPS_X64       equ    68 ;
96
CAPS_3DNOW     equ    69 ;
96
CAPS_3DNOW     equ    69 ;
97
CAPS_3DNOWEXT  equ    70 ;
97
CAPS_3DNOWEXT  equ    70 ;
98
CAPS_LAHF      equ    71 ;
98
CAPS_LAHF      equ    71 ;
99
CAPS_CMP_LEG   equ    72 ;
99
CAPS_CMP_LEG   equ    72 ;
100
CAPS_SVM       equ    73 ;secure virual machine
100
CAPS_SVM       equ    73 ;secure virual machine
101
CAPS_ALTMOVCR8 equ    74 ;
101
CAPS_ALTMOVCR8 equ    74 ;
102
 
102
 
103
; CPU MSR names
103
; CPU MSR names
104
MSR_SYSENTER_CS         equ     0x174
104
MSR_SYSENTER_CS         equ     0x174
105
MSR_SYSENTER_ESP        equ     0x175
105
MSR_SYSENTER_ESP        equ     0x175
106
MSR_SYSENTER_EIP        equ     0x176
106
MSR_SYSENTER_EIP        equ     0x176
107
MSR_CR_PAT              equ     0x277
107
MSR_CR_PAT              equ     0x277
108
MSR_MTRR_DEF_TYPE       equ     0x2FF
108
MSR_MTRR_DEF_TYPE       equ     0x2FF
109
 
109
 
110
MSR_AMD_EFER            equ     0xC0000080      ; Extended Feature Enable Register
110
MSR_AMD_EFER            equ     0xC0000080      ; Extended Feature Enable Register
111
MSR_AMD_STAR            equ     0xC0000081      ; SYSCALL/SYSRET Target Address Register
111
MSR_AMD_STAR            equ     0xC0000081      ; SYSCALL/SYSRET Target Address Register
112
 
112
 
113
CR0_PE         equ    0x00000001   ;protected mode
113
CR0_PE         equ    0x00000001   ;protected mode
114
CR0_MP         equ    0x00000002   ;monitor fpu
114
CR0_MP         equ    0x00000002   ;monitor fpu
115
CR0_EM         equ    0x00000004   ;fpu emulation
115
CR0_EM         equ    0x00000004   ;fpu emulation
116
CR0_TS         equ    0x00000008   ;task switch
116
CR0_TS         equ    0x00000008   ;task switch
117
CR0_ET         equ    0x00000010   ;extension type hardcoded to 1
117
CR0_ET         equ    0x00000010   ;extension type hardcoded to 1
118
CR0_NE         equ    0x00000020   ;numeric error
118
CR0_NE         equ    0x00000020   ;numeric error
119
CR0_WP         equ    0x00010000   ;write protect
119
CR0_WP         equ    0x00010000   ;write protect
120
CR0_AM         equ    0x00040000   ;alignment check
120
CR0_AM         equ    0x00040000   ;alignment check
121
CR0_NW         equ    0x20000000   ;not write-through
121
CR0_NW         equ    0x20000000   ;not write-through
122
CR0_CD         equ    0x40000000   ;cache disable
122
CR0_CD         equ    0x40000000   ;cache disable
123
CR0_PG         equ    0x80000000   ;paging
123
CR0_PG         equ    0x80000000   ;paging
124
 
124
 
125
 
125
 
126
CR4_VME        equ    0x000001
126
CR4_VME        equ    0x000001
127
CR4_PVI        equ    0x000002
127
CR4_PVI        equ    0x000002
128
CR4_TSD        equ    0x000004
128
CR4_TSD        equ    0x000004
129
CR4_DE         equ    0x000008
129
CR4_DE         equ    0x000008
130
CR4_PSE        equ    0x000010
130
CR4_PSE        equ    0x000010
131
CR4_PAE        equ    0x000020
131
CR4_PAE        equ    0x000020
132
CR4_MCE        equ    0x000040
132
CR4_MCE        equ    0x000040
133
CR4_PGE        equ    0x000080
133
CR4_PGE        equ    0x000080
134
CR4_PCE        equ    0x000100
134
CR4_PCE        equ    0x000100
135
CR4_OSFXSR     equ    0x000200
135
CR4_OSFXSR     equ    0x000200
136
CR4_OSXMMEXPT  equ    0x000400
136
CR4_OSXMMEXPT  equ    0x000400
137
CR4_OSXSAVE    equ    0x040000
137
CR4_OSXSAVE    equ    0x040000
138
 
138
 
139
XCR0_FPU_MMX   equ    0x0001
139
XCR0_FPU_MMX   equ    0x0001
140
XCR0_SSE       equ    0x0002
140
XCR0_SSE       equ    0x0002
141
XCR0_AVX       equ    0x0004
141
XCR0_AVX       equ    0x0004
142
XCR0_MPX       equ    0x0018
142
XCR0_MPX       equ    0x0018
143
XCR0_AVX512    equ    0x00e0
143
XCR0_AVX512    equ    0x00e0
144
 
144
 
145
MXCSR_IE       equ    0x0001
145
MXCSR_IE       equ    0x0001
146
MXCSR_DE       equ    0x0002
146
MXCSR_DE       equ    0x0002
147
MXCSR_ZE       equ    0x0004
147
MXCSR_ZE       equ    0x0004
148
MXCSR_OE       equ    0x0008
148
MXCSR_OE       equ    0x0008
149
MXCSR_UE       equ    0x0010
149
MXCSR_UE       equ    0x0010
150
MXCSR_PE       equ    0x0020
150
MXCSR_PE       equ    0x0020
151
MXCSR_DAZ      equ    0x0040
151
MXCSR_DAZ      equ    0x0040
152
MXCSR_IM       equ    0x0080
152
MXCSR_IM       equ    0x0080
153
MXCSR_DM       equ    0x0100
153
MXCSR_DM       equ    0x0100
154
MXCSR_ZM       equ    0x0200
154
MXCSR_ZM       equ    0x0200
155
MXCSR_OM       equ    0x0400
155
MXCSR_OM       equ    0x0400
156
MXCSR_UM       equ    0x0800
156
MXCSR_UM       equ    0x0800
157
MXCSR_PM       equ    0x1000
157
MXCSR_PM       equ    0x1000
158
MXCSR_FZ       equ    0x8000
158
MXCSR_FZ       equ    0x8000
159
 
159
 
160
MXCSR_INIT     equ (MXCSR_IM+MXCSR_DM+MXCSR_ZM+MXCSR_OM+MXCSR_UM+MXCSR_PM)
160
MXCSR_INIT     equ (MXCSR_IM+MXCSR_DM+MXCSR_ZM+MXCSR_OM+MXCSR_UM+MXCSR_PM)
161
 
161
 
162
EFLAGS_CF      equ    0x000001  ; carry flag
162
EFLAGS_CF      equ    0x000001  ; carry flag
163
EFLAGS_PF      equ    0x000004  ; parity flag
163
EFLAGS_PF      equ    0x000004  ; parity flag
164
EFLAGS_AF      equ    0x000010  ; auxiliary flag
164
EFLAGS_AF      equ    0x000010  ; auxiliary flag
165
EFLAGS_ZF      equ    0x000040  ; zero flag
165
EFLAGS_ZF      equ    0x000040  ; zero flag
166
EFLAGS_SF      equ    0x000080  ; sign flag
166
EFLAGS_SF      equ    0x000080  ; sign flag
167
EFLAGS_TF      equ    0x000100  ; trap flag
167
EFLAGS_TF      equ    0x000100  ; trap flag
168
EFLAGS_IF      equ    0x000200  ; interrupt flag
168
EFLAGS_IF      equ    0x000200  ; interrupt flag
169
EFLAGS_DF      equ    0x000400  ; direction flag
169
EFLAGS_DF      equ    0x000400  ; direction flag
170
EFLAGS_OF      equ    0x000800  ; overflow flag
170
EFLAGS_OF      equ    0x000800  ; overflow flag
171
EFLAGS_IOPL    equ    0x003000  ; i/o priviledge level
171
EFLAGS_IOPL    equ    0x003000  ; i/o priviledge level
172
EFLAGS_NT      equ    0x004000  ; nested task flag
172
EFLAGS_NT      equ    0x004000  ; nested task flag
173
EFLAGS_RF      equ    0x010000  ; resume flag
173
EFLAGS_RF      equ    0x010000  ; resume flag
174
EFLAGS_VM      equ    0x020000  ; virtual 8086 mode flag
174
EFLAGS_VM      equ    0x020000  ; virtual 8086 mode flag
175
EFLAGS_AC      equ    0x040000  ; alignment check flag
175
EFLAGS_AC      equ    0x040000  ; alignment check flag
176
EFLAGS_VIF     equ    0x080000  ; virtual interrupt flag
176
EFLAGS_VIF     equ    0x080000  ; virtual interrupt flag
177
EFLAGS_VIP     equ    0x100000  ; virtual interrupt pending
177
EFLAGS_VIP     equ    0x100000  ; virtual interrupt pending
178
EFLAGS_ID      equ    0x200000  ; id flag
178
EFLAGS_ID      equ    0x200000  ; id flag
179
 
179
 
180
IRQ_PIC        equ    0
180
IRQ_PIC        equ    0
181
IRQ_APIC       equ    1
181
IRQ_APIC       equ    1
182
 
182
 
183
struct  TSS
183
struct  TSS
184
        _back       rw 2
184
        _back       rw 2
185
        _esp0       rd 1
185
        _esp0       rd 1
186
        _ss0        rw 2
186
        _ss0        rw 2
187
        _esp1       rd 1
187
        _esp1       rd 1
188
        _ss1        rw 2
188
        _ss1        rw 2
189
        _esp2       rd 1
189
        _esp2       rd 1
190
        _ss2        rw 2
190
        _ss2        rw 2
191
        _cr3        rd 1
191
        _cr3        rd 1
192
        _eip        rd 1
192
        _eip        rd 1
193
        _eflags     rd 1
193
        _eflags     rd 1
194
        _eax        rd 1
194
        _eax        rd 1
195
        _ecx        rd 1
195
        _ecx        rd 1
196
        _edx        rd 1
196
        _edx        rd 1
197
        _ebx        rd 1
197
        _ebx        rd 1
198
        _esp        rd 1
198
        _esp        rd 1
199
        _ebp        rd 1
199
        _ebp        rd 1
200
        _esi        rd 1
200
        _esi        rd 1
201
        _edi        rd 1
201
        _edi        rd 1
202
        _es         rw 2
202
        _es         rw 2
203
        _cs         rw 2
203
        _cs         rw 2
204
        _ss         rw 2
204
        _ss         rw 2
205
        _ds         rw 2
205
        _ds         rw 2
206
        _fs         rw 2
206
        _fs         rw 2
207
        _gs         rw 2
207
        _gs         rw 2
208
        _ldt        rw 2
208
        _ldt        rw 2
209
        _trap       rw 1
209
        _trap       rw 1
210
        _io         rw 1
210
        _io         rw 1
211
                    rb 24
211
                    rb 24
212
        _io_map_0   rb 4096
212
        _io_map_0   rb 4096
213
        _io_map_1   rb 4096
213
        _io_map_1   rb 4096
214
ends
214
ends
215
 
215
 
216
DRIVE_DATA_SIZE     equ 16
216
DRIVE_DATA_SIZE     equ 16
217
 
217
 
218
OS_BASE             equ 0x80000000
218
OS_BASE             equ 0x80000000
219
 
219
 
220
window_data         equ (OS_BASE+0x0001000)
220
window_data         equ (OS_BASE+0x0001000)
221
 
221
 
222
CURRENT_TASK        equ (OS_BASE+0x0003000)
222
CURRENT_TASK        equ (OS_BASE+0x0003000)
223
TASK_COUNT          equ (OS_BASE+0x0003004)
223
TASK_COUNT          equ (OS_BASE+0x0003004)
224
TASK_BASE           equ (OS_BASE+0x0003010)
224
TASK_BASE           equ (OS_BASE+0x0003010)
225
TASK_DATA           equ (OS_BASE+0x0003020)
225
TASK_DATA           equ (OS_BASE+0x0003020)
226
TASK_EVENT          equ (OS_BASE+0x0003020)
226
TASK_EVENT          equ (OS_BASE+0x0003020)
227
 
227
 
228
CDDataBuf           equ (OS_BASE+0x0005000)
228
CDDataBuf           equ (OS_BASE+0x0005000)
229
 
229
 
230
;unused                 0x6000 - 0x8fff
230
;unused                 0x6000 - 0x8fff
231
 
231
 
232
BOOT_VARS           equ (OS_BASE)               ;0x9000
232
BOOT_VARS           equ (OS_BASE)               ;0x9000
233
 
233
 
234
idts                equ (OS_BASE+0x000B100)
234
idts                equ (OS_BASE+0x000B100)
235
WIN_STACK           equ (OS_BASE+0x000C000)
235
WIN_STACK           equ (OS_BASE+0x000C000)
236
WIN_POS             equ (OS_BASE+0x000C400)
236
WIN_POS             equ (OS_BASE+0x000C400)
237
FDD_BUFF            equ (OS_BASE+0x000D000)     ;512
237
FDD_BUFF            equ (OS_BASE+0x000D000)     ;512
238
 
238
 
239
WIN_TEMP_XY         equ (OS_BASE+0x000F300)
239
WIN_TEMP_XY         equ (OS_BASE+0x000F300)
240
KEY_COUNT           equ (OS_BASE+0x000F400)
240
KEY_COUNT           equ (OS_BASE+0x000F400)
241
KEY_BUFF            equ (OS_BASE+0x000F401) ; 120*2 + 2*2 = 244 bytes, actually 255 bytes
241
KEY_BUFF            equ (OS_BASE+0x000F401) ; 120*2 + 2*2 = 244 bytes, actually 255 bytes
242
 
242
 
243
BTN_COUNT           equ (OS_BASE+0x000F500)
243
BTN_COUNT           equ (OS_BASE+0x000F500)
244
BTN_BUFF            equ (OS_BASE+0x000F501)
244
BTN_BUFF            equ (OS_BASE+0x000F501)
245
 
245
 
246
 
246
 
247
BTN_ADDR            equ (OS_BASE+0x000FE88)
247
BTN_ADDR            equ (OS_BASE+0x000FE88)
248
MEM_AMOUNT          equ (OS_BASE+0x000FE8C)
248
MEM_AMOUNT          equ (OS_BASE+0x000FE8C)
249
 
249
 
250
SYS_SHUTDOWN        equ (OS_BASE+0x000FF00)
250
SYS_SHUTDOWN        equ (OS_BASE+0x000FF00)
251
TASK_ACTIVATE       equ (OS_BASE+0x000FF01)
251
TASK_ACTIVATE       equ (OS_BASE+0x000FF01)
252
 
252
 
253
 
253
 
254
TMP_STACK_TOP       equ 0x006CC00
254
TMP_STACK_TOP       equ 0x006CC00
255
 
255
 
256
sys_proc            equ (OS_BASE+0x006F000)
256
sys_proc            equ (OS_BASE+0x006F000)
257
 
257
 
258
SLOT_BASE           equ (OS_BASE+0x0080000)
258
SLOT_BASE           equ (OS_BASE+0x0080000)
259
 
259
 
260
VGABasePtr          equ (OS_BASE+0x00A0000)
260
VGABasePtr          equ (OS_BASE+0x00A0000)
261
 
261
 
262
CLEAN_ZONE          equ (_CLEAN_ZONE-OS_BASE)
262
CLEAN_ZONE          equ (_CLEAN_ZONE-OS_BASE)
263
 
263
 
264
UPPER_KERNEL_PAGES  equ (OS_BASE+0x0400000)
264
UPPER_KERNEL_PAGES  equ (OS_BASE+0x0400000)
265
 
265
 
266
virtual at              (OS_BASE+0x05FFF80)
266
virtual at              (OS_BASE+0x05FFF80)
267
  tss  TSS
267
  tss  TSS
268
end virtual
268
end virtual
269
 
269
 
270
HEAP_BASE           equ (OS_BASE+0x0800000)
270
HEAP_BASE           equ (OS_BASE+0x0800000)
271
HEAP_MIN_SIZE       equ 0x01000000
271
HEAP_MIN_SIZE       equ 0x01000000
272
 
272
 
273
page_tabs           equ 0xFDC00000
273
page_tabs           equ 0xFDC00000
274
app_page_tabs       equ 0xFDC00000
274
app_page_tabs       equ 0xFDC00000
275
kernel_tabs         equ (page_tabs+ (OS_BASE shr 10))   ;0xFDE00000
275
kernel_tabs         equ (page_tabs+ (OS_BASE shr 10))   ;0xFDE00000
276
master_tab          equ (page_tabs+ (page_tabs shr 10)) ;0xFDFF70000
276
master_tab          equ (page_tabs+ (page_tabs shr 10)) ;0xFDFF70000
277
 
277
 
278
LFB_BASE            equ 0xFE000000
278
LFB_BASE            equ 0xFE000000
279
 
279
 
280
 
280
 
281
new_app_base        equ 0;
281
new_app_base        equ 0;
282
 
282
 
283
twdw                equ 0x2000   ;(CURRENT_TASK-window_data)
283
twdw                equ 0x2000   ;(CURRENT_TASK-window_data)
284
 
284
 
285
std_application_base_address   equ new_app_base
285
std_application_base_address   equ new_app_base
286
RING0_STACK_SIZE    equ 0x2000
286
RING0_STACK_SIZE    equ 0x2000
287
 
287
 
288
REG_SS              equ (RING0_STACK_SIZE-4)
288
REG_SS              equ (RING0_STACK_SIZE-4)
289
REG_APP_ESP         equ (RING0_STACK_SIZE-8)
289
REG_APP_ESP         equ (RING0_STACK_SIZE-8)
290
REG_EFLAGS          equ (RING0_STACK_SIZE-12)
290
REG_EFLAGS          equ (RING0_STACK_SIZE-12)
291
REG_CS              equ (RING0_STACK_SIZE-16)
291
REG_CS              equ (RING0_STACK_SIZE-16)
292
REG_EIP             equ (RING0_STACK_SIZE-20)
292
REG_EIP             equ (RING0_STACK_SIZE-20)
293
REG_EAX             equ (RING0_STACK_SIZE-24)
293
REG_EAX             equ (RING0_STACK_SIZE-24)
294
REG_ECX             equ (RING0_STACK_SIZE-28)
294
REG_ECX             equ (RING0_STACK_SIZE-28)
295
REG_EDX             equ (RING0_STACK_SIZE-32)
295
REG_EDX             equ (RING0_STACK_SIZE-32)
296
REG_EBX             equ (RING0_STACK_SIZE-36)
296
REG_EBX             equ (RING0_STACK_SIZE-36)
297
REG_ESP             equ (RING0_STACK_SIZE-40)  ;RING0_STACK_SIZE-20
297
REG_ESP             equ (RING0_STACK_SIZE-40)  ;RING0_STACK_SIZE-20
298
REG_EBP             equ (RING0_STACK_SIZE-44)
298
REG_EBP             equ (RING0_STACK_SIZE-44)
299
REG_ESI             equ (RING0_STACK_SIZE-48)
299
REG_ESI             equ (RING0_STACK_SIZE-48)
300
REG_EDI             equ (RING0_STACK_SIZE-52)
300
REG_EDI             equ (RING0_STACK_SIZE-52)
301
REG_RET             equ (RING0_STACK_SIZE-56)  ;irq0.return
301
REG_RET             equ (RING0_STACK_SIZE-56)  ;irq0.return
302
 
302
 
303
 
303
 
304
PAGE_SIZE           equ 4096
304
PAGE_SIZE           equ 4096
305
 
305
 
306
PG_UNMAP            equ 0x000
306
PG_UNMAP            equ 0x000
307
PG_READ             equ 0x001
307
PG_READ             equ 0x001
308
PG_WRITE            equ 0x002
308
PG_WRITE            equ 0x002
309
PG_USER             equ 0x004
309
PG_USER             equ 0x004
310
PG_PCD              equ 0x008
310
PG_PCD              equ 0x008
311
PG_PWT              equ 0x010
311
PG_PWT              equ 0x010
312
PG_ACCESSED         equ 0x020
312
PG_ACCESSED         equ 0x020
313
PG_DIRTY            equ 0x040
313
PG_DIRTY            equ 0x040
314
PG_PAT              equ 0x080
314
PG_PAT              equ 0x080
315
PG_GLOBAL           equ 0x100
315
PG_GLOBAL           equ 0x100
316
PG_SHARED           equ 0x200
316
PG_SHARED           equ 0x200
317
 
317
 
318
PG_SWR              equ 0x003 ; (PG_WRITE+PG_READ)
318
PG_SWR              equ 0x003 ; (PG_WRITE+PG_READ)
319
PG_UR               equ 0x005 ; (PG_USER+PG_READ)
319
PG_UR               equ 0x005 ; (PG_USER+PG_READ)
320
PG_UWR              equ 0x007 ; (PG_USER+PG_WRITE+PG_READ)
320
PG_UWR              equ 0x007 ; (PG_USER+PG_WRITE+PG_READ)
321
PG_NOCACHE          equ 0x018 ; (PG_PCD+PG_PWT)
321
PG_NOCACHE          equ 0x018 ; (PG_PCD+PG_PWT)
322
 
322
 
323
PDE_LARGE           equ 0x080
323
PDE_LARGE           equ 0x080
324
 
324
 
325
PAT_WB              equ 0x000
325
PAT_WB              equ 0x000
326
PAT_WC              equ 0x008
326
PAT_WC              equ 0x008
327
PAT_UCM             equ 0x010
327
PAT_UCM             equ 0x010
328
PAT_UC              equ 0x018
328
PAT_UC              equ 0x018
329
 
329
 
330
PAT_TYPE_UC         equ 0
330
PAT_TYPE_UC         equ 0
331
PAT_TYPE_WC         equ 1
331
PAT_TYPE_WC         equ 1
332
PAT_TYPE_WB         equ 6
332
PAT_TYPE_WB         equ 6
333
PAT_TYPE_UCM        equ 7
333
PAT_TYPE_UCM        equ 7
334
 
334
 
335
PAT_VALUE           equ 0x00070106; (UC<<24)|(UCM<<16)|(WC<<8)|WB
335
PAT_VALUE           equ 0x00070106; (UC<<24)|(UCM<<16)|(WC<<8)|WB
336
 
336
 
337
;;;;;;;;;;;boot time variables
337
;;;;;;;;;;;boot time variables
338
 
338
 
339
BOOT_BPP            equ 0x9000    ;byte   bits per pixel
339
BOOT_BPP            equ 0x9000    ;byte   bits per pixel
340
BOOT_PITCH          equ 0x9001    ;word   scanline length
340
BOOT_PITCH          equ 0x9001    ;word   scanline length
341
BOOT_VESA_MODE      equ 0x9008    ;word   vesa video mode
341
BOOT_VESA_MODE      equ 0x9008    ;word   vesa video mode
342
BOOT_X_RES          equ 0x900A    ;word   X res
342
BOOT_X_RES          equ 0x900A    ;word   X res
343
BOOT_Y_RES          equ 0x900C    ;word   Y res
343
BOOT_Y_RES          equ 0x900C    ;word   Y res
344
BOOT_BANK_SW        equ 0x9014    ;dword  Vesa 1.2 pm bank switch
344
BOOT_BANK_SW        equ 0x9014    ;dword  Vesa 1.2 pm bank switch
345
BOOT_LFB            equ 0x9018    ;dword  Vesa 2.0 LFB address
345
BOOT_LFB            equ 0x9018    ;dword  Vesa 2.0 LFB address
346
BOOT_MTRR           equ 0x901C    ;byte   0 or 1 : enable MTRR graphics acceleration
346
BOOT_MTRR           equ 0x901C    ;byte   0 or 1 : enable MTRR graphics acceleration
347
BOOT_LAUNCHER_START equ 0x901D    ;byte   (0 or 1) start the first app (right now it's LAUNCHER) after kernel is loaded?
347
BOOT_LAUNCHER_START equ 0x901D    ;byte   (0 or 1) start the first app (right now it's LAUNCHER) after kernel is loaded?
348
BOOT_DEBUG_PRINT    equ 0x901E    ;byte   If nonzero, duplicates debug output to the screen.
348
BOOT_DEBUG_PRINT    equ 0x901E    ;byte   If nonzero, duplicates debug output to the screen.
349
BOOT_DMA            equ 0x901F    ;byte   DMA write : 1=yes, 2=no
349
BOOT_DMA            equ 0x901F    ;byte   DMA write : 1=yes, 2=no
350
BOOT_PCI_DATA       equ 0x9020    ;8bytes pci data
350
BOOT_PCI_DATA       equ 0x9020    ;8bytes pci data
351
BOOT_SHUTDOWN_TYPE  equ 0x9030    ;byte   shutdown type (see sysfn 18.9)
351
BOOT_SHUTDOWN_TYPE  equ 0x9030    ;byte   shutdown type (see sysfn 18.9)
352
BOOT_MEM_AMOUNT     equ 0x9034    ;dword  memory amount
352
BOOT_MEM_AMOUNT     equ 0x9034    ;dword  memory amount
353
 
353
 
354
BOOT_APM_ENTRY      equ 0x9040
354
BOOT_APM_ENTRY      equ 0x9040
355
BOOT_APM_VERSION    equ 0x9044
355
BOOT_APM_VERSION    equ 0x9044
356
BOOT_APM_FLAGS      equ 0x9046
356
BOOT_APM_FLAGS      equ 0x9046
357
BOOT_APM_CODE_32    equ 0x9050
357
BOOT_APM_CODE_32    equ 0x9050
358
BOOT_APM_CODE_16    equ 0x9052
358
BOOT_APM_CODE_16    equ 0x9052
359
BOOT_APM_DATA_16    equ 0x9054
359
BOOT_APM_DATA_16    equ 0x9054
360
BOOT_DEV            equ 0x9056    ; byte
360
BOOT_DEV            equ 0x9056    ; byte
361
BOOT_KERNEL_RESTART equ 0x9058    ; word
361
BOOT_KERNEL_RESTART equ 0x9058    ; word
362
BOOT_BX_FROM_LOAD   equ 0x905A    ; word
362
BOOT_BX_FROM_LOAD   equ 0x905A    ; word
363
; low byte: a,b,c,d -- hdX, r -- rdX
363
; low byte: a,b,c,d -- hdX, r -- rdX
364
; high byte: symbol 'X' as in the line above, e.g. '1', not 1
364
; high byte: symbol 'X' as in the line above, e.g. '1', not 1
365
; see loader_doc.txt for details
365
; see loader_doc.txt for details
-
 
366
BOOT_ACPI_RSDP      equ 0x905C    ; dword
366
 
367
 
367
BOOT_BIOS_HD_CNT     equ 0x907F   ; byte   number of BIOS hard disks
368
BOOT_BIOS_HD_CNT     equ 0x907F   ; byte   number of BIOS hard disks
368
BOOT_BIOS_HD         equ 0x9080   ; Nbytes BIOS hard disks
369
BOOT_BIOS_HD         equ 0x9080   ; Nbytes BIOS hard disks
369
BOOT_MEMMAP_BLOCK_CNT equ 0x9100  ; word   available physical memory map: number of blocks
370
BOOT_MEMMAP_BLOCK_CNT equ 0x9100  ; word   available physical memory map: number of blocks
370
BOOT_MEMMAP_BLOCKS   equ 0x9104   ; available physical memory map: blocks, i.e. e820entry structs
371
BOOT_MEMMAP_BLOCKS   equ 0x9104   ; available physical memory map: blocks, i.e. e820entry structs
371
MAX_MEMMAP_BLOCKS   equ 32
372
MAX_MEMMAP_BLOCKS   equ 32
372
 
373
 
373
TMP_FILE_NAME       equ     0
374
TMP_FILE_NAME       equ     0
374
TMP_CMD_LINE        equ  1024
375
TMP_CMD_LINE        equ  1024
375
TMP_ICON_OFFS       equ  1280
376
TMP_ICON_OFFS       equ  1280
376
 
377
 
377
 
378
 
378
EVENT_REDRAW       equ 0x00000001
379
EVENT_REDRAW       equ 0x00000001
379
EVENT_KEY          equ 0x00000002
380
EVENT_KEY          equ 0x00000002
380
EVENT_BUTTON       equ 0x00000004
381
EVENT_BUTTON       equ 0x00000004
381
EVENT_BACKGROUND   equ 0x00000010
382
EVENT_BACKGROUND   equ 0x00000010
382
EVENT_MOUSE        equ 0x00000020
383
EVENT_MOUSE        equ 0x00000020
383
EVENT_IPC          equ 0x00000040
384
EVENT_IPC          equ 0x00000040
384
EVENT_NETWORK      equ 0x00000080
385
EVENT_NETWORK      equ 0x00000080
385
EVENT_DEBUG        equ 0x00000100
386
EVENT_DEBUG        equ 0x00000100
386
EVENT_NETWORK2     equ 0x00000200
387
EVENT_NETWORK2     equ 0x00000200
387
EVENT_EXTENDED     equ 0x00000400
388
EVENT_EXTENDED     equ 0x00000400
388
 
389
 
389
EV_INTR            equ 1
390
EV_INTR            equ 1
390
 
391
 
391
STDIN_FILENO       equ 0
392
STDIN_FILENO       equ 0
392
STDOUT_FILENO      equ 1
393
STDOUT_FILENO      equ 1
393
STDERR_FILENO      equ 2
394
STDERR_FILENO      equ 2
394
 
395
 
395
SYSTEM_SHUTDOWN    equ 2
396
SYSTEM_SHUTDOWN    equ 2
396
SYSTEM_REBOOT      equ 3
397
SYSTEM_REBOOT      equ 3
397
SYSTEM_RESTART     equ 4
398
SYSTEM_RESTART     equ 4
398
 
399
 
399
BLIT_CLIENT_RELATIVE equ 0x20000000
400
BLIT_CLIENT_RELATIVE equ 0x20000000
400
 
401
 
401
struct SYSCALL_STACK
402
struct SYSCALL_STACK
402
        _eip            dd ?
403
        _eip            dd ?
403
        _edi            dd ?    ;  +4
404
        _edi            dd ?    ;  +4
404
        _esi            dd ?    ;  +8
405
        _esi            dd ?    ;  +8
405
        _ebp            dd ?    ; +12
406
        _ebp            dd ?    ; +12
406
        _esp            dd ?    ; +16
407
        _esp            dd ?    ; +16
407
        _ebx            dd ?    ; +20
408
        _ebx            dd ?    ; +20
408
        _edx            dd ?    ; +24
409
        _edx            dd ?    ; +24
409
        _ecx            dd ?    ; +28
410
        _ecx            dd ?    ; +28
410
        _eax            dd ?    ; +32
411
        _eax            dd ?    ; +32
411
ends
412
ends
412
 
413
 
413
struct  LHEAD
414
struct  LHEAD
414
        next            dd ?   ;next object in list
415
        next            dd ?   ;next object in list
415
        prev            dd ?   ;prev object in list
416
        prev            dd ?   ;prev object in list
416
ends
417
ends
417
 
418
 
418
struct  MUTEX_WAITER
419
struct  MUTEX_WAITER
419
        list    LHEAD
420
        list    LHEAD
420
        task    dd ?
421
        task    dd ?
421
        type    dd ?
422
        type    dd ?
422
ends
423
ends
423
 
424
 
424
struct  MUTEX
425
struct  MUTEX
425
        wait_list       LHEAD
426
        wait_list       LHEAD
426
        count           dd ?
427
        count           dd ?
427
ends
428
ends
428
 
429
 
429
struct  RWSEM
430
struct  RWSEM
430
        wait_list       LHEAD
431
        wait_list       LHEAD
431
        count           dd ?
432
        count           dd ?
432
ends
433
ends
433
 
434
 
434
struct  FUTEX
435
struct  FUTEX
435
        list            LHEAD
436
        list            LHEAD
436
        magic           dd ?
437
        magic           dd ?
437
        handle          dd ?
438
        handle          dd ?
438
        destroy         dd ?
439
        destroy         dd ?
439
 
440
 
440
        wait_list       LHEAD
441
        wait_list       LHEAD
441
        pointer         dd ?
442
        pointer         dd ?
442
        flags           dd ?
443
        flags           dd ?
443
ends
444
ends
444
 
445
 
445
FUTEX_INIT      equ 0
446
FUTEX_INIT      equ 0
446
FUTEX_DESTROY   equ 1
447
FUTEX_DESTROY   equ 1
447
FUTEX_WAIT      equ 2
448
FUTEX_WAIT      equ 2
448
FUTEX_WAKE      equ 3
449
FUTEX_WAKE      equ 3
449
 
450
 
450
struct  FILED
451
struct  FILED
451
        list            LHEAD
452
        list            LHEAD
452
        magic           rd 1
453
        magic           rd 1
453
        handle          rd 1
454
        handle          rd 1
454
        destroy         rd 1
455
        destroy         rd 1
455
        mode            rd 1
456
        mode            rd 1
456
        file            rd 1
457
        file            rd 1
457
ends
458
ends
458
 
459
 
459
struct  PIPE
460
struct  PIPE
460
        pipe_ops        rd 1
461
        pipe_ops        rd 1
461
        buffer          rd 1
462
        buffer          rd 1
462
        readers         rd 1
463
        readers         rd 1
463
        writers         rd 1
464
        writers         rd 1
464
 
465
 
465
        pipe_lock       MUTEX
466
        pipe_lock       MUTEX
466
        count           rd 1
467
        count           rd 1
467
 
468
 
468
        read_end        rd 1
469
        read_end        rd 1
469
        write_end       rd 1
470
        write_end       rd 1
470
        rlist           LHEAD
471
        rlist           LHEAD
471
        wlist           LHEAD
472
        wlist           LHEAD
472
ends
473
ends
473
 
474
 
474
struct  PROC
475
struct  PROC
475
        list            LHEAD
476
        list            LHEAD
476
        thr_list        LHEAD
477
        thr_list        LHEAD
477
        heap_lock       MUTEX
478
        heap_lock       MUTEX
478
        heap_base       rd 1
479
        heap_base       rd 1
479
        heap_top        rd 1
480
        heap_top        rd 1
480
        mem_used        rd 1
481
        mem_used        rd 1
481
        dlls_list_ptr   rd 1
482
        dlls_list_ptr   rd 1
482
        pdt_0_phys      rd 1
483
        pdt_0_phys      rd 1
483
        pdt_1_phys      rd 1
484
        pdt_1_phys      rd 1
484
        io_map_0        rd 1
485
        io_map_0        rd 1
485
        io_map_1        rd 1
486
        io_map_1        rd 1
486
 
487
 
487
        ht_lock         rd 1
488
        ht_lock         rd 1
488
        ht_free         rd 1                ;htab[0] stdin
489
        ht_free         rd 1                ;htab[0] stdin
489
        ht_next         rd 1                ;htab[1] stdout
490
        ht_next         rd 1                ;htab[1] stdout
490
        htab            rd 1024-PROC.htab/4 ;htab[2] stderr
491
        htab            rd 1024-PROC.htab/4 ;htab[2] stderr
491
        pdt_0           rd 1024
492
        pdt_0           rd 1024
492
ends
493
ends
493
 
494
 
494
struct  DBG_REGS
495
struct  DBG_REGS
495
        dr0             dd ?
496
        dr0             dd ?
496
        dr1             dd ?
497
        dr1             dd ?
497
        dr2             dd ?
498
        dr2             dd ?
498
        dr3             dd ?
499
        dr3             dd ?
499
        dr7             dd ?
500
        dr7             dd ?
500
ends
501
ends
501
 
502
 
502
struct  POINT
503
struct  POINT
503
        x       dd ?
504
        x       dd ?
504
        y       dd ?
505
        y       dd ?
505
ends
506
ends
506
 
507
 
507
struct  RECT
508
struct  RECT
508
        left    dd ?
509
        left    dd ?
509
        top     dd ?
510
        top     dd ?
510
        right   dd ?
511
        right   dd ?
511
        bottom  dd ?
512
        bottom  dd ?
512
ends
513
ends
513
 
514
 
514
struct  BOX
515
struct  BOX
515
        left    dd ?
516
        left    dd ?
516
        top     dd ?
517
        top     dd ?
517
        width   dd ?
518
        width   dd ?
518
        height  dd ?
519
        height  dd ?
519
ends
520
ends
520
 
521
 
521
struct  APPDATA
522
struct  APPDATA
522
        app_name        rb 11
523
        app_name        rb 11
523
                        rb 5
524
                        rb 5
524
 
525
 
525
        list            LHEAD           ;+16
526
        list            LHEAD           ;+16
526
        process         dd ?            ;+24
527
        process         dd ?            ;+24
527
        fpu_state       dd ?            ;+28
528
        fpu_state       dd ?            ;+28
528
        exc_handler     dd ?            ;+32
529
        exc_handler     dd ?            ;+32
529
        except_mask     dd ?            ;+36
530
        except_mask     dd ?            ;+36
530
        pl0_stack       dd ?            ;+40
531
        pl0_stack       dd ?            ;+40
531
        cursor          dd ?            ;+44
532
        cursor          dd ?            ;+44
532
        fd_ev           dd ?            ;+48
533
        fd_ev           dd ?            ;+48
533
        bk_ev           dd ?            ;+52
534
        bk_ev           dd ?            ;+52
534
        fd_obj          dd ?            ;+56
535
        fd_obj          dd ?            ;+56
535
        bk_obj          dd ?            ;+60
536
        bk_obj          dd ?            ;+60
536
        saved_esp       dd ?            ;+64
537
        saved_esp       dd ?            ;+64
537
        io_map          rd 2            ;+68
538
        io_map          rd 2            ;+68
538
        dbg_state       dd ?            ;+76
539
        dbg_state       dd ?            ;+76
539
        cur_dir         dd ?            ;+80
540
        cur_dir         dd ?            ;+80
540
        wait_timeout    dd ?            ;+84
541
        wait_timeout    dd ?            ;+84
541
        saved_esp0      dd ?            ;+88
542
        saved_esp0      dd ?            ;+88
542
        wait_begin      dd ?            ;+92   +++
543
        wait_begin      dd ?            ;+92   +++
543
        wait_test       dd ?            ;+96   +++
544
        wait_test       dd ?            ;+96   +++
544
        wait_param      dd ?            ;+100  +++
545
        wait_param      dd ?            ;+100  +++
545
        tls_base        dd ?            ;+104
546
        tls_base        dd ?            ;+104
546
                        dd ?            ;+108
547
                        dd ?            ;+108
547
        event_filter    dd ?            ;+112
548
        event_filter    dd ?            ;+112
548
        draw_bgr_x      dd ?            ;+116
549
        draw_bgr_x      dd ?            ;+116
549
        draw_bgr_y      dd ?            ;+120
550
        draw_bgr_y      dd ?            ;+120
550
                        dd ?            ;+124
551
                        dd ?            ;+124
551
        wnd_shape       dd ?            ;+128
552
        wnd_shape       dd ?            ;+128
552
        wnd_shape_scale dd ?            ;+132
553
        wnd_shape_scale dd ?            ;+132
553
                        dd ?            ;+136
554
                        dd ?            ;+136
554
                        dd ?            ;+140
555
                        dd ?            ;+140
555
        saved_box       BOX             ;+144
556
        saved_box       BOX             ;+144
556
        ipc_start       dd ?            ;+160
557
        ipc_start       dd ?            ;+160
557
        ipc_size        dd ?            ;+164
558
        ipc_size        dd ?            ;+164
558
        event_mask      dd ?            ;+168
559
        event_mask      dd ?            ;+168
559
        debugger_slot   dd ?            ;+172
560
        debugger_slot   dd ?            ;+172
560
        terminate_protection dd ?       ;+176
561
        terminate_protection dd ?       ;+176
561
        keyboard_mode   db ?            ;+180
562
        keyboard_mode   db ?            ;+180
562
        captionEncoding db ?
563
        captionEncoding db ?
563
                        rb 2
564
                        rb 2
564
        exec_params     dd ?            ;+184
565
        exec_params     dd ?            ;+184
565
        dbg_event_mem   dd ?            ;+188
566
        dbg_event_mem   dd ?            ;+188
566
        dbg_regs        DBG_REGS        ;+192
567
        dbg_regs        DBG_REGS        ;+192
567
        wnd_caption     dd ?            ;+212
568
        wnd_caption     dd ?            ;+212
568
        wnd_clientbox   BOX             ;+216
569
        wnd_clientbox   BOX             ;+216
569
        priority        dd ?            ;+232
570
        priority        dd ?            ;+232
570
        in_schedule     LHEAD           ;+236
571
        in_schedule     LHEAD           ;+236
571
ends
572
ends
572
 
573
 
573
APP_OBJ_OFFSET  equ 48
574
APP_OBJ_OFFSET  equ 48
574
APP_EV_OFFSET   equ 40
575
APP_EV_OFFSET   equ 40
575
 
576
 
576
struct  TASKDATA
577
struct  TASKDATA
577
        event_mask      dd ?
578
        event_mask      dd ?
578
        pid             dd ?
579
        pid             dd ?
579
                        dw ?
580
                        dw ?
580
        state           db ?
581
        state           db ?
581
                        db ?
582
                        db ?
582
                        dw ?
583
                        dw ?
583
        wnd_number      db ?
584
        wnd_number      db ?
584
                        db ?
585
                        db ?
585
        mem_start       dd ?
586
        mem_start       dd ?
586
        counter_sum     dd ?
587
        counter_sum     dd ?
587
        counter_add     dd ?
588
        counter_add     dd ?
588
        cpu_usage       dd ?
589
        cpu_usage       dd ?
589
ends
590
ends
590
 
591
 
591
TSTATE_RUNNING        = 0
592
TSTATE_RUNNING        = 0
592
TSTATE_RUN_SUSPENDED  = 1
593
TSTATE_RUN_SUSPENDED  = 1
593
TSTATE_WAIT_SUSPENDED = 2
594
TSTATE_WAIT_SUSPENDED = 2
594
TSTATE_ZOMBIE         = 3
595
TSTATE_ZOMBIE         = 3
595
TSTATE_TERMINATING    = 4
596
TSTATE_TERMINATING    = 4
596
TSTATE_WAITING        = 5
597
TSTATE_WAITING        = 5
597
TSTATE_FREE           = 9
598
TSTATE_FREE           = 9
598
 
599
 
599
; constants definition
600
; constants definition
600
WSTATE_NORMAL    = 00000000b
601
WSTATE_NORMAL    = 00000000b
601
WSTATE_MAXIMIZED = 00000001b
602
WSTATE_MAXIMIZED = 00000001b
602
WSTATE_MINIMIZED = 00000010b
603
WSTATE_MINIMIZED = 00000010b
603
WSTATE_ROLLEDUP  = 00000100b
604
WSTATE_ROLLEDUP  = 00000100b
604
 
605
 
605
WSTATE_REDRAW    = 00000001b
606
WSTATE_REDRAW    = 00000001b
606
WSTATE_WNDDRAWN  = 00000010b
607
WSTATE_WNDDRAWN  = 00000010b
607
 
608
 
608
WSTYLE_HASCAPTION     = 00010000b
609
WSTYLE_HASCAPTION     = 00010000b
609
WSTYLE_CLIENTRELATIVE = 00100000b
610
WSTYLE_CLIENTRELATIVE = 00100000b
610
 
611
 
611
ZPOS_DESKTOP            = -2
612
ZPOS_DESKTOP            = -2
612
ZPOS_ALWAYS_BACK        = -1
613
ZPOS_ALWAYS_BACK        = -1
613
ZPOS_NORMAL             = 0
614
ZPOS_NORMAL             = 0
614
ZPOS_ALWAYS_TOP         = 1     ;ZPOS_ALWAYS_TOP is always last and has max number!
615
ZPOS_ALWAYS_TOP         = 1     ;ZPOS_ALWAYS_TOP is always last and has max number!
615
; structures definition
616
; structures definition
616
struct  WDATA
617
struct  WDATA
617
        box             BOX
618
        box             BOX
618
        cl_workarea     dd ?
619
        cl_workarea     dd ?
619
        cl_titlebar     dd ?
620
        cl_titlebar     dd ?
620
        cl_frames       dd ?
621
        cl_frames       dd ?
621
        z_modif         db ?
622
        z_modif         db ?
622
        fl_wstate       db ?
623
        fl_wstate       db ?
623
        fl_wdrawn       db ?
624
        fl_wdrawn       db ?
624
        fl_redraw       db ?
625
        fl_redraw       db ?
625
ends
626
ends
626
 
627
 
627
label WDATA.fl_wstyle byte at WDATA.cl_workarea + 3
628
label WDATA.fl_wstyle byte at WDATA.cl_workarea + 3
628
 
629
 
629
 
630
 
630
struct  SYS_VARS
631
struct  SYS_VARS
631
        bpp             dd ?
632
        bpp             dd ?
632
        scanline        dd ?
633
        scanline        dd ?
633
        vesa_mode       dd ?
634
        vesa_mode       dd ?
634
        x_res           dd ?
635
        x_res           dd ?
635
        y_res           dd ?
636
        y_res           dd ?
636
ends
637
ends
637
 
638
 
638
struct  APPOBJ                  ; common object header
639
struct  APPOBJ                  ; common object header
639
        magic           dd ?    ;
640
        magic           dd ?    ;
640
        destroy         dd ?    ; internal destructor
641
        destroy         dd ?    ; internal destructor
641
        fd              dd ?    ; next object in list
642
        fd              dd ?    ; next object in list
642
        bk              dd ?    ; prev object in list
643
        bk              dd ?    ; prev object in list
643
        pid             dd ?    ; owner id
644
        pid             dd ?    ; owner id
644
ends
645
ends
645
 
646
 
646
struct  CURSOR          APPOBJ
647
struct  CURSOR          APPOBJ
647
        base            dd ?   ;allocated memory
648
        base            dd ?   ;allocated memory
648
        hot_x           dd ?   ;hotspot coords
649
        hot_x           dd ?   ;hotspot coords
649
        hot_y           dd ?
650
        hot_y           dd ?
650
 
651
 
651
        list_next       dd ?   ;next cursor in cursor list
652
        list_next       dd ?   ;next cursor in cursor list
652
        list_prev       dd ?   ;prev cursor in cursor list
653
        list_prev       dd ?   ;prev cursor in cursor list
653
        dev_obj         dd ?   ;device depended data
654
        dev_obj         dd ?   ;device depended data
654
ends
655
ends
655
 
656
 
656
 
657
 
657
struct  EVENT           APPOBJ
658
struct  EVENT           APPOBJ
658
        id              dd ?   ;event uid
659
        id              dd ?   ;event uid
659
        state           dd ?   ;internal flags
660
        state           dd ?   ;internal flags
660
        code            dd ?
661
        code            dd ?
661
                        rd 5
662
                        rd 5
662
ends
663
ends
663
 
664
 
664
 
665
 
665
struct  SMEM
666
struct  SMEM
666
        bk              dd ?
667
        bk              dd ?
667
        fd              dd ?    ;+4
668
        fd              dd ?    ;+4
668
        base            dd ?    ;+8
669
        base            dd ?    ;+8
669
        size            dd ?    ;+12
670
        size            dd ?    ;+12
670
        access          dd ?    ;+16
671
        access          dd ?    ;+16
671
        refcount        dd ?    ;+20
672
        refcount        dd ?    ;+20
672
        name            rb 32   ;+24
673
        name            rb 32   ;+24
673
ends
674
ends
674
 
675
 
675
struct  SMAP            APPOBJ
676
struct  SMAP            APPOBJ
676
        base            dd ?   ;mapped base
677
        base            dd ?   ;mapped base
677
        parent          dd ?   ;SMEM
678
        parent          dd ?   ;SMEM
678
ends
679
ends
679
 
680
 
680
struct  DLLDESCR
681
struct  DLLDESCR
681
        bk              dd ?
682
        bk              dd ?
682
        fd              dd ?    ;+4
683
        fd              dd ?    ;+4
683
        data            dd ?    ;+8
684
        data            dd ?    ;+8
684
        size            dd ?    ;+12
685
        size            dd ?    ;+12
685
        timestamp       dq ?
686
        timestamp       dq ?
686
        refcount        dd ?
687
        refcount        dd ?
687
        defaultbase     dd ?
688
        defaultbase     dd ?
688
        coff_hdr        dd ?
689
        coff_hdr        dd ?
689
        symbols_ptr     dd ?
690
        symbols_ptr     dd ?
690
        symbols_num     dd ?
691
        symbols_num     dd ?
691
        symbols_lim     dd ?
692
        symbols_lim     dd ?
692
        exports         dd ?   ;export table
693
        exports         dd ?   ;export table
693
        name            rb 260
694
        name            rb 260
694
ends
695
ends
695
 
696
 
696
struct  HDLL
697
struct  HDLL
697
        fd              dd ?   ;next object in list
698
        fd              dd ?   ;next object in list
698
        bk              dd ?   ;prev object in list
699
        bk              dd ?   ;prev object in list
699
        pid             dd ?   ;owner id
700
        pid             dd ?   ;owner id
700
 
701
 
701
        base            dd ?   ;mapped base
702
        base            dd ?   ;mapped base
702
        size            dd ?   ;mapped size
703
        size            dd ?   ;mapped size
703
        refcount        dd ?   ;reference counter for this process and this lib
704
        refcount        dd ?   ;reference counter for this process and this lib
704
        parent          dd ?   ;DLLDESCR
705
        parent          dd ?   ;DLLDESCR
705
ends
706
ends
706
 
707
 
707
 
708
 
708
struct  BOOT_DATA
709
struct  BOOT_DATA
709
        bpp             dd ?
710
        bpp             dd ?
710
        scanline        dd ?
711
        scanline        dd ?
711
        vesa_mode       dd ?
712
        vesa_mode       dd ?
712
        x_res           dd ?
713
        x_res           dd ?
713
        y_res           dd ?
714
        y_res           dd ?
714
        mouse_port      dd ?
715
        mouse_port      dd ?
715
        bank_switch     dd ?
716
        bank_switch     dd ?
716
        lfb             dd ?
717
        lfb             dd ?
717
        vesa_mem        dd ?
718
        vesa_mem        dd ?
718
        log             dd ?
719
        log             dd ?
719
        direct_lfb      dd ?
720
        direct_lfb      dd ?
720
        pci_data        dd ?
721
        pci_data        dd ?
721
                        dd ?
722
                        dd ?
722
        ide_base        dd ?
723
        ide_base        dd ?
723
        mem_amount      dd ?
724
        mem_amount      dd ?
724
        pages_count     dd ?
725
        pages_count     dd ?
725
        pagemap_size    dd ?
726
        pagemap_size    dd ?
726
        kernel_max      dd ?
727
        kernel_max      dd ?
727
        kernel_pages    dd ?
728
        kernel_pages    dd ?
728
        kernel_tables   dd ?
729
        kernel_tables   dd ?
729
 
730
 
730
        cpu_vendor      dd ?
731
        cpu_vendor      dd ?
731
                        dd ?
732
                        dd ?
732
                        dd ?
733
                        dd ?
733
        cpu_sign        dd ?
734
        cpu_sign        dd ?
734
        cpu_info        dd ?
735
        cpu_info        dd ?
735
        cpu_caps        dd ?
736
        cpu_caps        dd ?
736
                        dd ?
737
                        dd ?
737
                        dd ?
738
                        dd ?
738
ends
739
ends
739
 
740
 
740
struct  display_t
741
struct  display_t
741
        x               dd ?
742
        x               dd ?
742
        y               dd ?
743
        y               dd ?
743
        width           dd ?
744
        width           dd ?
744
        height          dd ?
745
        height          dd ?
745
        bits_per_pixel  dd ?
746
        bits_per_pixel  dd ?
746
        vrefresh        dd ?
747
        vrefresh        dd ?
747
        current_lfb     dd ?
748
        current_lfb     dd ?
748
        lfb_pitch       dd ?
749
        lfb_pitch       dd ?
749
 
750
 
750
        win_map_lock    RWSEM
751
        win_map_lock    RWSEM
751
        win_map         dd ?
752
        win_map         dd ?
752
        win_map_pitch   dd ?
753
        win_map_pitch   dd ?
753
        win_map_size    dd ?
754
        win_map_size    dd ?
754
 
755
 
755
        modes           dd ?
756
        modes           dd ?
756
        ddev            dd ?
757
        ddev            dd ?
757
        connector       dd ?
758
        connector       dd ?
758
        crtc            dd ?
759
        crtc            dd ?
759
 
760
 
760
        cr_list.next    dd ?
761
        cr_list.next    dd ?
761
        cr_list.prev    dd ?
762
        cr_list.prev    dd ?
762
 
763
 
763
        cursor          dd ?
764
        cursor          dd ?
764
 
765
 
765
        init_cursor     dd ?
766
        init_cursor     dd ?
766
        select_cursor   dd ?
767
        select_cursor   dd ?
767
        show_cursor     dd ?
768
        show_cursor     dd ?
768
        move_cursor     dd ?
769
        move_cursor     dd ?
769
        restore_cursor  dd ?
770
        restore_cursor  dd ?
770
        disable_mouse   dd ?
771
        disable_mouse   dd ?
771
        mask_seqno      dd ?
772
        mask_seqno      dd ?
772
        check_mouse     dd ?
773
        check_mouse     dd ?
773
        check_m_pixel   dd ?
774
        check_m_pixel   dd ?
774
 
775
 
775
        bytes_per_pixel dd ?
776
        bytes_per_pixel dd ?
776
ends
777
ends
777
 
778
 
778
struct  DISPMODE
779
struct  DISPMODE
779
        width   dw ?
780
        width   dw ?
780
        height  dw ?
781
        height  dw ?
781
        bpp     dw ?
782
        bpp     dw ?
782
        freq    dw ?
783
        freq    dw ?
783
ends
784
ends
784
 
785
 
785
 
786
 
786
struct  PCIDEV
787
struct  PCIDEV
787
        bk              dd ?
788
        bk              dd ?
788
        fd              dd ?
789
        fd              dd ?
789
        vendor_device_id dd ?
790
        vendor_device_id dd ?
790
        class           dd ?
791
        class           dd ?
791
        devfn           db ?
792
        devfn           db ?
792
        bus             db ?
793
        bus             db ?
793
                        rb 2
794
                        rb 2
794
        owner           dd ? ; pointer to SRV or 0
795
        owner           dd ? ; pointer to SRV or 0
795
ends
796
ends
796
 
797
 
797
struct  IDE_DATA
798
struct  IDE_DATA
798
        ProgrammingInterface dd ?
799
        ProgrammingInterface dd ?
799
        Interrupt            dw ?
800
        Interrupt            dw ?
800
        RegsBaseAddres       dw ?
801
        RegsBaseAddres       dw ?
801
        BAR0_val             dw ?
802
        BAR0_val             dw ?
802
        BAR1_val             dw ?
803
        BAR1_val             dw ?
803
        BAR2_val             dw ?
804
        BAR2_val             dw ?
804
        BAR3_val             dw ?
805
        BAR3_val             dw ?
805
        dma_hdd_channel_1    db ?
806
        dma_hdd_channel_1    db ?
806
        dma_hdd_channel_2    db ?
807
        dma_hdd_channel_2    db ?
807
        pcidev               dd ?       ; pointer to corresponding PCIDEV structure
808
        pcidev               dd ?       ; pointer to corresponding PCIDEV structure
808
ends
809
ends
809
 
810
 
810
struct  IDE_CACHE
811
struct  IDE_CACHE
811
        pointer              dd ?
812
        pointer              dd ?
812
        size                 dd ?   ; not use
813
        size                 dd ?   ; not use
813
        data_pointer         dd ?
814
        data_pointer         dd ?
814
        system_data_size     dd ?   ; not use
815
        system_data_size     dd ?   ; not use
815
        appl_data_size       dd ?   ; not use
816
        appl_data_size       dd ?   ; not use
816
        system_data          dd ?
817
        system_data          dd ?
817
        appl_data            dd ?
818
        appl_data            dd ?
818
        system_sad_size      dd ?
819
        system_sad_size      dd ?
819
        appl_sad_size        dd ?
820
        appl_sad_size        dd ?
820
        search_start         dd ?
821
        search_start         dd ?
821
        appl_search_start    dd ?
822
        appl_search_start    dd ?
822
ends
823
ends
823
 
824
 
824
struct  IDE_DEVICE
825
struct  IDE_DEVICE
825
        UDMA_possible_modes  db ?
826
        UDMA_possible_modes  db ?
826
        UDMA_set_mode        db ?
827
        UDMA_set_mode        db ?
827
ends
828
ends
828
 
829
 
829
; The following macro assume that we are on uniprocessor machine.
830
; The following macro assume that we are on uniprocessor machine.
830
; Serious work is needed for multiprocessor machines.
831
; Serious work is needed for multiprocessor machines.
831
macro spin_lock_irqsave spinlock
832
macro spin_lock_irqsave spinlock
832
{
833
{
833
        pushf
834
        pushf
834
        cli
835
        cli
835
}
836
}
836
macro spin_unlock_irqrestore spinlock
837
macro spin_unlock_irqrestore spinlock
837
{
838
{
838
        popf
839
        popf
839
}
840
}
840
macro spin_lock_irq spinlock
841
macro spin_lock_irq spinlock
841
{
842
{
842
        cli
843
        cli
843
}
844
}
844
macro spin_unlock_irq spinlock
845
macro spin_unlock_irq spinlock
845
{
846
{
846
        sti
847
        sti
847
}
848
}
848
 
849
 
849
struct  MEM_STATE
850
struct  MEM_STATE
850
        mutex           MUTEX
851
        mutex           MUTEX
851
        smallmap        dd ?
852
        smallmap        dd ?
852
        treemap         dd ?
853
        treemap         dd ?
853
        topsize         dd ?
854
        topsize         dd ?
854
        top             dd ?
855
        top             dd ?
855
        smallbins       rd 4*32
856
        smallbins       rd 4*32
856
        treebins        rd 32
857
        treebins        rd 32
857
ends
858
ends
858
 
859
 
859
struct  PG_DATA
860
struct  PG_DATA
860
        mem_amount      dd ?
861
        mem_amount      dd ?
861
        vesa_mem        dd ?
862
        vesa_mem        dd ?
862
        pages_count     dd ?
863
        pages_count     dd ?
863
        pages_free      dd ?
864
        pages_free      dd ?
864
        pages_faults    dd ?
865
        pages_faults    dd ?
865
        pagemap_size    dd ?
866
        pagemap_size    dd ?
866
        kernel_pages    dd ?
867
        kernel_pages    dd ?
867
        kernel_tables   dd ?
868
        kernel_tables   dd ?
868
        sys_page_dir    dd ?
869
        sys_page_dir    dd ?
869
        mutex           MUTEX
870
        mutex           MUTEX
870
ends
871
ends
871
 
872
 
872
struct  SRV
873
struct  SRV
873
        srv_name        rb 16    ;ASCIIZ string
874
        srv_name        rb 16    ;ASCIIZ string
874
        magic           dd ?     ;+0x10 ;'SRV '
875
        magic           dd ?     ;+0x10 ;'SRV '
875
        size            dd ?     ;+0x14 ;size of structure SRV
876
        size            dd ?     ;+0x14 ;size of structure SRV
876
        fd              dd ?     ;+0x18 ;next SRV descriptor
877
        fd              dd ?     ;+0x18 ;next SRV descriptor
877
        bk              dd ?     ;+0x1C ;prev SRV descriptor
878
        bk              dd ?     ;+0x1C ;prev SRV descriptor
878
        base            dd ?     ;+0x20 ;service base address
879
        base            dd ?     ;+0x20 ;service base address
879
        entry           dd ?     ;+0x24 ;service START function
880
        entry           dd ?     ;+0x24 ;service START function
880
        srv_proc        dd ?     ;+0x28 ;user mode service handler
881
        srv_proc        dd ?     ;+0x28 ;user mode service handler
881
        srv_proc_ex     dd ?     ;+0x2C ;kernel mode service handler
882
        srv_proc_ex     dd ?     ;+0x2C ;kernel mode service handler
882
ends
883
ends
883
 
884
 
884
struct USBSRV
885
struct USBSRV
885
        srv             SRV
886
        srv             SRV
886
        usb_func        dd ?
887
        usb_func        dd ?
887
ends
888
ends
888
 
889
 
889
struct USBFUNC
890
struct USBFUNC
890
        strucsize       dd ?
891
        strucsize       dd ?
891
        add_device      dd ?
892
        add_device      dd ?
892
        device_disconnect dd ?
893
        device_disconnect dd ?
893
ends
894
ends
894
 
895
 
895
DRV_ENTRY    equ  1
896
DRV_ENTRY    equ  1
896
DRV_EXIT     equ -1
897
DRV_EXIT     equ -1
897
 
898
 
898
struct  COFF_HEADER
899
struct  COFF_HEADER
899
        machine         dw ?
900
        machine         dw ?
900
        nSections       dw ?
901
        nSections       dw ?
901
        DataTime        dd ?
902
        DataTime        dd ?
902
        pSymTable       dd ?
903
        pSymTable       dd ?
903
        nSymbols        dd ?
904
        nSymbols        dd ?
904
        optHeader       dw ?
905
        optHeader       dw ?
905
        flags           dw ?
906
        flags           dw ?
906
ends
907
ends
907
 
908
 
908
struct  COFF_SECTION
909
struct  COFF_SECTION
909
        Name            rb 8
910
        Name            rb 8
910
        VirtualSize     dd ?
911
        VirtualSize     dd ?
911
        VirtualAddress  dd ?
912
        VirtualAddress  dd ?
912
        SizeOfRawData   dd ?
913
        SizeOfRawData   dd ?
913
        PtrRawData      dd ?
914
        PtrRawData      dd ?
914
        PtrReloc        dd ?
915
        PtrReloc        dd ?
915
        PtrLinenumbers  dd ?
916
        PtrLinenumbers  dd ?
916
        NumReloc        dw ?
917
        NumReloc        dw ?
917
        NumLinenum      dw ?
918
        NumLinenum      dw ?
918
        Characteristics dd ?
919
        Characteristics dd ?
919
ends
920
ends
920
 
921
 
921
struct  COFF_RELOC
922
struct  COFF_RELOC
922
        VirtualAddress  dd ?
923
        VirtualAddress  dd ?
923
        SymIndex        dd ?
924
        SymIndex        dd ?
924
        Type            dw ?
925
        Type            dw ?
925
ends
926
ends
926
 
927
 
927
struct  COFF_SYM
928
struct  COFF_SYM
928
        Name            rb 8
929
        Name            rb 8
929
        Value           dd ?
930
        Value           dd ?
930
        SectionNumber   dw ?
931
        SectionNumber   dw ?
931
        Type            dw ?
932
        Type            dw ?
932
        StorageClass    db ?
933
        StorageClass    db ?
933
        NumAuxSymbols   db ?
934
        NumAuxSymbols   db ?
934
ends
935
ends
935
 
936
 
936
struct  STRIPPED_PE_HEADER
937
struct  STRIPPED_PE_HEADER
937
        Signature           dw ?
938
        Signature           dw ?
938
        Characteristics     dw ?
939
        Characteristics     dw ?
939
        AddressOfEntryPoint dd ?
940
        AddressOfEntryPoint dd ?
940
        ImageBase           dd ?
941
        ImageBase           dd ?
941
        SectionAlignmentLog db ?
942
        SectionAlignmentLog db ?
942
        FileAlignmentLog    db ?
943
        FileAlignmentLog    db ?
943
        MajorOSVersion      db ?
944
        MajorOSVersion      db ?
944
        MinorOSVersion      db ?
945
        MinorOSVersion      db ?
945
        SizeOfImage         dd ?
946
        SizeOfImage         dd ?
946
        SizeOfStackReserve  dd ?
947
        SizeOfStackReserve  dd ?
947
        SizeOfHeapReserve   dd ?
948
        SizeOfHeapReserve   dd ?
948
        SizeOfHeaders       dd ?
949
        SizeOfHeaders       dd ?
949
        Subsystem           db ?
950
        Subsystem           db ?
950
        NumberOfRvaAndSizes db ?
951
        NumberOfRvaAndSizes db ?
951
        NumberOfSections    dw ?
952
        NumberOfSections    dw ?
952
ends
953
ends
953
STRIPPED_PE_SIGNATURE = 0x4503 ; 'PE' xor 'S'
954
STRIPPED_PE_SIGNATURE = 0x4503 ; 'PE' xor 'S'
954
SPE_DIRECTORY_IMPORT    = 0
955
SPE_DIRECTORY_IMPORT    = 0
955
SPE_DIRECTORY_EXPORT    = 1
956
SPE_DIRECTORY_EXPORT    = 1
956
SPE_DIRECTORY_BASERELOC = 2
957
SPE_DIRECTORY_BASERELOC = 2
957
 
958
 
958
struct  IOCTL
959
struct  IOCTL
959
        handle          dd ?
960
        handle          dd ?
960
        io_code         dd ?
961
        io_code         dd ?
961
        input           dd ?
962
        input           dd ?
962
        inp_size        dd ?
963
        inp_size        dd ?
963
        output          dd ?
964
        output          dd ?
964
        out_size        dd ?
965
        out_size        dd ?
965
ends
966
ends
966
 
967
 
967
struct  IRQH
968
struct  IRQH
968
        list            LHEAD
969
        list            LHEAD
969
        handler         dd ?   ;handler roututine
970
        handler         dd ?   ;handler roututine
970
        data            dd ?   ;user-specific data
971
        data            dd ?   ;user-specific data
971
        num_ints        dd ?   ;how many times handled
972
        num_ints        dd ?   ;how many times handled
972
ends
973
ends
973
 
974
 
974
struct DQ
975
struct DQ
975
        lo dd ?
976
        lo dd ?
976
        hi dd ?
977
        hi dd ?
977
ends
978
ends
978
 
979
 
979
struct e820entry
980
struct e820entry
980
        addr DQ ?
981
        addr DQ ?
981
        size DQ ?
982
        size DQ ?
982
        type dd ?
983
        type dd ?
983
ends
984
ends
984
 
985
 
985
;;;;;;;;;;;boot>
986
;;;;;;;;;;;boot>
986
 
987
 
987
;;;;;;;;;;;boot>
988
;;;;;;;;;;;boot>
988
 
989
 
989
;;;;;;;;;;;boot>
990
;;;;;;;;;;;boot>
990
 
991
 
991
;;;;;;;;;;;boot>
992
;;;;;;;;;;;boot>
992
 
993
 
993
;;;;;;;;;;;boot>
994
;;;;;;;;;;;boot>
994
 
995
 
995
;;;;;;;;;;;boot>
996
;;;;;;;;;;;boot>