Subversion Repositories Kolibri OS

Rev

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

  1. left_sort_files:
  2. ;   mcall 26,9
  3. ;   mov  [timer_tick],eax
  4.    mov   eax,[left_folder_data]
  5.    add   eax,32+40
  6.    cmp   [eax],word '..'
  7.    jne   @f
  8.    cmp   [eax+2],byte 0
  9.    jne   @f
  10.    add   [left_folder_data],304
  11.    dec   [left_folder_block]
  12.    mov   [exit_to_dir],1
  13. @@:
  14. ; add memory for sorting
  15.    mov   ecx,[right_folder_data]
  16.    sub   ecx,[left_folder_data]
  17.    mov   ebx,[appl_memory]
  18.    add   ecx,ebx
  19.    push  ebx
  20.    mov   [appl_memory],ecx
  21.    mcall 64,1
  22.    mov   edi,[esp]
  23.    mov   ecx,[appl_memory]
  24.    sub   ecx,edi
  25.    shr   ecx,2
  26.    mov   eax,0xffffffff
  27.    cld
  28.    rep   stosd
  29.    cmp   [left_sort_flag],0
  30.    je    left_name_sort
  31.    cmp   [left_sort_flag],1
  32.    je    left_type_sort
  33.    jmp    left_size_date_sort
  34. .move_sorted_file:
  35. ; move sorted file area in folder area
  36.    mov   esi,[esp]
  37.    mov   edi,[left_folder_data]
  38.    add   edi,32
  39.    mov   ecx,[right_folder_data]
  40.    sub   ecx,edi
  41.    shr   ecx,2
  42.    cld
  43.    rep   movsd
  44.    cmp   [exit_to_dir],0
  45.    je    @f
  46.    sub   [left_folder_data],304
  47.    inc   [left_folder_block]
  48.    mov   [exit_to_dir],0
  49. @@:
  50. ; sub memory for sorting
  51.    pop   ecx
  52.    mov   [appl_memory],ecx
  53.    mcall 64,1
  54. ;   mcall 26,9
  55. ;   sub  eax,[timer_tick]
  56. ;   mov  [timer_tick],eax
  57. ;   call  draw_window
  58.    ret
  59. ;---------------------------------------------------------------------
  60. left_name_sort:
  61. ; sorting of files
  62.    call  prepare_data_1
  63.    call  left_name_sort_1
  64.    call  prepare_data_2
  65.    call  left_name_sort_1
  66. .1:
  67.    call  prepare_data_4
  68.    jmp   left_sort_files.move_sorted_file
  69. left_name_sort_1:
  70.    xor   ebp,ebp
  71. .copy_folders:
  72.    call  copy_folders_1
  73.    je    .file
  74.    test  [esi],byte 0x10
  75.    jz    .continue
  76.    jmp   @f
  77. .file:
  78.    test  [esi],byte 0x10
  79.    jnz   .continue
  80. @@:
  81.    call  prepare_data_3
  82. .start:
  83.    push  esi edi
  84.    call  sort_by_name.start
  85.    jae   .add_counter
  86. .no_add_counter:
  87.    call  move_area_for_bdvk
  88.    pop   edi esi
  89.    jmp  .end
  90. .add_counter:
  91.    inc   [sort_counter]
  92.    pop   edi esi
  93.    call  add_counter
  94.    jae   .start
  95. .end:
  96.    call  move_bdvk
  97. .continue:
  98.    inc   ebp
  99.    cmp   ebp,[left_folder_block]
  100.    jb    .copy_folders
  101.    ret
  102. ;---------------------------------------------------------------------
  103. left_type_sort:
  104. ; sorting of files
  105.    call  left_prepare_extension_start_1
  106.    call  prepare_data_1
  107.    call  left_type_sort_1
  108.    call  prepare_data_2
  109.    call  left_type_sort_1
  110.    jmp   left_name_sort.1
  111. left_type_sort_1:
  112.    xor   ebp,ebp
  113. .copy_folders:
  114.    call  copy_folders_1
  115.    je    .file
  116. ;   test  [esi],byte 0x10
  117.    test  al,ah
  118.    jz    .continue
  119.    jmp   @f
  120. .file:
  121. ;   test  [esi],byte 0x10
  122.    test  al,ah
  123.    jnz   .continue
  124. @@:
  125.    call  prepare_data_3
  126. .start:
  127.    push esi edi
  128.    cmp   [dir_or_file],1
  129.    je    @f
  130.    call  prepare_data_5
  131. @@:
  132.    call  sort_by_name.start
  133.    je    .1
  134.    ja    .add_counter
  135. .no_add_counter:
  136.    call  move_area_for_bdvk
  137.    pop   edi esi
  138.    jmp  .end
  139. .1:
  140.    cmp   [dir_or_file],1
  141.    je    .add_counter
  142.    call  sort_by_name
  143.    jbe   .no_add_counter
  144. .add_counter:
  145.    inc   [sort_counter]
  146.    pop   edi esi
  147.    call  add_counter
  148.    jae   .start
  149. .end:
  150.    call  move_bdvk
  151. .continue:
  152.    inc   ebp
  153.    cmp   ebp,[left_folder_block]
  154.    jb    .copy_folders
  155.    ret
  156. ;---------------------------------------------------------------------
  157. left_size_date_sort:
  158. ; sorting of files
  159.    call  prepare_data_1
  160.    call  left_size_date_sort_1
  161.    call  prepare_data_2
  162.    call  left_size_date_sort_1
  163.    jmp   left_name_sort.1
  164. left_size_date_sort_1:
  165.    xor   ebp,ebp
  166. .copy_folders:
  167.    call  copy_folders_1
  168.    je    .file
  169.    test  [esi],byte 0x10
  170.    jz    .continue
  171.    jmp   @f
  172. .file:
  173.    test  [esi],byte 0x10
  174.    jnz   .continue
  175. @@:
  176.    call  prepare_data_3
  177. .start:
  178.    push  esi edi
  179.    mov   eax,[left_sort_flag]
  180.    cmp   eax,2
  181.    je    .size_sort
  182.    call  sort_by_date
  183. ;   je   .1
  184.    jae   .add_counter
  185.    jmp  .no_add_counter
  186. .size_sort:
  187.    cmp   [dir_or_file],0
  188.    je    .file_1
  189.    call  sort_by_name.start
  190.    jmp   @f
  191. .file_1:
  192.    call  sort_by_size
  193. @@:
  194.    jae   .add_counter
  195. .no_add_counter:
  196.    call  move_area_for_bdvk
  197.    pop   edi esi
  198.    jmp  .end
  199. ;.1:
  200. ;   call  sort_by_name.start
  201. ;   jbe  .no_add_counter
  202. .add_counter:
  203.    inc   [sort_counter]
  204.    pop   edi esi
  205.    call  add_counter
  206.    jae   .start
  207. .end:
  208.    call  move_bdvk
  209. .continue:
  210.    inc   ebp
  211.    cmp   ebp,[left_folder_block]
  212.    jb    .copy_folders
  213.    ret
  214. ;---------------------------------------------------------------------
  215. left_prepare_extension_start:
  216.    xor   ebp,ebp
  217.    mov   esi,[left_folder_data]
  218.    add   esi,32+40
  219. .start:
  220.    call  prepare_extension_start_all
  221.    cmp   ebp,[left_folder_block]
  222.    jb    .start
  223.    ret
  224. ;---------------------------------------------------------------------
  225. prepare_extension_start_all:
  226.    push  esi
  227.    call  search_extension_start
  228.    mov   eax,esi
  229.    pop   esi
  230.    sub   eax,esi
  231.    sub   ebx,esi
  232.    shl   eax,16
  233.    mov   ax,bx
  234.    mov   [esi+300-40],eax
  235.    mov   [esi+299-40],byte 0
  236.    add   esi,304
  237.    inc   ebp
  238.    ret
  239. ;---------------------------------------------------------------------
  240. left_prepare_extension_start_1:
  241.    xor   ebp,ebp
  242.    mov   edi,[esp+4]
  243. .start:
  244.    xor   eax,eax
  245.    mov   [edi+300],eax
  246.    add   edi,304
  247.    inc   ebp
  248.    cmp   ebp,[left_folder_block]
  249.    jb    .start
  250.    ret
  251. ;---------------------------------------------------------------------
  252. left_files_name_normalize:
  253.    xor   ebp,ebp
  254.    mov   esi,[left_folder_data]
  255.    add   esi,32+40
  256. .start:
  257.    push  esi
  258.    mov   al,[esi]
  259.    call  char_toupper
  260.    mov   [esi],al
  261. @@:
  262.    inc   esi
  263.    mov   al,[esi]
  264.    test  al,al
  265.    jz   @f
  266.    call  char_todown
  267.    mov   [esi],al
  268.    jmp   @b
  269. @@:
  270.    pop   esi
  271.    add   esi,304
  272.    inc   ebp
  273.    cmp   ebp,[left_folder_block]
  274.    jb    .start
  275.    ret
  276. ;---------------------------------------------------------------------
  277. right_files_name_normalize:
  278.    xor   ebp,ebp
  279.    mov   esi,[right_folder_data]
  280.    add   esi,32+40
  281. .start:
  282.    push  esi
  283.    mov   al,[esi]
  284.    call  char_toupper
  285.    mov   [esi],al
  286. @@:
  287.    inc   esi
  288.    mov   al,[esi]
  289.    test  al,al
  290.    jz   @f
  291.    call  char_todown
  292.    mov   [esi],al
  293.    jmp   @b
  294. @@:
  295.    pop   esi
  296.    add   esi,304
  297.    inc   ebp
  298.    cmp   ebp,[right_folder_block]
  299.    jb    .start
  300.    ret
  301. ;---------------------------------------------------------------------
  302. right_prepare_extension_start:
  303.    xor   ebp,ebp
  304.    mov   esi,[right_folder_data]
  305.    add   esi,32+40
  306. .start:
  307.    call  prepare_extension_start_all
  308.    cmp   ebp,[right_folder_block]
  309.    jb    .start
  310.    ret
  311. ;---------------------------------------------------------------------
  312. right_prepare_extension_start_1:
  313.    xor   ebp,ebp
  314.    mov   edi,[esp+4]
  315. .start:
  316.    xor   eax,eax
  317.    mov   [edi+300],eax
  318.    add   edi,304
  319.    inc   ebp
  320.    cmp   ebp,[right_folder_block]
  321.    jb    .start
  322.    ret
  323. ;---------------------------------------------------------------------
  324. prepare_data_1:
  325.    mov   [dir_or_file],1
  326.    mov   [dir_temp_counter],0
  327.    ret
  328. ;---------------------------------------------------------------------
  329. prepare_data_2:
  330.    mov   eax,[dir_temp_counter]
  331.    mov   [dir_temp_counter_1],eax
  332.    imul  eax,304
  333.    add   [esp+4],eax
  334.    mov   [dir_or_file],0
  335.    ret
  336. ;---------------------------------------------------------------------
  337. prepare_data_3:
  338.    mov   edi,[esp+4+4]
  339.    add   esi,40
  340.    add   edi,40
  341.    mov   [sort_counter],0
  342.    ret
  343. ;---------------------------------------------------------------------
  344. prepare_data_4:
  345.    mov   eax,[dir_temp_counter_1]
  346.    imul  eax,304
  347.    sub   [esp+4],eax
  348.    ret
  349. ;---------------------------------------------------------------------
  350. prepare_data_5:
  351.    xor  eax,eax
  352.    mov   ax,[esi+302-40]
  353.    add   esi,eax
  354.    mov   ax,[edi+302-40]
  355.    add   edi,eax
  356.    ret
  357. ;---------------------------------------------------------------------
  358. sort_by_name:
  359.    mov   esi,[esp+8]
  360.    mov   edi,[esp+4]
  361. .start:
  362.    cld
  363.    lodsd
  364.    mov   ebx,[edi]  ; bufer
  365.    add   edi,4
  366.    cmp   al,bl
  367.    jnz   @f
  368.    test  bl, bl
  369.    jz    @f
  370.    cmp   ah,bh
  371.    jnz   @f
  372.    test  bh, bh
  373.    jz    @f
  374.    ror   eax,16
  375.    ror   ebx,16
  376.    cmp   al,bl
  377.    jnz   @f
  378.    test  bl, bl
  379.    jz    @f
  380.    cmp   ah, bh
  381.    jnz   @f
  382.    test  bh, bh
  383.    jnz   .start
  384. @@:
  385.    ret
  386. ;---------------------------------------------------------------------
  387. sort_by_name_3:
  388.    mov   esi,[esp+8]
  389.    mov   edi,[esp+4]
  390. .start:
  391.    cld
  392.    lodsd
  393.    mov  ecx,4
  394.    rep scasb
  395.    jz  .start
  396.    ret
  397. ;---------------------------------------------------------------------
  398. sort_by_name_1:
  399.    mov   esi,[esp+8]
  400.    mov   edi,[esp+4]
  401.    cmp   [edi],byte 255
  402.    je    @f
  403. .start:
  404.    cld
  405.    lodsb
  406.    mov   ah,[edi]  ; bufer
  407.    inc   edi
  408.    cmp   al,ah
  409.    jnz   @f
  410.    test  ah, ah
  411.    jnz   .start
  412. @@:
  413.    ret
  414. ;---------------------------------------------------------------------
  415. align 4
  416. sort_by_date:
  417.    mov  eax,[esi-12]  ;+28-40]
  418.    cmp  eax,[edi-12]  ;+28-40]
  419.    jnz  .end
  420.    mov  eax,[esi-16]  ;+24-40]
  421.    cmp  eax,[edi-16]  ;+24-40]
  422. .end:
  423.    ret
  424.  
  425. ;mov eax,[esi-12]
  426. ;cmp eax,[edi-12]
  427. ;jz @f
  428. ;ret
  429. ;@@:
  430. ;mov eax,[esi-16]
  431. ;cmp eax,[edi-16]
  432. ;ret
  433.  
  434. ;push ecx ; ьюцэю юяєёЄшЄ№, хёыш ecx эх црыъю
  435. ;mov eax,[esi-12]
  436. ;cmp eax,[edi-12]
  437. ;setnz ch
  438. ;adc ch,-2
  439. ;mov eax,[esi-16]
  440. ;cmp eax,[edi-16]
  441. ;setnz cl
  442. ;adc cl,-2
  443. ;cmp cx,0xFEFE
  444. ;pop ecx
  445. ;ret
  446. ;---------------------------------------------------------------------
  447. align 4
  448. sort_by_size:
  449.    mov  eax,[esi-4]   ;+36-40]
  450.    cmp  eax,[edi-4]   ;+36-40]
  451.    jnz  .end
  452.    mov  eax,[esi-8]   ;+32-40]
  453.    cmp  eax,[edi-8]   ;+32-40]
  454. .end:
  455.    ret
  456.  
  457. ;mov eax,[esi-4]
  458. ;cmp eax,[edi-4]
  459. ;jz @f
  460. ;ret
  461. ;@@:
  462. ;mov eax,[esi-8]
  463. ;cmp eax,[edi-8]
  464. ;ret
  465.  
  466. ;push ecx ; ьюцэю юяєёЄшЄ№, хёыш ecx эх црыъю
  467. ;mov eax,[esi-4]
  468. ;cmp eax,[edi-4]
  469. ;setnz ch
  470. ;adc ch,-2
  471. ;mov eax,[esi-8]
  472. ;cmp eax,[edi-8]
  473. ;setnz cl
  474. ;adc cl,-2
  475. ;cmp cx,0xFEFE
  476. ;pop ecx
  477. ;ret
  478. ;---------------------------------------------------------------------
  479. add_counter:
  480.    add   edi,304
  481.    mov   eax,[appl_memory]
  482.    sub   eax,304-40
  483.    cmp   eax,edi
  484.    ret
  485. ;---------------------------------------------------------------------
  486. copy_folders_1:
  487.    mov   edi,ebp
  488.    call  multiple_304
  489. ;   imul  edi,304
  490.    mov   esi,edi
  491.    add   esi,[left_folder_data]
  492.    add   esi,32
  493.    mov   ah,0x10
  494.    mov   al,[esi]
  495.    cmp   [dir_or_file],0
  496.    ret
  497. ;---------------------------------------------------------------------
  498. copy_folders_2:
  499.    mov   edi,ebp
  500.    call  multiple_304
  501. ;   imul  edi,304
  502.    mov   esi,edi
  503.    add   esi,[right_folder_data]
  504.    add   esi,32
  505.    cmp   [dir_or_file],0
  506.    ret
  507. ;---------------------------------------------------------------------
  508. move_bdvk:
  509.    sub   esi,40
  510.    mov   edi,[sort_counter]
  511.    call  multiple_304
  512.    add   edi,[esp+4+4]
  513.    call  move_bdvk_1
  514.    inc   [dir_temp_counter]
  515.    ret
  516. ;---------------------------------------------------------------------
  517. move_bdvk_1:
  518.    mov   eax,[esi+300]
  519.    mov   [edi+300],eax
  520.    mov   ecx,0
  521.    mov   [edi+299],cl
  522.    mov   cx,[esi+300]
  523.    add   ecx,41
  524.    ror   ecx,2
  525.    mov   ax,cx
  526.    xor   cx,cx
  527.    rol   ecx,2
  528.    mov   bx,cx
  529.    mov   cx,ax
  530.    cld
  531.    rep   movsd
  532.    mov   cx,bx
  533.    rep   movsb
  534.    ret
  535. ;---------------------------------------------------------------------
  536. multiple_304:
  537.    shl   edi,4
  538.    mov   eax,edi
  539.    mov   ebx,eax
  540.    shl   edi,5
  541.    shl   eax,3
  542.    sub   edi,eax
  543.    mov   eax,ebx
  544.    shl   ebx,2
  545.    sub   edi,ebx
  546.    sub   edi,eax
  547.    ret
  548. ;---------------------------------------------------------------------
  549. move_area_for_bdvk:
  550.    mov   eax,[dir_temp_counter]
  551.    mov   edi,[sort_counter]
  552.    test  eax,eax
  553.    je    .end
  554.    cmp   eax,edi
  555.    jbe   .end
  556.    call  multiple_304
  557. ;   imul  edi,304
  558.    mov   ecx,edi
  559.    mov   edi,[dir_temp_counter]
  560.    add   edi,2
  561.    call  multiple_304
  562. ;   imul  edi,304
  563.    mov   eax,ecx
  564.    mov   ebx,[esp+12+4]
  565.    add   edi,ebx
  566.    mov   edx,[appl_memory]
  567.    cmp   edi,edx
  568.    jbe   @f
  569.    mov   edi,edx
  570. @@:
  571.    mov   esi,edi
  572.    sub   esi,304
  573.    mov   ecx,edi
  574.    sub   ecx,ebx
  575.    sub   ecx,eax
  576.    shr   ecx,2
  577.    std
  578.    rep   movsd
  579.  
  580. ;   mov  eax,ecx
  581. ;   mov  ebx,304
  582. ;   mov  edx,0
  583. ;   div  ebx
  584. ;   mov  ecx,eax
  585. ;   sub  ecx,2
  586. ;   mov  eax,[appl_memory]
  587. ;   mov  [temp_ecx],edi
  588. ;   mov  [temp_ebx],esi
  589. ;   mov  [temp_eax],eax
  590. ;   pusha
  591. ;   call  draw_window
  592. ;   mcall 5,300
  593. ;   popa
  594. ;   sub   edi,303
  595. ;   sub   esi,303
  596. ;@@:
  597. ;   push  ecx esi edi
  598. ;   call  move_bdvk_1
  599. ;   pop  edi esi ecx
  600. ;   sub  edi,304
  601. ;   sub  esi,304
  602. ;   dec  ecx
  603. ;   jnz  @b
  604. .end:
  605.    ret
  606. ;---------------------------------------------------------------------
  607. search_extension_start:
  608.    mov   edx,esi
  609.    xor   eax,eax
  610. @@:
  611.    cld
  612.    lodsb
  613.    test  eax,eax
  614.    jnz   @b
  615.    dec   esi
  616.    dec   edx
  617.    push  esi
  618. @@:
  619.    std
  620.    lodsb
  621.    cmp   esi,edx
  622.    je    .end
  623.    cmp   al,'.'
  624.    jnz   @b
  625.    add   esi,2
  626.    pop   ebx
  627.    ret
  628. .end:
  629.    pop  esi
  630.    mov  ebx,esi
  631.    ret
  632. ;---------------------------------------------------------------------
  633. right_sort_files:
  634.    mov   eax,[right_folder_data]
  635.    add   eax,32+40
  636.    cmp   [eax],word '..'
  637.    jne   @f
  638.    cmp   [eax+2],byte 0
  639.    jne   @f
  640.    add   [right_folder_data],304
  641.    dec   [right_folder_block]
  642.    mov   [exit_to_dir],1
  643. @@:
  644. ; add memory for sorting
  645.    mov   ecx,[appl_memory]
  646.    push  ecx
  647.    sub   ecx,[right_folder_data]
  648.    add   ecx,[esp]
  649.    mov   [appl_memory],ecx
  650.    mcall 64,1
  651.    mov   edi,[esp]
  652.    mov   ecx,[appl_memory]
  653.    sub   ecx,edi
  654.    shr   ecx,2
  655.    mov   eax,0xffffffff
  656.    cld
  657.    rep   stosd
  658.    cmp   [right_sort_flag],0
  659.    je    right_name_sort
  660.    cmp   [right_sort_flag],1
  661.    je    right_type_sort
  662.    jmp    right_size_date_sort
  663. .move_sorted_file:
  664. ; move sorted file area in folder area
  665.    mov   esi,[esp]
  666.    mov   ecx,esi
  667.    mov   edi,[right_folder_data]
  668.    add   edi,32
  669.    sub   ecx,edi
  670.    shr   ecx,2
  671.    cld
  672.    rep   movsd
  673.    cmp   [exit_to_dir],0
  674.    je    @f
  675.    sub   [right_folder_data],304
  676.    inc   [right_folder_block]
  677.    mov   [exit_to_dir],0
  678. @@:
  679. ; sub memory for sorting
  680.    pop   ecx
  681.    mov   [appl_memory],ecx
  682.    mcall 64,1
  683.    ret
  684. ;---------------------------------------------------------------------
  685. right_name_sort:
  686. ; sorting of files
  687.    call  prepare_data_1
  688.    call  right_name_sort_1
  689.    call  prepare_data_2
  690.    call  right_name_sort_1
  691. .1:
  692.    call  prepare_data_4
  693.    jmp   right_sort_files.move_sorted_file
  694. right_name_sort_1:
  695.    xor   ebp,ebp
  696. .copy_folders:
  697.    call  copy_folders_2
  698.    je    .file
  699.    test  [esi],byte 0x10
  700.    jz    .continue
  701.    jmp   @f
  702. .file:
  703.    test  [esi],byte 0x10
  704.    jnz   .continue
  705. @@:
  706.    call  prepare_data_3
  707. .start:
  708.    push esi edi
  709.    call  sort_by_name.start
  710.    jae   .add_counter
  711. .no_add_counter:
  712.    call  move_area_for_bdvk
  713.    pop   edi esi
  714.    jmp  .end
  715. .add_counter:
  716.    inc   [sort_counter]
  717.    pop   edi esi
  718.    call  add_counter
  719.    jae   .start
  720. .end:
  721.    call  move_bdvk
  722. .continue:
  723.    inc   ebp
  724.    cmp   ebp,[right_folder_block]
  725.    jb    .copy_folders
  726.    ret
  727. ;---------------------------------------------------------------------
  728. right_type_sort:
  729. ; sorting of files
  730.    call  right_prepare_extension_start_1
  731.    call  prepare_data_1
  732.    call  right_type_sort_1
  733.    call  prepare_data_2
  734.    call  right_type_sort_1
  735.    jmp   right_name_sort.1
  736. right_type_sort_1:
  737.    xor   ebp,ebp
  738. .copy_folders:
  739.    call  copy_folders_2
  740.    je    .file
  741.    test  [esi],byte 0x10
  742.    jz    .continue
  743.    jmp   @f
  744. .file:
  745.    test  [esi],byte 0x10
  746.    jnz   .continue
  747. @@:
  748.    call  prepare_data_3
  749. .start:
  750.    push esi edi
  751.    cmp   [dir_or_file],1
  752.    je    @f
  753.    call  prepare_data_5
  754. @@:
  755.    call  sort_by_name.start
  756.    je    .1
  757.    ja    .add_counter
  758. .no_add_counter:
  759.    call  move_area_for_bdvk
  760.    pop   edi esi
  761.    jmp  .end
  762. .1:
  763.    cmp   [dir_or_file],1
  764.    je    .add_counter
  765.    call  sort_by_name
  766.    jbe   .no_add_counter
  767. .add_counter:
  768.    inc   [sort_counter]
  769.    pop   edi esi
  770.    call  add_counter
  771.    jae   .start
  772. .end:
  773.    call  move_bdvk
  774. .continue:
  775.    inc   ebp
  776.    cmp   ebp,[right_folder_block]
  777.    jb    .copy_folders
  778.    ret
  779. ;---------------------------------------------------------------------
  780. right_size_date_sort:
  781. ; sorting of files
  782.    call  prepare_data_1
  783.    call  right_size_date_sort_1
  784.    call  prepare_data_2
  785.    call  right_size_date_sort_1
  786.    jmp   right_name_sort.1
  787. right_size_date_sort_1:
  788.    xor   ebp,ebp
  789. .copy_folders:
  790.    call  copy_folders_2
  791.    je    .file
  792.    test  [esi],byte 0x10
  793.    jz    .continue
  794.    jmp   @f
  795. .file:
  796.    test  [esi],byte 0x10
  797.    jnz   .continue
  798. @@:
  799.    call  prepare_data_3
  800. .start:
  801.    push  esi edi
  802.    cmp   [right_sort_flag],2
  803.    je    .size_sort
  804.    call  sort_by_date
  805.    je    .1
  806.    ja    .add_counter
  807.    jmp  .no_add_counter
  808. .size_sort:
  809.    cmp   [dir_or_file],0
  810.    je    .file_1
  811.    call  sort_by_name.start
  812.    jmp   @f
  813. .file_1:
  814.    call  sort_by_size
  815. @@:
  816.    jae   .add_counter
  817. .no_add_counter:
  818.    call  move_area_for_bdvk
  819.    pop   edi esi
  820.    jmp  .end
  821. .1:
  822.    call  sort_by_name.start
  823.    jbe   .no_add_counter
  824. .add_counter:
  825.    inc   [sort_counter]
  826.    pop   edi esi
  827.    call  add_counter
  828.    jae   .start
  829. .end:
  830.    call  move_bdvk
  831. .continue:
  832.    inc   ebp
  833.    cmp   ebp,[right_folder_block]
  834.    jb    .copy_folders
  835.    ret
  836. ;---------------------------------------------------------------------
  837.