Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1198 → Rev 1199

/programs/develop/libraries/box_lib/trunk/box_lib.asm
1,7 → 1,13
;Libray from Editbox
; SEE YOU File FAQ.txt and HISTORY. Good Like!
;Last Change 13/02/2009
;;;;;;;;;;;;;;;;;;
;*****************************************************************************
; Box_Lib - library of graphical components
;
; Authors:
; Alexey Teplov aka <Lrz>
; Marat Zakiyanov aka Mario79, aka Mario
; Evtikhov Maxim aka Maxxxx32
; Eugene Grechnikov aka Diamond
; hidnplayr
;*****************************************************************************
 
format MS COFF
 
9,29 → 15,30
 
section '.flat' code readable align 16
include '../../../../macros.inc'
include 'editbox.mac' ;¬ ªà®á ª®â®àë© ¤®«¦¥­ ®¡«¥£ç¨âì ¦¨§­ì :) ᯥ樠«ì­® ¤«ï editbox
include 'checkbox.mac' ;¬ ªà®á ᮤ¥à¦¨â ॠ«¨§ æ¨î checkbox
include 'optionbox.mac' ;¬ ªà®á ᮤ¥à¦¨â ॠ«¨§ æ¨î optionbox
include 'scrollbar.mac' ;¬ ªà®á ᮤ¥à¦¨â ॠ«¨§ æ¨î scrollbar
include 'd_button.mac' ;¬ ªà®á ᮤ¥à¦¨â ॠ«¨§ æ¨î dinamic button
include 'menubar.mac' ;¬ ªà®á ᮤ¥à¦¨â ॠ«¨§ æ¨î menubar
include 'editbox.mac' ;macro which should make life easier :) specially for editbox
include 'checkbox.mac' ;macro implements checkbox
include 'optionbox.mac' ;macro implements optionbox
include 'scrollbar.mac' ;macro implements scrollbar
include 'd_button.mac' ;macro implements dinamic_button
include 'menubar.mac' ;macro implements menubar
include 'filebrowser.mac' ;macro implements filebrowser
;----------------------------------------------------
;EditBox
;----------------------------------------------------
align 4
use_editbox_draw ;¬ ªà®á à ááªà뢠¥â äã­ªæ¨î ®â®¡à ¦¥­¨ï ¡®ªá .
use_editbox_draw ;macro reveals the function of the display.
align 4
use_editbox_key ;¬ ªà®á à ááªà뢠¥â äã­ªæ¨î ®¡à ¡®âª¨ ª« ¢¨èì.
use_editbox_key ;macro reveals processing function of the keypad.
align 4
use_editbox_mouse ;¬ ªà®á à ááªà뢠¥â äã­ªæ¨î ®¡à ¡®âª¨ ¬ëè¨.
use_editbox_mouse ;macro reveals processing function of the mouse.
 
;----------------------------------------------------
;CheckBox
;----------------------------------------------------
align 4
use_checkbox_draw ;¬ ªà®á à ááªà뢠¥â äã­ªæ¨î ®â®¡à ¦¥­¨ï ¡®ªá .
use_checkbox_draw ;macro reveals the function of the display.
align 4
use_checkbox_mouse ;¬ ªà®á à ááªà뢠¥â äã­ªæ¨î ®¡à ¡®âª¨ ¬ëè¨.
use_checkbox_mouse ;macro reveals processing function of the mouse.
 
 
;--------------------------------------------------
38,11 → 45,11
;radiobutton Group
;--------------------------------------------------
align 4
use_optionbox_driver ;¬ ªà®áë ª®â®àë¥ ã¯à ¢«ïîâ à ¡®â®© ¡®ªá  )
use_optionbox_driver ;macro that control the operating modes
align 4
use_optionbox_draw ;¬ ªà®á à ááªà뢠¥â äã­ªæ¨î ®â®¡à ¦¥­¨ï ¡®ªá .
use_optionbox_draw ;macro reveals the function of the display.
align 4
use_optionbox_mouse ;¬ ªà®á à ááªà뢠¥â äã­ªæ¨î ®¡à ¡®âª¨ ¬ëè¨.
use_optionbox_mouse ;macro reveals processing function of the mouse.
 
;--------------------------------------------------
;scrollbar Group
66,8 → 73,12
align 4
use_menu_bar
 
 
;--------------------------------------------------
;filebrowser Group
;--------------------------------------------------
align 4
use_file_browser
;--------------------------------------------------
init:
ret
 
110,7 → 121,13
 
dd sz_Menu_bar_draw, menu_bar.draw
dd sz_Menu_bar_mouse, menu_bar.mouse
dd szVersion_menu_bar, 0x00010001
dd sz_Menu_bar_activate, menu_bar.activate
dd szVersion_menu_bar, 0x00010002
 
dd sz_FileBrowser_draw, fb_draw_panel
dd sz_FileBrowser_mouse, fb_mouse
dd sz_FileBrowser_key, fb_key
dd szVersion_FileBrowser, 0x00010001
dd 0,0
 
 
142,5 → 159,10
 
sz_Menu_bar_draw db 'menu_bar_draw',0
sz_Menu_bar_mouse db 'menu_bar_mouse',0
sz_Menu_bar_activate db 'menu_bar_activate',0
szVersion_menu_bar db 'version_menu_bar',0
 
sz_FileBrowser_draw db 'FileBrowser_draw',0
sz_FileBrowser_mouse db 'FileBrowser_mouse',0
sz_FileBrowser_key db 'FileBrowser_key',0
szVersion_FileBrowser db 'version_FileBrowser',0
/programs/develop/libraries/box_lib/trunk/d_button.mac
1,6 → 1,6
;**************************************************************
; Dinamic Button Macro for Kolibri OS
; Copyright (c) 2009, Mario79
; Copyright (c) 2009, Marat Zakiyanov aka Mario79, aka Mario
; All rights reserved.
;
; Redistribution and use in source and binary forms, with or without
14,7 → 14,7
; names of its contributors may be used to endorse or promote products
; derived from this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY Mario79 ''AS IS'' AND ANY
; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
67,10 → 67,10
cmp db_select,dword 2
je .click_2
mov ebx,db_passive_raw
jmp .draw_2 ;@f
jmp .draw_2
.active_1:
mov ebx,db_active_raw
jmp .draw_2 ;@f
jmp .draw_2
.click_2:
mov ebx,db_click_raw
@@:
/programs/develop/libraries/box_lib/trunk/filebrowser.mac
0,0 → 1,1394
;*****************************************************************************
; File Browser control for Kolibri OS
; Copyright (c) 2009, Marat Zakiyanov aka Mario79, aka Mario
; All rights reserved.
;
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
; * Redistributions of source code must retain the above copyright
; notice, this list of conditions and the following disclaimer.
; * Redistributions in binary form must reproduce the above copyright
; notice, this list of conditions and the following disclaimer in the
; documentation and/or other materials provided with the distribution.
; * Neither the name of the <organization> nor the
; names of its contributors may be used to endorse or promote products
; derived from this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;*****************************************************************************
;*****************************************************************************
macro file_browser_exit
{
popa
ret 4
}
;*****************************************************************************
macro use_file_browser
{
file_browser:
fb_type equ dword [edi] ;dword
fb_size_x equ [edi+4] ;word
fb_start_x equ [edi+6] ;word
fb_size_y equ [edi+8] ;word
fb_start_y equ [edi+10] ;word
fb_icon_size_y equ word [edi+12] ;word
fb_icon_size_x equ word [edi+14] ;word
fb_line_size_x equ word [edi+16] ;word
fb_line_size_y equ word [edi+18] ;word
fb_type_size_x equ word [edi+20] ;word
fb_size_size_x equ word [edi+22] ;word
fb_date_size_x equ word [edi+24] ;word
fb_attributes_size_x equ word [edi+26] ;word
fb_icon_assoc_area equ dword [edi+28] ;dword
fb_icon_raw_area equ dword [edi+32] ;dword
fb_resolution_raw equ dword [edi+36] ;dword
fb_palette_raw equ dword [edi+40] ;dword
fb_directory_path_area equ dword [edi+44] ;dword
fb_file_name_area equ dword [edi+48] ;dword
fb_select_flag equ dword [edi+52] ;dword
fb_background_color equ dword [edi+56] ;dword
fb_select_color equ dword [edi+60] ;dword
fb_seclect_text_color equ dword [edi+64] ;dword
fb_text_color equ dword [edi+68] ;dword
fb_reduct_text_color equ dword [edi+72] ;dword
fb_marked_text_color equ dword [edi+76] ;dword
fb_max_panel_line equ dword [edi+80] ;dword
fb_select_panel_counter equ dword [edi+84] ;dword
fb_folder_block equ dword [edi+88] ;dword
fb_start_draw_line equ dword [edi+92] ;dword
fb_start_draw_cursor_line equ word [edi+96] ;word
fb_folder_data equ dword [edi+98] ;dword
fb_temp_counter equ dword [edi+102] ;dword
fb_file_name_length equ dword [edi+106] ;dword
fb_marked_file equ dword [edi+110] ;dword
fb_extension_size equ dword [edi+114] ;dword
fb_extension_start equ dword [edi+118] ;dword
fb_type_table equ dword [edi+122] ;dword
fb_ini_file_start equ dword [edi+126] ;dword
fb_ini_file_end equ dword [edi+130] ;dword
fb_draw_scroll_bar equ dword [edi+134] ;dword
fb_font_size_y equ word [edi+138] ;dword
fb_font_size_x equ word [edi+140] ;dword
fb_mouse_keys equ dword [edi+142] ;dword
fb_mouse_keys_old equ dword [edi+146] ;dword
fb_mouse_pos equ dword [edi+150] ;dword
fb_mouse_keys_delta equ dword [edi+154] ;dword
fb_mouse_key_delay equ dword [edi+158] ;dword
fb_mouse_keys_tick equ dword [edi+162] ;dword
fb_start_draw_cursor_line_2 equ word [edi+166] ;dword
fb_all_redraw equ dword [edi+168] ;dword
fb_selected_BDVK_adress equ dword [edi+172] ;dword
fb_key_action equ dword [edi+176] ;dword
fb_name_temp_area equ dword [edi+180] ;dword
fb_max_name_temp_size equ dword [edi+184] ;dword
fb_display_name_max_length equ dword [edi+188] ;dword
fb_draw_panel_selection_flag equ dword [edi+192] ;dword
fb_mouse_pos_old equ dword [edi+196] ;dword
fb_marked_counter equ dword [edi+200] ;dword
;---------------------------------------------------------------------
fb_draw_panel:
pusha
mov edi,dword [esp+36]
call fb_clear_panel
call fb_calc_max_panel_line
call fb_calc_folder_sysdata
call fb_draw_panel_selection
call fb_draw_folder_data
file_browser_exit
;---------------------------------------------------------------------
fb_draw_panel_1:
pusha
mov eax,fb_select_color
push eax
mov eax,fb_seclect_text_color
push eax
mov ax,fb_start_draw_cursor_line
push eax
mov eax,fb_background_color
mov fb_select_color,eax
mov eax,fb_text_color
mov fb_seclect_text_color,eax
mov ax,fb_start_draw_cursor_line_2
mov fb_start_draw_cursor_line,ax
call fb_draw_panel_selection
pop eax
mov fb_start_draw_cursor_line,ax
pop eax
mov fb_seclect_text_color,eax
pop eax
mov fb_select_color,eax
call fb_draw_panel_selection
call fb_draw_folder_data
popa
ret
;---------------------------------------------------------------------
fb_clear_panel:
cmp fb_all_redraw,dword 1
jne @f
xor eax,eax
mov fb_max_name_temp_size,eax
@@:
ret
;---------------------------------------------------------------------
fb_calc_folder_sysdata:
mov eax,fb_folder_data
mov eax,[eax+4]
mov fb_folder_block,eax
ret
;---------------------------------------------------------------------
fb_calc_max_panel_line:
xor eax,eax
xor ebx,ebx
mov ax,fb_size_y
mov bx,fb_line_size_y
test ebx,ebx
jnz @f
inc ebx
@@:
xor edx,edx
div ebx
mov fb_max_panel_line,eax
ret
;---------------------------------------------------------------------
fb_draw_panel_selection:
cmp fb_all_redraw,dword 2
je .end
xor eax,eax
cmp fb_select_panel_counter,eax
je .end
mov eax,fb_folder_block
sub eax,fb_start_draw_line
mov cx,fb_start_draw_cursor_line
call fb_for_all_panel_selection
mov eax,fb_folder_block
dec eax
xor edx,edx
mov dx,fb_line_size_y
imul eax,edx
cmp ax,cx
jae @f
mov cx,ax
@@:
mov fb_start_draw_cursor_line,cx
mov ebx,fb_size_x
add cx,fb_start_y
.1:
shl ecx,16
mov cx,fb_line_size_y
mov edx,fb_select_color
xor eax,eax
mov ax,fb_icon_size_x
add eax,2
sub ebx,eax
shl eax,16
push eax
add ebx,eax
mcall 13
pop ebx
cmp fb_all_redraw,dword 0
je .end
mov bx,fb_start_x
ror ebx,16
mcall 13,,,fb_background_color
.end:
ret
;---------------------------------------------------------------------
fb_for_all_panel_selection:
; dec eax
xor edx,edx
mov dx,fb_line_size_y
imul eax,edx
cmp ax,cx
jae @f
mov cx,ax
@@:
mov eax,fb_max_panel_line
dec eax
imul eax,edx
cmp ax,cx
jae @f
mov cx,ax
@@:
ret
;---------------------------------------------------------------------
fb_draw_folder_data:
mov eax,fb_folder_block
sub eax,fb_max_panel_line
test eax,0x8000000
jz .ok_left
mov fb_start_draw_line,0
jmp @f
.ok_left:
cmp eax,fb_start_draw_line
jae @f
mov fb_start_draw_line,eax
@@:
mov bx,fb_start_x
add bx,3
add bx,fb_icon_size_x
shl ebx,16
mov bx,fb_start_y
mov edx,fb_start_draw_line
imul edx,304
add edx,fb_folder_data
add edx,32+40
xor eax,eax
.start:
pusha
mov eax,edx
sub eax,fb_folder_data
sub eax,32+40
xor edx,edx
mov ebx,304
div ebx
cmp eax,fb_folder_block
je .end_1
;.continue_1:
popa
cmp eax,fb_max_panel_line
je .end_2
mov fb_marked_file,0
cmp [edx+299-40],byte 0
je @f
mov fb_marked_file,1
@@:
call fb_clear_line
call fb_draw_type_size_date
cmp fb_all_redraw,dword 2
je .draw_icon
cmp fb_all_redraw,dword 0
je @f
.draw_icon:
call fb_draw_icon
@@:
push eax
xor eax,eax
mov ax,fb_size_x
push ebx edx
xor ebx,ebx
mov bx,fb_font_size_x
xor edx,edx
div ebx
pop edx ebx
sub eax,23+2+2
mov esi,fb_file_name_length
mov fb_temp_counter,0
mov fb_display_name_max_length,eax
cmp esi,eax
jbe @f
mov esi,eax
mov fb_temp_counter,1
@@:
cmp fb_max_name_temp_size,esi
jae @f
mov fb_max_name_temp_size,esi
inc fb_max_name_temp_size
@@:
mov ecx,fb_text_color
cmp fb_marked_file,0
je @f
mov ecx,fb_reduct_text_color ;0xff0000
@@:
mov ax,fb_line_size_y
sub ax,fb_font_size_y
 
push ebx
mov bx,ax
shr ax,1
test bx,1b
jz @f
inc ax
@@:
pop ebx
 
push ebx
add bx,ax
call .draw_name_temp_area
xor eax,eax
mov ax,fb_font_size_x
imul eax,fb_display_name_max_length
shl eax,16
push edx
add ebx,eax
mov esi,2
mov ecx,fb_reduct_text_color ;0xff0000
mov edx,dword fb_truncated_filename_char
cmp fb_temp_counter,0
jne @f
mov edx,dword fb_truncated_filename_clear
mov ecx,fb_text_color
@@:
push edi
 
and ecx,0x30ffffff
add ecx,0x40000000
mov eax,fb_background_color
cmp fb_draw_panel_selection_flag,1
jne @f
mov eax,fb_select_color
@@:
mov edi,eax
mcall 4
pop edi
cmp fb_temp_counter,0
je .continue_1
push edi
 
mov eax,fb_background_color
cmp fb_draw_panel_selection_flag,1
jne @f
mov eax,fb_select_color
@@:
mov edi,eax
 
add ebx,1 shl 16
mcall 4
pop edi
.continue_1:
pop edx
.continue:
pop ebx
add bx,fb_line_size_y
add edx,304
pop eax
inc eax
jmp .start
;--------------------------------------
.draw_name_temp_area:
pusha
mov ebx,esi
mov eax,dword ' '
mov ecx,256/4
cld
 
push edi
mov edi,fb_name_temp_area
rep stosd
pop edi
 
mov esi,edx
mov ecx,ebx
cld
mov edi,fb_name_temp_area
rep movsb
popa
 
pusha
mov edx,fb_name_temp_area
 
cmp fb_all_redraw,dword 2
jne .draw_name_temp_area_1
mov esi,fb_max_name_temp_size
and ecx,0xffffff
add ecx,0x40000000
 
mov eax,fb_background_color
cmp fb_draw_panel_selection_flag,1
jne @f
mov eax,fb_select_color
@@:
mov edi,eax
.draw_name_temp_area_1:
mcall 4
popa
 
ret
;--------------------------------------
.end_1:
popa
.end_2:
cmp fb_all_redraw,dword 1
jne @f
 
mov ax,fb_start_y
add ax,fb_size_y
mov cx,bx
dec cx
rol ecx,16
mov cx,ax
mov eax,ecx
shr eax,16
sub cx,ax
cmp cx,0
jbe @f
mov bx,fb_size_x
ror ebx,16
sub bx,fb_icon_size_x
sub bx,3
rol ebx,16
mov edx,fb_background_color ;0xffffff
mcall 13
@@:
 
.end:
; mov fb_draw_scroll_bar,dword 1
ret
;---------------------------------------------------------------------
fb_clear_line:
mov fb_draw_panel_selection_flag,0
pusha
shl ebx,16
shr ebx,16
; dec ebx
cmp fb_select_panel_counter,0
je .continue
mov ax,fb_start_draw_cursor_line
add ax,fb_start_y
cmp bx,ax
jne .continue
mov fb_draw_panel_selection_flag,1
jmp .end
.continue:
cmp fb_all_redraw,dword 2
je .end
cmp fb_all_redraw,dword 0
je .end
mov ebx,[esp+16]
mov cx,bx
; dec cx
rol ecx,16
mov cx,fb_line_size_y
mov bx,fb_size_x
ror ebx,16
sub bx,fb_icon_size_x
sub bx,3
rol ebx,16
mov edx,fb_background_color
mcall 13
.end:
popa
ret
;---------------------------------------------------------------------
fb_draw_type_size_date:
pusha
mov eax,fb_type_table
test [edx-40],byte 0x10
jz .copy_type
mov [eax],dword '<DIR'
mov [eax+4],word '> '
mov fb_file_name_length,0
mov fb_extension_size,0
jmp .start
.copy_type:
mov [eax],dword ' '
mov [eax+4],word ' '
.start:
mov esi,edx
xor eax,eax
@@:
cld
lodsb
test eax,eax
jnz @b
mov fb_file_name_length,esi
sub fb_file_name_length,edx
mov fb_temp_counter,esi
test [edx-40],byte 0x10
jnz .size
;@@:
dec esi
dec edx
@@:
std
lodsb
cmp esi,edx
je .extension_size_0
cmp al,'.'
jnz @b
add esi,2
mov fb_extension_start,esi
mov ecx,fb_temp_counter
sub ecx,esi
inc ecx
mov fb_extension_size,ecx
sub fb_file_name_length,ecx
cmp ecx,2
ja @f
inc fb_file_name_length
@@:
sub ecx,2
cmp ecx,4
jbe @f
mov ecx,3
mov eax,fb_type_table
mov [eax+3],word '..'
@@:
push edi
mov edi,fb_type_table
cld
rep movsb
pop edi
inc edx
jmp .size
.extension_size_0:
inc edx
mov fb_extension_size,0
.size:
mov eax,fb_type_table
test [edx-40],byte 0x10
jz .copy_size
mov [eax+6],dword '----'
mov [eax+6+4],word '- '
jmp .date
;-----------------------------------------
.call_decimal_string:
mov ebx,fb_type_table
add ebx,6
call fb_decimal_string_4
mov [ebx],dl
jmp .size_convert_end
;-----------------------------------------
.copy_size:
;/0x40000000 - Gb
;/0x100000 - Mb
;/0x400 Kb
mov [eax+6],dword ' '
mov [eax+6+4],word ' '
push ebx
push edx
mov eax,[edx-40+32]
mov ebx,eax
shr eax,30 ; /(1024*1024*1024)
test eax,eax
jz @f
mov dl,byte 'G'
jmp .call_decimal_string
@@:
mov eax,ebx
shr eax,20 ; /(1024*1024)
test eax,eax
jz @f
mov dl,byte 'M'
jmp .call_decimal_string
@@:
mov eax,ebx
shr eax,10 ; /1024
test eax,eax
jz @f
mov dl,byte 'K'
jmp .call_decimal_string
@@:
mov eax,ebx
;.size_convert:
mov ebx,fb_type_table
add ebx,6
call fb_decimal_string_4
.size_convert_end:
mov eax,fb_type_table
add eax,6
push edi
cmp [eax],byte '0'
jne @f
mov [eax],byte ' '
@@:
add eax,3
@@:
cmp [eax+1],byte ' '
jne @f
mov esi,eax
mov edi,esi
inc edi
mov ecx,5
std
rep movsb
jmp @r
@@:
pop edi
pop edx
pop ebx
;-----------------------------------------
.date:
xor eax,eax
mov al,[edx-40+28]
push ebx
mov ebx,fb_type_table
add ebx,12
call fb_decimal_string_2 ; day
mov al,[edx-40+29]
mov ebx,fb_type_table
add ebx,12+3
call fb_decimal_string_2 ; month
mov ax,[edx-40+30]
mov ebx,fb_type_table
add ebx,12+15
call fb_decimal_string_4 ; year
mov ebx,fb_type_table
mov ax,[ebx+12+15+2]
mov [ebx+12+6],ax
pop ebx
;-----------------------------------------
ror ebx,16
add bx,fb_size_x
sub ebx,122+12+15
rol ebx,16
mov ecx,fb_text_color
cmp fb_marked_file,0
je @f
mov ecx,fb_reduct_text_color ;0xff0000
@@:
mov edx,fb_type_table
mov esi,20
 
mov ax,fb_line_size_y
sub ax,fb_font_size_y
 
push ebx
mov bx,ax
shr ax,1
test bx,1b
jz @f
inc ax
@@:
pop ebx
add bx,ax
cmp fb_all_redraw,dword 2
jne .draw ;@f
and ecx,0xffffff
add ecx,0x40000000
 
mov eax,fb_background_color
cmp fb_draw_panel_selection_flag,1
jne @f
mov eax,fb_select_color
@@:
mov edi,eax
.draw:
mcall 4
popa
ret
;---------------------------------------------------------------------
fb_draw_icon:
pusha
xor eax,eax
mov ax,fb_icon_size_y
mov ebx,fb_resolution_raw
imul eax,ebx
mov bx,fb_icon_size_x
imul eax,ebx
mov ebx,eax
shr eax,3
test ebx,111b
jz @f
inc eax
@@:
test [edx-40],byte 0x10
jnz .draw_dir_pic
 
call fb_get_icon_number
; mov ebx,2
imul ebx,eax ;16*16*3
jmp .draw
.draw_dir_pic:
xor ebx,ebx
cmp [edx],word '..'
jne .draw
mov ebx,eax ;16*16*3
.draw:
add ebx,fb_icon_raw_area
mov cx,fb_icon_size_x
shl ecx,16
mov cx,fb_icon_size_y
mov edx,[esp+16]
ror edx,16
sub edx,2
sub dx,fb_icon_size_x
rol edx,16
 
mov ax,fb_line_size_y
sub ax,fb_icon_size_y
shr ax,1
add dx,ax
 
mov esi,fb_resolution_raw
 
xor ebp,ebp
push edi
mov edi,fb_palette_raw
mcall 65
pop edi
popa
ret
;---------------------------------------------------------------------
; Convert of a binary number in decimal string form
; Input:
; AX - value
; EBX - address of string
; Output:
; string contains the number, marked the end of the code 0
fb_decimal_string_2:
push eax ebx ecx edx
xor ecx,ecx
mov [ebx],byte '0'
inc ebx
.p3:
xor edx,edx
push ebx
mov ebx,10
div ebx
pop ebx
add edx,48
push edx
inc ecx
cmp ax,0
jne .p3
cmp ecx,1
jbe .p4
mov ecx,2
dec ebx
.p4:
pop edx
mov [ebx],dl
inc ebx
loop .p4
pop edx ecx ebx eax
ret
;---------------------------------------------------------------------
fb_decimal_string_4:
push eax ecx edx
xor ecx,ecx
mov [ebx],byte '0'
inc ebx
.p3:
xor edx,edx
push ebx
mov ebx,10
div ebx
pop ebx
add edx,48
push edx
inc ecx
cmp eax,0
jne .p3
cmp ecx,3
jbe .p4
mov ecx,4
dec ebx
.p4:
pop edx
mov [ebx],dl
inc ebx
loop .p4
pop edx ecx eax
ret
;---------------------------------------------------------------------
fb_get_icon_number:
push eax
mov ebp,fb_extension_size
test ebp,ebp
je .end
dec ebp
test ebp,ebp
je .end
dec ebp
test ebp,ebp
je .end
@@:
mov edx,fb_ini_file_end
sub edx,ebp
mov eax,fb_ini_file_start
dec eax
.search_association:
cmp edx,eax
jbe .end
mov esi,fb_extension_start
inc eax
mov ecx,eax
mov ebx,eax
cld
.check:
lodsb
test al,al
jz @f
call fb_char_toupper
shl ax,8
mov al,[ebx]
inc ebx
call fb_char_toupper
cmp al,ah
je .check
mov eax,ecx
jmp .search_association
@@:
mov eax,ecx
mov esi,eax
add esi,ebp
cmp [esi],byte '='
jne .search_association
inc esi
xor ebx,ebx
xor eax,eax
mov ecx,9
call .calculate
cmp al,0x30
jb .end
cmp al,0x39
ja .end
sub eax,0x30
@@:
call .calculate_1
cmp al,0x30
jb @f
cmp al,0x39
ja @f
sub eax,0x30
lea ebx,[ebx+ebx*4]
shl ebx,1
dec ecx
jnz @b
@@:
pop eax
ret
.end:
mov ebx,2
pop eax
ret
;---------------------------------------------------------------------
.calculate_1:
add ebx,eax
.calculate:
xor eax,eax
cld
lodsb
ret
;---------------------------------------------------------------------
fb_char_toupper:
; convert character to uppercase, using cp866 encoding
; in: al=symbol
; out: al=converted symbol
cmp al,'a'
jb .ret
cmp al, 'z'
jbe .az
cmp al, ' '
jb .ret
cmp al, 'à'
jb .rus1
cmp al, 'ï'
ja .ret
; 0xE0-0xEF -> 0x90-0x9F
sub al, 'à'-''
.ret:
ret
.rus1:
; 0xA0-0xAF -> 0x80-0x8F
.az:
and al, not 0x20
ret
;---------------------------------------------------------------------
fb_truncated_filename_char:
db '..'
fb_truncated_filename_clear:
db ' '
;---------------------------------------------------------------------
;*****************************************************************************
;*****************************************************************************
; mouse event
;*****************************************************************************
;*****************************************************************************
fb_mouse:
pusha
mov edi,dword [esp+36]
;-------------------------------------------------------
mcall 37,2
mov ebx,fb_mouse_keys
mov fb_mouse_keys_old,ebx
mov fb_mouse_keys,eax
mcall 37,1
mov ebx,fb_mouse_pos
mov fb_mouse_pos_old,ebx
mov fb_mouse_pos,eax
test eax,0x80000000
jnz .exit_fb
test eax,0x8000
jnz .exit_fb
 
mov ebx,eax
shr ebx,16 ; x position
shl eax,16
shr eax,16 ; y position
mov cx,fb_start_x
cmp bx,cx
jb .exit_fb
add cx,fb_size_x
cmp bx,cx
ja .exit_fb
 
mov cx,fb_start_y
cmp ax,cx
jb .exit_fb
add cx,fb_size_y
cmp ax,cx
ja .exit_fb
;-------------------------------------------------------
cmp fb_mouse_keys_delta,1
je .enter_1
 
cmp fb_mouse_keys,0
jz .exit_fb
.start:
sub ax,fb_start_y
xor ebx,ebx
mov bx,fb_line_size_y
xor edx,edx
push eax
div ebx
pop eax
sub eax,edx
xor edx,edx
cmp fb_select_panel_counter,edx
jne @f
mov fb_mouse_keys_delta,0
jmp .continue
@@:
xor edx,edx
cmp fb_start_draw_cursor_line,ax
jne @f
cmp fb_mouse_keys,edx
jnz .continue
@@:
mov fb_mouse_keys_delta,edx
.continue:
xor ebx,ebx
mov bx,fb_line_size_y
imul ebx,fb_folder_block
cmp eax,ebx
jb @f
xor edx,edx
mov dx,fb_line_size_y
sub ebx,edx
cmp bx,fb_start_draw_cursor_line
je .enter
call .store_old_cursor_line
mov fb_start_draw_cursor_line,bx
jmp .continue_1
@@:
cmp ax,fb_start_draw_cursor_line
je .enter
call .store_old_cursor_line
mov fb_start_draw_cursor_line,ax
.continue_1:
test fb_mouse_keys,10b
jne .mark_mouse
jmp .enter_1
.continue_2:
mov ax,fb_start_draw_cursor_line
cmp ax,fb_start_draw_cursor_line_2
je .exit_fb
 
call fb_draw_panel_1
jmp .exit_fb
.enter:
cmp fb_mouse_keys_delta,2
je .enter_2
cmp fb_mouse_keys_delta,1
je .enter_1
mov eax,fb_mouse_keys_old
cmp fb_mouse_keys,eax
jz .exit_fb
test fb_mouse_keys,10b
jne .mark_mouse
xor edx,edx
inc edx
mov fb_mouse_keys_delta,edx
jmp .exit_fb
.enter_1:
mov eax,fb_mouse_keys_old
cmp fb_mouse_keys,eax
jz .exit_fb
test fb_mouse_keys,10b
jne .mark_mouse
mov edx,2
mov fb_mouse_keys_delta,edx
mcall 26,9
add eax,fb_mouse_key_delay
mov fb_mouse_keys_tick,eax
jmp .continue_2
.enter_2:
mcall 26,9
cmp eax,fb_mouse_keys_tick
ja @f
; mov eax,fb_mouse_pos_old
; cmp eax,fb_mouse_pos
; jne @f
mov eax,fb_mouse_keys_old
cmp fb_mouse_keys,eax
jz @f
test fb_mouse_keys,10b
jne .mark_mouse
call .enter_3
jmp .exit_fb
@@:
xor eax,eax
inc eax
mov fb_mouse_keys_delta,eax
;-------------------------------------------------------
.exit_fb:
file_browser_exit
;-------------------------------------------------------
.mark_mouse:
call fb_key.mark_1
call fb_draw_panel_1
xor eax,eax
mov fb_mouse_keys_delta,eax
jmp .exit_fb
;-------------------------------------------------------
.enter_3:
xor eax,eax
mov fb_mouse_keys,eax
mov fb_mouse_keys_old,eax
mov eax,3
mov fb_mouse_keys_delta,eax
xor eax,eax
mov ax,fb_start_draw_cursor_line
xor ebx,ebx
mov bx,fb_line_size_y
xor edx,edx
div ebx
add eax,fb_start_draw_line
imul eax,304
add eax,32
add eax,fb_folder_data
mov fb_selected_BDVK_adress,eax
xor eax,eax
mov fb_max_name_temp_size,eax
ret
;-------------------------------------------------------
.store_old_cursor_line:
push eax
mov ax,fb_start_draw_cursor_line
mov fb_start_draw_cursor_line_2,ax
xor eax,eax
; mov fb_mouse_keys_delta,eax
pop eax
ret
;*****************************************************************************
;*****************************************************************************
; key event
; 1 - arrow down
; 2 - arrow up
; 3 - PageDown
; 4 - PageUp
; 5 - Home
; 6 - End
; 7 - Enter
; 8 - Insert (Mark)
; 9 - Mark All
; 10 - Unmark All
; 11 - Invert Mark
;*****************************************************************************
;*****************************************************************************
fb_key:
pusha
mov edi,dword [esp+36]
;-------------------------------------------------------
mov eax,fb_key_action
shl eax,2
add eax,dword fb_key_table
cmp eax,fb_key_table.end
jae .exit_fb
cmp [eax],dword 0
je .exit_fb
jmp dword [eax]
;-------------------------------------------------------
.arrow_down:
mov ax,fb_start_draw_cursor_line
add ax,fb_line_size_y
add ax,fb_line_size_y
cmp ax,word fb_size_y
jae @f
.add_1:
call fb_mouse.store_old_cursor_line
mov ax,fb_start_draw_cursor_line
add ax,fb_line_size_y
mov fb_start_draw_cursor_line,ax
call fb_draw_panel_1
jmp .exit_fb
@@:
mov eax,fb_folder_block
sub eax,fb_max_panel_line
test eax,0x80000000
jnz .page_down_2
 
call .prepare_data_down
ja @f
 
cmp fb_start_draw_line,eax
je .exit_fb
@@:
inc fb_start_draw_line
call fb_draw_panel_3
jmp .exit_fb
;-------------------------------------------------------
.arrow_up:
mov ax,fb_start_draw_cursor_line
add ax,fb_start_y
cmp fb_start_y,ax
je @f
call fb_mouse.store_old_cursor_line
mov ax,fb_start_draw_cursor_line
sub ax,fb_line_size_y
mov fb_start_draw_cursor_line,ax
call fb_draw_panel_1
jmp .exit_fb
@@:
cmp fb_start_draw_line,0
je .exit_fb
dec fb_start_draw_line
call fb_draw_panel_3
jmp .exit_fb
;-------------------------------------------------------
.page_down:
mov eax,fb_max_panel_line
mov ebx,fb_folder_block
sub ebx,eax
test ebx,0x80000000
jnz .page_down_2
sub ebx,fb_start_draw_line
cmp ebx,eax
ja .page_down_3
mov ebx,fb_folder_block
sub ebx,eax
call .prepare_data_down
ja @f
cmp ebx,fb_start_draw_line
je .exit_fb
@@:
mov fb_start_draw_line,ebx
.page_down_0:
dec eax
xor ebx,ebx
mov bx,fb_line_size_y
imul eax,ebx
.page_down_1:
call fb_mouse.store_old_cursor_line
mov fb_start_draw_cursor_line,ax
call fb_draw_panel_2
jmp .exit_fb
.page_down_2:
mov eax,fb_folder_block
sub eax,fb_start_draw_line
dec eax
xor ebx,ebx
mov bx,fb_line_size_y
imul eax,ebx
cmp ax,fb_start_draw_cursor_line
jbe .exit_fb
jmp .page_down_1
.page_down_3:
add fb_start_draw_line,eax
call fb_draw_panel_2
jmp .exit_fb
;-------------------------------------------------------
.prepare_data_down:
mov ecx,fb_folder_block
sub ecx,fb_start_draw_line
dec ecx
xor edx,edx
mov dx,fb_line_size_y
imul ecx,edx
cmp cx,fb_start_draw_cursor_line
ret
;-------------------------------------------------------
.page_up:
mov eax,fb_max_panel_line
mov ebx,fb_start_draw_line
sub ebx,eax
test ebx,0x8000000
jz @f
cmp fb_start_draw_line,0
jne .page_up_1
cmp fb_start_draw_cursor_line,0
je .exit_fb
mov fb_start_draw_cursor_line,0
.page_up_1:
mov fb_start_draw_line,0
call fb_draw_panel_2
jmp .exit_fb
@@:
sub fb_start_draw_line,eax
call fb_draw_panel_2
jmp .exit_fb
;-------------------------------------------------------
.home:
cmp fb_start_draw_line,0
jne @f
cmp fb_start_draw_cursor_line,0
je .exit_fb
@@:
mov fb_start_draw_line,0
mov fb_start_draw_cursor_line,0
call fb_mouse.store_old_cursor_line
call fb_draw_panel_2
jmp .exit_fb
;-------------------------------------------------------
.end:
mov eax,fb_folder_block
sub eax,fb_max_panel_line
test eax,0x80000000
jnz .page_down_2
call .prepare_data_down
ja @f
cmp eax,fb_start_draw_line
je .exit_fb
@@:
mov fb_start_draw_line,eax
mov eax,fb_max_panel_line
jmp .page_down_0
;-------------------------------------------------------
.enter:
call fb_mouse.enter_3
jmp .exit_fb
;-------------------------------------------------------
.mark:
call .mark_1
jmp .arrow_down
;-------------------------------------------------------
.mark_1:
xor eax,eax
mov ax,fb_start_draw_cursor_line
xor edx,edx
xor ebx,ebx
mov bx,fb_line_size_y
div ebx
mov esi,fb_start_draw_line
add esi,eax
imul esi,304
add esi,fb_folder_data
 
add esi,32+299
mov al,[esi]
and al,1
test al,al
jnz @f
inc fb_marked_counter
jmp .mark_2
@@:
dec fb_marked_counter
.mark_2:
mov al,[esi]
inc al
and al,1
mov [esi],al
ret
;-------------------------------------------------------
.mark_all:
mov fb_temp_counter,0
.mark_all_1:
mov ebp,fb_folder_block
.mark_all_2:
mov ebx,ebp
dec ebx
imul ebx,304
add ebx,fb_folder_data
add ebx,32+40
cmp [ebx],word '..'
jne .mark_all_3
cmp [ebx+2],byte 0
je @f
.mark_all_3:
call .select_mark_action
@@:
dec ebp
jnz .mark_all_2
call fb_draw_panel_3
cmp fb_temp_counter,0
jne @f
mov eax,fb_folder_block
jmp .mark_all_4
@@:
cmp fb_temp_counter,1
jne @f
mov fb_marked_counter,0
jmp .exit_fb
@@:
mov eax,fb_folder_block
sub eax,fb_marked_counter
.mark_all_4:
dec eax
mov fb_marked_counter,eax
jmp .exit_fb
;-------------------------------------------------------
.select_mark_action:
add ebx,299-40
cmp fb_temp_counter,0
jne @f
mov [ebx],byte 1
jmp .select_mark_action_1
@@:
cmp fb_temp_counter,1
jne @f
mov [ebx],byte 0
jmp .select_mark_action_1
@@:
mov al,[ebx]
inc al
and al,1
mov [ebx],al
.select_mark_action_1:
ret
;-------------------------------------------------------
.unmark_all:
mov fb_temp_counter,1
jmp .mark_all_1
;-------------------------------------------------------
.invert_mark:
mov fb_temp_counter,2
jmp .mark_all_1
;-------------------------------------------------------
.exit_fb:
file_browser_exit
;-------------------------------------------------------
fb_key_table:
dd 0
dd fb_key.arrow_down ; 1
dd fb_key.arrow_up ; 2
dd fb_key.page_down ; 3
dd fb_key.page_up ; 4
dd fb_key.home ; 5
dd fb_key.end ; 6
dd fb_key.enter ; 7
dd fb_key.mark ; 8
dd fb_key.mark_all ; 9
dd fb_key.unmark_all ; 10
dd fb_key.invert_mark ; 11
.end:
dd 0
;-------------------------------------------------------
fb_draw_panel_3:
mov eax,2
mov fb_all_redraw,eax
jmp @f
fb_draw_panel_2:
xor eax,eax
inc eax
mov fb_all_redraw,eax
call fb_draw_panel_selection
@@:
call fb_draw_folder_data
xor eax,eax
mov fb_all_redraw,eax
inc eax
mov fb_draw_scroll_bar,eax
ret
 
}
/programs/develop/libraries/box_lib/trunk/menubar.mac
1,6 → 1,6
;**************************************************************
; MenuBar Macro for Kolibri OS
; Copyright (c) 2009, Mario79
; Copyright (c) 2009, Marat Zakiyanov aka Mario79, aka Mario
; All rights reserved.
;
; Redistribution and use in source and binary forms, with or without
14,7 → 14,7
; names of its contributors may be used to endorse or promote products
; derived from this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY Mario79 ''AS IS'' AND ANY
; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
42,7 → 42,7
m_text_pointer equ [edi+12]
m_pos_pointer equ [edi+16]
m_text_end equ [edi+20]
m_mouse_pos equ [edi+24]
m_ret_key equ [edi+24]
m_mouse_keys equ [edi+28]
m_size_x1 equ [edi+32]
m_start_x1 equ [edi+34]
200,15 → 200,16
; mouse event
;*****************************************************************************
;*****************************************************************************
.activate:
pusha
mov edi,dword [esp+36]
jmp .start_loop
.mouse:
pusha
mov edi,dword [esp+36]
;.mouse_1:
; mov eax,m_mouse_pos
; cmp m_get_mouse_flag,dword 0
; je @f
 
call .processing_real_mouse
;@@:
 
test eax,0x80000000
jnz .exit_menu
test eax,0x8000
253,6 → 254,7
cmp eax,m_mouse_keys_old
je .exit_menu_1
@@:
.start_loop:
mov m_select,dword 1
call .draw_1
call .allocate_menu_area
264,7 → 266,7
.still:
mcall 10
cmp eax,1
je .exit_menu_3 ;red
je .exit_menu_3
cmp eax,2
je .key_menu
cmp eax,3
275,6 → 277,7
.key_menu:
mcall 2
 
cmp m_extended_key,dword 1
je .extended_key
test al,al
293,6 → 296,11
je .menu_key_28_1
cmp ah,1 ; Esc
je .menu_key_1_1
cmp ah,75 ; L-Arrow down
je .menu_key_75_1
cmp ah,77 ; R-Arrow down
je .menu_key_77_1
.key_menu_end_1:
cmp ah,208 ; Arrow Down
je .key_menu_end
302,12 → 310,6
je .key_menu_end
cmp ah,129 ; Esc
je .key_menu_end
; cmp ah,184 ;Alt to Up
; je .end_5
; cmp ah,187 ; F1 to Up
; je .end_1
; cmp ah,188 ; F2 to Up
; je .end_1
cmp ah,199 ;Home
je .key_menu_end
cmp ah,207 ;End
324,17 → 326,20
je .key_menu_end
cmp ah,211 ; Delete
je .key_menu_end
; cmp ah,56 ;Alt to Up
; je .end_4
; cmp ah,59 ; F1 to Down
; je .end_2
; cmp ah,60 ; F2 to Down
; je .end_3
cmp ah,157 ; Ctrl up
je .key_menu_end
cmp ah,184 ; Alt up
je .key_menu_end
cmp ah,170 ; L-Shift up
je .key_menu_end
cmp ah,182 ; R-Shift up
je .key_menu_end
cmp ah,203 ; L-Arrow up
je .key_menu_end
cmp ah,205 ; R-Arrow up
je .key_menu_end
 
;.for_all_key:
; mov [close_menu],1
; ret
jmp .exit_menu_3 ;.still
jmp .exit_menu_3
 
;---------------------------------------------------------------------
.extended_key:
401,14 → 406,28
;---------------------------------------------------------------------
.menu_key_28:
cmp ah,28 ; Enter
jne .menu_key_end
jne .menu_key_75
.menu_key_28_1:
; mov [press_enter_menu],1
; ret
xor eax,eax
mov m_mouse_keys_old,eax
inc eax
mov m_mouse_keys,eax
jmp .exit_menu_2
.menu_key_end:
jmp .key_menu_end_1
;---------------------------------------------------------------------
.menu_key_75:
cmp ah,75 ; L-Arrow down
jne .menu_key_77
.menu_key_75_1:
mov m_ret_key,dword 1
jmp .exit_menu_3
;---------------------------------------------------------------------
.menu_key_77:
cmp ah,77 ; R-Arrow down
jne .key_menu_end_1
.menu_key_77_1:
mov m_ret_key,dword 2
jmp .exit_menu_3
;---------------------------------------------------------------------
.processing_real_mouse:
mcall 37,2
mov ebx,m_mouse_keys
416,7 → 435,6
mov m_mouse_keys,eax
mcall 37,1
mov m_mouse_pos,eax
ret
;---------------------------------------------------------------------
.allocate_menu_area:
526,7 → 544,7
mov m_select,dword 0
call .draw_1
; jmp .exit_menu_1
 
test m_mouse_keys,dword 1b
jz .exit_menu_1
/programs/develop/libraries/box_lib/trunk/scrollbar.mac
1,6 → 1,6
;**************************************************************
; ScrollBar Macro for Kolibri OS
; Copyright (c) 2009, Mario79
; Copyright (c) 2009, Marat Zakiyanov aka Mario79, aka Mario
; All rights reserved.
;
; Redistribution and use in source and binary forms, with or without
14,7 → 14,7
; names of its contributors may be used to endorse or promote products
; derived from this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY Mario79 ''AS IS'' AND ANY
; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
294,7 → 294,6
.draw:
pusha
mov edi,dword [esp+36]
; mov sb_all_redraw,dword 1
mov sb_delta,word 0
call .draw_1
mov sb_all_redraw,dword 0
309,7 → 308,7
sub eax,edx
mov sb_work_size,eax
;*********************************
mov eax,sb_work_size ;sb_max_area
mov eax,sb_work_size
mov ebx,sb_max_area
cmp ebx,sb_cur_area
ja @f
494,7 → 493,7
pop ecx
ror ecx,16
add ecx,sb_btn_high ;14 shl 16
add ecx,sb_btn_high
rol ecx,16
mov edx,sb_line_col
536,7 → 535,7
@@:
cmp sb_m_keys,dword 0
jne @f ;.continue_2
jne @f
mov eax,sb_m_pos
mov sb_m_pos_2,eax
jmp .correct_1 ;.exit_sb
607,7 → 606,7
push eax
mov ax,sb_m_pos
cmp ax,sb_m_pos_2
je .correct ;.exit_sb
je .correct
shl eax,16
shr eax,16
675,10 → 674,8
mov eax,sb_ar_offset
cmp sb_position,eax ;dword 0
; je .exit_sb
jbe @f
; dec dword sb_position
sub sb_position,eax
jmp .all_sb
@@:
699,7 → 696,6
@@:
mov ebx,sb_btn_high ;16 ;15
; inc ebx
add bx,sb_start_y
sub cx,bx
sub ax,bx
712,7 → 708,6
@@:
mov edx,eax
; sub edx,sb_btn_high
push ebx
shr ebx,1
sub edx,ebx
734,7 → 729,6
jbe .continue
mov sb_position2,edx
; jmp .continue_1
.continue:
mov eax,sb_position2
750,7 → 744,7
xor eax,eax
inc eax
mov sb_position2,eax
jmp .all_sb ;.store_position
jmp .all_sb
@@:
sub eax,sb_cur_area
inc eax
796,10 → 790,8
sub eax,ebx
cmp sb_position,eax
pop eax
; jae .exit_sb
jae @f
; inc dword sb_position
add sb_position,ebx
jmp .all_sb
@@:
826,7 → 818,6
.draw:
pusha
mov edi,dword [esp+36]
; mov sb_all_redraw,dword 1
mov sb_delta,word 0
call .draw_1
mov sb_all_redraw,dword 0
1066,7 → 1057,7
@@:
cmp sb_m_keys,dword 0
jne @f ;.continue_2
jne @f
mov eax,sb_m_pos
mov sb_m_pos_2,eax
jmp .correct_1 ;.exit_sb
1140,7 → 1131,7
shr eax,16
shr ebx,16
cmp eax,ebx
je .correct ;.exit_sb
je .correct
; shl eax,16
; shr eax,16
1208,10 → 1199,8
mov eax,sb_ar_offset
cmp sb_position,eax ;dword 0
; je .exit_sb
jbe @f
; dec dword sb_position
sub sb_position,eax
jmp .all_sb
@@:
1232,7 → 1221,6
@@:
mov ebx,sb_btn_high ;16 ;15
; inc ebx
add bx,sb_start_x ;y
sub cx,bx
sub ax,bx
1245,7 → 1233,7
@@:
mov edx,eax
; sub edx,sb_btn_high
 
push ebx
shr ebx,1
sub edx,ebx
1267,7 → 1255,6
jbe .continue
mov sb_position2,edx
; jmp .continue_1
.continue:
mov eax,sb_position2
1283,7 → 1270,7
xor eax,eax
inc eax
mov sb_position2,eax
jmp .all_sb ;.store_position
jmp .all_sb
@@:
sub eax,sb_cur_area
inc eax
1329,10 → 1316,8
sub eax,ebx
cmp sb_position,eax
pop eax
; jae .exit_sb
jae @f
; inc dword sb_position
add sb_position,ebx
jmp .all_sb
@@: