Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3625 → Rev 3683

/programs/other/dictionary/dictionary.ASM
1,26 → 1,25
 
use32 ; âà ­á«ïâ®à, ¨á¯®«ì§ãî騩 32 à §à來ëå ª®¬ ­¤ë
org 0x0 ; ¡ §®¢ë©  ¤à¥á ª®¤ , ¢á¥£¤  0x0
db 'MENUET01' ; ¨¤¥­â¨ä¨ª â®à ¨á¯®«­ï¥¬®£® ä ©«  (8 ¡ ©â)
dd 0x1 ; ¢¥àá¨ï ä®à¬ â  § £®«®¢ª  ¨á¯®«­ï¥¬®£® ä ©« 
dd start ;  ¤à¥á, ­  ª®â®àë© á¨á⥬  ¯¥à¥¤ ñâ ã¯à ¢«¥­¨¥
; ¯®á«¥ § £à㧪¨ ¯à¨«®¦¥­¨ï ¢ ¯ ¬ïâì
dd i_end ; à §¬¥à ¯à¨«®¦¥­¨ï
dd mem ; Ž¡ê¥¬ ¨á¯®«ì§ã¥¬®© ¯ ¬ïâ¨, ¤«ï á⥪  ®â¢¥¤¥¬ 0å100 ¡ ©â ¨ ¢ë஢­¨¬ ­  £à­¨æã 4 ¡ ©â 
dd mem ; à á¯®«®¦¨¬ ¯®§¨æ¨î á⥪  ¢ ®¡« á⨠¯ ¬ïâ¨, áࠧ㠧  ⥫®¬ ¯à®£à ¬¬ë. ‚¥à設  á⥪  ¢ ¤¨ ¯ §®­¥ ¯ ¬ïâ¨, 㪠§ ­­®¬ ¢ëè¥
dd 0x0 ; 㪠§ â¥«ì ­  áâபã á ¯ à ¬¥âà ¬¨.
dd 0;pathprog ;¯ãâì ¨ ¨¬ï ¯à®£¨
 
include "../../macros.inc"
include "../../proc32.inc"
include "API.inc"
include "../../dll.inc"
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
include '../../develop/libraries/box_lib/load_lib.mac'
 
include "API.inc"
 
use32 ; òðàíñëÿòîð, èñïîëüçóþùèé 32 ðàçðÿäíûõ êîìàíäû
org 0x0 ; áàçîâûé àäðåñ êîäà, âñåãäà 0x0
db 'MENUET01' ; èäåíòèôèêàòîð èñïîëíÿåìîãî ôàéëà (8 áàéò)
dd 0x1 ; âåðñèÿ ôîðìàòà çàãîëîâêà èñïîëíÿåìîãî ôàéëà
dd start ; àäðåñ, íà êîòîðûé ñèñòåìà ïåðåäà¸ò óïðàâëåíèå
; ïîñëå çàãðóçêè ïðèëîæåíèÿ â ïàìÿòü
dd i_end ; ðàçìåð ïðèëîæåíèÿ
dd mem ; Îáúåì èñïîëüçóåìîé ïàìÿòè, äëÿ ñòåêà îòâåäåì 0õ100 áàéò è âûðîâíèì íà ãðíèöó 4 áàéòà
dd mem ; ðàñïîëîæèì ïîçèöèþ ñòåêà â îáëàñòè ïàìÿòè, ñðàçó çà òåëîì ïðîãðàììû. Âåðøèíà ñòåêà â äèàïàçîíå ïàìÿòè, óêàçàííîì âûøå
dd 0x0 ; óêàçàòåëü íà ñòðîêó ñ ïàðàìåòðàìè.
dd 0;pathprog ;ïóòü è èìÿ ïðîãè
 
 
start:
mcall 68,11 ;èíèöèàëèçèðóåì êó÷ó
mcall 68,11 ;¨­¨æ¨ «¨§¨à㥬 ªãçã
test eax,eax
jz Win1.Exit
stdcall dll.Load, @IMPORT
40,8 → 39,8
; test al,al
; jne @b
 
;GetFileInfo fStruc,pathprog,fInfo ;ïðîâåðêà íà íàëè÷èå ôàéëà
;test eax,eax ;çàîäíî è ïîëó÷ó ðàçìåð ôàéëà
;GetFileInfo fStruc,pathprog,fInfo ;¯à®¢¥àª  ­  ­ «¨ç¨¥ ä ©« 
;test eax,eax ;§ ®¤­® ¨ ¯®«ãçã à §¬¥à ä ©« 
;je WordFileOK
 
;stdcall [mb_create],msgNotFound,mbThread
51,7 → 50,7
; stdcall mem.Alloc,dword [fInfo+32]
; mov ebx,dword [fInfo+32]
; mov [filBuffer],eax
; add dword[fInfo+32],eax ;çäåñü õðàíèòñÿ óêàçàòåëü íà êîíåö áóôåðà
; add dword[fInfo+32],eax ;§¤¥áì åà ­¨âáï 㪠§ â¥«ì ­  ª®­¥æ ¡ãä¥à 
; ReadFile fStruc,pathprog,ebx,eax,0
; test eax,eax
; jz Win1.Redraw
71,7 → 70,7
mov ecx,(548*10000h+200)
mov edx,73FFFFFFh
mov edi,Win1.Caption
int 40h ;îêíî ñ ïðîçðà÷íûì ôîíoì
int 40h ;®ª­® á ¯à®§à ç­ë¬ ä®­o¬
 
mcall 9,ThreadInfo,-1
 
81,9 → 80,9
mov ecx,[ThreadInfo+42h]
inc ecx
mov edx,clWhite
int 40h ;à òåïåðü íå ïðîçðà÷íûì:)
int 40h ;  ⥯¥àì ­¥ ¯à®§à ç­ë¬:)
 
call Perevod ; â ïåðåðèñîâêå ñðàçó ïåðåâîäèì ââåä¸ííîå ñëîâî
call Perevod ; ¢ ¯¥à¥à¨á®¢ª¥ áࠧ㠯¥à¥¢®¤¨¬ ¢¢¥¤ñ­­®¥ á«®¢®
call NextPerev
stdcall [edit_box_draw],EditIN
RedrawWinEnd
120,7 → 119,7
 
ExitProcess
 
Win1.FonRedraw: ;ïåðåðèñîâêà îáëàñòè âûâîäà
Win1.FonRedraw: ;¯¥à¥à¨á®¢ª  ®¡« á⨠¢ë¢®¤ 
mcall 9,ThreadInfo,-1
 
mov eax,13
139,12 → 138,12
 
;-------------------------------------------------------------------------------
 
Perevod: ;ñàì ïåðåâîä
Perevod: ;á ¬ ¯¥à¥¢®¤
mov edi,dict;[filBuffer]
 
Perev:
xor ebx,ebx
@@: ;ñðàâíèåì èñõ. ñëîâî ñî ñëîâîì ïîä esi
@@: ;áà ¢­¨¥¬ ¨áå. á«®¢® á® á«®¢®¬ ¯®¤ esi
mov al,[text+ebx]
test al,al
je endWord
158,7 → 157,7
jne WordNotFound
 
add edi,ebx
dec edi ;ïðîïóñêàåì ïðîáåëû ïîñëå àíãëèéñêîãî ñëîâà
dec edi ;¯à®¯ã᪠¥¬ ¯à®¡¥«ë ¯®á«¥  ­£«¨©áª®£® á«®¢ 
@@:
inc edi
cmp byte[edi],20h
165,7 → 164,7
je @b
 
xor ebx,ebx
CopyWord: ;êîïèðóåì ïåðåâîä â ñòðîêó äëÿ âûâîäà
CopyWord: ;ª®¯¨à㥬 ¯¥à¥¢®¤ ¢ áâப㠤«ï ¢ë¢®¤ 
mov al,[edi+ebx]
cmp al,0Dh
je @f
178,7 → 177,7
OutText 7,25,perevText
ret
 
WordNotFound: ;åñëè ñëîâî íå ïîäîøëî
WordNotFound: ;¥á«¨ á«®¢® ­¥ ¯®¤®è«®
add edi,ebx
@@:
cmp byte[edi],0Dh
201,9 → 200,9
NextPerev:
mov ecx,Lines
mov edi,dict;[filBuffer]
LinePerev: ;öèêë ðèñîâàíèÿ ñòðîêè
LinePerev: ;横« à¨á®¢ ­¨ï áâப¨
xor ebx,ebx
@@: ;ñðàâíèåì èñõ. ñëîâî ñî ñëîâîì ïîä esi
@@: ;áà ¢­¨¥¬ ¨áå. á«®¢® á® á«®¢®¬ ¯®¤ esi
mov al,[text+ebx]
test al,al
je N_endWord
217,7 → 216,7
jne N_Ppoisk
ret
 
N_Ppoisk: ;ïîèñê íà÷àëà ñòðîêè
N_Ppoisk: ;¯®¨áª ­ ç «  áâப¨
add edi,ebx
@@:
dec edi
225,7 → 224,7
jne @b
inc edi
 
;########ïðîïóñêàåì óæå ïåðåâåä¸ííîå ñëîâî########
;########¯à®¯ã᪠¥¬ 㦥 ¯¥à¥¢¥¤ñ­­®¥ á«®¢®########
xor ebx,ebx
N_NoDouble:
mov al,[text+ebx]
248,8 → 247,8
add edi,2
jmp LinePerev
 
N_NoDblOk: ;############âûâîä ðåçóëüòàòîâ####################
xor ebx,ebx ;êîïèðóåì ðåçóëüòàò
N_NoDblOk: ;############¢ë¢®¤ १ã«ìâ â®¢####################
xor ebx,ebx ;ª®¯¨à㥬 १ã«ìâ â
N_CopyWord:
mov al,[edi+ebx]
cmp al,20h
306,7 → 305,7
jne @b
inc edi
 
loop @f ;íåäîòÿãèâàåòñÿ äî LinePerev
loop @f ;­¥¤®â¢ ¥âáï ¤® LinePerev
ret
@@:
jmp LinePerev
337,11 → 336,11
 
idbExit = 1
 
Lines = 16 ;êîëè÷åñòâ ñòðîê
Lines = 16 ;ª®«¨ç¥á⢠áâப
 
clTheme = 080B0FFh
 
Win1.Caption db 'Dictionary RUS -> ENG',0
Win1.Caption db 'Dictionary ENG -> RUS',0
Win1X = 524
Win1Y = 548
Win1W = 500
359,18 → 358,18
 
; msgNotFound:
; dw 0
; db 'Îøèáêà',0
; db 'Ôàéë dictionary.wrd íå íàéäåí',0
; db 'ßñíî',0
; db 'Žè¨¡ª ',0
; db '” ©« dictionary.wrd ­¥ ­ ©¤¥­',0
; db 'Ÿá­®',0
; db 0
;
; msgNotFound1:
; dw 0
; db '!!!',0
; db 'Îøèáêà ÷òåíèÿ '
; db 'Žè¨¡ª  ç⥭¨ï '
; NumErr: db 0
; db 0
; db 'ßñíî',0
; db 'Ÿá­®',0
; db 0
;
; WordFile db '.wrd',0