Rev 7575 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7575 | Rev 7861 | ||
---|---|---|---|
1 | struct TexColViv |
1 | struct TexColViv |
2 | Text rb MAX_COLOR_WORD_LEN ; ñëîâî äëÿ ïîäñâåòêè |
2 | Text rb MAX_COLOR_WORD_LEN ; ñëîâî äëÿ ïîäñâåòêè |
3 | f1 dd 0 ; ñïðàâêà ïî ñëîâó |
3 | f1 dd 0 ; ñïðàâêà ïî ñëîâó |
4 | flags db ? ; f1+4 ôëàãè èñïîëüçóåìûå ïðè âûäåëåíèè |
4 | flags db ? ; f1+4 ôëàãè èñïîëüçóåìûå ïðè âûäåëåíèè |
5 | endc db ? ; f1+5 ñèìâîë êîíöà âûäåëåíèÿ (èñïîëüçóåòñÿ ïðè flags&4) |
5 | endc db ? ; f1+5 ñèìâîë êîíöà âûäåëåíèÿ (èñïîëüçóåòñÿ ïðè flags&4) |
6 | escc db ? ; f1+6 ýêðàíèðóþùèé ñèìâîë (èñïîëüçóåòñÿ ïðè flags&4) |
6 | escc db ? ; f1+6 ýêðàíèðóþùèé ñèìâîë (èñïîëüçóåòñÿ ïðè flags&4) |
7 | color db ? ; f1+7 íîìåð öâåòà |
7 | color db ? ; f1+7 íîìåð öâåòà |
8 | ends |
8 | ends |
9 | 9 | ||
10 | count_colors_text dd 1 |
10 | count_colors_text dd 1 |
11 | ColWords dd 0 |
11 | ColWords dd 0 |
12 | color_cursor dd ? |
12 | color_cursor dd ? |
13 | color_wnd_capt dd ? |
13 | color_wnd_capt dd ? |
14 | color_wnd_work dd ? |
14 | color_wnd_work dd ? |
15 | color_wnd_bord dd ? |
15 | color_wnd_bord dd ? |
16 | color_select dd ? |
16 | color_select dd ? |
17 | color_cur_text dd ? |
17 | color_cur_text dd ? |
18 | color_wnd_text dd ? |
18 | color_wnd_text dd ? |
19 | 19 | ||
20 | options_file dd 0 |
20 | options_file dd 0 |
21 | open_file_size dd 0 |
21 | open_file_size dd 0 |
22 | unpac_mem dd 0 |
22 | unpac_mem dd 0 |
23 | tex_colors dd 0 |
23 | tex_colors dd 0 |
24 | tex_help_f1 dd 0 |
24 | tex_help_f1 dd 0 |
25 | 25 | ||
26 | Col dd 0 ;óêàçàòåëü íà ñòðóêòóðû êëþ÷åâûõ ñëîâ TexColViv |
26 | Col dd 0 ;óêàçàòåëü íà ñòðóêòóðû êëþ÷åâûõ ñëîâ TexColViv |
27 | 27 | ||
28 | keyUpr dd 0 |
28 | keyUpr dd 0 |
29 | err_opn db 0 ;îøèáêà îòêðûòèÿ ôàéëà |
29 | err_opn db 0 ;îøèáêà îòêðûòèÿ ôàéëà |
30 | err_sav db 0 ;îøèáêà ñîõðàíåíèÿ ôàéëà |
30 | err_sav db 0 ;îøèáêà ñîõðàíåíèÿ ôàéëà |
31 | 31 | ||
32 | sc system_colors |
32 | sc system_colors |
33 | 33 | ||
34 | run_file_70 FileInfoBlock |
34 | run_file_70 FileInfoBlock |
35 | 35 | ||
36 | align 4 |
36 | align 4 |
37 | InitColText: |
37 | InitColText: |
38 | pushad |
38 | pushad |
39 | 39 | ||
40 | mov ebx,[fn_col_option] |
40 | mov ebx,[fn_col_option] |
41 | copy_path ebx,fn_syntax_dir,file_name_rez,0 |
41 | copy_path ebx,fn_syntax_dir,file_name_rez,0 |
42 | copy_path file_name_rez,sys_path,file_name,0 |
42 | copy_path file_name_rez,sys_path,file_name,0 |
43 | 43 | ||
44 | ;[fn_col_option] = '*.syn' |
44 | ;[fn_col_option] = '*.syn' |
45 | ;fn_syntax_dir = 'info/' |
45 | ;fn_syntax_dir = 'info/' |
46 | ;file_name_rez = 'info/*.syn' |
46 | ;file_name_rez = 'info/*.syn' |
47 | 47 | ||
48 | mov [run_file_70.Function], SSF_GET_INFO |
48 | mov [run_file_70.Function], SSF_GET_INFO |
49 | mov [run_file_70.Position], 0 |
49 | mov [run_file_70.Position], 0 |
50 | mov [run_file_70.Flags], 0 |
50 | mov [run_file_70.Flags], 0 |
51 | mov dword[run_file_70.Count], 0 |
51 | mov dword[run_file_70.Count], 0 |
52 | mov dword[run_file_70.Buffer], open_b |
52 | mov dword[run_file_70.Buffer], open_b |
53 | mov byte[run_file_70+20], 0 |
53 | mov byte[run_file_70+20], 0 |
54 | mov dword[run_file_70.FileName], file_name |
54 | mov dword[run_file_70.FileName], file_name |
55 | mcall SF_FILE,run_file_70 |
55 | mcall SF_FILE,run_file_70 |
56 | 56 | ||
57 | mov ecx,dword[open_b+32] ;+32 qword: ðàçìåð ôàéëà â áàéòàõ |
57 | mov ecx,dword[open_b+32] ;+32 qword: ðàçìåð ôàéëà â áàéòàõ |
58 | stdcall mem.ReAlloc,[options_file],ecx |
58 | stdcall mem.ReAlloc,[options_file],ecx |
59 | mov [options_file],eax |
59 | mov [options_file],eax |
60 | mov [open_file_size],ecx |
60 | mov [open_file_size],ecx |
61 | 61 | ||
62 | mov [run_file_70.Function], SSF_READ_FILE |
62 | mov [run_file_70.Function], SSF_READ_FILE |
63 | mov [run_file_70.Position], 0 |
63 | mov [run_file_70.Position], 0 |
64 | mov [run_file_70.Flags], 0 |
64 | mov [run_file_70.Flags], 0 |
65 | mov [run_file_70.Count], ecx |
65 | mov [run_file_70.Count], ecx |
66 | m2m dword[run_file_70.Buffer], dword[options_file] |
66 | m2m dword[run_file_70.Buffer], dword[options_file] |
67 | mov byte[run_file_70+20], 0 |
67 | mov byte[run_file_70+20], 0 |
68 | mov dword[run_file_70.FileName], file_name |
68 | mov dword[run_file_70.FileName], file_name |
69 | mcall SF_FILE,run_file_70 ;çàãðóæàåì ôàéë èçîáðàæåíèß |
69 | mcall SF_FILE,run_file_70 ;çàãðóæàåì ôàéë èçîáðàæåíèß |
70 | test eax,eax |
70 | test eax,eax |
71 | jnz .no_colors |
71 | jnz .no_colors |
72 | cmp ebx,0xffffffff |
72 | cmp ebx,0xffffffff |
73 | je .no_colors |
73 | je .no_colors |
74 | 74 | ||
75 | mcall SF_SET_CAPTION,1,file_name |
75 | mcall SF_SET_CAPTION,1,file_name |
76 | 76 | ||
77 | ;init: count_colors_text, ColWords, ... |
77 | ;init: count_colors_text, ColWords, ... |
78 | mov dword[count_colors_text],1 |
78 | mov dword[count_colors_text],1 |
79 | mov dword[ColWords],0 |
79 | mov dword[ColWords],0 |
80 | mov dword[tex_help_f1],0 |
80 | mov dword[tex_help_f1],0 |
81 | 81 | ||
82 | mov edi,[options_file] |
82 | mov edi,[options_file] |
83 | cmp dword[edi],'KPCK' |
83 | cmp dword[edi],'KPCK' |
84 | jne .end_unpack |
84 | jne .end_unpack |
85 | ;notify_window_run ... |
85 | ;notify_window_run ... |
86 | mov ecx,[edi+4] |
86 | mov ecx,[edi+4] |
87 | cmp [open_file_size],ecx |
87 | cmp [open_file_size],ecx |
88 | jge @f |
88 | jge @f |
89 | ;åñëè äëß ðàñïàêîâàíîãî ôàéëà íå õâàòàåò âûäåëåííîé ïàìßòè |
89 | ;åñëè äëß ðàñïàêîâàíîãî ôàéëà íå õâàòàåò âûäåëåííîé ïàìßòè |
90 | stdcall mem.ReAlloc,edi,ecx |
90 | stdcall mem.ReAlloc,edi,ecx |
91 | mov [options_file],eax |
91 | mov [options_file],eax |
92 | mov [open_file_size],ecx |
92 | mov [open_file_size],ecx |
93 | @@: |
93 | @@: |
94 | ;âûäåëåíèå ïàìßòè äëß ðàñïàêîâêè ôàéëà |
94 | ;âûäåëåíèå ïàìßòè äëß ðàñïàêîâêè ôàéëà |
95 | stdcall mem.ReAlloc,[unpac_mem],ecx |
95 | stdcall mem.ReAlloc,[unpac_mem],ecx |
96 | mov [unpac_mem],eax |
96 | mov [unpac_mem],eax |
97 | 97 | ||
98 | stdcall unpack,[options_file],eax |
98 | stdcall unpack,[options_file],eax |
99 | mov edi,[options_file] |
99 | mov edi,[options_file] |
100 | mov esi,[unpac_mem] |
100 | mov esi,[unpac_mem] |
101 | mov ecx,[edi+4] |
101 | mov ecx,[edi+4] |
102 | cld |
102 | cld |
103 | rep movsb |
103 | rep movsb |
104 | .end_unpack: |
104 | .end_unpack: |
105 | mov esi,[options_file] |
105 | mov esi,[options_file] |
106 | mov edi,count_colors_text |
106 | mov edi,count_colors_text |
107 | mov ecx,9 |
107 | mov ecx,9 |
108 | rep movsd |
108 | rep movsd |
109 | 109 | ||
110 | mov eax,[options_file] |
110 | mov eax,[options_file] |
111 | add eax,32 |
111 | add eax,32 |
112 | mov [tex_colors],eax |
112 | mov [tex_colors],eax |
113 | 113 | ||
114 | mov eax,[count_colors_text] ;init: Col (offset to key words) |
114 | mov eax,[count_colors_text] ;init: Col (offset to key words) |
115 | add eax,8 |
115 | add eax,8 |
116 | shl eax,2 |
116 | shl eax,2 |
117 | add eax,[options_file] |
117 | add eax,[options_file] |
118 | mov [Col],eax |
118 | mov [Col],eax |
119 | 119 | ||
120 | ;init: tex_help_f1 |
120 | ;init: tex_help_f1 |
121 | mov ecx,[ColWords] |
121 | mov ecx,[ColWords] |
122 | imul ecx,sizeof.TexColViv |
122 | imul ecx,sizeof.TexColViv |
123 | add ecx,[Col] |
123 | add ecx,[Col] |
124 | mov [tex_help_f1],ecx |
124 | mov [tex_help_f1],ecx |
125 | 125 | ||
126 | ;ôîðìèðîâàíèå òåêñòà â îêíå òåêñòîâîãî ðåäàêòîðà |
126 | ;ôîðìèðîâàíèå òåêñòà â îêíå òåêñòîâîãî ðåäàêòîðà |
127 | stdcall [ted_clear], tedit0,1 |
127 | stdcall [ted_clear], tedit0,1 |
128 | 128 | ||
129 | stdcall print_capt,capt_header |
129 | stdcall print_capt,capt_header |
130 | 130 | ||
131 | stdcall print_capt,col_1 |
131 | stdcall print_capt,col_1 |
132 | stdcall print_color,[color_cursor] |
132 | stdcall print_color,[color_cursor] |
133 | stdcall print_capt,col_2 |
133 | stdcall print_capt,col_2 |
134 | stdcall print_color,[color_wnd_capt] |
134 | stdcall print_color,[color_wnd_capt] |
135 | stdcall print_capt,col_3 |
135 | stdcall print_capt,col_3 |
136 | stdcall print_color,[color_wnd_work] |
136 | stdcall print_color,[color_wnd_work] |
137 | stdcall print_capt,col_4 |
137 | stdcall print_capt,col_4 |
138 | stdcall print_color,[color_wnd_bord] |
138 | stdcall print_color,[color_wnd_bord] |
139 | stdcall print_capt,col_5 |
139 | stdcall print_capt,col_5 |
140 | stdcall print_color,[color_select] |
140 | stdcall print_color,[color_select] |
141 | stdcall print_capt,col_6 |
141 | stdcall print_capt,col_6 |
142 | stdcall print_color,[color_cur_text] |
142 | stdcall print_color,[color_cur_text] |
143 | 143 | ||
144 | stdcall print_capt,col_7 |
144 | stdcall print_capt,col_7 |
145 | mov ecx,[count_colors_text] ;êîëè÷åñòâî öâåòîâ òåêñòà |
145 | mov ecx,[count_colors_text] ;êîëè÷åñòâî öâåòîâ òåêñòà |
146 | mov eax,[tex_colors] |
146 | mov eax,[tex_colors] |
147 | @@: |
147 | @@: |
148 | stdcall print_capt,capt_type_dd |
148 | stdcall print_capt,capt_type_dd |
149 | stdcall print_color,[eax] |
149 | stdcall print_color,[eax] |
150 | add eax,4 |
150 | add eax,4 |
151 | loop @b |
151 | loop @b |
152 | 152 | ||
153 | stdcall print_capt,capt_lbl_wo |
153 | stdcall print_capt,capt_lbl_wo |
154 | mov ecx,[ColWords] |
154 | mov ecx,[ColWords] |
155 | mov eax,[Col] |
155 | mov eax,[Col] |
156 | xor ebx,ebx |
156 | xor ebx,ebx |
157 | @@: ;öèêë ïî ïîäñâå÷èâàåìûì ñëîâàì |
157 | @@: ;öèêë ïî ïîäñâå÷èâàåìûì ñëîâàì |
158 | inc ebx |
158 | inc ebx |
159 | stdcall print_word,eax,ebx |
159 | stdcall print_word,eax,ebx |
160 | add eax,sizeof.TexColViv |
160 | add eax,sizeof.TexColViv |
161 | loop @b |
161 | loop @b |
162 | 162 | ||
163 | stdcall print_capt,capt_lbl_f1 |
163 | stdcall print_capt,capt_lbl_f1 |
164 | mov ecx,[ColWords] |
164 | mov ecx,[ColWords] |
165 | mov eax,[Col] |
165 | mov eax,[Col] |
166 | xor ebx,ebx |
166 | xor ebx,ebx |
167 | @@: ;öèêë ïî ñïðàâêàì ê ïîäñâ. ñëîâàì |
167 | @@: ;öèêë ïî ñïðàâêàì ê ïîäñâ. ñëîâàì |
168 | inc ebx |
168 | inc ebx |
169 | stdcall print_word_f1,eax,ebx |
169 | stdcall print_word_f1,eax,ebx |
170 | add eax,sizeof.TexColViv |
170 | add eax,sizeof.TexColViv |
171 | loop @b |
171 | loop @b |
172 | 172 | ||
173 | ; ïîäãîòîâêà äëß PathShow |
173 | ; ïîäãîòîâêà äëß PathShow |
174 | stdcall [PathShow_prepare], PathShow_data_1 |
174 | stdcall [PathShow_prepare], PathShow_data_1 |
175 | call draw_window |
175 | call draw_window |
176 | 176 | ||
177 | .no_colors: |
177 | .no_colors: |
178 | popad |
178 | popad |
179 | ret |
179 | ret |
180 | 180 | ||
181 | align 4 |
181 | align 4 |
182 | proc print_color, color:dword |
182 | proc print_color, color:dword |
183 | pushad |
183 | pushad |
184 | mov eax,dword[color] |
184 | mov eax,dword[color] |
185 | 185 | ||
186 | mov ebx,eax ;ìåíÿåì ìåñòàìè red è blue |
186 | mov ebx,eax ;ìåíÿåì ìåñòàìè red è blue |
187 | shr ebx,16 |
187 | shr ebx,16 |
188 | xchg al,bl |
188 | xchg al,bl |
189 | and eax,0xffff |
189 | and eax,0xffff |
190 | and ebx,0xff |
190 | and ebx,0xff |
191 | shl ebx,16 |
191 | shl ebx,16 |
192 | or eax,ebx |
192 | or eax,ebx |
193 | 193 | ||
194 | ror al,4 |
194 | ror al,4 |
195 | ror eax,8 |
195 | ror eax,8 |
196 | ror al,4 |
196 | ror al,4 |
197 | ror eax,8 |
197 | ror eax,8 |
198 | ror al,4 |
198 | ror al,4 |
199 | rol eax,16 |
199 | rol eax,16 |
200 | mov edi,text_buffer |
200 | mov edi,text_buffer |
201 | mov word[edi],'0x' |
201 | mov word[edi],'0x' |
202 | add edi,2 |
202 | add edi,2 |
203 | mov ecx,6 |
203 | mov ecx,6 |
204 | @@: |
204 | @@: |
205 | mov ebx,eax |
205 | mov ebx,eax |
206 | and ebx,0xf |
206 | and ebx,0xf |
207 | cmp bx,9 |
207 | cmp bx,9 |
208 | jle .cifra |
208 | jle .cifra |
209 | add bx,39 |
209 | add bx,39 |
210 | .cifra: |
210 | .cifra: |
211 | add bx,48 |
211 | add bx,48 |
212 | mov byte[edi],bl |
212 | mov byte[edi],bl |
213 | inc edi |
213 | inc edi |
214 | shr eax,4 |
214 | shr eax,4 |
215 | loop @b |
215 | loop @b |
216 | mov byte[edi],13 |
216 | mov byte[edi],13 |
217 | mov ebx,ted_opt_ed_change_time+ted_opt_ed_move_cursor |
217 | mov ebx,ted_opt_ed_change_time+ted_opt_ed_move_cursor |
218 | stdcall [ted_text_add], tedit0,text_buffer,9,ebx |
218 | stdcall [ted_text_add], tedit0,text_buffer,9,ebx |
219 | popad |
219 | popad |
220 | ret |
220 | ret |
221 | endp |
221 | endp |
222 | 222 | ||
223 | align 4 |
223 | align 4 |
224 | proc print_capt, capt:dword |
224 | proc print_capt, capt:dword |
225 | pushad |
225 | pushad |
226 | mov esi,[capt] |
226 | mov esi,[capt] |
227 | stdcall str_len,esi |
227 | stdcall str_len,esi |
228 | stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_change_time+ted_opt_ed_move_cursor |
228 | stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_change_time+ted_opt_ed_move_cursor |
229 | popad |
229 | popad |
230 | ret |
230 | ret |
231 | endp |
231 | endp |
232 | 232 | ||
233 | align 4 |
233 | align 4 |
234 | proc print_word, text:dword, index:dword |
234 | proc print_word, text:dword, index:dword |
235 | pushad |
235 | pushad |
236 | mov edi,text_buffer |
236 | mov edi,text_buffer |
237 | mov byte[edi],0 |
237 | mov byte[edi],0 |
238 | stdcall str_cat,edi,capt_beg_word |
238 | stdcall str_cat,edi,capt_beg_word |
239 | stdcall str_len,edi |
239 | stdcall str_len,edi |
240 | add edi,eax |
240 | add edi,eax |
241 | 241 | ||
242 | mov ecx,[text] |
242 | mov ecx,[text] |
243 | stdcall code_string,ecx,edi ;êîäèðóåì ñòðîêó ñ êëþ÷åâûì ñëîâîì |
243 | stdcall code_string,ecx,edi ;êîäèðóåì ñòðîêó ñ êëþ÷åâûì ñëîâîì |
244 | stdcall str_cat,edi,capt_end_word |
244 | stdcall str_cat,edi,capt_end_word |
245 | 245 | ||
246 | cmp dword[ecx+TexColViv.f1],0 |
246 | cmp dword[ecx+TexColViv.f1],0 |
247 | je @f |
247 | je @f |
248 | stdcall str_cat,edi,capt_calc_f1 |
248 | stdcall str_cat_value,edi,[index] |
249 | stdcall str_cat_value,edi,[index] |
- | |
250 | stdcall str_cat,edi,capt_lbl_f1_use |
249 | @@: |
251 | @@: |
- | |
252 | 250 | ||
253 | stdcall str_len,edi |
251 | stdcall str_len,edi |
254 | add edi,eax |
252 | add edi,eax |
255 | mov word[edi],',' |
253 | mov word[edi],',' |
256 | inc edi |
254 | inc edi |
257 | movzx eax,byte[ecx+TexColViv.flags] |
255 | movzx eax,byte[ecx+TexColViv.flags] |
258 | stdcall str_cat_value,edi,eax |
256 | stdcall str_cat_value,edi,eax |
259 | stdcall str_len,edi |
257 | stdcall str_len,edi |
260 | add edi,eax |
258 | add edi,eax |
261 | mov word[edi],',' |
259 | mov word[edi],',' |
262 | inc edi |
260 | inc edi |
263 | 261 | ||
264 | movzx eax,word[ecx+TexColViv.endc] ;(escc shl 8)+endc |
262 | movzx eax,word[ecx+TexColViv.endc] ;(escc shl 8)+endc |
265 | or eax,eax ;ïðîâåðßåì åñòü ëè çàâåðøàþùèé è ýêðàíèíóþùèé ñèìâîë |
263 | or eax,eax ;ïðîâåðßåì åñòü ëè çàâåðøàþùèé è ýêðàíèíóþùèé ñèìâîë |
266 | jz @f |
264 | jz @f |
267 | stdcall str_cat_value,edi,eax |
265 | stdcall str_cat_value,edi,eax |
268 | stdcall str_len,edi |
266 | stdcall str_len,edi |
269 | add edi,eax |
267 | add edi,eax |
270 | @@: |
268 | @@: |
271 | mov word[edi],',' |
269 | mov word[edi],',' |
272 | inc edi |
270 | inc edi |
273 | 271 | ||
274 | movzx eax,byte[ecx+TexColViv.color] |
272 | movzx eax,byte[ecx+TexColViv.color] |
275 | stdcall str_cat_value,edi,eax |
273 | stdcall str_cat_value,edi,eax |
276 | stdcall str_len,edi |
274 | stdcall str_len,edi |
277 | add edi,eax |
275 | add edi,eax |
278 | mov word[edi],13 |
276 | mov word[edi],13 |
279 | 277 | ||
280 | mov esi,text_buffer |
278 | mov esi,text_buffer |
281 | stdcall str_len,esi |
279 | stdcall str_len,esi |
282 | stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_change_time+ted_opt_ed_move_cursor |
280 | stdcall [ted_text_add], tedit0,esi,eax,ted_opt_ed_change_time+ted_opt_ed_move_cursor |
283 | 281 | ||
284 | popad |
282 | popad |
285 | ret |
283 | ret |
286 | endp |
284 | endp |
287 | 285 | ||
288 | align 4 |
286 | align 4 |
289 | proc print_word_f1, text:dword, index:dword |
287 | proc print_word_f1, text:dword, index:dword |
290 | pushad |
288 | pushad |
291 | mov edi,[text] |
289 | mov edi,[text] |
292 | mov esi,[edi+TexColViv.f1] |
290 | mov esi,[edi+TexColViv.f1] |
293 | cmp esi,0 |
291 | cmp esi,0 |
294 | je @f |
292 | je @f |
295 | mov ebx,text_buffer |
293 | mov ebx,text_buffer |
296 | mov byte[ebx],0 |
294 | mov byte[ebx],0 |
297 | stdcall str_cat,ebx,capt_point |
295 | stdcall str_cat,ebx,capt_point |
298 | stdcall str_cat_value,ebx,[index] |
296 | stdcall str_cat_value,ebx,[index] |
299 | stdcall str_cat,ebx,capt_beg_db |
297 | stdcall str_cat,ebx,capt_beg_db |
300 | stdcall str_len,ebx |
298 | stdcall str_len,ebx |
301 | add ebx,eax |
299 | add ebx,eax |
302 | 300 | ||
303 | add esi,[tex_help_f1] |
301 | add esi,[tex_help_f1] |
304 | stdcall code_string,esi,ebx ;êîäèðóåì ñòðîêó |
302 | stdcall code_string,esi,ebx ;êîäèðóåì ñòðîêó |
305 | stdcall str_cat,ebx,capt_end_word_f1 |
303 | stdcall str_cat,ebx,capt_end_word_f1 |
306 | 304 | ||
307 | mov ebx,text_buffer |
305 | mov ebx,text_buffer |
308 | stdcall str_len,ebx |
306 | stdcall str_len,ebx |
309 | stdcall [ted_text_add], tedit0,ebx,eax,ted_opt_ed_move_cursor |
307 | stdcall [ted_text_add], tedit0,ebx,eax,ted_opt_ed_move_cursor |
310 | @@: |
308 | @@: |
311 | popad |
309 | popad |
312 | ret |
310 | ret |
313 | endp |
311 | endp |
314 | 312 | ||
315 | ;description: |
313 | ;description: |
316 | ; êîäèðîâêà ñòðîêè, çàìåíà íåïå÷àòàåìûõ ñèìâîëîâ íà ÷èñëîâûå êîäû |
314 | ; êîäèðîâêà ñòðîêè, çàìåíà íåïå÷àòàåìûõ ñèìâîëîâ íà ÷èñëîâûå êîäû |
317 | align 4 |
315 | align 4 |
318 | proc code_string, text:dword, out_text:dword |
316 | proc code_string, text:dword, out_text:dword |
319 | pushad |
317 | pushad |
320 | mov esi,[text] |
318 | mov esi,[text] |
321 | stdcall str_len,esi |
319 | stdcall str_len,esi |
322 | mov ecx,eax |
320 | mov ecx,eax |
323 | mov edi,[out_text] |
321 | mov edi,[out_text] |
324 | 322 | or ecx,ecx |
|
- | 323 | jz .end_copy ;åñëè ñòðîêà ñî ñïðàâêîé ïóñòàß |
|
- | 324 | ||
325 | .copy: |
325 | .copy: |
326 | mov al,byte[esi] |
326 | mov al,byte[esi] |
327 | inc esi |
327 | inc esi |
328 | cmp al,9 |
328 | cmp al,9 |
329 | je @f |
329 | je @f |
330 | cmp al,13 |
330 | cmp al,13 |
331 | je @f |
331 | je @f |
332 | cmp al,39 |
332 | cmp al,39 |
333 | je @f |
333 | je @f |
334 | mov byte[edi],al |
334 | mov byte[edi],al |
335 | inc edi |
335 | inc edi |
336 | loop .copy |
336 | loop .copy |
337 | jmp .end_copy |
337 | jmp .end_copy |
338 | @@: |
338 | @@: |
339 | mov byte[edi],39 |
339 | mov byte[edi],39 |
340 | mov byte[edi+1],',' |
340 | mov byte[edi+1],',' |
341 | add edi,2 |
341 | add edi,2 |
342 | and eax,0xff |
342 | and eax,0xff |
343 | mov dword[edi],0 |
343 | mov dword[edi],0 |
344 | stdcall convert_int_to_str,4 |
344 | stdcall convert_int_to_str,4 |
345 | stdcall str_len,edi |
345 | stdcall str_len,edi |
346 | add edi,eax |
346 | add edi,eax |
347 | mov byte[edi],',' |
347 | mov byte[edi],',' |
348 | mov byte[edi+1],39 |
348 | mov byte[edi+1],39 |
349 | add edi,2 |
349 | add edi,2 |
350 | loop .copy |
350 | loop .copy |
351 | .end_copy: |
351 | .end_copy: |
352 | mov byte[edi],0 |
352 | mov byte[edi],0 |
353 | popad |
353 | popad |
354 | ret |
354 | ret |
355 | endp |
355 | endp |
356 | 356 | ||
357 | align 4 |
357 | align 4 |
358 | proc mem_clear, mem:dword, len:dword |
358 | proc mem_clear, mem:dword, len:dword |
359 | push eax ecx edi |
359 | push eax ecx edi |
360 | cld |
360 | cld |
361 | xor al,al |
361 | xor al,al |
362 | mov edi, dword[mem] |
362 | mov edi, dword[mem] |
363 | mov ecx, dword[len] |
363 | mov ecx, dword[len] |
364 | repne stosb |
364 | repne stosb |
365 | pop edi ecx eax |
365 | pop edi ecx eax |
366 | ret |
366 | ret |
367 | endp |
367 | endp |
368 | 368 | ||
369 | align 4 |
369 | align 4 |
370 | proc str_cat, str1:dword, str2:dword |
370 | proc str_cat, str1:dword, str2:dword |
371 | push eax ecx edi esi |
371 | push eax ecx edi esi |
372 | mov esi,dword[str2] |
372 | mov esi,dword[str2] |
373 | stdcall str_len,esi |
373 | stdcall str_len,esi |
374 | mov ecx,eax |
374 | mov ecx,eax |
375 | inc ecx |
375 | inc ecx |
376 | mov edi,dword[str1] |
376 | mov edi,dword[str1] |
377 | stdcall str_len,edi |
377 | stdcall str_len,edi |
378 | add edi,eax |
378 | add edi,eax |
379 | cld |
379 | cld |
380 | repne movsb |
380 | repne movsb |
381 | pop esi edi ecx eax |
381 | pop esi edi ecx eax |
382 | ret |
382 | ret |
383 | endp |
383 | endp |
384 | 384 | ||
385 | align 4 |
385 | align 4 |
386 | proc str_cat_value, str1:dword, value:dword |
386 | proc str_cat_value, str1:dword, value:dword |
387 | pushad |
387 | pushad |
388 | mov edi,[str1] |
388 | mov edi,[str1] |
389 | stdcall str_len,edi |
389 | stdcall str_len,edi |
390 | add edi,eax |
390 | add edi,eax |
391 | mov eax,[value] |
391 | mov eax,[value] |
392 | stdcall convert_int_to_str,12 |
392 | stdcall convert_int_to_str,12 |
393 | popad |
393 | popad |
394 | ret |
394 | ret |
395 | endp |
395 | endp |
396 | 396 | ||
397 | ;output: |
397 | ;output: |
398 | ; eax = strlen |
398 | ; eax = strlen |
399 | align 4 |
399 | align 4 |
400 | proc str_len, str1:dword |
400 | proc str_len, str1:dword |
401 | mov eax,[str1] |
401 | mov eax,[str1] |
402 | @@: |
402 | @@: |
403 | cmp byte[eax],0 |
403 | cmp byte[eax],0 |
404 | je @f |
404 | je @f |
405 | inc eax |
405 | inc eax |
406 | jmp @b |
406 | jmp @b |
407 | @@: |
407 | @@: |
408 | sub eax,[str1] |
408 | sub eax,[str1] |
409 | ret |
409 | ret |
410 | endp |
410 | endp |
411 | 411 | ||
412 | ;input: |
412 | ;input: |
413 | ; eax - ÷èñëî |
413 | ; eax - ÷èñëî |
414 | ; edi - áóôåð äëß ñòðîêè |
414 | ; edi - áóôåð äëß ñòðîêè |
415 | ; len - äëèííà áóôåðà |
415 | ; len - äëèííà áóôåðà |
416 | ;output: |
416 | ;output: |
417 | align 4 |
417 | align 4 |
418 | proc convert_int_to_str uses eax ecx edx edi esi, len:dword |
418 | proc convert_int_to_str uses eax ecx edx edi esi, len:dword |
419 | mov esi,[len] |
419 | mov esi,[len] |
420 | add esi,edi |
420 | add esi,edi |
421 | dec esi |
421 | dec esi |
422 | call .str |
422 | call .str |
423 | ret |
423 | ret |
424 | endp |
424 | endp |
425 | 425 | ||
426 | align 4 |
426 | align 4 |
427 | .str: |
427 | .str: |
428 | mov ecx,10 |
428 | mov ecx,10 |
429 | cmp eax,ecx |
429 | cmp eax,ecx |
430 | jb @f |
430 | jb @f |
431 | xor edx,edx |
431 | xor edx,edx |
432 | div ecx |
432 | div ecx |
433 | push edx |
433 | push edx |
434 | ;dec edi ;ñìåùåíèå íåîáõîäèìîå äëß çàïèñè ñ êîíöà ñòðîêè |
434 | ;dec edi ;ñìåùåíèå íåîáõîäèìîå äëß çàïèñè ñ êîíöà ñòðîêè |
435 | call .str |
435 | call .str |
436 | pop eax |
436 | pop eax |
437 | @@: |
437 | @@: |
438 | cmp edi,esi |
438 | cmp edi,esi |
439 | jge @f |
439 | jge @f |
440 | or al,0x30 |
440 | or al,0x30 |
441 | stosb |
441 | stosb |
442 | mov byte[edi],0 ;â êîíåö ñòðîêè ñòàâèì 0, ÷òî-áû íå âûëàçèë ìóñîð |
442 | mov byte[edi],0 ;â êîíåö ñòðîêè ñòàâèì 0, ÷òî-áû íå âûëàçèë ìóñîð |
443 | @@: |
443 | @@: |
444 | ret |
444 | ret |