From 7194db1dd6b0d056bd60166f663fac79222633b1 Mon Sep 17 00:00:00 2001 From: "Sergey Semyonov (Serge)" Date: Sun, 24 Nov 2013 09:18:47 +0000 Subject: [PATCH] kolibri-acpi:remove Screen_Max_X and Screen_Max_Y. Huge amounts of bugs expected git-svn-id: svn://kolibrios.org@4288 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/branches/Kolibri-acpi/core/taskman.inc | 4 +- kernel/branches/Kolibri-acpi/data32.inc | 2 - kernel/branches/Kolibri-acpi/gui/mouse.inc | 31 +++---- kernel/branches/Kolibri-acpi/gui/window.inc | 41 ++++----- kernel/branches/Kolibri-acpi/hid/mousedrv.inc | 13 ++- kernel/branches/Kolibri-acpi/kernel.asm | 88 ++++++------------- .../branches/Kolibri-acpi/video/cursors.inc | 28 +++--- kernel/branches/Kolibri-acpi/video/vesa20.inc | 46 +++------- 8 files changed, 98 insertions(+), 155 deletions(-) diff --git a/kernel/branches/Kolibri-acpi/core/taskman.inc b/kernel/branches/Kolibri-acpi/core/taskman.inc index fcd0fff234..a51f194950 100644 --- a/kernel/branches/Kolibri-acpi/core/taskman.inc +++ b/kernel/branches/Kolibri-acpi/core/taskman.inc @@ -1187,9 +1187,9 @@ proc set_app_params stdcall,slot:dword, params:dword,\ xor eax, eax mov [ecx+0], dword eax mov [ecx+4], dword eax - mov eax, [Screen_Max_X] + mov eax, [_display.width] mov [ecx+8], eax - mov eax, [Screen_Max_Y] + mov eax, [_display.height] mov [ecx+12], eax mov ebx, [pl0_stack] diff --git a/kernel/branches/Kolibri-acpi/data32.inc b/kernel/branches/Kolibri-acpi/data32.inc index 6bfc67cfcc..e746146c70 100644 --- a/kernel/branches/Kolibri-acpi/data32.inc +++ b/kernel/branches/Kolibri-acpi/data32.inc @@ -379,8 +379,6 @@ _WinMapAddress rd 1 _WinMapSize rd 1 LFBAddress rd 1 -Screen_Max_X rd 1 -Screen_Max_Y rd 1 SCR_MODE rw 2 diff --git a/kernel/branches/Kolibri-acpi/gui/mouse.inc b/kernel/branches/Kolibri-acpi/gui/mouse.inc index e5ff99318b..a44084f201 100644 --- a/kernel/branches/Kolibri-acpi/gui/mouse.inc +++ b/kernel/branches/Kolibri-acpi/gui/mouse.inc @@ -394,9 +394,9 @@ mouse._.move_handler: ;//////////////////////////////////////////////////////// mov [mouse.active_sys_window.new_box.left], eax @@: add eax, [mouse.active_sys_window.new_box.width] - cmp eax, [Screen_Max_X] + cmp eax, [_display.width] jl @f - sub eax, [Screen_Max_X] + sub eax, [_display.width] sub [mouse.active_sys_window.new_box.left], eax @@: mov eax, [mouse.active_sys_window.new_box.top] @@ -406,9 +406,9 @@ mouse._.move_handler: ;//////////////////////////////////////////////////////// mov [mouse.active_sys_window.new_box.top], eax @@: add eax, [mouse.active_sys_window.new_box.height] - cmp eax, [Screen_Max_Y] + cmp eax, [_display.height] jle .call_window_handler - sub eax, [Screen_Max_Y] + sub eax, [_display.height] sub [mouse.active_sys_window.new_box.top], eax jmp .call_window_handler @@ -458,14 +458,14 @@ mouse._.move_handler: ;//////////////////////////////////////////////////////// mov [mouse.active_sys_window.new_box.height], eax @@: add eax, [mouse.active_sys_window.new_box.top] - cmp eax, [Screen_Max_Y] - jle .check_resize_e - sub eax, [Screen_Max_Y] + cmp eax, [_display.height] + jl .check_resize_e + sub eax, [_display.height] neg eax add [mouse.active_sys_window.new_box.height], eax - mov ecx, [Screen_Max_Y] + mov ecx, [_display.height] cmp ecx, eax - jge .check_resize_e + jg .check_resize_e mov [mouse.active_sys_window.new_box.height], ecx .check_resize_e: @@ -484,14 +484,14 @@ mouse._.move_handler: ;//////////////////////////////////////////////////////// mov [mouse.active_sys_window.new_box.width], eax @@: add eax, [mouse.active_sys_window.new_box.left] - cmp eax, [Screen_Max_X] - jle .call_window_handler - sub eax, [Screen_Max_X] + cmp eax, [_display.width] + jl .call_window_handler + sub eax, [_display.height] neg eax add [mouse.active_sys_window.new_box.width], eax - mov ecx, [Screen_Max_X] + mov ecx, [_display.height] cmp ecx, eax - jge .call_window_handler + jg .call_window_handler mov [mouse.active_sys_window.new_box.width], ecx .call_window_handler: @@ -523,9 +523,6 @@ mouse._.find_sys_window_under_cursor: ;//////////////////////////////////////// ;< esi = process slot ;< edi = pointer to WDATA struct ;------------------------------------------------------------------------------ -; mov esi, [Screen_Max_X] -; inc esi -; imul esi, [mouse.state.pos.y] mov esi, [mouse.state.pos.y] mov esi, [d_width_calc_area + esi*4] diff --git a/kernel/branches/Kolibri-acpi/gui/window.inc b/kernel/branches/Kolibri-acpi/gui/window.inc index a1f3798f2d..ff74dfa489 100644 --- a/kernel/branches/Kolibri-acpi/gui/window.inc +++ b/kernel/branches/Kolibri-acpi/gui/window.inc @@ -209,7 +209,7 @@ align 4 syscall_display_settings.06: xor esi, esi - mov edi, [Screen_Max_X] + mov edi, [_display.width] mov eax, ecx movsx ebx, ax sar eax, 16 @@ -233,7 +233,7 @@ align 4 ;-------------------------------------- align 4 .check_horizontal: - mov edi, [Screen_Max_Y] + mov edi, [_display.height] mov eax, edx movsx ebx, ax sar eax, 16 @@ -294,8 +294,8 @@ align 4 syscall_display_settings._.calculate_whole_screen: xor eax, eax xor ebx, ebx - mov ecx, [Screen_Max_X] - mov edx, [Screen_Max_Y] + mov ecx, [_display.width] + mov edx, [_display.height] jmp calculatescreen ;------------------------------------------------------------------------------ align 4 @@ -303,9 +303,11 @@ syscall_display_settings._.redraw_whole_screen: xor eax, eax mov [draw_limits.left], eax mov [draw_limits.top], eax - mov eax, [Screen_Max_X] + mov eax, [_display.width] + dec eax mov [draw_limits.right], eax - mov eax, [Screen_Max_Y] + mov eax, [_display.height] + dec eax mov [draw_limits.bottom], eax mov eax, window_data jmp redrawscreen @@ -584,9 +586,9 @@ align 4 mov eax, [edi + WDATA.box.left] add eax, [edi + WDATA.box.width] - mov ebx, [Screen_Max_X] + mov ebx, [_display.width] cmp eax, ebx - jle .fix_vertical + jl .fix_vertical mov eax, [edi + WDATA.box.width] sub eax, ebx jle @f @@ -601,9 +603,9 @@ align 4 .fix_vertical: mov eax, [edi + WDATA.box.top] add eax, [edi + WDATA.box.height] - mov ebx, [Screen_Max_Y] + mov ebx, [_display.height] cmp eax, ebx - jle .fix_client_box + jl .fix_client_box mov eax, [edi + WDATA.box.height] sub eax, ebx jle @f @@ -1716,9 +1718,9 @@ window._.check_window_position: ;////////////////////////////////////////////// mov ecx, [edi + WDATA.box.width] mov edx, [edi + WDATA.box.height] - mov esi, [Screen_Max_X] + mov esi, [_display.width] cmp ecx, esi - ja .fix_width_high + jae .fix_width_high ;-------------------------------------- align 4 .check_left: @@ -1730,9 +1732,9 @@ align 4 ;-------------------------------------- align 4 .check_height: - mov esi, [Screen_Max_Y] + mov esi, [_display.height] cmp edx, esi - ja .fix_height_high + jae .fix_height_high ;-------------------------------------- align 4 .check_top: @@ -1881,11 +1883,7 @@ align 4 ; get WinMap start push esi -; mov edi, [Screen_Max_X] -; inc edi -; mov esi, edi - mov esi, [Screen_Max_X] - inc esi + mov esi, [_display.width] ; imul edi, ebx mov edi, [d_width_calc_area + ebx*4] @@ -1929,9 +1927,6 @@ align 4 ; get WinMap start -> ebp push eax -; mov eax, [Screen_Max_X] ; screen_sx -; inc eax -; imul eax, ebx mov eax, [d_width_calc_area + ebx*4] add eax, [esp] @@ -1998,7 +1993,7 @@ align 4 sub ebp, [ff_xsz] add ebp, [ff_x] - add ebp, [Screen_Max_X] ; screen.x + add ebp, [_display.width] ; screen.x inc ebp inc ebx cmp ebx, [ff_ysz] diff --git a/kernel/branches/Kolibri-acpi/hid/mousedrv.inc b/kernel/branches/Kolibri-acpi/hid/mousedrv.inc index 25e17c1d47..2dc322a83b 100644 --- a/kernel/branches/Kolibri-acpi/hid/mousedrv.inc +++ b/kernel/branches/Kolibri-acpi/hid/mousedrv.inc @@ -111,9 +111,6 @@ save_draw_mouse: push eax push ebx -; mov ecx, [Screen_Max_X] -; inc ecx -; mul ecx mov eax, [d_width_calc_area + eax*4] add eax, [_WinMapAddress] @@ -494,9 +491,10 @@ proc set_mouse_data stdcall, BtnState:dword, XMoving:dword, YMoving:dword, VScro ;-------------------------------------- align 4 @@M1: - cmp ax, word [Screen_Max_X];ScreenLength + cmp ax, word [_display.width] jl @@M2 - mov ax, word [Screen_Max_X];ScreenLength-1 + mov ax, word [_display.width] + dec ax ;-------------------------------------- align 4 @@M2: @@ -514,9 +512,10 @@ align 4 ;-------------------------------------- align 4 @@M3: - cmp ax, word [Screen_Max_Y];ScreenHeigth + cmp ax, word [_display.height] jl @@M4 - mov ax, word [Screen_Max_Y];ScreenHeigth-1 + mov ax, word [_display.height] + dec ax ;-------------------------------------- align 4 @@M4: diff --git a/kernel/branches/Kolibri-acpi/kernel.asm b/kernel/branches/Kolibri-acpi/kernel.asm index 9df4ddb32c..fbf0cfdf4a 100644 --- a/kernel/branches/Kolibri-acpi/kernel.asm +++ b/kernel/branches/Kolibri-acpi/kernel.asm @@ -486,13 +486,11 @@ save_variables_IDE_controller: mov [_display.width], eax mov [display_width_standard], eax dec eax - mov [Screen_Max_X], eax mov [screen_workarea.right], eax movzx eax, word [BOOT_VARS+BOOT_Y_RES]; Y max mov [_display.height], eax mov [display_height_standard], eax dec eax - mov [Screen_Max_Y], eax mov [screen_workarea.bottom], eax movzx eax, word [BOOT_VARS+BOOT_VESA_MODE] ; screen mode mov dword [SCR_MODE], eax @@ -2191,9 +2189,6 @@ restore_default_cursor_before_killing: movzx eax, word [MOUSE_Y] movzx ebx, word [MOUSE_X] -; mov ecx, [Screen_Max_X] -; inc ecx -; mul ecx mov eax, [d_width_calc_area + eax*4] add eax, [_WinMapAddress] @@ -2500,10 +2495,10 @@ sysfn_centermouse: ; 18.15 = mouse centered ;* mouse centered - start code- Mario79 ;mouse_centered: ; push eax - mov eax, [Screen_Max_X] + mov eax, [_display.width] shr eax, 1 mov [MOUSE_X], ax - mov eax, [Screen_Max_Y] + mov eax, [_display.height] shr eax, 1 mov [MOUSE_Y], ax call wakeup_osloop @@ -2545,11 +2540,11 @@ sysfn_mouse_acceleration: ; 18.19 = set/get mouse features ; cmp ecx,4 ; set mouse pointer position dec ecx jnz .set_mouse_button - cmp dx, word[Screen_Max_Y] - ja .end + cmp dx, word[_display.width] + jae .end rol edx, 16 - cmp dx, word[Screen_Max_X] - ja .end + cmp dx, word[_display.height] + jae .end mov [MOUSE_X], edx call wakeup_osloop ret @@ -2636,9 +2631,7 @@ sysfn_set_screen_sizes: mov eax, ecx mov ecx, [_display.pitch] mov [_display.width], eax - dec eax mov [_display.height], edx - dec edx ; eax - new Screen_Max_X ; edx - new Screen_Max_Y mov [do_not_touch_winmap], 1 @@ -2975,22 +2968,22 @@ nosb8: jnz nosb9 ; ecx = [left]*65536 + [right] ; edx = [top]*65536 + [bottom] - mov eax, [Screen_Max_X] - mov ebx, [Screen_Max_Y] + mov eax, [_display.width] + mov ebx, [_display.height] ; check [right] cmp cx, ax - ja .exit + jae .exit ; check [left] ror ecx, 16 cmp cx, ax - ja .exit + jae .exit ; check [bottom] cmp dx, bx - ja .exit + jae .exit ; check [top] ror edx, 16 cmp dx, bx - ja .exit + jae .exit movzx eax, cx ; [left] movzx ebx, dx ; [top] @@ -3028,8 +3021,8 @@ force_redraw_background: and [draw_data+32 + RECT.left], 0 and [draw_data+32 + RECT.top], 0 push eax ebx - mov eax, [Screen_Max_X] - mov ebx, [Screen_Max_Y] + mov eax, [_display.width] + mov ebx, [_display.height] mov [draw_data+32 + RECT.right], eax mov [draw_data+32 + RECT.bottom], ebx pop ebx eax @@ -3385,9 +3378,9 @@ sys_redrawstat: add edx, draw_data - CURRENT_TASK mov [edx + RECT.left], 0 mov [edx + RECT.top], 0 - mov eax, [Screen_Max_X] + mov eax, [_display.width] mov [edx + RECT.right], eax - mov eax, [Screen_Max_Y] + mov eax, [_display.height] mov [edx + RECT.bottom], eax srl1: @@ -3518,26 +3511,6 @@ modify_pce: ;--------------------------------------------------------------------------------------------- -; check if pixel is allowed to be drawn - -;checkpixel: -; push eax edx - -;; mov edx, [Screen_Max_X] ; screen x size -;; inc edx -;; imul edx, ebx -; mov edx, [d_width_calc_area + ebx*4] -; add eax, [_WinMapAddress] -; mov dl, [eax+edx]; lea eax, [...] - -; xor ecx, ecx -; mov eax, [CURRENT_TASK] -; cmp al, dl -; setne cl - -; pop edx eax -; ret - iglobal cpustring db 'CPU',0 endg @@ -4974,9 +4947,9 @@ endg jnz @f mov word [msg_board_pos+2], (42*6) add word [msg_board_pos], 10 - mov ax, word [Screen_Max_Y] + mov ax, word [_display.height] cmp word [msg_board_pos], ax - jbe @f + jb @f mov word [msg_board_pos], 10 @@: ; // end if @@ -5193,9 +5166,9 @@ sys_gs: ; direct screen access .1: ; resolution - mov eax, [Screen_Max_X] + mov eax, [_display.width] shl eax, 16 - mov ax, word [Screen_Max_Y] + mov ax, word [_display.height] add eax, 0x00010001 mov [esp+32], eax ret @@ -5281,9 +5254,9 @@ syscall_drawrect: ; DrawRect align 4 syscall_getscreensize: ; GetScreenSize - mov ax, word [Screen_Max_X] + mov ax, word [_display.width] shl eax, 16 - mov ax, word [Screen_Max_Y] + mov ax, word [_display.height] mov [esp + 32], eax ret @@ -5349,10 +5322,10 @@ syscall_cdaudio: ; CD ;----------------------------------------------------------------------------- align 4 syscall_getpixel_WinMap: ; GetPixel WinMap - cmp ebx, [Screen_Max_X] - jbe @f - cmp ecx, [Screen_Max_Y] - jbe @f + cmp ebx, [_display.width] + jb @f + cmp ecx, [_display.height] + jb @f xor eax, eax jmp .store ;-------------------------------------- @@ -5369,8 +5342,7 @@ align 4 ;----------------------------------------------------------------------------- align 4 syscall_getpixel: ; GetPixel - mov ecx, [Screen_Max_X] - inc ecx + mov ecx, [_display.width] xor edx, edx mov eax, ebx div ecx @@ -5615,8 +5587,6 @@ set_screen: pushfd cli - mov [Screen_Max_X], eax - mov [Screen_Max_Y], edx mov [_display.pitch], ecx mov [screen_workarea.right], eax @@ -5658,8 +5628,8 @@ set_screen: call repos_windows xor eax, eax xor ebx, ebx - mov ecx, [Screen_Max_X] - mov edx, [Screen_Max_Y] + mov ecx, [_display.width] + mov edx, [_display.height] call calculatescreen pop edi pop esi diff --git a/kernel/branches/Kolibri-acpi/video/cursors.inc b/kernel/branches/Kolibri-acpi/video/cursors.inc index d5b63e049d..d51e2f345c 100644 --- a/kernel/branches/Kolibri-acpi/video/cursors.inc +++ b/kernel/branches/Kolibri-acpi/video/cursors.inc @@ -618,15 +618,17 @@ proc move_cursor_24 stdcall, hcursor:dword, x:dword, y:dword add edx, eax mov [cur_saved_base], edx - cmp ebx, [Screen_Max_X] - jbe @F - mov ebx, [Screen_Max_X] + cmp ebx, [_display.width] + jb @F + mov ebx, [_display.width] + dec ebx ;-------------------------------------- align 4 @@: - cmp edi, [Screen_Max_Y] - jbe @F - mov edi, [Screen_Max_Y] + cmp edi, [_display.height] + jb @F + mov edi, [_display.height] + dec edi ;-------------------------------------- align 4 @@: @@ -736,15 +738,17 @@ proc move_cursor_32 stdcall, hcursor:dword, x:dword, y:dword lea edx, [LFB_BASE+eax+ecx*4] mov [cur_saved_base], edx - cmp ebx, [Screen_Max_X] - jbe @F - mov ebx, [Screen_Max_X] + cmp ebx, [_display.width] + jb @F + mov ebx, [_display.width] + dec ebx ;-------------------------------------- align 4 @@: - cmp edi, [Screen_Max_Y] - jbe @F - mov edi, [Screen_Max_Y] + cmp edi, [_display.height] + jb @F + mov edi, [_display.height] + dec edi ;-------------------------------------- align 4 @@: diff --git a/kernel/branches/Kolibri-acpi/video/vesa20.inc b/kernel/branches/Kolibri-acpi/video/vesa20.inc index a4cc0d36f6..b3b778c109 100644 --- a/kernel/branches/Kolibri-acpi/video/vesa20.inc +++ b/kernel/branches/Kolibri-acpi/video/vesa20.inc @@ -23,13 +23,6 @@ $Revision$ ; If you're planning to write your own video driver I suggest ; you replace the VESA12.INC file and see those instructions. -;Screen_Max_X equ 0xfe00 -;Screen_Max_Y equ 0xfe04 -;BytesPerScanLine equ 0xfe08 -;LFBAddress equ 0xfe80 -;ScreenBPP equ 0xfbf1 - - ;----------------------------------------------------------------------------- ; getpixel @@ -225,8 +218,7 @@ align 4 add eax, [putimg.arg_0] mov [putimg.line_increment], eax ; winmap new line increment - mov eax, [Screen_Max_X] - inc eax + mov eax, [_display.width] sub eax, [putimg.real_sx] mov [putimg.winmap_newline], eax ; screen new line increment @@ -249,8 +241,6 @@ align 4 add edx, eax ; pointer to pixel map mov eax, [putimg.abs_cy] -; imul eax, [Screen_Max_X] -; add eax, [putimg.abs_cy] mov eax, [d_width_calc_area + eax*4] add eax, [putimg.abs_cx] @@ -695,12 +685,11 @@ __sys_putpixel: ; for example drawwindow_III and drawwindow_IV ; edi = 0x00000001 force -;;; mov [novesachecksum], dword 0 pushad - cmp [Screen_Max_X], eax - jb .exit - cmp [Screen_Max_Y], ebx - jb .exit + cmp eax, [_display.width] + jae .exit + cmp ebx, [_display.height] + jae .exit test edi, 1 ; force ? jnz .forced @@ -889,9 +878,6 @@ align 4 ;----------------------------------------------------------------------------- align 4 calculate_edi: -; mov edi, ebx -; imul edi, [Screen_Max_X] -; add edi, ebx mov edi, [d_width_calc_area + ebx*4] add edi, eax ret @@ -1223,9 +1209,8 @@ align 4 .end_y: mov [drbar.real_sy], ebx ; line_inc_map - mov eax, [Screen_Max_X] + mov eax, [_display.width] sub eax, [drbar.real_sx] - inc eax mov [drbar.line_inc_map], eax ; line_inc_scr mov eax, [drbar.real_sx] @@ -1244,8 +1229,6 @@ align 4 add edx, eax ; pointer to pixel map mov eax, [drbar.abs_cy] -; imul eax, [Screen_Max_X] -; add eax, [drbar.abs_cy] mov eax, [d_width_calc_area + eax*4] add eax, [drbar.abs_cx] @@ -1769,23 +1752,21 @@ align 4 vesa20_drawbackground_stretch: pushad ; Helper variables -; calculate 2^32*(BgrDataWidth-1) mod (ScreenWidth-1) +; calculate 2^32*(BgrDataWidth) mod (ScreenWidth) mov eax, [BgrDataWidth] - dec eax xor edx, edx - div dword [Screen_Max_X] + div dword [_display.width] push eax ; high xor eax, eax - div dword [Screen_Max_X] + div dword [_display.width] push eax ; low ; the same for height mov eax, [BgrDataHeight] - dec eax xor edx, edx - div dword [Screen_Max_Y] + div dword [_display.height] push eax ; high xor eax, eax - div dword [Screen_Max_Y] + div dword [_display.height] push eax ; low ; External loop for all y from start to end mov ebx, [draw_data+32+RECT.top] ; y start @@ -1939,8 +1920,7 @@ sdp4: ; advance edi, ebp to next scan line sub eax, [draw_data+32+RECT.left] sub ebp, eax - add ebp, [Screen_Max_X] - add ebp, 1 + add ebp, [_display.width] sub edi, eax sub edi, eax sub edi, eax @@ -1971,7 +1951,7 @@ align 4 push edi mov esi, bgr_next_line mov edi, bgr_cur_line - mov ecx, [Screen_Max_X] + mov ecx, [_display.width] inc ecx rep movsd jmp bgr_resmooth1