Subversion Repositories Kolibri OS

Rev

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