forked from KolibriOS/kolibrios
Video draw and VESA - some speedup.
git-svn-id: svn://kolibrios.org@2453 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
c039e0039c
commit
54ec7e5e23
@ -164,17 +164,17 @@ dll_cur_addr dd MIN_DEFAULT_DLL_ADDR
|
|||||||
|
|
||||||
|
|
||||||
; mike.dld {
|
; mike.dld {
|
||||||
db 0
|
;db 0
|
||||||
dd servetable-0x10000
|
;dd servetable-0x10000
|
||||||
align 4
|
;align 4
|
||||||
draw_line dd __sys_draw_line
|
;draw_line dd __sys_draw_line
|
||||||
draw_pointer dd __sys_draw_pointer
|
;draw_pointer dd __sys_draw_pointer
|
||||||
;//mike.dld, 2006-08-02 [
|
;//mike.dld, 2006-08-02 [
|
||||||
;drawbar dd __sys_drawbar
|
;;drawbar dd __sys_drawbar
|
||||||
;drawbar dd __sys_drawbar.forced
|
;;drawbar dd __sys_drawbar.forced
|
||||||
drawbar dd vesa20_drawbar
|
;drawbar dd vesa20_drawbar
|
||||||
;//mike.dld, 2006-08-02 ]
|
;//mike.dld, 2006-08-02 ]
|
||||||
putpixel dd __sys_putpixel
|
;putpixel dd __sys_putpixel
|
||||||
; } mike.dld
|
; } mike.dld
|
||||||
|
|
||||||
|
|
||||||
|
@ -133,7 +133,8 @@ syscall_button: ;///// system function 8 //////////////////////////////////////
|
|||||||
call button._.button_dececx
|
call button._.button_dececx
|
||||||
push edi
|
push edi
|
||||||
xor edi, edi
|
xor edi, edi
|
||||||
call [draw_line]
|
; call [draw_line]
|
||||||
|
call __sys_draw_line
|
||||||
pop edi
|
pop edi
|
||||||
add ebx, 0x00010001
|
add ebx, 0x00010001
|
||||||
dec edx
|
dec edx
|
||||||
@ -164,7 +165,8 @@ syscall_button: ;///// system function 8 //////////////////////////////////////
|
|||||||
xor edi, edi
|
xor edi, edi
|
||||||
mov ecx, esi
|
mov ecx, esi
|
||||||
call button._.incecx
|
call button._.incecx
|
||||||
call [draw_line]
|
; call [draw_line]
|
||||||
|
call __sys_draw_line
|
||||||
|
|
||||||
; bottom border
|
; bottom border
|
||||||
movzx edx, word[esp + 4 + 0]
|
movzx edx, word[esp + 4 + 0]
|
||||||
@ -173,7 +175,8 @@ syscall_button: ;///// system function 8 //////////////////////////////////////
|
|||||||
add ebx, edx
|
add ebx, edx
|
||||||
mov ecx, esi
|
mov ecx, esi
|
||||||
call button._.dececx
|
call button._.dececx
|
||||||
call [draw_line]
|
; call [draw_line]
|
||||||
|
call __sys_draw_line
|
||||||
|
|
||||||
; left border
|
; left border
|
||||||
pop ebx
|
pop ebx
|
||||||
@ -188,7 +191,8 @@ syscall_button: ;///// system function 8 //////////////////////////////////////
|
|||||||
pop edx
|
pop edx
|
||||||
mov ecx, esi
|
mov ecx, esi
|
||||||
call button._.incecx
|
call button._.incecx
|
||||||
call [draw_line]
|
; call [draw_line]
|
||||||
|
call __sys_draw_line
|
||||||
|
|
||||||
; right border
|
; right border
|
||||||
mov dx, [esp + 4]
|
mov dx, [esp + 4]
|
||||||
@ -198,7 +202,8 @@ syscall_button: ;///// system function 8 //////////////////////////////////////
|
|||||||
add ebx, 0x00010000
|
add ebx, 0x00010000
|
||||||
mov ecx, esi
|
mov ecx, esi
|
||||||
call button._.dececx
|
call button._.dececx
|
||||||
call [draw_line]
|
; call [draw_line]
|
||||||
|
call __sys_draw_line
|
||||||
|
|
||||||
pop ecx ebx
|
pop ecx ebx
|
||||||
|
|
||||||
|
@ -77,7 +77,8 @@ align 4
|
|||||||
jz .pixloop1end
|
jz .pixloop1end
|
||||||
jnc .nopix
|
jnc .nopix
|
||||||
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
||||||
call [putpixel]
|
; call [putpixel]
|
||||||
|
call __sys_putpixel
|
||||||
jmp .pixloop1cont
|
jmp .pixloop1cont
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -87,7 +88,8 @@ align 4
|
|||||||
push ecx
|
push ecx
|
||||||
mov ecx, [esp+4+20h+20h]
|
mov ecx, [esp+4+20h+20h]
|
||||||
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
||||||
call [putpixel]
|
; call [putpixel]
|
||||||
|
call __sys_putpixel
|
||||||
pop ecx
|
pop ecx
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -123,7 +125,8 @@ align 4
|
|||||||
shr dl, 1
|
shr dl, 1
|
||||||
jnc .nopix2
|
jnc .nopix2
|
||||||
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
||||||
call [putpixel]
|
; call [putpixel]
|
||||||
|
call __sys_putpixel
|
||||||
jmp .pixloop2cont
|
jmp .pixloop2cont
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -133,7 +136,8 @@ align 4
|
|||||||
push ecx
|
push ecx
|
||||||
mov ecx, [esp+12+20h+20h]
|
mov ecx, [esp+12+20h+20h]
|
||||||
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
||||||
call [putpixel]
|
; call [putpixel]
|
||||||
|
call __sys_putpixel
|
||||||
pop ecx
|
pop ecx
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
|
@ -401,7 +401,8 @@ _dw3l:
|
|||||||
inc ecx
|
inc ecx
|
||||||
mov edx, [_skinh]
|
mov edx, [_skinh]
|
||||||
mov edi, [common_colours+4]; standard grab color
|
mov edi, [common_colours+4]; standard grab color
|
||||||
call [drawbar]
|
; call [drawbar]
|
||||||
|
call vesa20_drawbar
|
||||||
jmp draw_clientbar
|
jmp draw_clientbar
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -428,7 +429,8 @@ draw_clientbar:
|
|||||||
mov edi, [esi+WDATA.cl_workarea]
|
mov edi, [esi+WDATA.cl_workarea]
|
||||||
test edi, 0x40000000
|
test edi, 0x40000000
|
||||||
jnz _noinside2
|
jnz _noinside2
|
||||||
call [drawbar]
|
; call [drawbar]
|
||||||
|
call vesa20_drawbar
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
_noinside2:
|
_noinside2:
|
||||||
|
@ -60,7 +60,8 @@ align 4
|
|||||||
|
|
||||||
; type II - only reserve area, no draw
|
; type II - only reserve area, no draw
|
||||||
; call sys_window_mouse
|
; call sys_window_mouse
|
||||||
call [draw_pointer]
|
; call [draw_pointer]
|
||||||
|
call __sys_draw_pointer
|
||||||
jmp .exit
|
jmp .exit
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -681,14 +682,16 @@ align 4
|
|||||||
test ecx, 1 shl 25
|
test ecx, 1 shl 25
|
||||||
jnz @f
|
jnz @f
|
||||||
sub ecx, 1 shl 25
|
sub ecx, 1 shl 25
|
||||||
call [draw_line]
|
; call [draw_line]
|
||||||
|
call __sys_draw_line
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@@:
|
@@:
|
||||||
; draw bottom border
|
; draw bottom border
|
||||||
mov ebx, [esp - 2]
|
mov ebx, [esp - 2]
|
||||||
pop bx
|
pop bx
|
||||||
call [draw_line]
|
; call [draw_line]
|
||||||
|
call __sys_draw_line
|
||||||
|
|
||||||
pop ebx
|
pop ebx
|
||||||
add ebx, 1 * 65536 - 1
|
add ebx, 1 * 65536 - 1
|
||||||
@ -698,12 +701,14 @@ align 4
|
|||||||
push eax
|
push eax
|
||||||
rol eax, 16
|
rol eax, 16
|
||||||
pop ax
|
pop ax
|
||||||
call [draw_line]
|
; call [draw_line]
|
||||||
|
call __sys_draw_line
|
||||||
|
|
||||||
; draw right border
|
; draw right border
|
||||||
mov eax, [esp - 2]
|
mov eax, [esp - 2]
|
||||||
pop ax
|
pop ax
|
||||||
call [draw_line]
|
; call [draw_line]
|
||||||
|
call __sys_draw_line
|
||||||
|
|
||||||
pop edi ecx ebx eax
|
pop edi ecx ebx eax
|
||||||
ret
|
ret
|
||||||
@ -760,7 +765,8 @@ align 4
|
|||||||
align 4
|
align 4
|
||||||
@@:
|
@@:
|
||||||
and ecx, 0x00ffffff
|
and ecx, 0x00ffffff
|
||||||
call [draw_line]
|
; call [draw_line]
|
||||||
|
call __sys_draw_line
|
||||||
inc edx
|
inc edx
|
||||||
cmp edx, [esp]
|
cmp edx, [esp]
|
||||||
jb .next_line
|
jb .next_line
|
||||||
@ -813,7 +819,8 @@ drawwindow_I: ;////////////////////////////////////////////////////////////////
|
|||||||
mov ebx, 21
|
mov ebx, 21
|
||||||
mov ecx, [esi + WDATA.box.width]
|
mov ecx, [esi + WDATA.box.width]
|
||||||
mov edx, [esi + WDATA.box.height]
|
mov edx, [esi + WDATA.box.height]
|
||||||
call [drawbar]
|
; call [drawbar]
|
||||||
|
call vesa20_drawbar
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.exit:
|
.exit:
|
||||||
@ -871,7 +878,8 @@ align 4
|
|||||||
@@:
|
@@:
|
||||||
mov [esi + WDATA.cl_titlebar], ecx
|
mov [esi + WDATA.cl_titlebar], ecx
|
||||||
and ecx, 0x00ffffff
|
and ecx, 0x00ffffff
|
||||||
call [draw_line]
|
; call [draw_line]
|
||||||
|
call __sys_draw_line
|
||||||
inc edx
|
inc edx
|
||||||
cmp edx, [esp]
|
cmp edx, [esp]
|
||||||
jb .next_line
|
jb .next_line
|
||||||
@ -951,7 +959,8 @@ align 4
|
|||||||
mov edx, [esi + WDATA.box.height]
|
mov edx, [esi + WDATA.box.height]
|
||||||
sub ecx, 4
|
sub ecx, 4
|
||||||
sub edx, 4
|
sub edx, 4
|
||||||
call [drawbar]
|
; call [drawbar]
|
||||||
|
call vesa20_drawbar
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.exit:
|
.exit:
|
||||||
@ -2314,7 +2323,8 @@ align 4
|
|||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.exit:
|
.exit:
|
||||||
call [draw_pointer]
|
; call [draw_pointer]
|
||||||
|
call __sys_draw_pointer
|
||||||
ret
|
ret
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
|
@ -84,7 +84,8 @@ mres:
|
|||||||
pop eax
|
pop eax
|
||||||
mov edi, 1 ; force
|
mov edi, 1 ; force
|
||||||
or ecx, 0x04000000 ; don't save to mouseunder area
|
or ecx, 0x04000000 ; don't save to mouseunder area
|
||||||
call [putpixel]
|
; call [putpixel]
|
||||||
|
call __sys_putpixel
|
||||||
pop edx
|
pop edx
|
||||||
pop ecx
|
pop ecx
|
||||||
inc ecx
|
inc ecx
|
||||||
@ -201,7 +202,8 @@ drm:
|
|||||||
mov ecx, [MOUSE_COLOR_MEM]
|
mov ecx, [MOUSE_COLOR_MEM]
|
||||||
mov edi, 1 ; force
|
mov edi, 1 ; force
|
||||||
or ecx, 0x04000000 ; don't save to mouseunder area
|
or ecx, 0x04000000 ; don't save to mouseunder area
|
||||||
call [putpixel]
|
; call [putpixel]
|
||||||
|
call __sys_putpixel
|
||||||
pop ecx
|
pop ecx
|
||||||
mov ebx, [esp+0] ; pure y coord again
|
mov ebx, [esp+0] ; pure y coord again
|
||||||
mov eax, [esp+4] ; and x
|
mov eax, [esp+4] ; and x
|
||||||
|
@ -1042,7 +1042,8 @@ boot_log:
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
align 32
|
align 32
|
||||||
osloop:
|
osloop:
|
||||||
call [draw_pointer]
|
; call [draw_pointer]
|
||||||
|
call __sys_draw_pointer
|
||||||
call window_check_events
|
call window_check_events
|
||||||
call mouse_check_events
|
call mouse_check_events
|
||||||
call checkmisc
|
call checkmisc
|
||||||
@ -1974,7 +1975,8 @@ restore_default_cursor_before_killing:
|
|||||||
mov [current_cursor], esi
|
mov [current_cursor], esi
|
||||||
@@:
|
@@:
|
||||||
mov [redrawmouse_unconditional], 1
|
mov [redrawmouse_unconditional], 1
|
||||||
call [draw_pointer]
|
; call [draw_pointer]
|
||||||
|
call __sys_draw_pointer
|
||||||
ret
|
ret
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
iglobal
|
iglobal
|
||||||
@ -3745,13 +3747,15 @@ dbrv20:
|
|||||||
cmp [BgrDrawMode], dword 1
|
cmp [BgrDrawMode], dword 1
|
||||||
jne bgrstr
|
jne bgrstr
|
||||||
call vesa20_drawbackground_tiled
|
call vesa20_drawbackground_tiled
|
||||||
call [draw_pointer]
|
; call [draw_pointer]
|
||||||
|
call __sys_draw_pointer
|
||||||
ret
|
ret
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
bgrstr:
|
bgrstr:
|
||||||
call vesa20_drawbackground_stretch
|
call vesa20_drawbackground_stretch
|
||||||
call [draw_pointer]
|
; call [draw_pointer]
|
||||||
|
call __sys_draw_pointer
|
||||||
ret
|
ret
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -4523,7 +4527,8 @@ syscall_setpixel: ; SetPixel
|
|||||||
add ebx, [edi+APPDATA.wnd_clientbox.top]
|
add ebx, [edi+APPDATA.wnd_clientbox.top]
|
||||||
xor edi, edi ; no force
|
xor edi, edi ; no force
|
||||||
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
||||||
jmp [putpixel]
|
; jmp [putpixel]
|
||||||
|
jmp __sys_putpixel
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
|
|
||||||
@ -4580,7 +4585,8 @@ syscall_drawrect: ; DrawRect
|
|||||||
add ebx, [esi + APPDATA.wnd_clientbox.top]
|
add ebx, [esi + APPDATA.wnd_clientbox.top]
|
||||||
add ecx, eax
|
add ecx, eax
|
||||||
add edx, ebx
|
add edx, ebx
|
||||||
jmp [drawbar]
|
; jmp [drawbar]
|
||||||
|
jmp vesa20_drawbar
|
||||||
.drectr:
|
.drectr:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -4751,8 +4757,8 @@ syscall_drawline: ; DrawLine
|
|||||||
xor edi, edi
|
xor edi, edi
|
||||||
add ebx, ebp
|
add ebx, ebp
|
||||||
mov ecx, edx
|
mov ecx, edx
|
||||||
jmp [draw_line]
|
; jmp [draw_line]
|
||||||
|
jmp __sys_draw_line
|
||||||
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
|
@ -421,7 +421,8 @@ align 4
|
|||||||
jnz .outer32
|
jnz .outer32
|
||||||
|
|
||||||
.done:
|
.done:
|
||||||
call [draw_pointer]
|
; call [draw_pointer]
|
||||||
|
call __sys_draw_pointer
|
||||||
.L57:
|
.L57:
|
||||||
add esp, 72
|
add esp, 72
|
||||||
pop ebx
|
pop ebx
|
||||||
|
@ -285,8 +285,12 @@ align 4
|
|||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
put_image_end_24:
|
put_image_end_24:
|
||||||
mov edi, [putimg.real_sy]
|
mov edi, [putimg.real_sy]
|
||||||
|
;--------------------------------------
|
||||||
|
; check for hardware cursor
|
||||||
cmp [_display.select_cursor], 0
|
cmp [_display.select_cursor], 0
|
||||||
jne put_image_end_24_new
|
je put_image_end_24_old
|
||||||
|
cmp [_display.select_cursor], select_cursor
|
||||||
|
je put_image_end_24_new
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.new_line:
|
.new_line:
|
||||||
@ -300,23 +304,6 @@ align 4
|
|||||||
cmp [ebp], bl
|
cmp [ebp], bl
|
||||||
jne .skip
|
jne .skip
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
; check for hardware cursor
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne .no_mouseunder
|
|
||||||
push ecx
|
|
||||||
|
|
||||||
neg ecx
|
|
||||||
add ecx, [putimg.real_sx_and_abs_cx + 4]
|
|
||||||
shl ecx, 16
|
|
||||||
add ecx, [putimg.real_sy_and_abs_cy + 4]
|
|
||||||
sub ecx, edi
|
|
||||||
|
|
||||||
; check mouse area for putpixel
|
|
||||||
call check_mouse_area_for_putpixel
|
|
||||||
pop ecx
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.no_mouseunder:
|
|
||||||
; store to real LFB
|
; store to real LFB
|
||||||
mov [LFB_BASE+edx], ax
|
mov [LFB_BASE+edx], ax
|
||||||
shr eax, 16
|
shr eax, 16
|
||||||
@ -355,8 +342,68 @@ align 4
|
|||||||
add esp, putimg.stack_data
|
add esp, putimg.stack_data
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
|
put_image_end_24_old:
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
|
.new_line:
|
||||||
|
mov ecx, [putimg.real_sx]
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
.new_x:
|
||||||
|
push [putimg.edi]
|
||||||
|
mov eax, [putimg.ebp+4]
|
||||||
|
call eax
|
||||||
|
cmp [ebp], bl
|
||||||
|
jne .skip
|
||||||
|
;--------------------------------------
|
||||||
|
push ecx
|
||||||
|
|
||||||
|
neg ecx
|
||||||
|
add ecx, [putimg.real_sx_and_abs_cx + 4]
|
||||||
|
shl ecx, 16
|
||||||
|
add ecx, [putimg.real_sy_and_abs_cy + 4]
|
||||||
|
sub ecx, edi
|
||||||
|
|
||||||
|
; check mouse area for putpixel
|
||||||
|
call check_mouse_area_for_putpixel
|
||||||
|
pop ecx
|
||||||
|
; store to real LFB
|
||||||
|
mov [LFB_BASE+edx], ax
|
||||||
|
shr eax, 16
|
||||||
|
mov [LFB_BASE+edx+2], al
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
.skip:
|
||||||
|
add edx, 3
|
||||||
|
inc ebp
|
||||||
|
dec ecx
|
||||||
|
jnz .new_x
|
||||||
|
|
||||||
|
add esi, [putimg.line_increment]
|
||||||
|
add edx, [putimg.screen_newline];[BytesPerScanLine]
|
||||||
|
add ebp, [putimg.winmap_newline];[Screen_Max_X]
|
||||||
|
|
||||||
|
cmp [putimg.ebp], putimage_get1bpp
|
||||||
|
jz .correct
|
||||||
|
cmp [putimg.ebp], putimage_get2bpp
|
||||||
|
jz .correct
|
||||||
|
cmp [putimg.ebp], putimage_get4bpp
|
||||||
|
jnz @f
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
.correct:
|
||||||
|
mov eax, [putimg.edi]
|
||||||
|
mov byte [eax], 80h
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
@@:
|
||||||
|
dec edi
|
||||||
|
jnz .new_line
|
||||||
|
jmp put_image_end_24.finish
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
put_image_end_24_new:
|
put_image_end_24_new:
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -371,10 +418,6 @@ align 4
|
|||||||
cmp [ebp], bl
|
cmp [ebp], bl
|
||||||
jne .skip
|
jne .skip
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
; check for hardware cursor
|
|
||||||
cmp [_display.select_cursor], select_cursor
|
|
||||||
jne .no_mouseunder
|
|
||||||
|
|
||||||
push ecx
|
push ecx
|
||||||
mov ecx, [putimg.real_sy_and_abs_cy + 4]
|
mov ecx, [putimg.real_sy_and_abs_cy + 4]
|
||||||
sub ecx, edi
|
sub ecx, edi
|
||||||
@ -403,9 +446,6 @@ align 4
|
|||||||
align 4
|
align 4
|
||||||
.no_mouse_area:
|
.no_mouse_area:
|
||||||
pop ecx
|
pop ecx
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.no_mouseunder:
|
|
||||||
; store to real LFB
|
; store to real LFB
|
||||||
mov [LFB_BASE+edx], ax
|
mov [LFB_BASE+edx], ax
|
||||||
shr eax, 16
|
shr eax, 16
|
||||||
@ -443,8 +483,12 @@ align 4
|
|||||||
align 4
|
align 4
|
||||||
put_image_end_32:
|
put_image_end_32:
|
||||||
mov edi, [putimg.real_sy]
|
mov edi, [putimg.real_sy]
|
||||||
|
;--------------------------------------
|
||||||
|
; check for hardware cursor
|
||||||
cmp [_display.select_cursor], 0
|
cmp [_display.select_cursor], 0
|
||||||
jne put_image_end_32_new
|
je put_image_end_32_old
|
||||||
|
cmp [_display.select_cursor], select_cursor
|
||||||
|
je put_image_end_32_new
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.new_line:
|
.new_line:
|
||||||
@ -458,24 +502,6 @@ align 4
|
|||||||
cmp [ebp], bl
|
cmp [ebp], bl
|
||||||
jne .skip
|
jne .skip
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
; check for hardware cursor
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne .no_mouseunder
|
|
||||||
|
|
||||||
push ecx
|
|
||||||
|
|
||||||
neg ecx
|
|
||||||
add ecx, [putimg.real_sx_and_abs_cx + 4]
|
|
||||||
shl ecx, 16
|
|
||||||
add ecx, [putimg.real_sy_and_abs_cy + 4]
|
|
||||||
sub ecx, edi
|
|
||||||
|
|
||||||
; check mouse area for putpixel
|
|
||||||
call check_mouse_area_for_putpixel
|
|
||||||
pop ecx
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.no_mouseunder:
|
|
||||||
; store to real LFB
|
; store to real LFB
|
||||||
mov [LFB_BASE+edx], eax
|
mov [LFB_BASE+edx], eax
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
@ -519,8 +545,66 @@ align 4
|
|||||||
@@:
|
@@:
|
||||||
mov [EGA_counter], 1
|
mov [EGA_counter], 1
|
||||||
ret
|
ret
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
|
put_image_end_32_old:
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
|
.new_line:
|
||||||
|
mov ecx, [putimg.real_sx]
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
.new_x:
|
||||||
|
push [putimg.edi]
|
||||||
|
mov eax, [putimg.ebp+4]
|
||||||
|
call eax
|
||||||
|
cmp [ebp], bl
|
||||||
|
jne .skip
|
||||||
|
;--------------------------------------
|
||||||
|
push ecx
|
||||||
|
|
||||||
|
neg ecx
|
||||||
|
add ecx, [putimg.real_sx_and_abs_cx + 4]
|
||||||
|
shl ecx, 16
|
||||||
|
add ecx, [putimg.real_sy_and_abs_cy + 4]
|
||||||
|
sub ecx, edi
|
||||||
|
|
||||||
|
; check mouse area for putpixel
|
||||||
|
call check_mouse_area_for_putpixel
|
||||||
|
pop ecx
|
||||||
|
; store to real LFB
|
||||||
|
mov [LFB_BASE+edx], eax
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
.skip:
|
||||||
|
add edx, 4
|
||||||
|
inc ebp
|
||||||
|
dec ecx
|
||||||
|
jnz .new_x
|
||||||
|
|
||||||
|
add esi, [putimg.line_increment]
|
||||||
|
add edx, [putimg.screen_newline];[BytesPerScanLine]
|
||||||
|
add ebp, [putimg.winmap_newline];[Screen_Max_X]
|
||||||
|
|
||||||
|
cmp [putimg.ebp], putimage_get1bpp
|
||||||
|
jz .correct
|
||||||
|
cmp [putimg.ebp], putimage_get2bpp
|
||||||
|
jz .correct
|
||||||
|
cmp [putimg.ebp], putimage_get4bpp
|
||||||
|
jnz @f
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
.correct:
|
||||||
|
mov eax, [putimg.edi]
|
||||||
|
mov byte [eax], 80h
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
@@:
|
||||||
|
dec edi
|
||||||
|
jnz .new_line
|
||||||
|
jmp put_image_end_32.finish
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
put_image_end_32_new:
|
put_image_end_32_new:
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -535,9 +619,6 @@ align 4
|
|||||||
cmp [ebp], bl
|
cmp [ebp], bl
|
||||||
jne .skip
|
jne .skip
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
; check for hardware cursor
|
|
||||||
cmp [_display.select_cursor], select_cursor
|
|
||||||
jne .no_mouseunder
|
|
||||||
push ecx
|
push ecx
|
||||||
mov ecx, [putimg.real_sy_and_abs_cy + 4]
|
mov ecx, [putimg.real_sy_and_abs_cy + 4]
|
||||||
sub ecx, edi
|
sub ecx, edi
|
||||||
@ -566,9 +647,6 @@ align 4
|
|||||||
align 4
|
align 4
|
||||||
.no_mouse_area:
|
.no_mouse_area:
|
||||||
pop ecx
|
pop ecx
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.no_mouseunder:
|
|
||||||
; store to real LFB
|
; store to real LFB
|
||||||
mov [LFB_BASE+edx], eax
|
mov [LFB_BASE+edx], eax
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
@ -975,7 +1053,8 @@ align 4
|
|||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
shr ebx, 16
|
shr ebx, 16
|
||||||
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
||||||
call [putpixel]
|
; call [putpixel]
|
||||||
|
call __sys_putpixel
|
||||||
pop ebx eax
|
pop ebx eax
|
||||||
add ebx, ebp ; y = y+dy
|
add ebx, ebp ; y = y+dy
|
||||||
add eax, esi ; x = x+dx
|
add eax, esi ; x = x+dx
|
||||||
@ -985,7 +1064,8 @@ align 4
|
|||||||
mov eax, [dl_x2]
|
mov eax, [dl_x2]
|
||||||
mov ebx, [dl_y2]
|
mov ebx, [dl_y2]
|
||||||
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
||||||
call [putpixel]
|
; call [putpixel]
|
||||||
|
call __sys_putpixel
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.exit:
|
.exit:
|
||||||
@ -1010,7 +1090,8 @@ hline:
|
|||||||
align 4
|
align 4
|
||||||
@@:
|
@@:
|
||||||
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
||||||
call [putpixel]
|
; call [putpixel]
|
||||||
|
call __sys_putpixel
|
||||||
inc eax
|
inc eax
|
||||||
cmp eax, edx
|
cmp eax, edx
|
||||||
jle @b
|
jle @b
|
||||||
@ -1033,7 +1114,8 @@ vline:
|
|||||||
align 4
|
align 4
|
||||||
@@:
|
@@:
|
||||||
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
and ecx, 0xFBFFFFFF ;negate 0x04000000 save to mouseunder area
|
||||||
call [putpixel]
|
; call [putpixel]
|
||||||
|
call __sys_putpixel
|
||||||
inc ebx
|
inc ebx
|
||||||
cmp ebx, edx
|
cmp ebx, edx
|
||||||
jle @b
|
jle @b
|
||||||
@ -1199,8 +1281,12 @@ draw_bar_end_24:
|
|||||||
; edx - pointer to screen
|
; edx - pointer to screen
|
||||||
; esi - counter
|
; esi - counter
|
||||||
; edi - counter
|
; edi - counter
|
||||||
|
;--------------------------------------
|
||||||
|
; check for hardware cursor
|
||||||
cmp [_display.select_cursor], 0
|
cmp [_display.select_cursor], 0
|
||||||
jne draw_bar_end_24_new
|
je draw_bar_end_24_old
|
||||||
|
cmp [_display.select_cursor], select_cursor
|
||||||
|
je draw_bar_end_24_new
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.new_y:
|
.new_y:
|
||||||
@ -1211,26 +1297,10 @@ align 4
|
|||||||
cmp byte [ebp], bl
|
cmp byte [ebp], bl
|
||||||
jne .skip
|
jne .skip
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
; check for hardware cursor
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne .no_mouseunder
|
|
||||||
|
|
||||||
mov ecx, [drbar.real_sx_and_abs_cx]
|
|
||||||
sub ecx, edi
|
|
||||||
shl ecx, 16
|
|
||||||
add ecx, [drbar.real_sy_and_abs_cy]
|
|
||||||
sub ecx, esi
|
|
||||||
|
|
||||||
; check mouse area for putpixel
|
|
||||||
call check_mouse_area_for_putpixel
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.no_mouseunder:
|
|
||||||
; store to real LFB
|
; store to real LFB
|
||||||
mov [edx], ax
|
mov [edx], ax
|
||||||
shr eax, 16
|
shr eax, 16
|
||||||
mov [edx + 2], al
|
mov [edx + 2], al
|
||||||
mov eax, [drbar.color]
|
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.skip:
|
.skip:
|
||||||
@ -1260,8 +1330,56 @@ align 4
|
|||||||
popad
|
popad
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
ret
|
ret
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
|
draw_bar_end_24_old:
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
|
.new_y:
|
||||||
|
mov edi, [drbar.real_sx]
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
.new_x:
|
||||||
|
cmp byte [ebp], bl
|
||||||
|
jne .skip
|
||||||
|
;--------------------------------------
|
||||||
|
mov ecx, [drbar.real_sx_and_abs_cx]
|
||||||
|
sub ecx, edi
|
||||||
|
shl ecx, 16
|
||||||
|
add ecx, [drbar.real_sy_and_abs_cy]
|
||||||
|
sub ecx, esi
|
||||||
|
; check mouse area for putpixel
|
||||||
|
call check_mouse_area_for_putpixel
|
||||||
|
; store to real LFB
|
||||||
|
mov [edx], ax
|
||||||
|
shr eax, 16
|
||||||
|
mov [edx + 2], al
|
||||||
|
mov eax, [drbar.color]
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
.skip:
|
||||||
|
; add pixel
|
||||||
|
add edx, 3
|
||||||
|
inc ebp
|
||||||
|
dec edi
|
||||||
|
jnz .new_x
|
||||||
|
; add line
|
||||||
|
add edx, [drbar.line_inc_scr]
|
||||||
|
add ebp, [drbar.line_inc_map]
|
||||||
|
; drawing gradient bars
|
||||||
|
test bh, 0x80
|
||||||
|
jz @f
|
||||||
|
test al, al
|
||||||
|
jz @f
|
||||||
|
dec al
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
@@:
|
||||||
|
dec esi
|
||||||
|
jnz .new_y
|
||||||
|
jmp draw_bar_end_24.end
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
draw_bar_end_24_new:
|
draw_bar_end_24_new:
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -1273,10 +1391,6 @@ align 4
|
|||||||
cmp byte [ebp], bl
|
cmp byte [ebp], bl
|
||||||
jne .skip
|
jne .skip
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
; check for hardware cursor
|
|
||||||
cmp [_display.select_cursor], select_cursor
|
|
||||||
jne .no_mouse_area
|
|
||||||
|
|
||||||
mov ecx, [drbar.real_sy_and_abs_cy]
|
mov ecx, [drbar.real_sy_and_abs_cy]
|
||||||
sub ecx, esi
|
sub ecx, esi
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
@ -1336,7 +1450,7 @@ align 4
|
|||||||
dec esi
|
dec esi
|
||||||
jnz .new_y
|
jnz .new_y
|
||||||
jmp draw_bar_end_24.end
|
jmp draw_bar_end_24.end
|
||||||
;--------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
draw_bar_end_32:
|
draw_bar_end_32:
|
||||||
; eax - color high RRGGBB
|
; eax - color high RRGGBB
|
||||||
@ -1345,8 +1459,12 @@ draw_bar_end_32:
|
|||||||
; edx - pointer to screen
|
; edx - pointer to screen
|
||||||
; esi - counter
|
; esi - counter
|
||||||
; edi - counter
|
; edi - counter
|
||||||
|
;--------------------------------------
|
||||||
|
; check for hardware cursor
|
||||||
cmp [_display.select_cursor], 0
|
cmp [_display.select_cursor], 0
|
||||||
jne draw_bar_end_32_new
|
je draw_bar_end_32_old
|
||||||
|
cmp [_display.select_cursor], select_cursor
|
||||||
|
je draw_bar_end_32_new
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
.new_y:
|
.new_y:
|
||||||
@ -1357,21 +1475,6 @@ align 4
|
|||||||
cmp byte [ebp], bl
|
cmp byte [ebp], bl
|
||||||
jne .skip
|
jne .skip
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
; check for hardware cursor
|
|
||||||
cmp [_display.select_cursor], 0
|
|
||||||
jne .no_mouseunder
|
|
||||||
|
|
||||||
mov ecx, [drbar.real_sx_and_abs_cx]
|
|
||||||
sub ecx, edi
|
|
||||||
shl ecx, 16
|
|
||||||
add ecx, [drbar.real_sy_and_abs_cy]
|
|
||||||
sub ecx, esi
|
|
||||||
|
|
||||||
; check mouse area for putpixel
|
|
||||||
call check_mouse_area_for_putpixel
|
|
||||||
;--------------------------------------
|
|
||||||
align 4
|
|
||||||
.no_mouseunder:
|
|
||||||
; store to real LFB
|
; store to real LFB
|
||||||
mov [edx], eax
|
mov [edx], eax
|
||||||
mov eax, [drbar.color]
|
mov eax, [drbar.color]
|
||||||
@ -1411,8 +1514,55 @@ align 4
|
|||||||
xor eax, eax
|
xor eax, eax
|
||||||
mov [EGA_counter], 1
|
mov [EGA_counter], 1
|
||||||
ret
|
ret
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
|
draw_bar_end_32_old:
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
|
.new_y:
|
||||||
|
mov edi, [drbar.real_sx]
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
.new_x:
|
||||||
|
cmp byte [ebp], bl
|
||||||
|
jne .skip
|
||||||
|
;--------------------------------------
|
||||||
|
mov ecx, [drbar.real_sx_and_abs_cx]
|
||||||
|
sub ecx, edi
|
||||||
|
shl ecx, 16
|
||||||
|
add ecx, [drbar.real_sy_and_abs_cy]
|
||||||
|
sub ecx, esi
|
||||||
|
|
||||||
|
; check mouse area for putpixel
|
||||||
|
call check_mouse_area_for_putpixel
|
||||||
|
; store to real LFB
|
||||||
|
mov [edx], eax
|
||||||
|
mov eax, [drbar.color]
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
.skip:
|
||||||
|
; add pixel
|
||||||
|
add edx, 4
|
||||||
|
inc ebp
|
||||||
|
dec edi
|
||||||
|
jnz .new_x
|
||||||
|
; add line
|
||||||
|
add edx, [drbar.line_inc_scr]
|
||||||
|
add ebp, [drbar.line_inc_map]
|
||||||
|
; drawing gradient bars
|
||||||
|
test bh, 0x80
|
||||||
|
jz @f
|
||||||
|
test al, al
|
||||||
|
jz @f
|
||||||
|
dec al
|
||||||
|
;--------------------------------------
|
||||||
|
align 4
|
||||||
|
@@:
|
||||||
|
dec esi
|
||||||
|
jnz .new_y
|
||||||
|
jmp draw_bar_end_32.end
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
draw_bar_end_32_new:
|
draw_bar_end_32_new:
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@ -1424,10 +1574,6 @@ align 4
|
|||||||
cmp byte [ebp], bl
|
cmp byte [ebp], bl
|
||||||
jne .skip
|
jne .skip
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
; check for hardware cursor
|
|
||||||
cmp [_display.select_cursor], select_cursor
|
|
||||||
jne .no_mouse_area
|
|
||||||
|
|
||||||
mov ecx, [drbar.real_sy_and_abs_cy]
|
mov ecx, [drbar.real_sy_and_abs_cy]
|
||||||
sub ecx, esi
|
sub ecx, esi
|
||||||
;--------------------------------------
|
;--------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user