Subversion Repositories Kolibri OS

Rev

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