VESA draw some speedup (line, points, text, numbers)

git-svn-id: svn://kolibrios.org@2438 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Marat Zakiyanov (Mario79) 2012-03-08 19:10:26 +00:00
parent 1fca7a07cb
commit 4832ce7a33
4 changed files with 24 additions and 8 deletions

View File

@ -189,6 +189,7 @@ TASK_BASE equ (OS_BASE+0x0003010)
TASK_DATA equ (OS_BASE+0x0003020) TASK_DATA equ (OS_BASE+0x0003020)
TASK_EVENT equ (OS_BASE+0x0003020) TASK_EVENT equ (OS_BASE+0x0003020)
d_width_calc_area equ (OS_BASE+0x0005000)
mouseunder equ (OS_BASE+0x0006900) mouseunder equ (OS_BASE+0x0006900)
CDDataBuf equ (OS_BASE+0x0007000) CDDataBuf equ (OS_BASE+0x0007000)
FLOPPY_BUFF equ (OS_BASE+0x0008000) FLOPPY_BUFF equ (OS_BASE+0x0008000)

View File

@ -402,6 +402,8 @@ high_code:
mul [_display.height] mul [_display.height]
mov [_WinMapSize], eax mov [_WinMapSize], eax
call calculate_fast_getting_offset_for_WinMapAddress
mov esi, BOOT_VAR+0x9080 mov esi, BOOT_VAR+0x9080
movzx ecx, byte [esi-1] movzx ecx, byte [esi-1]
mov [NumBiosDisks], ecx mov [NumBiosDisks], ecx
@ -4793,7 +4795,22 @@ read_from_hd: ; Read from hd - fn not in use
paleholder: paleholder:
ret ret
;------------------------------------------------------------------------------
align 4
calculate_fast_getting_offset_for_WinMapAddress:
; calculate data area for fast getting offset to _WinMapAddress
mov eax, [_display.width]
mov ecx, [_display.height]
inc ecx
mov edi, d_width_calc_area
cld
@@:
stosd
add eax, [_display.width]
dec ecx
jnz @r
ret
;------------------------------------------------------------------------------
align 4 align 4
set_screen: set_screen:
cmp eax, [Screen_Max_X] cmp eax, [Screen_Max_X]
@ -4830,6 +4847,8 @@ set_screen:
test eax, eax test eax, eax
jz .epic_fail jz .epic_fail
call calculate_fast_getting_offset_for_WinMapAddress
popad popad
call repos_windows call repos_windows

View File

@ -62,7 +62,7 @@
; 3c dword cpu usage in cpu timer tics ; 3c dword cpu usage in cpu timer tics
; ;
; ;
; 5000 -> 68FF free (6k6) ; 5000 -> 68FF display width fast calc area (6k6)
; 6900 -> 6EFF saved picture under mouse pointer (1k5) ; 6900 -> 6EFF saved picture under mouse pointer (1k5)
; ;
; 6F00 -> 6FFF free (256) ; 6F00 -> 6FFF free (256)

View File

@ -556,14 +556,10 @@ __sys_putpixel:
jnz .forced jnz .forced
; not forced: ; not forced:
mov edx, [d_width_calc_area + ebx*4]
push eax add edx, [_WinMapAddress]
mov edx, [_display.width]; screen x size
imul edx, ebx
add eax, [_WinMapAddress]
movzx edx, byte [eax+edx] movzx edx, byte [eax+edx]
cmp edx, [CURRENT_TASK] cmp edx, [CURRENT_TASK]
pop eax
jne .exit jne .exit
;-------------------------------------- ;--------------------------------------
align 4 align 4