From df2e1aa3a9944d67384479418daee42ad6a5fca7 Mon Sep 17 00:00:00 2001 From: "Marat Zakiyanov (Mario79)" Date: Sat, 12 Aug 2006 15:21:53 +0000 Subject: [PATCH] 1) small fix of code VGA. 2) decrease of an error "track of cursor ". git-svn-id: svn://kolibrios.org@119 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/trunk/hid/mousedrv.inc | 151 +++++++--------------------------- kernel/trunk/kernel.asm | 5 +- kernel/trunk/video/vga.inc | 44 +++++----- 3 files changed, 49 insertions(+), 151 deletions(-) diff --git a/kernel/trunk/hid/mousedrv.inc b/kernel/trunk/hid/mousedrv.inc index caf64c032b..c1c3dd3b97 100644 --- a/kernel/trunk/hid/mousedrv.inc +++ b/kernel/trunk/hid/mousedrv.inc @@ -35,47 +35,32 @@ include 'm_com2.inc' ;process_test_m79 db 'K : Process - test Mario79 error 00000000',13,10,0 draw_mouse_under: - ; return old picture - pushad - xor ecx,ecx xor edx,edx - - ;cli ; !!!**** align 4 - mres: - +mres: movzx eax,word [0xfb4a] movzx ebx,word [0xfb4c] - add eax,ecx add ebx,edx - push ecx push edx push eax push ebx - mov eax,edx shl eax,6 shl ecx,2 add eax,ecx add eax,mouseunder mov ecx,[eax] - pop ebx pop eax - - ;;;push edi mov edi, 1 ;force call [putpixel] - ;;;pop edi - pop edx pop ecx - inc ecx cmp ecx, 16 jnz mres @@ -83,35 +68,26 @@ draw_mouse_under: inc edx cmp edx, 24 jnz mres - ;sti ; !!!**** - popad - ret save_draw_mouse: pushad ; save & draw - mov [0xfb4a],ax mov [0xfb4c],bx push eax push ebx mov ecx,0 mov edx,0 - - ;cli ; !!!**** align 4 - drm: - +drm: push eax push ebx push ecx push edx - ; helloworld push ecx -; push eax ebx ecx add eax,ecx ; save picture under mouse add ebx,edx push ecx @@ -125,9 +101,7 @@ save_draw_mouse: add eax,mouseunder mov ebx,[0xfb30] mov [eax],ebx -; pop ecx ebx eax pop ecx - mov edi,edx ; y cycle shl edi,4 ; *16 bytes per row add edi,ecx ; x cycle @@ -142,29 +116,19 @@ save_draw_mouse: call combine_colors mov [0xfb10], ecx pop ecx - - pop edx pop ecx pop ebx pop eax - add eax,ecx ; we have x coord+cycle add ebx,edx ; and y coord+cycle - -; push ecx edi push ecx mov ecx, [0xfb10] mov edi, 1 call [putpixel] pop ecx -; pop edi ecx - -; mnext: - mov ebx,[esp+0] ; pure y coord again mov eax,[esp+4] ; and x - inc ecx ; +1 cycle cmp ecx,16 ; if more than 16 jnz drm @@ -172,17 +136,12 @@ save_draw_mouse: inc edx cmp edx,24 jnz drm - - pop ebx - pop eax - - ;sti ; !!!**** + add esp,8 popad ret combine_colors: - ; in ; ecx - color ( 00 RR GG BB ) ; edi - ref to new color byte @@ -190,7 +149,6 @@ combine_colors: ; ; out ; ecx - new color ( roughly (ecx*[esi]>>8)+([edi]*[esi]>>8) ) - push eax push ebx push edx @@ -205,12 +163,10 @@ combine_colors: mul ebx shr eax, 8 add ecx, eax -; xor eax, eax -; xor ebx, ebx -; mov al, [edi+0] -; mov bl, [esi+0] - movzx eax, byte [edi+0] - movzx ebx, byte [esi+0] + xor eax, eax + xor ebx, ebx + mov al, [edi+0] + mov bl, [esi+0] mul ebx shr eax, 8 add ecx, eax @@ -224,12 +180,10 @@ combine_colors: mul ebx shr eax, 8 add ecx, eax -; xor eax, eax -; xor ebx, ebx -; mov al, [edi+1] -; mov bl, [esi+1] - movzx eax, byte [edi+1] - movzx ebx, byte [esi+1] + xor eax, eax + xor ebx, ebx + mov al, [edi+1] + mov bl, [esi+1] mul ebx shr eax, 8 add ecx, eax @@ -242,16 +196,13 @@ combine_colors: mul ebx shr eax, 8 add ecx, eax -; xor eax, eax -; xor ebx, ebx -; mov al, [edi+2] -; mov bl, [esi+2] - movzx eax, byte [edi+2] - movzx ebx, byte [esi+2] + xor eax, eax + xor ebx, ebx + mov al, [edi+2] + mov bl, [esi+2] mul ebx shr eax, 8 add ecx, eax - pop eax pop edx pop ebx @@ -260,48 +211,30 @@ combine_colors: __sys_disable_mouse: - - cmp dword [0xf204],dword 0 je @f ret - @@: -; cli +@@: pushad - cmp [0x3000],dword 1 je disable_m - mov edx,[0x3000] shl edx,5 add edx,window_data - movzx eax, word [0xfb0a] movzx ebx, word [0xfb0c] - mov ecx,[0xfe00] inc ecx imul ecx,ebx add ecx,eax add ecx, display_data - mov eax, [0x3000] - movzx ebx, byte [ecx] cmp eax,ebx je yes_mouse_disable movzx ebx, byte [ecx+16] cmp eax,ebx je yes_mouse_disable - -; mov ebx,[0xfe00] -; inc ebx -; imul ebx,10 -; add ecx,ebx -; movzx ebx, byte [ecx] -; cmp eax,ebx -; je yes_mouse_disable - mov ebx,[0xfe00] inc ebx imul ebx,10 @@ -309,65 +242,48 @@ __sys_disable_mouse: movzx ebx, byte [ecx] cmp eax,ebx je yes_mouse_disable - movzx ebx, byte [ecx+16] cmp eax,ebx je yes_mouse_disable - jmp no_mouse_disable - - yes_mouse_disable: - +yes_mouse_disable: mov edx,[0x3000] shl edx,5 add edx,window_data - movzx eax, word [0xfb0a] movzx ebx, word [0xfb0c] - mov ecx,[edx+0] ; mouse inside the area ? add eax,14 cmp eax,ecx jb no_mouse_disable sub eax,14 - add ecx,[edx+8] cmp eax,ecx jg no_mouse_disable - mov ecx,[edx+4] add ebx,20 cmp ebx,ecx jb no_mouse_disable sub ebx,20 - add ecx,[edx+12] cmp ebx,ecx jg no_mouse_disable - - disable_m: +disable_m: cmp dword [0xf204],dword 0 - jne @f + jne no_mouse_disable cli - call draw_mouse_under + call draw_mouse_under sti -; @@: mov [0xf204],dword 1 -; inc dword [0xf204] - @@: - - no_mouse_disable: - +no_mouse_disable: popad -; sti ret __sys_draw_pointer: - cmp [mouse_pause],0 je @f ret - @@: +@@: push eax mov eax,[timer_ticks] sub eax,[MouseTickCounter] @@ -375,49 +291,38 @@ __sys_draw_pointer: ja @f pop eax ret - @@: +@@: mov eax,[timer_ticks] mov [MouseTickCounter],eax pop eax -; cli - pushad cmp dword [0xf204],dword 0 ; mouse visible ? je chms00 - mov [0xf204], dword 0 movzx ebx,word [0xfb0c] movzx eax,word [0xfb0a] cli call save_draw_mouse sti - nodmu2: +nodmu2: popad - ret - - chms00: - +chms00: movzx ecx,word [0xfb4a] movzx edx,word [0xfb4c] - movzx ebx,word [0xfb0c] movzx eax,word [0xfb0a] - cmp eax,ecx jne redrawmouse - cmp ebx,edx jne redrawmouse - jmp nodmp - - redrawmouse: +redrawmouse: cli call draw_mouse_under call save_draw_mouse sti - nodmp: +nodmp: popad -; sti ret + diff --git a/kernel/trunk/kernel.asm b/kernel/trunk/kernel.asm index 9cd9f3f4c1..8e525d765f 100644 --- a/kernel/trunk/kernel.asm +++ b/kernel/trunk/kernel.asm @@ -4035,9 +4035,9 @@ sys_putimage: @@: mov eax, vesa20_putimage .doit: -; inc [mouse_pause] + inc [mouse_pause] call eax -; dec [mouse_pause] + dec [mouse_pause] jmp [draw_pointer] ; eax x beginning @@ -4881,7 +4881,6 @@ syscall_writeramdiskfile: ; WriteRamdiskFile align 4 syscall_getpixel: ; GetPixel - mov ecx,[0xfe00] inc ecx xor edx,edx diff --git a/kernel/trunk/video/vga.inc b/kernel/trunk/video/vga.inc index e01d4dbf51..3de0d0efbc 100644 --- a/kernel/trunk/video/vga.inc +++ b/kernel/trunk/video/vga.inc @@ -172,10 +172,7 @@ checkVga_N13: m13pix: lodsd cmp eax,0 - jne @f - xor eax,eax - jmp .save_pixel - @@: + je .save_pixel push eax mov ebx,eax and eax,(128+64+32) ; blue @@ -198,7 +195,10 @@ checkVga_N13: popad ret - novesal_1: +VGA_drawbackground: +; draw all + cmp [0xfe0c],dword 0x12 + jne .end pushad mov esi,[0xfe80] mov edi,0xa0000 @@ -217,6 +217,7 @@ checkVga_N13: jnz @r call VGA_draw_long_line_1 popad + .end: ret VGA_draw_long_line: @@ -263,25 +264,25 @@ VGA_draw_32_pixels: dec cl shl ch,cl cmp al,85 - jb .p13green + jbe .p13green or [ebp],ch cmp al,170 - jb .p13green + jbe .p13green or [ebp+12],ch .p13green: cmp ah,85 - jb .p13red + jbe .p13red or [ebp+4],ch cmp ah,170 - jb .p13red + jbe .p13red or [ebp+12],ch .p13red: shr eax,8 cmp ah,85 - jb .p13cont + jbe .p13cont or [ebp+8],ch cmp ah,170 - jb .p13cont + jbe .p13cont or [ebp+12],ch .p13cont: ror eax,8 @@ -333,25 +334,25 @@ VGA_putpixel: cmp eax,0 je .p13cont cmp al,85 - jb .p13green + jbe .p13green or dl,0x01 cmp al,170 - jb .p13green + jbe .p13green or dl,0x08 .p13green: cmp ah,85 - jb .p13red + jbe .p13red or dl,0x02 cmp ah,170 - jb .p13red + jbe .p13red or dl,0x08 .p13red: shr eax,8 cmp ah,85 - jb .p13cont + jbe .p13cont or dl,0x04 cmp ah,170 - jb .p13cont + jbe .p13cont or dl,0x08 .p13cont: ror edx,8 @@ -375,7 +376,6 @@ VGA__putimage: cmp [0xfe0c],dword 0x12 jne @f pushad - ; calculate absolute (i.e. screen) coordinates rol edx,16 movzx eax,dx rol edx,16 @@ -443,10 +443,4 @@ VGA_draw_long_line_1: pop edi esi edx ebx ret -VGA_drawbackground: -; draw all - cmp [0xfe0c],dword 0x12 - jne @f - call novesal_1 -@@: - ret +