Subversion Repositories Kolibri OS

Rev

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

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