diff --git a/kernel/trunk/blkdev/hd_drv.inc b/kernel/trunk/blkdev/hd_drv.inc index 83dbc3f063..913b5f5b81 100755 --- a/kernel/trunk/blkdev/hd_drv.inc +++ b/kernel/trunk/blkdev/hd_drv.inc @@ -1,5 +1,5 @@ -; Low-level driver for HDD access -; DMA support by Mario79 +; Low-level driver for HDD access +; DMA support by Mario79 ;************************************************************************** ; @@ -220,9 +220,11 @@ write_cache: jb danger cmp eax,[PARTITION_END] ja danger - + + cmp [allow_dma_write], 1 + jnz .nodma cmp [dma_hdd], 1 - jmp .nodma + jnz .nodma ; Объединяем запись цепочки последовательных секторов в одно обращение к диску cmp ecx, 1 jz .nonext @@ -519,7 +521,7 @@ wait_for_sector_buffer: pop edx eax ret -; \begin{Mario79} +; \begin{Mario79} align 4 wait_for_sector_dma_ide0: push eax @@ -586,6 +588,7 @@ cache_chain_size db 0 cache_chain_started db 0 dma_task_switched db 0 dma_hdd db 0 +allow_dma_write db 0 endg align 4 @@ -852,4 +855,4 @@ do_write_dma: uglobal IDEContrRegsBaseAddr dw ? endg -; \end{Mario79} +; \end{Mario79} diff --git a/kernel/trunk/boot/bootcode.inc b/kernel/trunk/boot/bootcode.inc index 5e6ea01214..2a02d6eb60 100644 --- a/kernel/trunk/boot/bootcode.inc +++ b/kernel/trunk/boot/bootcode.inc @@ -580,7 +580,7 @@ cfgmanager: ; settings: ; a) preboot_graph = graphical mode ; preboot_gprobe = probe this mode? -; b) preboot_mtrr = use hardware acceleration? +; b) preboot_dma_write = use DMA write? ; c) preboot_vrrm = use VRR? ; d) preboot_device = from what boot? mov di, preboot_graph-0x10000 @@ -620,8 +620,8 @@ cfgmanager: @@: mov [di], al .preboot_gr_end: - cmp [di+preboot_mtrr-preboot_graph], 1 - adc [di+preboot_mtrr-preboot_graph], 0 + cmp [di+preboot_dma_write-preboot_graph], 1 + adc [di+preboot_dma_write-preboot_graph], 0 cmp [di+preboot_vrrm-preboot_graph], 1 adc [di+preboot_vrrm-preboot_graph], 0 cmp [di+preboot_device-preboot_graph], 1 @@ -676,8 +676,8 @@ cfgmanager: .c: mov si, linef-0x10000 call printplain - mov si, mtrr_msg-0x10000 - cmp [preboot_mtrr-0x10000], 1 + mov si, dma_msg-0x10000 + cmp [preboot_dma_write-0x10000], 1 call .say_on_off mov si, vrrm_msg-0x10000 cmp [preboot_vrrm-0x10000], 1 @@ -761,11 +761,11 @@ cfgmanager: jmp .d .change_b: _setcursor 15,0 - mov si, gr_acc-0x10000 + mov si, ask_dma-0x10000 call print mov bx, '12' call getkey - mov [preboot_mtrr-0x10000], al + mov [preboot_dma_write-0x10000], al _setcursor 11,0 jmp .d .change_c: @@ -1018,9 +1018,13 @@ end if ; GRAPHICS ACCELERATION +; force yes + mov [es:0x901C], byte 1 - mov al, [preboot_mtrr-0x10000] - mov [es:0x901C],al +; DMA WRITE + + mov al, [preboot_dma_write-0x10000] + mov [es:0x901F],al ; VRR_M USE diff --git a/kernel/trunk/boot/booteng.inc b/kernel/trunk/boot/booteng.inc index 3884f4c9cc..c5e19a61ba 100644 --- a/kernel/trunk/boot/booteng.inc +++ b/kernel/trunk/boot/booteng.inc @@ -73,8 +73,7 @@ vrrmprint db "Apply VRR? (picture frequency greater than 60Hz" ; db " Select port [1-3]: ",0 ;no_com1 db 13,10,186, " No COM1 mouse",0 ;no_com2 db 13,10,186, " No COM2 mouse",0 -gr_acc db "Vesa 2.0+ : MTRR graphics acceleration " - db "[1-yes/2-no] ? ",0 +ask_dma db "Use DMA for HDD writing? [1-yes/2-no]: ",0 ;gr_direct db 186," Use direct LFB writing? " ; db "[1-yes/2-no] ? ",0 ;mem_model db 13,10,186," Motherboard memory [1-16 Mb / 2-32 Mb / " @@ -120,7 +119,7 @@ mode9 db "320x200, EGA/CGA 256 colors",0 mode10 db "640x480, VGA 16 colors",0 probeno_msg db " (standard mode)",0 probeok_msg db " (check nonstandard modes)",0 -mtrr_msg db " [b] Use MTRR for graphics acceleration:",0 +dma_msg db " [b] Use DMA for HDD writing:",0 on_msg db " on",13,10,0 off_msg db " off",13,10,0 vrrm_msg db " [c] Use VRR:",0 diff --git a/kernel/trunk/boot/bootet.inc b/kernel/trunk/boot/bootet.inc index b042aba56c..f1d67a7677 100644 --- a/kernel/trunk/boot/bootet.inc +++ b/kernel/trunk/boot/bootet.inc @@ -73,8 +73,7 @@ vrrmprint db "Kinnita VRR? (ekraani sagedus suurem kui 60Hz" ; db " Vali port [1-3]: ",0 ;no_com1 db 13,10,186, " No COM1 mouse",0 ;no_com2 db 13,10,186, " No COM2 mouse",0 -gr_acc db "Vesa 2.0+ : MTRR graafika kiirendus " - db "[1-jah/2-ei] ? ",0 +ask_dma db "Use DMA for HDD writing? [1-jah/2-ei]: ",0 ;gr_direct db 186," Use direct LFB writing? " ; db "[1-yes/2-no] ? ",0 ;mem_model db 13,10,186," Motherboard memory [1-16 Mb / 2-32 Mb / " @@ -120,7 +119,7 @@ mode9 db "320x200, EGA/CGA 256 v mode10 db "640x480, VGA 16 vфrvi",0 probeno_msg db " (standard reziim)",0 probeok_msg db " (kontrolli ebastandardseid reziime)",0 -mtrr_msg db " [b] kasuta MTRR graafika kiirendamiseks:",0 +dma_msg db " [b] Use DMA for HDD writing:",0 on_msg db " sees",13,10,0 off_msg db " vфljas",13,10,0 vrrm_msg db " [c] Kasuta VRR:",0 diff --git a/kernel/trunk/boot/bootge.inc b/kernel/trunk/boot/bootge.inc index 49d17592e1..0c0f20df6d 100644 --- a/kernel/trunk/boot/bootge.inc +++ b/kernel/trunk/boot/bootge.inc @@ -78,8 +78,7 @@ vrrmprint db "VRR verwenden? (Monitorfrequenz groesser als 60Hz" ; db " Waehle Port [1-3]: ",0 ;no_com1 db 13,10,186, " Keine COM1 Maus",0 ;no_com2 db 13,10,186, " Keine COM2 Maus",0 -gr_acc db "Vesa 2.0+ : MTRR Grafikbeschleunigung " - db "[1-ja/2-nein] ? ",0 +ask_dma db "Nutze DMA zum HDD Aufschreiben? [1-ja/2-nein]: ",0 ;gr_direct db 186," Benutze direct LFB? " ; db "[1-ja/2-nein] ? ",0 ;mem_model db 13,10,186," Hauptspeicher [1-16 Mb / 2-32 Mb / " @@ -125,7 +124,7 @@ mode9 db "320x200, EGA/CGA 256 colors",0 mode10 db "640x480, VGA 16 colors",0 probeno_msg db " (Standard Modus)",0 probeok_msg db " (teste nicht-standard Modi)",0 -mtrr_msg db " [b] Nutze MTRR fuer Graphibeschleunigung:",0 +dma_msg db " [b] Nutze DMA zum HDD Aufschreiben:",0 on_msg db " an",13,10,0 off_msg db " aus",13,10,0 vrrm_msg db " [c] Nutze VRR:",0 diff --git a/kernel/trunk/boot/bootru.inc b/kernel/trunk/boot/bootru.inc index 012d9586fe..e4b19cddf7 100644 --- a/kernel/trunk/boot/bootru.inc +++ b/kernel/trunk/boot/bootru.inc @@ -73,8 +73,7 @@ vrrmprint db " ; db " Выберите порт [1-3]: ",0 ;no_com1 db 13,10,186," No COM1 mouse",0 ;no_com2 db 13,10,186," No COM2 mouse",0 -gr_acc db "Vesa 2.0+: Включить MTRR для ускорения графики? " - db "[1-да/2-нет]: ",0 +ask_dma db "Использовать DMA для записи на HDD? [1-да/2-нет]: ",0 ;gr_direct db 186," Использовать линейный видеобуфер? " ; db "[1-да/2-нет]: ",0 ;mem_model db 13,10,186," Объ+м памяти [1-16 Mb / 2-32 Mb / " @@ -120,7 +119,7 @@ mode9 db "320x200, EGA/CGA 256 цветов",0 mode10 db "640x480, VGA 16 цветов",0 probeno_msg db " (стандартный видеорежим)",0 probeok_msg db " (проверить нестандартные режимы)",0 -mtrr_msg db " [b] Использование MTRR для ускорения графики:",0 +dma_msg db " [b] Использование DMA для записи на HDD:",0 on_msg db " вкл",13,10,0 off_msg db " выкл",13,10,0 vrrm_msg db " [c] Использование VRR:",0 diff --git a/kernel/trunk/boot/preboot.inc b/kernel/trunk/boot/preboot.inc index fb50268808..ddad6f5672 100644 --- a/kernel/trunk/boot/preboot.inc +++ b/kernel/trunk/boot/preboot.inc @@ -10,7 +10,7 @@ display_atboot db 0 ; show boot screen messages ( 2-no ) preboot_graph db 0 ; graph mode preboot_gprobe db 0 ; probe vesa3 videomodes (1-no, 2-yes) preboot_vrrm db 0 ; use VRR_M (1-yes, 2- no) -preboot_mtrr db 0 ; mtrr acceleration (1-yes, 2-no) +preboot_dma_write db 0 ; use DMA for writing to HDD (1-yes, 2-no) preboot_device db 0 ; boot device ; (1-floppy 2-harddisk 3-kernel restart) ;!!!! 0 - autodetect !!!! diff --git a/kernel/trunk/core/dll.inc b/kernel/trunk/core/dll.inc index 74601bb9ee..caf81eaf6f 100644 --- a/kernel/trunk/core/dll.inc +++ b/kernel/trunk/core/dll.inc @@ -298,45 +298,13 @@ proc get_service stdcall, sz_name:dword mov edx, [edx+SRV.fd] jmp @B .not_load: - stdcall find_service, [sz_name] - test eax, eax - jz @F - stdcall load_driver, eax -@@: - ret + pop ebp + jmp load_driver .ok: mov eax, edx ret endp -align 4 -proc find_service stdcall ,sz_name:dword - - mov eax, [sz_name] - test eax, eax - jz .fail - - mov esi, services -@@: - mov eax, [esi] - test eax, eax - jz .fail - push esi - stdcall strncmp, eax, [sz_name], 16 - pop esi - test eax, eax - je .ok - - add esi, 8 - jmp @B -.ok: - mov eax, [esi+4] - ret -.fail: - xor eax, eax - ret -endp - align 4 reg_service: .sz_name equ esp+4 @@ -705,7 +673,7 @@ proc fix_coff_relocs stdcall, coff:dword, sec:dword, sym:dword endp align 4 -proc load_driver stdcall, file_name:dword +proc load_driver stdcall, driver_name:dword locals coff dd ? sym dd ? @@ -716,9 +684,27 @@ proc load_driver stdcall, file_name:dword exports dd ? ;fake exports table dd ? + file_name rb 14+16+4+1 ; '/rd/1/drivers/.obj' endl - stdcall load_file, [file_name] + lea edx, [file_name] + mov dword [edx], '/rd/' + mov dword [edx+4], '1/dr' + mov dword [edx+8], 'iver' + mov word [edx+12], 's/' + mov esi, [driver_name] + lea edi, [edx+14] + mov ecx, 16 +@@: + lodsb + test al, al + jz @f + stosb + loop @b +@@: + mov dword [edi], '.obj' + mov byte [edi+4], 0 + stdcall load_file, edx test eax, eax jz .exit @@ -835,7 +821,7 @@ proc load_driver stdcall, file_name:dword .ver_fail: mov esi, msg_CR call sys_msg_board_str - mov esi, [file_name] + mov esi, [driver_name] call sys_msg_board_str mov esi, msg_CR call sys_msg_board_str @@ -848,7 +834,7 @@ proc load_driver stdcall, file_name:dword .link_fail: mov esi, msg_module call sys_msg_board_str - mov esi, [file_name] + mov esi, [driver_name] call sys_msg_board_str mov esi, msg_CR call sys_msg_board_str @@ -1041,13 +1027,9 @@ destroy_kernel_object: ret -drv_sound db '/rd/1/drivers/unisound.obj', 0 -drv_infinity db '/rd/1/drivers/infinity.obj', 0 -drv_hw_mouse db '/rd/1/drivers/ati2d.obj',0 - -szSound db 'SOUND',0 -szInfinity db 'INFINITY',0 -szHwMouse db 'HWCURSOR',0 +;szSound db 'SOUND',0 +;szInfinity db 'INFINITY',0 +szHwMouse db 'ATI2D',0 szSTART db 'START',0 szEXPORTS db 'EXPORTS',0 @@ -1063,10 +1045,3 @@ align 4 create_cursor dd 0 set_hw_cursor dd 0 hw_restore dd 0 - -align 16 -services: - dd szSound, drv_sound - dd szInfinity, drv_infinity - dd szHwMouse, drv_hw_mouse - dd 0 diff --git a/kernel/trunk/detect/dev_hdcd.inc b/kernel/trunk/detect/dev_hdcd.inc index dd1d4646b2..4049347140 100644 --- a/kernel/trunk/detect/dev_hdcd.inc +++ b/kernel/trunk/detect/dev_hdcd.inc @@ -11,25 +11,42 @@ FindHDD: mov [ChannelNumber],1 mov [DiskNumber],0 call FindHDD_3 +; mov ax,[Sector512+176] +; mov [0x40006],ax +; mov ax,[Sector512+126] +; mov [0x40008],ax +; mov ax,[Sector512+128] +; mov [0x40008],ax mov [DiskNumber],1 call FindHDD_3 +; mov al,[Sector512+176] +; mov [0x40007],al inc [ChannelNumber] mov [DiskNumber],0 call FindHDD_3 +; mov al,[Sector512+176] +; mov [0x40008],al mov [DiskNumber],1 call FindHDD_1 +; mov al,[Sector512+176] +; mov [0x40009],al + jmp EndFindHDD FindHDD_1: - call DeviceReset - cmp [DevErrorCode],0 - jne FindHDD_2_2 call ReadHDD_ID cmp [DevErrorCode],0 jne FindHDD_2 + cmp [Sector512+6],word 16 + ja FindHDD_2 + cmp [Sector512+12],word 255 + ja FindHDD_2 inc byte [0x40001] - ret + jmp FindHDD_2_2 FindHDD_2: + call DeviceReset + cmp [DevErrorCode],0 + jne FindHDD_2_2 call ReadCD_ID cmp [DevErrorCode],0 jne FindHDD_2_2 diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index eae469c25e..1609cec4b9 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -1,4 +1,4 @@ -СИСТЕМНЫЕ ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ Kolibri 0.6.4.0 +СИСТЕМНЫЕ ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ Kolibri 0.6.5.0 Номер функции помещается в регистр eax. Вызов системной функции осуществляется командой "int 0x40". @@ -844,8 +844,8 @@ db a,b,c,d для версии a.b.c.d db UID_xxx: одно из UID_NONE=0, UID_MENUET=1, UID_KOLIBRI=2 db 'name',0 - ASCIIZ-строка с именем -Для ядра Kolibri 0.6.4.0: -db 0,6,4,0 +Для ядра Kolibri 0.6.5.0: +db 0,6,5,0 db 2 db 'Kolibri',0 @@ -1118,10 +1118,9 @@ db 'Kolibri',0 =========== Функция 21, подфункция 7 - установить базу HD. =========== ====================================================================== База HD нужна для определения, на какой жёсткий диск писать, при -использовании устаревших функций работы с файловой системой и функций, -неявно использующих жёсткий диск (типа подфункции 6 функции 18); -при использовании функций 58 и 70 и современного синтаксиса -/HD0,/HD1,/HD2,/HD3 эти функции сами устанавливают базу. +использовании устаревшего синтаксиса /HD в устаревшей функции 58; +при использовании современного синтаксиса /HD0,/HD1,/HD2,/HD3 +база устанавливается автоматически. Параметры: * eax = 21 - номер функции * ebx = 7 - номер подфункции @@ -1140,11 +1139,9 @@ db 'Kolibri',0 ========== Функция 21, подфункция 8 - установить раздел HD. ========== ====================================================================== Раздел HD нужен для определения, на какой раздел жёсткого диска -писать, при использовании устаревших функций работы с файловой -системой и функций, неявно использующих жёсткий диск (типа -подфункции 6 функции 18); при использовании функций 58 и 70 -и современного синтаксиса /HD0,/HD1,/HD2,/HD3 эти функции сами -устанавливают базу и раздел. +писать, при использовании устаревшего синтаксиса /HD в устаревшей +функции 58; при использовании современного синтаксиса +/HD0,/HD1,/HD2,/HD3 база и раздел устанавливаются автоматически. Параметры: * eax = 21 - номер функции * ebx = 8 - номер подфункции @@ -1552,10 +1549,9 @@ db 'Kolibri',0 ============ Функция 26, подфункция 7 - получить базу HD. ============ ====================================================================== База HD нужна для определения, на какой жёсткий диск писать, при -использовании устаревших функций работы с файловой системой и функций, -неявно использующих жёсткий диск (типа подфункции 6 функции 18); -при использовании функций 58 и 70 и современного синтаксиса -/HD0,/HD1,/HD2,/HD3 эти функции сами устанавливают базу. +использовании устаревшего синтаксиса /HD в устаревшей функции 58; +при использовании современного синтаксиса /HD0,/HD1,/HD2,/HD3 +база устанавливается автоматически. Параметры: * eax = 26 - номер функции * ebx = 7 - номер подфункции @@ -1570,11 +1566,9 @@ db 'Kolibri',0 =========== Функция 26, подфункция 8 - получить раздел HD. =========== ====================================================================== Раздел HD нужен для определения, на какой раздел жёсткого диска -писать, при использовании устаревших функций работы с файловой -системой и функций, неявно использующих жёсткий диск (типа -подфункции 6 функции 18); при использовании функций 58 и 70 и -современного синтаксиса /HD0,/HD1,/HD2,/HD3 эти функции сами -устанавливают базу и раздел. +писать, при использовании устаревшего синтаксиса /HD в устаревшей +функции 58; при использовании современного синтаксиса +/HD0,/HD1,/HD2,/HD3 база и раздел устанавливаются автоматически. Параметры: * eax = 26 - номер функции * ebx = 8 - номер подфункции @@ -2720,24 +2714,26 @@ dword- не поддерживает эту функцию * al = 0 - кабель не подключён * al = 1 - кабель подключён + * ebx разрушается Замечания: * Текущая реализация ядра поддерживает эту функцию только для сетевых карт RTL8139. ====================================================================== -==== Функция 53, подфункция 11 - прочитать данные из стека. ==== +==== Функция 53, подфункция 11 - прочитать данные сетевого стека. ==== ====================================================================== Параметры: * eax = 53 - номер функции * ebx = 11 - номер подфункции - * ecx = номер сокета - * edx = указатель, куда должны быть записаны данные - * esi = размер буфера (максимум байт, которые будут скопированы) -Возвращаемое значение: - * eax = количество скопированных байт + * ecx = хэндл сокета + * edx = указатель на буфер + * esi = число байт для чтения; + * esi = 0 - читать все данные (максимум 4096 байт) +Возвращаемое значение: + * eax = число прочитанных байт + * ebx разрушается Замечания: - * Если размер буфера равен 0, будут скопированы все данные - (максимум 4096 байт) + * Проверки на правильность хэндла не делается. ====================================================================== Функция 53, подфункция 255 - отладочная информация сетевого драйвера. @@ -3692,10 +3688,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B); * Имя драйвера чувствительно к регистру символов. Максимальная длина имени - 16 символов, включая завершающий нулевой символ, остальные символы игнорируются. - * Можно загружать только драйвера, зарегистрированные в системе; - в текущей реализации есть ровно 2 таких драйвера: - * имя SOUND, файл /rd/1/drivers/unisound.obj - * имя INFINITY, файл /rd/1/drivers/infinity.obj + * Драйвер с именем ABC загружается из файла /rd/1/drivers/ABC.obj. ====================================================================== ========== Функция 68, подфункция 17 - управление драйвером. ========= diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index e723876e6e..afec4891a1 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -1,4 +1,4 @@ -SYSTEM FUNCTIONS of OS Kolibri 0.6.4.0 +SYSTEM FUNCTIONS of OS Kolibri 0.6.5.0 Number of the function is located in the register eax. The call of the system function is executed by "int 0x40" command. @@ -676,7 +676,7 @@ Parameters: Returned value: * eax = 0 - success * else eax = error code of the file system -Remarks: +╟рьхўрэш : * All folders in the given path must exist, otherwise function returns value 5, "file not found". @@ -843,8 +843,8 @@ Structure of the buffer: db a,b,c,d for version a.b.c.d db UID_xxx: one of UID_NONE=0, UID_MENUET=1, UID_KOLIBRI=2 db 'name',0 - ASCIIZ-string with the name -For Kolibri 0.6.4.0 kernel: -db 0,6,4,0 +For Kolibri 0.6.5.0 kernel: +db 0,6,5,0 db 2 db 'Kolibri',0 @@ -1112,10 +1112,8 @@ Remarks: ============== Function 21, subfunction 7 - set HD base. ============= ====================================================================== The HD base defines hard disk to write with usage of obsolete -file system functions and functions implicitly using the hard disk -(such as subfunction 6 of function 18); -at usage of function 58 and 70 and modern syntax /HD0,/HD1,/HD2,/HD3 -these function set base themselves. +syntax /HD in obsolete function 58; at usage of modern syntax +/HD0,/HD1,/HD2,/HD3 base is set automatically. Parameters: * eax = 21 - function number * ebx = 7 - subfunction number @@ -1134,10 +1132,9 @@ Remarks: ========= Function 21, subfunction 8 - set used HD partition. ======== ====================================================================== The HD partition defines partition of the hard disk to write with -usage of obsolete file system functions and functions implicitly -using the hard disk (such as subfunction 6 of function 18); +usage of obsolete syntax /HD and obsolete function 58; at usage of functions 58 and 70 and modern syntax /HD0,/HD1,/HD2,/HD3 -these functions set base and partition themselves. +base and partition are set automatically. Parameters: * eax = 21 - function number * ebx = 8 - subfunction number @@ -1532,10 +1529,8 @@ Remarks: ============== Function 26, subfunction 7 - get HD base. ============= ====================================================================== The HD base defines hard disk to write with usage of obsolete -file system functions and functions implicitly using the hard disk -(such as subfunction 6 of function 18); -at usage of function 58 and 70 and modern syntax /HD0,/HD1,/HD2,/HD3 -these function set base themselves. +syntax /HD in obsolete function 58; at usage of modern syntax +/HD0,/HD1,/HD2,/HD3 base is set automatically. Parameters: * eax = 26 - function number * ebx = 7 - subfunction number @@ -1550,10 +1545,9 @@ Remarks: ========= Function 26, subfunction 8 - get used HD partition. ======== ====================================================================== The HD partition defines partition of the hard disk to write with -usage of obsolete file system functions and functions implicitly -using the hard disk (such as subfunction 6 of function 18); +usage of obsolete syntax /HD in obsolete function 58; at usage of functions 58 and 70 and modern syntax /HD0,/HD1,/HD2,/HD3 -these functions set base and partition themselves. +base and partition are set automatically. Parameters: * eax = 26 - function number * ebx = 8 - subfunction number @@ -2696,24 +2690,26 @@ Returned value: does not support this function * al = 0 - Ethernet cable is unplugged * al = 1 - Ethernet cable is plugged + * ebx destroyed Remarks: * The current kernel implementation supports this function only for RTL8139 network cards. ====================================================================== -===== Function 53, subfunction 10 - read data from stack. ===== +======= Function 53, subfunction 11 - read network stack data. ======= ====================================================================== -Parameters: - * eax = 53 - * ebx = 11 - * ecx = socket number - * edx = pointer to where data must be written - * esi = buffer size (max bytes of data to copy) -Returned value: - * eax = number of bytes copied -Remarks: - * if buffer size is zero, all data will be copied - (this will be max 4096 bytes) +Paramters: + * eax = 53 - function number + * ebx = 11 - subfunction number + * ecx = socket handle + * edx = pointer to buffer + * esi = number of bytes to read; + * esi = 0 - read all data (maximum 4096 bytes) +Returned value: + * eax = number of bytes read + * ebx destroyed +Remakrs: + * There is no check on handle correctness. ====================================================================== = Function 53, subfunction 255 - debug information of network driver. @@ -3662,11 +3658,7 @@ Remarks: * Driver name is case-sensitive. Maximum length of the name is 16 characters, including terminating null character, the rest is ignored. - * The function can load only drivers which are registered in the - system; the current implementation contains - exactly 2 such drivers: - * name SOUND, file /rd/1/drivers/unisound.obj - * name INFINITY, file /rd/1/drivers/infinity.obj + * Driver ABC is loaded from file /rd/1/drivers/ABC.obj. ====================================================================== ============ Function 68, subfunction 17 - driver control. =========== diff --git a/kernel/trunk/drivers/infinity.asm b/kernel/trunk/drivers/infinity.asm index a443ab4486..3c0521c757 100644 --- a/kernel/trunk/drivers/infinity.asm +++ b/kernel/trunk/drivers/infinity.asm @@ -700,7 +700,7 @@ mm80 dq 0x8080808080808080 mm_mask dq 0xFF00FF00FF00FF00 ;stream_map dd 0xFFFF ; 16 -version dd 0x00030004 +version dd 0x00030003 szInfinity db 'INFINITY',0 szSound db 'SOUND',0 diff --git a/kernel/trunk/kernel.asm b/kernel/trunk/kernel.asm index 33991282da..698bd733a6 100644 --- a/kernel/trunk/kernel.asm +++ b/kernel/trunk/kernel.asm @@ -77,7 +77,7 @@ drawbar dd __sys_drawbar.forced putpixel dd __sys_putpixel ; } mike.dld -version db 'Kolibri OS version 0.6.3.0 ',13,10,13,10,0 +version db 'Kolibri OS version 0.6.5.0 ',13,10,13,10,0 ;dd endofcode-0x10000 ;db 'Boot02' @@ -231,7 +231,7 @@ iglobal char2 db 'FONTS/CHAR2.MT',0 bootpath db '/KOLIBRI ' bootpath2 db 0 - vmode db 'VMODE.MDR',0 + vmode db 'drivers/VMODE.MDR',0 vrr_m db '/rd/1/VRR_M',0 endg @@ -290,6 +290,8 @@ B32: ; ----------------------------------------- ; movzx eax,byte [0x2f0000+0x9010] ; mouse port ; mov [0xF604],byte 1 ;al + mov al, [0x2F0000+0x901F] ; DMA writing + mov [allow_dma_write], al mov al,[0x2f0000+0x9000] ; bpp mov [0xFBF1],al movzx eax,word [0x2f0000+0x900A] ; X max @@ -2139,7 +2141,7 @@ endg iglobal version_inf: - db 0,6,3,0 ; version 0.6.3.0 + db 0,6,5,0 ; version 0.6.5.0 db UID_KOLIBRI db 'Kolibri',0 version_end: diff --git a/kernel/trunk/memmap.inc b/kernel/trunk/memmap.inc index 9d941725ce..f96db77a7b 100644 --- a/kernel/trunk/memmap.inc +++ b/kernel/trunk/memmap.inc @@ -14,6 +14,7 @@ ; 0:901C byte 0 or 1 : enable MTRR graphics acceleration ; 0:901D byte not used anymore (0 or 1 : enable system log display) ; 0:901E byte 0 or 1 : enable direct lfb write, paging disabled +; 0:901F byte DMA write : 1=yes, 2=no ; 0:9020 8bytes pci data ; 0:9030 byte VRR start enabled 1, 2-no ; 0:9031 word IDEContrRegsBaseAddr diff --git a/kernel/trunk/video/cursors.inc b/kernel/trunk/video/cursors.inc index f9d8063be8..32f7c729bb 100644 --- a/kernel/trunk/video/cursors.inc +++ b/kernel/trunk/video/cursors.inc @@ -442,7 +442,7 @@ proc init_cursors .init: mov [cur_def_interl], ebx - stdcall load_driver, drv_hw_mouse + stdcall load_driver, szHwMouse mov [hw_cursor], eax test eax, eax jz .sw_mouse