Subversion Repositories Kolibri OS

Rev

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