Subversion Repositories Kolibri OS

Rev

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

  1. draw_buttons_panel:
  2.     mov   ecx,[skin_high]
  3.     add   ecx,19
  4.     shl   ecx,16
  5.     mov   cx,18
  6.     mov   ebx,[window_width]
  7.     sub   ebx,9
  8.     add   ebx,5 shl 16
  9.     mcall 13,,,0xffffff
  10.     mov   edx,15 shl 16+20
  11.     add   edx,[skin_high]
  12.     pusha
  13.     call  .calculate_button
  14.     mov   edx,150
  15.     int   0x40
  16.     popa
  17.     mcall 7,[buttons_img_start],<16,16>
  18.     add   edx,26 shl 16
  19.     add   ebx,16*16*3
  20.     pusha
  21.     call  .calculate_button
  22.     mov   edx,151
  23.     int   0x40
  24.     popa
  25.     int   0x40
  26.     add   edx,26 shl 16
  27.     add   ebx,16*16*3
  28.     pusha
  29.     call  .calculate_button
  30.     mov   edx,152
  31.     int   0x40
  32.     popa
  33.     int   0x40
  34.     add   edx,26 shl 16
  35.     add   ebx,16*16*3
  36.     pusha
  37.     call  .calculate_button
  38.     mov   edx,153
  39.     int   0x40
  40.     popa
  41.     int   0x40
  42.     add   edx,26 shl 16
  43.     add   ebx,16*16*3
  44.     pusha
  45.     call  .calculate_button
  46.     mov   edx,154
  47.     int   0x40
  48.     popa
  49.     int   0x40
  50.     add   edx,26 shl 16
  51.     add   ebx,16*16*3
  52.     pusha
  53.     call  .calculate_button
  54.     mov   edx,155
  55.     int   0x40
  56.     popa
  57.     int   0x40
  58.     add   edx,26 shl 16
  59.     add   ebx,16*16*3
  60.     pusha
  61.     call  .calculate_button
  62.     mov   edx,156
  63.     int   0x40
  64.     popa
  65.     int   0x40
  66.     add   edx,26 shl 16
  67.     add   ebx,16*16*3
  68.     pusha
  69.     call  .calculate_button
  70.     mov   edx,157
  71.     int   0x40
  72.     popa
  73.     int   0x40
  74.     ret
  75. .calculate_button:
  76.     mov   esi,0xffffff
  77.     mov   ebx,edx
  78.     mov   bx,15
  79.     mov   ecx,edx
  80.     shl   ecx,16
  81.     mov   cx,bx
  82.     mov   eax,8
  83.     ret
  84. ;---------------------------------------------------------------------
  85. draw_left_sort_button:
  86.     mov   bx,[left_panel_x.start_x]
  87.     add   bx,[left_panel_x.size_x]
  88.     sub   ebx,50+15
  89.     mov   cx,[left_panel_y.start_y]
  90.     call  calclulate_sort_button_1
  91.     mov   edx,145
  92. .start:
  93.     mov   esi,0xffffff
  94.     dec   ebp
  95.     cmp   [left_sort_flag],ebp
  96.     jne   @f
  97.     mov   esi,0xccccff
  98. @@:
  99.     call  calclulate_sort_button_2
  100.     jnz   .start
  101.     ret
  102. ;---------------------------------------------------------------------
  103. calclulate_sort_button_1:
  104.     shl   ebx,16
  105.     mov   bx,50
  106.     sub   cx,14
  107.     shl   ecx,16
  108.     mov   cx,12
  109.     mov   eax,8
  110.     mov   ebp,4
  111.     ret
  112. ;---------------------------------------------------------------------
  113. calclulate_sort_button_2:
  114.     inc   ebp
  115.     int   0x40
  116.     pusha
  117.     push  ebx
  118.     mov   eax,ebx
  119.     inc   eax
  120.     shl   eax,16
  121.     add   ebx,eax
  122.     cmp   ebp,4
  123.     jne   @f
  124.     mov   bx,15
  125.     jmp   .continue
  126. @@:
  127.     mov   bx,1
  128. .continue:
  129.     mov   edx,0xcccccc
  130.     inc   ecx
  131.     mcall 13
  132.     pop   ebx
  133.     cmp   ebp,1
  134.     jne   @f
  135.     mov   eax,[temp_panel_end]
  136.     shl   eax,16
  137.     add   eax,[temp_panel_end]
  138.     shr   eax,16
  139.     shr   ebx,16
  140.     sub   ebx,eax
  141.     shl   ebx,16
  142.     mov   bx,ax
  143.     rol   ebx,16
  144.     mcall 13
  145.     mov   [temp_panel_end],ebx
  146. @@:
  147.     popa
  148.     pusha
  149.     shr   ecx,16
  150.     mov   bx,cx
  151.     add   ebx,3 shl 16+2
  152.     mov   ecx,0x10000000
  153.     mov   edx,ebp
  154.     dec   edx
  155.     shl   edx,2
  156.     add   edx,sort_button_name
  157.     mov   eax,4
  158.     mov   esi,eax
  159.     int   0x40
  160.     popa
  161.     dec   edx
  162.     sub   ebx,38 shl 16
  163.     mov   bx,36
  164.     dec   ebp
  165.     ret
  166. ;---------------------------------------------------------------------
  167. draw_right_sort_button:
  168.     mov   bx,[right_panel_x.start_x]
  169.     add   bx,[right_panel_x.size_x]
  170.     sub   ebx,50+15
  171.     mov   cx,[right_panel_y.start_y]
  172.     call  calclulate_sort_button_1
  173.     mov   edx,149
  174. .start:
  175.     mov   esi,0xffffff
  176.     dec   ebp
  177.     cmp   [right_sort_flag],ebp
  178.     jne   @f
  179.     mov   esi,0xccccff
  180. @@:
  181.     call  calclulate_sort_button_2
  182.     jnz   .start
  183.     ret
  184. ;---------------------------------------------------------------------
  185. draw_left_select_disk_button:
  186.     mov   bx,[left_panel_x.start_x]
  187.     mov   cx,[left_panel_y.start_y]
  188.     mov   ebp,read_folder_name        ;read_folder.name
  189.     mov   edx,0x40000000+140
  190. .1:
  191.     shl   ebx,16
  192.     mov   bx,60
  193.     sub   cx,14
  194.     shl   ecx,16
  195.     mov   cx,13
  196.     mov   esi,0xffffff
  197.     mov   eax,8
  198.     int   0x40
  199.     mov   edx,0xffffff
  200.     mov   eax,13
  201.     int   0x40
  202.     pusha
  203. ;    mov   esi,read_folder.name+2
  204.     mov   esi,ebp
  205.     add   esi,2
  206. @@:
  207.     inc   esi
  208.     cmp   [esi],byte 0
  209.     je    @f
  210.     cmp   [esi],byte '/'
  211.     jne   @r
  212.     add   esi,2
  213. @@:
  214.     sub   esi,ebp  ;read_folder.name
  215.     add   ebx,1 shl 16
  216.     shr   ecx,16
  217.     mov   bx,cx
  218.     add   ebx,3
  219.     mov   edx,ebp
  220.     mcall 4, ,0  ;,read_folder.name
  221.     popa
  222.     add   ebx,50 shl 16
  223.     mov   bx,10
  224.     mov   edx,0x6060ff
  225.     int   0x40
  226.     mov   [temp_panel_end],ebx
  227.     add   ebx,1 shl 16
  228.     shr   ecx,16
  229.     mov   bx,cx
  230.     add   ebx,3
  231.     mcall 4, ,0x80ffffff,select_disk_char
  232.     add   ebx,1 shl 16
  233.     int   0x40
  234.     ret
  235. ;---------------------------------------------------------------------
  236. draw_right_select_disk_button:
  237.     mov   bx,[right_panel_x.start_x]
  238.     mov   cx,[right_panel_y.start_y]
  239.     mov   ebp,read_folder_1_name   ;read_folder_1.name
  240.     mov   edx,0x40000000+141
  241.     jmp   draw_left_select_disk_button.1
  242. ;---------------------------------------------------------------------
  243. draw_device_button:
  244.     mov   edi,device_present
  245.     mov   edx,120
  246.     mov   bx,[left_panel_x.start_x]
  247.     mov   cx,[left_panel_y.start_y]
  248.     mov   eax,[left_panel_x]
  249.     mov   [temp_panel_end],eax
  250.     mov   [temp_counter],0
  251.     call  .draw
  252. ;    inc   edx
  253.     mov   edx,130
  254.     mov   bx,[right_panel_x.start_x]
  255.     mov   cx,[right_panel_y.start_y]
  256.     mov   eax,[right_panel_x]
  257.     mov   [temp_panel_end],eax
  258.     mov   [temp_counter],1
  259. .draw:
  260.     shl   ebx,16
  261.     mov   bx,25
  262.     sub   cx,30
  263.     shl   ecx,16
  264.     mov   cx,12
  265.     mov   eax,8
  266.     mov   esi,0xaa00
  267.     cmp   [edi],byte 1
  268.     jne   @f
  269.     mov   ebp,read_folder_device_name.rd
  270.     call  .draw_1
  271. @@:
  272.     inc   edx
  273.     cmp   [edi+1],byte 1
  274.     jne   @f
  275.     mov   ebp,read_folder_device_name.fd
  276.     call  .draw_1
  277. @@:
  278.     inc   edx
  279.     cmp   [edi+2],byte 1
  280.     jne   @f
  281.     mov   ebp,read_folder_device_name.hd0
  282.     call  .draw_1
  283. @@:
  284.     inc   edx
  285.     cmp   [edi+3],byte 1
  286.     jne   @f
  287.     mov   ebp,read_folder_device_name.hd1
  288.     call  .draw_1
  289. @@:
  290.     inc   edx
  291.     cmp   [edi+4],byte 1
  292.     jne   @f
  293.     mov   ebp,read_folder_device_name.hd2
  294.     call  .draw_1
  295. @@:
  296.     inc   edx
  297.     cmp   [edi+5],byte 1
  298.     jne   @f
  299.     mov   ebp,read_folder_device_name.hd3
  300.     call  .draw_1
  301. @@:
  302.     inc   edx
  303.     cmp   [edi+6],byte 1
  304.     jne   @f
  305.     mov   ebp,read_folder_device_name.cd0
  306.     call  .draw_1
  307. @@:
  308.     inc   edx
  309.     cmp   [edi+7],byte 1
  310.     jne   @f
  311.     mov   ebp,read_folder_device_name.cd1
  312.     call  .draw_1
  313. @@:
  314.     inc   edx
  315.     cmp   [edi+8],byte 1
  316.     jne   @f
  317.     mov   ebp,read_folder_device_name.cd2
  318.     call  .draw_1
  319. @@:
  320.     inc   edx
  321.     cmp   [edi+9],byte 1
  322.     jne   @f
  323.     mov   ebp,read_folder_device_name.cd3
  324.     call  .draw_1
  325. @@:
  326.     push  ebx
  327.     mov   ebx,[temp_panel_end]
  328.     mov   ax,bx
  329.     shr   ebx,16
  330.     add   eax,ebx
  331.     pop   ebx
  332.     ror   ebx,16
  333.     sub   ax,bx
  334.     rol   ebx,16
  335.     mov   bx,ax
  336.     add   ecx,1
  337.     add   ebx,1
  338.     mcall 13,,,0xcccccc
  339.     cmp   [temp_counter],0
  340.     je    @f
  341.     mov   ax,bx
  342.     shr   ebx,16
  343.     add   bx,ax
  344.     mov   eax,[window_width]
  345.     sub   eax,4
  346.     sub   ax,bx
  347.     cmp   eax,0
  348.     jbe   @f
  349.     shl   ebx,16
  350.     mov   bx,ax
  351.     mov   ax,[right_panel_y.size_y]
  352.     add   ax,[right_panel_y.start_y]
  353.     shr   ecx,16
  354.     sub   ax,cx
  355.     shl   ecx,16
  356.     mov   cx,ax
  357.     mov   edx,0xcccccc
  358.     mcall 13
  359.     ret
  360.    
  361. .draw_1:
  362.     int   0x40
  363.     pusha
  364.     mov   eax,ebx
  365.     inc   eax
  366.     shl   eax,16
  367.     add   ebx,eax
  368.     mov   bx,1
  369.     inc   ecx
  370.     mov   edx,0xcccccc
  371.     mcall 13
  372.     popa
  373.     pusha
  374.     mov   edx,ebp
  375.     shr   ecx,16
  376.     mov   bx,cx
  377.     add   ebx,2 shl 16 +3
  378.     mov   ecx,0x90000000
  379.     mov   eax,4
  380.     int   0x40
  381.     mov   ecx,0x90ffffff
  382.     sub   ebx,1 shl 16 + 1
  383.     int   0x40
  384.     popa
  385.     add   ebx,27 shl 16
  386. @@:
  387.     ret
  388. ;---------------------------------------------------------------------
  389. draw_ATAPI_tray_control:
  390.     ret
  391. ;---------------------------------------------------------------------
  392. calc_max_panel_line:
  393.     xor   eax,eax
  394.     mov   ax,[left_panel_y.size_y]
  395.     mov   ebx,10
  396.     xor   edx,edx
  397.     div   ebx
  398.     mov   [max_panel_line],eax
  399.     ret
  400. ;---------------------------------------------------------------------
  401. draw_icon:
  402.     pusha
  403.     test  [edx-40],byte 0x10
  404.     jnz   .draw_dir_pic
  405.     call  get_icon_number
  406.     imul  ebx,270
  407.     add   ebx,mem
  408.     jmp   .draw
  409. .draw_dir_pic:
  410.     mov   ebx,mem
  411.     cmp   [edx],word '..'
  412.     jne    .draw
  413.     add   ebx,270   ;*17
  414. .draw:
  415.     mov   edx,[esp+16]  ;ebx
  416.     ror   edx,16
  417.     sub   edx,12
  418.     rol   edx,16
  419.     mcall 7, ,<10,9>
  420.     popa
  421.     ret
  422. ;---------------------------------------------------------------------
  423. ;       ╧┼╨┼┬╬─ 10-═█╒ ╫╚╤┼╦ ╤╬ ╟═└╩╬╠ ┬ ╤╥╨╬╩╬┬█╔ ┬╚─
  424. ;       ┬їюф:
  425. ;               AX - ўшёыю
  426. ;               EBX - рфЁхё ёЄЁюъш
  427. ;       ┬√їюф:
  428. ;               ёЄЁюър ёюфхЁцшЄ ўшёыю, ъюэхЎ юЄьхўхэ ъюфюь 0
  429. decimal_string_2:
  430.         push  eax ebx ecx edx
  431.         xor       ecx,ecx
  432.         mov       [ebx],byte '0'
  433.         inc       ebx
  434. .p3:
  435.         xor       edx,edx
  436.         push   ebx
  437.         mov   ebx,10
  438.         div       ebx
  439.         pop   ebx
  440.         add       edx,48
  441.         push  edx
  442.         inc       ecx
  443.         cmp       ax,0
  444.         jne       .p3
  445.         cmp   ecx,1
  446.         jbe   .p4
  447.         mov   ecx,2
  448.         dec   ebx
  449. .p4:
  450.         pop       edx
  451.         mov       [ebx],dl
  452.         inc       ebx
  453.         loop  .p4
  454.         pop       edx ecx ebx eax
  455.         ret
  456. ;---------------------------------------------------------------------
  457. decimal_string_4:
  458.         push  eax ecx edx
  459.         xor       ecx,ecx
  460.         mov       [ebx],byte '0'
  461.         inc       ebx
  462. .p3:
  463.         xor       edx,edx
  464.         push   ebx
  465.         mov   ebx,10
  466.         div       ebx
  467.         pop   ebx
  468.         add       edx,48
  469.         push  edx
  470.         inc       ecx
  471.         cmp       eax,0
  472.         jne       .p3
  473.         cmp   ecx,3
  474.         jbe   .p4
  475.         mov   ecx,4
  476.         dec   ebx
  477. .p4:
  478.         pop       edx
  479.         mov       [ebx],dl
  480.         inc       ebx
  481.         loop  .p4
  482.         pop       edx ecx eax
  483.         ret
  484. ;---------------------------------------------------------------------
  485. draw_type_size_date:
  486.     pusha
  487.     test  [edx-40],byte 0x10
  488.     jz    .copy_type
  489.     mov   [type_table],dword '<DIR'
  490.     mov   [type_table+4],word '> '
  491.     mov   [file_name_length],0
  492.     mov   [extension_size],0
  493.     jmp   .start  ;.size
  494. .copy_type:
  495.     mov   [type_table],dword '    '
  496.     mov   [type_table+4],word '  '
  497. .start:
  498.     mov   esi,edx
  499.     xor   eax,eax
  500. @@:
  501.     cld
  502.     lodsb
  503.     test  eax,eax
  504.     jnz   @b
  505.     mov   [file_name_length],esi
  506.     sub   [file_name_length],edx
  507.     mov   [temp_counter_1],esi
  508.     test  [edx-40],byte 0x10
  509.     jnz    .size
  510. ;@@:
  511.     dec   esi
  512.     dec   edx
  513. @@:
  514.     std
  515.     lodsb
  516.     cmp   esi,edx
  517.     je    .extension_size_0  ;@f
  518.     cmp   al,'.'
  519.     jnz   @b
  520.     add   esi,2
  521.     mov   [extension_start],esi
  522.     mov   ecx,[temp_counter_1]
  523.     sub   ecx,esi
  524.     inc   ecx
  525.     mov   [extension_size],ecx
  526.     sub   [file_name_length],ecx
  527.     cmp   ecx,2
  528.     ja   @f
  529.     inc   [file_name_length]
  530. @@:
  531.     sub   ecx,2
  532.     cmp   ecx,4
  533.     jbe   @f
  534.     mov   ecx,4
  535.     mov   [type_table+4],word '..'
  536. @@:
  537.     mov   edi,type_table  ;+1
  538.     cld
  539.     rep   movsb
  540.     mov   [edi],byte ' '
  541.     inc   edx
  542.     jmp   .size
  543. .extension_size_0:
  544.     inc   edx
  545.     mov   [extension_size],0
  546. .size:
  547.     test  [edx-40],byte 0x10
  548.     jz    .copy_size
  549.     mov   [size_table],dword '----'
  550.     mov   [size_table+4],word '- '
  551.     jmp   .date
  552. .copy_size:
  553. ;/0x40000000 - Gb
  554. ;/0x100000 - Mb
  555. ;/0x400 Kb
  556.     mov   [size_table],dword '    '
  557.     mov   [size_table+4],word '  '
  558.     push  ebx
  559.     push  edx
  560.     mov   eax,[edx-40+32]
  561.     mov   ebx,0x40000000
  562.     xor   edx,edx
  563.     div   ebx
  564.     cmp   eax,0
  565.     je    @f
  566.     mov   ebx,size_table
  567.     call  decimal_string_4
  568.     mov   [ebx],byte 'G'
  569.     jmp   .size_convert_end
  570. @@:
  571.     mov   edx,[esp]
  572.     mov   eax,[edx-40+32]
  573.     mov   ebx,0x100000
  574.     xor   edx,edx
  575.     div   ebx
  576.     cmp   eax,0
  577.     je    @f
  578.     mov   ebx,size_table
  579.     call  decimal_string_4
  580.     mov   [ebx],byte 'M'
  581.     jmp   .size_convert_end
  582. @@:
  583.     mov   edx,[esp]
  584.     mov   eax,[edx-40+32]
  585.     mov   ebx,0x400
  586.     xor   edx,edx
  587.     div   ebx
  588.     cmp   eax,0
  589.     je    @f
  590.     mov   ebx,size_table
  591.     call  decimal_string_4
  592.     mov   [ebx],byte 'K'
  593.     jmp   .size_convert_end
  594. @@:
  595.     mov   edx,[esp]
  596.     mov   eax,[edx-40+32]
  597. ;.size_convert:
  598.     mov   ebx,size_table
  599.     call  decimal_string_4
  600. .size_convert_end:
  601.     cmp   [size_table],byte '0'
  602.     jne   @f
  603.     mov   [size_table],byte ' '
  604. @@:
  605.     cmp   [size_table+4],byte ' '
  606.     jne   @f
  607.     mov   esi,size_table+3
  608.     mov   edi,esi
  609.     inc   edi
  610.     mov   ecx,5
  611.     std
  612.     rep   movsb
  613.     jmp   @r
  614. @@:
  615.     pop   edx
  616.     pop   ebx
  617. .date:
  618.     xor   eax,eax
  619.     mov   al,[edx-40+28]
  620.     push  ebx
  621.     mov   ebx,date_table
  622.     call  decimal_string_2
  623.     mov   al,[edx-40+29]
  624.     mov   ebx,date_table+3
  625.     call  decimal_string_2
  626.     mov   ax,[edx-40+30]
  627.     mov   ebx,year_table
  628.     call  decimal_string_4
  629.     mov   ax,[year_table+2]
  630.     mov   [date_table+6],ax
  631.     pop   ebx
  632.     ror   ebx,16
  633.     add   bx,[left_panel_x.size_x]
  634.     sub   ebx,122+12+15
  635.     rol   ebx,16
  636.     mov   ecx,0
  637.     cmp   [marked_file],byte 0
  638.     je   @f
  639.     mov   ecx,0xff0000
  640. @@:
  641.     mov   edx,type_table
  642.     mov   esi,20
  643.     mov   eax,4
  644.     int   0x40
  645.     popa
  646.     ret
  647. ;---------------------------------------------------------------------
  648. draw_folder_data:
  649.     cmp   [drawing_panel_folder],1
  650.     jne   .right_panel
  651.     mov   eax,[left_folder_block]
  652.     sub   eax,[max_panel_line]
  653.     test  eax,0x8000000
  654.     jz    .ok_left
  655.     mov   [left_start_draw_line],0
  656.     jmp   @f
  657. .ok_left:
  658.     cmp   eax,[left_start_draw_line]
  659.     jae   @f
  660.     mov   [left_start_draw_line],eax
  661. @@:
  662.     mov   bx,[left_panel_x.start_x]
  663. ;    inc   bx
  664.     add   bx,12
  665.     shl   ebx,16
  666.     mov   bx,[left_panel_y.start_y]
  667.     inc   bx
  668.     mov   edx,[left_start_draw_line]
  669.     imul  edx,304
  670.     add   edx,[left_folder_data]
  671.     add   edx,32+40
  672.     mov   [temp_counter],0
  673.     jmp   .type_folder
  674. .right_panel:
  675.     mov   eax,[right_folder_block]
  676.     sub   eax,[max_panel_line]
  677.     test  eax,0x8000000
  678.     jz    .ok_right
  679.     mov   [right_start_draw_line],0
  680.     jmp   @f
  681. .ok_right:
  682.     cmp   eax,[right_start_draw_line]
  683.     jae   @f
  684.     mov   [right_start_draw_line],eax
  685. @@:
  686.     mov   bx,[right_panel_x.start_x]
  687. ;    inc   bx
  688.     add   bx,12
  689.     shl   ebx,16
  690.     mov   bx,[right_panel_y.start_y]
  691.     inc   bx
  692.     mov   edx,[right_start_draw_line]
  693.     imul  edx,304
  694.     add   edx,[right_folder_data]
  695.     add   edx,32+40
  696.     mov   [temp_counter],1
  697. ;    mov   edx,retrieved_devices_table
  698. .type_folder:
  699.     xor   eax,eax
  700. .start:
  701.     pusha
  702.     mov   eax,edx
  703.     cmp   [temp_counter],1
  704.     je    @f
  705.     sub   eax,[left_folder_data]
  706.     sub   eax,32+40
  707.     xor   edx,edx
  708.     mov   ebx,304
  709.     div   ebx
  710.     cmp   eax,[left_folder_block]
  711.     je    .end_1
  712.     jmp   .continue_1
  713. @@:
  714.     sub   eax,[right_folder_data]
  715.     sub   eax,32+40
  716.     xor   edx,edx
  717.     mov   ebx,304
  718.     div   ebx
  719.     cmp   eax,[right_folder_block]
  720.     je    .end_1
  721. .continue_1:
  722.     popa
  723.     cmp   eax,[max_panel_line]  ;  20
  724.     je    .end_2   ;.end
  725.     mov   [marked_file],0
  726.     cmp   [edx+299-40],byte 0
  727.     je   @f
  728.     mov   [marked_file],1
  729. @@:
  730.     call  clear_line
  731.     call  draw_type_size_date
  732.     call  draw_icon
  733.     push  eax
  734.     xor   eax,eax
  735.     mov   ax,[left_panel_x.size_x]
  736.     push  ebx edx
  737.     mov   ebx,6
  738.     xor   edx,edx
  739.     div   ebx
  740.     pop   edx ebx
  741.     sub   eax,23+2+2
  742.     mov   esi,[file_name_length]
  743.     mov   [temp_counter_1],0
  744.     cmp   esi,eax
  745.     jbe   @f
  746.     mov   esi,eax
  747.     mov   [temp_counter_1],1
  748. @@:
  749.     mov   ecx,0
  750.     cmp   [marked_file],byte 0
  751.     je   @f
  752.     mov   ecx,0xff0000
  753. @@:
  754.     mov   eax,4
  755.     int   0x40
  756.     cmp   [temp_counter_1],0
  757.     je    .continue
  758.     mov   eax,esi ;[file_name_length]
  759.     imul  eax,6
  760.     shl   eax,16
  761.     push  ebx edx
  762.     add   ebx,eax
  763.     mov   esi,2
  764.     mov   ecx,0xff0000
  765.     mov   edx,truncated_filename_char
  766.     mov   eax,4
  767.     int   0x40
  768.     add   ebx,1 shl 16
  769.     int   0x40
  770.     pop   edx ebx
  771. .continue:
  772.     add   ebx,10
  773.     add   edx,304 ;10
  774.     pop   eax
  775.     inc   eax
  776.     jmp   .start
  777. .end_1:
  778.     popa
  779. .end_2:    
  780.     mov  ax,[left_panel_y.start_y]
  781.     add  ax,[left_panel_y.size_y]
  782.     mov  cx,bx
  783.     dec  cx
  784.     rol  ecx,16
  785.     mov  cx,ax
  786.     mov  eax,ecx
  787.     shr eax,16
  788.     sub  cx,ax
  789.     cmp  cx,0
  790.     jbe  @f
  791.     mov  bx,[left_panel_x.size_x]
  792.     sub  ebx,12 shl 16
  793.     mov  edx,0xffffff
  794.     mcall 13
  795. @@:
  796.  
  797. .end:
  798.     cmp   [drawing_panel_folder],1
  799.     jne   @f
  800.     call  draw_scroll_bar_left
  801.     ret
  802. @@:
  803.     call  draw_scroll_bar_right
  804.     ret
  805. ;---------------------------------------------------------------------
  806. clear_line:
  807.     cmp  [not_clear_lines],0
  808.     jne  .end_1
  809.     pusha
  810.     shl  ebx,16
  811.     shr  ebx,16
  812.     dec  ebx
  813.     cmp  [drawing_panel_folder],1
  814.     jne  .right
  815.     cmp  [select_panel_counter],0
  816.     jne  .continue
  817.     mov   ax,[left_start_draw_cursor_line]
  818.     add   ax,[left_panel_y.start_y]
  819.     cmp   bx,ax
  820.     je   .end
  821.     jmp  .continue
  822. .right:
  823.     cmp  [select_panel_counter],0
  824.     je  .continue
  825.     mov   ax,[right_start_draw_cursor_line]
  826.     add   ax,[right_panel_y.start_y]
  827.     cmp   bx,ax
  828.     je   .end
  829. .continue:
  830.     mov  ebx,[esp+16]
  831.     mov  cx,bx
  832.     dec  cx
  833.     rol  ecx,16
  834.     mov  cx,10
  835.     mov  bx,[left_panel_x.size_x]
  836.     cmp  [drawing_panel_folder],1
  837.     je   @f
  838.     dec  ebx
  839. @@:
  840.     sub  ebx,12 shl 16+15
  841.     mov  edx,0xffffff
  842.     mov  eax,13
  843.     int  0x40
  844. .end:
  845.     popa
  846. .end_1:
  847.     ret
  848. ;---------------------------------------------------------------------
  849. draw_left_panel:
  850.     call  clear_left_panel
  851.     call  calc_max_panel_line
  852.     call  draw_left_panel_selection
  853.     mov   [drawing_panel_folder],1
  854.     call  draw_folder_data
  855.     call  draw_left_panel_patch
  856.     ret
  857. ;---------------------------------------------------------------------
  858. draw_right_panel:
  859.     call  clear_right_panel
  860.     call  calc_max_panel_line
  861.     call  draw_right_panel_selection
  862.     mov   [drawing_panel_folder],2
  863.     call  draw_folder_data
  864.     call  draw_right_panel_patch
  865.     ret
  866. ;---------------------------------------------------------------------
  867. draw_left_panel_patch:
  868.     cmp   [select_panel_counter],0
  869.     jne   .end
  870.     mov   edx,read_folder_name     ;read_folder.name
  871. .1:
  872.     call  clear_patch_area
  873.     mov   ebx,[window_high]
  874.     sub   ebx,33
  875.     add   ebx,8 shl 16
  876.     mcall 4, ,0x80000000  ; ,read_folder.name
  877. .end:
  878.     ret
  879. ;---------------------------------------------------------------------
  880. draw_right_panel_patch:
  881.     cmp   [select_panel_counter],1
  882.     jne   draw_left_panel_patch.end
  883.     mov   edx,read_folder_1_name    ;read_folder_1.name
  884.     jmp   draw_left_panel_patch.1
  885. ;---------------------------------------------------------------------
  886. clear_patch_area:
  887.     push  edx
  888.     mov   ebx,[window_width]
  889.     sub   ebx,9
  890.     add   ebx,5 shl 16
  891.     mov   ecx,[window_high]
  892.     sub   ecx,35
  893.     shl   ecx,16
  894.     mov   cx,12
  895.     mov   edx,0xffffcc
  896.     mov   eax,13
  897.     int   0x40
  898.     pop   edx
  899.     ret
  900. ;---------------------------------------------------------------------
  901. draw_left_panel_selection:
  902.     cmp   [select_panel_counter],0
  903.     jne   .end
  904.     mov   eax,[left_folder_block]
  905.     sub   eax,[left_start_draw_line]
  906.     mov   edx,left_start_draw_cursor_line
  907.     mov   cx,[edx]
  908.     call  for_all_panel_selection
  909.     mov   eax,[left_folder_block]
  910.     dec   eax
  911.     imul  eax,10
  912.     cmp   ax,cx
  913.     jae    @f
  914.     mov   cx,ax
  915. @@:
  916.     mov   [edx],cx
  917.     mov   ebx,[left_panel_x]
  918.     add   cx,[left_panel_y.start_y]
  919. .1:
  920.     shl   ecx,16
  921.     mov   cx,10
  922.     mov   edx,0xbbddff
  923.     sub   ebx,15
  924.     mov   eax,13
  925.     int   0x40
  926. .end:
  927.     ret
  928. ;---------------------------------------------------------------------
  929. draw_right_panel_selection:
  930.     cmp   [select_panel_counter],1
  931.     jne   draw_left_panel_selection.end
  932.     mov   eax,[right_folder_block]
  933.     sub   eax,[right_start_draw_line]
  934.     mov   edx,right_start_draw_cursor_line
  935.     mov   cx,[edx]
  936.     call  for_all_panel_selection
  937.     mov   eax,[right_folder_block]
  938.     dec   eax
  939.     imul  eax,10
  940.     cmp   ax,cx
  941.     jae    @f
  942.     mov   cx,ax
  943. @@:
  944.     mov   [edx],cx
  945.     mov   ebx,[right_panel_x]
  946.     add   cx,[right_panel_y.start_y]
  947.     jmp   draw_left_panel_selection.1
  948. ;---------------------------------------------------------------------
  949. for_all_panel_selection:
  950. ;    dec   eax
  951.     imul  eax,10
  952.     cmp   ax,cx
  953.     jae   @f
  954.     mov   cx,ax
  955. @@:
  956.     mov   eax,[max_panel_line]
  957.     dec   eax
  958.     imul  eax,10
  959.     cmp   ax,cx
  960.     jae   @f
  961.     mov   cx,ax
  962. @@:
  963.    ret
  964. ;---------------------------------------------------------------------
  965. clear_left_panel:
  966.     mov   ebx,7 shl 16
  967.     add   ebx,[window_width]
  968.     shr   bx,1
  969.     sub   ebx,6+1
  970.     mov   [left_panel_x],ebx
  971.     call  calculate_panel_1
  972.     mov   [left_panel_y],ecx
  973. ;    cmp   [left_panel_clear_all],0
  974. ;    je  @f
  975. ;    call  calculate_panel_2
  976. ;    mov   [left_panel_clear_all],0
  977. ;@@:
  978.     ret
  979. ;---------------------------------------------------------------------
  980. calculate_panel_1:
  981.     mov   ecx,[skin_high]
  982.     add   ecx,70
  983.     shl   ecx,16
  984.     add   ecx,[window_high]
  985.     sub   ecx,130
  986.     ret
  987. ;---------------------------------------------------------------------
  988. ;calculate_panel_2:
  989. ;    sub   ebx,15
  990. ;    mov   edx,0xffffff
  991. ;    mov   eax,13
  992. ;    int   0x40
  993. ;    ret
  994. ;---------------------------------------------------------------------
  995. clear_right_panel:
  996.     mov   ebx,[window_width]
  997.     shr   ebx,1
  998.     add   ebx,3
  999.     shl   ebx,16
  1000.     add   ebx,[window_width]
  1001.     shr   bx,1
  1002.     sub   bx,2+6
  1003.     mov   [right_panel_x],ebx
  1004.     call  calculate_panel_1
  1005.     mov   [right_panel_y],ecx
  1006. ;    cmp   [right_panel_clear_all],0
  1007. ;    je  @f
  1008. ;    call  calculate_panel_2
  1009. ;    mov   [right_panel_clear_all],0
  1010. ;@@:
  1011.     ret
  1012. ;---------------------------------------------------------------------
  1013. erase_fbutton:
  1014.     mov   edx,0x80000065
  1015.     mov   eax,8
  1016.     mov   ebp,12
  1017. .start:
  1018.     int   0x40
  1019.     dec   ebp
  1020.     jnz   .start
  1021.     ret
  1022. ;---------------------------------------------------------------------
  1023. draw_fbutton:
  1024.     mov   ecx,[window_high]
  1025.     sub   ecx,20
  1026.     shl   ecx,16
  1027.     add   ecx,15
  1028.     mov   eax,[window_width]
  1029. ;    sub   eax,8
  1030.     mov   ebx,12
  1031.     xor   edx,edx
  1032.     div   ebx
  1033.     mov   [fbutton_width],eax
  1034.     mov   ebx,5 shl 16
  1035.     add   ebx,eax
  1036.     sub   ebx,2
  1037.     mov   esi,0xaa00
  1038.     mov   edx,101
  1039.     mov   eax,8
  1040.     mov   ebp,12
  1041. .start:
  1042.     cmp   ebp,1
  1043.     jne   @f
  1044.     mov   eax,ebx
  1045.     shr   eax,16
  1046.     mov   bx,ax
  1047.     mov   eax,[window_width]
  1048.     sub   ax,bx
  1049.     sub   ax,5
  1050.     mov   bx,ax
  1051.     mov   eax,8
  1052. @@:
  1053.     mcall
  1054.     push  eax ebx edx
  1055.     mov   edx,0x6060ff
  1056.     mov   bx,10
  1057.     cmp   ebp,4
  1058.     jae   @f
  1059.     mov   bx,18
  1060. @@:
  1061.     mcall 13
  1062.     cmp   ebp,1
  1063.     je   @f    
  1064.     ror   ebx,16
  1065.     add   ebx,[fbutton_width]
  1066.     dec   ebx
  1067.     rol   ebx,16
  1068.     mov   bx,1
  1069.     mov   edx,0xcccccc
  1070.     inc   ecx
  1071.     mcall
  1072.     dec   ecx
  1073. @@:
  1074.     pop   edx ebx eax
  1075.     call  .rol_ror
  1076.     inc   edx
  1077.     dec   ebp
  1078.     jnz   .start
  1079.     call  draw_fbutton_name
  1080.     ret
  1081. .rol_ror:
  1082.     rol   ebx,16
  1083.     add   ebx,[fbutton_width]
  1084.     ror   ebx,16
  1085.     ret
  1086. ;---------------------------------------------------------------------
  1087. draw_fbutton_name:
  1088.     mov   ebx, 7 shl 16
  1089.     add   ebx,[window_high]
  1090.     sub   ebx,15
  1091.     mov   eax,4
  1092.     mov   ecx,0x90000000
  1093.     push  ebx
  1094.     call  .type_1
  1095.     pop   ebx
  1096.     mov   ecx,0x90ffffff
  1097.     sub   ebx,1 shl 16 + 1
  1098. .type_1:
  1099.     cmp   [shift_flag],1
  1100.     je    .type_shift
  1101.     cmp   [ctrl_flag],1
  1102.     je    .type_ctrl
  1103.     cmp   [alt_flag],1
  1104.     je    .type_alt
  1105. .type:
  1106.     mov   edx,fbutton_name.f1
  1107.     call  .type_all
  1108.     mov   edx,fbutton_name.f2
  1109.     call  .type_all
  1110.     mov   edx,fbutton_name.f3
  1111.     call  .type_all
  1112.     mov   edx,fbutton_name.f4
  1113.     call  .type_all
  1114.     mov   edx,fbutton_name.f5
  1115.     call  .type_all
  1116.     mov   edx,fbutton_name.f6
  1117.     call  .type_all
  1118.     mov   edx,fbutton_name.f7
  1119.     call  .type_all
  1120.     mov   edx,fbutton_name.f8
  1121.     call  .type_all
  1122.     mov   edx,fbutton_name.f9
  1123.     call  .type_all
  1124.     mov   edx,fbutton_name.f10
  1125.     call  .type_all
  1126.     mov   edx,fbutton_name.f11
  1127.     call  .type_all
  1128.     mov   edx,fbutton_name.f12
  1129.     int   0x40
  1130.     ret
  1131. .type_shift:
  1132.     mov   edx,fbutton_name_shift.f1
  1133.     call  .type_all
  1134.     mov   edx,fbutton_name_shift.f2
  1135.     call  .type_all
  1136.     mov   edx,fbutton_name_shift.f3
  1137.     call  .type_all
  1138.     mov   edx,fbutton_name_shift.f4
  1139.     call  .type_all
  1140.     mov   edx,fbutton_name_shift.f5
  1141.     call  .type_all
  1142.     mov   edx,fbutton_name_shift.f6
  1143.     call  .type_all
  1144.     mov   edx,fbutton_name_shift.f7
  1145.     call  .type_all
  1146.     mov   edx,fbutton_name_shift.f8
  1147.     call  .type_all
  1148.     mov   edx,fbutton_name_shift.f9
  1149.     call  .type_all
  1150.     mov   edx,fbutton_name_shift.f10
  1151.     call  .type_all
  1152.     mov   edx,fbutton_name_shift.f11
  1153.     call  .type_all
  1154.     mov   edx,fbutton_name_shift.f12
  1155.     int   0x40
  1156.     ret
  1157. .type_ctrl:
  1158.     mov   edx,fbutton_name_ctrl.f1
  1159.     call  .type_all
  1160.     mov   edx,fbutton_name_ctrl.f2
  1161.     call  .type_all
  1162.     mov   edx,fbutton_name_ctrl.f3
  1163.     call  .type_all
  1164.     mov   edx,fbutton_name_ctrl.f4
  1165.     call  .type_all
  1166.     mov   edx,fbutton_name_ctrl.f5
  1167.     call  .type_all
  1168.     mov   edx,fbutton_name_ctrl.f6
  1169.     call  .type_all
  1170.     mov   edx,fbutton_name_ctrl.f7
  1171.     call  .type_all
  1172.     mov   edx,fbutton_name_ctrl.f8
  1173.     call  .type_all
  1174.     mov   edx,fbutton_name_ctrl.f9
  1175.     call  .type_all
  1176.     mov   edx,fbutton_name_ctrl.f10
  1177.     call  .type_all
  1178.     mov   edx,fbutton_name_ctrl.f11
  1179.     call  .type_all
  1180.     mov   edx,fbutton_name_ctrl.f12
  1181.     int   0x40
  1182.     ret
  1183. .type_alt:
  1184.     mov   edx,fbutton_name_alt.f1
  1185.     call  .type_all
  1186.     mov   edx,fbutton_name_alt.f2
  1187.     call  .type_all
  1188.     mov   edx,fbutton_name_alt.f3
  1189.     call  .type_all
  1190.     mov   edx,fbutton_name_alt.f4
  1191.     call  .type_all
  1192.     mov   edx,fbutton_name_alt.f5
  1193.     call  .type_all
  1194.     mov   edx,fbutton_name_alt.f6
  1195.     call  .type_all
  1196.     mov   edx,fbutton_name_alt.f7
  1197.     call  .type_all
  1198.     mov   edx,fbutton_name_alt.f8
  1199.     call  .type_all
  1200.     mov   edx,fbutton_name_alt.f9
  1201.     call  .type_all
  1202.     mov   edx,fbutton_name_alt.f10
  1203.     call  .type_all
  1204.     mov   edx,fbutton_name_alt.f11
  1205.     call  .type_all
  1206.     mov   edx,fbutton_name_alt.f12
  1207. .type_all:
  1208.     int   0x40
  1209.     call  draw_fbutton.rol_ror
  1210.     ret
  1211.