Subversion Repositories Kolibri OS

Rev

Rev 6256 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6256 Rev 6274
Line 1... Line 1...
1
; ¬ ªà®á ¤«ï á¨á⥬­®© ¡¨¡«¨®â¥ª¨ box_lib.obj
1
; ¬ ªà®á ¤«ï á¨á⥬­®© ¡¨¡«¨®â¥ª¨ box_lib.obj
2
; í«¥¬¥­â TextEditor ¤«ï Kolibri OS
2
; í«¥¬¥­â TextEditor ¤«ï Kolibri OS
3
; ä ©« ¯®á«¥¤­¨© à § ¨§¬¥­ï«áï 19.02.2016 IgorA
3
; ä ©« ¯®á«¥¤­¨© à § ¨§¬¥­ï«áï 20.02.2016 IgorA
4
; ­  ª®¤ ¯à¨¬¥­¥­  GPL2 «¨æ¥­§¨ï
4
; ­  ª®¤ ¯à¨¬¥­¥­  GPL2 «¨æ¥­§¨ï
Line 5... Line 5...
5
 
5
 
6
;input:
6
;input:
7
; edi = pointer to tedit struct
7
; edi = pointer to tedit struct
Line 54... Line 54...
54
	tc dd ?   ; +10 ¢à¥¬. ᮧ¤ ­¨ï
54
	tc dd ?   ; +10 ¢à¥¬. ᮧ¤ ­¨ï
55
	td dd ?   ; +14 ¢à¥¬. 㤠«¥­¨ï
55
	td dd ?   ; +14 ¢à¥¬. 㤠«¥­¨ï
56
ends
56
ends
57
;------------------------------------------------------------------------------
57
;------------------------------------------------------------------------------
Line -... Line 58...
-
 
58
 
58
 
59
ted_symbol_space db 32 ;ascii ª®¤ ¯à®¡¥« , ¨­®£¤  ¡ë¢ ¥â ­ã¦¥­ ¢ ª®¤¥
Line 59... Line 60...
59
ted_symbol_tab db 26 ;ascii ª®¤ áâ५ª¨ ¢¯à ¢®, ¨á¯®«ì§ã¥âáï ¤«ï à¨á®¢ ­¨ï â ¡ã«ï樨 ¢ ०¨¬¥ ¯®ª §  ­¥¢¨¤¨¬ëå ᨬ¢®«®¢
60
ted_symbol_tab db 26 ;ascii ª®¤ áâ५ª¨ ¢¯à ¢®, ¨á¯®«ì§ã¥âáï ¤«ï à¨á®¢ ­¨ï â ¡ã«ï樨 ¢ ०¨¬¥ ¯®ª §  ­¥¢¨¤¨¬ëå ᨬ¢®«®¢
Line 60... Line 61...
60
 
61
 
Line 103... Line 104...
103
KEY_F2 equ 0x0000003C
104
KEY_F2 equ 0x0000003C
104
KEY_F3 equ 0x0000003D
105
KEY_F3 equ 0x0000003D
Line 105... Line 106...
105
 
106
 
106
 
107
 
107
 
108
 
Line 108... Line 109...
108
align 4
109
align 16
109
proc ted_init uses eax ecx edi, edit:dword
110
proc ted_init uses eax ecx edi, edit:dword
110
	mov edi,dword[edit]
111
	mov edi,[edit]
111
 
112
 
Line 135... Line 136...
135
MIN_W_SCRL_ARE equ 3 ;¬¨­¨¬ «ì­ ï ®â®¡à ¦ ¥¬ ï ®¡« áâì ¤«ï ¢¥àâ. áªà®««¨­£ 
136
MIN_W_SCRL_ARE equ 3 ;¬¨­¨¬ «ì­ ï ®â®¡à ¦ ¥¬ ï ®¡« áâì ¤«ï ¢¥àâ. áªà®««¨­£ 
136
MIN_H_SCRL_ARE equ 3 ;¬¨­¨¬ «ì­ ï ®â®¡à ¦ ¥¬ ï ®¡« áâì ¤«ï £®à¨§. áªà®««¨­£ 
137
MIN_H_SCRL_ARE equ 3 ;¬¨­¨¬ «ì­ ï ®â®¡à ¦ ¥¬ ï ®¡« áâì ¤«ï £®à¨§. áªà®««¨­£ 
137
;input:
138
;input:
138
; opt = 1 - ¬¥­ïâì 梥â áªà®««¨­£®¢, 2 - ¨§¬¥­¨«¨áì à §¬¥àë ®ª­ ,
139
; opt = 1 - ¬¥­ïâì 梥â áªà®««¨­£®¢, 2 - ¨§¬¥­¨«¨áì à §¬¥àë ®ª­ ,
139
;  4 - ¨§¬¥­¨«¨áì à §¬¥àë ¤®ªã¬¥­â 
140
;  4 - ¨§¬¥­¨«¨áì à §¬¥àë ¤®ªã¬¥­â 
140
align 4
141
align 16
141
proc ted_init_scroll_bars, edit:dword, opt:dword
142
proc ted_init_scroll_bars, edit:dword, opt:dword
142
	pushad
143
	pushad
143
	mov edi,dword[edit]
144
	mov edi,[edit]
144
	mov esi,ted_scr_w
145
	mov esi,ted_scr_w
145
	mov ebx,ted_scr_h
146
	mov ebx,ted_scr_h
146
	bt dword[opt],0
147
	bt dword[opt],0
147
	jae @f
148
	jae @f
148
		mov ecx,ted_color_wnd_work
149
		mov ecx,ted_color_wnd_work
Line 205... Line 206...
205
	.no_size:
206
	.no_size:
206
	popad
207
	popad
207
	ret
208
	ret
208
endp
209
endp
Line 209... Line 210...
209
 
210
 
210
align 4
211
align 16
211
proc ted_delete uses edi, edit:dword
212
proc ted_delete uses edi, edit:dword
212
	mov edi,dword[edit]
213
	mov edi,[edit]
213
	invoke mem.free,ted_tex
214
	invoke mem.free,ted_tex
214
	invoke mem.free,ted_arr_key_pos ;ted_syntax_file
215
	invoke mem.free,ted_arr_key_pos ;ted_syntax_file
215
	ret
216
	ret
Line 216... Line 217...
216
endp
217
endp
217
 
218
 
218
 
219
 
219
;input:
220
;input:
220
; eax = key kodes
221
; eax = key kodes
221
align 4
222
align 16
222
proc ted_key, edit:dword, table:dword, control:dword
223
proc ted_key, edit:dword, table:dword, control:dword
223
	pushad
224
	pushad
224
	mov edi,dword[edit]
225
	mov edi,[edit]
225
	mov esi,ted_el_focus
226
	mov esi,ted_el_focus
Line 463... Line 464...
463
		jne .dr_m_win
464
		jne .dr_m_win
464
			;¥á«¨ ¢áâ ¢¨«¨ ᨬ¢®« ­®¢®© áâப¨
465
			;¥á«¨ ¢áâ ¢¨«¨ ᨬ¢®« ­®¢®© áâப¨
465
			mov ecx,ted_scr_w
466
			mov ecx,ted_scr_w
466
			inc dword[ecx+sb_offs_max_area] ;㢥«¨ç¨¢ ¥¬ à §¬¥à ¢¥à⨪ «ì­®£® áªà®««¨­£ 
467
			inc dword[ecx+sb_offs_max_area] ;㢥«¨ç¨¢ ¥¬ à §¬¥à ¢¥à⨪ «ì­®£® áªà®««¨­£ 
467
			mov edx,ted_cur_y
468
			mov edx,ted_cur_y
468
			cmp edx,dword[ecx+sb_offs_cur_area]
469
			cmp edx,[ecx+sb_offs_cur_area]
469
			jl .no_change
470
			jl .no_change
470
				dec ted_cur_y ;ªãàá®à ®áâ ¢«ï¥¬ ­  ¬¥áâ¥
471
				dec ted_cur_y ;ªãàá®à ®áâ ¢«ï¥¬ ­  ¬¥áâ¥
471
				inc dword[ecx+sb_offs_position] ;ᤢ¨£ ¥¬ ¯®«§ã­®ª
472
				inc dword[ecx+sb_offs_position] ;ᤢ¨£ ¥¬ ¯®«§ã­®ª
472
			.no_change:
473
			.no_change:
473
			stdcall ted_draw,edi
474
			stdcall ted_draw,edi
Line 491... Line 492...
491
		stdcall ted_draw,edi
492
		stdcall ted_draw,edi
492
		cmp ted_fun_draw_panel_buttons,0
493
		cmp ted_fun_draw_panel_buttons,0
493
		je .end_key_fun
494
		je .end_key_fun
494
			call ted_fun_draw_panel_buttons
495
			call ted_fun_draw_panel_buttons
495
		jmp .end_key_fun
496
		jmp .end_key_fun
-
 
497
align 4
496
	@@:
498
	@@:
Line 497... Line 499...
497
 
499
 
498
	cmp ah,182 ;Delete
500
	cmp ah,182 ;Delete
499
	jne @f
501
	jne @f
Line 522... Line 524...
522
	ret
524
	ret
523
endp
525
endp
Line 524... Line 526...
524
 
526
 
525
;output:
527
;output:
526
; al = 1 - can save
528
; al = 1 - can save
527
align 4
529
align 16
528
proc ted_can_save uses ecx edi, edit:dword
530
proc ted_can_save uses ecx edi, edit:dword
Line 529... Line 531...
529
	mov edi,dword[edit]
531
	mov edi,[edit]
530
 
532
 
531
	mov ecx,ted_tim_ch
533
	mov ecx,ted_tim_ch
532
	sub ecx,ted_tim_undo
534
	sub ecx,ted_tim_undo
Line 540... Line 542...
540
 
542
 
541
;input:
543
;input:
542
; edi = pointer to tedit struct
544
; edi = pointer to tedit struct
543
;output:
545
;output:
544
; al = 1 - selected
546
; al = 1 - selected
545
align 4
547
align 16
546
proc ted_is_select uses ebx
548
proc ted_is_select uses ebx
547
	xor al,al
549
	xor al,al
548
	cmp ted_drag_m,1
550
	cmp ted_drag_m,1
549
	je @f
551
	je @f
Line 559... Line 561...
559
	ret
561
	ret
560
endp
562
endp
Line 561... Line 563...
561
 
563
 
562
;input:
564
;input:
563
; edi = pointer to tedit struct
565
; edi = pointer to tedit struct
564
align 4
566
align 16
565
proc ted_sel_normalize uses ecx esi
567
proc ted_sel_normalize uses ecx esi
566
	push edi
568
	push edi
567
		mov esi,edi
569
		mov esi,edi
568
		add esi,ted_offs_sel
570
		add esi,ted_offs_sel
Line 582... Line 584...
582
		jle .end_f
584
		jle .end_f
583
		m2m ted_seln_y0,ted_seln_y1
585
		m2m ted_seln_y0,ted_seln_y1
584
		mov ted_seln_y1,ecx
586
		mov ted_seln_y1,ecx
Line 585... Line 587...
585
 
587
 
-
 
588
		jmp .end_f
586
		jmp .end_f
589
align 4
Line 587... Line 590...
587
	@@:
590
	@@:
588
 
591
 
589
	mov ecx,ted_seln_y0
592
	mov ecx,ted_seln_y0
Line 602... Line 605...
602
 
605
 
603
;input:
606
;input:
604
; edi = pointer to tedit struct
607
; edi = pointer to tedit struct
605
;description:
608
;description:
606
; ”ã­ªæ¨ï ¢ë§ë¢ ¥¬ ï ¯à¨ ­ ç «¥ ¢ë¤¥«¥­¨ï
609
; ”ã­ªæ¨ï ¢ë§ë¢ ¥¬ ï ¯à¨ ­ ç «¥ ¢ë¤¥«¥­¨ï
607
align 4
610
align 16
608
proc ted_sel_start uses eax ecx
611
proc ted_sel_start uses eax ecx
609
	mov eax,ted_scr_h
612
	mov eax,ted_scr_h
610
	mov ecx,ted_cur_x
613
	mov ecx,ted_cur_x
611
	add ecx,dword[eax+sb_offs_position]
614
	add ecx,dword[eax+sb_offs_position]
Line 622... Line 625...
622
 
625
 
623
;input:
626
;input:
624
; edi = pointer to tedit struct
627
; edi = pointer to tedit struct
625
;description:
628
;description:
626
; ”ã­ªæ¨ï ¢ë§ë¢ ¥¬ ï ¯à¨ ¯¥à¥¬¥é¥­¨¨ ¢ë¤¥«¥­¨ï
629
; ”ã­ªæ¨ï ¢ë§ë¢ ¥¬ ï ¯à¨ ¯¥à¥¬¥é¥­¨¨ ¢ë¤¥«¥­¨ï
627
align 4
630
align 16
628
proc ted_sel_move
631
proc ted_sel_move
629
	push eax ecx
632
	push eax ecx
630
		mov ecx,ted_cur_x
633
		mov ecx,ted_cur_x
631
		mov eax,ted_scr_h
634
		mov eax,ted_scr_h
Line 646... Line 649...
646
 
649
 
647
;input:
650
;input:
648
; edi = pointer to tedit struct
651
; edi = pointer to tedit struct
649
;description:
652
;description:
650
; ”ã­ªæ¨ï ¢ë§ë¢ ¥¬ ï ¯à¨ ¢ë¤¥«¥­¨¨ ¢á¥£® ¤®ªã¬¥­â 
653
; ”ã­ªæ¨ï ¢ë§ë¢ ¥¬ ï ¯à¨ ¢ë¤¥«¥­¨¨ ¢á¥£® ¤®ªã¬¥­â 
651
align 4
654
align 16
652
proc ted_sel_all
655
proc ted_sel_all
653
	push eax
656
	push eax
654
		xor eax,eax
657
		xor eax,eax
655
		mov ted_sel_x0,eax
658
		mov ted_sel_x0,eax
Line 667... Line 670...
667
	ret
670
	ret
668
endp
671
endp
Line 669... Line 672...
669
 
672
 
670
;input:
673
;input:
671
; cl_al_mem = 1 - clear all memory
674
; cl_al_mem = 1 - clear all memory
672
align 4
675
align 16
673
proc ted_clear uses ecx edi, edit:dword, cl_al_mem:dword
676
proc ted_clear uses ecx edi, edit:dword, cl_al_mem:dword
Line 674... Line 677...
674
	mov edi,dword[edit]
677
	mov edi,[edit]
675
 
678
 
676
	mov ted_cur_x,0
679
	mov ted_cur_x,0
677
	mov ted_cur_y,0
680
	mov ted_cur_y,0
Line 716... Line 719...
716
	.exit:
719
	.exit:
717
	ret
720
	ret
718
endp
721
endp
Line 719... Line 722...
719
 
722
 
720
 
723
 
721
align 4
724
align 16
722
proc ted_init_syntax_file, edit:dword
725
proc ted_init_syntax_file, edit:dword
Line 723... Line 726...
723
	pushad
726
	pushad
724
	mov edi,dword[edit]
727
	mov edi,[edit]
725
 
728
 
726
	mov ecx,0x100
729
	mov ecx,0x100
Line 784... Line 787...
784
;input:
787
;input:
785
; ebx = file size
788
; ebx = file size
786
; edi = pointer to tedit struct
789
; edi = pointer to tedit struct
787
;description:
790
;description:
788
; ”ã­ªæ¨ï ¢ë§ë¢ ¥âáï ¯à¨ ®âªàë⨨ ä ©« 
791
; ”ã­ªæ¨ï ¢ë§ë¢ ¥âáï ¯à¨ ®âªàë⨨ ä ©« 
789
align 4
792
align 16
790
proc ted_on_open_file
793
proc ted_on_open_file
791
	push eax ;destination
794
	push eax ;destination
792
	push ecx ;for cycle
795
	push ecx ;for cycle
793
	push edx ;source
796
	push edx ;source
794
	push esi
797
	push esi
Line 891... Line 894...
891
;input:
894
;input:
892
; edx = pointer to symbol struct
895
; edx = pointer to symbol struct
893
; edi = pointer to tedit struct
896
; edi = pointer to tedit struct
894
;output:
897
;output:
895
; edx = pointer to 'perv' visible symbol struct
898
; edx = pointer to 'perv' visible symbol struct
896
align 4
899
align 16
897
ted_iterat_perv:
900
ted_iterat_perv:
898
	cmp ted_tim_undo,0
901
	cmp ted_tim_undo,0
899
	je .else
902
	je .else
900
	push ebx
903
	push ebx
901
	@@:
904
	@@:
Line 934... Line 937...
934
;input:
937
;input:
935
; edx = pointer to symbol struct
938
; edx = pointer to symbol struct
936
; edi = pointer to tedit struct
939
; edi = pointer to tedit struct
937
;output:
940
;output:
938
; edx = pointer to 'next' visible symbol struct
941
; edx = pointer to 'next' visible symbol struct
939
align 4
942
align 16
940
ted_iterat_next:
943
ted_iterat_next:
941
	cmp ted_tim_undo,0
944
	cmp ted_tim_undo,0
942
	je .else
945
	je .else
943
	push ebx
946
	push ebx
944
	@@:
947
	@@:
Line 980... Line 983...
980
; bh = íªà ­¨àãî騩 ᨬ¢®« (= 0 ¥á«¨ ­¥â ¯à®¢¥àª¨ ­  ­¨å)
983
; bh = íªà ­¨àãî騩 ᨬ¢®« (= 0 ¥á«¨ ­¥â ¯à®¢¥àª¨ ­  ­¨å)
981
; edx = pointer to symbol struct
984
; edx = pointer to symbol struct
982
; edi = pointer to tedit struct
985
; edi = pointer to tedit struct
983
;description:
986
;description:
984
; ­ ©â¨ á«¥¤ãîéãî ¯®§¨æ¨î 㪠§ ­­®£® ᨬ¢®« 
987
; ­ ©â¨ á«¥¤ãîéãî ¯®§¨æ¨î 㪠§ ­­®£® ᨬ¢®« 
985
align 4
988
align 16
986
ted_iterat_next_pos_char:
989
ted_iterat_next_pos_char:
987
	push ax
990
	push ax
988
	mov al,1 ;¯à¥¤ë¤ã騩 ᨬ¢®«, á«ã¦¨â ¤«ï áà ¢­¥­¨ï á ᨬ¢®«®¬ bh
991
	mov al,1 ;¯à¥¤ë¤ã騩 ᨬ¢®«, á«ã¦¨â ¤«ï áà ¢­¥­¨ï á ᨬ¢®«®¬ bh
989
	@@:
992
	@@:
990
		cmp bl,byte[edx]
993
		cmp bl,byte[edx]
Line 1004... Line 1007...
1004
	ret
1007
	ret
Line 1005... Line 1008...
1005
 
1008
 
1006
;input:
1009
;input:
1007
; edx = pointer to symbol struct
1010
; edx = pointer to symbol struct
1008
; edi = pointer to tedit struct
1011
; edi = pointer to tedit struct
1009
align 4
1012
align 16
1010
ted_iterat_perv_color_tag:
1013
ted_iterat_perv_color_tag:
1011
	@@:
1014
	@@:
1012
		cmp byte[edx+1],0
1015
		cmp byte[edx+1],0
1013
		jne @f
1016
		jne @f
1014
		call ted_iterat_perv
1017
		call ted_iterat_perv
1015
		cmp edx,ted_tex_1
1018
		cmp edx,ted_tex_1
1016
		jle @f
1019
		jle @f
-
 
1020
		jmp @b
1017
		jmp @b
1021
align 4
1018
	@@:
1022
	@@:
Line 1019... Line 1023...
1019
	ret
1023
	ret
1020
 
1024
 
1021
;input:
1025
;input:
1022
; edx = pointer to symbol struct
1026
; edx = pointer to symbol struct
1023
; edi = pointer to tedit struct
1027
; edi = pointer to tedit struct
1024
align 4
1028
align 16
1025
ted_iterat_next_color_tag:
1029
ted_iterat_next_color_tag:
1026
	@@:
1030
	@@:
1027
		call ted_iterat_next
1031
		call ted_iterat_next
1028
		cmp byte[edx+1],0
1032
		cmp byte[edx+1],0
1029
		jne @f
1033
		jne @f
1030
		cmp edx,ted_tex_1
1034
		cmp edx,ted_tex_1
-
 
1035
		jle @f
1031
		jle @f
1036
		jmp @b
1032
		jmp @b
1037
align 4
Line 1033... Line 1038...
1033
	@@:
1038
	@@:
1034
	ret
1039
	ret
1035
 
1040
 
1036
;input:
1041
;input:
1037
; edx = pointer to symbol struct
1042
; edx = pointer to symbol struct
1038
; edi = pointer to tedit struct
1043
; edi = pointer to tedit struct
1039
;output:
1044
;output:
1040
; bl = 1 if sumbol not visible
1045
; bl = 1 if sumbol not visible
1041
; (tex[i].td+ted_tim_undo<=ted_tim_ch && tex[i].td) || (tex[i].tc>ted_tim_ch-ted_tim_undo)
1046
; (tex[i].td+ted_tim_undo<=ted_tim_ch && tex[i].td) || (tex[i].tc>ted_tim_ch-ted_tim_undo)
Line 1042... Line 1047...
1042
align 4
1047
align 16
Line 1067... Line 1072...
1067
	ret
1072
	ret
Line 1068... Line 1073...
1068
 
1073
 
1069
;input:
1074
;input:
1070
; text:dword - pointer to text string
1075
; text:dword - pointer to text string
1071
; add_opt:dword - options
1076
; add_opt:dword - options
1072
align 4
1077
align 16
1073
proc ted_text_add, edit:dword, text:dword, t_len:dword, add_opt:dword
1078
proc ted_text_add, edit:dword, text:dword, t_len:dword, add_opt:dword
1074
	locals
1079
	locals
1075
		new_spc dd ? ;count new spaces
1080
		new_spc dd ? ;count new spaces
1076
		new_lin dd ? ;count new lines
1081
		new_lin dd ? ;count new lines
Line 1082... Line 1087...
1082
;edx - 㪠§ â¥«ì ­  áâàãªâãàã ᨬ¢®« 
1087
;edx - 㪠§ â¥«ì ­  áâàãªâãàã ᨬ¢®« 
1083
	pushad
1088
	pushad
1084
	cmp dword[t_len],1 ;¯à®¢¥à塞 ¤«¨­­ã ¤®¡¢«ï¥¬®£® ⥪áâ 
1089
	cmp dword[t_len],1 ;¯à®¢¥à塞 ¤«¨­­ã ¤®¡¢«ï¥¬®£® ⥪áâ 
1085
	jl .no_add ;ª®£¤  ¤«¨­­  <1 ¯à룠¥¬ ­  ª®­¥æ ä㭪樨, ¢® ¨§¡¥¦ ­¨¥ £«îª®¢
1090
	jl .no_add ;ª®£¤  ¤«¨­­  <1 ¯à룠¥¬ ­  ª®­¥æ ä㭪樨, ¢® ¨§¡¥¦ ­¨¥ £«îª®¢
Line 1086... Line 1091...
1086
 
1091
 
1087
	mov edi,dword[edit]
1092
	mov edi,[edit]
Line 1088... Line 1093...
1088
	mov esi,dword[text]
1093
	mov esi,dword[text]
1089
 
1094
 
1090
	call ted_get_pos_by_cursor
1095
	call ted_get_pos_by_cursor
Line 1219... Line 1224...
1219
;input:
1224
;input:
1220
;  edx = pointer to sumbol, when insert
1225
;  edx = pointer to sumbol, when insert
1221
;  edi = pointer to tedit struct
1226
;  edi = pointer to tedit struct
1222
;output:
1227
;output:
1223
;  edx = new pointer to sumbol, when insert
1228
;  edx = new pointer to sumbol, when insert
1224
align 4
1229
align 16
1225
proc ted_memory_increase
1230
proc ted_memory_increase
1226
	cmp ted_increase_size,0
1231
	cmp ted_increase_size,0
1227
	je @f
1232
	je @f
1228
		push eax ebx ecx
1233
		push eax ebx ecx
1229
		mov ecx,ted_increase_size
1234
		mov ecx,ted_increase_size
Line 1250... Line 1255...
1250
;  edx = pointer to sumbol, when insert
1255
;  edx = pointer to sumbol, when insert
1251
;  esi = added symbol
1256
;  esi = added symbol
1252
;  edi = pointer to tedit struct
1257
;  edi = pointer to tedit struct
1253
;output:
1258
;output:
1254
;  ecx = position to inserted cell
1259
;  ecx = position to inserted cell
1255
align 4
1260
align 16
1256
ted_char_add:
1261
ted_char_add:
1257
	.loop_b:
1262
	.loop_b:
1258
		cmp ecx,ted_tex_end
1263
		cmp ecx,ted_tex_end
1259
		jge .end_f
1264
		jge .end_f
1260
		cmp dword[ecx+10],0
1265
		cmp dword[ecx+10],0
Line 1294... Line 1299...
1294
 
1299
 
1295
;description:
1300
;description:
1296
; äã­ªæ¨ï ¤«ï ᬥ­ë ª®¤¨à®¢®ª
1301
; äã­ªæ¨ï ¤«ï ᬥ­ë ª®¤¨à®¢®ª
1297
;input:
1302
;input:
1298
; table - â ¡«¨æ  ¤«ï ¯¥à¥ª®¤¨à®¢ª¨
1303
; table - â ¡«¨æ  ¤«ï ¯¥à¥ª®¤¨à®¢ª¨
1299
align 4
1304
align 16
1300
proc ted_but_convert_by_table uses eax edx edi esi, edit:dword, table:dword
1305
proc ted_but_convert_by_table uses eax edx edi esi, edit:dword, table:dword
1301
	mov edi,dword[edit]
1306
	mov edi,[edit]
1302
	mov esi,dword[table]
1307
	mov esi,dword[table]
1303
	mov edx,ted_tex
1308
	mov edx,ted_tex
1304
	.cycle:
1309
	.cycle:
1305
		;¯¥à¥å®¤¨¬ ­  á«¥¤ãî騩 ᨬ¢®«
1310
		;¯¥à¥å®¤¨¬ ­  á«¥¤ãî騩 ᨬ¢®«
Line 1329... Line 1334...
1329
; edi = pointer to tedit struct
1334
; edi = pointer to tedit struct
1330
;output:
1335
;output:
1331
; esi = count converted symbols
1336
; esi = count converted symbols
1332
;description:
1337
;description:
1333
; ”ã­ªæ¨ï ¨á¯®«ì§ã¥âáï ¤«ï ᬥ­ë ॣ¨áâà  ¢ë¡à ­­ëå ᨬ¢®«®¢
1338
; ”ã­ªæ¨ï ¨á¯®«ì§ã¥âáï ¤«ï ᬥ­ë ॣ¨áâà  ¢ë¡à ­­ëå ᨬ¢®«®¢
1334
align 4
1339
align 16
1335
proc ted_convert_sel_text, conv_fun:dword
1340
proc ted_convert_sel_text, conv_fun:dword
1336
  locals
1341
  locals
1337
    conv_cou dd ?
1342
    conv_cou dd ?
1338
  endl
1343
  endl
1339
  mov dword[conv_cou],0
1344
  mov dword[conv_cou],0
Line 1394... Line 1399...
1394
endp
1399
endp
Line 1395... Line 1400...
1395
 
1400
 
1396
;output:
1401
;output:
1397
; bl = 0 - no delete
1402
; bl = 0 - no delete
1398
; bl = 1 - delete
1403
; bl = 1 - delete
1399
align 4
1404
align 16
1400
proc ted_text_del uses ecx edx edi, edit:dword, del_opt:dword
1405
proc ted_text_del uses ecx edx edi, edit:dword, del_opt:dword
1401
	mov edi,dword[edit]
1406
	mov edi,[edit]
Line 1402... Line 1407...
1402
	mov ebx,dword[del_opt]
1407
	mov ebx,dword[del_opt]
1403
 
1408
 
1404
	xor cl,cl
1409
	xor cl,cl
Line 1426... Line 1431...
1426
; edi = pointer to tedit struct
1431
; edi = pointer to tedit struct
1427
;output:
1432
;output:
1428
; al = 1 if delete
1433
; al = 1 if delete
1429
;description:
1434
;description:
1430
; ”ã­ªæ¨ï 㤠«ï¥â ¢ë¤¥«¥­­ë© ⥪áâ
1435
; ”ã­ªæ¨ï 㤠«ï¥â ¢ë¤¥«¥­­ë© ⥪áâ
1431
align 4
1436
align 16
1432
proc ted_sel_text_del uses ebx ecx edx esi, del_opt:dword
1437
proc ted_sel_text_del uses ebx ecx edx esi, del_opt:dword
1433
	call ted_is_select
1438
	call ted_is_select
1434
	cmp al,0
1439
	cmp al,0
1435
	je .end_f
1440
	je .end_f
1436
		call ted_sel_normalize
1441
		call ted_sel_normalize
Line 1482... Line 1487...
1482
 
1487
 
1483
;input:
1488
;input:
1484
; eax = pointer to begin select
1489
; eax = pointer to begin select
1485
; ebx = pointer to end select
1490
; ebx = pointer to end select
1486
; edi = pointer to tedit struct
1491
; edi = pointer to tedit struct
1487
align 4
1492
align 16
1488
ted_revers:
1493
ted_revers:
1489
	cmp eax,ebx
1494
	cmp eax,ebx
1490
	jne @f
1495
	jne @f
1491
		ret
1496
		ret
Line 1542... Line 1547...
1542
; edi = pointer to tedit struct
1547
; edi = pointer to tedit struct
1543
;output:
1548
;output:
1544
; dl = 0 not move
1549
; dl = 0 not move
1545
; dl = 2 if move up
1550
; dl = 2 if move up
1546
; dl = 8 if scroll move up
1551
; dl = 8 if scroll move up
1547
align 4
1552
align 16
1548
ted_cur_move_up:
1553
ted_cur_move_up:
1549
  cmp ted_cur_y,0
1554
  cmp ted_cur_y,0
1550
  je @f
1555
  je @f
1551
    dec ted_cur_y
1556
    dec ted_cur_y
1552
    mov dl,2
1557
    mov dl,2
Line 1569... Line 1574...
1569
; edi = pointer to tedit struct
1574
; edi = pointer to tedit struct
1570
;output:
1575
;output:
1571
; dl = 0 not move
1576
; dl = 0 not move
1572
; dl = 2 if move down
1577
; dl = 2 if move down
1573
; dl = 8 if scroll move down
1578
; dl = 8 if scroll move down
1574
align 4
1579
align 16
1575
ted_cur_move_down:
1580
ted_cur_move_down:
1576
  push eax ebx
1581
  push eax ebx
1577
  mov ebx,ted_scr_w
1582
  mov ebx,ted_scr_w
1578
  mov dl,0
1583
  mov dl,0
1579
  mov eax,dword[ebx+sb_offs_cur_area]
1584
  mov eax,dword[ebx+sb_offs_cur_area]
Line 1600... Line 1605...
1600
;input:
1605
;input:
1601
; edi = pointer to tedit struct
1606
; edi = pointer to tedit struct
1602
;output:
1607
;output:
1603
; dl = 0 not move
1608
; dl = 0 not move
1604
; dl = 1 if move up
1609
; dl = 1 if move up
1605
align 4
1610
align 16
1606
ted_cur_move_page_up:
1611
ted_cur_move_page_up:
1607
  push eax ebx
1612
  push eax ebx
1608
  mov ebx,ted_scr_w
1613
  mov ebx,ted_scr_w
1609
  mov eax,dword[ebx+sb_offs_cur_area]
1614
  mov eax,dword[ebx+sb_offs_cur_area]
1610
  xor dl,dl
1615
  xor dl,dl
Line 1623... Line 1628...
1623
  pop ebx eax
1628
  pop ebx eax
1624
  ret
1629
  ret
Line 1625... Line 1630...
1625
 
1630
 
1626
;input:
1631
;input:
1627
; edi = pointer to tedit struct
1632
; edi = pointer to tedit struct
1628
align 4
1633
align 16
1629
ted_cur_move_page_down:
1634
ted_cur_move_page_down:
1630
	push eax ebx ecx
1635
	push eax ebx ecx
Line 1631... Line 1636...
1631
	mov ecx,ted_scr_w
1636
	mov ecx,ted_scr_w
Line 1651... Line 1656...
1651
;output:
1656
;output:
1652
; dl = 0 not move
1657
; dl = 0 not move
1653
; dl = 1 if move left
1658
; dl = 1 if move left
1654
; dl = 3 if move left and up
1659
; dl = 3 if move left and up
1655
; dl = 8 if scroll move up
1660
; dl = 8 if scroll move up
1656
align 4
1661
align 16
1657
ted_cur_move_left:
1662
ted_cur_move_left:
1658
	cmp ted_cur_x,0
1663
	cmp ted_cur_x,0
1659
	je @f
1664
	je @f
1660
		dec ted_cur_x
1665
		dec ted_cur_x
1661
		mov dl,1
1666
		mov dl,1
Line 1695... Line 1700...
1695
	pop eax
1700
	pop eax
1696
	ret
1701
	ret
Line 1697... Line 1702...
1697
 
1702
 
1698
;input:
1703
;input:
1699
; edi = pointer to tedit struct
1704
; edi = pointer to tedit struct
1700
align 4
1705
align 16
1701
ted_cur_move_right:
1706
ted_cur_move_right:
1702
	push eax ebx
1707
	push eax ebx
1703
	mov eax,ted_scr_h
1708
	mov eax,ted_scr_h
1704
	xor dl,dl
1709
	xor dl,dl
Line 1715... Line 1720...
1715
	pop ebx eax
1720
	pop ebx eax
1716
	ret
1721
	ret
Line 1717... Line 1722...
1717
 
1722
 
1718
;input:
1723
;input:
1719
; edi = pointer to tedit struct
1724
; edi = pointer to tedit struct
1720
align 4
1725
align 16
1721
ted_cur_move_x_last_char:
1726
ted_cur_move_x_last_char:
1722
;[hScr.position]
1727
;[hScr.position]
1723
;[hScr.cur_area]
1728
;[hScr.cur_area]
1724
;dl-???
1729
;dl-???
Line 1752... Line 1757...
1752
; edi = pointer to tedit struct
1757
; edi = pointer to tedit struct
1753
;output:
1758
;output:
1754
; dl = 0 not move
1759
; dl = 0 not move
1755
; dl = 1 move cursor
1760
; dl = 1 move cursor
1756
; dl = 8 move cursor and scroll
1761
; dl = 8 move cursor and scroll
1757
align 4
1762
align 16
1758
ted_cur_move_x_first_char:
1763
ted_cur_move_x_first_char:
1759
	xor dl,dl
1764
	xor dl,dl
1760
	cmp ted_cur_x,0
1765
	cmp ted_cur_x,0
1761
	je @f
1766
	je @f
1762
		mov ted_cur_x,0
1767
		mov ted_cur_x,0
Line 1775... Line 1780...
1775
;input:
1780
;input:
1776
; edx = pointer to symbol struct
1781
; edx = pointer to symbol struct
1777
; edi = pointer to tedit struct
1782
; edi = pointer to tedit struct
1778
;output:
1783
;output:
1779
; eax = array index
1784
; eax = array index
1780
align 4
1785
align 16
1781
ted_get_text_arr_index:
1786
ted_get_text_arr_index:
1782
	push ecx edx
1787
	push ecx edx
1783
		mov eax,edx
1788
		mov eax,edx
1784
		sub eax,ted_tex
1789
		sub eax,ted_tex
1785
		xor edx,edx
1790
		xor edx,edx
Line 1791... Line 1796...
1791
;input:
1796
;input:
1792
; edx = pointer to symbol struct
1797
; edx = pointer to symbol struct
1793
; edi = pointer to tedit struct
1798
; edi = pointer to tedit struct
1794
;output:
1799
;output:
1795
; edx = pointer to 'perv' struct
1800
; edx = pointer to 'perv' struct
1796
align 4
1801
align 16
1797
ted_get_text_perv_pos:
1802
ted_get_text_perv_pos:
1798
	mov edx,dword[edx+2]
1803
	mov edx,dword[edx+2]
1799
	imul edx,sizeof.symbol
1804
	imul edx,sizeof.symbol
1800
	add edx,ted_tex
1805
	add edx,ted_tex
1801
	ret
1806
	ret
Line 1802... Line 1807...
1802
 
1807
 
1803
;input:
1808
;input:
1804
; edx = pointer to symbol struct
1809
; edx = pointer to symbol struct
1805
;output:
1810
;output:
1806
; edx = pointer to 'next' symbol struct
1811
; edx = pointer to 'next' symbol struct
1807
align 4
1812
align 16
1808
ted_get_text_next_pos:
1813
ted_get_text_next_pos:
1809
	mov edx,dword[edx+6]
1814
	mov edx,dword[edx+6]
1810
	imul edx,sizeof.symbol
1815
	imul edx,sizeof.symbol
1811
	add edx,ted_tex
1816
	add edx,ted_tex
Line 1816... Line 1821...
1816
;output:
1821
;output:
1817
; edx = symbol under cursor
1822
; edx = symbol under cursor
1818
; ted_gp_opt = 1,2
1823
; ted_gp_opt = 1,2
1819
; edx = tex[1].perv if error
1824
; edx = tex[1].perv if error
1820
; ted_gp_opt = 0
1825
; ted_gp_opt = 0
1821
align 4
1826
align 16
1822
ted_get_pos_by_cursor:
1827
ted_get_pos_by_cursor:
1823
	push eax ecx esi
1828
	push eax ecx esi
1824
		mov esi,ted_cur_x
1829
		mov esi,ted_cur_x
1825
		mov eax,ted_scr_h
1830
		mov eax,ted_scr_h
1826
		add esi,dword[eax+sb_offs_position]
1831
		add esi,dword[eax+sb_offs_position]
Line 1839... Line 1844...
1839
; edx = symbol under cursor
1844
; edx = symbol under cursor
1840
; ted_gp_opt = 1 if found text line
1845
; ted_gp_opt = 1 if found text line
1841
; ted_gp_opt = 2 if found text line and column
1846
; ted_gp_opt = 2 if found text line and column
1842
; edx = tex[1] if error
1847
; edx = tex[1] if error
1843
; ted_gp_opt = 0 if text no found
1848
; ted_gp_opt = 0 if text no found
1844
align 4
1849
align 16
1845
ted_get_pos_by_coords:
1850
ted_get_pos_by_coords:
1846
  push eax ;Row
1851
  push eax ;Row
1847
  push ebx ;Col
1852
  push ebx ;Col
Line 1848... Line 1853...
1848
 
1853
 
Line 1886... Line 1891...
1886
;input:
1891
;input:
1887
; eax = Row
1892
; eax = Row
1888
; edi = pointer to tedit struct
1893
; edi = pointer to tedit struct
1889
;output:
1894
;output:
1890
; ebx = str len
1895
; ebx = str len
1891
align 4
1896
align 16
1892
ted_strlen:
1897
ted_strlen:
1893
  push edx ecx
1898
  push edx ecx
1894
  ;ecx = Row, from cycle
1899
  ;ecx = Row, from cycle
Line 1895... Line 1900...
1895
 
1900
 
Line 1924... Line 1929...
1924
; edx = symbol position
1929
; edx = symbol position
1925
; edi = pointer to tedit struct
1930
; edi = pointer to tedit struct
1926
;output:
1931
;output:
1927
; eax = number of line
1932
; eax = number of line
1928
; ebx = symbol position in line
1933
; ebx = symbol position in line
1929
align 4
1934
align 16
1930
ted_get_text_coords:
1935
ted_get_text_coords:
1931
  push edx
1936
  push edx
1932
  xor eax,eax
1937
  xor eax,eax
1933
  xor ebx,ebx
1938
  xor ebx,ebx
1934
  @@:
1939
  @@:
Line 1952... Line 1957...
1952
 
1957
 
1953
;input:
1958
;input:
1954
; edi = pointer to tedit struct
1959
; edi = pointer to tedit struct
1955
;output:
1960
;output:
1956
; eax = num lines
1961
; eax = num lines
1957
align 4
1962
align 16
1958
ted_get_num_lines:
1963
ted_get_num_lines:
1959
	push edx
1964
	push edx
1960
	mov eax,1
1965
	mov eax,1
1961
	mov edx,ted_tex
1966
	mov edx,ted_tex
Line 1976... Line 1981...
1976
 
1981
 
1977
;input:
1982
;input:
1978
; edi = pointer to tedit struct
1983
; edi = pointer to tedit struct
1979
;description:
1984
;description:
1980
; ®â¬¥­ï¥â ®â¬¥­¥­­ë¥ ¤¥©á⢨ï, ¯¥à¥¤ ¨§¬¥­¥­¨¥¬ ¤®ªã¬¥­â 
1985
; ®â¬¥­ï¥â ®â¬¥­¥­­ë¥ ¤¥©á⢨ï, ¯¥à¥¤ ¨§¬¥­¥­¨¥¬ ¤®ªã¬¥­â 
1981
align 4
1986
align 16
1982
proc ted_set_undo
1987
proc ted_set_undo
1983
	mov ted_drag_k,0 ;§ ª ­ç¨¢ ¥¬ ¢ë¤¥«¥­¨¥ ®â ª« ¢¨ âãàë
1988
	mov ted_drag_k,0 ;§ ª ­ç¨¢ ¥¬ ¢ë¤¥«¥­¨¥ ®â ª« ¢¨ âãàë
1984
	cmp ted_tim_undo,1
1989
	cmp ted_tim_undo,1
Line 2043... Line 2048...
2043
 
2048
 
2044
;input:
2049
;input:
2045
; ecx = Col
2050
; ecx = Col
2046
; edx = Row
2051
; edx = Row
2047
; edi = pointer to tedit struct
2052
; edi = pointer to tedit struct
2048
align 4
2053
align 16
2049
ted_go_to_pos:
2054
ted_go_to_pos:
2050
	push eax
2055
	push eax
2051
	mov eax,ted_scr_w
2056
	mov eax,ted_scr_w
2052
	mov ted_cur_x,ecx
2057
	mov ted_cur_x,ecx
Line 2067... Line 2072...
2067
	pop eax
2072
	pop eax
2068
	ret
2073
	ret
Line 2069... Line 2074...
2069
 
2074
 
2070
;input:
2075
;input:
2071
; edi = pointer to tedit struct
2076
; edi = pointer to tedit struct
2072
align 4
2077
align 16
2073
ted_text_colored:
2078
ted_text_colored:
2074
  push eax edx
2079
  push eax edx
2075
  mov eax,ted_tim_ch
2080
  mov eax,ted_tim_ch
2076
  sub eax,ted_tim_undo
2081
  sub eax,ted_tim_undo
Line 2102... Line 2107...
2102
; edi = pointer to tedit struct
2107
; edi = pointer to tedit struct
2103
;output:
2108
;output:
2104
; edx = pointer to next symbol
2109
; edx = pointer to next symbol
2105
;description:
2110
;description:
2106
; ”ã­ªæ¨ï ¤«ï ¯®¨áª  ¨ ¢ë¤¥«¥­¨ï ¯®¤á¢¥ç¥­ëå á«®¢
2111
; ”ã­ªæ¨ï ¤«ï ¯®¨áª  ¨ ¢ë¤¥«¥­¨ï ¯®¤á¢¥ç¥­ëå á«®¢
2107
align 4
2112
align 16
2108
proc ted_text_find_sel_color uses eax ebx ecx esi
2113
proc ted_text_find_sel_color uses eax ebx ecx esi
2109
locals
2114
locals
2110
	begPos dd ? ;­ ç «ì­ ï ¯®§¨æ¨ï
2115
	begPos dd ? ;­ ç «ì­ ï ¯®§¨æ¨ï
2111
	endPos dd ? ;ª®­¥ç­ ï ¯®§¨æ¨ï
2116
	endPos dd ? ;ª®­¥ç­ ï ¯®§¨æ¨ï
2112
	find db ? ;­ ©¤¥­® / ­¥ ­ ©¤¥­®
2117
	find db ? ;­ ©¤¥­® / ­¥ ­ ©¤¥­®
Line 2293... Line 2298...
2293
 
2298
 
2294
;input:
2299
;input:
2295
; edx = pointer to char (byte)
2300
; edx = pointer to char (byte)
2296
;output:
2301
;output:
2297
; cf=1 if symbol is...
2302
; cf=1 if symbol is...
2298
align 4
2303
align 16
2299
tab_all_num db 0,0,0,0,0,0,0xff,11b,11111110b,0xff,0xff,10000111b,11111110b,0xff,0xff,111b,0,0,0,0,0,0,0,0;,0,0,0,0,0,0,0,0 - tab_alpha_0,0,0,0,0,0,0,0
2304
tab_all_num db 0,0,0,0,0,0,0xff,11b,11111110b,0xff,0xff,10000111b,11111110b,0xff,0xff,111b,0,0,0,0,0,0,0,0;,0,0,0,0,0,0,0,0 - tab_alpha_0,0,0,0,0,0,0,0
Line 2300... Line 2305...
2300
tab_alpha db 0,0,0,0,0,0,0,0,11111110b,0xff,0xff,10000111b,11111110b,0xff,0xff,111b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
2305
tab_alpha db 0,0,0,0,0,0,0,0,11111110b,0xff,0xff,10000111b,11111110b,0xff,0xff,111b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
2301
 
2306
 
2302
;output:
2307
;output:
2303
; cf=1 ¥á«¨ ¢ [edx] ¡ãª¢ , æ¨äà  ¨«¨ '_'
2308
; cf=1 ¥á«¨ ¢ [edx] ¡ãª¢ , æ¨äà  ¨«¨ '_'
2304
align 4
2309
align 16
2305
isalnum:
2310
isalnum:
2306
	push eax ebx
2311
	push eax ebx
2307
	movzx eax,byte[edx] ;al=offset
2312
	movzx eax,byte[edx] ;al=offset
Line 2314... Line 2319...
2314
	pop ebx eax
2319
	pop ebx eax
2315
	ret
2320
	ret
Line 2316... Line 2321...
2316
 
2321
 
2317
;output:
2322
;output:
2318
; cf=1 ¥á«¨ ¢ [edx] ¡ãª¢  ¨«¨ '_'
2323
; cf=1 ¥á«¨ ¢ [edx] ¡ãª¢  ¨«¨ '_'
2319
align 4
2324
align 16
2320
isalpha:
2325
isalpha:
2321
	push eax ebx
2326
	push eax ebx
2322
	movzx eax,byte[edx] ;al=offset
2327
	movzx eax,byte[edx] ;al=offset
2323
	shr eax,3
2328
	shr eax,3
Line 2327... Line 2332...
2327
	and ax,111b
2332
	and ax,111b
2328
	bt word[ebx],ax
2333
	bt word[ebx],ax
2329
	pop ebx eax
2334
	pop ebx eax
2330
	ret
2335
	ret
Line 2331... Line 2336...
2331
 
2336
 
2332
align 4
2337
align 16
2333
proc ted_show_help_f1 uses eax edx edi, edit:dword
2338
proc ted_show_help_f1 uses eax edx edi, edit:dword
Line 2334... Line 2339...
2334
	mov edi,dword[edit]
2339
	mov edi,[edit]
2335
 
2340
 
2336
	call ted_get_pos_by_cursor
2341
	call ted_get_pos_by_cursor
2337
	push edx
2342
	push edx
Line 2353... Line 2358...
2353
 
2358
 
2354
;input:
2359
;input:
2355
; edx = position begin 'symbol' struct
2360
; edx = position begin 'symbol' struct
2356
; edi = pointer to tedit struct
2361
; edi = pointer to tedit struct
2357
; end_pos = position end 'symbol' struct
2362
; end_pos = position end 'symbol' struct
2358
align 4
2363
align 16
2359
proc ted_find_help_id, end_pos:dword
2364
proc ted_find_help_id, end_pos:dword
2360
; ecx = word_n
2365
; ecx = word_n
2361
; ebx = l_pos
2366
; ebx = l_pos
Line 2433... Line 2438...
2433
endp
2438
endp
Line 2434... Line 2439...
2434
 
2439
 
2435
;output:
2440
;output:
2436
; eax = ª®¤ ®è¨¡ª¨
2441
; eax = ª®¤ ®è¨¡ª¨
2437
; ebx = ª®««¨ç¥á⢮ ¯à®ç¨â ­­ëå ¡ ©â
2442
; ebx = ª®««¨ç¥á⢮ ¯à®ç¨â ­­ëå ¡ ©â
2438
align 4
2443
align 16
2439
proc ted_open_file uses ecx edx edi, edit:dword, file:dword, f_name:dword ;äã­ªæ¨ï ®âªàëâ¨ï ä ©« 
2444
proc ted_open_file uses ecx edx edi, edit:dword, file:dword, f_name:dword ;äã­ªæ¨ï ®âªàëâ¨ï ä ©« 
Line 2440... Line 2445...
2440
	mov edi,dword[edit]
2445
	mov edi,[edit]
2441
 
2446
 
2442
	; *** ¯à®¢¥à塞 à §¬¥à ¯ ¬ï⨠¨ ¥á«¨ ­¥ 墠⠥â ⮠㢥«¨ç¨¢ ¥¬ ***
-
 
2443
	;¯à®¡ã¥¬ ¯®«ãç¨âì ¨­ä®à¬ æ¨î ® ä ©«¥
2447
	; *** ¯à®¢¥à塞 à §¬¥à ¯ ¬ï⨠¨ ¥á«¨ ­¥ 墠⠥â ⮠㢥«¨ç¨¢ ¥¬ ***
2444
	mov eax,70
2448
	;¯à®¡ã¥¬ ¯®«ãç¨âì ¨­ä®à¬ æ¨î ® ä ©«¥
2445
	mov ebx,dword[file]
2449
	mov ebx,[file]
2446
	mov dword[ebx], 5
2450
	mov dword[ebx], SSF_GET_INFO
2447
	mov dword[ebx+4], 0
2451
	mov dword[ebx+4], 0
2448
	mov dword[ebx+8], 0
2452
	mov dword[ebx+8], 0
2449
	mov dword[ebx+12], 0
2453
	mov dword[ebx+12], 0
2450
	m2m dword[ebx+16], ted_tex
2454
	m2m dword[ebx+16], ted_tex
2451
	mov  byte[ebx+20], 0
2455
	mov  byte[ebx+20], 0
2452
	push dword[f_name]
2456
	push dword[f_name]
2453
	pop dword[ebx+21]
2457
	pop dword[ebx+21]
2454
	int 0x40
2458
	mcall SF_FILE
2455
	cmp eax,0
2459
	or eax,eax
2456
	je .end_0
2460
	jz .end_0
2457
		mov edx,ted_max_chars
2461
		mov edx,ted_max_chars
2458
		cmp eax,2 ;äã­ªæ¨ï ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ­­®© ä ©«®¢®© á¨á⥬ë
2462
		cmp eax,2 ;äã­ªæ¨ï ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï ¤ ­­®© ä ©«®¢®© á¨á⥬ë
-
 
2463
		je @f
2459
		je @f
2464
		jmp .ret_f
2460
		jmp .ret_f
2465
align 4
2461
	.end_0:
2466
	.end_0:
2462
	;¯à®¢¥à塞 墠â¨â «¨ ¯ ¬ï⨠¤«ï § £à㧪¨ ä ©« 
2467
	;¯à®¢¥à塞 墠â¨â «¨ ¯ ¬ï⨠¤«ï § £à㧪¨ ä ©« 
2463
	mov ecx,ted_max_chars
2468
	mov ecx,ted_max_chars
2464
	sub ecx,2 ;ecx = ¬ ªá¨¬ «ì­®¥ ç¨á«® ¡ ©â, ¤«ï ª®â®àëå ¡ë«  ¢ë¤¥«¥­  ¯ ¬ïâì
2469
	sub ecx,2 ;ecx = ¬ ªá¨¬ «ì­®¥ ç¨á«® ¡ ©â, ¤«ï ª®â®àëå ¡ë«  ¢ë¤¥«¥­  ¯ ¬ïâì
2465
	mov edx,ted_tex
2470
	mov edx,ted_tex
2466
	mov edx,dword[edx+32] ;+32 = +0x20: qword: à §¬¥à ä ©«  ¢ ¡ ©â å
2471
	mov edx,[edx+32] ;+32 = +0x20: qword: à §¬¥à ä ©«  ¢ ¡ ©â å
2467
	cmp edx,ecx
2472
	cmp edx,ecx
2468
	jl @f
2473
	jl @f
2469
		;㢥«¨ç¨¢ ¥¬ ¯ ¬ïâì ¥á«¨ ­¥ 墠⨫®
2474
		;㢥«¨ç¨¢ ¥¬ ¯ ¬ïâì ¥á«¨ ­¥ 墠⨫®
Line 2482... Line 2487...
2482
		add ecx,sizeof.symbol
2487
		add ecx,sizeof.symbol
2483
		mov ted_ptr_free_symb,ecx
2488
		mov ted_ptr_free_symb,ecx
2484
	@@:
2489
	@@:
Line 2485... Line 2490...
2485
 
2490
 
2486
	; *** ¯à®¡ã¥¬ ®âªàëâì ä ©« ***
-
 
2487
	mov eax,70
2491
	; *** ¯à®¡ã¥¬ ®âªàëâì ä ©« ***
2488
	mov ebx,dword[file]
2492
	mov ebx,[file]
2489
	mov dword[ebx], 0
2493
	mov dword[ebx], SSF_READ_FILE
2490
	mov dword[ebx+4], 0
2494
	mov dword[ebx+4], 0
2491
	mov dword[ebx+8], 0
2495
	mov dword[ebx+8], 0
2492
	m2m dword[ebx+12], edx ;ç¨á«® ¡ ©â, ª®â®àë¥ ¬®£ãâ ¡ëâì áç¨â ­ë á ä ©«  (­¥ ¡®«ìè¥ ç¥¬ ted_max_chars)
2496
	m2m dword[ebx+12], edx ;ç¨á«® ¡ ©â, ª®â®àë¥ ¬®£ãâ ¡ëâì áç¨â ­ë á ä ©«  (­¥ ¡®«ìè¥ ç¥¬ ted_max_chars)
2493
	m2m dword[ebx+16], ted_tex
2497
	m2m dword[ebx+16], ted_tex
2494
	mov  byte[ebx+20], 0
2498
	mov  byte[ebx+20], 0
2495
	push dword[f_name]
2499
	push dword[f_name]
2496
	pop dword[ebx+21]
2500
	pop dword[ebx+21]
Line 2497... Line 2501...
2497
	int 0x40
2501
	mcall SF_FILE
2498
 
2502
 
2499
	cmp eax,0
2503
	or eax,eax
2500
	je @f
2504
	jz @f
2501
	cmp eax,6
2505
	cmp eax,6
2502
	je @f
2506
	je @f
2503
		jmp .ret_f
2507
		jmp .ret_f
Line 2508... Line 2512...
2508
		call ted_on_open_file
2512
		call ted_on_open_file
2509
	.ret_f:
2513
	.ret_f:
2510
	ret
2514
	ret
2511
endp
2515
endp
Line 2512... Line 2516...
2512
 
2516
 
2513
align 4
2517
align 16
2514
proc ted_but_select_word, edit:dword
2518
proc ted_but_select_word, edit:dword
2515
	pushad
2519
	pushad
Line 2516... Line 2520...
2516
	mov edi,dword[edit]
2520
	mov edi,[edit]
2517
 
2521
 
2518
	call ted_get_pos_by_cursor
2522
	call ted_get_pos_by_cursor
2519
	push edx
2523
	push edx
Line 2540... Line 2544...
2540
	stdcall ted_draw,edi
2544
	stdcall ted_draw,edi
2541
	popad
2545
	popad
2542
	ret
2546
	ret
2543
endp
2547
endp
Line 2544... Line 2548...
2544
 
2548
 
2545
align 4
2549
align 16
2546
proc ted_but_cut uses edi, edit:dword
2550
proc ted_but_cut uses edi, edit:dword
Line 2547... Line 2551...
2547
	mov edi,dword[edit]
2551
	mov edi,[edit]
2548
 
2552
 
2549
	stdcall ted_but_copy,edi
2553
	stdcall ted_but_copy,edi
Line 2560... Line 2564...
2560
	ret
2564
	ret
2561
endp
2565
endp
Line 2562... Line 2566...
2562
 
2566
 
2563
;output:
2567
;output:
2564
; al = 1 if copy text
2568
; al = 1 if copy text
2565
align 4
2569
align 16
2566
proc ted_but_copy, edit:dword
2570
proc ted_but_copy, edit:dword
2567
	pushad
2571
	pushad
Line 2568... Line 2572...
2568
	mov edi,dword[edit]
2572
	mov edi,[edit]
2569
 
2573
 
2570
	call ted_is_select
2574
	call ted_is_select
2571
	cmp al,0
2575
	or al,al
Line 2572... Line 2576...
2572
	je .end_f ;if not selected text
2576
	jz .end_f ;if not selected text
2573
	call ted_sel_normalize
2577
	call ted_sel_normalize
2574
 
2578
 
Line 2612... Line 2616...
2612
 
2616
 
2613
	cmp ecx,12
2617
	cmp ecx,12
2614
	je .end_f
2618
	je .end_f
2615
		inc ecx ;à §¬¥à ¤ ­­ëå ¢ ¡ãä¥à¥ + ᨬ¢®« § ¢¥à襭¨ï áâப¨
2619
		inc ecx ;à §¬¥à ¤ ­­ëå ¢ ¡ãä¥à¥ + ᨬ¢®« § ¢¥à襭¨ï áâப¨
2616
		mov ebx,ted_buffer
2620
		mov ebx,ted_buffer
2617
		mov dword[ebx],ecx
2621
		mov [ebx],ecx
2618
		mcall 54,2,ecx,ted_buffer
2622
		mcall SF_CLIPBOARD,SSF_WRITE_CB,ecx,ted_buffer
2619
		call ted_draw_buffer
2623
		call ted_draw_buffer
2620
		cmp ted_fun_draw_panel_buttons,0
2624
		cmp ted_fun_draw_panel_buttons,0
2621
		je .end_f
2625
		je .end_f
2622
			call ted_fun_draw_panel_buttons
2626
			call ted_fun_draw_panel_buttons
2623
	.end_f:
2627
	.end_f:
2624
	popad
2628
	popad
2625
	ret
2629
	ret
Line 2626... Line 2630...
2626
endp
2630
endp
2627
 
2631
 
2628
 
2632
 
2629
align 4
2633
align 16
Line 2630... Line 2634...
2630
proc ted_but_paste, edit:dword
2634
proc ted_but_paste, edit:dword
2631
	pushad
2635
	pushad
2632
	mov edi,dword[edit]
2636
	mov edi,[edit]
Line 2633... Line 2637...
2633
 
2637
 
2634
	mcall 54,0
2638
	mcall SF_CLIPBOARD,SSF_GET_SLOT_COUNT
2635
	cmp eax,1
2639
	cmp eax,1
2636
	jl .no_buf_r
2640
	jl .no_buf_r
2637
 
2641
 
2638
	mov esi,eax
2642
	mov esi,eax
2639
	.cycle: ;®¡à â­ë© 横« ¯® ᫮⠬
2643
	.cycle: ;®¡à â­ë© 横« ¯® ᫮⠬
2640
	dec esi ;­®¬¥à ⥪ã饣®, ¯à®¢¥à塞®£® á«®â 
2644
	dec esi ;­®¬¥à ⥪ã饣®, ¯à®¢¥à塞®£® á«®â 
2641
	mcall 54,1,esi ;read system buffer
2645
	mcall SF_CLIPBOARD,SSF_READ_CB,esi
Line 2668... Line 2672...
2668
		add	esi,4 ;12
2672
		add	esi,4 ;12
2669
		mov dword[edi],ecx
2673
		mov dword[edi],ecx
2670
		add edi,4 ;12
2674
		add edi,4 ;12
2671
		sub ecx,4 ;12
2675
		sub ecx,4 ;12
2672
		rep movsb
2676
		rep movsb
2673
		mov edi,dword[edit]
2677
		mov edi,[edit]
Line 2674... Line 2678...
2674
 
2678
 
2675
		mov esi,eax
2679
		mov esi,eax
2676
		add	esi,12
2680
		add	esi,12
2677
		jmp .buf_r
2681
		jmp .buf_r
Line 2704... Line 2708...
2704
	.no_paste:
2708
	.no_paste:
2705
	popad
2709
	popad
2706
	ret
2710
	ret
2707
endp
2711
endp
Line 2708... Line 2712...
2708
 
2712
 
2709
align 4
2713
align 16
2710
proc ted_but_sumb_upper uses edi esi, edit:dword
2714
proc ted_but_sumb_upper uses edi esi, edit:dword
Line 2711... Line 2715...
2711
	mov edi,dword[edit]
2715
	mov edi,[edit]
2712
 
2716
 
2713
	stdcall ted_convert_sel_text,fb_char_toupper
2717
	stdcall ted_convert_sel_text,fb_char_toupper
2714
	cmp esi,0
2718
	or esi,esi
2715
	je @f
2719
	jz @f
2716
		stdcall ted_draw,edi
2720
		stdcall ted_draw,edi
2717
	@@:
2721
	@@:
Line 2718... Line 2722...
2718
	ret
2722
	ret
2719
endp
2723
endp
2720
 
2724
 
Line 2721... Line 2725...
2721
align 4
2725
align 16
2722
proc ted_but_sumb_lover uses edi esi, edit:dword
2726
proc ted_but_sumb_lover uses edi esi, edit:dword
2723
	mov edi,dword[edit]
2727
	mov edi,[edit]
2724
 
2728
 
2725
	stdcall ted_convert_sel_text,fb_char_todown
2729
	stdcall ted_convert_sel_text,fb_char_todown
2726
	cmp esi,0
2730
	or esi,esi
2727
	je @f
2731
	jz @f
Line 2728... Line 2732...
2728
		stdcall ted_draw,edi
2732
		stdcall ted_draw,edi
2729
	@@:
2733
	@@:
2730
	ret
2734
	ret
Line 2731... Line 2735...
2731
endp
2735
endp
2732
 
2736
 
2733
align 4
2737
align 16
2734
proc ted_but_reverse uses eax ebx edi, edit:dword
2738
proc ted_but_reverse uses eax ebx edi, edit:dword
2735
	mov edi,dword[edit]
2739
	mov edi,[edit]
2736
 
2740
 
2737
	call ted_is_select
2741
	call ted_is_select
2738
	cmp al,0
2742
	or al,al
Line 2759... Line 2763...
2759
	@@:
2763
	@@:
2760
	stdcall ted_draw,edi
2764
	stdcall ted_draw,edi
2761
	ret
2765
	ret
2762
endp
2766
endp
Line 2763... Line 2767...
2763
 
2767
 
2764
align 4
2768
align 16
2765
proc ted_but_undo uses eax edi, edit:dword
2769
proc ted_but_undo uses eax edi, edit:dword
Line 2766... Line 2770...
2766
	mov edi,dword[edit]
2770
	mov edi,[edit]
2767
 
2771
 
2768
	mov eax,ted_tim_undo
2772
	mov eax,ted_tim_undo
2769
	cmp ted_tim_ch,eax
2773
	cmp ted_tim_ch,eax
Line 2776... Line 2780...
2776
			call ted_fun_draw_panel_buttons
2780
			call ted_fun_draw_panel_buttons
2777
	@@:
2781
	@@:
2778
	ret
2782
	ret
2779
endp
2783
endp
Line 2780... Line 2784...
2780
 
2784
 
2781
align 4
2785
align 16
2782
proc ted_but_redo uses edi, edit:dword
2786
proc ted_but_redo uses edi, edit:dword
Line 2783... Line 2787...
2783
	mov edi,dword[edit]
2787
	mov edi,[edit]
2784
 
2788
 
2785
	cmp ted_tim_undo,1
2789
	cmp ted_tim_undo,1
2786
	jb @f
2790
	jb @f
Line 2792... Line 2796...
2792
			call ted_fun_draw_panel_buttons
2796
			call ted_fun_draw_panel_buttons
2793
	@@:
2797
	@@:
2794
	ret
2798
	ret
2795
endp
2799
endp
Line 2796... Line 2800...
2796
 
2800
 
2797
align 4
2801
align 16
2798
proc ted_but_find_next, edit:dword
2802
proc ted_but_find_next, edit:dword
2799
	pushad
2803
	pushad
Line 2800... Line 2804...
2800
	mov edi,dword[edit]
2804
	mov edi,[edit]
2801
 
2805
 
2802
	call ted_get_pos_by_cursor
2806
	call ted_get_pos_by_cursor
2803
	mov eax,ted_buffer_find
2807
	mov eax,ted_buffer_find
Line 2836... Line 2840...
2836
	ret
2840
	ret
2837
endp
2841
endp
Line 2838... Line 2842...
2838
 
2842
 
2839
;input:
2843
;input:
2840
; edi = pointer to tedit struct
2844
; edi = pointer to tedit struct
2841
align 4
2845
align 16
2842
ted_key_ctrl_home:
2846
ted_key_ctrl_home:
2843
	mov ted_cur_x,0
2847
	mov ted_cur_x,0
2844
	mov ted_cur_y,0
2848
	mov ted_cur_y,0
2845
	push eax
2849
	push eax
Line 2855... Line 2859...
2855
	@@:
2859
	@@:
2856
	ret
2860
	ret
Line 2857... Line 2861...
2857
 
2861
 
2858
;input:
2862
;input:
2859
; edi = pointer to tedit struct
2863
; edi = pointer to tedit struct
2860
align 4
2864
align 16
2861
ted_key_ctrl_end:
2865
ted_key_ctrl_end:
2862
	push eax ebx
2866
	push eax ebx
2863
		call ted_get_num_lines
2867
		call ted_get_num_lines
2864
		mov ebx,ted_scr_w
2868
		mov ebx,ted_scr_w
Line 2879... Line 2883...
2879
	@@:
2883
	@@:
2880
	ret
2884
	ret
Line 2881... Line 2885...
2881
 
2885
 
2882
;input:
2886
;input:
2883
; edi = pointer to tedit struct
2887
; edi = pointer to tedit struct
2884
align 4
2888
align 16
2885
proc ted_sel_key_up
2889
proc ted_sel_key_up
2886
  cmp ted_drag_k,1
2890
  cmp ted_drag_k,1
2887
  je @f
2891
  je @f
2888
    call ted_sel_start
2892
    call ted_sel_start
Line 2900... Line 2904...
2900
  ret
2904
  ret
2901
endp
2905
endp
Line 2902... Line 2906...
2902
 
2906
 
2903
;input:
2907
;input:
2904
; edi = pointer to tedit struct
2908
; edi = pointer to tedit struct
2905
align 4
2909
align 16
2906
proc ted_sel_key_down
2910
proc ted_sel_key_down
2907
  cmp ted_drag_k,1
2911
  cmp ted_drag_k,1
2908
  je @f
2912
  je @f
2909
    call ted_sel_start
2913
    call ted_sel_start
Line 2921... Line 2925...
2921
  ret
2925
  ret
2922
endp
2926
endp
Line 2923... Line 2927...
2923
 
2927
 
2924
;input:
2928
;input:
2925
; edi = pointer to tedit struct
2929
; edi = pointer to tedit struct
2926
align 4
2930
align 16
2927
proc ted_sel_key_left
2931
proc ted_sel_key_left
2928
  cmp ted_drag_k,1
2932
  cmp ted_drag_k,1
2929
  je @f
2933
  je @f
2930
    call ted_sel_start
2934
    call ted_sel_start
Line 2949... Line 2953...
2949
  ret
2953
  ret
2950
endp
2954
endp
Line 2951... Line 2955...
2951
 
2955
 
2952
;input:
2956
;input:
2953
; edi = pointer to tedit struct
2957
; edi = pointer to tedit struct
2954
align 4
2958
align 16
2955
proc ted_sel_key_right
2959
proc ted_sel_key_right
2956
  cmp ted_drag_k,1
2960
  cmp ted_drag_k,1
2957
  je @f
2961
  je @f
2958
    call ted_sel_start
2962
    call ted_sel_start
Line 2979... Line 2983...
2979
 
2983
 
2980
;input:
2984
;input:
2981
; edi = pointer to tedit struct
2985
; edi = pointer to tedit struct
2982
;description:
2986
;description:
2983
; this function need to optimize output
2987
; this function need to optimize output
2984
align 4
2988
align 16
2985
proc ted_draw_cursor_sumb
2989
proc ted_draw_cursor_sumb
2986
pushad
-
 
2987
	mov eax,SF_DRAW_RECT
2990
pushad
2988
	mov ebx,ted_wnd_l
2991
	mov ebx,ted_wnd_l
2989
	add ebx,ted_rec_l
2992
	add ebx,ted_rec_l
2990
	mov edx,ted_cur_x
2993
	mov edx,ted_cur_x
2991
	imul edx,ted_rec_w
2994
	imul edx,ted_rec_w
Line 3000... Line 3003...
3000
	add ecx,edx
3003
	add ecx,edx
3001
	shl ecx,16
3004
	shl ecx,16
3002
	add ecx,ted_rec_h
3005
	add ecx,ted_rec_h
Line 3003... Line 3006...
3003
 
3006
 
3004
	mov edx,ted_color_wnd_work
-
 
3005
	push ecx
3007
	mov edx,ted_color_wnd_work
Line 3006... Line 3008...
3006
		call ted_sel_normalize
3008
	call ted_sel_normalize
3007
 
3009
 
3008
		mov esi,ted_scr_w
3010
	mov esi,ted_scr_w
3009
		mov ecx,dword[esi+sb_offs_position]
3011
	mov eax,[esi+sb_offs_position]
Line 3010... Line 3012...
3010
		sub ted_seln_y0,ecx
3012
	sub ted_seln_y0,eax
3011
		sub ted_seln_y1,ecx
3013
	sub ted_seln_y1,eax
3012
 
3014
 
3013
		mov ecx,ted_cur_y
3015
	mov eax,ted_cur_y
3014
		cmp ecx,ted_seln_y0
3016
	cmp eax,ted_seln_y0
3015
		jl .no_cur_sel
3017
	jl .no_cur_sel
3016
		cmp ecx,ted_seln_y1
-
 
3017
		jg .no_cur_sel
3018
	cmp eax,ted_seln_y1
3018
		mov edx,ted_color_select ;¬¥­ï¥¬ 梥â ä®­  ­  梥⠢뤥«¥­¨ï
3019
	jg .no_cur_sel
3019
    
3020
		mov edx,ted_color_select ;¬¥­ï¥¬ 梥â ä®­  ­  梥⠢뤥«¥­¨ï
3020
		mov esi,ted_scr_h
3021
		mov esi,ted_scr_h
3021
		cmp ecx,ted_seln_y0
3022
		cmp eax,ted_seln_y0
3022
		jne @f
3023
		jne @f
3023
			mov ecx,ted_cur_x
3024
			mov eax,ted_cur_x
3024
			add ecx,dword[esi+sb_offs_position]
3025
			add eax,[esi+sb_offs_position]
3025
			cmp ecx,ted_seln_x0
3026
			cmp eax,ted_seln_x0
3026
			jge @f
3027
			jge @f
3027
			mov edx,ted_color_wnd_work
3028
			mov edx,ted_color_wnd_work
3028
		@@:
3029
		@@:
3029
		mov ecx,ted_cur_y
3030
		mov eax,ted_cur_y
3030
		cmp ecx,ted_seln_y1
3031
		cmp eax,ted_seln_y1
3031
		jne .no_cur_sel
3032
		jne .no_cur_sel
3032
			mov ecx,ted_cur_x
3033
			mov eax,ted_cur_x
3033
			add ecx,dword[esi+sb_offs_position]
3034
			add eax,[esi+sb_offs_position]
3034
			cmp ecx,ted_seln_x1
3035
			cmp eax,ted_seln_x1
3035
			jl .no_cur_sel
3036
			jl .no_cur_sel
3036
			mov edx,ted_color_wnd_work
-
 
Line 3037... Line 3037...
3037
		.no_cur_sel:
3037
			mov edx,ted_color_wnd_work
3038
	pop ecx
3038
	.no_cur_sel:
3039
	int 0x40 ;à¨á®¢ ­¨¥ ¯àאַ㣮«ì­¨ª 
3039
	mcall SF_DRAW_RECT
3040
 
3040
 
Line 3057... Line 3057...
3057
; edx -> pointer to text
3057
; edx -> pointer to text
3058
; edi -> 㪠§ â¥«ì ­  áâàãªâãàã tedit
3058
; edi -> 㪠§ â¥«ì ­  áâàãªâãàã tedit
3059
;output:
3059
;output:
3060
; ecx = color
3060
; ecx = color
3061
; if ted_mode_color=0 then ecx=ted_color_wnd_text
3061
; if ted_mode_color=0 then ecx=ted_color_wnd_text
3062
align 4
3062
align 16
3063
ted_get_symb_color:
3063
ted_get_symb_color:
3064
	mov ecx,ted_color_wnd_text ;§ ¤ ¥¬ 梥â ⥪áâ  ¯® 㬮«ç ­¨î
3064
	mov ecx,ted_color_wnd_text ;§ ¤ ¥¬ 梥â ⥪áâ  ¯® 㬮«ç ­¨î
Line 3065... Line 3065...
3065
 
3065
 
3066
	push eax edx
3066
	push eax edx
Line 3092... Line 3092...
3092
;input:
3092
;input:
3093
; edx = pointer to text
3093
; edx = pointer to text
3094
; edi = pointer to tedit struct
3094
; edi = pointer to tedit struct
3095
;description:
3095
;description:
3096
; ”ã­ªæ¨ï ¯à¥®¡à §ã¥â ­¥¢¨¤¨¬ë¥ ᨬ¢®«ë ¢ ¯¥ç â ¥¬ë¥ ­  íªà ­¥
3096
; ”ã­ªæ¨ï ¯à¥®¡à §ã¥â ­¥¢¨¤¨¬ë¥ ᨬ¢®«ë ¢ ¯¥ç â ¥¬ë¥ ­  íªà ­¥
3097
align 4
3097
align 16
3098
ted_convert_invis_symb:
3098
ted_convert_invis_symb:
3099
	cmp ted_mode_invis,1
3099
	cmp ted_mode_invis,1
3100
	jne .end_f
3100
	jne .else
3101
		cmp byte[edx],9
3101
		cmp byte[edx],9
3102
		jne @f
3102
		jne @f
3103
			lea edx,[ted_symbol_tab]
3103
			lea edx,[ted_symbol_tab]
-
 
3104
			jmp .end_f
-
 
3105
align 4
3104
		@@:
3106
		@@:
3105
		cmp byte[edx],13
3107
		cmp byte[edx],13
3106
		jne @f
3108
		jne @f
3107
			mov edx,edi
3109
			mov edx,edi
3108
			add edx,ted_offs_symbol_new_line
3110
			add edx,ted_offs_symbol_new_line
3109
		@@:
3111
		@@:
-
 
3112
		jmp .end_f
-
 
3113
align 4
-
 
3114
	.else:
-
 
3115
		cmp byte[edx],9
-
 
3116
		je @f
-
 
3117
		cmp byte[edx],13
-
 
3118
		je @f
-
 
3119
			jmp .end_f
-
 
3120
		@@:
-
 
3121
			lea edx,[ted_symbol_space]
3110
	.end_f:
3122
	.end_f:
3111
	ret
3123
	ret
Line 3112... Line 3124...
3112
 
3124
 
3113
;input:
3125
;input:
3114
; edi = pointer to tedit struct
3126
; edi = pointer to tedit struct
3115
align 4
3127
align 16
3116
ted_scroll_set_redraw:
3128
ted_scroll_set_redraw:
3117
	push eax
3129
	push eax
3118
	mov eax,ted_scr_w
3130
	mov eax,ted_scr_w
3119
	mov dword[eax+sb_offs_redraw],1
3131
	mov dword[eax+sb_offs_redraw],1
3120
	mov eax,ted_scr_h
3132
	mov eax,ted_scr_h
3121
	mov dword[eax+sb_offs_redraw],1
3133
	mov dword[eax+sb_offs_redraw],1
3122
	pop eax
3134
	pop eax
Line 3123... Line 3135...
3123
	ret
3135
	ret
3124
 
3136
 
3125
align 4
3137
align 16
3126
proc ted_draw, edit:dword
3138
proc ted_draw, edit:dword
3127
	locals
3139
	locals
3128
		line_num dd ?
3140
		line_num dd ?
3129
	endl
3141
	endl
Line 3130... Line 3142...
3130
	pushad
3142
	pushad
3131
	mov edi,dword[edit]
3143
	mov edi,[edit]
3132
 
3144
 
Line 3141... Line 3153...
3141
	add ebx,ted_rec_t
3153
	add ebx,ted_rec_t
3142
	add ebx,0x10001 ;¤®¡ ¢«ï¥¬ ®âáâã¯ë ¤«ï ¢ëà ¢­¨¢ ­¨ï ¡ãª¢ë ¯® 業âàã
3154
	add ebx,0x10001 ;¤®¡ ¢«ï¥¬ ®âáâã¯ë ¤«ï ¢ëà ¢­¨¢ ­¨ï ¡ãª¢ë ¯® 業âàã
Line 3143... Line 3155...
3143
 
3155
 
3144
	call ted_sel_normalize ;need before draw select
3156
	call ted_sel_normalize ;need before draw select
3145
	mov esi,ted_scr_w
3157
	mov esi,ted_scr_w
3146
	mov esi,dword[esi+sb_offs_position]
3158
	mov esi,[esi+sb_offs_position]
Line 3147... Line 3159...
3147
	mov dword[line_num],esi
3159
	mov [line_num],esi
3148
 
3160
 
3149
	stdcall ted_clear_line_before_draw, edi,ebx,1,esi
3161
	stdcall ted_clear_line_before_draw, edi,ebx,1,esi
3150
	call ted_get_first_visible_pos
3162
	call ted_get_first_visible_pos
Line 3263... Line 3275...
3263
	ret
3275
	ret
3264
endp
3276
endp
Line 3265... Line 3277...
3265
 
3277
 
3266
;input:
3278
;input:
3267
; edi = pointer to tedit struct
3279
; edi = pointer to tedit struct
3268
align 4
3280
align 16
3269
proc ted_draw_main_cursor
3281
proc ted_draw_main_cursor
Line 3270... Line 3282...
3270
  pushad
3282
pushad
3271
 
3283
 
Line 3355... Line 3367...
3355
  sub edx,35
3367
	sub edx,35
3356
  ror edx,16
3368
	ror edx,16
3357
  ;add edx,3
3369
	;add edx,3
3358
  mov ebx,0x40000 ;Row=...
3370
	mov ebx,0x40000 ;Row=...
3359
  mov ecx,ted_scr_w
3371
	mov ecx,ted_scr_w
3360
  mov ecx,dword[ecx+sb_offs_position]
3372
	mov ecx,[ecx+sb_offs_position]
3361
  add ecx,ted_cur_y
3373
	add ecx,ted_cur_y
3362
  inc ecx
3374
	inc ecx
Line 3363... Line 3375...
3363
 
3375
 
3364
push edi
3376
push edi
3365
  mov edi,ted_color_wnd_work
3377
	mov edi,ted_color_wnd_work
3366
  int 0x40 ;¢ë¢®¤ ç¨á«  ⥪ã饩 áâப¨
3378
	int 0x40 ;¢ë¢®¤ ç¨á«  ⥪ã饩 áâப¨
Line 3367... Line 3379...
3367
pop edi
3379
pop edi
3368
 
3380
 
3369
  ;mov ebx,0x40000 ;Col=...
3381
	;mov ebx,0x40000 ;Col=...
3370
  mov ecx,ted_scr_h
3382
	mov ecx,ted_scr_h
3371
  mov ecx,dword[ecx+sb_offs_position]
3383
	mov ecx,[ecx+sb_offs_position]
3372
  add ecx,ted_cur_x
3384
	add ecx,ted_cur_x
3373
  inc ecx
3385
	inc ecx
3374
  add edx,0x500000
3386
	add edx,0x500000
Line 3389... Line 3401...
3389
  ret
3401
	ret
3390
endp
3402
endp
Line 3391... Line 3403...
3391
 
3403
 
3392
;input:
3404
;input:
-
 
3405
; edi = pointer to tedit struct
3393
; edi = pointer to tedit struct
3406
align 16
3394
proc ted_draw_buffer
3407
proc ted_draw_buffer
Line 3395... Line 3408...
3395
	pushad
3408
	pushad
3396
 
3409
 
Line 3435... Line 3448...
3435
	ret
3448
	ret
3436
endp
3449
endp
Line 3437... Line 3450...
3437
 
3450
 
3438
;input:
3451
;input:
3439
; edi = pointer to tedit struct
3452
; edi = pointer to tedit struct
3440
align 4
3453
align 16
3441
proc ted_draw_help_f1
3454
proc ted_draw_help_f1
3442
	pushad
3455
	pushad
3443
	cmp ted_rec_t,13 ;¬¨­¨¬ «ì­ ï ¢ëá®â  ¤«ï à¨á®¢ ­¨ï á¯à ¢ª¨
3456
	cmp ted_rec_t,13 ;¬¨­¨¬ «ì­ ï ¢ëá®â  ¤«ï à¨á®¢ ­¨ï á¯à ¢ª¨
3444
	jle @f
3457
	jle @f
Line 3470... Line 3483...
3470
		xor eax,eax
3483
		xor eax,eax
3471
		mov al,byte[edx+MAX_COLOR_WORD_LEN+7]
3484
		mov al,byte[edx+MAX_COLOR_WORD_LEN+7]
3472
		shl ax,2
3485
		shl ax,2
3473
		mov ecx,ted_text_colors
3486
		mov ecx,ted_text_colors
3474
		add ecx,eax
3487
		add ecx,eax
3475
		mov ecx,dword[ecx]
3488
		mov ecx,[ecx]
3476
		or	ecx,0xc0000000 ;SetTextStyles
3489
		or	ecx,0xc0000000 ;SetTextStyles
3477
		mov esi,edi
3490
		mov esi,edi
3478
		mcall SF_DRAW_TEXT,,,,,ted_color_wnd_work
3491
		mcall SF_DRAW_TEXT,,,,,ted_color_wnd_work
3479
		mov edi,esi
3492
		mov edi,esi
Line 3482... Line 3495...
3482
		call tl_strlen
3495
		call tl_strlen
Line 3483... Line 3496...
3483
 
3496
 
3484
		;*** draw help string ***
3497
		;*** draw help string ***
3485
		mov ecx,ted_color_wnd_bord
3498
		mov ecx,ted_color_wnd_bord
3486
		or ecx,0x80000000
3499
		or ecx,0x80000000
3487
		mov edx,dword[edx+MAX_COLOR_WORD_LEN]
3500
		mov edx,[edx+MAX_COLOR_WORD_LEN]
3488
		cmp edx,0
3501
		or edx,edx
3489
		je @f
3502
		jz @f
3490
			add edx,ted_help_text_f1
3503
			add edx,ted_help_text_f1
3491
			inc eax
3504
			inc eax
3492
			imul eax,6 ;è¨à¨­  ᨬ¢®«  ¢ á¨áâ. èà¨äâ¥
3505
			imul eax,6 ;è¨à¨­  ᨬ¢®«  ¢ á¨áâ. èà¨äâ¥
3493
			shl eax,16			
3506
			shl eax,16			
Line 3498... Line 3511...
3498
	ret
3511
	ret
3499
endp
3512
endp
Line 3500... Line 3513...
3500
 
3513
 
3501
;input:
3514
;input:
3502
; edi = pointer to tedit struct
3515
; edi = pointer to tedit struct
3503
align 4
3516
align 16
3504
proc ted_draw_line_numbers
3517
proc ted_draw_line_numbers
3505
pushad
3518
pushad
3506
	;top panel with caption
3519
	;top panel with caption
3507
	mov ebx,ted_wnd_l
3520
	mov ebx,ted_wnd_l
Line 3517... Line 3530...
3517
	mcall SF_DRAW_RECT
3530
	mcall SF_DRAW_RECT
Line 3518... Line 3531...
3518
 
3531
 
3519
	;line numbers
3532
	;line numbers
3520
	mov ebx,0x40000 ;format
3533
	mov ebx,0x40000 ;format
3521
	mov ecx,ted_scr_w
3534
	mov ecx,ted_scr_w
3522
	mov ecx,dword[ecx+sb_offs_position]
3535
	mov ecx,[ecx+sb_offs_position]
3523
	inc ecx
3536
	inc ecx
3524
	mov edx,3
3537
	mov edx,3
3525
	add edx,ted_wnd_l
3538
	add edx,ted_wnd_l
3526
	rol edx,16
3539
	rol edx,16
Line 3539... Line 3552...
3539
	rol ecx,16
3552
	rol ecx,16
3540
	mov edx,ted_color_wnd_capt
3553
	mov edx,ted_color_wnd_capt
3541
	mcall SF_DRAW_RECT ;à¨á㥬 ¯àאַ㣮«ì­¨ª ¯®¤ ­®¬¥à®¬ áâப¨
3554
	mcall SF_DRAW_RECT ;à¨á㥬 ¯àאַ㣮«ì­¨ª ¯®¤ ­®¬¥à®¬ áâப¨
3542
pop edx ecx ebx
3555
pop edx ecx ebx
Line 3543... Line -...
3543
 
-
 
3544
		mov eax,47
3556
 
3545
		mov esi,ted_color_wnd_bord
3557
		mov esi,ted_color_wnd_bord
3546
		int 0x40 ;à¨á㥬 ­®¬¥à áâப¨
3558
		mcall SF_DRAW_NUMBER ;à¨á㥬 ­®¬¥à áâப¨
3547
		inc ecx
3559
		inc ecx
3548
		add edx,ted_rec_h
3560
		add edx,ted_rec_h
3549
		sub edx,ted_wnd_t
3561
		sub edx,ted_wnd_t
3550
		mov esi,edx
3562
		mov esi,edx
Line 3559... Line 3571...
3559
	ret
3571
	ret
3560
endp
3572
endp
Line 3561... Line 3573...
3561
 
3573
 
3562
;output:
3574
;output:
3563
; ah = symbol
3575
; ah = symbol
3564
align 4
3576
align 16
3565
proc KeyConvertToASCII, table:dword
-
 
3566
	push ebx
3577
proc KeyConvertToASCII uses ebx, table:dword
3567
	mov ebx,dword[table] ;convert scan to ascii
3578
	mov ebx,[table] ;convert scan to ascii
3568
	ror ax,8
3579
	ror ax,8
3569
	xor ah,ah
3580
	xor ah,ah
3570
	add bx,ax ;? ebx,eax
3581
	add bx,ax ;? ebx,eax
3571
	mov ah,byte[ebx]
-
 
3572
	pop ebx
3582
	mov ah,byte[ebx]
3573
	ret
3583
	ret
Line 3574... Line 3584...
3574
endp
3584
endp
3575
 
3585
 
3576
align 4
3586
align 16
3577
proc ted_draw_cur_line, edit:dword
3587
proc ted_draw_cur_line, edit:dword
Line 3578... Line 3588...
3578
  pushad
3588
pushad
3579
    mov edi,dword[edit]
3589
	mov edi,[edit]
3580
 
3590
 
3581
    mov ebx,ted_wnd_l
3591
	mov ebx,ted_wnd_l
Line 3589... Line 3599...
3589
	add ebx,0x10001   ;¤®¡ ¢«ï¥¬ ®âáâã¯ë ¤«ï ¢ëà ¢­¨¢ ­¨ï ¡ãª¢ë ¯® 業âàã
3599
	add ebx,0x10001   ;¤®¡ ¢«ï¥¬ ®âáâã¯ë ¤«ï ¢ëà ¢­¨¢ ­¨ï ¡ãª¢ë ¯® 業âàã
Line 3590... Line 3600...
3590
 
3600
 
3591
    call ted_sel_normalize ;need before draw select
3601
	call ted_sel_normalize ;need before draw select
3592
	mov ecx,ted_cur_y
3602
	mov ecx,ted_cur_y
3593
	mov eax,ted_scr_w
3603
	mov eax,ted_scr_w
3594
    add ecx,dword[eax+sb_offs_position]
3604
	add ecx,[eax+sb_offs_position]
Line 3595... Line 3605...
3595
    stdcall ted_clear_line_before_draw,edi,ebx,1,ecx
3605
	stdcall ted_clear_line_before_draw,edi,ebx,1,ecx
3596
 
3606
 
3597
    mov eax,ted_scr_h
3607
	mov eax,ted_scr_h
Line 3598... Line 3608...
3598
	mov esi,dword[eax+sb_offs_position]
3608
	mov esi,[eax+sb_offs_position]
3599
    call ted_get_pos_by_coords
3609
	call ted_get_pos_by_coords
3600
 
-
 
3601
  cmp ted_gp_opt,2
3610
 
3602
  jne .no_draw_text
3611
	cmp ted_gp_opt,2
3603
;  mov eax,SF_DRAW_TEXT
3612
	jne .no_draw_text
3604
  call ted_get_symb_color
3613
	call ted_get_symb_color
3605
  mov esi,1 ;draw 1 symbol
3614
	mov esi,1 ;draw 1 symbol
Line 3625... Line 3634...
3625
 mov edx,edi
3634
			mov edx,edi
3626
 add edx,ted_offs_symbol_new_line
3635
			add edx,ted_offs_symbol_new_line
3627
 int 0x40
3636
			int 0x40
3628
 pop edx
3637
			pop edx
3629
      jmp .no_draw_text
3638
			jmp .no_draw_text
-
 
3639
align 4
3630
    .no_13:
3640
		.no_13:
Line 3631... Line 3641...
3631
 
3641
 
3632
    int 0x40
3642
		int 0x40
3633
    ror ebx,16
3643
		ror ebx,16
Line 3637... Line 3647...
3637
    cmp bx,ax
3647
		cmp bx,ax
3638
    jge .no_draw_text ;Opt
3648
		jge .no_draw_text ;Opt
3639
    ror ebx,16
3649
		ror ebx,16
3640
    call ted_iterat_next
3650
		call ted_iterat_next
3641
    jmp @b
3651
		jmp @b
-
 
3652
align 4
3642
  .no_draw_text:
3653
	.no_draw_text:
Line 3643... Line 3654...
3643
 
3654
 
3644
  call ted_draw_main_cursor
3655
	call ted_draw_main_cursor
3645
  popad
3656
popad
Line 3658... Line 3669...
3658
;description:
3669
;description:
3659
; ”ã­ªæ¨ï ¯à®¢¥àï¥â ᮢ¯ ¤ ¥â «¨ ⥪áâ ¢ ¡ãä¥à¥ eax
3670
; ”ã­ªæ¨ï ¯à®¢¥àï¥â ᮢ¯ ¤ ¥â «¨ ⥪áâ ¢ ¡ãä¥à¥ eax
3660
; á ⥪á⮬ । ªâ®à  ¯® 㪠§ â¥«î edx.
3671
; á ⥪á⮬ । ªâ®à  ¯® 㪠§ â¥«î edx.
3661
; ‘â ­¤ àâ­ë¥ ä㭪樨 (­ ¯à. strcmp) âãâ ­¥ ¯®¤®©¤ãâ, ¯®â®¬ã çâ®
3672
; ‘â ­¤ àâ­ë¥ ä㭪樨 (­ ¯à. strcmp) âãâ ­¥ ¯®¤®©¤ãâ, ¯®â®¬ã çâ®
3662
; ¢ ¯ ¬ï⨠। ªâ®à  ⥪áâ ᮤ¥à¦¨âáï ­¥ ¢ ¢¨¤¥ ascii áâப.
3673
; ¢ ¯ ¬ï⨠। ªâ®à  ⥪áâ ᮤ¥à¦¨âáï ­¥ ¢ ¢¨¤¥ ascii áâப.
3663
align 4
3674
align 16
3664
ted_get_find_rezult:
3675
ted_get_find_rezult:
3665
  push eax
3676
push eax
3666
    mov bh,1
3677
	mov bh,1
3667
    mov esi,edx ;copy edx
3678
	mov esi,edx ;copy edx
3668
    @@:
3679
	@@:
3669
      cmp byte[edx],bl
3680
		cmp byte[edx],bl
3670
      jne .no_text
3681
		jne .no_text
Line 3671... Line 3682...
3671
 
3682
 
3672
      inc eax ;*** get next symbol (in find text) ***
3683
		inc eax ;*** get next symbol (in find text) ***
3673
      mov bl,byte[eax]
3684
		mov bl,byte[eax]
3674
      cmp bl,0
3685
		or bl,bl
Line 3675... Line 3686...
3675
      je @f ;end of find text
3686
		jz @f ;end of find text
3676
 
3687
 
3677
      call ted_iterat_next ;*** get next symbol (in editor text) ***
3688
		call ted_iterat_next ;*** get next symbol (in editor text) ***
Line 3678... Line 3689...
3678
      cmp edx,ted_tex_1
3689
		cmp edx,ted_tex_1
-
 
3690
		jle @f ;end of editor text
3679
      jle @f ;end of editor text
3691
 
3680
 
3692
		jmp @b
3681
      jmp @b
3693
align 4
3682
      .no_text:
3694
		.no_text:
3683
	xor bh,bh
3695
	xor bh,bh
3684
	mov edx,esi ;restore edx
3696
	mov edx,esi ;restore edx
3685
    @@:
3697
	@@:
Line 3686... Line 3698...
3686
  pop eax
3698
pop eax
3687
  mov bl,byte[eax] ;restore bl
3699
	mov bl,byte[eax] ;restore bl
3688
  ret
3700
	ret
3689
 
3701
 
3690
;input:
3702
;input:
3691
;  clear_o - ¥á«¨ =1 ®ç¨áâ¨âì ®¤­ã áâபã, =0 ®ç¨áâ¨âì ¢á¥ áâப¨ ®ª­  ¤® ­¨§ã
3703
;  clear_o - ¥á«¨ =1 ®ç¨áâ¨âì ®¤­ã áâபã, =0 ®ç¨áâ¨âì ¢á¥ áâப¨ ®ª­  ¤® ­¨§ã
3692
align 4
3704
align 16
3693
proc ted_clear_line_before_draw, edit:dword, coords:dword, clear_o:dword, numb_lin:dword
3705
proc ted_clear_line_before_draw, edit:dword, coords:dword, clear_o:dword, numb_lin:dword
Line 3694... Line 3706...
3694
	pushad
3706
	pushad
3695
	mov edi,dword[edit]
3707
	mov edi,[edit]
3696
	mov ebx,dword[coords]	;ebx = x*2^16+y coords to left up point clear line
3708
	mov ebx,[coords] ;ebx = x*2^16+y coords to left up point clear line
3697
	mov esi,dword[numb_lin] ;esi - number text line
3709
	mov esi,[numb_lin] ;esi - number text line
Line 3754... Line 3766...
3754
	cmp ted_seln_y0,esi
3766
	cmp ted_seln_y0,esi
3755
	jne @f
3767
	jne @f
3756
		push bx esi
3768
		push bx esi
3757
		mov edx,ted_seln_x0 ; ¢¥àå­ïï ¯®«®á  (§ â¨à ¥â á«¥¢ )
3769
		mov edx,ted_seln_x0 ; ¢¥àå­ïï ¯®«®á  (§ â¨à ¥â á«¥¢ )
3758
		mov esi,ted_scr_h
3770
		mov esi,ted_scr_h
3759
		cmp edx,dword[esi+sb_offs_position]
3771
		cmp edx,[esi+sb_offs_position]
3760
		jle .in_wnd
3772
		jle .in_wnd
3761
			sub edx,dword[esi+sb_offs_position]
3773
			sub edx,[esi+sb_offs_position]
3762
			imul edx,ted_rec_w
3774
			imul edx,ted_rec_w
3763
			mov bx,dx
3775
			mov bx,dx
3764
			jmp .no_wnd
3776
			jmp .no_wnd
3765
		.in_wnd:
3777
		.in_wnd:
3766
		mov bx,0
3778
		mov bx,0
Line 3773... Line 3785...
3773
	jne @f
3785
	jne @f
3774
		;push esi
3786
		;push esi
3775
		;¥á«¨ ¢ë¤¥«¥­ ¢¥áì ä ©« âãâ ¬®¦­® ᤥ« âì ¢ë室, ­® ⮣¤  ­ã¦­® ¢ëè¥ ã¡à âì jmp .no_select
3787
		;¥á«¨ ¢ë¤¥«¥­ ¢¥áì ä ©« âãâ ¬®¦­® ᤥ« âì ¢ë室, ­® ⮣¤  ­ã¦­® ¢ëè¥ ã¡à âì jmp .no_select
3776
		mov edx,ted_seln_x1 ; ­¨¦­ïï ¯®«®á  (§ â¨à ¥â á¯à ¢ )
3788
		mov edx,ted_seln_x1 ; ­¨¦­ïï ¯®«®á  (§ â¨à ¥â á¯à ¢ )
3777
		mov esi,ted_scr_h
3789
		mov esi,ted_scr_h
3778
		cmp edx,dword[esi+sb_offs_position]
3790
		cmp edx,[esi+sb_offs_position]
3779
		jle .in_wnd2
3791
		jle .in_wnd2
3780
			sub edx,dword[esi+sb_offs_position]
3792
			sub edx,[esi+sb_offs_position]
3781
			imul edx,ted_rec_w
3793
			imul edx,ted_rec_w
3782
			sub bx,dx
3794
			sub bx,dx
3783
			shl edx,16
3795
			shl edx,16
3784
			add ebx,edx
3796
			add ebx,edx
3785
		.in_wnd2:
3797
		.in_wnd2:
Line 3797... Line 3809...
3797
; edi = pointer to tedit struct
3809
; edi = pointer to tedit struct
3798
;output:
3810
;output:
3799
; ecx = ­®¢ë© 梥â ᨬ¢®« 
3811
; ecx = ­®¢ë© 梥â ᨬ¢®« 
3800
; edx = pointer to symbol
3812
; edx = pointer to symbol
3801
; edx = 0 if text not in screen
3813
; edx = 0 if text not in screen
3802
align 4
3814
align 16
3803
ted_get_first_visible_pos:
3815
ted_get_first_visible_pos:
3804
	push eax ecx
3816
	push eax ecx
3805
	mov eax,ted_scr_w
3817
	mov eax,ted_scr_w
3806
	mov edx,ted_tex
3818
	mov edx,ted_tex
3807
	xor ecx,ecx
3819
	xor ecx,ecx
3808
	@@:
3820
	@@:
3809
		cmp ecx,dword[eax+sb_offs_position]
3821
		cmp ecx,[eax+sb_offs_position]
3810
		je @f
3822
		je @f
3811
		call ted_iterat_next
3823
		call ted_iterat_next
3812
		cmp edx,ted_tex_1
3824
		cmp edx,ted_tex_1
3813
		jle @f
3825
		jle @f
3814
		cmp byte[edx],13
3826
		cmp byte[edx],13
Line 3816... Line 3828...
3816
		inc ecx
3828
		inc ecx
3817
		jmp @b
3829
		jmp @b
3818
align 4
3830
align 4
3819
	@@:
3831
	@@:
Line 3820... Line 3832...
3820
 
3832
 
3821
	cmp ecx,dword[eax+sb_offs_position]
3833
	cmp ecx,[eax+sb_offs_position]
3822
	je @f
3834
	je @f
3823
		xor edx,edx
3835
		xor edx,edx
3824
	@@:
3836
	@@:
3825
	cmp ecx,dword[eax+sb_offs_max_area]
3837
	cmp ecx,[eax+sb_offs_max_area]
3826
	jle @f
3838
	jle @f
3827
		mov dword[eax+sb_offs_max_area],ecx
3839
		mov [eax+sb_offs_max_area],ecx
3828
	@@:
3840
	@@:
3829
	pop ecx eax
3841
	pop ecx eax
3830
	call ted_opt_draw_line_left
3842
	call ted_opt_draw_line_left
Line 3836... Line 3848...
3836
;output:
3848
;output:
3837
; ecx = 梥â ᨬ¢®« 
3849
; ecx = 梥â ᨬ¢®« 
3838
; edx = 㪠§ â¥«ì ­  ¯¥à¢ë© «¥¢ë© ᨬ¢®«
3850
; edx = 㪠§ â¥«ì ­  ¯¥à¢ë© «¥¢ë© ᨬ¢®«
3839
;description:
3851
;description:
3840
; äã­ªæ¨ï ­ã¦­  ¤«ï ®¯â¨¬¨§ æ¨¨ ¢ë¢®¤  ⥪áâ 
3852
; äã­ªæ¨ï ­ã¦­  ¤«ï ®¯â¨¬¨§ æ¨¨ ¢ë¢®¤  ⥪áâ 
3841
align 4
3853
align 16
3842
proc ted_opt_draw_line_left uses ebx
3854
proc ted_opt_draw_line_left uses ebx
3843
	mov ebx,ted_scr_h
3855
	mov ebx,ted_scr_h
3844
	mov ebx,dword[ebx+sb_offs_position]
3856
	mov ebx,[ebx+sb_offs_position]
3845
	or ebx,ebx
3857
	or ebx,ebx
3846
	jz .ret_f
3858
	jz .ret_f
3847
	push eax
3859
	push eax
3848
	mov eax,edx
3860
	mov eax,edx
Line 3876... Line 3888...
3876
jge .no_color
3888
jge .no_color
3877
	xor ecx,ecx
3889
	xor ecx,ecx
3878
	mov cl,byte[edx+1]
3890
	mov cl,byte[edx+1]
3879
	shl cx,2
3891
	shl cx,2
3880
	add ecx,ted_text_colors
3892
	add ecx,ted_text_colors
3881
	mov ecx,dword[ecx]
3893
	mov ecx,[ecx]
3882
.no_color:
3894
.no_color:
3883
;--------------------------------------
3895
;--------------------------------------
3884
		mov eax,edx
3896
		mov eax,edx
3885
		call ted_iterat_next
3897
		call ted_iterat_next
3886
		dec ebx
3898
		dec ebx
Line 3900... Line 3912...
3900
;output:
3912
;output:
3901
; ecx = symbol color
3913
; ecx = symbol color
3902
; edx = pointer to 13 symbol
3914
; edx = pointer to 13 symbol
3903
;description:
3915
;description:
3904
; äã­ªæ¨ï ­ã¦­  ¤«ï ®¯â¨¬¨§ æ¨¨ ¢ë¢®¤  ⥪áâ 
3916
; äã­ªæ¨ï ­ã¦­  ¤«ï ®¯â¨¬¨§ æ¨¨ ¢ë¢®¤  ⥪áâ 
3905
align 4
3917
align 16
3906
proc ted_opt_draw_line_right
3918
proc ted_opt_draw_line_right
3907
	push eax
3919
	push eax
3908
	mov eax,edx
3920
	mov eax,edx
3909
	@@:
3921
	@@:
3910
		cmp edx,ted_tex_1
3922
		cmp edx,ted_tex_1
Line 3920... Line 3932...
3920
 
3932
 
3921
	pop eax
3933
	pop eax
3922
	ret
3934
	ret
Line 3923... Line 3935...
3923
endp
3935
endp
3924
 
3936
 
3925
align 4
3937
align 16
3926
proc ted_mouse, edit:dword
3938
proc ted_mouse, edit:dword
Line 3927... Line 3939...
3927
	pushad
3939
	pushad
3928
	mov edi,dword[edit]
3940
	mov edi,[edit]
3929
 
3941
 
Line 3930... Line 3942...
3930
	;®¡à ¡ â뢠¥¬ áªà®««¨­£¨
3942
	;®¡à ¡ â뢠¥¬ áªà®««¨­£¨
3931
	mov edx,ted_scr_h
3943
	mov edx,ted_scr_h
Line 3932... Line 3944...
3932
	mov ecx,ted_scr_w
3944
	mov ecx,ted_scr_w
3933
 
3945
 
3934
	cmp word[edx+sb_offs_delta2],0
3946
	cmp word[edx+sb_offs_delta2],0
3935
	jne .horizontal
3947
	jne .horizontal
3936
 
3948
 
3937
	mov eax,dword[ecx+sb_offs_max_area]
3949
	mov eax,[ecx+sb_offs_max_area]
3938
	cmp eax,dword[ecx+sb_offs_cur_area]
3950
	cmp eax,[ecx+sb_offs_cur_area]
Line 3946... Line 3958...
3946
		jmp .no_in_wnd
3958
		jmp .no_in_wnd
3947
	@@:
3959
	@@:
3948
	cmp word[ecx+sb_offs_delta2],0
3960
	cmp word[ecx+sb_offs_delta2],0
3949
	jne .no_in_wnd
3961
	jne .no_in_wnd
3950
	.horizontal:
3962
	.horizontal:
3951
	mov eax,dword[edx+sb_offs_max_area]
3963
	mov eax,[edx+sb_offs_max_area]
3952
	cmp eax,dword[edx+sb_offs_cur_area]
3964
	cmp eax,[edx+sb_offs_cur_area]
3953
	jbe .other
3965
	jbe .other
3954
	; mouse event for Horizontal ScrollBar
3966
	; mouse event for Horizontal ScrollBar
3955
	stdcall scroll_bar_horizontal.mouse,edx ;[scrollbar_hor_mouse]
3967
	stdcall scroll_bar_horizontal.mouse,edx ;[scrollbar_hor_mouse]
3956
	cmp dword[edx+sb_offs_redraw],0
3968
	cmp dword[edx+sb_offs_redraw],0
3957
	je .other
3969
	je .other
Line 3963... Line 3975...
3963
	jne .no_in_wnd
3975
	jne .no_in_wnd
3964
	cmp word[edx+sb_offs_delta2],0
3976
	cmp word[edx+sb_offs_delta2],0
3965
	jne .no_in_wnd
3977
	jne .no_in_wnd
Line 3966... Line 3978...
3966
 
3978
 
3967
	;®¡à ¡ â뢠¥¬ ®ª­® । ªâ®à 
3979
	;®¡à ¡ â뢠¥¬ ®ª­® । ªâ®à 
3968
	mcall 37,2 ;get mouse buttons
3980
	mcall SF_MOUSE_GET,SSF_BUTTON
3969
	cmp al,1
3981
	cmp al,1
3970
	jne @f
3982
	jne @f
3971
		mcall 37,1 ;get mouse coords
3983
		mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
3972
		mov ebx,ted_wnd_t
3984
		mov ebx,ted_wnd_t
3973
		add ebx,ted_rec_t
3985
		add ebx,ted_rec_t
3974
		cmp ax,bx
3986
		cmp ax,bx
Line 3994... Line 4006...
3994
		call ted_draw_cursor_sumb
4006
		call ted_draw_cursor_sumb
3995
		call ted_wnd_main_click
4007
		call ted_wnd_main_click
3996
		jmp .no_in_wnd
4008
		jmp .no_in_wnd
3997
	@@:
4009
	@@:
3998
	mov edx,ted_el_focus
4010
	mov edx,ted_el_focus
3999
	cmp dword[edx],edi
4011
	cmp [edx],edi
4000
	jne @f
4012
	jne @f
4001
		call ted_wnd_main_mouse_scroll ;ᬮâਬ ­  ¯à®ªàãâªã ª®«¥á  ¬ëè¨
4013
		call ted_wnd_main_mouse_scroll ;ᬮâਬ ­  ¯à®ªàãâªã ª®«¥á  ¬ëè¨
4002
	@@:
4014
	@@:
4003
	cmp ted_drag_m,0
4015
	cmp ted_drag_m,0
4004
	je .no_in_wnd
4016
	je .no_in_wnd
Line 4015... Line 4027...
4015
;input:
4027
;input:
4016
; eax -> (x,y)
4028
; eax -> (x,y)
4017
; edi -> 㪠§ â¥«ì ­  áâàãªâãàã tedit
4029
; edi -> 㪠§ â¥«ì ­  áâàãªâãàã tedit
4018
;description:
4030
;description:
4019
; äã­ªæ¨ï ¢ë§ë¢¥âáï ¯à¨ ­ ¦ â¨¨ ª­®¯ª®© ¬ëè¨ ¨ ¯®¯ ¤¥­¨¨ ªãàá®à®¬ ¢ ®ª­® । ªâ®à 
4031
; äã­ªæ¨ï ¢ë§ë¢¥âáï ¯à¨ ­ ¦ â¨¨ ª­®¯ª®© ¬ëè¨ ¨ ¯®¯ ¤¥­¨¨ ªãàá®à®¬ ¢ ®ª­® । ªâ®à 
4020
align 4
4032
align 16
4021
ted_wnd_main_click:
4033
ted_wnd_main_click:
4022
	push ebx ecx edx
4034
	push ebx ecx edx
4023
	mov ebx,ted_el_focus
4035
	mov ebx,ted_el_focus
4024
	mov dword[ebx],edi ;áâ ¢¨¬ 䮪ãá
4036
	mov [ebx],edi ;áâ ¢¨¬ 䮪ãá
Line 4025... Line 4037...
4025
 
4037
 
4026
	push eax
4038
	push eax
4027
		shr eax,16
4039
		shr eax,16
4028
		sub eax,ted_wnd_l
4040
		sub eax,ted_wnd_l
Line 4031... Line 4043...
4031
		xor edx,edx
4043
		xor edx,edx
4032
		mov ecx,ted_rec_w
4044
		mov ecx,ted_rec_w
4033
		div cx
4045
		div cx
4034
		;inc eax
4046
		;inc eax
4035
		mov ebx,ted_scr_h
4047
		mov ebx,ted_scr_h
4036
		cmp eax,dword[ebx+sb_offs_cur_area]
4048
		cmp eax,[ebx+sb_offs_cur_area]
4037
		jle @f
4049
		jle @f
4038
			mov eax,dword[ebx+sb_offs_cur_area]
4050
			mov eax,[ebx+sb_offs_cur_area]
4039
		@@:
4051
		@@:
4040
		;dec eax
4052
		;dec eax
4041
		mov ted_cur_x,eax
4053
		mov ted_cur_x,eax
4042
	pop eax
4054
	pop eax
Line 4049... Line 4061...
4049
		xor edx,edx
4061
		xor edx,edx
4050
		mov ecx,ted_rec_h
4062
		mov ecx,ted_rec_h
4051
		div cx
4063
		div cx
4052
		inc eax
4064
		inc eax
4053
		mov ebx,ted_scr_w
4065
		mov ebx,ted_scr_w
4054
		cmp eax,dword[ebx+sb_offs_cur_area]
4066
		cmp eax,[ebx+sb_offs_cur_area]
4055
		jle @f
4067
		jle @f
4056
			mov eax,dword[ebx+sb_offs_cur_area]
4068
			mov eax,[ebx+sb_offs_cur_area]
4057
		@@:
4069
		@@:
4058
		dec eax
4070
		dec eax
4059
		mov ted_cur_y,eax
4071
		mov ted_cur_y,eax
4060
	pop eax
4072
	pop eax
Line 4070... Line 4082...
4070
	pop edx ecx ebx
4082
	pop edx ecx ebx
4071
	ret
4083
	ret
Line 4072... Line 4084...
4072
 
4084
 
4073
;input:
4085
;input:
4074
; edi = pointer to tedit struct
4086
; edi = pointer to tedit struct
4075
align 4
4087
align 16
4076
ted_wnd_main_mouse_scroll:
4088
ted_wnd_main_mouse_scroll:
4077
	push eax ebx ecx
4089
	push eax ebx ecx
4078
	mcall 37,7 ;¯à®ªàã⪠ ª®«¥á  ¬ëè¨
4090
	mcall SF_MOUSE_GET,SSF_SCROLL_DATA
4079
	cmp ax,0
4091
	or ax,ax
4080
	je .no_scroll
4092
	jz .no_scroll
4081
		mov ecx,ted_scr_w
4093
		mov ecx,ted_scr_w
4082
		mov ebx,dword[ecx+sb_offs_position] ;copy old scroll position
4094
		mov ebx,[ecx+sb_offs_position] ;copy old scroll position
4083
		and eax,0xffff
4095
		and eax,0xffff
4084
		btr ax,15
4096
		btr ax,15
4085
		jae @f
4097
		jae @f
4086
			or eax,0xffff8000
4098
			or eax,0xffff8000
4087
		@@:
4099
		@@:
Line 4088... Line 4100...
4088
		add dword[ecx+sb_offs_position],eax
4100
		add [ecx+sb_offs_position],eax
4089
 
4101
 
4090
		mov eax,[ecx+sb_offs_position]
4102
		mov eax,[ecx+sb_offs_position]
4091
		cmp eax,[ecx+sb_offs_max_area]
4103
		cmp eax,[ecx+sb_offs_max_area]
4092
		jb @f
4104
		jb @f
4093
			mov dword[ecx+sb_offs_position],ebx ;if scroll position out of range
4105
			mov [ecx+sb_offs_position],ebx ;if scroll position out of range
4094
			jmp .no_scroll
4106
			jmp .no_scroll
4095
		@@:
4107
		@@:
4096
		stdcall ted_draw,edi
4108
		stdcall ted_draw,edi
4097
	.no_scroll:
4109
	.no_scroll:
Line 4098... Line 4110...
4098
	pop ecx ebx eax
4110
	pop ecx ebx eax
4099
	ret
4111
	ret
4100
 
4112
 
4101
align 4
4113
align 16
Line 4102... Line 4114...
4102
proc ted_save_file, edit:dword, file:dword, f_name:dword
4114
proc ted_save_file, edit:dword, file:dword, f_name:dword
4103
  pushad
4115
pushad
4104
  mov edi,dword[edit]
4116
	mov edi,[edit]
Line 4105... Line 4117...
4105
 
4117
 
4106
  stdcall ted_can_save,edi
4118
	stdcall ted_can_save,edi
4107
  cmp al,0
4119
	;or al,al
Line 4120... Line 4132...
4120
    mov bl,[edx]
4132
		mov bl,[edx]
4121
    mov byte[eax],bl
4133
		mov byte[eax],bl
4122
    inc eax
4134
		inc eax
4123
    inc ecx
4135
		inc ecx
4124
    jmp @b
4136
		jmp @b
-
 
4137
align 4
4125
  @@:
4138
	@@:
Line 4126... Line 4139...
4126
 
4139
 
4127
  cmp ecx,0
4140
	or ecx,ecx
4128
  je @f
4141
	jz @f
4129
    mov ebx,dword[file]
4142
		mov ebx,[file]
4130
    pop eax ;§ ¯¨á뢠¥¬ 㪠§ â¥«ì ­  ¢ë¤¥«¥­­ãî ¯ ¬ïâì
4143
		pop eax ;§ ¯¨á뢠¥¬ 㪠§ â¥«ì ­  ¢ë¤¥«¥­­ãî ¯ ¬ïâì
4131
    mov dword[ebx+16],eax
4144
		mov [ebx+16],eax
4132
    push eax ;®¡à â­® § ¯®¬¨­ ¥¬ 㪠§ â¥«ì ­  ¢ë¤¥«¥­­ãî ¯ ¬ïâì
-
 
4133
    mov eax,70
4145
		push eax ;®¡à â­® § ¯®¬¨­ ¥¬ 㪠§ â¥«ì ­  ¢ë¤¥«¥­­ãî ¯ ¬ïâì
4134
    mov dword[ebx], 2
4146
		mov dword[ebx], SSF_CREATE_FILE
4135
    mov dword[ebx+4], 0
4147
		mov dword[ebx+4], 0
4136
    mov dword[ebx+8], 0
4148
		mov dword[ebx+8], 0
4137
    mov dword[ebx+12], ecx
4149
		mov [ebx+12], ecx
4138
    mov  byte[ebx+20], 0
4150
		mov  byte[ebx+20], 0
4139
    push dword[f_name]
4151
		push dword[f_name]
4140
    pop dword[ebx+21]
4152
		pop dword[ebx+21]
Line 4141... Line 4153...
4141
    int 0x40
4153
		mcall SF_FILE
Line 4142... Line 4154...
4142
 
4154
 
4143
    mov ted_err_save,al
4155
		mov ted_err_save,al
4144
 
4156
 
4145
    cmp eax,0
4157
		or eax,eax
4146
    je .no_msg
4158
		jz .no_msg
4147
;    cmp eax,6
4159
		;cmp eax,6
4148
;    je @f
4160
		;je @f