Subversion Repositories Kolibri OS

Rev

Rev 3742 | Rev 3778 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;                                                              ;;
  3. ;; Copyright (C) KolibriOS team 2004-2012. All rights reserved. ;;
  4. ;; Distributed under terms of the GNU General Public License    ;;
  5. ;;                                                              ;;
  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  7.  
  8. $Revision: 3762 $
  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<D',255,'FGHIJKLMNOPQRSTUVWXYZ'
  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
  52.   boot_initirq:     cp866 'Инициализация IRQ',0
  53.   boot_picinit:     cp866 'Инициализация PIC',0
  54.   boot_v86machine:  cp866 'Инициализация системы V86 машины',0
  55.   boot_inittimer:   cp866 'Инициализация системного таймера (IRQ0)',0
  56.   boot_initapic:    cp866 'Попытка инициализации APIC',0
  57.   boot_enableirq:   cp866 'Включить прерывания 2, 6, 13, 14, 15',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
  72.   boot_irqs:        cp866 'Переопределение IRQ',0
  73.   boot_setmouse:    cp866 'Установка мыши',0
  74.   boot_windefs:     cp866 'Установка настроек окон по умолчанию',0
  75.   boot_bgr:         cp866 'Установка фона',0
  76.   boot_resirqports: cp866 'Резервирование IRQ и портов',0
  77.   boot_setrports:   cp866 'Установка адресов IRQ',0
  78.   boot_setostask:   cp866 'Создание процесса ядра',0
  79.   boot_allirqs:     cp866 'Открытие всех IRQ',0
  80.   boot_tsc:         cp866 'Чтение TSC',0
  81.   boot_cpufreq:     cp866 'Частота процессора ','    ',' МГц',0
  82.   boot_pal_ega:     cp866 'Установка EGA/CGA 320x200 палитры',0
  83.   boot_pal_vga:     cp866 'Установка VGA 640x480 палитры',0
  84.   boot_failed:      cp866 'Загрузка первого приложения не удалась',0
  85.   boot_mtrr:        cp866 'Установка MTRR',0
  86.  
  87.   boot_APIC_found:  cp866 'APIC включен', 0
  88.   boot_APIC_nfound: cp866 'APIC не найден', 0
  89. if preboot_blogesc
  90.   boot_tasking:     cp866 'Все готово для запуска, нажмитре ESC для старта',0
  91. end if
  92. else if lang eq sp
  93.   include 'data32sp.inc'
  94. else
  95.   boot_initirq      db   'Initialize IRQ',0
  96.   boot_picinit      db   'Initialize PIC',0
  97.   boot_v86machine   db   'Initialize system V86 machine',0
  98.   boot_inittimer    db   'Initialize system timer (IRQ0)',0
  99.   boot_initapic     db   'Try to initialize APIC',0
  100.   boot_enableirq    db   'Enable interrupts 2, 6, 13, 14, 15',0
  101.   boot_disabling_ide db   'Disable interrupts in IDE controller',0
  102.   boot_enabling_ide db   'Enable interrupts in IDE controller',0
  103.   boot_set_int_IDE  db   'Set handler of interrupts for IDE controller',0
  104.   boot_detectfloppy db   'Search floppy drives',0
  105.   boot_detecthdcd   db   'Search hard drives and ATAPI drives',0
  106.   boot_getcache     db   'Get memory for cache',0
  107.   boot_detectpart   db   'Search partitions on disk devices',0
  108.   boot_init_sys     db   'Initialize system directory /sys',0
  109.   boot_loadlibs     db   'Loading librares (.obj)',0
  110.   boot_memdetect    db   'Determining amount of memory',0
  111.   boot_tss          db   'Setting TSSs',0
  112.   boot_cpuid        db   'Reading CPUIDs',0
  113. ;  boot_devices      db   'Detecting devices',0
  114.   boot_setmouse     db   'Setting mouse',0
  115.   boot_windefs      db   'Setting window defaults',0
  116.   boot_bgr          db   'Calculating background',0
  117.   boot_resirqports  db   'Reserving IRQs & ports',0
  118.   boot_setostask    db   'Setting OS task',0
  119.   boot_allirqs      db   'Unmasking IRQs',0
  120.   boot_tsc          db   'Reading TSC',0
  121.   boot_cpufreq      db   'CPU frequency is ','    ',' MHz',0
  122.   boot_pal_ega      db   'Setting EGA/CGA 320x200 palette',0
  123.   boot_pal_vga      db   'Setting VGA 640x480 palette',0
  124.   boot_failed       db   'Failed to start first app',0
  125.   boot_mtrr         db   'Setting MTRR',0
  126.  
  127.   boot_APIC_found   db   'APIC enabled', 0
  128.   boot_APIC_nfound  db   'APIC not found', 0
  129. if preboot_blogesc
  130.   boot_tasking      db   'All set - press ESC to start',0
  131. end if
  132. end if
  133.  
  134. ;new_process_loading db 'K : New Process - loading',13,10,0
  135. ;new_process_running db 'K : New Process - done',13,10,0
  136. start_not_enough_memory db 'K : New Process - not enough memory',13,10,0
  137.  
  138. msg_unresolved db 'unresolved ',0
  139. msg_module     db 'in module ',0
  140. if ~ lang eq sp
  141. msg_version    db 'incompatible driver version',13,10,0
  142. msg_www        db 'please visit www.kolibrios.org',13,10,0
  143. end if
  144. msg_CR         db  13,10,0
  145.  
  146. intel_str      db "GenuineIntel",0
  147. AMD_str        db "AuthenticAMD",0
  148.  
  149. szHwMouse       db 'ATI2D',0
  150. szPS2MDriver    db 'PS2MOUSE',0
  151. ;szCOM_MDriver   db 'COM_MOUSE',0
  152. szVidintel      db 'vidintel',0
  153. szUSB           db 'USB',0
  154. szAtiHW         db '/rd/1/drivers/ati2d.drv',0
  155.  
  156. szSTART        db 'START',0
  157. szEXPORTS      db 'EXPORTS',0
  158. sz_EXPORTS     db '_EXPORTS',0
  159.  
  160. szIMPORTS      db 'IMPORTS',0
  161.  
  162. read_firstapp  db '/sys/'
  163. firstapp       db  'LAUNCHER',0
  164. notifyapp      db '@notify',0
  165. if lang eq ru
  166. ud_user_message: cp866 'Ошибка: неподдерживаемая инструкция процессора',0
  167. else if ~ lang eq sp
  168. ud_user_message db 'Error: unsupported processor instruction',0
  169. end if
  170.  
  171. vmode          db  '/sys/drivers/VMODE.MDR',0
  172. ;vrr_m          db  'VRR_M',0
  173. kernel_file    db  'KERNEL  MNT'
  174.  
  175. dev_data_path  db '/RD/1/DRIVERS/DEVICES.DAT',0
  176.  
  177. align 4
  178.  
  179. shmem_list:
  180.  .bk           dd shmem_list
  181.  .fd           dd shmem_list
  182.  
  183. dll_list:
  184.  .bk           dd dll_list
  185.  .fd           dd dll_list
  186.  
  187. pcidev_list:
  188.  .bk           dd pcidev_list
  189.  .fd           dd pcidev_list
  190.  
  191. MAX_DEFAULT_DLL_ADDR = 0x80000000
  192. MIN_DEFAULT_DLL_ADDR = 0x70000000
  193. dll_cur_addr   dd MIN_DEFAULT_DLL_ADDR
  194.  
  195. ; supported videomodes
  196.  
  197.  
  198. ; mike.dld {
  199. ;db 0
  200. ;dd servetable-0x10000
  201. ;align 4
  202. ;draw_line       dd __sys_draw_line
  203. ;draw_pointer    dd __sys_draw_pointer
  204. ;//mike.dld, 2006-08-02 [
  205. ;;drawbar         dd __sys_drawbar
  206. ;;drawbar         dd __sys_drawbar.forced
  207. ;drawbar         dd vesa20_drawbar
  208. ;//mike.dld, 2006-08-02 ]
  209. ;putpixel        dd __sys_putpixel
  210. ; } mike.dld
  211.  
  212.  
  213. align 4
  214. keyboard   dd 1
  215. syslang    dd 1
  216.  
  217. boot_y     dd 10
  218.  
  219. pci_bios_entry  dd 0
  220.                 dw pci_code_sel
  221.  
  222. if __DEBUG__ eq 1
  223.   include_debug_strings
  224. end if
  225.  
  226. IncludeIGlobals
  227.  
  228. align 16
  229. gdts:
  230.  
  231.         dw     gdte-$-1
  232.         dd     gdts
  233.         dw     0
  234.  
  235. ; Attention! Do not change the order of the first four selectors. They are used in Fast System Call
  236. ; must be : os_code, os_data, app_code, app_data, ....
  237.  
  238. int_code_l:
  239. os_code_l:
  240.         dw     0xffff
  241.         dw     0x0000
  242.         db     0x00
  243.         dw     11011111b *256 +10011010b
  244.         db     0x00
  245.  
  246. int_data_l:
  247. os_data_l:
  248.         dw     0xffff
  249.         dw     0x0000
  250.         db     0x00
  251.         dw     11011111b *256 +10010010b
  252.         db     0x00
  253.  
  254. app_code_l:
  255.         dw 0xFFFF
  256.         dw 0
  257.         db 0
  258.         db cpl3
  259.         dw G32+D32+0xF;
  260.  
  261. app_data_l:
  262.         dw 0xFFFF
  263.         dw 0
  264.         db 0
  265.         db drw3
  266.         dw G32+D32+0xF;
  267.  
  268. ; ------------- PCI BIOS ------------------
  269.  
  270. pci_code_32:
  271.         dw 0         ;lim  0-15
  272.         dw 0         ;base 0-15
  273.         db 0         ;base 16-23
  274.         db cpl0      ;type
  275.         db D32       ;lim 16-19+props
  276.         db 0         ;base 24-31
  277.  
  278. pci_data_32:
  279.         dw 0         ;lim  0-15
  280.         dw 0         ;base 0-15
  281.         db 0         ;base 16-23
  282.         db dpl0      ;type
  283.         db D32       ;lim 16-19+props
  284.         db 0         ;base 24-31
  285.  
  286. ; --------------- APM ---------------------
  287. apm_code_32:
  288.         dw     0x0f        ; limit 64kb
  289.         db     0, 0, 0
  290.         dw     11010000b *256 +10011010b
  291.         db     0x00
  292. apm_code_16:
  293.         dw     0x0f
  294.         db     0, 0, 0
  295.         dw     10010000b *256 +10011010b
  296.         db     0x00
  297. apm_data_16:
  298.         dw     0x0f
  299.         db     0, 0, 0
  300.         dw     10010000b *256 +10010010b
  301.         db     0x00
  302. ; -----------------------------------------
  303.  
  304. graph_data_l:
  305.  
  306.         dw     0x7ff
  307.         dw     0x0000
  308.         db     0x00
  309.         dw     11010000b *256 +11110010b
  310.         db     0x00
  311. tss0_l:
  312.         dw     sizeof.TSS-1
  313.         dw     tss and 0xFFFF
  314.         db     (tss shr 16) and 0xFF
  315.         db     10001001b
  316.         dw     (tss shr 16) and 0xFF00
  317.  
  318. tls_data_l:
  319.         dw 0x0FFF
  320.         dw 0
  321.         db 0
  322.         db drw3
  323.         dw D32
  324.  
  325. endofcode:
  326. gdte:
  327.  
  328. diff16 "end of .data segment",0,$
  329.  
  330. align 16
  331. cur_saved_data:
  332.                     rb 4096
  333. fpu_data:
  334.                     rb 512
  335.  
  336. mem_block_list      rd 64*2
  337. mem_used_list       rd 64*2
  338. mem_hash_cnt        rd 64
  339.  
  340. cpu_freq            rq 1
  341.  
  342. heap_mutex          MUTEX
  343. heap_size           rd 1
  344. heap_free           rd 1
  345. heap_blocks         rd 1
  346. free_blocks         rd 1
  347.  
  348. mem_block_mask      rd 2
  349. next_memblock       rd 1
  350.  
  351.  
  352. mst                 MEM_STATE
  353.  
  354. page_start          rd 1
  355. page_end            rd 1
  356. sys_page_map        rd 1
  357. os_stack_seg        rd 1
  358.  
  359.  
  360. srv.fd              rd 1
  361. srv.bk              rd 1
  362.  
  363.  
  364. align 16
  365.  
  366. _display            display_t
  367.  
  368. _WinMapAddress      rd 1
  369. _WinMapSize         rd 1
  370.  
  371. LFBAddress          rd 1
  372. Screen_Max_X        rd 1
  373. Screen_Max_Y        rd 1
  374.  
  375. SCR_MODE            rw 2
  376.  
  377. PUTPIXEL            rd 1
  378. GETPIXEL            rd 1
  379.  
  380. if VESA_1_2_VIDEO
  381. BANK_SWITCH         rd 1  reserved for vesa 1.2
  382. BANK_RW             rd 1
  383. end if
  384.  
  385. REDRAW_BACKGROUND   rb 4
  386.  
  387. align 4
  388. draw_data:          rb 16*256
  389. BPSLine_calc_area   rd 1440
  390. d_width_calc_area   rd 1140
  391.  
  392. mouseunder          rd 16*24
  393.  
  394. MOUSE_PICTURE       rd 1
  395.  
  396. MOUSE_SCROLL_H      rw 1
  397. MOUSE_X:            rw 1
  398. MOUSE_Y:            rw 1
  399. MOUSE_SCROLL_V      rw 1
  400.  
  401. X_UNDER             rw 1
  402. Y_UNDER             rw 1
  403. COLOR_TEMP          rd 1
  404. MOUSE_COLOR_MEM     rd 1
  405.  
  406. BTN_DOWN:           rb 4
  407.  
  408. align 4
  409. def_cursor          rd 1
  410. def_cursor_clock    rd 1
  411. current_cursor      rd 1
  412. hw_cursor           rd 1
  413. cur_saved_base      rd 1
  414.  
  415. cur.lock            rd 1   ;1 - lock update, 2- hide
  416. cur.left            rd 1   ;cursor clip box
  417. cur.top             rd 1
  418. cur.right           rd 1
  419. cur.bottom          rd 1
  420. cur.w               rd 1
  421. cur.h               rd 1
  422.  
  423. ipc_tmp             rd 1
  424. ipc_pdir            rd 1
  425. ipc_ptab            rd 1
  426.  
  427. proc_mem_map        rd 1
  428. proc_mem_pdir       rd 1
  429. proc_mem_tab        rd 1
  430.  
  431. tmp_task_pdir       rd 1
  432. tmp_task_ptab       rd 1
  433.  
  434. default_io_map      rd 1
  435.  
  436. LFBSize             rd 1
  437.  
  438. current_slot        rd 1
  439.  
  440. ; status
  441. hd1_status                      rd 1  ; 0 - free : other - pid
  442. application_table_owner         rd 1  ; 0 - free : other - pid
  443. application_table_mutex         MUTEX
  444.  
  445. ; device addresses
  446. mididp                          rd 1
  447. midisp                          rd 1
  448.  
  449. cdbase                          rd 1
  450. cdid                            rd 1
  451.  
  452. hdbase                          rd 1    ; for boot 0x1f0
  453. hdid                            rd 1
  454. hdpos                           rd 1    ; for boot 0x1
  455. label   known_part dword
  456. fat32part                       rd 1    ; for boot 0x1
  457. cdpos                           rd 1
  458.  
  459. ;CPUID information
  460. cpu_vendor                      rd 3
  461. cpu_sign                        rd 1
  462. cpu_info                        rd 1
  463. cpu_caps                        rd 4
  464.  
  465.  
  466. pg_data                         PG_DATA
  467. heap_test                       rd 1
  468.  
  469. buttontype                      rd 1
  470. windowtypechanged               rd 1
  471.  
  472. hd_entries                      rd 1     ;unused ? 0xfe10
  473.  
  474. mouse_active                    rd 1
  475. mouse_pause                     rd 1
  476.  
  477. redrawmouse_unconditional       rd 1
  478.  
  479. img_background                  rd 1
  480. mem_BACKGROUND                  rd 1
  481. static_background_data          rd 1
  482.  
  483. BgrDrawMode                     rd 1
  484. BgrDataWidth                    rd 1
  485. BgrDataHeight                   rd 1
  486.  
  487. skin_data                       rd 1
  488.  
  489. cache_ide0:
  490. cache_ide0_pointer              rd 1
  491. cache_ide0_size                 rd 1   ; not use
  492. cache_ide0_data_pointer         rd 1
  493. cache_ide0_system_data_size     rd 1   ; not use
  494. cache_ide0_appl_data_size       rd 1   ; not use
  495. cache_ide0_system_data          rd 1
  496. cache_ide0_appl_data            rd 1
  497. cache_ide0_system_sad_size      rd 1
  498. cache_ide0_appl_sad_size        rd 1
  499. cache_ide0_search_start         rd 1
  500. cache_ide0_appl_search_start    rd 1
  501.  
  502. cache_ide1:
  503. cache_ide1_pointer              rd 1
  504. cache_ide1_size                 rd 1   ; not use
  505. cache_ide1_data_pointer         rd 1
  506. cache_ide1_system_data_size     rd 1   ; not use
  507. cache_ide1_appl_data_size       rd 1   ; not use
  508. cache_ide1_system_data          rd 1
  509. cache_ide1_appl_data            rd 1
  510. cache_ide1_system_sad_size      rd 1
  511. cache_ide1_appl_sad_size        rd 1
  512. cache_ide1_search_start         rd 1
  513. cache_ide1_appl_search_start    rd 1
  514.  
  515. cache_ide2:
  516. cache_ide2_pointer              rd 1
  517. cache_ide2_size                 rd 1   ; not use
  518. cache_ide2_data_pointer         rd 1
  519. cache_ide2_system_data_size     rd 1   ; not use
  520. cache_ide2_appl_data_size       rd 1   ; not use
  521. cache_ide2_system_data          rd 1
  522. cache_ide2_appl_data            rd 1
  523. cache_ide2_system_sad_size      rd 1
  524. cache_ide2_appl_sad_size        rd 1
  525. cache_ide2_search_start         rd 1
  526. cache_ide2_appl_search_start    rd 1
  527.  
  528. cache_ide3:
  529. cache_ide3_pointer              rd 1
  530. cache_ide3_size                 rd 1   ; not use
  531. cache_ide3_data_pointer         rd 1
  532. cache_ide3_system_data_size     rd 1   ; not use
  533. cache_ide3_appl_data_size       rd 1   ; not use
  534. cache_ide3_system_data          rd 1
  535. cache_ide3_appl_data            rd 1
  536. cache_ide3_system_sad_size      rd 1
  537. cache_ide3_appl_sad_size        rd 1
  538. cache_ide3_search_start         rd 1
  539. cache_ide3_appl_search_start    rd 1
  540.  
  541. debug_step_pointer              rd 1
  542.  
  543. lba_read_enabled                rd 1  ; 0 = disabled , 1 = enabled
  544. pci_access_enabled              rd 1  ; 0 = disabled , 1 = enabled
  545.  
  546. hdd_appl_data                   rb 1  ; 0 = system cache, 1 - application cache
  547. cd_appl_data                    rb 1  ; 0 = system cache, 1 - application cache
  548.  
  549. timer_ticks_enable              rb 1  ; for cd driver
  550.  
  551. align 4
  552. NumBiosDisks                    rd 1
  553. BiosDisksData                   rb 200h
  554. BiosDiskCaches                  rb 80h*(cache_ide1-cache_ide0)
  555. BiosDiskPartitions              rd 80h
  556.  
  557. align 16
  558. DRIVE_DATA:                     rb DRIVE_DATA_SIZE
  559.  
  560. IncludeUGlobals
  561.  
  562. uglobals_size = $ - endofcode
  563.  
  564. if ~ lang eq sp
  565. diff16 "end of .bss",0,$
  566. end if
  567.  
  568. org (OS_BASE+0x0100000)
  569.  
  570. RAMDISK:                        rb 2880*512
  571. RAMDISK_FAT:                    rb 2856*2
  572. FLOPPY_FAT:                     rb 2856*2
  573.  
  574. _CLEAN_ZONE:
  575.  
  576. align 4096
  577. _IDE_DMA                        rb 16*512
  578. BgrAuxTable                     rb 32768
  579. BUTTON_INFO                     rb 64*1024
  580. RESERVED_PORTS:                 rb 64*1024
  581. FLOPPY_BUFF:                    rb 18*512           ;one track
  582.  
  583. sys_pgmap:                      rb 1024*1024/8
  584.