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 "../../macros.inc"
include "../../proc32.inc" include "../../proc32.inc"
include "API.inc"
include "../../dll.inc" include "../../dll.inc"
include '../../develop/libraries/box_lib/trunk/box_lib.mac' include '../../develop/libraries/box_lib/trunk/box_lib.mac'
include '../../develop/libraries/box_lib/load_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: start:
mcall 68,11 ;инициализируем кучу mcall 68,11 ;¨­¨æ¨ «¨§¨à㥬 ªãçã
test eax,eax test eax,eax
jz Win1.Exit jz Win1.Exit
stdcall dll.Load, @IMPORT stdcall dll.Load, @IMPORT
@ -40,8 +39,8 @@ start:
; test al,al ; test al,al
; jne @b ; jne @b
;GetFileInfo fStruc,pathprog,fInfo ;проверка на наличие файла ;GetFileInfo fStruc,pathprog,fInfo ;¯à®¢¥àª  ­  ­ «¨ç¨¥ ä ©« 
;test eax,eax ;заодно и получу размер файла ;test eax,eax ;§ ®¤­® ¨ ¯®«ãçã à §¬¥à ä ©« 
;je WordFileOK ;je WordFileOK
;stdcall [mb_create],msgNotFound,mbThread ;stdcall [mb_create],msgNotFound,mbThread
@ -51,7 +50,7 @@ start:
; stdcall mem.Alloc,dword [fInfo+32] ; stdcall mem.Alloc,dword [fInfo+32]
; mov ebx,dword [fInfo+32] ; mov ebx,dword [fInfo+32]
; mov [filBuffer],eax ; mov [filBuffer],eax
; add dword[fInfo+32],eax ;здесь хранится указатель на конец буфера ; add dword[fInfo+32],eax ;§¤¥áì åà ­¨âáï 㪠§ â¥«ì ­  ª®­¥æ ¡ãä¥à 
; ReadFile fStruc,pathprog,ebx,eax,0 ; ReadFile fStruc,pathprog,ebx,eax,0
; test eax,eax ; test eax,eax
; jz Win1.Redraw ; jz Win1.Redraw
@ -71,7 +70,7 @@ Win1.Redraw:
mov ecx,(548*10000h+200) mov ecx,(548*10000h+200)
mov edx,73FFFFFFh mov edx,73FFFFFFh
mov edi,Win1.Caption mov edi,Win1.Caption
int 40h ;окно с прозрачным фонoм int 40h ;®ª­® á ¯à®§à ç­ë¬ ä®­
mcall 9,ThreadInfo,-1 mcall 9,ThreadInfo,-1
@ -81,9 +80,9 @@ Win1.Redraw:
mov ecx,[ThreadInfo+42h] mov ecx,[ThreadInfo+42h]
inc ecx inc ecx
mov edx,clWhite mov edx,clWhite
int 40h ;а теперь не прозрачным:) int 40h ;  ⥯¥àì ­¥ ¯à®§à ç­ë¬:)
call Perevod ; в перерисовке сразу переводим введённое слово call Perevod ; ¢ ¯¥à¥à¨á®¢ª¥ áࠧ㠯¥à¥¢®¤¨¬ ¢¢¥¤ñ­­®¥ á«®¢®
call NextPerev call NextPerev
stdcall [edit_box_draw],EditIN stdcall [edit_box_draw],EditIN
RedrawWinEnd RedrawWinEnd
@ -120,7 +119,7 @@ Win1.Exit:
ExitProcess ExitProcess
Win1.FonRedraw: ;перерисовка области вывода Win1.FonRedraw: ;¯¥à¥à¨á®¢ª  ®¡« á⨠¢ë¢®¤ 
mcall 9,ThreadInfo,-1 mcall 9,ThreadInfo,-1
mov eax,13 mov eax,13
@ -139,12 +138,12 @@ jmp Win1.Events
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
Perevod: ;сам перевод Perevod: ;á ¬ ¯¥à¥¢®¤
mov edi,dict;[filBuffer] mov edi,dict;[filBuffer]
Perev: Perev:
xor ebx,ebx xor ebx,ebx
@@: ;сравнием исх. слово со словом под esi @@: ;áà ¢­¨¥¬ ¨áå. á«®¢® á® á«®¢®¬ ¯®¤ esi
mov al,[text+ebx] mov al,[text+ebx]
test al,al test al,al
je endWord je endWord
@ -158,14 +157,14 @@ Perevod: ;
jne WordNotFound jne WordNotFound
add edi,ebx add edi,ebx
dec edi ;пропускаем пробелы после английского слова dec edi ;¯à®¯ã᪠¥¬ ¯à®¡¥«ë ¯®á«¥  ­£«¨©áª®£® á«®¢ 
@@: @@:
inc edi inc edi
cmp byte[edi],20h cmp byte[edi],20h
je @b je @b
xor ebx,ebx xor ebx,ebx
CopyWord: ;копируем перевод в строку для вывода CopyWord: ;ª®¯¨à㥬 ¯¥à¥¢®¤ ¢ áâப㠤«ï ¢ë¢®¤ 
mov al,[edi+ebx] mov al,[edi+ebx]
cmp al,0Dh cmp al,0Dh
je @f je @f
@ -178,7 +177,7 @@ Perevod: ;
OutText 7,25,perevText OutText 7,25,perevText
ret ret
WordNotFound: ;если слово не подошло WordNotFound: ;¥á«¨ á«®¢® ­¥ ¯®¤®è«®
add edi,ebx add edi,ebx
@@: @@:
cmp byte[edi],0Dh cmp byte[edi],0Dh
@ -201,9 +200,9 @@ Perevod: ;
NextPerev: NextPerev:
mov ecx,Lines mov ecx,Lines
mov edi,dict;[filBuffer] mov edi,dict;[filBuffer]
LinePerev: ;цикл рисования строки LinePerev: ;横« à¨á®¢ ­¨ï áâப¨
xor ebx,ebx xor ebx,ebx
@@: ;сравнием исх. слово со словом под esi @@: ;áà ¢­¨¥¬ ¨áå. á«®¢® á® á«®¢®¬ ¯®¤ esi
mov al,[text+ebx] mov al,[text+ebx]
test al,al test al,al
je N_endWord je N_endWord
@ -217,7 +216,7 @@ NextPerev:
jne N_Ppoisk jne N_Ppoisk
ret ret
N_Ppoisk: ;поиск начала строки N_Ppoisk: ;¯®¨áª ­ ç «  áâப¨
add edi,ebx add edi,ebx
@@: @@:
dec edi dec edi
@ -225,7 +224,7 @@ NextPerev:
jne @b jne @b
inc edi inc edi
;########пропускаем уже переведённое слово######## ;########¯à®¯ã᪠¥¬ 㦥 ¯¥à¥¢¥¤ñ­­®¥ á«®¢®########
xor ebx,ebx xor ebx,ebx
N_NoDouble: N_NoDouble:
mov al,[text+ebx] mov al,[text+ebx]
@ -248,8 +247,8 @@ NextPerev:
add edi,2 add edi,2
jmp LinePerev jmp LinePerev
N_NoDblOk: ;############вывод результатов#################### N_NoDblOk: ;############¢ë¢®¤ १ã«ìâ â®¢####################
xor ebx,ebx ;копируем результат xor ebx,ebx ;ª®¯¨à㥬 १ã«ìâ â
N_CopyWord: N_CopyWord:
mov al,[edi+ebx] mov al,[edi+ebx]
cmp al,20h cmp al,20h
@ -306,7 +305,7 @@ NextPerev:
jne @b jne @b
inc edi inc edi
loop @f ;недотягивается до LinePerev loop @f ;­¥¤®â¢ ¥âáï ¤® LinePerev
ret ret
@@: @@:
jmp LinePerev jmp LinePerev
@ -337,11 +336,11 @@ NextPerev:
idbExit = 1 idbExit = 1
Lines = 16 ;количеств строк Lines = 16 ;ª®«¨ç¥á⢠áâப
clTheme = 080B0FFh clTheme = 080B0FFh
Win1.Caption db 'Dictionary RUS -> ENG',0 Win1.Caption db 'Dictionary ENG -> RUS',0
Win1X = 524 Win1X = 524
Win1Y = 548 Win1Y = 548
Win1W = 500 Win1W = 500
@ -359,18 +358,18 @@ NextPerev:
; msgNotFound: ; msgNotFound:
; dw 0 ; dw 0
; db 'Ошибка',0 ; db 'Žè¨¡ª ',0
; db 'Файл dictionary.wrd не найден',0 ; db '” ©« dictionary.wrd ­¥ ­ ©¤¥­',0
; db 'Ясно',0 ; db 'Ÿá­®',0
; db 0 ; db 0
; ;
; msgNotFound1: ; msgNotFound1:
; dw 0 ; dw 0
; db '!!!',0 ; db '!!!',0
; db 'Ошибка чтения ' ; db 'Žè¨¡ª  ç⥭¨ï '
; NumErr: db 0 ; NumErr: db 0
; db 0 ; db 0
; db 'Ясно',0 ; db 'Ÿá­®',0
; db 0 ; db 0
; ;
; WordFile db '.wrd',0 ; WordFile db '.wrd',0