Subversion Repositories Kolibri OS

Rev

Rev 7649 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3683 GerdtR 1
 
2
    org 0                ; базовый адрес кода, всегда 0x0
9568 IgorA 3
    db 'MENUET01'        ; идентификатор исполняемого файла (8 байт)
3683 GerdtR 4
    dd 1                 ; версия формата заголовка исполняемого файла
9568 IgorA 5
    dd start             ; адрес, на который система передаёт управление
6
                         ; после загрузки приложения в память
7
    dd i_end             ; размер приложения
8
    dd mem               ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
9
    dd mem               ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
10
    dd 0                ; указатель на строку с параметрами.
11
    dd 0;pathprog       ;путь и имя проги
3683 GerdtR 12
13
 
7649 leency 14
include "../../../proc32.inc"
15
include "API.INC"
5098 clevermous 16
include "../../../dll.inc"
7649 leency 17
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
18
;include '../../../KOSfuncs.inc'
9568 IgorA 19
;include '../../../load_lib.mac'
20
3230 leency 21
 
22
        mcall 68,11      ;инициализируем кучу
3683 GerdtR 23
        test eax,eax
24
        jz Win1.Exit
25
        stdcall dll.Load, @IMPORT
26
3230 leency 27
 
28
 
29
;       mov edi,pathprog
30
;       xor al,al
31
;
32
;       repne scasb
33
;
34
;       dec edi
35
;       mov esi,WordFile
36
;      @@:
37
;       lodsb
38
;       stosb
39
;       test al,al
40
;       jne @b
41
42
 
3683 GerdtR 43
        ;test eax,eax                    ;заодно и получу размер файла
44
        ;je WordFileOK
45
3230 leency 46
 
3683 GerdtR 47
        ;jmp Win1.Redraw
48
3230 leency 49
 
50
;       stdcall mem.Alloc,dword [fInfo+32]
51
;       mov ebx,dword [fInfo+32]
52
;       mov [filBuffer],eax
53
;       add dword[fInfo+32],eax  ;здесь хранится указатель на конец буфера
3683 GerdtR 54
;       ReadFile fStruc,pathprog,ebx,eax,0
3230 leency 55
;       test eax,eax
56
;       jz Win1.Redraw
57
;
58
;       add al,30h
59
;       mov [NumErr],al
60
;       stdcall [mb_create],msgNotFound1,mbThread
61
;
62
63
 
64
 
65
Win1.Redraw:
66
        RedrawWinBeg
3683 GerdtR 67
3230 leency 68
 
3683 GerdtR 69
        mov ebx,(524*10000h+500)
70
        mov ecx,(548*10000h+200)
71
        mov edx,73FFFFFFh
72
        mov edi,Win1.Caption
73
        int 40h                      ;окно с прозрачным фонoм
74
3230 leency 75
 
3683 GerdtR 76
3230 leency 77
 
3683 GerdtR 78
        mov ebx,[ThreadInfo+3Eh]
79
        inc ebx
80
        mov ecx,[ThreadInfo+42h]
81
        inc ecx
82
        mov edx,clWhite
83
        int 40h                      ;а теперь не прозрачным:)
84
3230 leency 85
 
3683 GerdtR 86
        call NextPerev
87
        stdcall [edit_box_draw],EditIN
88
        RedrawWinEnd
89
3230 leency 90
 
91
Win1.Events:
92
        WaitMessage
3683 GerdtR 93
        dec eax
94
        jz Win1.Redraw
95
        dec eax
96
        jz Win1.Key
97
        dec eax
98
        jz Win1.ButtonPress
99
3230 leency 100
 
3683 GerdtR 101
3230 leency 102
 
3683 GerdtR 103
3230 leency 104
 
105
        GetButtonPressed
3683 GerdtR 106
3230 leency 107
 
3683 GerdtR 108
        je Win1.Exit
109
3230 leency 110
 
3683 GerdtR 111
3230 leency 112
 
113
        GetKeyPressed
3683 GerdtR 114
        stdcall [edit_box_key],EditIN
115
        jmp Win1.FonRedraw
116
3230 leency 117
 
118
 
119
120
 
3683 GerdtR 121
3230 leency 122
 
3683 GerdtR 123
        mcall 9,ThreadInfo,-1
124
3230 leency 125
 
3683 GerdtR 126
        mov ebx,[ThreadInfo+3Eh]
127
        inc ebx
128
        mov ecx,20
129
        shl ecx,16
130
        add ecx,[ThreadInfo+42h]
131
        sub ecx,19
132
        mov edx,clWhite
133
        int 40h
134
3230 leency 135
 
3683 GerdtR 136
        call NextPerev
137
jmp Win1.Events
3230 leency 138
139
 
140
141
 
3683 GerdtR 142
        mov edi,dict;[filBuffer]
143
3230 leency 144
 
145
        xor ebx,ebx
3683 GerdtR 146
      @@:                 ;сравнием исх. слово со словом под esi
147
        mov al,[text+ebx]
148
        test al,al
149
        je endWord
150
        cmp [ebx+edi],al
151
        jne WordNotFound
152
        inc ebx
153
        jmp @b
154
3230 leency 155
 
156
        cmp byte[ebx+edi],20h
3683 GerdtR 157
        jne WordNotFound
158
3230 leency 159
 
3683 GerdtR 160
        dec edi              ;пропускаем пробелы после английского слова
161
      @@:
3230 leency 162
        inc edi
3683 GerdtR 163
        cmp byte[edi],20h
164
        je @b
165
3230 leency 166
 
3683 GerdtR 167
     CopyWord:               ;копируем перевод в строку для вывода
168
        mov al,[edi+ebx]
169
        cmp al,0Dh
170
        je @f
171
        mov [perevText+ebx],al
172
        inc ebx
173
        jmp CopyWord
174
      @@:
3230 leency 175
        mov byte[perevText+ebx],0
3683 GerdtR 176
3230 leency 177
 
3683 GerdtR 178
        ret
179
3230 leency 180
 
3683 GerdtR 181
        add edi,ebx
182
      @@:
3230 leency 183
        cmp byte[edi],0Dh
3683 GerdtR 184
        je NextWord
185
        inc edi
186
        cmp edi,SizeDict;dword [fInfo+32]
187
        jae endPerev
188
        jmp @b
189
3230 leency 190
 
191
        add edi,2
3683 GerdtR 192
        cmp edi,SizeDict;dword [fInfo+32]
193
        jae endPerev
194
        jmp Perev
195
    endPerev:
3230 leency 196
        ret
3683 GerdtR 197
3230 leency 198
 
199
 
200
NextPerev:
201
        mov ecx,Lines
3683 GerdtR 202
        mov edi,dict;[filBuffer]
203
  LinePerev:           ;цикл рисования строки
204
        xor ebx,ebx
205
      @@:                 ;сравнием исх. слово со словом под esi
206
        mov al,[text+ebx]
207
        test al,al
208
        je N_endWord
209
        cmp [ebx+edi],al
210
        jne N_WordNotFound
211
        inc ebx
212
        jmp @b
213
3230 leency 214
 
215
        cmp ebx,0
3683 GerdtR 216
        jne N_Ppoisk
217
        ret
218
3230 leency 219
 
3683 GerdtR 220
        add edi,ebx
221
      @@:
3230 leency 222
        dec edi
3683 GerdtR 223
        cmp byte[edi],0Ah
224
        jne @b
225
        inc edi
226
3230 leency 227
 
3683 GerdtR 228
        xor ebx,ebx
229
    N_NoDouble:
3230 leency 230
        mov al,[text+ebx]
3683 GerdtR 231
        test al,al
232
        je N_Double
233
        cmp [ebx+edi],al
234
        jne N_NoDblOk
235
        inc ebx
236
        jmp N_NoDouble
237
3230 leency 238
 
239
        cmp byte[ebx+edi],20h
3683 GerdtR 240
        jne N_NoDblOk
241
3230 leency 242
 
3683 GerdtR 243
      @@:
3230 leency 244
        inc edi
3683 GerdtR 245
        cmp byte[edi],0Ah
246
        jne @b
247
        add edi,2
248
        jmp LinePerev
249
3230 leency 250
 
3683 GerdtR 251
        xor ebx,ebx        ;копируем результат
252
     N_CopyWord:
3230 leency 253
        mov al,[edi+ebx]
3683 GerdtR 254
        cmp al,20h
255
        je @f
256
        mov [perevText+ebx],al
257
        inc ebx
258
        jmp N_CopyWord
259
      @@:
3230 leency 260
        mov byte[perevText+ebx],0
3683 GerdtR 261
        add edi,ebx
262
3230 leency 263
 
3683 GerdtR 264
        sub eax,ecx
265
        dec eax
266
        shl eax,3
267
        add eax,45
268
        push ecx
269
        push edi
270
        OutText 7,ax,perevText
271
        pop edi
272
        pop ecx
273
3230 leency 274
 
275
        inc edi
3683 GerdtR 276
        cmp byte[edi],20h
277
        je @b
278
3230 leency 279
 
280
 
3683 GerdtR 281
     N_CopyPerev:
3230 leency 282
        mov al,[edi+ebx]
3683 GerdtR 283
        cmp al,0Dh
284
        je @f
285
        mov [perevText+ebx],al
286
        inc ebx
287
        jmp N_CopyPerev
288
      @@:
3230 leency 289
        mov byte[perevText+ebx],0
3683 GerdtR 290
3230 leency 291
 
3683 GerdtR 292
        sub eax,ecx
293
        dec eax
294
        shl eax,3
295
        add eax,45
296
        push ecx
297
        push edi
298
        OutText 127,ax,perevText
299
        pop edi
300
        pop ecx
301
3230 leency 302
 
303
        inc edi
3683 GerdtR 304
        cmp byte[edi],0Ah
305
        jne @b
306
        inc edi
307
3230 leency 308
 
3683 GerdtR 309
        ret
310
      @@:
3230 leency 311
        jmp LinePerev
3683 GerdtR 312
3230 leency 313
 
314
        add edi,ebx
3683 GerdtR 315
      @@:
3230 leency 316
        cmp byte[edi],0Dh
3683 GerdtR 317
        je N_NextWord
318
        inc edi
319
        cmp edi,SizeDict;dword [fInfo+32]
320
        jae N_endPerev
321
        jmp @b
322
3230 leency 323
 
324
        add edi,2
3683 GerdtR 325
        cmp edi,SizeDict;dword [fInfo+32]
326
        jae N_endPerev
327
        jmp LinePerev
328
    N_endPerev:
3230 leency 329
        ret
3683 GerdtR 330
3230 leency 331
 
332
;-------------------------------------------------------------------------------
333
;------DATA---------------------------------------------------------------------
334
;-------------------------------------------------------------------------------
335
;-------------------------------------------------------------------------------
336
337
 
3683 GerdtR 338
3230 leency 339
 
3683 GerdtR 340
3230 leency 341
 
3683 GerdtR 342
3230 leency 343
 
3683 GerdtR 344
        Win1X           = 524
345
        Win1Y           = 548
346
        Win1W           = 500
347
        Win1H           = 200
348
3230 leency 349
 
3683 GerdtR 350
        Memo.Y  = 20
351
        Memo.W  = 400
352
        Memo.H  = 370
353
3230 leency 354
 
3683 GerdtR 355
                        text,mouse_dd,ed_focus,0,0
356
3230 leency 357
 
358
 
359
 
360
;                       dw 0
361
;                       db 'Ошибка',0
3683 GerdtR 362
;                       db 'Файл dictionary.wrd не найден',0
363
;                       db 'Ясно',0
364
;                       db 0
3230 leency 365
;
366
;       msgNotFound1:
367
;                       dw 0
368
;                       db '!!!',0
369
;                       db 'Ошибка чтения '
3683 GerdtR 370
;                    NumErr:    db 0
3230 leency 371
;                               db 0
372
;                       db 'Ясно',0
3683 GerdtR 373
;                       db 0
3230 leency 374
;
375
;       WordFile        db '.wrd',0
376
377
 
378
 
379
@IMPORT:
380
library box_lib,'box_lib.obj',msgbox,'msgbox.obj'
381
import  box_lib,\
3683 GerdtR 382
        edit_box_draw,'edit_box_draw',\
9568 IgorA 383
        edit_box_key,'edit_box_key';,\
3683 GerdtR 384
        ;edit_box_mouse,'edit_box_mouse'
385
import  msgbox,\
386
        mb_create,'mb_create'
387
3230 leency 388
 
389
include 'dictionary.wrd'
390
391
 
392
393
 
394
 
395
;-------------------------------------------------------------------------------
396
397
 
3683 GerdtR 398
;        m1 dd 0
3230 leency 399
        ;filBuffer      rd 1
3683 GerdtR 400
3230 leency 401
 
402
 
3683 GerdtR 403
        ;pathprog
404
        mouse_dd        rd 1
405
        text            rb 40
406
        perevText       rb 300
407
        ;fStruc         rb 30
408
        ;fInfo          rb 40
409
        mbThread        rb 1024
410
3230 leency 411
 
412
 
3683 GerdtR 413
mem:
3230 leency 414