mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-23 23:26:49 +03:00
841 lines
13 KiB
NASM
841 lines
13 KiB
NASM
|
;
|
|||
|
; Slovarik 0.3.1 (10 August 2005)
|
|||
|
; DoomEd Archangel
|
|||
|
;
|
|||
|
|
|||
|
;*********HEADER************
|
|||
|
use32
|
|||
|
org 0x0
|
|||
|
db 'MENUET01'
|
|||
|
dd 0x01
|
|||
|
dd lblSTART
|
|||
|
dd lblIMG_END
|
|||
|
dd lblMEMORY
|
|||
|
dd lblSTACK
|
|||
|
dd 0x0,0x0
|
|||
|
;****************************
|
|||
|
include 'ascl.inc'
|
|||
|
lblSTART:
|
|||
|
|
|||
|
call load_ini ;Load ini file (path to last opened dictionary
|
|||
|
call load_dict ;Load dictionary
|
|||
|
|
|||
|
;----if no errors then continue
|
|||
|
|
|||
|
win_redraw:
|
|||
|
call draw_window
|
|||
|
|
|||
|
still:
|
|||
|
mov eax,10
|
|||
|
int 0x40
|
|||
|
cmp eax,1
|
|||
|
je win_redraw
|
|||
|
cmp eax,2
|
|||
|
je key_pressed
|
|||
|
cmp eax,3
|
|||
|
je button_pressed
|
|||
|
jmp still
|
|||
|
|
|||
|
|
|||
|
key_pressed:
|
|||
|
;mov eax,2
|
|||
|
int 0x40
|
|||
|
cmp ah,27
|
|||
|
je clear_all_2
|
|||
|
cmp ah,13
|
|||
|
je translate_now
|
|||
|
|
|||
|
cmp [inputboxpressed],1
|
|||
|
jne not_print
|
|||
|
|
|||
|
cmp ah,8
|
|||
|
jne not_backspace
|
|||
|
mov bl,[inputboxlen]
|
|||
|
cmp bl,1
|
|||
|
jb not_print
|
|||
|
dec [inputboxcurchar]
|
|||
|
dec [inputboxlen]
|
|||
|
xor ebx,ebx
|
|||
|
mov bl,[inputboxcurchar]
|
|||
|
mov byte [inputbox+ebx],0
|
|||
|
sub [xcursor],6
|
|||
|
call draw_inputbox
|
|||
|
call draw_cursor
|
|||
|
jmp still
|
|||
|
|
|||
|
not_backspace:
|
|||
|
cmp [inputboxlen],52
|
|||
|
je not_print
|
|||
|
xor ebx,ebx
|
|||
|
|
|||
|
mov bl,[inputboxcurchar]
|
|||
|
mov [inputbox+ebx],ah
|
|||
|
|
|||
|
inc [inputboxcurchar]
|
|||
|
inc [inputboxlen]
|
|||
|
call draw_inputbox
|
|||
|
|
|||
|
add [xcursor],6
|
|||
|
call draw_cursor
|
|||
|
not_print:
|
|||
|
|
|||
|
jmp still
|
|||
|
|
|||
|
button_pressed:
|
|||
|
mov eax,17
|
|||
|
int 0x40
|
|||
|
cmp ah,1
|
|||
|
je lbl_close_now
|
|||
|
cmp ah,2
|
|||
|
je inputbox_pressed
|
|||
|
cmp ah,3
|
|||
|
je translate_now
|
|||
|
cmp ah,4
|
|||
|
je change_dict
|
|||
|
jmp still
|
|||
|
|
|||
|
|
|||
|
draw_window:
|
|||
|
pusha
|
|||
|
mov eax,12
|
|||
|
mov ebx,1
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,0
|
|||
|
mov ebx,30*65536+400
|
|||
|
mov ecx,30*65536+170
|
|||
|
mov edx,0x03cccccc
|
|||
|
mov edi,0x00777777
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,4
|
|||
|
mov ebx,8*65536+8
|
|||
|
mov ecx,0xf0ffffff
|
|||
|
mov edx,win_header
|
|||
|
mov esi,win_header_l-win_header;8
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,4
|
|||
|
mov ebx,10*65536+41
|
|||
|
mov ecx,0x00000000
|
|||
|
mov edx,txtWord
|
|||
|
mov esi,txtWord_l-txtWord ; 6
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,4
|
|||
|
mov ebx,10*65536+67
|
|||
|
mov ecx,0x00000000
|
|||
|
mov edx,txtVariants
|
|||
|
mov esi,txtVariants_l-txtVariants ;9
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,4
|
|||
|
mov ebx,10*65536+91
|
|||
|
mov ecx,0x00000000
|
|||
|
mov edx,txtTranslate
|
|||
|
mov esi,txtTranslate_l-txtTranslate ;8
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,4
|
|||
|
mov ebx,10*65536+115
|
|||
|
mov ecx,0x00000000
|
|||
|
mov edx,txtTranscript
|
|||
|
mov esi,txtTranscript_l-txtTranscript ;9
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,8
|
|||
|
mov ebx,125*65536+150
|
|||
|
mov ecx,135*65536+20
|
|||
|
mov edx,3
|
|||
|
mov esi,0x00dddddd
|
|||
|
int 0x40
|
|||
|
mov eax,4
|
|||
|
mov ebx,168*65536+142
|
|||
|
mov ecx,0x00000000
|
|||
|
mov edx,txtTranslatenow
|
|||
|
mov esi,txtTranslatenow_l-txtTranslatenow ;9
|
|||
|
int 0x40
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
mov eax,8
|
|||
|
mov ebx,10*65536+50
|
|||
|
mov ecx,135*65536+20
|
|||
|
mov edx,4
|
|||
|
mov esi,0x00dddddd
|
|||
|
int 0x40
|
|||
|
mov eax,4
|
|||
|
mov ebx,14*65536+142
|
|||
|
mov ecx,0x00000000
|
|||
|
mov edx,txtChangeDict
|
|||
|
mov esi,txtChangeDict_l-txtChangeDict ;7
|
|||
|
int 0x40
|
|||
|
;-------------------------------
|
|||
|
call draw_inputbox
|
|||
|
call print_variants
|
|||
|
call print_trans_word
|
|||
|
call print_transcript
|
|||
|
;--------------------------------
|
|||
|
mov eax,12
|
|||
|
mov ebx,2
|
|||
|
int 0x40
|
|||
|
popa
|
|||
|
ret
|
|||
|
|
|||
|
draw_inputbox:
|
|||
|
mov eax,8
|
|||
|
mov ebx,68*65536+320
|
|||
|
mov ecx,38*65536+14
|
|||
|
mov edx,2
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,13
|
|||
|
mov ebx,68*65536+320
|
|||
|
mov ecx,38*65536+14
|
|||
|
mov edx,0x00ffffff
|
|||
|
int 0x40
|
|||
|
call draw_inputbox_text
|
|||
|
ret
|
|||
|
|
|||
|
draw_inputbox_text:
|
|||
|
mov eax,4
|
|||
|
mov ebx,70*65536+40
|
|||
|
mov ecx,0x00000000
|
|||
|
mov edx,inputbox
|
|||
|
mov esi,52
|
|||
|
int 0x40
|
|||
|
ret
|
|||
|
|
|||
|
draw_cursor:
|
|||
|
mov eax,13
|
|||
|
mov bx,[xcursor]
|
|||
|
shl ebx,16
|
|||
|
mov bx,1
|
|||
|
; mov ebx,68*65536+1
|
|||
|
mov ecx,40*65536+10
|
|||
|
mov edx,0x000000ff
|
|||
|
int 0x40
|
|||
|
ret
|
|||
|
; END DRAW WINDOW
|
|||
|
|
|||
|
;-------------------PROGRAM-------------------
|
|||
|
|
|||
|
lbl_close_now:
|
|||
|
call save_ini
|
|||
|
mov eax,-1
|
|||
|
int 0x40
|
|||
|
|
|||
|
inputbox_pressed:
|
|||
|
mov [inputboxpressed],1
|
|||
|
jmp still
|
|||
|
|
|||
|
print_variants:
|
|||
|
mov eax,13
|
|||
|
mov ebx,68*65536+320
|
|||
|
mov ecx,65*65536+14
|
|||
|
mov edx,0x00eeeeee
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,4
|
|||
|
mov ebx,70*65536+67
|
|||
|
mov ecx,0x00000000
|
|||
|
mov edx,variants
|
|||
|
mov esi,52
|
|||
|
int 0x40
|
|||
|
ret
|
|||
|
|
|||
|
translate_now:
|
|||
|
mov [inputboxpressed],0
|
|||
|
|
|||
|
mov edi,inputbox ;<3B><>।<EFBFBD><E0A5A4>塞 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD>
|
|||
|
mov ecx,52 ;50
|
|||
|
xor eax,eax
|
|||
|
repne scasb
|
|||
|
sub edi,inputbox
|
|||
|
dec edi
|
|||
|
mov [search_len],edi
|
|||
|
inc [search_len] ;------------increase
|
|||
|
|
|||
|
cmp [search_len],1
|
|||
|
je nothing_in_inputbox
|
|||
|
call count_dict_size
|
|||
|
|
|||
|
cmp [dict_size],0
|
|||
|
je still
|
|||
|
|
|||
|
call clear_tr_word
|
|||
|
call clear_variants
|
|||
|
call clear_transcript
|
|||
|
jmp search
|
|||
|
|
|||
|
count_dict_size:
|
|||
|
pusha
|
|||
|
mov edi,dictionary ;<3B><>।<EFBFBD><E0A5A4>塞 <20><><EFBFBD><EFBFBD><EFBFBD> <><E1ABAE><EFBFBD><EFBFBD>
|
|||
|
mov ecx,0x7FFFF
|
|||
|
xor eax,eax
|
|||
|
repne scasb
|
|||
|
sub edi,dictionary
|
|||
|
dec edi
|
|||
|
mov [dict_size],edi
|
|||
|
popa
|
|||
|
ret
|
|||
|
|
|||
|
nothing_in_inputbox:
|
|||
|
call clear_tr_word
|
|||
|
call clear_variants
|
|||
|
call clear_transcript
|
|||
|
cld
|
|||
|
mov esi,errNothingEntered
|
|||
|
mov edi,tr_word
|
|||
|
mov ecx,14
|
|||
|
rep movsb
|
|||
|
jmp win_redraw
|
|||
|
|
|||
|
clear_inputbox:
|
|||
|
cld
|
|||
|
mov edi,inputbox
|
|||
|
mov ecx,13 ;52/4
|
|||
|
xor eax,eax
|
|||
|
rep stosd
|
|||
|
mov [inputboxcurchar],0
|
|||
|
mov [xcursor],69
|
|||
|
ret
|
|||
|
|
|||
|
clear_tr_word:
|
|||
|
cld
|
|||
|
mov edi,tr_word
|
|||
|
mov ecx,13 ;52/4
|
|||
|
xor eax,eax
|
|||
|
rep stosd
|
|||
|
ret
|
|||
|
|
|||
|
clear_variants:
|
|||
|
cld
|
|||
|
mov edi,variants
|
|||
|
mov ecx,13 ;52/4
|
|||
|
xor eax,eax
|
|||
|
rep stosd
|
|||
|
ret
|
|||
|
|
|||
|
clear_transcript:
|
|||
|
cld
|
|||
|
mov edi,trscript_word
|
|||
|
mov ecx,13 ;52/4
|
|||
|
xor eax,eax
|
|||
|
rep stosd
|
|||
|
ret
|
|||
|
|
|||
|
clear_all_in_1:
|
|||
|
cld
|
|||
|
mov edi,inputbox ; 52*4 = 208 / 4 = 52
|
|||
|
mov ecx,52
|
|||
|
xor eax,eax
|
|||
|
rep stosd
|
|||
|
mov [inputboxpressed],1
|
|||
|
mov [inputboxcurchar],0
|
|||
|
mov [xcursor],69
|
|||
|
|
|||
|
|
|||
|
ret
|
|||
|
|
|||
|
clear_all_2:
|
|||
|
call clear_all_in_1
|
|||
|
call draw_window
|
|||
|
jmp still
|
|||
|
|
|||
|
print_trans_word:
|
|||
|
|
|||
|
mov eax,13
|
|||
|
mov ebx,68*65536+320
|
|||
|
mov ecx,89*65536+14
|
|||
|
mov edx,0x00eeeeee
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,4
|
|||
|
mov ebx,70*65536+91
|
|||
|
mov ecx,0x00000000
|
|||
|
mov edx,tr_word
|
|||
|
mov esi,52
|
|||
|
int 0x40
|
|||
|
ret
|
|||
|
|
|||
|
trans_not_found:
|
|||
|
cld
|
|||
|
mov esi,tr_not_found_text
|
|||
|
mov edi,tr_word
|
|||
|
mov ecx,18 ;200
|
|||
|
rep movsb
|
|||
|
call clear_transcript
|
|||
|
call clear_variants
|
|||
|
call draw_window
|
|||
|
ret
|
|||
|
|
|||
|
print_transcript:
|
|||
|
mov eax,13
|
|||
|
mov ebx,68*65536+320
|
|||
|
mov ecx,113*65536+14
|
|||
|
mov edx,0x00eeeeee
|
|||
|
int 0x40
|
|||
|
|
|||
|
mov eax,4
|
|||
|
mov ebx,70*65536+115
|
|||
|
mov ecx,0x00000000
|
|||
|
mov edx,trscript_word
|
|||
|
mov esi,52
|
|||
|
int 0x40
|
|||
|
ret
|
|||
|
;-----------------------------------------------------
|
|||
|
; <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
search:
|
|||
|
xor esi,esi
|
|||
|
mov edi,dictionary ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>
|
|||
|
mov ecx,[dict_size] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>
|
|||
|
|
|||
|
news:
|
|||
|
push edi
|
|||
|
news2:
|
|||
|
|
|||
|
; 1) LOAD BYTES
|
|||
|
mov al,[esi+inputboxplus] ; [esi+inputbox]
|
|||
|
mov bl,[edi]
|
|||
|
|
|||
|
; 2) COMPARE BYTES
|
|||
|
cmp al,bl
|
|||
|
je yes_char
|
|||
|
|
|||
|
; 3) LETTER?
|
|||
|
cmp al,'A'
|
|||
|
jb notequal
|
|||
|
cmp al,'<27>'
|
|||
|
ja notequal
|
|||
|
;----------
|
|||
|
|
|||
|
cmp al,'z' ;122 ;z=122
|
|||
|
jbe cpLAT
|
|||
|
;cpCYR
|
|||
|
;---------------------TEST
|
|||
|
cmp al,'<27>' ;cyr A
|
|||
|
jb .bigletter ;if letter<128
|
|||
|
;--------
|
|||
|
cmp al,'<27>'
|
|||
|
jae .more_175 ;if letter>175
|
|||
|
sub al,32
|
|||
|
jmp compare_bytes
|
|||
|
.more_175:
|
|||
|
sub al,80
|
|||
|
jmp compare_bytes
|
|||
|
|
|||
|
.bigletter:
|
|||
|
cmp al,'<27>'
|
|||
|
jae .more_175_2
|
|||
|
add al,32
|
|||
|
jmp compare_bytes
|
|||
|
.more_175_2:
|
|||
|
add al,80
|
|||
|
jmp compare_bytes
|
|||
|
;---------------TEST
|
|||
|
|
|||
|
;cpLAT
|
|||
|
cpLAT:
|
|||
|
; 4) A->a OR a->A
|
|||
|
cmp al,'a'
|
|||
|
jb @f
|
|||
|
add al,-32
|
|||
|
jmp compare_bytes
|
|||
|
@@:
|
|||
|
cmp al,'Z'
|
|||
|
ja notequal
|
|||
|
add al,32
|
|||
|
;-----
|
|||
|
compare_bytes:
|
|||
|
cmp al,bl
|
|||
|
jne notequal
|
|||
|
|
|||
|
yes_char:
|
|||
|
inc edi
|
|||
|
inc esi
|
|||
|
cmp esi,[search_len]
|
|||
|
jge sfound
|
|||
|
jmp news2
|
|||
|
|
|||
|
notequal:
|
|||
|
pop edi
|
|||
|
xor esi,esi
|
|||
|
inc edi
|
|||
|
loop news
|
|||
|
call trans_not_found
|
|||
|
jmp still
|
|||
|
|
|||
|
sfound:
|
|||
|
mov [total_smesh],edi ;ᬥ饭<E1ACA5><E9A5AD> <20><> 䠩<><E4A0A9> <><E1ABAE><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
;-------------------
|
|||
|
;-------search for transcription
|
|||
|
|
|||
|
mov esi,[total_smesh]
|
|||
|
cld
|
|||
|
again0:
|
|||
|
lodsb
|
|||
|
cmp al,'|'
|
|||
|
jne again0
|
|||
|
|
|||
|
mov [starting_transcrtiontion],esi
|
|||
|
|
|||
|
cld
|
|||
|
again00:
|
|||
|
lodsb
|
|||
|
cmp al,'|' ;13
|
|||
|
jne again00
|
|||
|
mov [ending_transcrtiontion],esi
|
|||
|
mov eax,[starting_transcrtiontion]
|
|||
|
sub [ending_transcrtiontion],eax
|
|||
|
dec [ending_transcrtiontion]
|
|||
|
|
|||
|
|
|||
|
|
|||
|
cld ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov esi,[starting_transcrtiontion]
|
|||
|
mov edi,trscript_word
|
|||
|
mov ecx,[ending_transcrtiontion]
|
|||
|
rep movsb
|
|||
|
|
|||
|
;-------search for translation
|
|||
|
mov esi,[starting_transcrtiontion]
|
|||
|
add esi,[ending_transcrtiontion]
|
|||
|
cld
|
|||
|
again:
|
|||
|
lodsb
|
|||
|
cmp al,'|'
|
|||
|
jne again
|
|||
|
|
|||
|
mov [starting_kav],esi
|
|||
|
|
|||
|
cld
|
|||
|
again2:
|
|||
|
lodsb
|
|||
|
cmp al,10 ;13
|
|||
|
jne again2
|
|||
|
mov [ending_kav],esi
|
|||
|
mov eax,[starting_kav]
|
|||
|
sub [ending_kav],eax
|
|||
|
dec [ending_kav]
|
|||
|
|
|||
|
;-----------------------------------------------
|
|||
|
|
|||
|
cld ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov esi,[starting_kav]
|
|||
|
mov edi,tr_word
|
|||
|
mov ecx,[ending_kav]
|
|||
|
rep movsb
|
|||
|
|
|||
|
;--------
|
|||
|
;search backward
|
|||
|
|
|||
|
|
|||
|
mov esi,[total_smesh]
|
|||
|
|
|||
|
cld
|
|||
|
again3:
|
|||
|
lodsb
|
|||
|
cmp al,'|'
|
|||
|
jne again3
|
|||
|
mov [endingword],esi
|
|||
|
dec [endingword]
|
|||
|
again4:
|
|||
|
dec esi
|
|||
|
dec esi
|
|||
|
|
|||
|
cld
|
|||
|
lodsb
|
|||
|
cmp al,10 ;13;' '
|
|||
|
jne again4
|
|||
|
mov [startingword],esi
|
|||
|
mov eax,[startingword]
|
|||
|
sub [endingword],eax
|
|||
|
|
|||
|
|
|||
|
cld ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov esi,[startingword]
|
|||
|
mov edi,variants
|
|||
|
mov ecx,[endingword]
|
|||
|
rep movsb
|
|||
|
|
|||
|
;-----------------------------------------------
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
call draw_window
|
|||
|
jmp still
|
|||
|
|
|||
|
|
|||
|
;-----------------------------------------------------
|
|||
|
|
|||
|
;---clear dictionary
|
|||
|
clear_dict:
|
|||
|
mov edi,dictionary
|
|||
|
mov ecx,131072 ; 0x80000 / 4
|
|||
|
xor eax,eax
|
|||
|
rep stosd
|
|||
|
ret
|
|||
|
|
|||
|
;---- change dictionary
|
|||
|
change_dict:
|
|||
|
opendialog draw_window,open_ok,open_err,fileinfo.path
|
|||
|
open_ok:
|
|||
|
call clear_dict
|
|||
|
call clear_all_in_1
|
|||
|
call load_dict
|
|||
|
jmp still
|
|||
|
open_err:
|
|||
|
call load_dict.call_error
|
|||
|
jmp still
|
|||
|
|
|||
|
|
|||
|
;---- load dictionary
|
|||
|
load_dict:
|
|||
|
;-open from ASCL 9
|
|||
|
mov dword [fileinfo+8],1
|
|||
|
mov eax,58
|
|||
|
mov ebx,fileinfo
|
|||
|
int 0x40
|
|||
|
mov eax,[dictionary+2]
|
|||
|
shr eax,9
|
|||
|
inc eax
|
|||
|
mov dword [fileinfo+8],eax
|
|||
|
mov eax,58
|
|||
|
mov ebx,fileinfo
|
|||
|
int 0x40
|
|||
|
;--------
|
|||
|
cmp eax,0 ;0- open ok
|
|||
|
je .return ; win_redraw
|
|||
|
cmp eax,5 ;5- open ok
|
|||
|
je .return
|
|||
|
cmp eax,6 ;6- open ok???????????
|
|||
|
je .return
|
|||
|
; if we can't open the dictionary
|
|||
|
.call_error:
|
|||
|
cld
|
|||
|
mov esi,errDictNotFound
|
|||
|
mov edi,tr_word
|
|||
|
mov ecx,errDictNotFound_l-errDictNotFound ;23
|
|||
|
rep movsb
|
|||
|
|
|||
|
call draw_window
|
|||
|
|
|||
|
mov eax,5 ;delay
|
|||
|
mov ebx,100 ;1 sec
|
|||
|
int 0x40
|
|||
|
|
|||
|
.return:
|
|||
|
call check_header
|
|||
|
ret
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;--- copy path to dictionary
|
|||
|
copy_path:
|
|||
|
call count_dict_size ;int [dict_size] will be size of path to dictionary
|
|||
|
mov esi,dictionary
|
|||
|
mov edi,fileinfo.path ;40
|
|||
|
mov ecx,[dict_size]
|
|||
|
cld
|
|||
|
rep movsb
|
|||
|
ret
|
|||
|
|
|||
|
|
|||
|
;----------load config file
|
|||
|
load_ini:
|
|||
|
cld
|
|||
|
mov esi,fileinfo_ini.inipath
|
|||
|
mov edi,fileinfo.path
|
|||
|
mov ecx,19
|
|||
|
rep movsb
|
|||
|
|
|||
|
mov eax,58
|
|||
|
mov ebx,fileinfo
|
|||
|
int 0x40
|
|||
|
|
|||
|
call copy_path
|
|||
|
mov [dict_size],0
|
|||
|
call clear_dict
|
|||
|
ret
|
|||
|
;----------------------------
|
|||
|
|
|||
|
clear_fileinfo_path:
|
|||
|
mov edi,fileinfo.path
|
|||
|
mov ecx,256/4
|
|||
|
xor eax,eax
|
|||
|
rep stosd
|
|||
|
ret
|
|||
|
|
|||
|
;-------save config file
|
|||
|
save_ini:
|
|||
|
cmp dword [dictionary],0
|
|||
|
jne .save
|
|||
|
|
|||
|
call clear_fileinfo_path
|
|||
|
|
|||
|
cld
|
|||
|
mov esi,default_dict_path
|
|||
|
mov edi,fileinfo.path
|
|||
|
mov ecx,14
|
|||
|
rep movsb
|
|||
|
|
|||
|
.save:
|
|||
|
mov edi,fileinfo.path ;<3B><>।<EFBFBD><E0A5A4>塞 <20><><EFBFBD><EFBFBD><EFBFBD> <><E1ABAE><EFBFBD><EFBFBD>
|
|||
|
mov ecx,256
|
|||
|
xor eax,eax
|
|||
|
repne scasb
|
|||
|
sub edi,fileinfo.path
|
|||
|
dec edi
|
|||
|
mov [fileinfo_ini.size],edi
|
|||
|
|
|||
|
mov eax,58
|
|||
|
mov ebx,fileinfo_ini
|
|||
|
int 0x40
|
|||
|
|
|||
|
ret
|
|||
|
|
|||
|
;------ check dictionary header
|
|||
|
check_header:
|
|||
|
|
|||
|
mov eax,'DICT'
|
|||
|
cmp dword [dictionary],eax
|
|||
|
je .return
|
|||
|
call clear_tr_word
|
|||
|
cld
|
|||
|
mov esi,errDictHeader
|
|||
|
mov edi,tr_word
|
|||
|
mov ecx,errDictHeader_l-errDictHeader ;23
|
|||
|
rep movsb
|
|||
|
.return:
|
|||
|
ret
|
|||
|
|
|||
|
|
|||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|||
|
;;;;;;;;;;;data;;;;;;;;;;;;
|
|||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
win_header:
|
|||
|
db '<27><><EFBFBD><EFBFBD><EFBFBD>ਪ'
|
|||
|
win_header_l:
|
|||
|
|
|||
|
tr_not_found_text:
|
|||
|
db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!'
|
|||
|
tr_not_found_text_l:
|
|||
|
|
|||
|
txtWord:
|
|||
|
db '<27><><EFBFBD><EFBFBD><EFBFBD>:'
|
|||
|
txtWord_l:
|
|||
|
|
|||
|
txtTranslate:
|
|||
|
db '<27><>ॢ<EFBFBD><E0A5A2>:'
|
|||
|
txtTranslate_l:
|
|||
|
|
|||
|
txtVariants:
|
|||
|
db '<27><>ਠ<EFBFBD><E0A8A0><EFBFBD>:'
|
|||
|
txtVariants_l:
|
|||
|
|
|||
|
errDictNotFound:
|
|||
|
db '<27>訡<EFBFBD><E8A8A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>⨥ <20>⬥<EFBFBD><E2ACA5><EFBFBD><EFBFBD>!'
|
|||
|
errDictNotFound_l:
|
|||
|
|
|||
|
txtTranslatenow:
|
|||
|
db '<27><>ॢ<EFBFBD><E0A5A2><EFBFBD><EFBFBD>'
|
|||
|
txtTranslatenow_l:
|
|||
|
|
|||
|
errNothingEntered:
|
|||
|
db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <><E1ABAE>!'
|
|||
|
errNothingEntered_l:
|
|||
|
|
|||
|
txtTranscript:
|
|||
|
db '<27>࠭<EFBFBD><E0A0AD><EFBFBD>.:'
|
|||
|
txtTranscript_l:
|
|||
|
|
|||
|
txtChangeDict:
|
|||
|
db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
txtChangeDict_l:
|
|||
|
|
|||
|
errDictHeader:
|
|||
|
db '<27><><EFBFBD><EFBFBD> 䠩<> <20><> <><EFA2AB><EFBFBD><EFBFBD><EFBFBD> <><E1ABAE>६!'
|
|||
|
errDictHeader_l:
|
|||
|
|
|||
|
xcursor dw 69
|
|||
|
|
|||
|
default_dict_path db '/RD/1/DICT.TXT'
|
|||
|
|
|||
|
fileinfo_ini:
|
|||
|
.oper:
|
|||
|
dd 1
|
|||
|
dd 0x0
|
|||
|
.size:
|
|||
|
dd 256
|
|||
|
dd fileinfo.path
|
|||
|
dd os_work_mem
|
|||
|
.inipath:
|
|||
|
db '/rd/1/slovarik.ini',0
|
|||
|
|
|||
|
fileinfo:
|
|||
|
dd 0 ; 0 = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
dd 0x0 ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9> (512 <20><><EFBFBD><EFBFBD>, <20>㬥<EFBFBD><E3ACA5><EFBFBD><EFBFBD><EFBFBD> <20><>稭<EFBFBD><E7A8AD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>)
|
|||
|
dd 0x1 ; <>쪮 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0>
|
|||
|
dd dictionary ; <20>㤠 <20><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0>
|
|||
|
dd os_work_mem ; 0x10000 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ࠡ<><E0A0A1><EFBFBD> <20><> - 4096 <20><><EFBFBD><EFBFBD>
|
|||
|
.path:
|
|||
|
db '',0 ;'/RD/1/DICT.TXT',0
|
|||
|
|
|||
|
lblIMG_END:
|
|||
|
rb 257 ;times 257 db 0 ;for path
|
|||
|
|
|||
|
|
|||
|
starting_kav dd 0
|
|||
|
ending_kav dd 0
|
|||
|
starting_transcrtiontion dd 0
|
|||
|
ending_transcrtiontion dd 0
|
|||
|
|
|||
|
total_smesh dd 0
|
|||
|
|
|||
|
inputboxpressed db 0
|
|||
|
search_len dd 0
|
|||
|
inputboxcurchar db 0
|
|||
|
inputboxlen db 0
|
|||
|
|
|||
|
inputboxplus:
|
|||
|
;db ' '
|
|||
|
db 10 ;for search
|
|||
|
|
|||
|
inputbox:
|
|||
|
rb 52 ;times 52 db 0
|
|||
|
|
|||
|
tr_word:
|
|||
|
rb 52 ;times 52 db 0
|
|||
|
|
|||
|
trscript_word:
|
|||
|
rb 52 ;times 52 db 0
|
|||
|
|
|||
|
variants:
|
|||
|
rb 52 ;times 52 db 0
|
|||
|
|
|||
|
startingword dd 0
|
|||
|
endingword dd 0
|
|||
|
|
|||
|
|
|||
|
dict_size dd 0
|
|||
|
|
|||
|
dictionary:
|
|||
|
rb 0x80000;~524 kb for dictionary
|
|||
|
;0x100000 ;1 mb for future BIG dictionary :)
|
|||
|
|
|||
|
os_work_mem:
|
|||
|
rb 0x10000
|
|||
|
|
|||
|
rb 4096
|
|||
|
lblMEMORY:
|
|||
|
lblSTACK:
|