Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. ;
  2. ;     Slovarik 0.3.1 (10 August 2005)
  3. ;                    DoomEd Archangel
  4. ;
  5.  
  6. ;*********HEADER************
  7.         use32
  8.         org 0x0
  9.         db 'MENUET01'
  10.         dd 0x01
  11.         dd lblSTART
  12.         dd lblIMG_END
  13.         dd lblMEMORY
  14.         dd lblSTACK
  15.         dd 0x0,0x0
  16. ;****************************
  17. include 'ascl.inc'
  18. lblSTART:
  19.  
  20.         call load_ini  ;Load ini file (path to last opened dictionary
  21.         call load_dict ;Load dictionary
  22.  
  23. ;----if no errors then continue
  24.  
  25. win_redraw:
  26. call draw_window
  27.  
  28. still:
  29.         mov eax,10
  30.         int 0x40
  31.         cmp eax,1
  32.         je win_redraw
  33.         cmp eax,2
  34.         je key_pressed
  35.         cmp eax,3
  36.         je button_pressed
  37. jmp still
  38.  
  39.  
  40. key_pressed:
  41.         ;mov eax,2
  42.         int 0x40
  43.         cmp ah,27
  44.         je clear_all_2
  45.         cmp ah,13
  46.         je translate_now
  47.  
  48.         cmp [inputboxpressed],1
  49.         jne not_print
  50.  
  51.         cmp ah,8
  52.         jne not_backspace
  53.         mov bl,[inputboxlen]
  54.         cmp bl,1
  55.         jb not_print
  56.         dec [inputboxcurchar]
  57.         dec [inputboxlen]
  58.         xor ebx,ebx
  59.         mov bl,[inputboxcurchar]
  60.         mov byte [inputbox+ebx],0
  61.         sub [xcursor],6
  62.         call draw_inputbox
  63.         call draw_cursor
  64.         jmp still
  65.  
  66.         not_backspace:
  67.         cmp [inputboxlen],52
  68.         je not_print
  69.         xor ebx,ebx
  70.  
  71.         mov bl,[inputboxcurchar]
  72.         mov [inputbox+ebx],ah
  73.  
  74.         inc [inputboxcurchar]
  75.         inc [inputboxlen]
  76.         call draw_inputbox
  77.  
  78.         add [xcursor],6
  79.         call draw_cursor
  80.         not_print:
  81.  
  82. jmp still
  83.  
  84. button_pressed:
  85.         mov eax,17
  86.         int 0x40
  87.         cmp ah,1
  88.         je lbl_close_now
  89.         cmp ah,2
  90.         je inputbox_pressed
  91.         cmp ah,3
  92.         je translate_now
  93.         cmp ah,4
  94.         je change_dict
  95. jmp still
  96.  
  97.  
  98. draw_window:
  99. pusha
  100.         mov eax,12
  101.         mov ebx,1
  102.         int 0x40
  103.  
  104.         mov eax,0
  105.         mov ebx,30*65536+400
  106.         mov ecx,30*65536+170
  107.         mov edx,0x03cccccc
  108.         mov edi,0x00777777
  109.         int 0x40
  110.  
  111.         mov eax,4
  112.         mov ebx,8*65536+8
  113.         mov ecx,0xf0ffffff
  114.         mov edx,win_header
  115.         mov esi,win_header_l-win_header;8
  116.         int 0x40
  117.  
  118.         mov eax,4
  119.         mov ebx,10*65536+41
  120.         mov ecx,0x00000000
  121.         mov edx,txtWord
  122.         mov esi,txtWord_l-txtWord ; 6
  123.         int 0x40
  124.  
  125.         mov eax,4
  126.         mov ebx,10*65536+67
  127.         mov ecx,0x00000000
  128.         mov edx,txtVariants
  129.         mov esi,txtVariants_l-txtVariants ;9
  130.         int 0x40
  131.  
  132.         mov eax,4
  133.         mov ebx,10*65536+91
  134.         mov ecx,0x00000000
  135.         mov edx,txtTranslate
  136.         mov esi,txtTranslate_l-txtTranslate ;8
  137.         int 0x40
  138.  
  139.         mov eax,4
  140.         mov ebx,10*65536+115
  141.         mov ecx,0x00000000
  142.         mov edx,txtTranscript
  143.         mov esi,txtTranscript_l-txtTranscript ;9
  144.         int 0x40
  145.  
  146.         mov eax,8
  147.         mov ebx,125*65536+150
  148.         mov ecx,135*65536+20
  149.         mov edx,3
  150.         mov esi,0x00dddddd
  151.         int 0x40
  152.         mov eax,4
  153.         mov ebx,168*65536+142
  154.         mov ecx,0x00000000
  155.         mov edx,txtTranslatenow
  156.         mov esi,txtTranslatenow_l-txtTranslatenow ;9
  157.         int 0x40
  158.  
  159.  
  160.  
  161.  
  162.         mov eax,8
  163.         mov ebx,10*65536+50
  164.         mov ecx,135*65536+20
  165.         mov edx,4
  166.         mov esi,0x00dddddd
  167.         int 0x40
  168.         mov eax,4
  169.         mov ebx,14*65536+142
  170.         mov ecx,0x00000000
  171.         mov edx,txtChangeDict
  172.         mov esi,txtChangeDict_l-txtChangeDict  ;7
  173.         int 0x40
  174. ;-------------------------------
  175.         call draw_inputbox
  176.         call print_variants
  177.         call print_trans_word
  178.         call print_transcript
  179. ;--------------------------------
  180.         mov eax,12
  181.         mov ebx,2
  182.         int 0x40
  183. popa
  184. ret
  185.  
  186. draw_inputbox:
  187.         mov eax,8
  188.         mov ebx,68*65536+320
  189.         mov ecx,38*65536+14
  190.         mov edx,2
  191.         int 0x40
  192.  
  193.         mov eax,13
  194.         mov ebx,68*65536+320
  195.         mov ecx,38*65536+14
  196.         mov edx,0x00ffffff
  197.         int 0x40
  198.         call draw_inputbox_text
  199. ret
  200.  
  201. draw_inputbox_text:
  202.         mov eax,4
  203.         mov ebx,70*65536+40
  204.         mov ecx,0x00000000
  205.         mov edx,inputbox
  206.         mov esi,52
  207.         int 0x40
  208. ret
  209.  
  210. draw_cursor:
  211.         mov eax,13
  212.         mov bx,[xcursor]
  213.         shl ebx,16
  214.         mov bx,1
  215. ;        mov ebx,68*65536+1
  216.         mov ecx,40*65536+10
  217.         mov edx,0x000000ff
  218.         int 0x40
  219. ret
  220. ; END DRAW WINDOW
  221.  
  222. ;-------------------PROGRAM-------------------
  223.  
  224. lbl_close_now:
  225.         call save_ini
  226.         mov eax,-1
  227.         int 0x40
  228.  
  229. inputbox_pressed:
  230.         mov [inputboxpressed],1
  231. jmp still
  232.  
  233. print_variants:
  234.         mov eax,13
  235.         mov ebx,68*65536+320
  236.         mov ecx,65*65536+14
  237.         mov edx,0x00eeeeee
  238.         int 0x40
  239.  
  240.         mov eax,4
  241.         mov ebx,70*65536+67
  242.         mov ecx,0x00000000
  243.         mov edx,variants
  244.         mov esi,52
  245.         int 0x40
  246. ret
  247.  
  248. translate_now:
  249.         mov [inputboxpressed],0
  250.  
  251.         mov    edi,inputbox     ;®¯à¥¤¥«ï¥¬ ¤«¨­ã ¢¢¥¤ñ­­®© áâப¨
  252.         mov    ecx,52 ;50
  253.         xor    eax,eax
  254.         repne  scasb
  255.         sub    edi,inputbox
  256.         dec    edi
  257.         mov    [search_len],edi
  258.         inc    [search_len]   ;------------increase
  259.  
  260.         cmp    [search_len],1
  261.         je     nothing_in_inputbox
  262.         call count_dict_size
  263.  
  264.         cmp [dict_size],0
  265.         je still
  266.  
  267.         call   clear_tr_word
  268.         call   clear_variants
  269.         call clear_transcript
  270. jmp search
  271.  
  272. count_dict_size:
  273. pusha
  274.         mov    edi,dictionary     ;®¯à¥¤¥«ï¥¬ ¤«¨­ã á«®¢ àï
  275.         mov    ecx,0x7FFFF
  276.         xor    eax,eax
  277.         repne  scasb
  278.         sub    edi,dictionary
  279.         dec    edi
  280.         mov    [dict_size],edi
  281. popa
  282. ret
  283.  
  284. nothing_in_inputbox:
  285.         call clear_tr_word
  286.         call clear_variants
  287.         call clear_transcript
  288.         cld
  289.         mov esi,errNothingEntered
  290.         mov edi,tr_word
  291.         mov ecx,14
  292.         rep movsb
  293. jmp win_redraw
  294.  
  295. clear_inputbox:
  296.     cld
  297.     mov edi,inputbox
  298.     mov ecx,13 ;52/4
  299.     xor eax,eax
  300.     rep stosd
  301.     mov [inputboxcurchar],0
  302.     mov [xcursor],69
  303. ret
  304.  
  305. clear_tr_word:
  306.     cld
  307.     mov edi,tr_word
  308.     mov ecx,13 ;52/4
  309.     xor eax,eax
  310.     rep stosd
  311. ret
  312.  
  313. clear_variants:
  314.     cld
  315.     mov edi,variants
  316.     mov ecx,13 ;52/4
  317.     xor eax,eax
  318.     rep stosd
  319. ret
  320.  
  321. clear_transcript:
  322.     cld
  323.     mov edi,trscript_word
  324.     mov ecx,13 ;52/4
  325.     xor eax,eax
  326.     rep stosd
  327. ret
  328.  
  329. clear_all_in_1:
  330.     cld
  331.     mov edi,inputbox ; 52*4 = 208 / 4 = 52
  332.     mov ecx,52
  333.     xor eax,eax
  334.     rep stosd
  335.     mov [inputboxpressed],1
  336.     mov [inputboxcurchar],0
  337.     mov [xcursor],69
  338.  
  339.  
  340. ret
  341.  
  342. clear_all_2:
  343.         call clear_all_in_1
  344.         call draw_window
  345. jmp still
  346.  
  347. print_trans_word:
  348.  
  349.         mov eax,13
  350.         mov ebx,68*65536+320
  351.         mov ecx,89*65536+14
  352.         mov edx,0x00eeeeee
  353.         int 0x40
  354.  
  355.         mov eax,4
  356.         mov ebx,70*65536+91
  357.         mov ecx,0x00000000
  358.         mov edx,tr_word
  359.         mov esi,52
  360.         int 0x40
  361. ret
  362.  
  363. trans_not_found:
  364.     cld
  365.     mov esi,tr_not_found_text
  366.     mov edi,tr_word
  367.     mov ecx,18 ;200
  368.     rep movsb
  369.     call clear_transcript
  370.     call clear_variants
  371.     call draw_window
  372. ret
  373.  
  374. print_transcript:
  375.         mov eax,13
  376.         mov ebx,68*65536+320
  377.         mov ecx,113*65536+14
  378.         mov edx,0x00eeeeee
  379.         int 0x40
  380.  
  381.         mov eax,4
  382.         mov ebx,70*65536+115
  383.         mov ecx,0x00000000
  384.         mov edx,trscript_word
  385.         mov esi,52
  386.         int 0x40
  387. ret
  388. ;-----------------------------------------------------
  389. ; Žˆ‘Š Ž ”€‰‹“ ‘€‚Ž—ˆŠ€
  390. search:
  391.     xor  esi,esi
  392.     mov edi,dictionary  ;€—€‹Ž ‚ …„ˆ
  393.     mov ecx,[dict_size] ;€‡Œ… ‚ …‘•
  394.  
  395.   news:
  396.     push edi
  397.   news2:
  398.  
  399.      ; 1) LOAD BYTES
  400.      mov  al,[esi+inputboxplus] ; [esi+inputbox]
  401.      mov  bl,[edi]
  402.  
  403.      ; 2) COMPARE BYTES
  404.      cmp  al,bl
  405.      je   yes_char
  406.  
  407.      ; 3) LETTER?
  408.       cmp al,'A'
  409.       jb notequal
  410.       cmp al,'ñ'
  411.       ja notequal
  412.       ;----------
  413.  
  414.       cmp al,'z' ;122 ;z=122
  415.       jbe cpLAT
  416. ;cpCYR
  417. ;---------------------TEST
  418.      cmp  al,' ' ;cyr A
  419.      jb   .bigletter ;if letter<128
  420.        ;--------
  421.           cmp al,'à'
  422.           jae .more_175  ;if letter>175
  423.           sub  al,32
  424.      jmp  compare_bytes
  425.           .more_175:
  426.           sub al,80
  427.           jmp compare_bytes
  428.  
  429.     .bigletter:
  430.      cmp  al,''
  431.      jae   .more_175_2
  432.      add  al,32
  433.      jmp compare_bytes
  434.      .more_175_2:
  435.      add al,80
  436.      jmp compare_bytes
  437. ;---------------TEST
  438.  
  439. ;cpLAT
  440.       cpLAT:
  441.      ; 4) A->a OR a->A
  442.      cmp  al,'a'
  443.      jb   @f
  444.      add  al,-32
  445.      jmp  compare_bytes
  446.     @@:
  447.      cmp  al,'Z'
  448.      ja   notequal
  449.      add  al,32
  450. ;-----
  451.     compare_bytes:
  452.      cmp  al,bl
  453.      jne  notequal
  454.  
  455.   yes_char:
  456.     inc  edi
  457.     inc  esi
  458.     cmp  esi,[search_len]
  459.     jge  sfound
  460.     jmp  news2
  461.  
  462.   notequal:
  463.     pop  edi
  464.     xor  esi,esi
  465.     inc  edi
  466.     loop news
  467.     call trans_not_found
  468.     jmp  still
  469.  
  470.     sfound:
  471.     mov [total_smesh],edi ;ᬥ饭¨¥ ¯® ä ©«ã á«®¢ àï
  472.  
  473. ;-------------------
  474. ;-------search for transcription
  475.  
  476.     mov esi,[total_smesh]
  477.     cld
  478.   again0:
  479.     lodsb
  480.     cmp al,'|'
  481.     jne again0
  482.  
  483.     mov [starting_transcrtiontion],esi
  484.  
  485.     cld
  486.   again00:
  487.     lodsb
  488.     cmp al,'|' ;13
  489.     jne again00
  490.     mov [ending_transcrtiontion],esi
  491.     mov eax,[starting_transcrtiontion]
  492.     sub [ending_transcrtiontion],eax
  493.     dec [ending_transcrtiontion]
  494.  
  495.  
  496.  
  497.         cld  ;‚›‚Ž„ ‘‹Ž‚€
  498.         mov esi,[starting_transcrtiontion]
  499.         mov edi,trscript_word
  500.         mov ecx,[ending_transcrtiontion]
  501.         rep movsb
  502.  
  503. ;-------search for translation
  504.     mov esi,[starting_transcrtiontion]
  505.     add esi,[ending_transcrtiontion]
  506.     cld
  507.   again:
  508.     lodsb
  509.     cmp al,'|'
  510.     jne again
  511.  
  512.     mov [starting_kav],esi
  513.  
  514.     cld
  515.   again2:
  516.     lodsb
  517.     cmp al,10 ;13
  518.     jne again2
  519.     mov [ending_kav],esi
  520.     mov eax,[starting_kav]
  521.     sub [ending_kav],eax
  522.     dec [ending_kav]
  523.  
  524. ;-----------------------------------------------
  525.  
  526.     cld  ;‚›‚Ž„ ‘‹Ž‚€
  527.     mov esi,[starting_kav]
  528.     mov edi,tr_word
  529.     mov ecx,[ending_kav]
  530.     rep movsb
  531.  
  532. ;--------
  533. ;search backward
  534.  
  535.  
  536.         mov esi,[total_smesh]
  537.  
  538.         cld
  539.         again3:
  540.         lodsb
  541.         cmp al,'|'
  542.         jne again3
  543.         mov [endingword],esi
  544.         dec [endingword]
  545.         again4:
  546.         dec esi
  547.         dec esi
  548.  
  549.         cld
  550.         lodsb
  551.         cmp al,10 ;13;' '
  552.         jne again4
  553.         mov [startingword],esi
  554.         mov eax,[startingword]
  555.         sub [endingword],eax
  556.  
  557.  
  558.         cld  ;‚›‚Ž„ ‘‹Ž‚€
  559.         mov esi,[startingword]
  560.         mov edi,variants
  561.         mov ecx,[endingword]
  562.         rep movsb
  563.  
  564. ;-----------------------------------------------
  565.  
  566.  
  567.  
  568.  
  569.  
  570.     call draw_window
  571. jmp still
  572.  
  573.  
  574. ;-----------------------------------------------------
  575.  
  576. ;---clear dictionary
  577. clear_dict:
  578.     mov edi,dictionary
  579.     mov ecx,131072 ; 0x80000 / 4
  580.     xor eax,eax
  581.     rep stosd
  582. ret
  583.  
  584. ;---- change dictionary
  585. change_dict:
  586.         opendialog draw_window,open_ok,open_err,fileinfo.path
  587. open_ok:
  588.         call clear_dict
  589.         call clear_all_in_1
  590.         call load_dict
  591. jmp still
  592. open_err:
  593.         call load_dict.call_error
  594. jmp still
  595.  
  596.  
  597. ;---- load dictionary
  598. load_dict:
  599. ;-open                from ASCL 9
  600.        mov  dword [fileinfo+8],1
  601.        mov  eax,58
  602.        mov  ebx,fileinfo
  603.        int  0x40
  604.        mov  eax,[dictionary+2]
  605.        shr  eax,9
  606.        inc  eax
  607.        mov  dword [fileinfo+8],eax
  608.        mov  eax,58
  609.        mov  ebx,fileinfo
  610.        int  0x40
  611. ;--------
  612.         cmp eax,0  ;0- open ok
  613.         je .return ; win_redraw
  614.         cmp eax,5  ;5- open ok
  615.         je .return
  616.         cmp eax,6  ;6- open ok???????????
  617.         je .return
  618. ; if we can't open the dictionary
  619.         .call_error:
  620.         cld
  621.         mov esi,errDictNotFound
  622.         mov edi,tr_word
  623.         mov ecx,errDictNotFound_l-errDictNotFound ;23
  624.         rep movsb
  625.  
  626.         call draw_window
  627.  
  628.         mov eax,5   ;delay
  629.         mov ebx,100 ;1 sec
  630.         int 0x40
  631.  
  632.         .return:
  633.         call check_header
  634. ret
  635.  
  636.  
  637.  
  638.  
  639. ;--- copy path to dictionary
  640. copy_path:
  641.         call count_dict_size ;int [dict_size] will be size of path to dictionary
  642.         mov esi,dictionary
  643.         mov edi,fileinfo.path ;40
  644.         mov ecx,[dict_size]
  645.         cld
  646.         rep movsb
  647. ret
  648.  
  649.  
  650. ;----------load config file
  651. load_ini:
  652.        cld
  653.        mov esi,fileinfo_ini.inipath
  654.        mov edi,fileinfo.path
  655.        mov ecx,19
  656.        rep movsb
  657.  
  658.        mov  eax,58
  659.        mov  ebx,fileinfo
  660.        int  0x40
  661.  
  662.        call copy_path
  663.        mov [dict_size],0
  664.        call clear_dict
  665. ret
  666. ;----------------------------
  667.  
  668. clear_fileinfo_path:
  669.     mov edi,fileinfo.path
  670.     mov ecx,256/4
  671.     xor eax,eax
  672.     rep stosd
  673. ret
  674.  
  675. ;-------save config file
  676. save_ini:
  677.        cmp dword [dictionary],0
  678.        jne .save
  679.  
  680.        call clear_fileinfo_path
  681.  
  682.        cld
  683.        mov esi,default_dict_path
  684.        mov edi,fileinfo.path
  685.        mov ecx,14
  686.        rep movsb
  687.  
  688.        .save:
  689.        mov    edi,fileinfo.path     ;®¯à¥¤¥«ï¥¬ ¤«¨­ã á«®¢ àï
  690.        mov    ecx,256
  691.        xor    eax,eax
  692.        repne  scasb
  693.        sub    edi,fileinfo.path
  694.        dec    edi
  695.        mov    [fileinfo_ini.size],edi
  696.  
  697.        mov  eax,58
  698.        mov  ebx,fileinfo_ini
  699.        int  0x40
  700.  
  701. ret
  702.  
  703. ;------ check dictionary header
  704. check_header:
  705.  
  706.         mov eax,'DICT'
  707.         cmp dword [dictionary],eax
  708.         je .return
  709.                 call clear_tr_word
  710.         cld
  711.         mov esi,errDictHeader
  712.         mov edi,tr_word
  713.         mov ecx,errDictHeader_l-errDictHeader ;23
  714.         rep movsb
  715.         .return:
  716. ret
  717.  
  718.  
  719. ;;;;;;;;;;;;;;;;;;;;;;;;;;;
  720. ;;;;;;;;;;;data;;;;;;;;;;;;
  721. ;;;;;;;;;;;;;;;;;;;;;;;;;;;
  722.  
  723.  
  724.  
  725. win_header:
  726. db '‘«®¢ à¨ª'
  727. win_header_l:
  728.  
  729. tr_not_found_text:
  730. db '……‚Ž„ … €‰„…!'
  731. tr_not_found_text_l:
  732.  
  733. txtWord:
  734. db '‘«®¢®:'
  735. txtWord_l:
  736.  
  737. txtTranslate:
  738. db '¥à¥¢®¤:'
  739. txtTranslate_l:
  740.  
  741. txtVariants:
  742. db '‚ à¨ ­âë:'
  743. txtVariants_l:
  744.  
  745. errDictNotFound:
  746. db 'Žè¨¡ª  ®âªàëâ¨ï ä ©«  ¨«¨ ®âªàë⨥ ®â¬¥­¥­®!'
  747. errDictNotFound_l:
  748.  
  749. txtTranslatenow:
  750. db '¥à¥¢¥áâ¨'
  751. txtTranslatenow_l:
  752.  
  753. errNothingEntered:
  754. db '‚¢¥¤¨â¥ á«®¢®!'
  755. errNothingEntered_l:
  756.  
  757. txtTranscript:
  758. db '’à ­áªà.:'
  759. txtTranscript_l:
  760.  
  761. txtChangeDict:
  762. db '‘«®¢ àì'
  763. txtChangeDict_l:
  764.  
  765. errDictHeader:
  766. db 'â®â ä ©« ­¥ ï¥âáï á«®¢ à¥¬!'
  767. errDictHeader_l:
  768.  
  769. xcursor dw 69
  770.  
  771. default_dict_path db '/RD/1/DICT.TXT'
  772.  
  773. fileinfo_ini:
  774. .oper:
  775. dd   1
  776. dd   0x0
  777. .size:
  778. dd   256
  779. dd   fileinfo.path
  780. dd  os_work_mem
  781. .inipath:
  782. db '/rd/1/slovarik.ini',0
  783.  
  784. fileinfo:
  785. dd   0       ; 0 = —’…ˆ… ”€‰‹€
  786. dd   0x0       ; ­®¬¥à ¡«®ª  ä ©«  (512 ¡ ©â, ­ã¬¥à æ¨ï ­ ç¨­ ¥âáï á ­ã«ï)
  787. dd   0x1       ; ᪮«ìª® ¡«®ª®¢ áç¨â뢠âì
  788. dd   dictionary  ; ªã¤  áç¨â뢠âì
  789. dd   os_work_mem ; 0x10000  ; ¯ ¬ïâì ¤«ï à ¡®âë Ž‘ - 4096 ¡ ©â
  790. .path:
  791. db '',0  ;'/RD/1/DICT.TXT',0
  792.  
  793. lblIMG_END:
  794. rb 257 ;times 257 db 0 ;for path
  795.  
  796.  
  797. starting_kav dd 0
  798. ending_kav dd 0
  799. starting_transcrtiontion dd 0
  800. ending_transcrtiontion dd 0
  801.  
  802. total_smesh dd 0
  803.  
  804. inputboxpressed db 0
  805. search_len  dd 0
  806. inputboxcurchar db 0
  807. inputboxlen db 0
  808.  
  809. inputboxplus:
  810. ;db ' '
  811. db 10 ;for search
  812.  
  813. inputbox:
  814. rb 52 ;times 52 db 0
  815.  
  816. tr_word:
  817. rb 52 ;times 52 db 0
  818.  
  819. trscript_word:
  820. rb 52 ;times 52 db 0
  821.  
  822. variants:
  823. rb 52  ;times 52 db 0
  824.  
  825. startingword dd 0
  826. endingword dd 0
  827.  
  828.  
  829. dict_size dd 0
  830.  
  831. dictionary:
  832. rb 0x80000;~524 kb for dictionary
  833. ;0x100000 ;1 mb for future BIG dictionary :)
  834.  
  835. os_work_mem:
  836. rb  0x10000
  837.  
  838. rb 4096
  839. lblMEMORY:
  840. lblSTACK:
  841.