Subversion Repositories Kolibri OS

Rev

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

  1. ;
  2. ; ¢ í⮬ ä ©«¥ ᮡ࠭ë ä㭪樨 ᮧ¤ î騥 ¯à®£à ¬­ë© ª®¤
  3. ;
  4. u_object object ;¢à¥¬¥­­ë© ®¡ê¥ªâ ¤«ï § ¤ ­¨ï ᬥ饭¨©
  5.  
  6. macro insert_coma
  7. {
  8.         stdcall [ted_text_add], tedit0,txt_coma,1,ted_opt_ed_move_cursor
  9. }
  10. macro insert_nl
  11. {
  12.         stdcall [ted_text_add], tedit0,txt_nl,1,ted_opt_ed_move_cursor
  13. }
  14. macro insert_com
  15. {
  16.         stdcall [ted_text_add], tedit0,txt_com,1,ted_opt_ed_move_cursor
  17. }
  18. macro insert_sp
  19. {
  20.         stdcall [ted_text_add], tedit0,txt_sp,1,ted_opt_ed_move_cursor
  21. }
  22.  
  23. ;äã­ªæ¨ï ¢áâ ¢«ï¥â ⥪á⮢ãî áâப㠢 ⥪áâ®¢ë© à¥¤ ªâ®à
  24. align 4
  25. proc insert_text, txt:dword
  26.         push eax
  27.         stdcall str_len,dword[txt]
  28.         cmp eax,1
  29.         jl @f
  30.                 stdcall [ted_text_add], tedit0,dword[txt],eax,ted_opt_ed_move_cursor
  31.         @@:
  32.         pop eax
  33.         ret
  34. endp
  35.  
  36. ;¢áâ ¢«ï¥â 㪠§ ­­®¥ ⥪á⮢®¥ ᢮©á⢮ ¨§ ®¡ê¥ªâ  ¢ ⥪áâ®¢ë© à¥¤ ªâ®à
  37. align 4
  38. proc insert_text_prop, p_obj:dword,index:dword
  39.         push eax edx
  40.                 mov eax,[p_obj]
  41.                 mov edx,[index]
  42.                 stdcall get_obj_text_col,eax,edx
  43.                 stdcall str_len,edx
  44.                 stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
  45.         pop edx eax
  46.         ret
  47. endp
  48.  
  49. ;¢áâ ¢«ï¥â 㪠§ ­­®¥ ¡¨â®¢®¥ ᢮©á⢮ ¨§ ®¡ê¥ªâ  ¢ ⥪áâ®¢ë© à¥¤ ªâ®à
  50. align 4
  51. proc insert_bit_prop, p_obj:dword,index:dword
  52.         push ebx ecx edi
  53.                 mov ebx,[p_obj]
  54.                 mov ecx,[index]
  55.                 test_bool_prop ebx,ecx
  56.                 jnc @f ;¥á«¨ ¯®«ì§®¢ â¥«ì ­¥ ¢ë¡à « ¢ ®¡ê¥ªâ¥ ¤ ­­®¥ ᢮©á⢮
  57.                         mov ebx,dword[ebx]
  58.                         call find_obj_in_opt
  59.                         mov ecx,dword[edi+obj_opt.bit_val-obj_opt] ;ecx - ᬥ饭¨¥ §­ ç¥­¨© ᢮©á⢠(ª®­áâ ­â)
  60.                         cmp byte[ecx],0
  61.                         je @f ;¥á«¨ ã ®¡ê¥ªâ  ­¥â § ¤ ­­ëå ¡¨â®¢ëå ᢮©áâ¢
  62.                                 add ecx,obj_opt ;¤®¡ ¢«ï¥¬ ­ ç «® ä ©«  á ®¯æ¨ï¬¨
  63.                                 stdcall get_string_by_ind, ecx,[index]
  64.                                 cmp byte[edi],0
  65.                                 je @f ;¥á«¨ ã ®¡ê¥ªâ  ¡¨â®¢®¥ ᢮©á⢮ ¯ãá⮥
  66.                                 stdcall insert_text, txt_plus
  67.                                 stdcall insert_text, edi
  68.                 @@:
  69.         pop edi ecx ebx
  70.         ret
  71. endp
  72.  
  73. ;äã­ªæ¨ï ¢áâ ¢«ï¥â 2 ¯ à ¬¥âà  ¯® 16 ¡¨â ¢ ¢¨¤¥:
  74. ; (_p1_ shl 16 + _p2_)
  75. align 4
  76. proc insert_2_prop_16_bit, obj:dword, p_hi:dword, p_lo:dword
  77.         stdcall insert_text, txt_skob_o
  78.         stdcall insert_text_prop, [obj],[p_hi]
  79.         stdcall insert_text, txt_shl_16
  80.         stdcall insert_text, txt_skob_c
  81.         stdcall insert_text, txt_plus
  82.         stdcall insert_text_prop, [obj],[p_lo]
  83.         ret
  84. endp
  85.  
  86. ;¢áâ ¢«ï¥¬ áâப㠢¨¤ :
  87. ; txt_(n) db (s)
  88. align 4
  89. proc insert_text_label_data, obj:dword, col:dword
  90.         push eax edx
  91.         mov eax,[obj]
  92.                 stdcall insert_text, txt_txt
  93.                 mov edx,file_name
  94.                 stdcall get_obj_id_str, eax,edx ;edx = 'n'
  95.                 stdcall str_cat, edx,txt_db ;edx = 'n db '
  96.                 stdcall insert_text, edx
  97.                 stdcall insert_text_prop, eax,[col]
  98.                 insert_nl
  99.         pop edx eax
  100.         ret
  101. endp
  102.  
  103. macro insert_tab
  104. {
  105.         stdcall [ted_text_add], tedit0,txt_tab,1,ted_opt_ed_move_cursor
  106. }
  107. macro insert_br
  108. {
  109.         stdcall [ted_text_add], tedit0,txt_br,3,ted_opt_ed_move_cursor
  110. }
  111. macro insert_a_met
  112. {
  113.         stdcall [ted_text_add], tedit0,txt_a_met,3,ted_opt_ed_move_cursor
  114. }
  115. macro insert_0
  116. {
  117.         stdcall [ted_text_add], tedit0,txt_0,1,ted_opt_ed_move_cursor
  118. }
  119. macro insert_plus
  120. {
  121.         stdcall [ted_text_add], tedit0,txt_plus,1,ted_opt_ed_move_cursor
  122. }
  123. macro insert_xor
  124. {
  125.         stdcall [ted_text_add], tedit0,txt_xor,4,ted_opt_ed_move_cursor
  126. }
  127. macro insert_cmp
  128. {
  129.         stdcall [ted_text_add], tedit0,txt_cmp,4,ted_opt_ed_move_cursor
  130. }
  131. macro insert_reg reg_name
  132. {
  133.         stdcall [ted_text_add], tedit0,reg_name,3,ted_opt_ed_move_cursor
  134. }
  135. macro insert_reg8 reg_name
  136. {
  137.         stdcall [ted_text_add], tedit0,reg_name,2,ted_opt_ed_move_cursor
  138. }
  139.  
  140. ;
  141. macro insert_key_beg
  142. {
  143.         stdcall [ted_text_add], tedit0,txt_key_1,txt_key_2-txt_key_1,ted_opt_ed_move_cursor
  144. }
  145. macro insert_key_end
  146. {
  147.         stdcall [ted_text_add], tedit0,txt_key_2,txt_key_3-txt_key_2,ted_opt_ed_move_cursor
  148. }
  149.  
  150. macro insert_d_poi
  151. {
  152.         stdcall [ted_text_add], tedit0,txt_d_poi,1,ted_opt_ed_move_cursor
  153. }
  154. macro insert_ret
  155. {
  156.         stdcall [ted_text_add], tedit0,txt_ret,4,ted_opt_ed_move_cursor
  157. }
  158.  
  159.  
  160. align 4
  161. but_update:
  162.         call draw_constructor
  163.         cmp byte[show_mode],0 ;ãá«®¢¨¥ ¢¨¤¨¬®á⨠®ª­  ª®­áâàãªâ®à 
  164.         jne @f
  165.                 stdcall [buf2d_draw], buf_fon
  166.         @@:
  167.         call code_gen
  168.         cmp byte[show_mode],1 ;ãá«®¢¨¥ ¢¨¤¨¬®á⨠⥪á⮢®£® ®ª­ 
  169.         jne @f
  170.                 stdcall [ted_draw], tedit0
  171.         @@:
  172.         ret
  173.  
  174. ;äã­ªæ¨ï ᮧ¤ îé ï ª®¤ ¢á¥£® ä ©« 
  175. align 4
  176. code_gen:
  177.         stdcall [ted_clear], tedit0,1
  178. pushad
  179.         stdcall dword[tl_node_poi_get_info], tree2,0
  180.         mov esi,eax
  181.         xor bl,bl
  182.         call code_gen_obj
  183.         stdcall [ted_text_add], tedit0,\
  184.                 txt_nl,1,ted_opt_ed_move_cursor+ted_opt_ed_change_time ;¤®¡ ¢«ï¥¬ ᨬ¢®« ­®¢®© áâப¨ á ®¯æ¨¥© ted_opt_ed_change_time ¤«ï ¢®§¬®¦­®á⨠á®åà ­¥­¨ï ä ©« 
  185.         stdcall [ted_init_scroll_bars], tedit0, 4 ;¬¥­ï¥¬ à §¬¥àë áªà®««¨­£®¢
  186. popad
  187.         ret
  188.  
  189. ;input:
  190. ; bl - ã஢¥­ì ®¡ê¥ªâ 
  191. ; esi - 㪠§ â¥«ì ­  㧥«
  192. align 4
  193. code_gen_obj:
  194. push eax ebx edx
  195.         .beg_iterat:
  196.                 cmp esi,0
  197.                 je .find_no
  198.  
  199.                 cmp byte[esi+2],bl ;lev
  200.                 jl .find_no
  201.  
  202.                 stdcall dword[tl_node_poi_get_data], tree2,esi
  203.                 cmp eax,0
  204.                 je .find_no
  205.  
  206.                 cmp dword[eax],C_STR
  207.                 jne .no_struct
  208.                         stdcall get_obj_text_col, eax,1 ;edx - 㪠§ â¥«ì ­  1-¥ ᢮©á⢮ áâàãªâãàë
  209.                         stdcall insert_text,txt_struc
  210.                         cmp byte[edx],0
  211.                         jne @f
  212.                                 stdcall insert_text,txt_t
  213.                         @@:
  214.                         insert_sp
  215.                         stdcall insert_text_prop, eax,0
  216.  
  217.                         cmp byte[edx],0
  218.                         je @f
  219.                                 ;¥á«¨ áâàãªâãà  § ¤ ­  ¬ ªà®á®¬
  220.                                 insert_sp
  221.                                 stdcall insert_text_prop, eax,1
  222.                                 insert_nl
  223.                                 stdcall insert_text, txt_skob_fo
  224.                         @@:
  225.                         insert_nl
  226.                         stdcall get_code_children_objects, esi
  227.                         call move_next_no_child_objects ;¯à®¯ã᪠¤®ç¥à­¨å ®¡¥ªâ®¢
  228.                         cmp byte[edx],0
  229.                         je @f
  230.                                 ;¥á«¨ áâàãªâãà  § ¤ ­  ¬ ªà®á®¬
  231.                                 stdcall insert_text, txt_skob_fc
  232.                                 insert_nl
  233.                         @@:
  234.                         stdcall insert_text,txt_ends
  235.                 .no_struct:
  236.                 cmp dword[eax],C_TXT
  237.                 jne @f
  238.                         stdcall get_code_text,eax ;®¡à ¡®âª  ®¡ê¥ªâ 
  239.                 @@:
  240.                 cmp dword[eax],C_INC
  241.                 jne @f
  242.                         stdcall get_code_incl,eax ;®¡à ¡®âª  ®¡ê¥ªâ 
  243.                 @@:
  244.                 cmp dword[eax],C_VAR
  245.                 jne @f
  246.                         stdcall get_code_variable,eax,ebx ;®¡à ¡®âª  ®¡ê¥ªâ 
  247.                 @@:
  248.                 cmp dword[eax],C_WND
  249.                 jne @f
  250.                         stdcall get_code_window,eax ;®¡à ¡®âª  ®¡ê¥ªâ 
  251.                         stdcall get_code_children_objects, esi ;®¡à ¡®âª  ¤®ç¥à­¨å ®¡¥ªâ®¢
  252.                         call move_next_no_child_objects ;¯à®¯ã᪠¤®ç¥à­¨å ®¡¥ªâ®¢
  253.                         stdcall insert_text, txt_draw_we ;ª®¤ § ¢¥àè î騩 äã­ªæ¨î à¨á®¢ ­¨ï
  254.                 @@:
  255.                 cmp dword[eax],C_ACO
  256.                 jne @f
  257.                         stdcall get_code_auto,esi ;®¡à ¡®âª  ®¡ê¥ªâ 
  258.                         call move_next_no_child_objects ;¯à®¯ã᪠¤®ç¥à­¨å ®¡¥ªâ®¢
  259.                 @@:
  260.                 cmp dword[eax],C_KEY ;ª« ¢¨ âãà 
  261.                 jne @f
  262.                         stdcall get_code_key,eax ;®¡à ¡®âª  ®¡ê¥ªâ 
  263.                 @@:
  264.  
  265.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  266.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  267.  
  268.                 jmp .beg_iterat
  269.         .find_no:
  270. pop edx ebx eax
  271.         ret
  272.  
  273. ;¢§ïâì ª®¤ë ¤®ç¥à­¨å ®¡ê¥ªâ®¢
  274. align 4
  275. proc get_code_children_objects uses eax ebx esi, p_node:dword
  276.         mov esi,[p_node]
  277.         mov bl,byte[esi+2] ;á®å࠭塞 ã஢¥­ì ⥪ã饣® ®¡ê¥ªâ 
  278.  
  279.         stdcall dword[tl_node_poi_get_next_info], tree2,esi
  280.         cmp eax,0 ;¥á«¨ ¤®á⨣«¨ ª®­æ  ᯨ᪠ ®¡ê¥ªâ®¢
  281.         je @f
  282.         cmp byte[eax+2],bl ;¥á«¨ ã஢¥­ì á«¥¤ãî饣® ®¡ê¥ªâ  ¡®«ìè¥ ¨«¨ à ¢¥­ ⥪ã饬ã
  283.         jle @f ;â® ¤®ç¥à­¨å 㧫®¢ ­¥â
  284.                 mov esi,eax
  285.                 mov bl,byte[esi+2]
  286.                 call code_gen_obj ;४ãàᨢ­ë© ¢ë§®¢ ¤®ç¥à­¨å ®¡ê¥ªâ®¢
  287.         @@:
  288.         ret
  289. endp
  290.  
  291. ;¯à®¯ã᪠¢á¥å ¤®ç¥à­¨å ®¡ê¥ªâ®¢
  292. ;input:
  293. ; esi - 㪠§ â¥«ì ­  㧥«
  294. ;outpet:
  295. ; esi - 㪠§ â¥«ì á«¥¤ã騩 ­¥ ¤®ç¥à­¨© (®â­®á¨â¥«ì­® ¢å®¤ï饣®) ­  㧥«
  296. align 4
  297. move_next_no_child_objects:
  298.         push eax ebx
  299.                 mov bl,byte[esi+2] ;á®å࠭塞 ã஢¥­ì ⥪ã饣® ®¡ê¥ªâ 
  300.                 @@:
  301.                         stdcall dword[tl_node_poi_get_next_info], tree2,esi
  302.                         cmp eax,0 ;¥á«¨ ¤®á⨣«¨ ª®­æ  ᯨ᪠ ®¡ê¥ªâ®¢
  303.                         je @f
  304.                         cmp byte[eax+2],bl ;¥á«¨ ã஢¥­ì á«¥¤ãî饣® ®¡ê¥ªâ  ¡®«ìè¥ ¨«¨ à ¢¥­ ⥪ã饬ã
  305.                         jle @f ;â® ¤®ç¥à­¨å 㧫®¢ ­¥â
  306.                         mov esi,eax ;¥á«¨ á«¥¤ã騩 㧥« ®ª § «áï ¤®ç¥à­¨¬, ¯¥à¥áâ ¢«ï¥¬ 㪠§ â¥«ì
  307.                         jmp @b
  308.                 @@:
  309.         pop ebx eax
  310.         ret
  311.  
  312. ;¤®¡ ¢«¥­¨¥ ®¡ê¥ªâ  á ¯à®£à ¬­ë¬ ª®¤®¬ (⥪á⮬)
  313. align 4
  314. proc get_code_text, p_obj:dword
  315.         ;pushad
  316.                 insert_nl
  317.                 stdcall insert_text_prop, dword[p_obj],0
  318.                 insert_nl
  319.         ;popad
  320.         ret
  321. endp
  322.  
  323. ;®¡à ¡®âª  ®¡ê¥ªâ  ᮧ¤ î饣®  ¢â®¬ â¨ç¥ªá¨¥ ª®¤ë
  324. align 4
  325. proc get_code_auto, p_node:dword
  326.         pushad
  327.                 insert_nl
  328.                 mov esi,dword[p_node]
  329.                 stdcall dword[tl_node_poi_get_data], tree2,esi
  330.                 mov ebx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  331.  
  332.                 test_bool_prop ebx,BIT_MOD_ACI
  333.                 jae @f
  334.                         mov edx,C_CHB
  335.                         stdcall find_obj_in_file,edx ;eax - 㪠§ â¥«ì ­  áâàãªâãàã check_box
  336.                         cmp eax,0
  337.                         je @f
  338.                                 stdcall insert_text, txt_std_init_cb
  339.                 @@:
  340.                 test_bool_prop ebx,BIT_MOD_ACM
  341.                 jae @f
  342.                         ; ¢â®¬ â¨ç¥áª¨¥ ᮡëâ¨ï ®â ¬ëè¨
  343.                         call get_code_auto_m
  344.                 @@:
  345.                 test_bool_prop ebx,BIT_MOD_ABU
  346.                 jae @f
  347.                         ;ᮧ¤ ­¨¥ ä㭪樨 button
  348.                         stdcall insert_text, txt_but_beg
  349.                         call get_code_auto_but ;ª®¤ë ¢ë§®¢  ª­®¯®ª
  350.                         stdcall insert_text, txt_but_mid
  351.                         stdcall get_code_children_objects, esi
  352.                         ;ª®­¥æ ä㭪樨 button (ª­®¯ª  id=-1, § ¢¥à襭¨¥ ¯à®£à ¬¬ë)
  353.                         stdcall insert_text, txt_but_end
  354.  
  355.                         call get_code_a_but_fun ;ª®¤ë ä㭪権, ¢ë§ë¢ ¥¬ëå ¯à¨ ­ ¦ â¨¨ ª­®¯®ª
  356.                 @@:
  357.                 test_bool_prop ebx,BIT_MOD_ACD
  358.                 jae @f
  359.                         call get_code_auto_data_el
  360.  
  361.                         mov edx,C_CHB
  362.                         stdcall find_obj_in_file,edx ;eax - 㪠§ â¥«ì ­  áâàãªâãàã check_box
  363.                         cmp eax,0
  364.                         je .no_check
  365.                                 stdcall insert_text, txt_cb_b
  366.                                 call get_code_auto_data_el_cbox
  367.                                 stdcall insert_text, txt_cb_e
  368.                         .no_check:
  369.  
  370.                         call get_code_auto_data_dop
  371.  
  372.                         mov edx,C_LIB
  373.                         stdcall find_obj_in_file,edx ;eax - 㪠§ â¥«ì ­  áâàãªâãàã ¡¨¡«¨®â¥ª¨
  374.                         cmp eax,0
  375.                         je @f
  376.                                 insert_nl
  377.                                 stdcall insert_text, txt_head_i
  378.                                 stdcall insert_text, txt_d_poi
  379.                                 insert_nl
  380.                                 stdcall insert_text, txt_head_l
  381.                                 stdcall insert_text, txt_db
  382.                                 stdcall insert_text, txt_str_beg
  383.                                 stdcall insert_text, txt_sys_err
  384.                                 stdcall insert_text, txt_str_end
  385.                                 insert_nl
  386.  
  387.                                 call get_code_auto_data_libs_param
  388.                                 stdcall insert_text, txt_ll_start
  389.                                 call get_code_auto_data_libs_struc
  390.                                 stdcall insert_text, txt_ll_end
  391.                                 call get_code_auto_data_libs ;â ¡«¨æë ¨¬¯®àâ  ¡¨¡«¨®â¥ª
  392.                 @@:
  393.                 insert_nl
  394.         popad
  395.         ret
  396. endp
  397.  
  398. align 4
  399. proc get_code_auto_m
  400.         pushad
  401.         stdcall dword[tl_node_poi_get_info], tree2,0
  402.         mov esi,eax
  403.         .beg_iterat:
  404.                 cmp esi,0
  405.                 je .find_no
  406.  
  407.                 stdcall dword[tl_node_poi_get_data], tree2,esi
  408.                 cmp eax,0
  409.                 je .find_no
  410.                 mov ebx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  411.  
  412.                 cmp dword[ebx],C_EDB
  413.                 jne @f
  414.                         stdcall insert_text, txt_std_mouse_ed
  415.                         stdcall insert_text_prop, ebx,0
  416.                         insert_nl
  417.                 @@:
  418.                 cmp dword[ebx],C_CHB
  419.                 jne @f
  420.                         stdcall insert_text, txt_std_mouse_cb
  421.                         stdcall insert_text_prop, ebx,0
  422.                         insert_nl
  423.                 @@:
  424.  
  425.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  426.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  427.  
  428.                 jmp .beg_iterat
  429.         .find_no:
  430.         popad
  431.         ret
  432. endp
  433.  
  434. ;ᮧ¤ ­¨¥ ¤ ­­ëå (áâàãªâãà ®¡ê¥ªâ®¢)
  435. align 4
  436. proc get_code_auto_data_el
  437.         pushad
  438.         insert_nl ;®âáâ㯠¤«ï ä®à¬ â¨à®¢ ­¨ï
  439.  
  440.         stdcall dword[tl_node_poi_get_info], tree2,0
  441.         mov esi,eax
  442.         .beg_iterat:
  443.                 cmp esi,0
  444.                 je .find_no
  445.  
  446.                 stdcall dword[tl_node_poi_get_data], tree2,esi
  447.                 cmp eax,0
  448.                 je .find_no
  449.                 mov ebx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  450.  
  451.                 cmp dword[ebx],C_EDB
  452.                 jne @f
  453.                         ;1,2,3,4,...,6,...8,...,10 - w,x,y,col_fon,...,col_frame,...,col_txt,...,txt
  454.                         stdcall insert_text_prop, ebx,0
  455.                         stdcall insert_text, txt_ebox
  456.  
  457.                         mov ecx,1
  458.                         .prop:
  459.                                 insert_sp
  460.                                 stdcall insert_text_prop, ebx,ecx
  461.                                 insert_coma
  462.                                 inc ecx
  463.                                 cmp ecx,10
  464.                         jl .prop
  465.  
  466.                         insert_br
  467.                         stdcall insert_text, txt_txt
  468.  
  469.                         mov edx,file_name
  470.                         stdcall get_obj_id_str, ebx,edx
  471.                         stdcall insert_text, edx
  472.  
  473.                         stdcall insert_text, txt_mouse_dd
  474.  
  475.                         stdcall insert_text, txt_0 ;᢮©á⢠ editbox
  476.                         stdcall insert_bit_prop, ebx,BIT_MOD_EDIT_FOC
  477.                         stdcall insert_bit_prop, ebx,BIT_MOD_EDIT_FIO
  478.  
  479.                         xchg eax,edx ;á®å࠭塞 §­ ç¥­¨¥ edx
  480.                         stdcall get_obj_text_col,ebx,10
  481.                         cmp byte[edx],0 ;¯à®¢¥à塞 ¯ãáâ ï «¨ áâப  ¯à¨ § ¯ã᪥ editbox
  482.                         je .null_string
  483.                                 xchg eax,edx ;¢®áâ ­ ¢«¨¢ ¥¬ §­ ç¥­¨¥ edx
  484.                                 stdcall insert_text, txt_coma
  485.  
  486.                                 stdcall insert_text, txt_txt
  487.                                 stdcall insert_text, edx
  488.                                 stdcall insert_text, txt_met_end
  489.                                 stdcall insert_text, txt_minus
  490.                                 stdcall insert_text, txt_txt
  491.                                 stdcall insert_text, edx
  492.                                 stdcall insert_text, txt_minus
  493.                                 stdcall insert_text, txt_1
  494.                                 stdcall insert_text, txt_coma
  495.  
  496.                                 stdcall insert_text, txt_txt
  497.                                 stdcall insert_text, edx
  498.                                 stdcall insert_text, txt_met_end
  499.                                 stdcall insert_text, txt_minus
  500.                                 stdcall insert_text, txt_txt
  501.                                 stdcall insert_text, edx
  502.                                 stdcall insert_text, txt_minus
  503.                                 stdcall insert_text, txt_1
  504.                         .null_string:
  505.                         insert_nl
  506.                 @@:
  507.                 cmp dword[ebx],C_DTT
  508.                 jne @f
  509.                         stdcall insert_text_label_data, ebx,0
  510.                 @@:
  511.  
  512.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  513.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  514.  
  515.                 jmp .beg_iterat
  516.         .find_no:
  517.         popad
  518.         ret
  519. endp
  520.  
  521. align 4
  522. proc get_code_auto_data_el_cbox
  523.         pushad
  524.         insert_nl ;®âáâ㯠¤«ï ä®à¬ â¨à®¢ ­¨ï
  525.  
  526.         stdcall dword[tl_node_poi_get_info], tree2,0
  527.         mov esi,eax
  528.         .beg_iterat:
  529.                 cmp esi,0
  530.                 je .find_no
  531.  
  532.                 stdcall dword[tl_node_poi_get_data], tree2,esi
  533.                 cmp eax,0
  534.                 je .find_no
  535.                 mov ebx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  536.  
  537.                 cmp dword[ebx],C_CHB
  538.                 jne .no_check
  539.                         ;1,2,3,4,5, 6,7,8, 9 - ot_x,ot_y,w,h,ot_w_txt, col_fon,col_frame,col_txt, txt
  540.  
  541.                         stdcall insert_text_prop, ebx,0
  542.                         stdcall insert_text, txt_cbox
  543.                         insert_sp
  544.  
  545.                         stdcall insert_2_prop_16_bit, ebx,1,3
  546.                         stdcall insert_text, txt_coma
  547.                         stdcall insert_2_prop_16_bit, ebx,2,4
  548.                         stdcall insert_text, txt_coma
  549.  
  550.                         stdcall insert_text_prop, ebx,5
  551.                         stdcall insert_text, txt_coma
  552.                         insert_sp
  553.  
  554.                         stdcall insert_text_prop, ebx,6
  555.                         stdcall insert_text, txt_coma
  556.                         stdcall insert_text_prop, ebx,7
  557.                         stdcall insert_text, txt_coma
  558.                         stdcall insert_text_prop, ebx,8
  559.                         stdcall insert_text, txt_coma
  560.                         stdcall insert_text, txt_br
  561.  
  562.                         stdcall insert_text, txt_txt
  563.                         mov edx,file_name
  564.                         stdcall get_obj_id_str, ebx,edx
  565.                         stdcall insert_text, edx
  566.                         stdcall insert_text, txt_coma
  567.  
  568.                         ;ä« £¨
  569.                         stdcall insert_text,txt_0
  570.                         stdcall insert_bit_prop, ebx,BIT_MOD_CHE
  571.                         stdcall insert_bit_prop, ebx,BIT_MOD_CHE_T
  572.                         stdcall insert_bit_prop, ebx,BIT_MOD_CHE_M
  573.                         stdcall insert_bit_prop, ebx,BIT_MOD_CHE_B
  574.  
  575.                         insert_nl
  576.                 .no_check:
  577.                 cmp dword[ebx],C_DTT
  578.                 jne @f
  579.                         stdcall insert_text_label_data, ebx,0
  580.                 @@:
  581.  
  582.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  583.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  584.  
  585.                 jmp .beg_iterat
  586.         .find_no:
  587.         popad
  588.         ret
  589. endp
  590.  
  591. ;¤ ­­ë¥ ¤«ï ¡¨¡«¨®â¥ª
  592. align 4
  593. proc get_code_auto_data_libs_param
  594.         pushad
  595.         insert_nl ;®âáâ㯠¤«ï ä®à¬ â¨à®¢ ­¨ï
  596.  
  597.         stdcall dword[tl_node_poi_get_info], tree2,0
  598.         mov esi,eax
  599.         .beg_iterat:
  600.                 cmp esi,0
  601.                 je .find_no
  602.  
  603.                 stdcall dword[tl_node_poi_get_data], tree2,esi
  604.                 cmp eax,0
  605.                 je .find_no
  606.                 mov ebx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  607.  
  608.                 cmp dword[ebx],C_LIB
  609.                 jne @f
  610.                         ;0,1,2,3,4,5 - l_nam,s_dir,i_met,...
  611.  
  612.                         stdcall insert_text, txt_sys_dir
  613.                         ;object code
  614.                         mov edx,file_name
  615.                         stdcall get_obj_id_str, ebx,edx
  616.                         stdcall insert_text,edx
  617.                         stdcall insert_text,txt_db
  618.                         ;stdcall insert_text, txt_str_beg
  619.                         stdcall insert_text_prop, ebx,1
  620.                         ;stdcall insert_text, txt_str_end
  621.                         insert_nl
  622.  
  623.                         stdcall insert_text, txt_lib_name
  624.                         stdcall insert_text,edx
  625.                         stdcall insert_text,txt_db
  626.                         stdcall insert_text, txt_str_beg
  627.                         stdcall insert_text_prop, ebx,0
  628.                         stdcall insert_text, txt_str_end
  629.                         insert_nl
  630.  
  631.                         stdcall insert_text,txt_err_m_f_lib
  632.                         stdcall insert_text,edx
  633.                         stdcall insert_text,txt_db
  634.                         stdcall insert_text, txt_str_beg
  635.                         stdcall insert_text_prop, ebx,4
  636.                         stdcall insert_text, txt_str_end
  637.                         insert_nl
  638.  
  639.                         stdcall insert_text,txt_err_m_i_lib
  640.                         stdcall insert_text,edx
  641.                         stdcall insert_text,txt_db
  642.                         stdcall insert_text, txt_str_beg
  643.                         stdcall insert_text_prop, ebx,5
  644.                         stdcall insert_text, txt_str_end
  645.                         insert_nl
  646.  
  647.                         insert_nl
  648.                 @@:
  649.  
  650.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  651.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  652.                 jmp .beg_iterat
  653.         .find_no:
  654.         popad
  655.         ret
  656. endp
  657.  
  658. ;¤ ­­ë¥ ¤«ï ¡¨¡«¨®â¥ª
  659. align 4
  660. proc get_code_auto_data_libs_struc
  661.         pushad
  662.         ;insert_nl ;®âáâ㯠¤«ï ä®à¬ â¨à®¢ ­¨ï
  663.  
  664.         stdcall dword[tl_node_poi_get_info], tree2,0
  665.         mov esi,eax
  666.         .beg_iterat:
  667.                 cmp esi,0
  668.                 je .find_no
  669.  
  670.                 stdcall dword[tl_node_poi_get_data], tree2,esi
  671.                 cmp eax,0
  672.                 je .find_no
  673.                 mov ebx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  674.                 cmp dword[ebx],C_LIB
  675.                 jne @f
  676.                         ;0,1,2,3,4,5 - l_nam,s_dir,i_met,...
  677.  
  678.                         stdcall insert_text, txt_lib
  679.                         ;object code
  680.                         mov edx,file_name
  681.                         stdcall get_obj_id_str, ebx,edx
  682.                         stdcall insert_text,edx
  683.                         insert_sp
  684.                         stdcall insert_text, txt_ll
  685.                         stdcall insert_text, txt_lib_name
  686.                         stdcall insert_text,edx
  687.                         stdcall insert_text,txt_coma
  688.  
  689.                         stdcall insert_text, txt_lib_path
  690.  
  691.                         stdcall insert_text, txt_sys_dir
  692.                         stdcall insert_text,edx
  693.                         stdcall insert_text,txt_coma
  694.                         stdcall insert_text,txt_br
  695.                         stdcall insert_text,txt_tab
  696.  
  697.                         stdcall insert_text,txt_err_m_f_lib
  698.                         stdcall insert_text,edx
  699.                         stdcall insert_text,txt_coma
  700.                         stdcall insert_text,txt_head_l
  701.                         stdcall insert_text,txt_coma
  702.  
  703.                         stdcall insert_text_prop, ebx,2
  704.                         stdcall insert_text,txt_coma
  705.  
  706.                         stdcall insert_text,txt_err_m_i_lib
  707.                         stdcall insert_text,edx
  708.                         stdcall insert_text,txt_coma
  709.                         stdcall insert_text,txt_head_i
  710.  
  711.                         insert_nl
  712.                 @@:
  713.  
  714.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  715.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  716.  
  717.                 jmp .beg_iterat
  718.         .find_no:
  719.         popad
  720.         ret
  721. endp
  722.  
  723. ;¤ ­­ë¥ ¤«ï ¡¨¡«¨®â¥ª
  724. align 4
  725. proc get_code_auto_data_libs
  726.         pushad
  727.         insert_nl ;®âáâ㯠¤«ï ä®à¬ â¨à®¢ ­¨ï
  728.  
  729.         stdcall dword[tl_node_poi_get_info], tree2,0
  730.         mov esi,eax
  731.         .beg_iterat:
  732.                 cmp esi,0
  733.                 je .find_no
  734.  
  735.                 stdcall dword[tl_node_poi_get_data], tree2,esi
  736.                 cmp eax,0
  737.                 je .find_no
  738.                 mov ebx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  739.                 cmp dword[ebx],C_LIB
  740.                 jne @f
  741.                         ;0,1,2,3,4,5 - l_nam,s_dir,i_met,...
  742.                         stdcall insert_text, txt_align_4
  743.                         stdcall insert_text_prop, ebx,2
  744.                         stdcall insert_text, txt_d_poi
  745.                         insert_nl
  746.  
  747.                         call get_code_lib_table
  748.                 @@:
  749.  
  750.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  751.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  752.  
  753.                 jmp .beg_iterat
  754.         .find_no:
  755.         popad
  756.         ret
  757. endp
  758.  
  759. ;input:
  760. ; esi
  761. align 4
  762. get_code_lib_table:
  763. pushad
  764.         mov bl,byte[esi+2]
  765.         mov edi,esi
  766.         stdcall dword[tl_node_poi_get_data], tree2,esi
  767.         mov edx,eax ;¯®«ã祭¨¥ ¤ ­­ëå த¨â¥«ì᪮£® ®¡ê¥ªâ 
  768.         cmp eax,0
  769.         je @f
  770.         @@:
  771.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  772.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  773.                 cmp esi,0
  774.                 je @f
  775.                 cmp byte[esi+2],bl ;lev
  776.                 jle @f
  777.                         stdcall dword[tl_node_poi_get_data], tree2,esi
  778.                         cmp eax,0
  779.                         je @f
  780.                         cmp dword[eax],C_IFN
  781.                         jne @b
  782.                                 mov ecx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  783.                                 ;¢áâ ¢ª  㪠§ â¥«ï ­  äã­ªæ¨î
  784.                                 test_bool_prop ecx,BIT_MOD_IMPORT_FUNCT_COMMENT
  785.                                 jae .no_com_0
  786.                                         stdcall insert_text, txt_com
  787.                                 .no_com_0:
  788.                                 insert_tab
  789.                                 stdcall insert_text_prop, ecx,0
  790.                                 stdcall insert_text, txt_dd
  791.                                 stdcall insert_text_prop, edx,3 ;¯à¨áâ ¢ª  ª ä㭪樨
  792.                                 stdcall insert_text_prop, ecx,0
  793.                                 insert_nl
  794.                         jmp @b
  795.         @@:
  796.         stdcall insert_text, txt_dd_0_0
  797.         mov esi,edi
  798.         @@:
  799.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  800.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  801.                 cmp esi,0
  802.                 je @f
  803.                 cmp byte[esi+2],bl ;lev
  804.                 jle @f
  805.                         stdcall dword[tl_node_poi_get_data], tree2,esi
  806.                         cmp eax,0
  807.                         je @f
  808.                         cmp dword[eax],C_IFN
  809.                         jne @b
  810.                                 mov ecx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  811.                                 ;¢áâ ¢ª  ¨¬¥­¨ ¨¬¯®àâ¨à®¢ ­­®© ä㭪樨
  812.                                 test_bool_prop ecx,BIT_MOD_IMPORT_FUNCT_COMMENT
  813.                                 jae .no_com_1
  814.                                         stdcall insert_text, txt_com
  815.                                 .no_com_1:
  816.                                 insert_tab
  817.                                 stdcall insert_text_prop, edx,3 ;¯à¨áâ ¢ª  ª ä㭪樨
  818.                                 stdcall insert_text_prop, ecx,0
  819.                                 stdcall insert_text, txt_db
  820.                                 stdcall insert_text, txt_str_beg
  821.                                 stdcall insert_text_prop, ecx,1
  822.                                 stdcall insert_text, txt_str_end
  823.                                 insert_nl
  824.                         jmp @b
  825.         @@:
  826. popad
  827.         ret
  828.  
  829. ;
  830. align 4
  831. proc get_code_auto_data_dop
  832.         pushad
  833.         insert_nl ;®âáâ㯠¤«ï ä®à¬ â¨à®¢ ­¨ï
  834.  
  835.         stdcall dword[tl_node_poi_get_info], tree2,0
  836.         mov esi,eax
  837.         .beg_iterat:
  838.                 cmp esi,0
  839.                 je .find_no
  840.  
  841.                 stdcall dword[tl_node_poi_get_data], tree2,esi
  842.                 cmp eax,0
  843.                 je .find_no
  844.                 mov ebx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  845.  
  846.                 cmp dword[ebx],C_EDB
  847.                 jne @f
  848.                         ;1,2,3,4,...,6,...8,...,10 - w,x,y,col_fon,...,col_frame,...,col_txt,...,txt
  849.  
  850.                         ;ä®à¬¨à㥬 ⥪áâ®¢ë¥ ¤ ­­ë¥ ¤«ï editbox-®¢
  851.                         stdcall insert_text, txt_txt
  852.                         mov edx,file_name
  853.                         stdcall get_obj_id_str, ebx,edx
  854.                         stdcall insert_text,edx
  855.  
  856.                         stdcall get_obj_text_col,ebx,10
  857.                         cmp byte[edx],0
  858.                         je .no_text
  859.                                 stdcall insert_text, txt_d_poi
  860.                                 stdcall insert_text, txt_db
  861.                                 stdcall insert_text, txt_str_beg
  862.                                 stdcall str_len,edx
  863.                                 stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
  864.                                 stdcall insert_text, txt_str_end
  865.                                 insert_nl
  866.  
  867.                                 insert_tab
  868.                                 stdcall insert_text, txt_met_end
  869.                                 stdcall insert_text, txt_rb
  870.                                 stdcall insert_text, txt_txt
  871.                                 mov edx,file_name
  872.                                 stdcall get_obj_id_str, ebx,edx
  873.                                 stdcall insert_text,edx
  874.  
  875.                                 stdcall insert_text, txt_minus
  876.                                 stdcall insert_text, txt_txt
  877.                                 stdcall insert_text,edx
  878.                                 stdcall insert_text, txt_met_end
  879.  
  880.                                 insert_plus
  881.                                 stdcall insert_text_prop,ebx,9
  882.                                 insert_plus
  883.                                 stdcall insert_text, txt_3
  884.                                
  885.                                 insert_nl
  886.  
  887.                                 jmp @f
  888.  
  889.                         .no_text: ;¯¥à¢®­ ç «ì­® ⥪áâ ­¥ § ¤ ­
  890.                                 stdcall insert_text, txt_times
  891.  
  892.                                 stdcall insert_text_prop,ebx,9
  893.                                 insert_plus
  894.                                 stdcall insert_text, txt_2
  895.                                 stdcall insert_text, txt_db
  896.                                 insert_0
  897.                                 insert_nl
  898.                 @@:
  899.                 cmp dword[ebx],C_CHB
  900.                 jne @f
  901.                         stdcall insert_text_label_data, ebx,9
  902.                 @@:
  903.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  904.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  905.  
  906.                 jmp .beg_iterat
  907.         .find_no:
  908.         popad
  909.         ret
  910. endp
  911.  
  912. ;á¢ï§ë¢ ¥¬ ª­®¯ª¨ á äã­ªæ¨ï¬¨
  913. align 4
  914. proc get_code_auto_but
  915.         pushad
  916.         stdcall dword[tl_node_poi_get_info], tree2,0
  917.         mov esi,eax
  918.         .beg_iterat:
  919.                 cmp esi,0
  920.                 je .find_no
  921.  
  922.                 stdcall dword[tl_node_poi_get_data], tree2,esi
  923.                 cmp eax,0
  924.                 je .find_no
  925.                 mov ebx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  926.  
  927.                 cmp dword[ebx],C_BUT
  928.                 jne @f
  929.                         insert_tab
  930.                         insert_cmp
  931.                         insert_reg8 txt_ah
  932.                         insert_coma
  933.                         stdcall get_obj_text_col,ebx,0
  934.                         stdcall str_len,edx
  935.                         stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
  936.                         insert_nl
  937.                         insert_tab
  938.                         stdcall insert_text, txt_jne_f
  939.                         insert_nl
  940.                         insert_tab
  941.                         insert_tab
  942.                         stdcall insert_text, txt_call
  943.                         stdcall get_obj_text_col,ebx,6
  944.                         stdcall str_len,edx
  945.                         cmp eax,1
  946.                         jl .c_fun
  947.                                 stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
  948.                         .c_fun:
  949.                         insert_nl
  950.                         insert_tab
  951.                         insert_a_met ;@@:
  952.                         insert_nl
  953.                 @@:
  954.  
  955.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  956.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  957.  
  958.                 jmp .beg_iterat
  959.         .find_no:
  960.         popad
  961.         ret
  962. endp
  963.  
  964. ;¡¥à¥¬ ª®¤ë ¤«ï ä㭪権 ­ ¦ â¨© ­  ª­®¯ª¨
  965. align 4
  966. proc get_code_a_but_fun
  967.         pushad
  968.         stdcall dword[tl_node_poi_get_info], tree2,0
  969.         mov esi,eax
  970.         .beg_iterat:
  971.                 cmp esi,0
  972.                 je .find_no
  973.  
  974.                 stdcall dword[tl_node_poi_get_data], tree2,esi
  975.                 cmp eax,0
  976.                 je .find_no
  977.                 mov ebx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  978.  
  979.                 cmp dword[ebx],C_BUT
  980.                 jne @f
  981.                         stdcall get_obj_text_col,ebx,6
  982.                         stdcall str_len,edx
  983.                         cmp eax,1
  984.                         jl .c_fun
  985.                                 insert_nl
  986.                                 stdcall insert_text, txt_align_4
  987.                                 stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
  988.                                 insert_d_poi
  989.                                 insert_nl
  990.                                 insert_tab
  991.                                 insert_ret
  992.                         .c_fun:
  993.                 @@:
  994.  
  995.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  996.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  997.  
  998.                 jmp .beg_iterat
  999.         .find_no:
  1000.         popad
  1001.         ret
  1002. endp
  1003.  
  1004. align 4
  1005. proc get_code_key, p_obj:dword
  1006.         pushad
  1007.                 insert_nl
  1008.                 mov ebx,dword[p_obj]
  1009.  
  1010.                 insert_key_beg
  1011.                 call get_code_funct_key ;ª®¤ë ¢ë§®¢  ª­®¯®ª
  1012.                 insert_key_end
  1013.  
  1014.                 insert_nl
  1015.         popad
  1016.         ret
  1017. endp
  1018.  
  1019. align 4
  1020. proc get_code_funct_key
  1021.         pushad
  1022.         stdcall dword[tl_node_poi_get_info], tree2,0
  1023.         mov esi,eax
  1024.         .beg_iterat:
  1025.                 cmp esi,0
  1026.                 je .find_no
  1027.  
  1028.                 stdcall dword[tl_node_poi_get_data], tree2,esi
  1029.                 cmp eax,0
  1030.                 je .find_no
  1031.  
  1032.                 mov ebx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  1033.                 cmp dword[ebx],C_EDB
  1034.                 jne @f
  1035.                         stdcall insert_text, txt_std_key_ed
  1036.                         stdcall insert_text_prop,ebx,0
  1037.                         insert_nl
  1038.                 @@:
  1039.  
  1040.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  1041.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  1042.  
  1043.                 jmp .beg_iterat
  1044.         .find_no:
  1045.         popad
  1046.         ret
  1047. endp
  1048.  
  1049. ;®¡ê¥ªâë ¯®¤ª«î祭¨ï ä ©«®¢ 'include ...'
  1050. align 4
  1051. proc get_code_incl, p_obj:dword
  1052.         pushad
  1053.                 stdcall insert_text, txt_incl
  1054.                 mov ebx,dword[p_obj]
  1055.                 stdcall insert_text_prop,ebx,0
  1056.  
  1057.                 stdcall get_obj_text_col,ebx,1
  1058.                 stdcall str_len,edx
  1059.                 cmp eax,1
  1060.                 jl @f
  1061.                         insert_sp
  1062.                         insert_com
  1063.                         stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
  1064.                 @@:
  1065.  
  1066.                 insert_nl
  1067.         popad
  1068.         ret
  1069. endp
  1070.  
  1071. ;ᮧ¤ ¥¬ ª®¤ § ¤ ­¨ï ®ª­ 
  1072. align 4
  1073. proc get_code_window, p_obj:dword
  1074.         pushad
  1075.                 mov ebx,dword[p_obj]
  1076.                 ;2,3,4,5,6 - x,y,w,h,col_bkg
  1077.  
  1078.                 stdcall insert_text, txt_draw_wb
  1079.  
  1080.                 insert_tab
  1081.                 insert_xor
  1082.                 insert_reg txt_eax
  1083.                 insert_coma
  1084.                 insert_reg txt_eax
  1085.                 insert_nl
  1086.  
  1087.                 ;mov ebx,... § ¤ ¥âáï è¨à¨­  ®ª­  ¨ ®âáâ㯠®â «¥¢®£® ªà ï íªà ­ 
  1088.                 insert_tab
  1089.                 stdcall insert_text, txt_mov
  1090.                 insert_reg txt_ebx
  1091.                 insert_coma
  1092.                 stdcall insert_2_prop_16_bit, ebx,2,4
  1093.                 insert_nl
  1094.  
  1095.                 ;mov ecx,... § ¤ ¥âáï ¢ëá®â  ®ª­  ¨ ®âáâ㯠®â ¢¥àå­¥£® ªà ï íªà ­ 
  1096.                 insert_tab
  1097.                 stdcall insert_text, txt_mov
  1098.                 insert_reg txt_ecx
  1099.                 insert_coma
  1100.                 stdcall insert_2_prop_16_bit, ebx,3,5
  1101.                 insert_nl
  1102.  
  1103.                 ;mov edx,... § ¤ ¥âáï 梥â à ¡®ç¥© ®¡« á⨠®ª­ 
  1104.                 insert_tab
  1105.                 stdcall insert_text, txt_mov
  1106.                 insert_reg txt_edx
  1107.                 insert_coma
  1108.                 stdcall insert_text_prop, ebx,6
  1109.                 insert_nl
  1110.  
  1111.                 ;or edx,0x33000000
  1112.                 insert_tab
  1113.                 stdcall insert_text, txt_or
  1114.                 insert_reg txt_edx
  1115.                 insert_coma
  1116.                 stdcall insert_text,txt_skob_o
  1117.                 stdcall insert_text_prop, ebx,1 ;áâ¨«ì ®ª­ 
  1118.                 stdcall insert_text,txt_shl_24
  1119.                 stdcall insert_text,txt_skob_c
  1120.                 stdcall insert_bit_prop, ebx,BIT_MOD_WI_CAPT
  1121.                 stdcall insert_bit_prop, ebx,BIT_MOD_WI_CORD_OTN_CL_OBL
  1122.                 stdcall insert_bit_prop, ebx,BIT_MOD_WI_REDR
  1123.                 stdcall insert_bit_prop, ebx,BIT_MOD_WI_GRAD
  1124.                 insert_nl
  1125.  
  1126.                 ;mov edi,...
  1127.                 insert_tab
  1128.                 stdcall insert_text, txt_mov
  1129.                 insert_reg txt_edi
  1130.                 insert_coma
  1131.                 stdcall insert_text_prop, ebx,0
  1132.                 insert_nl
  1133.  
  1134.                 insert_tab
  1135.                 stdcall insert_text, txt_i_40
  1136.                 insert_nl
  1137.  
  1138.                 call get_code_draw_obj
  1139.         popad
  1140.         ret
  1141. endp
  1142.  
  1143.  
  1144. ;ä®à¬¨à㥬 ¢ë§®¢ ä㭪権 ¤«ï à¨á®¢ ­¨ï ®¡ê¥ªâ®¢
  1145. align 4
  1146. proc get_code_draw_obj
  1147.         pushad
  1148.         stdcall dword[tl_node_poi_get_info], tree2,0
  1149.         mov esi,eax
  1150.         .beg_iterat:
  1151.                 cmp esi,0
  1152.                 je .find_no
  1153.  
  1154.                 stdcall dword[tl_node_poi_get_data], tree2,esi
  1155.                 cmp eax,0
  1156.                 je .find_no
  1157.                 mov ebx,eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  1158.  
  1159.                 cmp dword[ebx],C_EDB
  1160.                 jne @f
  1161.                         stdcall insert_text, txt_editb_draw
  1162.                         stdcall insert_text_prop, ebx,0
  1163.                         insert_nl
  1164.                 @@:
  1165.                 cmp dword[ebx],C_CHB
  1166.                 jne @f
  1167.                         stdcall insert_text, txt_cbox_draw
  1168.                         stdcall insert_text_prop, ebx,0
  1169.                         insert_nl
  1170.                 @@:
  1171.                 cmp dword[ebx],C_BUT
  1172.                 jne .ob_draw_but
  1173.                         insert_tab
  1174.                         stdcall insert_text, txt_mov
  1175.                         insert_reg txt_eax
  1176.                         insert_coma
  1177.                         stdcall insert_text, txt_8
  1178.                         insert_nl
  1179.  
  1180.                         insert_tab
  1181.                         stdcall insert_text, txt_mov
  1182.                         insert_reg txt_ebx
  1183.                         insert_coma
  1184.                         stdcall insert_2_prop_16_bit, ebx,1,3
  1185.                         insert_nl
  1186.  
  1187.                         insert_tab
  1188.                         stdcall insert_text, txt_mov
  1189.                         insert_reg txt_ecx
  1190.                         insert_coma
  1191.                         stdcall insert_2_prop_16_bit, ebx,2,4
  1192.                         insert_nl
  1193.  
  1194.                         insert_tab
  1195.                         stdcall insert_text, txt_mov
  1196.                         insert_reg txt_edx
  1197.                         insert_coma
  1198.                         stdcall insert_text_prop, ebx,0
  1199.                         test_bool_prop ebx,BIT_MOD_BUT_NFON
  1200.                         jnc @f
  1201.                                 stdcall insert_text, txt_plus
  1202.                                 stdcall insert_text, txt_bit_30
  1203.                         @@:
  1204.                         test_bool_prop ebx,BIT_MOD_BUT_NBORD
  1205.                         jnc @f
  1206.                                 stdcall insert_text, txt_plus
  1207.                                 stdcall insert_text, txt_bit_29
  1208.                         @@:
  1209.                         insert_nl
  1210.  
  1211.                         insert_tab
  1212.                         stdcall insert_text, txt_mov
  1213.                         insert_reg txt_esi
  1214.                         insert_coma
  1215.                         stdcall insert_text_prop, ebx,5 ;button color
  1216.                         insert_nl
  1217.  
  1218.                         insert_tab
  1219.                         stdcall insert_text, txt_i_40
  1220.                         insert_nl
  1221.                 .ob_draw_but:
  1222.                 cmp dword[ebx],C_REC
  1223.                 jne @f
  1224.                         insert_tab
  1225.                         stdcall insert_text, txt_mov
  1226.                         insert_reg txt_eax
  1227.                         insert_coma
  1228.                         stdcall insert_text, txt_1
  1229.                         stdcall insert_text, txt_3
  1230.                         insert_nl
  1231.  
  1232.                         insert_tab
  1233.                         stdcall insert_text, txt_mov
  1234.                         insert_reg txt_ebx
  1235.                         insert_coma
  1236.                         stdcall insert_2_prop_16_bit, ebx,1,3
  1237.                         insert_nl
  1238.  
  1239.                         insert_tab
  1240.                         stdcall insert_text, txt_mov
  1241.                         insert_reg txt_ecx
  1242.                         insert_coma
  1243.                         stdcall insert_2_prop_16_bit, ebx,2,4
  1244.                         insert_nl
  1245.  
  1246.                         insert_tab
  1247.                         stdcall insert_text, txt_mov
  1248.                         insert_reg txt_edx
  1249.                         insert_coma
  1250.                         stdcall insert_text_prop, ebx,0 ;rect color
  1251.                         insert_nl
  1252.  
  1253.                         insert_tab
  1254.                         stdcall insert_text, txt_i_40
  1255.                         insert_nl
  1256.                 @@:
  1257.                 cmp dword[ebx],C_DTT ;à¨á®¢ ­¨¥ ⥪áâ  ç¥à¥§ á¨áâ. ä. 4
  1258.                 jne .ob_draw_text
  1259.                         insert_tab
  1260.                         stdcall insert_text, txt_mov
  1261.                         insert_reg txt_eax
  1262.                         insert_coma
  1263.                         stdcall insert_text, txt_4
  1264.                         insert_nl
  1265.  
  1266.                         insert_tab
  1267.                         stdcall insert_text, txt_mov
  1268.                         insert_reg txt_ebx
  1269.                         insert_coma
  1270.                         stdcall insert_2_prop_16_bit, ebx,1,2
  1271.                         insert_nl
  1272.  
  1273.                         insert_tab
  1274.                         stdcall insert_text, txt_mov
  1275.                         insert_reg txt_ecx
  1276.                         insert_coma
  1277.                         stdcall insert_text_prop, ebx,3
  1278.                         stdcall insert_bit_prop, ebx,BIT_MOD_TXT_ASCII_0 ;31 - ¡¨â ¤«ï áâப¨ ASCIIZ
  1279.                         stdcall insert_bit_prop, ebx,BIT_MOD_TXT_NO_TRAN ;30 - ¡¨â ¤«ï ­¥ ¯à®§à ç­®£® ⥪áâ 
  1280.                         stdcall insert_bit_prop, ebx,BIT_MOD_TXT_CHAR2 ;28 - ¡¨â ¤«ï 2-£® á¨áâ. èà¨äâ 
  1281.                         insert_nl
  1282.  
  1283.                         insert_tab
  1284.                         stdcall insert_text, txt_mov
  1285.                         insert_reg txt_edx
  1286.                         insert_coma
  1287.                         stdcall insert_text, txt_txt
  1288.                         mov edx,file_name
  1289.                         stdcall get_obj_id_str, ebx,edx
  1290.                         stdcall insert_text,edx
  1291.                         insert_nl
  1292.  
  1293. ;mov esi,...
  1294.                         test_bool_prop ebx,BIT_MOD_TXT_NO_TRAN
  1295.                         jnc @f
  1296.                                 insert_tab
  1297.                                 stdcall insert_text, txt_mov
  1298.                                 insert_reg txt_edi
  1299.                                 insert_coma
  1300.                                 stdcall insert_text_prop, ebx,4 ;梥â ä®­ 
  1301.                                 insert_nl
  1302.                         @@:
  1303.  
  1304.                         insert_tab
  1305.                         stdcall insert_text, txt_i_40
  1306.                         insert_nl
  1307.                 .ob_draw_text:
  1308.  
  1309.                 stdcall dword[tl_node_poi_get_next_info], tree2,esi
  1310.                 mov esi,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  1311.  
  1312.                 jmp .beg_iterat
  1313.         .find_no:
  1314.         popad
  1315.         ret
  1316. endp
  1317.  
  1318. ;ᮧ¤ âì ª®¤ ®¡ê¥­¨ï ¯¥à¥¬¥­­®©
  1319. align 4
  1320. proc get_code_variable, p_obj:dword,o_lev:dword
  1321.         pushad
  1322.                 mov ebx,dword[p_obj]
  1323.                 ;0,1,2 - name,value,comment
  1324.  
  1325.                 mov ecx,dword[o_lev]
  1326.                 cmp cl,0
  1327.                 je .no_tab ;¨§¡¥£ ¥¬ § æ¨ª«¨¢ ­¨ï (0-1 = 2^32-1)
  1328.                 and ecx,0xff
  1329.                 cld
  1330.                 @@:
  1331.                         insert_tab ;ä®à¬¨à®¢ ­¨¥ ®âáâ㯠 ¯¥à¥¤ ¯¥à¥¬¥­­®©
  1332.                 loop @b
  1333.                 .no_tab:
  1334.  
  1335.                 stdcall insert_text_prop, ebx,0 ;¨¬ï ¯¥à¥¬¥­­®©
  1336.                 insert_sp
  1337.  
  1338.                 mov ecx,dword[ebx+u_object.typid-u_object] ;ecx - ®â­®á¨â¥«ì­ë© ¨­¤¥ªá த¨â¥«ì᪮£® ®¡ê¥ªâ  (¢ ¯ ¬ïâ¨)
  1339.                 xor eax,eax
  1340.                 mov ax,[tree2.info_size]
  1341.                 imul ecx,eax ;㬭®¦ ¥¬ ¨­¤¥ªá ­  à §¬¥à áâàãªâãàë
  1342.                 add ecx,[tree2.data_info] ;ecx - 㪠§ â¥«ì ¤ ­­ë¥ த¨â¥«ì᪮£® 㧫 
  1343.  
  1344.                 ;¯à®¢¥àªã ­  ¯à ¢¨«ì­®áâì ecx ???
  1345.  
  1346.                 stdcall insert_text_prop, ecx,0 ;⨯ ¯¥à¥¬¥­­®©
  1347.                 insert_sp
  1348.                 stdcall insert_text_prop, ebx,1 ;§­ ç¥­¨¥
  1349.  
  1350.                 stdcall get_obj_text_col,ebx,2 ;ª®¬¬¥­â à¨©
  1351.                 stdcall str_len,edx
  1352.                 cmp eax,1
  1353.                 jl @f
  1354.                         insert_sp
  1355.                         insert_com
  1356.                         stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor
  1357.                 @@:
  1358.                 insert_nl
  1359.  
  1360.         popad
  1361.         ret
  1362. endp
  1363.  
  1364.  
  1365.  
  1366. ;--- ⥪áâ®¢ë¥ ª®­áâ ­âë ---
  1367. txt_str_beg db 39,0
  1368. txt_str_end db 39,',0',0
  1369. txt_coma db ',',0
  1370. txt_skob_o db '(',0
  1371. txt_skob_c db ')',0
  1372. txt_skob_fo db '{',0 ;᪮¡ª  䨣ãà­ ï ®âªà뢠îé ï
  1373. txt_skob_fc db '}',0 ;᪮¡ª  䨣ãà­ ï § ªà뢠îé ï
  1374. txt_i_40 db 'int 0x40',13,0
  1375. txt_0 db '0',0
  1376. txt_1 db '1',0
  1377. txt_2 db '2',0
  1378. txt_3 db '3',0
  1379. txt_4 db '4',0
  1380. txt_8 db '8',0
  1381. txt_plus db '+',0
  1382. txt_minus db '-',0
  1383. ;txt_dol db '$',0
  1384. txt_nl db 13,0
  1385. txt_com db ';',0
  1386. txt_sp db ' ',0
  1387. txt_tab db 9,0
  1388. txt_br db '\',13,9,0
  1389. txt_txt db 'txt_',0
  1390. txt_db db ' db ',0
  1391. txt_dd db ' dd ',0
  1392. txt_rb db ' rb ',0
  1393. txt_dd_0_0 db 9,'dd 0,0',13,0
  1394. txt_mouse_dd db ', mouse_dd, ',0
  1395. txt_times db ':',13,9,'times ',0
  1396. txt_draw_wb:
  1397.         db 13,'align 4',13,'draw_window:',13,'pushad',13,9,'mcall 12,1',13,0
  1398. txt_draw_we:
  1399.         db 9,'mcall 12,2',13,'popad',13,9,'ret',13,0
  1400. txt_sys_dir db 'system_dir_',0
  1401. txt_lib_name db 'lib_name_',0
  1402. txt_lib_path db ' sys_path, library_path, ',0
  1403. txt_sys_err db '‘¨á⥬­ ï ®è¨¡ª ',0
  1404. txt_ll_start db 'l_libs_start:',13,0
  1405. txt_lib db 9,'lib_',0
  1406. txt_ll db 'l_libs ',0
  1407. txt_err_m_f_lib db 'err_msg_found_lib_',0
  1408. txt_head_l db 'head_f_l',0
  1409. txt_err_m_i_lib db 'err_msg_import_',0
  1410. txt_head_i db 'head_f_i',0
  1411. txt_ll_end db 'l_libs_end:',13,0
  1412. ;txt_bit_28 db '0x10000000',0
  1413. txt_bit_29 db '0x20000000',0
  1414. txt_bit_30 db '0x40000000',0
  1415. ;txt_bit_31 db '0x80000000',0
  1416. txt_struc db 'struc',0
  1417. txt_t db 't',0
  1418. txt_met_end db '.end',0
  1419. txt_ends db 'ends',13,13,0
  1420. txt_mov db 'mov ',0
  1421. txt_xor db 'xor ',0
  1422. txt_or db 'or  ',0
  1423. txt_cmp db 'cmp ',0
  1424. txt_call db 'call ',0
  1425. txt_jne_f db 'jne @f',0
  1426. txt_a_met db '@@:',0
  1427. txt_ah db 'ah',0
  1428. txt_eax db 'eax',0
  1429. txt_ebx db 'ebx',0
  1430. txt_ecx db 'ecx',0
  1431. txt_edx db 'edx',0
  1432. txt_edi db 'edi',0
  1433. txt_esi db 'esi',0
  1434. txt_align_4 db 'align 4',13,0
  1435. txt_d_poi db ':',0
  1436. txt_ret db 'ret',13,0
  1437. txt_shl_16 db ' shl 16',0
  1438. txt_shl_24 db ' shl 24',0
  1439. txt_std_mouse_ed:
  1440.         db 9,'stdcall [edit_box_mouse], ',0
  1441. txt_std_init_cb:
  1442.         db 9,'init_checkboxes2 check_boxes,check_boxes_end',13,0
  1443. txt_std_mouse_cb:
  1444.         db 9,'stdcall [check_box_mouse], ',0
  1445. txt_std_key_ed:
  1446.         db 9,'stdcall [edit_box_key], ',0
  1447. txt_incl:
  1448.         db 'include ',0
  1449.  
  1450. txt_cbox db ' check_box2',0
  1451. txt_cb_b db 13,'check_boxes:',0
  1452. txt_cb_e db 'check_boxes_end:',13,0
  1453.  
  1454. txt_ebox db ' edit_box',0
  1455. txt_editb_draw db 9,'stdcall [edit_box_draw], ',0
  1456. txt_cbox_draw db 9,'stdcall [check_box_draw], ',0
  1457.  
  1458. ;­ ç «® ä㭪樨 ª­®¯®ª
  1459. txt_but_beg db 'align 4',13,'button:',13,9,'mcall 17',13,0
  1460. txt_but_mid db 9,'cmp ah,1',13,9,'jne still',13,'.exit:',13,0
  1461. ;ª®­¥æ ä㭪樨 ª­®¯®ª (§ ¢¥à襭¨¥ ¯à®£à ¬ë)
  1462. txt_but_end db 9,'mcall -1',13,0
  1463.  
  1464. txt_key_1:
  1465. db 'align 4',13,'key:',13,9,'mcall 2',13
  1466. txt_key_2:
  1467. db 9,'jmp still',13
  1468. txt_key_3:
  1469.  
  1470. ;¯®«ãç ¥¬ ¯®à浪®¢ë© ­®¬¥à ®¡ê¥ªâ  ®â­®á¨â¥«ì­® ¯ ¬ïâ¨ í«¥¬¥­â  tree2
  1471. ;output:
  1472. ; txt_buf - áâப  á ­®¬¥à®¬ ®¡ê¥ªâ 
  1473. align 4
  1474. proc get_obj_id_str, p_obj:dword, txt_buf:dword
  1475.         push eax ecx edx
  1476.         mov eax,dword[p_obj]
  1477.         sub eax,[tree2.data_info]
  1478.         xor edx,edx
  1479.         xor ecx,ecx
  1480.         mov cx,word[tree2.info_size]
  1481.         div ecx
  1482.  
  1483.         mov edx,dword[txt_buf]
  1484.         mov byte[edx],0
  1485.         stdcall str_cat_value,edx,eax
  1486.         pop edx ecx eax
  1487.         ret
  1488. endp
  1489.  
  1490. ;¯®«ãç ¥¬ ¯®à浪®¢ë© ­®¬¥à ®¡ê¥ªâ  ®â­®á¨â¥«ì­® ¯ ¬ïâ¨ í«¥¬¥­â  tree2
  1491. ;output:
  1492. ; eax - ­®¬¥à ®¡ê¥ªâ 
  1493. align 4
  1494. proc get_obj_id, p_obj:dword
  1495.         push ecx edx
  1496.         mov eax,dword[p_obj]
  1497.         sub eax,[tree2.data_info]
  1498.         xor edx,edx
  1499.         xor ecx,ecx
  1500.         mov cx,word[tree2.info_size]
  1501.         div ecx
  1502.         pop edx ecx
  1503.         ret
  1504. endp
  1505.  
  1506. ;--- ⥪áâ®¢ë¥ ä㭪樨 ---
  1507.  
  1508. ;¢ë¡¨à ¥¬ áâப㠨§ ¬ á¨¢ , ¯® 㪠§ ­­®¬ã ¨­¤¥ªáã
  1509. ;input:
  1510. ; str - 㪠§ â¥«ì ­  ¬ á¨¢ áâப
  1511. ; ind - ¨­¤¥ªá ¨áª®¬®© áâப¨
  1512. ;output:
  1513. ; edi - 㪠§ â¥«ì ­  ­ ©¤¥­ãî áâபã
  1514. align 4
  1515. proc get_string_by_ind, str:dword, ind:dword
  1516. push eax ebx ecx
  1517.         mov edi,[str]
  1518.         mov ebx,[ind]
  1519.         xor al,al ;0 - ᨬ¢®« ª®­æ  áâப¨
  1520.         @@:
  1521.                 cmp ebx,0
  1522.                 jle @f ;¥á«¨ ­ ©¤¥­  áâப  á 㪠§ ­­ë¬ ¨­¤¥ªá®¬
  1523.                 xor ecx,ecx
  1524.                 dec ecx ;ecx - ç¨á«® ¯à®á¬ âਢ ¥¬ëå ¡ ©â
  1525.                 cld
  1526.                 repne scasb ;¨é¥¬ ª®­¥æ áâப¨ (al=0)
  1527.                 cmp byte[edi],0
  1528.                 je @f ;¥á«¨ á«¥¤ãî饩 áâப¨ ­¥â ¢ë室 ¨§ 横« 
  1529.                 dec ebx
  1530.                 jmp @b
  1531.         @@:
  1532. pop ecx ebx eax
  1533.         ret
  1534. endp
  1535.  
  1536. align 4
  1537. proc mem_clear, mem:dword, len:dword
  1538.         push eax ecx edi
  1539.         cld
  1540.         xor al,al
  1541.         mov edi, dword[mem]
  1542.         mov ecx, dword[len]
  1543.         repne stosb
  1544.         pop edi ecx eax
  1545.         ret
  1546. endp
  1547.  
  1548. align 4
  1549. proc str_cat, str1:dword, str2:dword
  1550.         push eax ecx edi esi
  1551.         mov esi,dword[str2]
  1552.         stdcall str_len,esi
  1553.         mov ecx,eax
  1554.         inc ecx
  1555.         mov edi,dword[str1]
  1556.         stdcall str_len,edi
  1557.         add edi,eax
  1558.         cld
  1559.         repne movsb
  1560.         pop esi edi ecx eax
  1561.         ret
  1562. endp
  1563.  
  1564. align 4
  1565. proc str_cat_value, str1:dword, value:dword
  1566.         pushad
  1567.         mov edi,[str1]
  1568.         stdcall str_len,edi
  1569.         add edi,eax
  1570.         mov eax,[value]
  1571.         call tl_convert_to_str
  1572.         popad
  1573.         ret
  1574. endp
  1575.  
  1576. ;output:
  1577. ; eax = strlen
  1578. align 4
  1579. proc str_len, str1:dword
  1580.         mov eax,[str1]
  1581.         @@:
  1582.                 cmp byte[eax],0
  1583.                 je @f
  1584.                 inc eax
  1585.                 jmp @b
  1586.         @@:
  1587.         sub eax,[str1]
  1588.         ret
  1589. endp
  1590.  
  1591. ;input:
  1592. ; eax = value
  1593. ; edi = string buffer
  1594. align 4
  1595. tl_convert_to_str:
  1596.         pushad
  1597.         stdcall mem_clear,edi,12
  1598.         call .str
  1599.         popad
  1600.         ret
  1601.  
  1602. align 4
  1603. .str:
  1604.         mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬  áç¨á«¥­¨ï ¨§¬¥­ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤­ë¥ ¯ à ¬¥âàë eax - ç¨á«®
  1605.                 ;¯à¥à¥¢®¤ ç¨á«  ¢ ASCII áâப㠢室­ë¥ ¤ ­­ë¥ ecx=á¨á⥬  áç¨á«¥­ï edi  ¤à¥á ªã¤  § ¯¨á뢠âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®­¥æ ¯¥à¥¬¥­­®©
  1606.         cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
  1607.         jb @f
  1608.                 xor edx,edx ;®ç¨áâ¨âì edx
  1609.                 div ecx     ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
  1610.                 push edx    ;¯®«®¦¨âì ¢ á⥪
  1611.                 ;dec edi    ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
  1612.                 call .str   ;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
  1613.                 pop eax
  1614.         @@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
  1615.         or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  ç¥¬ ¤¢¥ ¢ëè¥
  1616.         stosb       ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
  1617.         ret