Subversion Repositories Kolibri OS

Rev

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

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