Small corrections

git-svn-id: svn://kolibrios.org@3683 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
GerdtR 2013-06-18 14:40:40 +00:00
parent 97b8aba9e2
commit ced1aca361

View File

@ -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 @@ start:
; 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 @@ start:
; 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 @@ Win1.Redraw:
mov ecx,(548*10000h+200)
mov edx,73FFFFFFh
mov edi,Win1.Caption
int 40h ;окно с прозрачным фонoм
int 40h ;®ª­® á ¯à®§à ç­ë¬ ä®­
mcall 9,ThreadInfo,-1
@ -81,9 +80,9 @@ Win1.Redraw:
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 @@ Win1.Exit:
ExitProcess
Win1.FonRedraw: ;перерисовка области вывода
Win1.FonRedraw: ;¯¥à¥à¨á®¢ª  ®¡« á⨠¢ë¢®¤ 
mcall 9,ThreadInfo,-1
mov eax,13
@ -139,12 +138,12 @@ jmp Win1.Events
;-------------------------------------------------------------------------------
Perevod: ;сам перевод
Perevod: ;á ¬ ¯¥à¥¢®¤
mov edi,dict;[filBuffer]
Perev:
xor ebx,ebx
@@: ;сравнием исх. слово со словом под esi
@@: ;áà ¢­¨¥¬ ¨áå. á«®¢® á® á«®¢®¬ ¯®¤ esi
mov al,[text+ebx]
test al,al
je endWord
@ -158,14 +157,14 @@ Perevod: ;
jne WordNotFound
add edi,ebx
dec edi ;пропускаем пробелы после английского слова
dec edi ;¯à®¯ã᪠¥¬ ¯à®¡¥«ë ¯®á«¥  ­£«¨©áª®£® á«®¢ 
@@:
inc edi
cmp byte[edi],20h
je @b
xor ebx,ebx
CopyWord: ;копируем перевод в строку для вывода
CopyWord: ;ª®¯¨à㥬 ¯¥à¥¢®¤ ¢ áâப㠤«ï ¢ë¢®¤ 
mov al,[edi+ebx]
cmp al,0Dh
je @f
@ -178,7 +177,7 @@ Perevod: ;
OutText 7,25,perevText
ret
WordNotFound: ;если слово не подошло
WordNotFound: ;¥á«¨ á«®¢® ­¥ ¯®¤®è«®
add edi,ebx
@@:
cmp byte[edi],0Dh
@ -201,9 +200,9 @@ Perevod: ;
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 @@ NextPerev:
jne N_Ppoisk
ret
N_Ppoisk: ;поиск начала строки
N_Ppoisk: ;¯®¨áª ­ ç «  áâப¨
add edi,ebx
@@:
dec edi
@ -225,7 +224,7 @@ NextPerev:
jne @b
inc edi
;########пропускаем уже переведённое слово########
;########¯à®¯ã᪠¥¬ 㦥 ¯¥à¥¢¥¤ñ­­®¥ á«®¢®########
xor ebx,ebx
N_NoDouble:
mov al,[text+ebx]
@ -248,8 +247,8 @@ NextPerev:
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 @@ NextPerev:
jne @b
inc edi
loop @f ;недотягивается до LinePerev
loop @f ;­¥¤®â¢ ¥âáï ¤® LinePerev
ret
@@:
jmp LinePerev
@ -337,11 +336,11 @@ NextPerev:
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 @@ NextPerev:
; 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