Subversion Repositories Kolibri OS

Rev

Rev 1432 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;Ž£à®¬­ ï ¡« £®¤ à­®áâì Maxxxx32, Diamond, Heavyiron
  2. ;¨ ¤à㣨¬ ¯à®£à ¬¬¨áâ ¬,   â ª¦¥
  3. ;’¥¯«®¢ã €«¥ªá¥î (<Lrz> www.lrz.land.ru)
  4. use32
  5.   org 0x0
  6.   db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
  7.   dd 0x1
  8.   dd start
  9.   dd i_end ; à §¬¥à ¯à¨«®¦¥­¨ï
  10.   dd mem
  11.   dd stacktop
  12.   dd 0x0
  13.   dd sys_path
  14.  
  15. include '../../proc32.inc'
  16. include '../../macros.inc'
  17. include 'mem.inc'
  18. include 'dll.inc'
  19.  
  20. include '../../develop/libraries/box_lib/load_lib.mac'
  21. include '../../develop/libraries/box_lib/trunk/tree_list.mac'
  22. include '../../develop/libraries/box_lib/trunk/editbox.mac'
  23. include '../../develop/libraries/box_lib/trunk/checkbox.mac'
  24.  
  25. min_window_w equ 485 ;¬¨­¨¬ «ì­ ï è¨à¨­  ®ª­ 
  26. min_window_h equ 325 ;¬¨­¨¬ «ì­ ï ¢ëá®â  ®ª­ 
  27. otst_panel_left equ 265
  28.  
  29. include 'tile_fun.inc'
  30. include 'pl_import.inc'
  31.  
  32.   @use_library
  33.  
  34. struct f70
  35.   func_n dd ?
  36.   param1 dd ?
  37.   param2 dd ?
  38.   param3 dd ?
  39.   param4 dd ?
  40.   rezerv db ?
  41.   name dd ?
  42. ends
  43.  
  44. fn_metki db 'pl_metki.lst',0
  45. fn_icon1 db 'tl_sys_16.png',0
  46. fn_icon2 db 'tl_nod_16.bmp',0
  47.  
  48. ini_name db 'planet_v.ini',0
  49. ini_sec  db 'Map',0
  50. ini_k_cache db 'Cache',0
  51. ini_def_cache db '/cache/sat',0
  52. ini_ext  db 'ext'
  53. .number  db '?'
  54. .def db 0 ;à áè¨à¥­¨¥ ¯® 㬮«ç ­¨î
  55.  
  56.  
  57. align 4
  58. start:
  59.   load_libraries l_libs_start,load_lib_end
  60.  
  61. ;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
  62.         mov     ebp,lib0
  63.         cmp     dword [ebp+ll_struc_size-4],0
  64.         jz      @f
  65.         mcall   -1      ;exit not correct
  66. @@:
  67.         mov     ebp,lib1
  68.         cmp     dword [ebp+ll_struc_size-4],0
  69.         jz      @f
  70.         mcall   -1      ;exit not correct
  71. @@:
  72.         mov     ebp,lib2
  73.         cmp     dword [ebp+ll_struc_size-4],0
  74.         jz      @f
  75.         mcall   -1      ;exit not correct
  76. @@:
  77.         mov     ebp,lib3
  78.         cmp     dword [ebp+ll_struc_size-4],0
  79.         jz      @f
  80.         mcall   -1      ;exit not correct
  81. @@:
  82.  
  83.   stdcall dll.Init,dword[lib_init]
  84.   stdcall dll.Init,dword[lib_init_ini]
  85.  
  86.   copy_path ini_name,sys_path,file_name,0x0
  87.   stdcall dword[ini_get_str],file_name,ini_sec,ini_k_cache,dword[edit1.text],dword[edit1.max],ini_def_cache
  88.   stdcall [str_len],dword[edit1.text],dword[edit1.max]
  89.   mov dword[edit1.size],eax
  90.   mov dword[edit1.pos],eax
  91.  
  92.   stdcall dword[tl_data_init], tree1
  93.   stdcall dword[tl_data_init], tree2
  94.  
  95. ;áç¨â뢠¥¬ à áè¨à¥­¨ï ª àâ ¨§ *.ini ä ©« 
  96.   mov byte[ini_ext.number],'0'
  97. @@: ;áç¨â뢠¥¬ ¯ à ¬¥âàë ®â ext1 ¤® ext9
  98.   inc byte[ini_ext.number]
  99.   stdcall dword[ini_get_str],file_name,ini_sec,ini_ext,txt_tile_type_0,dword[tree1.info_capt_len],ini_ext.def
  100.   cmp byte[txt_tile_type_0],0
  101.   je @f
  102.     stdcall dword[tl_node_add], txt_tile_type_0, 0, tree1
  103.   jmp @b
  104. @@:
  105.   mov byte[ini_ext.number],'0' ;áç¨â뢠¥¬ ¯ à ¬¥âà ®â ext0 ª®â®àë© ¡ã¤¥â ¢ë¡à ­ ¢ ᯨ᪥
  106.   stdcall dword[ini_get_str],file_name,ini_sec,ini_ext,txt_tile_type_0,dword[tree1.info_capt_len],ini_ext.def
  107.   cmp byte[txt_tile_type_0],0
  108.   jne @f
  109.     mov dword[txt_tile_type_0],'.bmp' ;¥á«¨ ¢ *.ini ä ©«¥ ­¨ç¥£® ­¥â ¤®¡ ¢«ï¥¬ à áè¨à¥­¨¥ .bmp
  110.   @@:
  111.   stdcall dword[tl_node_add], txt_tile_type_0, 0, tree1
  112.  
  113. ; init bmp file
  114.   push dword RGB_TILE_SIZE+300 ;300 - § ¯ á­ë¥ ¡ ©âë á ãç¥â®¬ § £®«®¢ª  bmp ä ©« 
  115.   call mem.Alloc
  116.   mov [bmp_icon],eax
  117.  
  118.   stdcall array_tile_function, tile_00,max_tiles_count,tile_init
  119.   stdcall tiles_init_grid, tile_00,max_tiles_count,max_tiles_cols
  120.  
  121.   push dword TREE_ICON_SYS16_BMP_SIZE
  122.   call mem.Alloc
  123.   mov [tree_sys_icon],eax
  124.  
  125.   push dword TREE_ICON_NOD16_BMP_SIZE
  126.   call mem.Alloc
  127.   mov [tree_nod_icon],eax
  128.  
  129.   copy_path fn_icon1,sys_path,file_name,0x0
  130.   mov eax,70 ;load icon file
  131.   mov [run_file_70.func_n], 0
  132.   mov [run_file_70.param1], 0
  133.   mov [run_file_70.param2], 0
  134.   mov [run_file_70.param3], TREE_ICON_SYS16_BMP_SIZE
  135.   m2m [run_file_70.param4], [tree_sys_icon]
  136.   mov [run_file_70.rezerv], 0
  137.   mov [run_file_70.name], file_name
  138.   mov ebx,run_file_70
  139.   int 0x40
  140.   cmp ebx,0xffffffff
  141.   je @f
  142.     stdcall dword[img_decode], dword[tree_sys_icon],ebx,0
  143.     mov dword[data_icon],eax
  144.     stdcall dword[img_to_rgb2], dword[data_icon],dword[tree_sys_icon]
  145.     stdcall dword[img_destroy], dword[data_icon]
  146.  
  147.     m2m dword[tree1.data_img_sys],dword[tree_sys_icon]
  148.     m2m dword[tree2.data_img_sys],dword[tree_sys_icon]
  149.   @@:
  150.  
  151.  
  152.   copy_path fn_icon2,sys_path,file_name,0x0
  153.   mov eax,70 ;load icon file
  154.   mov [run_file_70.param3], TREE_ICON_NOD16_BMP_SIZE
  155.   m2m [run_file_70.param4], [tree_nod_icon]
  156.   mov ebx,run_file_70
  157.   int 0x40
  158.   cmp ebx,0xffffffff
  159.   je @f
  160.     stdcall dword[img_decode], dword[tree_nod_icon],ebx,0
  161.     mov dword[data_icon],eax
  162.     stdcall dword[img_to_rgb2], dword[data_icon],dword[tree_nod_icon]
  163.     stdcall dword[img_destroy], dword[data_icon]
  164.  
  165.     m2m dword[tree1.data_img],dword[tree_nod_icon]
  166.     m2m dword[tree2.data_img],dword[tree_nod_icon]
  167.   @@:
  168.  
  169.   mcall 40,0x27
  170.  
  171.   mcall 48,3,sc,sizeof.system_colors
  172.   ;ãáâ ­®¢ª  á¨á⥬­ëå 梥⮢
  173.   edit_boxes_set_sys_color edit1,editboxes_end,sc
  174.   check_boxes_set_sys_color ch1,checkboxes_end,sc
  175.  
  176.   mov byte[file_name],0
  177.  
  178. red_win:
  179.   call draw_win
  180.   call but_MetLoad
  181.  
  182. still:
  183.   mov eax,10
  184.   mcall
  185.  
  186.   cmp al,0x1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
  187.   jz red_win
  188.   cmp al,0x2
  189.   jz key
  190.   cmp al,0x3
  191.   jz button
  192.  
  193.   push dword ch2
  194.   call [check_box_mouse]
  195.   push dword ch1
  196.   call [check_box_mouse]
  197.  
  198.   stdcall [edit_box_mouse], edit1
  199.   stdcall [edit_box_mouse], edit2
  200.  
  201.   stdcall [tl_mouse], tree1
  202.   stdcall [tl_mouse], tree2
  203.  
  204.   jmp still
  205.  
  206. key:
  207.   push eax ebx
  208.   mcall 2
  209.   stdcall [edit_box_key], edit1
  210.   stdcall [edit_box_key], edit2
  211.  
  212.   push dword tree1
  213.   call [tl_key]
  214.   push dword tree2
  215.   call [tl_key]
  216.  
  217.   mov ebx,dword[el_focus] ;÷òî-áû êàðòà íå äâèãàëàñü åñëè îêíà treelist â ôîêóñå
  218.   cmp ebx, dword tree1
  219.   je .end_f
  220.   cmp ebx, dword tree2
  221.   je .end_f
  222.  
  223.   ;÷òî-áû êàðòà íå äâèãàëàñü åñëè òåêñòîâûå ïîëÿ â ôîêóñå
  224.   test word[edit1.flags],10b ;ed_focus
  225.   jne .end_f
  226.   test word[edit2.flags],10b ;ed_focus
  227.   jne .end_f
  228.  
  229.     cmp ah,179 ;Right
  230.     jne @f
  231.       call CursorMoveRight
  232.     @@:
  233.     cmp ah,176 ;Left
  234.     jne @f
  235.     cmp dword[map.coord_x],0
  236.     je @f
  237.       dec dword[map.coord_x]
  238.       ;ᤢ¨£ ¥¬ á¥âªã â ©«®¢ ¢¯à ¢®, çâ®-¡ë ç áâì â ©«®¢ ᮢ¯ «¨ ¨ ¯à¨è«®áì ¬¥­ìè¥ § £à㦠âì ­®¢ëå
  239.       stdcall tiles_grid_move_right, tile_00,max_tiles_count,max_tiles_cols
  240.       call but_Refresh
  241.     @@:
  242.     cmp ah,177 ;Down
  243.     jne @f
  244.       call CursorMoveDown
  245.     @@:
  246.     cmp ah,178 ;Up
  247.     jne @f
  248.     cmp dword[map.coord_y],0
  249.     je @f
  250.       dec dword[map.coord_y]
  251.       ;ᤢ¨£ ¥¬ á¥âªã â ©«®¢ ¢­¨§
  252.       stdcall tiles_grid_move_down, tile_00,max_tiles_count,max_tiles_rows
  253.       call but_Refresh
  254.     @@:
  255.  
  256.     cmp ah,45 ;-
  257.     jne @f
  258.       call but_ZoomM
  259.     @@:
  260.     cmp ah,61 ;+
  261.     jne @f
  262.       call but_ZoomP
  263.     @@:
  264.  
  265.   .end_f:
  266.   pop ebx eax
  267.   jmp still
  268.  
  269.  
  270. align 4
  271. draw_win:
  272. pushad
  273.   mcall 12,1
  274.  
  275.   xor eax,eax
  276.   mov ebx,20*65536+min_window_w
  277.   mov ecx,20*65536+min_window_h
  278.   mov edx,[sc.work]
  279.   or  edx,0x33000000
  280.   mov edi,hed
  281.   mcall
  282.  
  283.   mcall 9,procinfo,-1
  284.  
  285.   cmp dword[procinfo.box.width],min_window_w ; ¯à®¢¥à塞 è¨à¨­ã ®ª­ 
  286.   jge @f
  287.     mov dword[procinfo.box.width],min_window_w ; ¥á«¨ ®ª­® ®ç¥­ì 㧪®¥, 㢥«¨ç¨¢ ¥¬ è¨à¨­ã ¤«ï ¨§¡¥¦ ­¨ï £«îª®¢
  288.   @@:
  289.  
  290.   mov edi,dword[procinfo.box.width]
  291.   sub edi,min_window_w-otst_panel_left
  292.   mov dword[tree1.box_left],edi
  293.   mov dword[tree2.box_left],edi
  294.  
  295.   mov eax,dword[tree2.box_left] ;¤¢¨£ ¥¬ áªà®««¨­£
  296.   add eax,dword[tree2.box_width]
  297.   mov ebx,dword[tree2.p_scrol]
  298.   mov word[ebx+2],ax
  299.  
  300.   mov dword[edit2.left],edi
  301.   add dword[edit2.left],370-otst_panel_left
  302.  
  303.   stdcall dword[tl_draw],dword tree1
  304.   stdcall dword[tl_draw],dword tree2
  305.   mov dword[wScrMetki.all_redraw],1
  306.   push dword wScrMetki
  307.   call [scrollbar_ver_draw]
  308.  
  309.   mov eax,8 ;ª­®¯ª 
  310.   mov ebx,145*65536+20
  311.   mov ecx,5*65536+25
  312.   mov edx,6
  313.   mov esi,[sc.work_button]
  314.   int 0x40
  315.  
  316.   mov ebx,100*65536+20
  317.   mov ecx,5*65536+25
  318.   mov edx,5
  319.   int 0x40
  320.  
  321.   mov bx,di
  322.   shl ebx,16
  323.   mov bx,100
  324.   mov ecx,265*65536+25
  325.   mov edx,9
  326.   int 0x40
  327.  
  328.   ;ebx ...
  329.   mov ecx,235*65536+25
  330.   mov edx,8
  331.   int 0x40
  332.  
  333.   mov bx,di
  334.   add bx,410-otst_panel_left
  335.   shl ebx,16
  336.   mov bx,55
  337.   ;mov ebx,410*65536+55
  338.   mov ecx,5*65536+25
  339.   mov edx,7
  340.   int 0x40
  341.  
  342.   mov bx,di
  343.   add bx,440-otst_panel_left
  344.   shl ebx,16
  345.   mov bx,30
  346.   ;mov ebx,440*65536+30
  347.   mov ecx,265*65536+25
  348.   mov edx,12
  349.   int 0x40
  350.  
  351.   mov bx,di
  352.   add bx,405-otst_panel_left
  353.   shl ebx,16
  354.   mov bx,30
  355.   ;mov ebx,405*65536+30
  356.   mov ecx,265*65536+25
  357.   mov edx,11
  358.   int 0x40
  359.  
  360.   mov bx,di
  361.   add bx,370-otst_panel_left
  362.   shl ebx,16
  363.   mov bx,30
  364.   ;mov ebx,370*65536+30
  365.   mov ecx,265*65536+25
  366.   mov edx,10
  367.   int 0x40
  368.  
  369.   mov eax,4 ;à¨á®¢ ­¨¥ ⥪áâ 
  370.   mov ebx,152*65536+13
  371.   mov ecx,[sc.work_button_text]
  372.   or  ecx,0x80000000
  373.   mov edx,txt_zoom_p
  374.   mcall
  375.  
  376.   mov ebx,107*65536+13
  377.   mov edx,txt_zoom_m
  378.   int 0x40
  379.  
  380.   mov bx,di
  381.   add bx,270-otst_panel_left
  382.   shl ebx,16
  383.   mov bx,243
  384.   ;mov ebx,270*65536+243
  385.   mov edx,txt151
  386.   int 0x40
  387.  
  388.   mov bx,di
  389.   add bx,270-otst_panel_left
  390.   shl ebx,16
  391.   mov bx,273
  392.   ;mov ebx,270*65536+273
  393.   mov edx,txt152
  394.   int 0x40
  395.  
  396.   mov bx,di
  397.   add bx,415-otst_panel_left
  398.   shl ebx,16
  399.   mov bx,13
  400.   ;mov ebx,415*65536+13
  401.   mov edx,txt_but_refresh
  402.   int 0x40
  403.  
  404.   mov bx,di
  405.   add bx,380-otst_panel_left
  406.   shl ebx,16
  407.   mov bx,275
  408.   ;mov ebx,380*65536+275
  409.   mov edx,txt_met_up
  410.   int 0x40
  411.  
  412.   mov bx,di
  413.   add bx,415-otst_panel_left
  414.   shl ebx,16
  415.   mov bx,275
  416.   ;mov ebx,415*65536+275
  417.   mov edx,txt_met_dn
  418.   int 0x40
  419.  
  420.  
  421.   mov bx,di
  422.   add bx,450-otst_panel_left
  423.   shl ebx,16
  424.   mov bx,275
  425.   ;mov ebx,450*65536+275
  426.   mov edx,txt_met_sh
  427.   int 0x40
  428.  
  429.   mov ecx,[sc.work_text]
  430.   or  ecx,0x80000000
  431.  
  432.   mov ebx,175*65536+13
  433.   mov edx,txt_cache
  434.   int 0x40
  435.  
  436.   mov bx,di
  437.   ;add bx,450-otst_panel_left
  438.   shl ebx,16
  439.   mov bx,35
  440.   ;mov ebx,265*65536+35
  441.   mov edx,txt141
  442.   int 0x40
  443.  
  444.   mov bx,135
  445.   ;mov ebx,265*65536+135
  446.   mov edx,txt142
  447.   int 0x40
  448.  
  449.   call draw_tiles
  450.  
  451.   push dword ch2
  452.   call [check_box_draw]
  453.   push dword ch1
  454.   call [check_box_draw]
  455.  
  456.   stdcall [edit_box_draw], edit1
  457.   stdcall [edit_box_draw], edit2
  458.  
  459.   mcall 12,2
  460. popad
  461.   ret
  462.  
  463.   head_f_i:
  464.   head_f_l  db '‘¨á⥬­ ï ®è¨¡ª ',0
  465.   err_message_found_lib0 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã box_lib.obj',0
  466.   err_message_import0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ box_lib.obj',0
  467.   err_message_found_lib1 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã libimg.obj',0
  468.   err_message_import1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libimg.obj',0
  469.   err_message_found_lib2 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã str.obj',0
  470.   err_message_import2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ str.obj',0
  471.   err_message_found_lib3 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã libini.obj',0
  472.   err_message_import3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libini.obj',0
  473.  
  474. system_dir0 db '/sys/lib/'
  475. boxlib_name db 'box_lib.obj',0
  476.  
  477. system_dir1 db '/sys/lib/'
  478. libimg_name db 'libimg.obj',0
  479.  
  480. system_dir2 db '/sys/lib/'
  481. strlib_name db 'str.obj',0
  482.  
  483. system_dir3 db '/sys/lib/'
  484. libini_name db 'libini.obj',0
  485.  
  486. ;library structures
  487. l_libs_start:
  488.   lib0 l_libs boxlib_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, boxlib_import,err_message_import0, head_f_i
  489.   lib1 l_libs libimg_name, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l, libimg_import, err_message_import1, head_f_i
  490.   lib2 l_libs strlib_name, sys_path, file_name, system_dir2, err_message_found_lib2, head_f_l, strlib_import, err_message_import2, head_f_i
  491.   lib3 l_libs libini_name, sys_path, file_name, system_dir3, err_message_found_lib3, head_f_l, libini_import, err_message_import3, head_f_i
  492. load_lib_end:
  493.  
  494. align 4
  495. button:
  496.   mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
  497.   cmp ah,5
  498.   jne @f
  499.     call but_ZoomM
  500.   @@:
  501.   cmp ah,6
  502.   jne @f
  503.     call but_ZoomP
  504.   @@:
  505.   cmp ah,7
  506.   jne @f
  507.     call but_Refresh
  508.   @@:
  509.  
  510.   cmp ah,9
  511.   jz  but_MetSave
  512.   cmp ah,8
  513.   jz  but_MetAdd
  514.  
  515.   cmp ah,10
  516.   jne @f
  517.     call but_met_up
  518.   @@:
  519.   cmp ah,11
  520.   jne @f
  521.     call but_met_dn
  522.   @@:
  523.   cmp ah,12
  524.   jne @f
  525.     call fun_goto_met
  526.   @@:
  527.   cmp ah,1
  528.   jne still
  529.  
  530. .exit:
  531.   push dword[bmp_icon]
  532.   call mem.Free
  533.   stdcall array_tile_function, tile_00,max_tiles_count,tile_destroy
  534.  
  535.   stdcall dword[tl_data_clear], tree1
  536.   mov dword[tree2.data_img_sys],0 ;÷èñòèì óêàçàòåëü íà ñèñòåìíûå èêîíêè,
  537.     ;ò. ê. îíè áûëè óäàëåíû âåðõíåé ôóíêöèåé tl_data_clear
  538.     ;ïîâòîðíûé âûçîâ tl_data_clear áåç ÷èñòêè óêàçàòåëÿ âûçâåò îøèáêó
  539.   mov dword[tree2.data_img],0 ;÷èñòèì óêàçàòåëü íà èêîíêè óçëîâ
  540.   stdcall dword[tl_data_clear], tree2
  541.  
  542. ;  stdcall dword[img_destroy], dword[data_icon]
  543.   mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
  544.  
  545.  
  546. ;input:
  547. ;data_rgb - pointer to rgb data
  548. ;size - count img pixels (size img data / 3(rgb) )
  549. align 4
  550. proc img_rgb_wdiv2 data_rgb:dword, size:dword
  551.   push eax ebx ecx edx
  552.   mov eax,dword[data_rgb]
  553.   mov ecx,dword[size] ;ecx = size
  554.   imul ecx,3
  555.   @@: ;çàòåìíåíèå öâåòà ïèêñåëåé
  556.     shr byte[eax],1
  557.     and byte[eax],0x7f
  558.     inc eax
  559.     loop @b
  560.  
  561.   mov eax,dword[data_rgb]
  562.   mov ecx,dword[size] ;ecx = size
  563.   shr ecx,1
  564.   @@: ;ñëîæåíèå öâåòîâ ïèêñåëåé
  565.     mov ebx,dword[eax+3] ;êîïèðóåì öâåò ñîñåäíåãî ïèêñåëÿ
  566.     add word[eax],bx
  567.     shr ebx,16
  568.     add byte[eax+2],bl
  569.  
  570.     add eax,6 ;=2*3
  571.     loop @b
  572.  
  573.   mov eax,dword[data_rgb]
  574.   add eax,3
  575.   mov ebx,eax
  576.   add ebx,3
  577.   mov ecx,dword[size] ;ecx = size
  578.   shr ecx,1
  579.   dec ecx ;ëèøíèé ïèêñåëü
  580.   @@: ;ïîäæàòèå ïèêñåëåé
  581.     mov edx,dword[ebx]
  582.     mov word[eax],dx
  583.     shr edx,16
  584.     mov byte[eax+2],dl
  585.  
  586.     add eax,3
  587.     add ebx,6
  588.     loop @b
  589.  
  590.   pop edx ecx ebx eax
  591.   ret
  592. endp
  593.  
  594. ;input:
  595. ;data_rgb - pointer to rgb data
  596. ;size - count img pixels (size img data / 3(rgb) )
  597. ;size_w - width img in pixels
  598. align 4
  599. proc img_rgb_hdiv2, data_rgb:dword, size:dword, size_w:dword
  600.   pushad
  601.  
  602.   mov eax,dword[data_rgb] ;eax =
  603.   mov ecx,dword[size]     ;ecx = size
  604.   imul ecx,3
  605.   @@: ;çàòåìíåíèå öâåòà ïèêñåëåé
  606.     shr byte[eax],1
  607.     and byte[eax],0x7f
  608.     inc eax
  609.     loop @b
  610.  
  611.   mov eax,dword[data_rgb] ;eax =
  612.   mov edi,dword[size_w]
  613.   lea esi,[edi+edi*2] ;esi = width*3(rgb)
  614.   mov ebx,esi
  615.   add ebx,eax
  616.   mov ecx,dword[size]  ;ecx = size
  617.   shr ecx,1
  618.   xor edi,edi
  619.   @@: ;ñëîæåíèå öâåòîâ ïèêñåëåé
  620.     mov edx,dword[ebx] ;êîïèðóåì öâåò íèæíåãî ïèêñåëÿ
  621.     add word[eax],dx
  622.     shr edx,16
  623.     add byte[eax+2],dl
  624.  
  625.     add eax,3
  626.     add ebx,3
  627.     inc edi
  628.     cmp edi,dword[size_w]
  629.     jl .old_line
  630.       add eax,esi
  631.       add ebx,esi
  632.       xor edi,edi
  633.     .old_line:
  634.     loop @b
  635.  
  636.  
  637.   mov eax,dword[data_rgb] ;eax =
  638.   add eax,esi ;esi = width*3(rgb)
  639.   mov ebx,esi
  640.   add ebx,eax
  641.   mov ecx,dword[size]  ;ecx = size
  642.   shr ecx,1
  643.   sub ecx,dword[size_w] ;ëèøíÿÿ ñòðîêà ïèêñåëåé
  644.   xor edi,edi
  645.   @@: ;ïîäæàòèå ïèêñåëåé
  646.     mov edx,dword[ebx] ;êîïèðóåì öâåò íèæíåãî ïèêñåëÿ
  647.     mov word[eax],dx
  648.     shr edx,16
  649.     mov byte[eax+2],dl
  650.  
  651.     add eax,3
  652.     add ebx,3
  653.     inc edi
  654.     cmp edi,dword[size_w]
  655.     jl .old_line_2
  656.       add ebx,esi
  657.       xor edi,edi
  658.     .old_line_2:
  659.     loop @b
  660.  
  661.   popad
  662.   ret
  663. endp
  664.  
  665. ;input:
  666. ;data_rgb - pointer to rgb data
  667. ;size - count img pixels (size img data / 3(rgb) )
  668. align 4
  669. proc img_rgb_wmul2, data_rgb:dword, size:dword
  670.   push eax ebx ecx edx
  671.   ;eax - source
  672.   ;ebx - destination
  673.   mov ecx,dword[size] ;ecx = size
  674.   mov eax,ecx
  675.   dec eax
  676.   lea eax,[eax+eax*2] ;eax = (size-1)*3
  677.   mov ebx,eax ;ebx = size*3
  678.   add eax,dword[data_rgb] ;eax = pointer + size*3
  679.   add ebx,eax ;ebx = pointer + 2*size*3
  680.   @@:
  681.     mov edx,dword[eax] ;edx = pixel color
  682.     mov word[ebx],dx
  683.     mov word[ebx+3],dx
  684.     shr edx,16
  685.     mov byte[ebx+2],dl
  686.     mov byte[ebx+3+2],dl
  687.     sub eax,3
  688.     sub ebx,6
  689.     loop @b
  690.   pop edx ecx ebx eax
  691.   ret
  692. endp
  693.  
  694. ;äã­ªæ¨ï ¤«ï à áâ¢ ­¨ï ¨§®¡à ¦¥­¨ï ¯® ¢ëá®â¥ ¢ 2 à § 
  695. ;¢ 㪠§ â¥«¥ data_rgb ¯ ¬ï⨠¤®«¦­® ¡ëâì ¢ 2 à §  ¡®«ìè¥ ç¥¬ size*3
  696. ;¨­ ç¥ ¯à¨ à áâ¢ ­¨¨ ¡ã¤¥â ®è¨¡ª , ¢ë室  ­  çã¦ãî ¯ ¬ïâì
  697. ;input:
  698. ;data_rgb - pointer to rgb data
  699. ;size - count img pixels (size img data / 3(rgb) )
  700. ;size_w - width img in pixels
  701. align 4
  702. proc img_rgb_hmul2, data_rgb:dword, size:dword, size_w:dword
  703.   pushad
  704.  
  705.   mov esi,dword[size_w]
  706.   lea esi,[esi+esi*2] ;esi = width * 3(rgb)
  707.   mov eax,dword[size]
  708.   lea eax,[eax+eax*2]
  709.   mov edi,eax
  710.   shl edi,1
  711.   add eax,dword[data_rgb] ;eax = pointer to end pixel (old image) + 1
  712.   add edi,dword[data_rgb] ;edi = pointer to end pixel (new image) + 1
  713.   mov ebx,edi
  714.   sub ebx,esi
  715.  
  716.   .beg_line:
  717.   mov ecx,dword[size_w]
  718.   @@:
  719.     sub eax,3
  720.     sub ebx,3
  721.     sub edi,3
  722.  
  723.     mov edx,dword[eax] ;edx = pixel color
  724.     mov word[ebx],dx
  725.     mov word[edi],dx
  726.     shr edx,16
  727.     mov byte[ebx+2],dl
  728.     mov byte[edi+2],dl
  729.  
  730.     loop @b
  731.  
  732.   sub ebx,esi
  733.   sub edi,esi
  734.  
  735.   cmp eax,dword[data_rgb]
  736.   jg .beg_line
  737.  
  738.   popad
  739.   ret
  740. endp
  741.  
  742. ;input:
  743. ;data_rgb - pointer to rgb data
  744. ;size - count img pixels (size img data / 3(rgb) )
  745. ;size_w - width img in pixels
  746. align 4
  747. proc img_rgb_hoffs, data_rgb:dword, size:dword, size_w:dword, hoffs:dword
  748.   push eax ebx ecx edx esi
  749.  
  750.   mov esi,dword[size_w]
  751.   lea esi,[esi+esi*2] ;esi = width * 3(rgb)
  752.   imul esi,dword[hoffs]
  753.  
  754.   mov eax,dword[size]
  755.   lea eax,[eax+eax*2]
  756.   add eax,dword[data_rgb] ;eax = pointer to end pixel + 1
  757.   sub eax,3
  758.   mov ebx,eax
  759.   add ebx,esi
  760.  
  761.   mov ecx,dword[size]
  762.   dec ecx
  763.   @@:
  764.     mov edx,dword[eax] ;edx = pixel color
  765.     mov word[ebx],dx
  766.     shr edx,16
  767.     mov byte[ebx+2],dl
  768.  
  769.     sub eax,3
  770.     sub ebx,3
  771.     loop @b
  772.   pop esi edx ecx ebx eax
  773.   ret
  774. endp
  775.  
  776.  
  777. ;input:
  778. ;data_rgb - pointer to rgb data
  779. ;size_w_old - width img in pixels
  780. ;size_w_new - new width img in pixels
  781. ;size_h - height img in pixels
  782. align 4
  783. proc img_rgb_wcrop, data_rgb:dword, size_w_old:dword, size_w_new:dword, size_h:dword
  784.   pushad
  785.     mov eax, dword[size_w_old]
  786.     lea eax, dword[eax+eax*2] ;eax = width(old) * 3(rgb)
  787.     mov ebx, dword[size_w_new]
  788.     lea ebx, dword[ebx+ebx*2] ;ebx = width(new) * 3(rgb)
  789.     mov edx, dword[size_h]
  790.     ;dec edx
  791.     mov edi, dword[data_rgb] ;edi - ¯®«ã砥⠤ ­­ë¥
  792.     mov esi, edi
  793.     add edi, ebx
  794.     add esi, eax
  795.     cld
  796.   @@:
  797.     dec edx ;㬥­ìè ¥¬ áç¥â稪 ®áâ ¢è¨åáï áâப ­  1
  798.     cmp edx,0
  799.     jle @f
  800.  
  801.     mov ecx, ebx
  802.     rep movsb ;¯¥à¥­®á (ª®¯¨à®¢ ­¨¥) áâப¨ ¯¨ªá¥«¥©
  803. ;stdcall mem_copy,esi,edi,ebx
  804.  
  805.     add esi,eax ;¯¥à¥å®¤ ­  ­®¢ãî áâà®çªã ¨§®¡à ¦¥­¨ï
  806.     sub esi,ebx
  807. ;add esi,eax
  808. ;add edi,ebx
  809.     jmp @b
  810.   @@:
  811.  
  812.   popad
  813.   ret
  814. endp
  815.  
  816. align 4
  817. proc mem_copy, source:dword, destination:dword, len:dword
  818.   push ecx esi edi
  819.     cld
  820.     mov esi, dword[source]
  821.     mov edi, dword[destination]
  822.     mov ecx, dword[len]
  823.     rep movsb
  824.   pop edi esi ecx
  825.   ret
  826. endp
  827.  
  828. align 4
  829. proc mem_clear, mem:dword, len:dword
  830.   push eax ecx edi
  831.     cld
  832.     xor al,al
  833.     mov edi, dword[mem]
  834.     mov ecx, dword[len]
  835.     repne stosb
  836.   pop edi ecx eax
  837.   ret
  838. endp
  839.  
  840.   txt_met_up db 24,0
  841.   txt_met_dn db 25,0
  842.   txt_met_sh db '*',0
  843.   txt_zoom_m db '-',0
  844.   txt_zoom_p db '+',0
  845.   txt151 db '„®¡ ¢¨âì ¬¥âªã',0
  846.   txt152 db '‘®åà ­¨âì ¬¥âª¨',0
  847.   txt_but_refresh db 'Ž¡­®¢¨âì',0
  848.   txt_cache db 'Cache:',0
  849.   txt141 db '‚¨¤ ª àâë',0
  850.   txt142 db '‚ë¡®à ¬¥âª¨',0
  851.  
  852. ; check_boxes
  853. ch1 check_box 5,  5, 6, 12, 0xffffd0, 0x800000, 0, ch_text1, 12,ch_flag_en
  854. ch2 check_box 5, 20, 6, 12, 0xffffd0, 0x800000, 0, ch_text2, 11,ch_flag_en
  855. checkboxes_end:
  856.  
  857. ch_text1 db '¡à âì ᢥàåã'
  858. ch_text2 db '¡à âì á­¨§ã'
  859.  
  860. edit1 edit_box 190, 215,  10, 0xd0ffff, 0xff, 0x80ff, 0, 0xa000, 500, ed_buffer.1, mouse_dd, 0
  861. edit2 edit_box 100, 370, 240, 0xd0ffff, 0xff, 0x80ff, 0, 0xa000,  30, ed_buffer.2, mouse_dd, 0
  862. editboxes_end:
  863.  
  864. tree1 tree_list 10,10, tl_list_box_mode+tl_key_no_edit, 16,16,\
  865.     0x8080ff,0x0000ff,0xffffff, 265,45,90,85, 0,0,0,\
  866.     el_focus, 0,fun_new_map_type
  867. tree2 tree_list 32,300, tl_draw_par_line, 16,16,\
  868.     0x8080ff,0x0000ff,0xffffff, 265,145,190,85, 0,12,0,\
  869.     el_focus, wScrMetki,fun_goto_met
  870.  
  871. align 4
  872. wScrMetki:
  873. .x:
  874. .size_x     dw 16 ;+0
  875. .start_x    dw 0 ;+2
  876. .y:
  877. .size_y     dw 100 ;+4
  878. .start_y    dw 0 ;+6
  879. .btn_high   dd 15 ;+8
  880. .type       dd 1  ;+12
  881. .max_area   dd 100  ;+16
  882. .cur_area   dd 30  ;+20
  883. .position   dd 0  ;+24
  884. .bckg_col   dd 0xeeeeee ;+28
  885. .frnt_col   dd 0xbbddff ;+32
  886. .line_col   dd 0  ;+36
  887. .redraw     dd 0  ;+40
  888. .delta      dw 0  ;+44
  889. .delta2     dw 0  ;+46
  890. .run_x:
  891. .r_size_x   dw 0  ;+48
  892. .r_start_x  dw 0  ;+50
  893. .run_y:
  894. .r_size_y   dw 0 ;+52
  895. .r_start_y  dw 0 ;+54
  896. .m_pos      dd 0 ;+56
  897. .m_pos_2    dd 0 ;+60
  898. .m_keys     dd 0 ;+64
  899. .run_size   dd 0 ;+68
  900. .position2  dd 0 ;+72
  901. .work_size  dd 0 ;+76
  902. .all_redraw dd 0 ;+80
  903. .ar_offset  dd 1 ;+84
  904.  
  905. ed_buffer: ;òåêñò äëÿ edit
  906.   .1: rb 502
  907.   .2: rb 32
  908.  
  909. el_focus dd tree1
  910.  
  911. tree_sys_icon dd 0
  912. tree_nod_icon dd 0
  913.  
  914. bmp_icon   dd 0 ;¯ ¬ïâì ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨ï
  915. data_icon  dd 0 ;¯ ¬ïâì ¤«ï ¯à¥®¡à §®¢ ­¨ï ª à⨭ª¨ äã­ªæ¨ï¬¨ libimg
  916.  
  917. run_file_70 f70
  918.  
  919.  
  920. txt_tile_path db 'tile path',0
  921.   rb 300
  922. txt_tile_type dd txt_tile_type_0 ;óêàçàòåëü íà âûáðàííûé òèï ôàéëîâ
  923. txt_tile_type_0 db 0
  924.   rb 10
  925.  
  926. align 4
  927. map: ;êîîðäèíàòû êàðòû
  928.   .coord_x dd 0 ;êîîðäèíàòà x
  929.   .coord_y dd 0 ;êîîðäèíàòà y
  930.   .zoom    db 1 ;ìàñøòàá
  931.  
  932. align 4
  933. tile_00 rb size_tile_struc * max_tiles_count
  934.  
  935. ;ýòîò êîä íå ìîé, îí ïðåîáðàçóåò ÷èñëî â ñòðîêó
  936. ;input:
  937. ; eax = value
  938. ; edi = string buffer
  939. ;output:
  940. ; edi =
  941. align 4
  942. tl_convert_to_str:
  943.   pushad
  944.     mov dword[edi+1],0;0x20202020
  945.     call .str
  946.   popad
  947.   ret
  948.  
  949. align 4
  950. .str:
  951.   mov ecx,0x0a ;çàäàåòñÿ ñèñòåìà ñ÷èñëåíèÿ èçìåíÿþòñÿ ðåãèñòðû ebx,eax,ecx,edx âõîäíûå ïàðàìåòðû eax - ÷èñëî
  952.     ;ïðåðåâîä ÷èñëà â ASCII ñòðîêó âçîäíûå äàííûå ecx=ñèñòåìà ñ÷èñëåíÿ edi àäðåñ êóäà çàïèñûâàòü, áóäåì ñòðîêó, ïðè÷åì êîíåö ïåðåìåííîé
  953.   cmp eax,ecx  ;ñðàâíèòü åñëè â eax ìåíüøå ÷åì â ecx òî ïåðåéòè íà @@-1 ò.å. íà pop eax
  954.   jb @f
  955.   xor edx,edx  ;î÷èñòèòü edx
  956.   div ecx      ;ðàçäåëèòü - îñòàòîê â edx
  957.   push edx     ;ïîëîæèòü â ñòåê
  958.   ;dec edi             ;ñìåùåíèå íåîáõîäèìîå äëÿ çàïèñè ñ êîíöà ñòðîêè
  959.   call .str;ïåðåéòè íà ñàìó ñåáÿ ò.å. âûçâàòü ñàìó ñåáÿ è òàê äî òîãî ìîìåíòà ïîêà â eax íå ñòàíåò ìåíüøå ÷åì â ecx
  960.   pop eax
  961.   @@: ;cmp al,10 ;ïðîâåðèòü íå ìåíüøå ëè çíà÷åíèå â al ÷åì 10 (äëÿ ñèñòåìû ñ÷èñëåíÿ 10 äàííàÿ êîìàíäà - ëèøíàÿ))
  962.   or al,0x30  ;äàííàÿ êîìàíäà êîðî÷å  ÷åì äâå âûøå
  963.   stosb       ;çàïèñàòü ýëåìåíò èç ðåãèñòðà al â ÿ÷åêó ïàìÿòè es:edi
  964.   ret         ;âåðíóòüñÿ ÷åíü èíòåðåñíûé õîä ò.ê. ïîêà â ñòåêå õðàíèòüñÿ êîë-âî âûçîâîâ òî ñòîëüêî ðàç ìû è áóäåì âûçûâàòüñÿ
  965.  
  966.  
  967. hed db 'Planet viewer 09.02.10',0 ;¯®¤¯¨áì ®ª­ 
  968.  
  969. sc system_colors  ;á¨á⥬­ë¥ 梥â 
  970. mouse_dd dd 0 ;­ã¦­® ¤«ï Shift-  ¢ editbox
  971.   sys_path rb 4096
  972.   file_name:
  973.     rb 4096
  974. i_end:
  975.   procinfo process_information
  976.   rb 1024
  977. stacktop:
  978. mem:
  979.  
  980.