Rev 3230 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3230 | Rev 3683 | ||
---|---|---|---|
Line -... | Line 1... | ||
- | 1 | use32 ; âà á«ïâ®à, ¨á¯®«ì§ãî騩 32 à §àï¤ëå ª®¬ ¤ë |
|
- | 2 | org 0x0 ; ¡ §®¢ë© ¤à¥á ª®¤ , ¢á¥£¤ 0x0 |
|
- | 3 | db 'MENUET01' ; ¨¤¥â¨ä¨ª â®à ¨á¯®«ï¥¬®£® ä ©« (8 ¡ ©â) |
|
- | 4 | dd 0x1 ; ¢¥àá¨ï ä®à¬ â § £®«®¢ª ¨á¯®«ï¥¬®£® ä ©« |
|
- | 5 | dd start ; ¤à¥á, ª®â®àë© á¨á⥬ ¯¥à¥¤ ñâ ã¯à ¢«¥¨¥ |
|
- | 6 | ; ¯®á«¥ § £à㧪¨ ¯à¨«®¦¥¨ï ¢ ¯ ¬ïâì |
|
- | 7 | dd i_end ; à §¬¥à ¯à¨«®¦¥¨ï |
|
- | 8 | dd mem ; ¡ê¥¬ ¨á¯®«ì§ã¥¬®© ¯ ¬ïâ¨, ¤«ï á⥪ ®â¢¥¤¥¬ 0å100 ¡ ©â ¨ ¢ë஢¨¬ £à¨æã 4 ¡ ©â |
|
- | 9 | dd mem ; à ᯮ«®¦¨¬ ¯®§¨æ¨î á⥪ ¢ ®¡« á⨠¯ ¬ïâ¨, áà §ã § ⥫®¬ ¯à®£à ¬¬ë. ¥àè¨ á⥪ ¢ ¤¨ ¯ §®¥ ¯ ¬ïâ¨, 㪠§ ®¬ ¢ëè¥ |
|
- | 10 | dd 0x0 ; 㪠§ ⥫ì áâபã á ¯ à ¬¥âà ¬¨. |
|
- | 11 | dd 0;pathprog ;¯ãâì ¨ ¨¬ï ¯à®£¨ |
|
- | 12 | ||
- | 13 | include "../../macros.inc" |
|
1 | include "../../macros.inc" |
14 | include "../../proc32.inc" |
2 | include "../../proc32.inc" |
15 | include "API.inc" |
- | 16 | include "../../dll.inc" |
|
3 | include "../../dll.inc" |
17 | include '../../develop/libraries/box_lib/trunk/box_lib.mac' |
4 | include '../../develop/libraries/box_lib/trunk/box_lib.mac' |
18 | include '../../develop/libraries/box_lib/load_lib.mac' |
5 | include '../../develop/libraries/box_lib/load_lib.mac' |
19 | |
Line 6... | Line -... | ||
6 | - | ||
7 | include "API.inc" |
- | |
8 | - | ||
9 | use32 ; òðàíñëÿòîð, èñïîëüçóþùèé 32 ðàçðÿäíûõ êîìàíäû |
- | |
10 | org 0x0 ; áàçîâûé àäðåñ êîäà, âñåãäà 0x0 |
- | |
11 | db 'MENUET01' ; èäåíòèôèêàòîð èñïîëíÿåìîãî ôàéëà (8 áàéò) |
- | |
12 | dd 0x1 ; âåðñèÿ ôîðìàòà çàãîëîâêà èñïîëíÿåìîãî ôàéëà |
- | |
13 | dd start ; àäðåñ, íà êîòîðûé ñèñòåìà ïåðåäà¸ò óïðàâëåíèå |
- | |
14 | ; ïîñëå çàãðóçêè ïðèëîæåíèÿ â ïàìÿòü |
- | |
15 | dd i_end ; ðàçìåð ïðèëîæåíèÿ |
- | |
16 | dd mem ; Îáúåì èñïîëüçóåìîé ïàìÿòè, äëÿ ñòåêà îòâåäåì 0õ100 áàéò è âûðîâíèì íà ãðíèöó 4 áàéòà |
- | |
17 | dd mem ; ðàñïîëîæèì ïîçèöèþ ñòåêà â îáëàñòè ïàìÿòè, ñðàçó çà òåëîì ïðîãðàììû. Âåðøèíà ñòåêà â äèàïàçîíå ïàìÿòè, óêàçàííîì âûøå |
- | |
18 | dd 0x0 ; óêàçàòåëü íà ñòðîêó ñ ïàðàìåòðàìè. |
- | |
19 | dd 0;pathprog ;ïóòü è èìÿ ïðîãè |
- | |
20 | - | ||
21 | 20 | start: |
|
22 | start: |
21 | mcall 68,11 ;¨¨æ¨ «¨§¨à㥬 ªãçã |
23 | mcall 68,11 ;èíèöèàëèçèðóåì êó÷ó |
22 | test eax,eax |
24 | test eax,eax |
23 | jz Win1.Exit |
25 | jz Win1.Exit |
24 | stdcall dll.Load, @IMPORT |
Line 38... | Line 37... | ||
38 | ; lodsb |
37 | ; stosb |
39 | ; stosb |
38 | ; test al,al |
40 | ; test al,al |
39 | ; jne @b |
41 | ; jne @b |
40 | |
Line 42... | Line 41... | ||
42 | 41 | ;GetFileInfo fStruc,pathprog,fInfo ;¯à®¢¥àª «¨ç¨¥ ä ©« |
|
43 | ;GetFileInfo fStruc,pathprog,fInfo ;ïðîâåðêà íà íàëè÷èå ôàéëà |
42 | ;test eax,eax ;§ ®¤® ¨ ¯®«ãçã à §¬¥à ä ©« |
44 | ;test eax,eax ;çàîäíî è ïîëó÷ó ðàçìåð ôàéëà |
43 | ;je WordFileOK |
Line 45... | Line 44... | ||
45 | ;je WordFileOK |
44 | |
46 | 45 | ;stdcall [mb_create],msgNotFound,mbThread |
|
Line 47... | Line 46... | ||
47 | ;stdcall [mb_create],msgNotFound,mbThread |
46 | ;jmp Win1.Redraw |
48 | ;jmp Win1.Redraw |
47 | |
49 | 48 | ;WordFileOK: |
|
50 | ;WordFileOK: |
49 | ; stdcall mem.Alloc,dword [fInfo+32] |
51 | ; stdcall mem.Alloc,dword [fInfo+32] |
50 | ; mov ebx,dword [fInfo+32] |
52 | ; mov ebx,dword [fInfo+32] |
51 | ; mov [filBuffer],eax |
53 | ; mov [filBuffer],eax |
52 | ; add dword[fInfo+32],eax ;§¤¥áì åà ¨âáï 㪠§ â¥«ì ª®¥æ ¡ãä¥à |
54 | ; add dword[fInfo+32],eax ;çäåñü õðàíèòñÿ óêàçàòåëü íà êîíåö áóôåðà |
53 | ; ReadFile fStruc,pathprog,ebx,eax,0 |
55 | ; ReadFile fStruc,pathprog,ebx,eax,0 |
54 | ; test eax,eax |
56 | ; test eax,eax |
55 | ; jz Win1.Redraw |
Line 69... | Line 68... | ||
69 | xor eax,eax |
68 | mov ebx,(524*10000h+500) |
70 | mov ebx,(524*10000h+500) |
69 | mov ecx,(548*10000h+200) |
71 | mov ecx,(548*10000h+200) |
70 | mov edx,73FFFFFFh |
72 | mov edx,73FFFFFFh |
71 | mov edi,Win1.Caption |
73 | mov edi,Win1.Caption |
72 | int 40h ;®ª® á ¯à®§à çë¬ ä®o¬ |
74 | int 40h ;îêíî ñ ïðîçðà÷íûì ôîíoì |
73 | |
Line 75... | Line 74... | ||
75 | 74 | mcall 9,ThreadInfo,-1 |
|
Line 76... | Line 75... | ||
76 | mcall 9,ThreadInfo,-1 |
75 | |
77 | 76 | mov eax,13 |
|
78 | mov eax,13 |
77 | mov ebx,[ThreadInfo+3Eh] |
79 | mov ebx,[ThreadInfo+3Eh] |
78 | inc ebx |
80 | inc ebx |
79 | mov ecx,[ThreadInfo+42h] |
81 | mov ecx,[ThreadInfo+42h] |
80 | inc ecx |
82 | inc ecx |
81 | mov edx,clWhite |
Line 83... | Line 82... | ||
83 | mov edx,clWhite |
82 | int 40h ; ⥯¥àì ¥ ¯à®§à çë¬:) |
84 | int 40h ;à òåïåðü íå ïðîçðà÷íûì:) |
83 | |
85 | 84 | call Perevod ; ¢ ¯¥à¥à¨á®¢ª¥ áà §ã ¯¥à¥¢®¤¨¬ ¢¢¥¤ñ®¥ á«®¢® |
|
86 | call Perevod ; â ïåðåðèñîâêå ñðàçó ïåðåâîäèì ââåä¸ííîå ñëîâî |
85 | call NextPerev |
Line 87... | Line 86... | ||
87 | call NextPerev |
86 | stdcall [edit_box_draw],EditIN |
Line 118... | Line 117... | ||
118 | 117 | Win1.Exit: |
|
Line 119... | Line 118... | ||
119 | Win1.Exit: |
118 | |
Line 120... | Line 119... | ||
120 | 119 | ExitProcess |
|
121 | ExitProcess |
120 | |
Line 122... | Line 121... | ||
122 | 121 | Win1.FonRedraw: ;¯¥à¥à¨á®¢ª ®¡« á⨠¢ë¢®¤ |
|
123 | Win1.FonRedraw: ;ïåðåðèñîâêà îáëàñòè âûâîäà |
122 | mcall 9,ThreadInfo,-1 |
124 | mcall 9,ThreadInfo,-1 |
123 | |
Line 137... | Line 136... | ||
137 | call NextPerev |
136 | jmp Win1.Events |
138 | jmp Win1.Events |
137 | |
Line 139... | Line 138... | ||
139 | 138 | ;------------------------------------------------------------------------------- |
|
Line 140... | Line 139... | ||
140 | ;------------------------------------------------------------------------------- |
139 | |
141 | 140 | Perevod: ;á ¬ ¯¥à¥¢®¤ |
|
Line 142... | Line 141... | ||
142 | Perevod: ;ñàì ïåðåâîä |
141 | mov edi,dict;[filBuffer] |
143 | mov edi,dict;[filBuffer] |
142 | |
144 | 143 | Perev: |
|
145 | Perev: |
144 | xor ebx,ebx |
146 | xor ebx,ebx |
145 | @@: ;áà ¢¨¥¬ ¨áå. á«®¢® á® á«®¢®¬ ¯®¤ esi |
147 | @@: ;ñðàâíèåì èñõ. ñëîâî ñî ñëîâîì ïîä esi |
146 | mov al,[text+ebx] |
148 | mov al,[text+ebx] |
147 | test al,al |
149 | test al,al |
148 | je endWord |
Line 156... | Line 155... | ||
156 | endWord: |
155 | cmp byte[ebx+edi],20h |
157 | cmp byte[ebx+edi],20h |
156 | jne WordNotFound |
158 | jne WordNotFound |
157 | |
Line 159... | Line 158... | ||
159 | 158 | add edi,ebx |
|
160 | add edi,ebx |
159 | dec edi ;¯à®¯ã᪠¥¬ ¯à®¡¥«ë ¯®á«¥ £«¨©áª®£® á«®¢ |
161 | dec edi ;ïðîïóñêàåì ïðîáåëû ïîñëå àíãëèéñêîãî ñëîâà |
160 | @@: |
162 | @@: |
161 | inc edi |
163 | inc edi |
162 | cmp byte[edi],20h |
164 | cmp byte[edi],20h |
163 | je @b |
Line 165... | Line 164... | ||
165 | je @b |
164 | |
166 | 165 | xor ebx,ebx |
|
167 | xor ebx,ebx |
166 | CopyWord: ;ª®¯¨à㥬 ¯¥à¥¢®¤ ¢ áâப㠤«ï ¢ë¢®¤ |
168 | CopyWord: ;êîïèðóåì ïåðåâîä â ñòðîêó äëÿ âûâîäà |
167 | mov al,[edi+ebx] |
169 | mov al,[edi+ebx] |
168 | cmp al,0Dh |
170 | cmp al,0Dh |
169 | je @f |
171 | je @f |
170 | mov [perevText+ebx],al |
Line 176... | Line 175... | ||
176 | mov byte[perevText+ebx],0 |
175 | |
Line 177... | Line 176... | ||
177 | 176 | OutText 7,25,perevText |
|
178 | OutText 7,25,perevText |
177 | ret |
Line 179... | Line 178... | ||
179 | ret |
178 | |
180 | 179 | WordNotFound: ;¥á«¨ á«®¢® ¥ ¯®¤®è«® |
|
181 | WordNotFound: ;åñëè ñëîâî íå ïîäîøëî |
180 | add edi,ebx |
182 | add edi,ebx |
181 | @@: |
183 | @@: |
182 | cmp byte[edi],0Dh |
184 | cmp byte[edi],0Dh |
183 | je NextWord |
Line 199... | Line 198... | ||
199 | 198 | ;------------------------------------------------------------------------------- |
|
200 | ;------------------------------------------------------------------------------- |
199 | NextPerev: |
201 | NextPerev: |
200 | mov ecx,Lines |
202 | mov ecx,Lines |
201 | mov edi,dict;[filBuffer] |
203 | mov edi,dict;[filBuffer] |
202 | LinePerev: ;横« à¨á®¢ ¨ï áâப¨ |
204 | LinePerev: ;öèêë ðèñîâàíèÿ ñòðîêè |
203 | xor ebx,ebx |
205 | xor ebx,ebx |
204 | @@: ;áà ¢¨¥¬ ¨áå. á«®¢® á® á«®¢®¬ ¯®¤ esi |
206 | @@: ;ñðàâíèåì èñõ. ñëîâî ñî ñëîâîì ïîä esi |
205 | mov al,[text+ebx] |
207 | mov al,[text+ebx] |
206 | test al,al |
208 | test al,al |
207 | je N_endWord |
209 | je N_endWord |
208 | cmp [ebx+edi],al |
210 | cmp [ebx+edi],al |
209 | jne N_WordNotFound |
Line 215... | Line 214... | ||
215 | N_endWord: |
214 | cmp ebx,0 |
216 | cmp ebx,0 |
215 | jne N_Ppoisk |
217 | jne N_Ppoisk |
216 | ret |
218 | ret |
217 | |
Line 219... | Line 218... | ||
219 | 218 | N_Ppoisk: ;¯®¨áª ç « áâப¨ |
|
220 | N_Ppoisk: ;ïîèñê íà÷àëà ñòðîêè |
219 | add edi,ebx |
221 | add edi,ebx |
220 | @@: |
222 | @@: |
221 | dec edi |
223 | dec edi |
222 | cmp byte[edi],0Ah |
224 | cmp byte[edi],0Ah |
223 | jne @b |
225 | jne @b |
224 | inc edi |
Line 226... | Line 225... | ||
226 | inc edi |
225 | |
227 | 226 | ;########¯à®¯ã᪠¥¬ 㦥 ¯¥à¥¢¥¤ñ®¥ á«®¢®######## |
|
228 | ;########ïðîïóñêàåì óæå ïåðåâåä¸ííîå ñëîâî######## |
227 | xor ebx,ebx |
229 | xor ebx,ebx |
228 | N_NoDouble: |
230 | N_NoDouble: |
229 | mov al,[text+ebx] |
231 | mov al,[text+ebx] |
230 | test al,al |
Line 246... | Line 245... | ||
246 | cmp byte[edi],0Ah |
245 | jne @b |
247 | jne @b |
246 | add edi,2 |
248 | add edi,2 |
247 | jmp LinePerev |
249 | jmp LinePerev |
248 | |
Line 250... | Line 249... | ||
250 | 249 | N_NoDblOk: ;############¢ë¢®¤ १ã«ìâ ⮢#################### |
|
251 | N_NoDblOk: ;############âûâîä ðåçóëüòàòîâ#################### |
250 | xor ebx,ebx ;ª®¯¨à㥬 १ã«ìâ â |
252 | xor ebx,ebx ;êîïèðóåì ðåçóëüòàò |
251 | N_CopyWord: |
253 | N_CopyWord: |
252 | mov al,[edi+ebx] |
254 | mov al,[edi+ebx] |
253 | cmp al,20h |
255 | cmp al,20h |
254 | je @f |
256 | je @f |
255 | mov [perevText+ebx],al |
Line 304... | Line 303... | ||
304 | inc edi |
303 | cmp byte[edi],0Ah |
305 | cmp byte[edi],0Ah |
304 | jne @b |
306 | jne @b |
305 | inc edi |
307 | inc edi |
306 | |
Line 308... | Line 307... | ||
308 | 307 | loop @f ;¥¤®â¢ ¥âáï ¤® LinePerev |
|
309 | loop @f ;íåäîòÿãèâàåòñÿ äî LinePerev |
308 | ret |
310 | ret |
309 | @@: |
311 | @@: |
310 | jmp LinePerev |
Line 312... | Line 311... | ||
312 | jmp LinePerev |
311 | |
Line 335... | Line 334... | ||
335 | ;------------------------------------------------------------------------------- |
334 | ;------------------------------------------------------------------------------- |
336 | ;------------------------------------------------------------------------------- |
335 | |
Line 337... | Line 336... | ||
337 | 336 | idbExit = 1 |
|
Line 338... | Line 337... | ||
338 | idbExit = 1 |
337 | |
Line 339... | Line 338... | ||
339 | 338 | Lines = 16 ;ª®«¨ç¥á⢠áâப |
|
Line 340... | Line 339... | ||
340 | Lines = 16 ;êîëè÷åñòâ ñòðîê |
339 | |
341 | 340 | clTheme = 080B0FFh |
|
342 | clTheme = 080B0FFh |
341 | |
343 | 342 | Win1.Caption db 'Dictionary ENG -> RUS',0 |
|
344 | Win1.Caption db 'Dictionary RUS -> ENG',0 |
343 | Win1X = 524 |
Line 357... | Line 356... | ||
357 | 356 | ||
358 | 357 | ||
359 | 358 | ; msgNotFound: |
|
360 | ; msgNotFound: |
359 | ; dw 0 |
361 | ; dw 0 |
360 | ; db '訡ª ',0 |
362 | ; db 'Îøèáêà',0 |
361 | ; db ' ©« dictionary.wrd ¥ ©¤¥',0 |
363 | ; db 'Ôàéë dictionary.wrd íå íàéäåí',0 |
362 | ; db 'á®',0 |
364 | ; db 'ßñíî',0 |
363 | ; db 0 |
365 | ; db 0 |
364 | ; |
366 | ; |
365 | ; msgNotFound1: |
367 | ; msgNotFound1: |
366 | ; dw 0 |
368 | ; dw 0 |
367 | ; db '!!!',0 |
369 | ; db '!!!',0 |
368 | ; db '訡ª ç⥨ï ' |
370 | ; db 'Îøèáêà ÷òåíèÿ ' |
369 | ; NumErr: db 0 |
371 | ; NumErr: db 0 |
370 | ; db 0 |
372 | ; db 0 |
371 | ; db 'á®',0 |
373 | ; db 'ßñíî',0 |
372 | ; db 0 |