Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 986 → Rev 987

/programs/develop/tinypad/trunk/tp-key.asm
78,7 → 78,7
mov esi,accel_table_main
.acc: cmp eax,[esi]
jne @f
test [options],OPTS_SECURESEL
test [secure_sel],1
jz .lp1
m2m [cur_editor.SelStart.X],[cur_editor.Caret.X]
m2m [cur_editor.SelStart.Y],[cur_editor.Caret.Y]
102,7 → 102,7
movzx eax,[eax+key1]
push eax
 
test [options],OPTS_SECURESEL
test [secure_sel],1
jz .lp2
m2m [cur_editor.SelStart.X],[cur_editor.Caret.X]
m2m [cur_editor.SelStart.Y],[cur_editor.Caret.Y]
109,7 → 109,7
jmp .put
.lp2: call delete_selection
 
test [options],OPTS_AUTOBRACES
test [auto_braces],1
jz .put
cmp al,'['
jne @f
274,12 → 274,12
cld
mov ecx,ebx
call get_line_offset
.lp1: cmp dx,[esi]
.lp1: cmp edx,[esi+EDITOR_LINE_DATA.Size]
jle @f
movzx edx,word[esi]
mov edx,[esi+EDITOR_LINE_DATA.Size]
@@: dec edx
jl .nx1
add esi,4
add esi,sizeof.EDITOR_LINE_DATA
add esi,edx
mov ecx,edx
@@: push ecx
297,18 → 297,18
js .exit.2
mov ecx,ebx
call get_line_offset
movzx edx,word[esi]
mov edx,[esi+EDITOR_LINE_DATA.Size]
dec edx
jmp .lp1
@@:
mov ecx,ebx
call get_line_offset
.lp2: cmp dx,[esi]
.lp2: cmp edx,[esi+EDITOR_LINE_DATA.Size]
jle @f
movzx edx,word[esi]
mov edx,[esi+EDITOR_LINE_DATA.Size]
@@: or edx,edx
jl .nx2
add esi,4
add esi,sizeof.EDITOR_LINE_DATA
add esi,edx
@@: mov edi,symbols_ex
mov ecx,symbols_ex.size+symbols.size
323,7 → 323,7
js .exit.2
mov ecx,ebx
call get_line_offset
movzx edx,word[esi]
mov edx,[esi+EDITOR_LINE_DATA.Size]
dec edx
jmp .lp2
@@:
367,10 → 367,10
cld
.lp1: mov ecx,ebx
call get_line_offset
movzx ecx,word[esi]
mov ecx,[esi+EDITOR_LINE_DATA.Size]
cmp edx,ecx
jge .nx1
add esi,4
add esi,sizeof.EDITOR_LINE_DATA
add esi,edx
sub ecx,edx
@@: push ecx
392,10 → 392,10
 
.lp2: mov ecx,ebx
call get_line_offset
movzx ecx,word[esi]
mov ecx,[esi+EDITOR_LINE_DATA.Size]
cmp edx,ecx
jge .nx2
add esi,4
add esi,sizeof.EDITOR_LINE_DATA
add esi,edx
sub ecx,edx
@@: push ecx
477,8 → 477,9
jge @f
xor eax,eax
@@: add esi,[sel.begin.x]
add esi,4
stosd
add esi,sizeof.EDITOR_LINE_DATA
mov [edi+EDITOR_LINE_DATA.Size],eax
add edi,sizeof.EDITOR_LINE_DATA
mov ecx,eax
jecxz @f
rep movsb
494,13 → 495,14
rep movsb
mov ecx,[sel.end.y]
@@: call get_line_offset
movzx eax,word[esi]
add esi,4
mov eax,[esi+EDITOR_LINE_DATA.Size]
add esi,sizeof.EDITOR_LINE_DATA
cmp eax,[sel.end.x]
jle @f
mov eax,[sel.end.x]
@@: mov ebx,edi
stosd
mov [edi+EDITOR_LINE_DATA.Size],eax
add edi,sizeof.EDITOR_LINE_DATA
mov ecx,eax
jecxz @f
rep movsb
524,19 → 526,20
mov eax,[sel.end.x]
sub eax,[sel.begin.x]
mov edi,[copy_buf]
stosd
mov [edi+EDITOR_LINE_DATA.Size],eax
add edi,sizeof.EDITOR_LINE_DATA
mov ecx,[sel.begin.y]
call get_line_offset
mov ebx,[sel.begin.x]
mov ecx,[sel.end.x]
cmp ebx,[esi]
cmp ebx,[esi+EDITOR_LINE_DATA.Size]
jge .add_spaces
cmp ecx,[esi]
cmp ecx,[esi+EDITOR_LINE_DATA.Size]
jle .lp1
mov ecx,[esi]
mov ecx,[esi+EDITOR_LINE_DATA.Size]
.lp1: sub ecx,[sel.begin.x]
sub eax,ecx
lea esi,[esi+ebx+4]
lea esi,[esi+ebx+sizeof.EDITOR_LINE_DATA]
rep movsb
 
.add_spaces:
565,13 → 568,13
 
mov ecx,[cur_editor.Caret.Y]
call get_line_offset
pushd [esi] esi
pushd [esi+EDITOR_LINE_DATA.Size] esi
mov ecx,[cur_editor.Caret.X]
call line_add_spaces
add [esp],eax
add esi,eax
mov ecx,[copy_size]
sub ecx,4
sub ecx,sizeof.EDITOR_LINE_DATA
mov edi,[cur_editor.Lines]
add edi,[cur_editor.Lines.Size] ;*** add edi,[edi-4]
dec edi
578,7 → 581,7
mov eax,esi
mov esi,edi
sub esi,ecx
lea ecx,[eax+4]
lea ecx,[eax+sizeof.EDITOR_LINE_DATA]
add ecx,[cur_editor.Caret.X]
neg ecx
lea ecx,[esi+ecx+1]
591,14 → 594,15
 
cld
pop edi
add edi,4
add edi,sizeof.EDITOR_LINE_DATA
mov esi,[copy_buf]
lodsd
mov eax,[esi+EDITOR_LINE_DATA.Size]
add esi,sizeof.EDITOR_LINE_DATA
 
mov ebx,[cur_editor.Caret.X]
add eax,ebx
mov [edi-4],ax
mov byte[edi-4+2],0x0001
mov [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size],eax
mov [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
sub eax,ebx
call .check_columns
add edi,ebx
605,16 → 609,17
@@: push ecx
mov ecx,eax
rep movsb
lodsd
and eax,0x0000FFFF
stosd
mov byte[edi-4+2],0x0001
mov eax,[esi+EDITOR_LINE_DATA.Size]
add esi,sizeof.EDITOR_LINE_DATA
mov [edi+EDITOR_LINE_DATA.Size],eax
mov [edi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
add edi,sizeof.EDITOR_LINE_DATA
pop ecx
loop @b
 
pop ecx
sub ecx,ebx
add [edi-4],cx
add [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size],ecx
call .check_columns
mov ecx,eax
rep movsb
633,12 → 638,13
.single_line:
cld
pop edi
add edi,4
add edi,sizeof.EDITOR_LINE_DATA
mov esi,[copy_buf]
lodsd
add [edi-4],ax
and dword[edi-4],not 0x00020000
or dword[edi-4],0x00010000
mov eax,[esi+EDITOR_LINE_DATA.Size]
add esi,sizeof.EDITOR_LINE_DATA
add [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size],eax
and [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Flags],not EDITOR_LINE_FLAG_SAVED
or [edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
call .check_columns
add edi,[cur_editor.Caret.X]
add esp,4
655,7 → 661,7
 
.check_columns:
push eax
movzx eax,word[edi-4]
mov eax,[edi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size]
cmp eax,[cur_editor.Columns.Count]
jbe @f
mov [cur_editor.Columns.Count],eax
666,7 → 672,7
;-----------------------------------------------------------------------------
proc key.ctrl_d ;///// INSERT SEPARATOR //////////////////////////////////////
;-----------------------------------------------------------------------------
mov eax,94
mov eax,90+sizeof.EDITOR_LINE_DATA
call editor_realloc_lines
 
mov ecx,[cur_editor.Caret.Y]
675,14 → 681,14
 
mov ecx,[cur_editor.Lines.Count]
call get_line_offset
lea edi,[esi+90+4]
lea ecx,[esi+4]
lea edi,[esi+90+sizeof.EDITOR_LINE_DATA]
lea ecx,[esi+sizeof.EDITOR_LINE_DATA]
sub ecx,ebx
std
rep movsb
 
lea edi,[ebx+5]
mov word[ebx],90
lea edi,[ebx+sizeof.EDITOR_LINE_DATA+1]
mov [ebx+EDITOR_LINE_DATA.Size],90
mov al,ASEPC
mov ecx,79
cld
690,7 → 696,7
mov al,' '
mov ecx,10
rep stosb
mov byte[ebx+4],';'
mov byte[ebx+sizeof.EDITOR_LINE_DATA],';'
 
inc [cur_editor.Lines.Count]
inc [cur_editor.Caret.Y]
713,9 → 719,8
mov ecx,[cur_editor.Caret.Y]
call get_line_offset
mov edi,esi
lodsd
and eax,0x0000FFFF
add esi,eax
mov eax,[esi+EDITOR_LINE_DATA.Size]
lea esi,[esi+eax+sizeof.EDITOR_LINE_DATA]
push eax
 
dec [cur_editor.Lines.Count]
727,7 → 732,7
rep movsd
 
pop eax
add eax,4
add eax,sizeof.EDITOR_LINE_DATA
neg eax
call editor_realloc_lines
 
1033,9 → 1038,9
 
mov ecx,[cur_editor.Caret.Y]
call get_line_offset
and dword[esi],not 0x00020000
or dword[esi],0x00010000
lea ebx,[esi+4]
and [esi+EDITOR_LINE_DATA.Flags],not EDITOR_LINE_FLAG_SAVED
or [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
lea ebx,[esi+sizeof.EDITOR_LINE_DATA]
mov ebp,esi
 
call get_real_length
1047,7 → 1052,7
jae .line_up
lea edi,[ebx+ecx]
neg ecx
movzx eax,word[ebp]
mov eax,[ebp+EDITOR_LINE_DATA.Size]
add ecx,eax;[ebp]
repe scasb
je .line_up
1057,7 → 1062,7
add edi,ecx
lea esi,[edi+1]
neg ecx
movzx eax,word[ebp]
mov eax,[ebp+EDITOR_LINE_DATA.Size]
add ecx,eax;[ebp]
dec ecx
rep movsb
1074,27 → 1079,27
cmp eax,[cur_editor.Caret.Y]
je .exit
mov edi,[temp_buf]
add edi,4
add edi,sizeof.EDITOR_LINE_DATA
mov esi,ebx
mov ecx,[cur_editor.Caret.X]
rep movsb
mov ecx,[cur_editor.Caret.X]
mov eax,[temp_buf]
mov [eax],ecx
cmp cx,[ebp]
mov [eax+EDITOR_LINE_DATA.Size],ecx
cmp ecx,[ebp+EDITOR_LINE_DATA.Size]
jbe @f
movzx eax,word[ebp]
mov eax,[ebp+EDITOR_LINE_DATA.Size]
sub ecx,eax
sub edi,ecx
mov al,' '
rep stosb
@@: lea esi,[ebx+4]
movzx eax,word[ebp]
@@: lea esi,[ebx+sizeof.EDITOR_LINE_DATA]
mov eax,[ebp+EDITOR_LINE_DATA.Size]
add esi,eax
movzx ecx,word[esi-4]
mov ecx,[esi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size]
mov eax,[temp_buf]
add [eax],ecx
or dword[eax],0x00010000
add [eax+EDITOR_LINE_DATA.Size],ecx
or [eax+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
rep movsb
 
mov ecx,edi
1110,14 → 1115,13
mov edi,[cur_editor.Lines]
add edi,[cur_editor.Lines.Size] ;*** add edi,[edi-4]
dec edi
lea esi,[edi+8]
lea esi,[edi+sizeof.EDITOR_LINE_DATA*2] ; !!! CHECK THIS !!!
sub esi,ecx
movzx eax,word[ebp]
mov eax,[ebp+EDITOR_LINE_DATA.Size]
add esi,eax
movzx eax,word[ebp]
movzx eax,word[ebp+eax+4]
mov eax,[ebp+eax+sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size]
add esi,eax
lea ecx,[esi-4]
lea ecx,[esi-sizeof.EDITOR_LINE_DATA]
sub ecx,ebp
std
cmp esi,edi
1125,10 → 1129,10
jz .lp1
mov edi,ebp
add edi,[esp]
lea esi,[ebp+8]
movzx eax,word[esi-8]
lea esi,[ebp+sizeof.EDITOR_LINE_DATA*2] ; !!! CHECK THIS !!!
mov eax,[esi-sizeof.EDITOR_LINE_DATA*2+EDITOR_LINE_DATA.Size] ; !!! CHECK THIS !!!
add esi,eax
movzx eax,word[esi-4]
mov eax,[esi-sizeof.EDITOR_LINE_DATA+EDITOR_LINE_DATA.Size] ; !!! CHECK THIS !!!
add esi,eax
mov ecx,[cur_editor.Lines]
add ecx,[cur_editor.Lines.Size] ;*** add ecx,[ecx-4]
1153,8 → 1157,8
 
mov ecx,[cur_editor.Lines.Count]
call get_line_offset
movzx eax,word[esi]
lea esi,[esi+eax+4]
mov eax,[esi+EDITOR_LINE_DATA.Size]
lea esi,[esi+eax+sizeof.EDITOR_LINE_DATA]
mov eax,[cur_editor.Lines]
add eax,[cur_editor.Lines.Size] ;*** add eax,[eax-4]
sub esi,eax
1191,8 → 1195,8
dec [cur_editor.Caret.X]
mov ecx,[cur_editor.Caret.Y]
call get_line_offset
and dword[esi],not 0x00020000
or dword[esi],0x00010000
and [esi+EDITOR_LINE_DATA.Flags],not EDITOR_LINE_FLAG_SAVED
or [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
 
mov ebx,eax
call get_real_length
1202,10 → 1206,10
mov [cur_editor.Modified],1
ret
 
@@: lea edi,[esi+4+ebx]
@@: lea edi,[esi+sizeof.EDITOR_LINE_DATA+ebx]
mov ecx,ebx
neg ecx
movzx eax,word[esi]
mov eax,[esi+EDITOR_LINE_DATA.Size]
add ecx,eax
dec ecx
lea esi,[edi+1]
1225,12 → 1229,12
@@: mov ecx,[cur_editor.Caret.Y]
dec ecx
call get_line_offset
and dword[esi],not 0x00020000
or dword[esi],0x00010000
and [esi+EDITOR_LINE_DATA.Flags],not EDITOR_LINE_FLAG_SAVED
or [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
 
mov ebp,esi
lea ebx,[esi+4]
movzx ecx,word[ebp]
lea ebx,[esi+sizeof.EDITOR_LINE_DATA]
mov ecx,[ebp+EDITOR_LINE_DATA.Size]
@@: cmp byte[ebx+ecx-1],' '
jne @f
dec ecx
1258,8 → 1262,8
pop eax
mov ecx,[cur_editor.Caret.Y]
call get_line_offset
and dword[esi],not 0x00020000
or dword[esi],0x00010000
and [esi+EDITOR_LINE_DATA.Flags],not EDITOR_LINE_FLAG_SAVED
or [esi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
 
xchg eax,ecx
 
1267,7 → 1271,7
cmp eax,[cur_editor.Caret.X]
jae @f
mov eax,[cur_editor.Caret.X]
@@: movzx edx,word[esi]
@@: mov edx,[esi+EDITOR_LINE_DATA.Size]
sub edx,eax
cmp ecx,edx
jl @f
1282,8 → 1286,8
dec ecx
mov edi,ecx
add ecx,-10+1
movzx eax,word[esi]
lea eax,[esi+eax+4]
mov eax,[esi+EDITOR_LINE_DATA.Size]
lea eax,[esi+eax+sizeof.EDITOR_LINE_DATA]
sub ecx,eax
lea esi,[edi-10]
std
1292,11 → 1296,11
mov al,' '
rep stosb
popad
add word[esi],10
add [esi+EDITOR_LINE_DATA.Size],10
jmp @b
@@: lea ebx,[esi+4]
@@: lea ebx,[esi+sizeof.EDITOR_LINE_DATA]
push ecx
movzx edi,word[esi]
mov edi,[esi+EDITOR_LINE_DATA.Size]
lea edi,[ebx+edi-1]
mov esi,edi
sub esi,ecx
1310,7 → 1314,7
rep stosb
cld
pop [cur_editor.Caret.X]
lea esi,[ebx-4]
lea esi,[ebx-sizeof.EDITOR_LINE_DATA]
call get_real_length
cmp eax,[cur_editor.Caret.X]
jae @f
1338,9 → 1342,9
call get_line_offset
 
mov ebx,[cur_editor.Caret.X]
cmp bx,[esi]
cmp ebx,[esi+EDITOR_LINE_DATA.Size]
jb @f
movzx ebx,word[esi]
mov ebx,[esi+EDITOR_LINE_DATA.Size]
dec ebx
jns @f
xor ebx,ebx
1352,14 → 1356,15
lea ecx,[ebx+1]
@@: dec ecx
jz @f
cmp byte[esi+ecx+4-1],' '
cmp byte[esi+ecx+sizeof.EDITOR_LINE_DATA-1],' '
je @b
@@: lea eax,[ecx+10]
or eax,0x00010000
stosd
mov [edi+EDITOR_LINE_DATA.Size],eax
mov [edi+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
add edi,sizeof.EDITOR_LINE_DATA
jecxz @f
push esi
add esi,4
add esi,sizeof.EDITOR_LINE_DATA
rep movsb
pop esi
@@: mov al,' '
1366,10 → 1371,10
mov ecx,10
rep stosb
 
movzx ecx,word[esi]
mov ecx,[esi+EDITOR_LINE_DATA.Size]
sub ecx,ebx
add esi,ebx
add esi,4
add esi,sizeof.EDITOR_LINE_DATA
inc ecx
@@: dec ecx
jz @f
1380,11 → 1385,11
jne .lp1
inc esi
loop @b
.lp1: test [options],OPTS_AUTOINDENT
.lp1: test [auto_indent],1
jz .lp2
push edi ecx
movzx ecx,word[ebp]
lea edi,[ebp+4]
mov ecx,[ebp+EDITOR_LINE_DATA.Size]
lea edi,[ebp+sizeof.EDITOR_LINE_DATA]
mov al,' '
repe scasb
mov eax,ecx
1391,13 → 1396,13
pop ecx edi
je .lp2
neg eax
movzx edx,word[ebp]
mov edx,[ebp+EDITOR_LINE_DATA.Size]
add eax,edx;[ebp]
dec eax
jmp @f
.lp2: xor eax,eax
@@: mov edx,edi
add edi,4
add edi,sizeof.EDITOR_LINE_DATA
mov [cur_editor.Caret.X],eax
jecxz @f
push ecx
1411,10 → 1416,10
mov al,' '
rep stosb
 
lea eax,[edi-4]
lea eax,[edi-sizeof.EDITOR_LINE_DATA]
sub eax,edx
or eax,0x00010000
mov [edx],eax
mov [edx+EDITOR_LINE_DATA.Size],eax
mov [edx+EDITOR_LINE_DATA.Flags],EDITOR_LINE_FLAG_MOFIFIED
 
mov ecx,edi
sub ecx,[temp_buf]
1423,20 → 1428,20
mov edi,[cur_editor.Lines]
add edi,[cur_editor.Lines.Size] ;*** add edi,[edi-4]
dec edi
lea esi,[edi+4]
lea esi,[edi+sizeof.EDITOR_LINE_DATA]
sub esi,ecx
movzx ecx,word[ebp]
mov ecx,[ebp+EDITOR_LINE_DATA.Size]
add esi,ecx
lea ecx,[esi-4]
lea ecx,[esi-sizeof.EDITOR_LINE_DATA]
sub ecx,ebp
std
cmp esi,edi
jb @f
je .lp3
lea esi,[ebp+4]
lea esi,[ebp+sizeof.EDITOR_LINE_DATA]
mov eax,[esp]
lea edi,[esi+eax-4]
movzx ecx,word[ebp]
lea edi,[esi+eax-sizeof.EDITOR_LINE_DATA]
mov ecx,[ebp+EDITOR_LINE_DATA.Size]
add esi,ecx
mov ecx,[cur_editor.Lines]
add ecx,[cur_editor.Lines.Size] ;*** add ecx,[ecx-4]
1593,29 → 1598,13
.direct:
call try_to_close_tabs
or eax,eax
jz .close
jz @f
mov [bot_mode2],2
jmp key.ctrl_o.direct
 
@@: stdcall save_settings
 
.close:
mov esi,self_path
mov byte[esi+PATHL-1],0
mov edi,f_info.path
cld
@@: lodsb
stosb
or al,al
jnz @b
 
mov [f_info70+0],2
mov [f_info70+4],0
mov [f_info70+8],0
mov [f_info70+12],TINYPAD_END
mov [f_info70+16],0
mov byte[f_info70+20],0
mov [f_info70+21],f_info.path
mcall 70,f_info70
 
mov [main_closed],1
mcall -1
endp