Subversion Repositories Kolibri OS

Rev

Rev 10008 | Details | Compare with Previous | Last modification | View Log | RSS feed

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