17,6 → 17,8 |
color_s3 equ 0xff0000 ;¢à¥¬¥®¥ § 票¥ ¤«ï á®åà ¥¨ï |
|
color_border dd ini_def_c_border |
opt_sign_moves dd 4 |
opt_fast_mode dd 0 ;¡ëáâàë© à¥¦¨¬ |
|
debug equ 0 |
|
52,7 → 54,7 |
include 'le_signal.inc' |
|
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
caption db '®£¨ç¥áª¨¥ í«¥¬¥âë 05.04.12',0 ;¯®¤¯¨áì ®ª |
caption db '®£¨ç¥áª¨¥ í«¥¬¥âë 19.04.12',0 ;¯®¤¯¨áì ®ª |
|
panel_0_coord_top equ 5 ;¢¥àåïï ª®®à¤¨ â 0-£® àï¤ ¯ ¥«¨ ¨áâà㬥⮢ |
panel_1_coord_top equ 35 |
89,8 → 91,8 |
|
macro elOpt nam,col,box_x,box_y,table, tbl_i_legs, ol0, ol1, ol2 |
{ |
@@: db nam |
rb @b+16-$ |
@@: db nam,0 |
rb @b+el_offs_col-$ |
dd col |
db box_x |
db box_y |
112,6 → 114,8 |
elOpt 'not', 0xffff, 3,3,tbl_not, tbl_il_1, 1 |
elOpt 'xor', 0x8000ff,5,5,tbl_xor, tbl_il_2, 2 |
elOpt 'sm[1]', 0x8080ff,7,7,tbl_sm, tbl_il_3, 1,4 |
elOpt 'ms[2]', 0x8080ff,7,14,tbl_ms_2, tbl_il_m2,6 |
elOpt 'ms[2]e',0x8080ff,7,17,tbl_ms_2_e,tbl_il_m2e,8 |
;elOpt 'cd[8]', 0x8000, 7,17,tbl_cd_8,tbl_il_8, 6,2,2 ;è¨äà â®à 8 ¢å®¤®¢ |
.end: |
elOpt '???', 0x808080,3,3,tbl_and.3, tbl_il_1, 1 ;¥ ®¯®§ ë© í«¥¬¥â |
128,6 → 132,20 |
tbl_xor db 0,1,1,0 |
tbl_sm db 0,2,2,1, 2,1,1,3 |
tbl_not db 1,0 ;not |
|
;¬ã«ì⨯«¥ªá®à ¤«ï 2-å à §à冷£® ᨣ « |
align 4 |
tbl_ms_2_e: ;á® ¢å®¤®¬ 'e' |
dq 0,0,0,0,0,0,0,0 |
tbl_ms_2: |
db 0,1,0,1,0,1,0,1 |
db 0,1,0,1,0,1,0,1 |
db 0,0,1,1,0,0,1,1 |
db 0,0,1,1,0,0,1,1 |
db 0,0,0,0,1,1,1,1 |
db 0,0,0,0,1,1,1,1 |
dq 0 |
db 1,1,1,1,1,1,1,1 |
;tbl_cd_8 db ;256=2^8 |
|
;â ¡«¨æë ¤«ï ¢å®¤ëå ®£ |
136,6 → 154,8 |
tbl_il_3 db 1,2,2,0 |
tbl_il_4 db 1,2,2,2,0 |
tbl_il_5 db 1,2,2,2,2,0 |
tbl_il_m2 db 1,2,2,2,3,2,0 |
tbl_il_m2e db 1,2,2,2,3,2,3,0 |
;tbl_il_8 db 1,2,2,2,2,2,2,2,0 |
|
time dd 0 |
227,6 → 247,9 |
key_color_s1 db 's1',0 |
key_color_s2 db 's2',0 |
key_color_captions db 'captions',0 |
ini_sec_options db 'Options',0 |
key_opt_sign_moves db 'signal_moves',0 |
key_opt_fast_mode db 'fast_mode',0 |
|
align 4 |
start: |
267,6 → 290,11 |
add ebx,size_el_opt |
loop @b |
|
stdcall dword[ini_get_int],file_name,ini_sec_options,key_opt_sign_moves,[opt_sign_moves] |
mov dword[opt_sign_moves],eax |
stdcall dword[ini_get_int],file_name,ini_sec_options,key_opt_fast_mode,[opt_fast_mode] |
mov dword[opt_fast_mode],eax |
|
;*** ¯®¤£®â®¢ª ¤¨ «®£ |
stdcall [OpenDialog_Init],OpenDialog_data |
stdcall [buf2d_create], buf_0 ;ᮧ¤ ¨¥ ¡ãä¥à |
367,12 → 395,27 |
cmp byte[tim_ch],0 |
je @f |
inc dword[time] |
cmp dword[opt_fast_mode],0 |
jne .fast_m |
call sign_move |
stdcall [buf2d_draw], buf_0 |
mov eax,[time] |
and eax,11b ;ªà â®áâì 4-¬ |
xor edx,edx |
div dword[opt_sign_moves] |
cmp edx,0 ;¯à®¢¥à塞 ªà â®áâì opt_sign_moves |
jnz @f |
call sign_from_elems |
call sign_from_captions |
jmp @f |
.fast_m: |
mov ecx,[opt_sign_moves] |
cld |
.cycle: |
call sign_move |
loop .cycle |
call sign_from_elems |
call sign_from_captions |
stdcall [buf2d_draw], buf_0 |
@@: |
|
popad |
1088,8 → 1131,8 |
copy_path open_dialog_name,communication_area_default_path,file_name,0 |
mov [OpenDialog_data.type],0 |
stdcall [OpenDialog_Start],OpenDialog_data |
cmp [OpenDialog_data.status],2 |
je .end_open_file |
cmp [OpenDialog_data.status],1 ;0 - Cancel 1 - Open 2 - Error open dialog |
jne .end_open_file |
;ª®¤ ¯à¨ 㤠箬 ®âªàë⨨ ¤¨ «®£ |
|
mov eax,70 ;70-ï äãªæ¨ï à ¡®â á ä ©« ¬¨ |
1162,7 → 1205,7 |
mov byte[txt_buf+sp_offs_el_angle],al ; ¯à ¢«¥¨¥ |
call str_next_val |
;¯® ¤à¥áã edi §¢ ¨¥ í«¥¬¥â |
stdcall el_get_name, edi |
stdcall el_get_name, edi,13 ;13 - ascii code |
mov byte[txt_buf+sp_offs_el_type],al ;⨯ í«¥¬¥â |
|
stdcall make_list_capts,txt_buf,edi |
1877,7 → 1920,7 |
jnz @f |
mov ebx,el_opt_beg+el_offs_nam ;¥á«¨ ¥ ¢§ï«®áì ¨¬ï í«¥¬¥â , â® ¯® 㬮«ç ¨î ¡¥à¥¬ 1-© ¨§ ᯨ᪠|
@@: |
stdcall el_get_name, ebx |
stdcall el_get_name, ebx,0 |
mov byte[txt_buf+sp_offs_el_type],al ;⨯ í«¥¬¥â |
|
stdcall make_list_capts,txt_buf,ebx |
1888,15 → 1931,32 |
ret |
endp |
|
;description: |
; «¨§¨àã¥â áâபã á ¨¬¥¥¬ «®£. í«¥¬¥â ¨ ¢®§¢à é ¥â ®¬¥à «®£. í«¥¬¥â |
;input: |
; str - 㪠§ ⥫ì áâபã ᮤ¥à¦ éãî ¨¬ï «®£. í«¥¬¥â |
; asciiz - ᨬ¢®« ª®â®àë© ¤®«¦¥ ¡ëâì § ¬¥¥ ascii 0 |
;output: |
; eax - ⨯ í«¥¬¥â |
align 4 |
proc el_get_name uses ecx edi esi, str:dword |
proc el_get_name uses ebx ecx edi esi, str:dword, asciiz:dword |
mov edi,[str] |
cmp dword[asciiz],0 |
je @f |
mov eax,dword[asciiz] |
mov ecx,el_offs_col ;à §¬¥à ⥪áâ ¢ str ¥ ¡®«ìè¥ el_offs_col |
cld |
repne scasb |
mov ebx,edi |
dec ebx |
mov byte[ebx],0 ;0 - ᨬ¢®« ª®æ áâப¨ ¤«ï ¯à ¢¨«ì®© à ¡®âë str_cmp |
@@: |
|
mov edi,[str] |
mov esi,el_opt_beg+el_offs_nam |
xor ecx,ecx |
@@: |
stdcall str_instr, edi,esi |
stdcall str_cmp, edi,esi |
cmp eax,0 |
je @f |
add esi,size_el_opt |
1906,6 → 1966,12 |
jmp @b |
@@: |
mov eax,ecx |
|
cmp dword[asciiz],0 |
je @f |
mov ecx,dword[asciiz] |
mov byte[ebx],cl |
@@: |
ret |
endp |
|
2124,7 → 2190,32 |
ret |
endp |
|
;description: |
; ¯à®¢¥àï¥â ᮢ¯ ¤¥¨¥ áâப str0 ¨ str1 |
;output: |
; eax = 0 ¥á«¨ str0 = str1 |
; eax = 1 ¥á«¨ str0 != str1 |
align 4 |
proc str_cmp uses ecx edi esi, str0:dword, str1:dword |
xor eax,eax |
mov edi,[str0] |
mov esi,[str1] |
mov ecx,0x8fffffff ;ecx - ®ç¥ì ¡®«ì讥 ç¨á«® |
cld |
repne scasb |
;dec edi |
sub edi,[str0] |
mov ecx,edi ;ecx = strlen(str0)+1 |
|
mov edi,[str0] |
repe cmpsb |
je @f |
inc eax |
@@: |
ret |
endp |
|
align 4 |
proc but_run_stop |
xor byte[tim_ch],1 |
cmp byte[tim_ch],0 |