Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
2434 Serge 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
5565 serge 3
;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;;
2434 Serge 4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
8
$Revision: 6339 $
9
 
10
 
11
keymap:
12
 
13
     db   '6',27
14
     db   '1234567890-=',8,9
15
     db   'qwertyuiop[]',13
16
     db   '~asdfghjkl;',39,96,0,'\zxcvbnm,./',0,'45 '
17
     db   '@234567890123',180,178,184,'6',176,'7'
18
     db   179,'8',181,177,183,185,182
19
     db   'AB
20
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
21
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
22
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
23
 
24
keymap_shift:
25
     db   '6',27
26
     db   '!@#$%^&*()_+',8,9
27
     db   'QWERTYUIOP{}',13
28
     db   '~ASDFGHJKL:"~',0,'|ZXCVBNM<>?',0,'45 '
29
     db   '@234567890123',180,178,184,'6',176,'7'
30
     db   179,'8',181,177,183,185,182
31
     db   'AB>D',255,'FGHIJKLMNOPQRSTUVWXYZ'
32
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
33
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
34
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
35
 
36
 
37
keymap_alt:
38
     db   ' ',27
39
     db   ' @ $  {[]}\ ',8,9
40
     db   '            ',13
41
     db   '             ',0,'           ',0,'4',0,' '
42
     db   '             ',180,178,184,'6',176,'7'
43
     db   179,'8',181,177,183,185,182
44
     db   'ABCD',255,'FGHIJKLMNOPQRSTUVWXYZ'
45
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
46
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
47
     db   'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
48
 
49
 
50
 
51
if lang eq ru
4265 Serge 52
  boot_initirq      cp866 'Инициализация IRQ',0
53
  boot_picinit      cp866 'Инициализация PIC',0
4287 Serge 54
  boot_v86machine   cp866 'Инициализация системной V86 машины',0
4265 Serge 55
  boot_inittimer    cp866 'Инициализация системного таймера (IRQ0)',0
56
  boot_initapic     cp866 'Попытка инициализации APIC',0
57
  boot_enableirq    cp866 'Включить прерывания 2, 13',0
58
  boot_disabling_ide cp866 'Запрещение прерываний в контроллере IDE',0
59
  boot_enabling_ide cp866 'Разрешение прерываний в контроллере IDE',0
60
  boot_set_int_IDE  cp866 'Установка обработчиков прерываний IDE',0
61
  boot_detectfloppy cp866 'Поиск floppy дисководов',0
62
  boot_detecthdcd   cp866 'Поиск жестких дисков и ATAPI приводов',0
63
  boot_getcache     cp866 'Получение памяти для кэша',0
64
  boot_detectpart   cp866 'Поиск разделов на дисковых устройствах',0
65
  boot_init_sys     cp866 'Инициализация системного каталога /sys',0
66
  boot_loadlibs     cp866 'Загрузка библиотек (.obj)',0
67
  boot_memdetect    cp866 'Количество оперативной памяти','     ',' Мб',0
68
  boot_tss          cp866 'Установка TSSs',0
69
  boot_cpuid        cp866 'Чтение CPUIDs',0
70
;  boot_devices      cp866 'Поиск устройств',0
71
  boot_timer        cp866 'Установка таймера',0
4287 Serge 72
  boot_initramdisk  cp866 'Инициализация рамдиска',0
4265 Serge 73
  boot_irqs         cp866 'Переопределение IRQ',0
74
  boot_setmouse     cp866 'Установка мыши',0
75
  boot_windefs      cp866 'Установка настроек окон по умолчанию',0
76
  boot_bgr          cp866 'Установка фона',0
77
  boot_resirqports  cp866 'Резервирование IRQ и портов',0
78
  boot_setrports    cp866 'Установка адресов IRQ',0
79
  boot_setostask    cp866 'Создание процесса ядра',0
80
  boot_allirqs      cp866 'Открытие всех IRQ',0
81
  boot_tsc          cp866 'Чтение TSC',0
82
  boot_cpufreq      cp866 'Частота процессора ','    ',' МГц',0
83
  boot_pal_ega      cp866 'Установка EGA/CGA 320x200 палитры',0
84
  boot_pal_vga      cp866 'Установка VGA 640x480 палитры',0
85
  boot_failed       cp866 'Загрузка первого приложения не удалась',0
86
  boot_mtrr         cp866 'Установка MTRR',0
3555 Serge 87
 
4265 Serge 88
  boot_APIC_found   cp866 'APIC включен', 0
89
  boot_APIC_nfound  cp866 'APIC не найден', 0
2434 Serge 90
if preboot_blogesc
4265 Serge 91
  boot_tasking      cp866 'Все готово для запуска, нажмитре ESC для старта',0
2434 Serge 92
end if
3500 Serge 93
else if lang eq sp
94
  include 'data32sp.inc'
4265 Serge 95
else if lang eq et
96
  include 'data32et.inc'
2434 Serge 97
else
2987 Serge 98
  boot_initirq      db   'Initialize IRQ',0
99
  boot_picinit      db   'Initialize PIC',0
100
  boot_v86machine   db   'Initialize system V86 machine',0
101
  boot_inittimer    db   'Initialize system timer (IRQ0)',0
4287 Serge 102
  boot_initramdisk  db   'Initialize ramdisk',0
2987 Serge 103
  boot_initapic     db   'Try to initialize APIC',0
3908 Serge 104
  boot_enableirq    db   'Enable interrupts 2, 13',0
105
  boot_disabling_ide db   'Disable interrupts in IDE controller',0
106
  boot_enabling_ide db   'Enable interrupts in IDE controller',0
107
  boot_set_int_IDE  db   'Set handler of interrupts for IDE',0
2987 Serge 108
  boot_detectfloppy db   'Search floppy drives',0
109
  boot_detecthdcd   db   'Search hard drives and ATAPI drives',0
110
  boot_getcache     db   'Get memory for cache',0
111
  boot_detectpart   db   'Search partitions on disk devices',0
112
  boot_init_sys     db   'Initialize system directory /sys',0
113
  boot_loadlibs     db   'Loading librares (.obj)',0
2434 Serge 114
  boot_memdetect    db   'Determining amount of memory',0
115
  boot_tss          db   'Setting TSSs',0
116
  boot_cpuid        db   'Reading CPUIDs',0
2987 Serge 117
;  boot_devices      db   'Detecting devices',0
2434 Serge 118
  boot_setmouse     db   'Setting mouse',0
119
  boot_windefs      db   'Setting window defaults',0
120
  boot_bgr          db   'Calculating background',0
121
  boot_resirqports  db   'Reserving IRQs & ports',0
122
  boot_setostask    db   'Setting OS task',0
123
  boot_allirqs      db   'Unmasking IRQs',0
124
  boot_tsc          db   'Reading TSC',0
125
  boot_cpufreq      db   'CPU frequency is ','    ',' MHz',0
126
  boot_pal_ega      db   'Setting EGA/CGA 320x200 palette',0
127
  boot_pal_vga      db   'Setting VGA 640x480 palette',0
128
  boot_failed       db   'Failed to start first app',0
129
  boot_mtrr         db   'Setting MTRR',0
3555 Serge 130
 
2987 Serge 131
  boot_APIC_found   db   'APIC enabled', 0
132
  boot_APIC_nfound  db   'APIC not found', 0
2434 Serge 133
if preboot_blogesc
134
  boot_tasking      db   'All set - press ESC to start',0
135
end if
136
end if
137
 
138
;new_process_loading db 'K : New Process - loading',13,10,0
139
;new_process_running db 'K : New Process - done',13,10,0
140
start_not_enough_memory db 'K : New Process - not enough memory',13,10,0
141
 
142
msg_unresolved db 'unresolved ',0
5201 serge 143
;msg_module     db 'in module ',0
144
;if ~ lang eq sp
145
;msg_version    db 'incompatible driver version',13,10,0
146
;msg_www        db 'please visit www.kolibrios.org',13,10,0
147
;end if
2434 Serge 148
msg_CR         db  13,10,0
149
 
5201 serge 150
szPS2MDriver    db '/rd/1/drivers/PS2MOUSE.SYS',0
2434 Serge 151
;szCOM_MDriver   db 'COM_MOUSE',0
5201 serge 152
szVidintel      db '/rd/1/drivers/vidintel.sys',0
2434 Serge 153
szUSB           db 'USB',0
154
 
155
szEXPORTS      db 'EXPORTS',0
156
sz_EXPORTS     db '_EXPORTS',0
157
 
158
szIMPORTS      db 'IMPORTS',0
159
 
160
read_firstapp  db '/sys/'
6317 serge 161
firstapp       db '/RD/1/LAUNCHER',0
162
notifyapp      db '/RD/1/@notify',0
2434 Serge 163
if lang eq ru
4265 Serge 164
ud_user_message  cp866 'Ошибка: неподдерживаемая инструкция процессора',0
5201 serge 165
mtrr_user_message cp866 '"Обнаружена проблема с конфигурацией MTRR.\nПроизводительность может быть пониженной" -dW',0
3500 Serge 166
else if ~ lang eq sp
2434 Serge 167
ud_user_message db 'Error: unsupported processor instruction',0
5201 serge 168
mtrr_user_message db '"There is a problem with MTRR configuration.\nPerformance can be low" -dW',0
2434 Serge 169
end if
170
 
171
vmode          db  '/sys/drivers/VMODE.MDR',0
172
;vrr_m          db  'VRR_M',0
4287 Serge 173
kernel_file_load:
6240 serge 174
; load kernel.mnt to _CLEAN_ZONE
4287 Serge 175
        dd      0       ; subfunction
176
        dq      0       ; offset in file
6240 serge 177
        dd      0x31000 ; number of bytes to read
178
        dd      _CLEAN_ZONE ; buffer for data
4287 Serge 179
        db      '/RD/1/KERNEL.MNT',0
2434 Serge 180
 
181
dev_data_path  db '/RD/1/DRIVERS/DEVICES.DAT',0
182
 
183
align 4
184
 
185
shmem_list:
186
 .bk           dd shmem_list
187
 .fd           dd shmem_list
188
 
189
dll_list:
190
 .bk           dd dll_list
191
 .fd           dd dll_list
192
 
3500 Serge 193
pcidev_list:
194
 .bk           dd pcidev_list
195
 .fd           dd pcidev_list
196
 
2434 Serge 197
MAX_DEFAULT_DLL_ADDR = 0x80000000
198
MIN_DEFAULT_DLL_ADDR = 0x70000000
199
dll_cur_addr   dd MIN_DEFAULT_DLL_ADDR
200
 
201
; supported videomodes
202
 
203
 
204
; mike.dld {
2465 Serge 205
;db 0
206
;dd servetable-0x10000
207
;align 4
208
;draw_line       dd __sys_draw_line
209
;draw_pointer    dd __sys_draw_pointer
2434 Serge 210
;//mike.dld, 2006-08-02 [
2465 Serge 211
;;drawbar         dd __sys_drawbar
212
;;drawbar         dd __sys_drawbar.forced
213
;drawbar         dd vesa20_drawbar
2434 Serge 214
;//mike.dld, 2006-08-02 ]
2465 Serge 215
;putpixel        dd __sys_putpixel
2434 Serge 216
; } mike.dld
217
 
218
 
219
align 4
220
keyboard   dd 1
221
syslang    dd 1
222
 
223
boot_y     dd 10
224
 
225
pci_bios_entry  dd 0
226
                dw pci_code_sel
227
 
228
if __DEBUG__ eq 1
229
  include_debug_strings
230
end if
231
 
232
IncludeIGlobals
233
 
234
align 16
235
gdts:
236
 
237
        dw     gdte-$-1
238
        dd     gdts
239
        dw     0
240
 
241
; Attention! Do not change the order of the first four selectors. They are used in Fast System Call
242
; must be : os_code, os_data, app_code, app_data, ....
243
 
244
int_code_l:
245
os_code_l:
246
        dw     0xffff
247
        dw     0x0000
248
        db     0x00
249
        dw     11011111b *256 +10011010b
250
        db     0x00
251
 
252
int_data_l:
253
os_data_l:
254
        dw     0xffff
255
        dw     0x0000
256
        db     0x00
257
        dw     11011111b *256 +10010010b
258
        db     0x00
259
 
260
app_code_l:
261
        dw 0xFFFF
262
        dw 0
263
        db 0
264
        db cpl3
265
        dw G32+D32+0xF;
266
 
267
app_data_l:
268
        dw 0xFFFF
269
        dw 0
270
        db 0
271
        db drw3
272
        dw G32+D32+0xF;
273
 
274
; ------------- PCI BIOS ------------------
275
 
276
pci_code_32:
277
        dw 0         ;lim  0-15
278
        dw 0         ;base 0-15
279
        db 0         ;base 16-23
280
        db cpl0      ;type
281
        db D32       ;lim 16-19+props
282
        db 0         ;base 24-31
283
 
284
pci_data_32:
285
        dw 0         ;lim  0-15
286
        dw 0         ;base 0-15
287
        db 0         ;base 16-23
288
        db dpl0      ;type
289
        db D32       ;lim 16-19+props
290
        db 0         ;base 24-31
291
 
292
; --------------- APM ---------------------
293
apm_code_32:
294
        dw     0x0f        ; limit 64kb
295
        db     0, 0, 0
296
        dw     11010000b *256 +10011010b
297
        db     0x00
298
apm_code_16:
299
        dw     0x0f
300
        db     0, 0, 0
301
        dw     10010000b *256 +10011010b
302
        db     0x00
303
apm_data_16:
304
        dw     0x0f
305
        db     0, 0, 0
306
        dw     10010000b *256 +10010010b
307
        db     0x00
308
; -----------------------------------------
309
 
310
graph_data_l:
311
 
312
        dw     0x7ff
313
        dw     0x0000
314
        db     0x00
315
        dw     11010000b *256 +11110010b
316
        db     0x00
317
tss0_l:
318
        dw     sizeof.TSS-1
319
        dw     tss and 0xFFFF
320
        db     (tss shr 16) and 0xFF
321
        db     10001001b
322
        dw     (tss shr 16) and 0xFF00
323
 
324
tls_data_l:
325
        dw 0x0FFF
326
        dw 0
327
        db 0
328
        db drw3
329
        dw D32
330
 
331
endofcode:
332
gdte:
333
 
3626 Serge 334
diff16 "end of .data segment",0,$
335
 
6339 serge 336
align 32
337
 
338
sys_pml3            rd 4*2
339
 
2434 Serge 340
cur_saved_data:
3908 Serge 341
                    rb 4096
2434 Serge 342
fpu_data:
3908 Serge 343
                    rb 512
2434 Serge 344
 
3908 Serge 345
mem_block_list      rd 64*2
346
mem_used_list       rd 64*2
347
mem_hash_cnt        rd 64
2434 Serge 348
 
5201 serge 349
thr_slot_map        rd 8
350
 
3908 Serge 351
cpu_freq            rq 1
3555 Serge 352
 
3908 Serge 353
heap_mutex          MUTEX
354
heap_size           rd 1
355
heap_free           rd 1
356
heap_blocks         rd 1
357
free_blocks         rd 1
3626 Serge 358
 
3908 Serge 359
mem_block_mask      rd 2
360
next_memblock       rd 1
2434 Serge 361
 
3908 Serge 362
mst                 MEM_STATE
2434 Serge 363
 
5565 serge 364
pte_valid_mask      rd 1
3908 Serge 365
page_start          rd 1
366
page_end            rd 1
367
sys_page_map        rd 1
368
os_stack_seg        rd 1
2434 Serge 369
 
370
 
3908 Serge 371
srv.fd              rd 1
372
srv.bk              rd 1
2434 Serge 373
 
374
align 16
375
 
3908 Serge 376
_display            display_t
6246 serge 377
bios_fb             FRB
2434 Serge 378
 
5201 serge 379
LFBAddress          dd ?
3555 Serge 380
 
3908 Serge 381
SCR_MODE            rw 2
3555 Serge 382
 
5201 serge 383
PUTPIXEL            dd ?
384
GETPIXEL            dd ?
3555 Serge 385
 
3626 Serge 386
if VESA_1_2_VIDEO
3908 Serge 387
BANK_SWITCH         rd 1  reserved for vesa 1.2
388
BANK_RW             rd 1
3626 Serge 389
end if
390
 
3908 Serge 391
REDRAW_BACKGROUND   rb 4
3555 Serge 392
 
3908 Serge 393
align 4
4265 Serge 394
draw_data:          rb 32*256
3629 Serge 395
BPSLine_calc_area   rd 1440
396
d_width_calc_area   rd 1140
397
 
3908 Serge 398
mouseunder          rd 16*24
3626 Serge 399
 
5201 serge 400
MOUSE_PICTURE       dd ?
3555 Serge 401
 
3908 Serge 402
MOUSE_SCROLL_H      rw 1
403
MOUSE_X:            rw 1
404
MOUSE_Y:            rw 1
405
MOUSE_SCROLL_V      rw 1
3555 Serge 406
 
3908 Serge 407
X_UNDER             rw 1
408
Y_UNDER             rw 1
409
COLOR_TEMP          rd 1
410
MOUSE_COLOR_MEM     rd 1
3555 Serge 411
 
3908 Serge 412
BTN_DOWN:           rb 4
3555 Serge 413
 
3908 Serge 414
align 4
415
def_cursor          rd 1
416
def_cursor_clock    rd 1
417
current_cursor      rd 1
418
hw_cursor           rd 1
419
cur_saved_base      rd 1
2434 Serge 420
 
3908 Serge 421
cur.lock            rd 1   ;1 - lock update, 2- hide
422
cur.left            rd 1   ;cursor clip box
423
cur.top             rd 1
424
cur.w               rd 1
425
cur.h               rd 1
2434 Serge 426
 
3908 Serge 427
ipc_tmp             rd 1
428
ipc_pdir            rd 1
429
ipc_ptab            rd 1
2434 Serge 430
 
3908 Serge 431
proc_mem_map        rd 1
432
proc_mem_pdir       rd 1
433
proc_mem_tab        rd 1
2434 Serge 434
 
3908 Serge 435
tmp_task_ptab       rd 1
2434 Serge 436
 
3908 Serge 437
default_io_map      rd 1
2434 Serge 438
 
3908 Serge 439
LFBSize             rd 1
2434 Serge 440
 
5201 serge 441
current_process     rd 1
442
current_slot        rd 1    ; i.e. cureent thread
2434 Serge 443
 
5201 serge 444
 
2434 Serge 445
; status
3908 Serge 446
hd1_status                      rd 1  ; 0 - free : other - pid
447
application_table_owner         rd 1  ; 0 - free : other - pid
448
application_table_mutex         MUTEX
2434 Serge 449
 
450
; device addresses
3908 Serge 451
mididp                          rd 1
452
midisp                          rd 1
2434 Serge 453
 
3908 Serge 454
cdbase                          rd 1
455
cdid                            rd 1
2434 Serge 456
 
3908 Serge 457
hdbase                          rd 1    ; for boot 0x1f0
458
hdid                            rd 1
459
hdpos                           rd 1    ; for boot 0x1
460
cdpos                           rd 1
2434 Serge 461
 
462
;CPUID information
3908 Serge 463
cpu_vendor                      rd 3
464
cpu_sign                        rd 1
465
cpu_info                        rd 1
466
cpu_caps                        rd 4
2434 Serge 467
 
468
 
3908 Serge 469
pg_data                         PG_DATA
470
heap_test                       rd 1
2434 Serge 471
 
3908 Serge 472
buttontype                      rd 1
473
windowtypechanged               rd 1
2434 Serge 474
 
3908 Serge 475
hd_entries                      rd 1     ;unused ? 0xfe10
2434 Serge 476
 
3908 Serge 477
mouse_active                    rd 1
478
mouse_pause                     rd 1
2434 Serge 479
 
3908 Serge 480
redrawmouse_unconditional       rd 1
2465 Serge 481
 
3908 Serge 482
img_background                  rd 1
483
mem_BACKGROUND                  rd 1
484
static_background_data          rd 1
2434 Serge 485
 
3908 Serge 486
BgrDrawMode                     rd 1
487
BgrDataWidth                    rd 1
488
BgrDataHeight                   rd 1
3589 Serge 489
 
3908 Serge 490
skin_data                       rd 1
3589 Serge 491
 
3908 Serge 492
debug_step_pointer              rd 1
2434 Serge 493
 
3908 Serge 494
lba_read_enabled                rd 1  ; 0 = disabled , 1 = enabled
495
pci_access_enabled              rd 1  ; 0 = disabled , 1 = enabled
2434 Serge 496
 
5201 serge 497
cpu_phys_addr_width             rb 1  ; also known as MAXPHYADDR in Intel manuals
3908 Serge 498
hdd_appl_data                   rb 1  ; 0 = system cache, 1 - application cache
499
cd_appl_data                    rb 1  ; 0 = system cache, 1 - application cache
500
 
501
timer_ticks_enable              rb 1  ; for cd driver
502
 
503
align 4
504
NumBiosDisks                    rd 1
505
BiosDisksData                   rb 200h
506
BiosDiskCaches                  rb 80h*(cache_ide1-cache_ide0)
507
BiosDiskPartitions              rd 80h
508
 
3626 Serge 509
align 16
3908 Serge 510
DRIVE_DATA:                     rb DRIVE_DATA_SIZE
3626 Serge 511
 
3629 Serge 512
IncludeUGlobals
513
 
514
uglobals_size = $ - endofcode
515
 
516
if ~ lang eq sp
517
diff16 "end of .bss",0,$
518
end if
519
 
520
org (OS_BASE+0x0100000)
521
 
5201 serge 522
; Currently size of memory allocated for the ramdisk is fixed.
523
; This should be revisited when/if memory map would become more dynamic.
524
RAMDISK_CAPACITY = 2880 ; in sectors
3629 Serge 525
 
5201 serge 526
RAMDISK:                        rb RAMDISK_CAPACITY*512
527
 
3629 Serge 528
_CLEAN_ZONE:
529
 
5201 serge 530
BgrAuxTable                     rb 32768
531
align 65536
532
SB16Buffer                      rb 65536
533
 
3555 Serge 534
align 4096
3908 Serge 535
BUTTON_INFO                     rb 64*1024
536
RESERVED_PORTS:                 rb 64*1024
3555 Serge 537
 
3908 Serge 538
sys_pgmap:                      rb 1024*1024/8