1,13 → 1,7 |
use32 |
org 0x0 |
db 'MENUET01' ;¨¤¥â¨ä. ¨á¯®«ï¥¬®£® ä ©« ¢á¥£¤ 8 ¡ ©â |
dd 0x1 |
dd start |
dd i_end ;à §¬¥à ¯à¨«®¦¥¨ï |
dd mem |
dd stacktop |
dd 0 |
dd sys_path |
dd 1,start,i_end,mem,stacktop,0,sys_path |
|
ini_def_c_bkgnd equ 0 |
ini_def_c_border equ 0xff0000 |
46,14 → 40,14 |
|
include '../../../macros.inc' |
include '../../../proc32.inc' |
include '../../../develop/libraries/box_lib/load_lib.mac' |
include '../../../KOSfuncs.inc' |
include '../../../load_img.inc' |
include '../../../develop/libraries/box_lib/trunk/box_lib.mac' |
include '../../../dll.inc' |
include 'le_pole.inc' |
include 'le_signal.inc' |
|
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
caption db '®£¨ç¥áª¨¥ í«¥¬¥âë 15.11.15',0 ;¯®¤¯¨áì ®ª |
caption db '®£¨ç¥áª¨¥ í«¥¬¥âë 13.02.16',0 ;¯®¤¯¨áì ®ª |
|
panel_0_coord_top equ 5 ;¢¥àåïï ª®®à¤¨ â 0-£® àï¤ ¯ ¥«¨ ¨áâà㬥⮢ |
panel_1_coord_top equ 35 |
60,6 → 54,12 |
panel_2_coord_top equ 60 |
panel_3_coord_top equ 85 |
|
;input: |
; eax - coord x |
; ebx - coord y |
;output: |
; eax - coord x + d_x * cos(angle) |
; ebx - coord y + d_x * sin(angle) |
align 4 |
proc move_rotate_x_n90 uses ecx edi, d_x:dword, angle:dword |
mov edi,[angle] ;㣮« ¯®¢®à®â / 90 (®â 0-3) |
74,20 → 74,9 |
mov ecx,[d_x] |
imul ecx,dword[edi+8] |
add ebx,ecx |
|
ret |
endp |
|
struct FileInfoBlock |
Function dd ? |
Position dd ? |
Flags dd ? |
Count dd ? |
Buffer dd ? |
db ? |
FileName dd ? |
ends |
|
macro elOpt nam,col,box_x,box_y,table, tbl_i_legs, ol0, ol1, ol2 |
{ |
@@: db nam,0 |
181,61 → 170,16 |
-1, 0, 0,-1,\ |
0,-1, 1, 0 |
|
run_file_70 FileInfoBlock |
image_data dd 0 ;㪠§ â¥«ì ¢à¥¬¥ãî ¯ ¬ïâì. ¤«ï 㦥 ¯à¥®¡à §®¢ ¨ï ¨§®¡à ¦¥¨ï |
|
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3 |
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*25 |
image_data_toolbar dd 0 |
|
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©« á á¨á⥬묨 ¨ª®ª ¬¨ |
icon_tl_sys dd 0 ;㪠§ â¥«ì ¯ ¬ïâì ¤«ï åà ¥¨ï á¨á⥬ëå ¨ª®®ª |
TOOLBAR_ICON_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*5+54 ;à §¬¥à bmp ä ©« á ¨ª®ª ¬¨ ®¡ê¥ªâ®¢ |
icon_toolbar dd 0 ;㪠§ â¥«ì ¯ ¬ïâì ¤«ï åà ¥¨ï ¨ª®®ª ®¡ê¥ªâ®¢ |
|
IMAGE_FONT_SIZE equ 128*144*3 |
image_data_gray dd 0 ;¯ ¬ïâì á ¢à¥¬¥ë¬¨ á¥à묨 ¨§®¡à ¦¥¨ï¬¨ ¢ ä®à¬ ⥠24-bit, ¨§ ª®â®àëå ¡ã¤ãâ ᮧ¤ ¢ âìáï âà ä à¥âë |
|
cursors_count equ 4 |
IMAGE_CURSORS_SIZE equ 4096*cursors_count ;à §¬¥à ª à⨪¨ á ªãàá®à ¬¨ |
|
macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥¨© |
;path - ¬®¦¥â ¡ëâì ¯¥à¥¬¥®© ¨«¨ áâப®¢ë¬ ¯ à ¬¥â஬ |
if path eqtype '' ;¯à®¢¥à塞 § ¤ «¨ áâப®© ¯ à ¬¥âà path |
jmp @f |
local .path_str |
.path_str db path ;ä®à¬¨à㥬 «®ª «ìãî ¯¥à¥¬¥ãî |
db 0 |
@@: |
;32 - áâ ¤ àâë© ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥ ¡ëâì ¡ãä¥à á á¨áâ¥¬ë¬ ¯ã⥬ |
copy_path .path_str,[32],file_name,0 |
else |
copy_path path,[32],file_name,0x0 ;ä®à¬¨à㥬 ¯®«ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ® ¢ ®¤®© ¯ ¯ª¥ á ¯à®£à ¬¬®© |
end if |
|
stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥¨ï |
mov [buf],eax |
|
mov [run_file_70.Function], 0 |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov [run_file_70.Count], dword size |
m2m [run_file_70.Buffer], eax |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], file_name |
mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
cmp ebx,0xffffffff |
je @f |
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥ë© ¡ãä¥à image_data |
stdcall dword[img_decode], dword[buf],ebx,0 |
mov dword[image_data],eax |
;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥¨¥ ª ä®à¬ âã rgb |
stdcall dword[img_to_rgb2], dword[image_data],dword[buf] |
;㤠«ï¥¬ ¢à¥¬¥ë© ¡ãä¥à image_data |
stdcall dword[img_destroy], dword[image_data] |
@@: |
} |
|
ini_name db 'log_el.ini',0 ;¨¬ï ä ©« |
ini_sec_color db 'Colors',0 |
key_color_bkgnd db 'background',0 |
255,10 → 199,10 |
mov ebp,lib_7 |
cmp dword [ebp+ll_struc_size-4],0 |
jz @f |
mcall -1 ;exit not correct |
mcall SF_TERMINATE_PROCESS |
@@: |
mcall 48,3,sc,sizeof.system_colors |
mcall 40,0x27 |
mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors |
mcall SF_SET_EVENTS_MASK,0x27 |
|
;*** áç¨âë¢ ¨¥ áâ஥ª ¨§ *.ini ä ©« |
copy_path ini_name,sys_path,file_name,0x0 |
295,7 → 239,7 |
;*** ¯®¤£®â®¢ª ¤¨ «®£ |
stdcall [OpenDialog_Init],OpenDialog_data |
stdcall [buf2d_create], buf_0 ;ᮧ¤ ¨¥ ¡ãä¥à |
load_image_file 'toolbar.png', image_data_toolbar,IMAGE_TOOLBAR_SIZE |
load_image_file 'toolbar.png', image_data_toolbar |
|
stdcall pole_init, pole |
stdcall dword[tl_data_init], tree1 |
302,7 → 246,7 |
stdcall dword[tl_data_init], tree2 |
|
;á¨áâ¥¬ë¥ ¨ª®ª¨ 16*16 ¤«ï tree_list |
load_image_file 'tl_sys_16.png', icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE |
load_image_file 'tl_sys_16.png', icon_tl_sys |
;¥á«¨ ¨§®¡à ¦¥¨¥ ¥ ®âªàë«®áì, â® ¢ icon_tl_sys ¡ã¤ãâ |
;¥ ¨¨æ¨ «¨§¨à®¢ ë¥ ¤ ë¥, ® ®è¨¡ª¨ ¥ ¡ã¤¥â, â. ª. ¡ãä¥à 㦮£® à §¬¥à |
mov eax,dword[icon_tl_sys] |
309,13 → 253,13 |
mov dword[tree1.data_img_sys],eax |
mov dword[tree2.data_img_sys],eax |
|
load_image_file 'objects.png', icon_toolbar,TOOLBAR_ICON_BMP_SIZE |
load_image_file 'objects.png', icon_toolbar |
mov eax,dword[icon_toolbar] |
mov dword[tree1.data_img],eax |
mov dword[tree2.data_img],eax |
|
;*** § £à㧪 èà¨äâ |
load_image_file 'font6x9.bmp', image_data_gray,IMAGE_FONT_SIZE |
load_image_file 'font6x9.bmp', image_data_gray |
stdcall [buf2d_create_f_img], buf_font,[image_data_gray] ;ᮧ¤ ¥¬ ¡ãä¥à |
stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì |
|
323,11 → 267,11 |
stdcall [buf2d_convert_text_matrix], buf_font |
|
;*** § £à㧪 ªãàá®à®¢ |
load_image_file 'cursors_gr.png',image_data_gray,IMAGE_CURSORS_SIZE |
load_image_file 'cursors_gr.png',image_data_gray |
stdcall [buf2d_create_f_img], buf_curs_8,[image_data_gray] ;ᮧ¤ ¥¬ ¡ãä¥à |
stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì |
|
load_image_file 'cursors.png',image_data_gray, IMAGE_CURSORS_SIZE |
load_image_file 'cursors.png',image_data_gray |
stdcall [buf2d_create_f_img], buf_curs,[image_data_gray] ;ᮧ¤ ¥¬ ¡ãä¥à |
stdcall mem.Free,[image_data_gray] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì |
|
346,7 → 290,7 |
stdcall [tl_cur_beg], tree2 |
|
;*** ãáâ ®¢ª ¢à¥¬¥¨ ¤«ï â ©¬¥à |
mcall 26,9 |
mcall SF_SYSTEM_GET,SSF_TIME_COUNT |
mov [last_time],eax |
|
align 4 |
355,7 → 299,7 |
|
align 4 |
still: |
mcall 26,9 |
mcall SF_SYSTEM_GET,SSF_TIME_COUNT |
mov ebx,[last_time] |
add ebx,10 ;§ ¤¥à¦ª |
cmp ebx,eax |
363,11 → 307,7 |
mov ebx,eax |
@@: |
sub ebx,eax |
;cmp ebx,10 ;§ ¤¥à¦ª |
;ja timer_funct |
;test ebx,ebx |
;jz timer_funct |
mcall 23 |
mcall SF_WAIT_EVENT_TIMEOUT |
cmp eax,0 |
je timer_funct |
|
386,7 → 326,7 |
align 4 |
timer_funct: |
pushad |
mcall 26,9 |
mcall SF_SYSTEM_GET,SSF_TIME_COUNT |
mov [last_time],eax |
|
cmp byte[tim_ch],0 |
424,7 → 364,7 |
stdcall [tl_mouse], tree2 |
|
pushad |
mcall 37,2 ; ¦ âë¥ ª®¯ª¨ ¬ëè¨ |
mcall SF_MOUSE_GET,SSF_BUTTON |
bt eax,0 ;«¥¢ ï ª®¯ª ¦ â ? |
jc @f |
bt eax,1 ;¯à ¢ ï ª®¯ª ¦ â ? |
436,7 → 376,7 |
@@: |
mov esi,eax |
|
mcall 37,1 ;eax = (x shl 16) + y |
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION ;eax = (x shl 16) + y |
cmp ax,word[buf_0.t] |
jl .end_buf_wnd ;¥ ¯®¯ «¨ ¢ ®ª® ¡ãä¥à ¯® ®á¨ y |
|
693,24 → 633,16 |
align 4 |
draw_window: |
pushad |
mcall 12,1 |
mcall SF_REDRAW,SSF_BEGIN_DRAW |
|
; *** à¨á®¢ ¨¥ £« ¢®£® ®ª (¢ë¯®«ï¥âáï 1 à § ¯à¨ § ¯ã᪥) *** |
xor eax,eax |
mov ebx,(20 shl 16)+580 |
mov ecx,(20 shl 16)+415 |
mov edx,[sc.work] |
or edx,(3 shl 24)+0x10000000+0x20000000 |
mov edi,caption |
int 0x40 |
mcall SF_CREATE_WINDOW, (20 shl 16)+580,(20 shl 16)+415 |
|
; *** ᮧ¤ ¨¥ ª®¯®ª ¯ ¥«ì *** |
mov eax,8 |
mov ebx,(5 shl 16)+20 |
mov ecx,(panel_0_coord_top shl 16)+20 |
mov edx,3 |
mov esi,[sc.work_button] |
int 0x40 |
mcall SF_DEFINE_BUTTON, (5 shl 16)+20, (panel_0_coord_top shl 16)+20, 3,, [sc.work_button] |
|
add ebx,25 shl 16 |
mov edx,4 |
769,11 → 701,8 |
int 0x40 |
|
; *** à¨á®¢ ¨¥ ¨ª®®ª ª®¯ª å *** |
mov eax,7 |
mov ebx,[image_data_toolbar] |
mov ecx,(16 shl 16)+16 |
mov edx,(7 shl 16)+panel_0_coord_top+2 ;icon new |
int 0x40 |
mcall SF_PUT_IMAGE, [image_data_toolbar],(16 shl 16)+16 |
|
add ebx,IMAGE_TOOLBAR_ICON_SIZE |
add edx,(25 shl 16) ;icon open |
830,7 → 759,7 |
|
; *** ᮧ¤ ¨¥ ª®¯®ª ãáâ ®¢ª¨ ᨣ «®¢ set_0 ¨ set_1 *** |
mov esi,[sc.work_button] |
mcall 8, (5 shl 16)+20, (panel_1_coord_top shl 16)+20, 20 |
mcall SF_DEFINE_BUTTON, (5 shl 16)+20, (panel_1_coord_top shl 16)+20, 20 |
|
add ebx,25 shl 16 |
mov edx,21 |
855,7 → 784,7 |
mov ecx,[sc.work_text] |
or ecx,0x80000000 ;or (1 shl 30) |
;mov edi,[sc.work] |
mcall 4, (12 shl 16)+panel_1_coord_top+6,, txt_set_0 |
mcall SF_DRAW_TEXT, (12 shl 16)+panel_1_coord_top+6,, txt_set_0 |
|
add ebx,25 shl 16 |
mov edx,txt_set_1 |
864,7 → 793,7 |
; *** à¨á®¢ ¨¥ ¨ª®®ª ª®¯ª å *** |
mov ebx,[image_data_toolbar] |
add ebx,IMAGE_TOOLBAR_ICON_SIZE*15 |
mcall 7,, (16 shl 16)+16, (62 shl 16)+panel_1_coord_top+2 |
mcall SF_PUT_IMAGE,, (16 shl 16)+16, (62 shl 16)+panel_1_coord_top+2 |
|
add ebx,IMAGE_TOOLBAR_ICON_SIZE |
add edx,(25 shl 16) |
880,7 → 809,7 |
|
; *** ᮧ¤ ¨¥ ª®¯®ª à¨á®¢ ¨ï ¯à®¢®¤ *** |
mov esi,[sc.work_button] |
mcall 8, (5 shl 16)+20, (panel_2_coord_top shl 16)+20, 30 |
mcall SF_DEFINE_BUTTON, (5 shl 16)+20, (panel_2_coord_top shl 16)+20, 30 |
|
add ebx,30 shl 16 |
mov edx,31 |
903,13 → 832,9 |
int 0x40 |
|
; *** à¨á®¢ ¨¥ ¨ª®®ª ª®¯ª å *** |
mov eax,7 |
mov ebx,[image_data_toolbar] |
mov ecx,(16 shl 16)+16 |
mov edx,(7 shl 16)+panel_2_coord_top+2 ;¨ª®ª áâ५ |
|
add ebx,IMAGE_TOOLBAR_ICON_SIZE*19 |
int 0x40 |
mcall SF_PUT_IMAGE,, (16 shl 16)+16,(7 shl 16)+panel_2_coord_top+2 ;¨ª®ª áâ५ |
|
add ebx,IMAGE_TOOLBAR_ICON_SIZE |
add edx,(30 shl 16) ;icon - à¨á®¢ ¨¥ ¯à®¢®¤ |
931,21 → 856,21 |
add edx,(25 shl 16) ;icon - § â¨à çª |
int 0x40 |
|
mcall 12,2 |
mcall SF_REDRAW,SSF_END_DRAW |
popad |
ret |
|
align 4 |
key: |
mcall 2 |
stdcall [tl_key], dword tree1 |
stdcall [tl_key], dword tree2 |
mcall SF_GET_KEY |
stdcall [tl_key], tree1 |
stdcall [tl_key], tree2 |
jmp still |
|
|
align 4 |
button: |
mcall 17 |
mcall SF_GET_BUTTON |
cmp ah,3 |
jne @f |
call but_new_file |
1087,9 → 1012,9 |
stdcall [tl_data_clear], tree2 |
cmp [cursor_pointer],0 |
je @f |
mcall 37,6,[cursor_pointer] |
mcall SF_MOUSE_GET,SSF_DEL_CURSOR,[cursor_pointer] |
@@: |
mcall -1 |
mcall SF_TERMINATE_PROCESS |
|
;ᮧ¤ ¨¥ ®¢®© á奬ë |
align 4 |
1132,7 → 1057,7 |
jne .end_open_file |
;ª®¤ ¯à¨ 㤠箬 ®âªàë⨨ ¤¨ «®£ |
|
mov [run_file_70.Function], 0 |
mov [run_file_70.Function], SSF_READ_FILE |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov dword[run_file_70.Count], open_file_lif.end-open_file_lif |
1139,7 → 1064,7 |
m2m [run_file_70.Buffer], open_file_lif |
mov byte[run_file_70+20], 0 |
mov dword[run_file_70.FileName], openfile_path |
mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« |
mcall SF_FILE,run_file_70 ;§ £à㦠¥¬ ä ©« |
cmp ebx,0xffffffff |
je .end_open_file |
|
1146,7 → 1071,7 |
mov dword[f_size],ebx |
add ebx,open_file_lif |
mov byte[ebx],0 ; á«ãç © ¥á«¨ à ¥¥ ¡ë« ®âªàëâ ä ©« ¡®«ì襣® à §¬¥à ç¨á⨬ ª®¥æ ¡ãä¥à á ä ©«®¬ |
mcall 71,1,openfile_path |
mcall SF_SET_CAPTION,1,openfile_path |
;--- |
|
;§ ¤ ¥¬ ¬¨¨¬ «ìë¥ § 票ï, á«ãç © ¥á«¨ ¢ ä ©«¥ ¡ã¤ãâ ¥ª®à¥ªâë¥ à §¬¥àë |
1820,7 → 1745,7 |
stdcall str_len,edi |
|
;*** § ¯¨áì ä ©« |
mov [run_file_70.Function], 2 |
mov [run_file_70.Function], SSF_CREATE_FILE |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov dword[run_file_70.Count], eax |
1827,7 → 1752,7 |
mov [run_file_70.Buffer], edi |
mov byte[run_file_70+20], 0 |
mov dword[run_file_70.FileName], openfile_path |
mcall 70,run_file_70 ;á®åà 塞 ä ©« |
mcall SF_FILE,run_file_70 ;á®åà 塞 ä ©« |
|
call redraw_pole |
.end_save_file: |
2345,7 → 2270,7 |
cmp [cursor_pointer],0 |
je @f |
push eax ebx ecx |
mcall 37,6,[cursor_pointer] |
mcall SF_MOUSE_GET,SSF_DEL_CURSOR,[cursor_pointer] |
pop ecx ebx eax |
@@: |
ret |
2363,12 → 2288,12 |
mov ecx,[icon] |
shl ecx,12 ;㬮¦ ¥¬ 4 ª¡ |
add ecx,[buf_curs.data] |
mcall 37,4 |
mcall SF_MOUSE_GET,SSF_LOAD_CURSOR |
|
cmp eax,0 |
je @f |
mov [cursor_pointer],eax |
mcall 37,5,[cursor_pointer] |
mcall SF_MOUSE_GET,SSF_SET_CURSOR,[cursor_pointer] |
@@: |
ret |
endp |
2689,10 → 2614,11 |
@@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï)) |
or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥ |
stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi |
ret ;¢¥àãâìáï ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï |
ret ;¢¥àãâìáï ®ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï |
|
align 16 |
i_end: |
run_file_70 FileInfoBlock |
rb 1024 |
stacktop: |
sys_path rb 1024 |