Subversion Repositories Kolibri OS

Rev

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

  1. read_delete_dir:
  2.    mcall 70, read_delete_dir_data
  3.    ret
  4. ;---------------------------------------------------------------------
  5. create_directory_f70:
  6.    mcall 70, create_dir_file_data
  7.    ret
  8. ;---------------------------------------------------------------------
  9. del_file:
  10.    mcall 70, delete_file_data
  11.    ret
  12. ;---------------------------------------------------------------------
  13. start_appl:
  14.    mcall 70, start_file_data
  15.    ret
  16. ;---------------------------------------------------------------------
  17. get_file_size:
  18.    mcall 70, read_file_features
  19.    ret
  20. ;---------------------------------------------------------------------
  21. load_file:
  22.    mcall 70, read_file
  23.    ret
  24. ;---------------------------------------------------------------------
  25. write_file:
  26.    mcall 70, save_file
  27.    ret
  28. ;---------------------------------------------------------------------
  29. add_write_file:
  30.    mcall 70, add_save_file
  31.    ret
  32. ;---------------------------------------------------------------------
  33. proc_read_left_folder:
  34.    mov   ebx,304
  35.    push  ebx ecx
  36.    mov   ecx,[appl_memory]
  37.    add   ecx,ebx
  38.    mov   [esp],ebx
  39.    mov   ebx,[appl_memory]
  40.    mov   [esp+4],ebx
  41.    mov   [appl_memory],ecx
  42.    mcall 64,1
  43.    call  move_up_right_table
  44.    pop   ecx ebx
  45.  
  46.    xor   eax,eax
  47.    mov   [left_marked_counter],eax
  48.    mov   [read_folder.start],eax    ;dword 0
  49.    inc   eax
  50.    mov   [read_folder.size],eax     ;dword 1
  51.    mov   eax,[left_folder_data]
  52.    push  eax
  53.    mov   [read_folder.return],eax
  54.    mcall 70, read_folder
  55.     test  eax,eax
  56.     jz    @f
  57.     cmp   eax,6
  58.     jne   .error_1
  59. @@:
  60.    mov   eax,[esp]
  61.    cmp   [eax+32+40],word 2Eh
  62.    jne   @f
  63.    mov   [read_folder.start],dword 1
  64. @@:
  65.    mov   ebx,[eax+8]
  66.    mov   [read_folder.size],ebx  ;dword 10  ;5000
  67.    imul  ebx,304
  68.    add   ebx,32
  69.    mov   ecx,[right_folder_data]
  70.    sub   ecx,[left_folder_data]
  71.    push  ebx ecx
  72.    cmp   ebx,ecx
  73.    je    .continue
  74.    sub   ebx,ecx
  75.    js    .sub_mem
  76. .add_mem:
  77.    mov   ecx,[appl_memory]
  78.    add   ecx,ebx
  79.    mov   [esp],ebx
  80.    mov   ebx,[appl_memory]
  81.    mov   [esp+4],ebx
  82.    mov   [appl_memory],ecx
  83.    mcall 64,1
  84.    call  move_up_right_table
  85. ;   mov   [temp_znak],1
  86.    jmp   .continue
  87. .sub_mem:
  88.    mov   ebx,[esp]
  89.    mov   ecx,[esp+4]
  90.    sub   ebx,ecx
  91.    mov   ecx,[appl_memory]
  92.    sub   ecx,ebx
  93.    mov   [esp],ebx
  94.    mov   ebx,[appl_memory]
  95.    mov   [esp+4],ebx
  96.    mov   [appl_memory],ecx
  97.    call  move_down_right_table
  98.    mcall 64,1
  99. ;   mov   [temp_znak],2
  100. .continue:
  101. ;   mov  edi,eax  ;folder_data
  102. ;   call  clear_folder_data_area
  103.    mcall 70, read_folder
  104.    mov   [left_folder_block],ebx
  105.    add   esp,4*3
  106.     test  eax,eax
  107.     jz    @f
  108.     cmp   eax,6
  109.     jne   .error
  110. @@:
  111.    push  eax
  112. ;   call  left_files_name_normalize
  113.    call  left_prepare_extension_start
  114.    call  left_sort_files
  115.    pop   eax
  116. ;   pusha
  117. ;   call  draw_window
  118. ;   popa
  119.    ret
  120. .error_1:
  121.    add   esp,4
  122. .error:
  123.    mov   [left_folder_block],dword 2
  124.    mov   edi,[left_folder_data]
  125.    call  error_handler
  126.    ret
  127. ;---------------------------------------------------------------------
  128. error_handler:
  129.    push  eax
  130.    xor   eax,eax
  131.    add   edi,32+40
  132.    push  edi
  133.    sub   edi,40
  134.    mov   ecx,304/4
  135.    cld
  136.    rep   stosd
  137.    pop   edi
  138.    mov   [edi-40],byte 0x10
  139.    mov   [edi],word '..'
  140.    mov   [edi+2],al
  141.    add   edi,304
  142.    push  edi
  143.    sub   edi,40
  144.    mov   ecx,304/4
  145.    cld
  146.    rep   stosd
  147.    pop   edi
  148.    mov   eax,[esp]
  149.    mov   [edi+32-40],eax
  150.    mov   esi,error_type
  151.    mov   ecx,19
  152.    cld
  153.    rep   movsb
  154.    pop   eax
  155.    ret
  156. ;---------------------------------------------------------------------
  157. proc_read_right_folder:
  158.    mov   ecx,[appl_memory]
  159.    add   ecx,304
  160.    mov   [appl_memory],ecx
  161.    mcall 64,1
  162.    xor   eax,eax
  163.    mov   [right_marked_counter],eax
  164.    mov   [read_folder_1.start],eax      ;dword 0
  165.    inc   eax
  166.    mov   [read_folder_1.size],eax       ;dword 1
  167.    mov   eax,[right_folder_data]
  168.    push  eax
  169.    mov   [read_folder_1.return],eax
  170.    mcall 70, read_folder_1
  171.     test  eax,eax
  172.     jz    @f
  173.     cmp   eax,6
  174.     jne   .error_1
  175. @@:
  176.    mov   eax,[esp]
  177.    cmp   [eax+32+40],word 2Eh
  178.    jne   @f
  179.    mov   [read_folder_1.start],dword 1
  180. @@:
  181.    mov   ebx,[eax+8]
  182.    mov   [read_folder_1.size],ebx  ;dword 10  ;5000
  183.    imul  ebx,304
  184.    add   ebx,32
  185.    mov   ecx,[appl_memory]
  186.    sub   ecx,[right_folder_data]
  187.    push  ebx ecx
  188.    cmp   ebx,ecx
  189.    je    .continue
  190.    sub   ebx,ecx
  191.    js    .sub_mem
  192. .add_mem:
  193.    mov   ecx,[appl_memory]
  194.    add   ecx,ebx
  195.    mov   [appl_memory],ecx
  196.    mcall 64,1
  197. ;   mov   [temp_znak],1
  198.    jmp   .continue
  199. .sub_mem:
  200.    mov   ebx,[esp]
  201.    mov   ecx,[esp+4]
  202.    sub   ebx,ecx
  203.    mov   ecx,[appl_memory]
  204.    sub   ecx,ebx
  205.    mov   [appl_memory],ecx
  206.    mcall 64,1
  207. ;   mov   [temp_znak],2
  208. .continue:
  209. ;   mov  edi,eax  ;folder_data_1
  210. ;   call  clear_folder_data_area
  211.    mcall 70, read_folder_1
  212.    mov   [right_folder_block],ebx
  213.    add   esp,4*3
  214.     test  eax,eax
  215.     jz    @f
  216.     cmp   eax,6
  217.     jne   .error
  218. @@:
  219.    push  eax
  220. ;   call  right_files_name_normalize
  221.    call  right_prepare_extension_start
  222.    call  right_sort_files
  223.    pop   eax
  224. ;   pusha
  225. ;   call  draw_window
  226. ;   popa
  227.    ret
  228. .error_1:
  229.    add   esp,4
  230. .error:
  231.    mov   [right_folder_block],dword 2
  232.    mov   edi,[right_folder_data]
  233.    call  error_handler
  234.    ret
  235. ;---------------------------------------------------------------------
  236. move_up_right_table:
  237.    mov  esi,[esp+8]
  238.    mov  ecx,esi
  239.    sub  ecx,[right_folder_data]
  240.    mov  edi,esi
  241.    add  edi,[esp+4]
  242.    shr  ecx,2
  243.    std
  244. ;   rep  movsb
  245.    rep  movsd
  246.    mov  eax,[esp+4]
  247.    add  [right_folder_data],eax
  248.    ret
  249. ;---------------------------------------------------------------------
  250. move_down_right_table:
  251.    mov  esi,[right_folder_data]
  252.    mov  edi,esi
  253.    sub  edi,[esp+4]
  254.    push ecx
  255.    mov  ecx,[esp+12]
  256.    sub  ecx,[right_folder_data]
  257.    shr  ecx,2
  258.    cld
  259. ;   rep  movsb
  260.    rep  movsd
  261.    pop  ecx
  262.    mov  eax,[esp+4]
  263.    sub  [right_folder_data],eax
  264.    ret
  265. ;---------------------------------------------------------------------
  266. ;clear_folder_data_area:
  267. ;   mov ecx,4096*10/4
  268. ;   xor eax,eax
  269. ;   cld
  270. ;   rep stosd
  271. ;   ret
  272. ;---------------------------------------------------------------------
  273. proc_read_folder:
  274.     call  proc_read_left_folder
  275. ;    mov   [left_panel_clear_all],1
  276.     cmp  [search_pre_folder],0
  277.     jne   @f
  278.     mov  [left_start_draw_cursor_line],0
  279.     mov  [left_start_draw_line],0    
  280.     jmp  .continue
  281. @@:
  282.     mov  edi,[left_folder_data]
  283.     add  edi,32+40
  284.     sub  edi,304
  285.     xor  ebp,ebp
  286. .search_file:
  287.     cmp   [left_folder_block],ebp
  288.     jbe   .end_folder
  289.     mov   esi,[temp_counter_dword]
  290.     mov   ecx,[extension_size]
  291.     add   edi,304
  292.     inc   ebp
  293.     cld
  294. ;    mov   [temp_counter_dword_1],edi
  295.     push   edi
  296.     rep  cmpsb
  297.     pop    edi
  298.     jne   .search_file
  299.     dec  ebp
  300.     mov  eax,[left_folder_block]
  301.     cmp  [max_panel_line],eax
  302.     js  @f
  303.     mov  eax,ebp
  304.     imul eax,10
  305.     mov  [left_start_draw_cursor_line],ax
  306.     mov  [left_start_draw_line],0
  307.     jmp  .end_folder
  308. @@:
  309. ;    sub  eax,ebp
  310. ;    push eax
  311. ;    sub  eax,[max_panel_line]
  312. ;    jns  @f
  313. ;    mov  eax,[max_panel_line]
  314. ;    sub  eax,[esp]
  315. ;    imul eax,10
  316. ;    mov  [left_start_draw_cursor_line],ax
  317. ;@@:
  318.     mov  [left_start_draw_cursor_line],0
  319.     mov  [left_start_draw_line],ebp
  320. .end_folder:
  321.     mov  [search_pre_folder],0
  322. .continue:
  323.     call  draw_left_panel
  324.     call  draw_left_select_disk_button
  325. ;    call  draw_window
  326. ;    pop   eax
  327.     jmp   still
  328. ;---------------------------------------------------------------------
  329. proc_read_folder_1:
  330.     call  proc_read_right_folder
  331. ;    mov   [right_panel_clear_all],1
  332.     cmp  [search_pre_folder],0
  333.     jne   @f
  334.     mov  [right_start_draw_cursor_line],0
  335.     mov  [right_start_draw_line],0    
  336.     jmp  .continue
  337. @@:
  338.     mov  edi,[right_folder_data]
  339.     add  edi,32+40
  340.     sub  edi,304
  341.     xor  ebp,ebp
  342. .search_file:
  343.     cmp   [right_folder_block],ebp
  344.     jbe   .end_folder
  345.     mov   esi,[temp_counter_dword]
  346.     mov   ecx,[extension_size]
  347.     add   edi,304
  348.     inc   ebp
  349.     cld
  350. ;    mov   [temp_counter_dword_1],edi
  351.     push   edi
  352.     rep  cmpsb
  353.     pop    edi
  354.     jne   .search_file
  355.     dec  ebp
  356.     mov  eax,[right_folder_block]
  357.     cmp  [max_panel_line],eax
  358.     js  @f
  359.     mov  eax,ebp
  360.     imul eax,10
  361.     mov  [right_start_draw_cursor_line],ax
  362.     mov  [right_start_draw_line],0
  363.     jmp  .end_folder
  364. @@:
  365. ;    sub  eax,ebp
  366. ;    push eax
  367. ;    sub  eax,[max_panel_line]
  368. ;    jns  @f
  369. ;    mov  eax,[max_panel_line]
  370. ;    sub  eax,[esp]
  371. ;    imul eax,10
  372. ;    mov  [right_start_draw_cursor_line],ax
  373. ;@@:
  374.     mov  [right_start_draw_cursor_line],0
  375.     mov  [right_start_draw_line],ebp
  376. .end_folder:
  377.     mov  [search_pre_folder],0
  378. .continue:
  379.     call  draw_right_panel
  380.     call  draw_right_select_disk_button
  381.     jmp   still
  382. ;---------------------------------------------------------------------
  383. copy_folder_name:
  384.     mov  edi,read_folder_name+1
  385. .1:
  386.     cld
  387. @@:
  388.     lodsb
  389.     stosb
  390.     cmp al,0
  391.     jne  @r
  392.     ret
  393. ;---------------------------------------------------------------------
  394. copy_folder_name_1:
  395.     mov  edi,read_folder_1_name+1
  396.     jmp  copy_folder_name.1
  397. ;---------------------------------------------------------------------
  398. copy_folder_name_2:
  399.     mov  edi,read_folder_2_name+1
  400.     jmp  copy_folder_name.1
  401. ;---------------------------------------------------------------------
  402. copy_folder_name_3:
  403.     mov  edi,read_folder_3_name+1
  404.     jmp  copy_folder_name.1
  405. ;---------------------------------------------------------------------
  406. read_folder:
  407.     .subfunction dd   1
  408.     .start       dd   0
  409.     .flags       dd   0
  410.     .size        dd   5000
  411.     .return      dd   0
  412.     db 0
  413.     .name: dd read_folder_name
  414. ;---------------------------------------------------------------------
  415. read_folder_1:
  416.     .subfunction dd   1
  417.     .start       dd   0
  418.     .flags       dd   0
  419.     .size        dd   5000
  420.     .return      dd   0
  421.     db 0
  422.     .name: dd read_folder_1_name
  423. ;---------------------------------------------------------------------
  424. read_folder_2:
  425.     .subfunction dd   1
  426.     .start       dd   0
  427.     .flags       dd   0
  428.     .size        dd   5000
  429.     .return      dd   left_folder_data_1
  430.     db 0
  431.     .name: dd read_folder_2_name
  432. ;---------------------------------------------------------------------
  433. read_folder_3:
  434.     .subfunction dd   1
  435.     .start       dd   0
  436.     .flags       dd   0
  437.     .size        dd   5000
  438.     .return      dd   right_folder_data_1
  439.     db 0
  440.     .name: dd read_folder_3_name
  441. ;---------------------------------------------------------------------
  442. read_file_features:
  443.     .subfunction dd   5
  444.     .Offset      dd   0
  445.     .Offset_1    dd   0
  446.     .size            dd   0
  447.     .return      dd   file_features_temp_area
  448.     db 0
  449.     .name: dd file_name
  450. ;---------------------------------------------------------------------
  451. read_file:
  452.     .subfunction dd   0
  453.     .Offset      dd   0
  454.     .Offset_1    dd   0
  455.     .size            dd   0
  456.     .return      dd   mem
  457.     db 0
  458.     .name: dd file_name
  459. ;---------------------------------------------------------------------
  460. save_file:
  461.     .subfunction dd   2
  462.     .Offset      dd   0
  463.     .Offset_1    dd   0
  464.     .size            dd   0
  465.     .pointer     dd   mem
  466.     db 0
  467.     .name: dd start_parameter
  468. ;---------------------------------------------------------------------
  469. add_save_file:
  470.     .subfunction dd   3
  471.     .Offset      dd   0
  472.     .Offset_1    dd   0
  473.     .size            dd   0
  474.     .pointer     dd   mem
  475.     db 0
  476.     .name: dd start_parameter
  477. ;---------------------------------------------------------------------
  478. create_dir_file_data:
  479.     .subfunction dd   9
  480.     .flags       dd   0
  481.     .param       dd   0
  482.     .rezerv      dd   0
  483.     .rezerv1     dd   0
  484.     db 0
  485.     .name: dd file_name
  486. ;---------------------------------------------------------------------
  487. start_file_data:
  488.     .subfunction dd   7
  489.     .flags       dd   0
  490.     .param       dd   0
  491.     .rezerv      dd   0
  492.     .rezerv1     dd   0
  493.     db 0
  494.     .name: dd file_name
  495. ;---------------------------------------------------------------------
  496. delete_file_data:
  497.     .subfunction dd   8
  498.     .flags       dd   0
  499.     .param       dd   0
  500.     .rezerv      dd   0
  501.     .rezerv1 dd   0
  502.     db 0
  503.     .name: dd file_name
  504. ;---------------------------------------------------------------------
  505. read_delete_dir_data:
  506.     .subfunction dd   1
  507.     .start       dd   0
  508.     .flags       dd   0
  509.     .size            dd   0
  510.     .return      dd   delete_dir_data
  511.     db 0
  512.     .name: dd file_name
  513. ;---------------------------------------------------------------------