Subversion Repositories Kolibri OS

Rev

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

  1. save_file:
  2. pusha
  3.         bt      dword [flags],0
  4.         jnc     .not_shooted
  5.  
  6.         cmp     byte [fname_buf],0
  7.         je      .no_file_name
  8.  
  9.         mov     edi,sign_n_input
  10.         call    zstr_to_int
  11.         mov     [sign_n],al
  12.  
  13.         ; £¥­¥à¨à㥬 ¨¬ï ä ©« 
  14.         xor     eax,eax
  15.         mov     ecx,1056
  16.         mov     edi,file_name
  17.         rep     stosb   ; § ¯®«­ï¥¬ ­ã«ï¬¨
  18.  
  19.         mov     esi,fname_buf
  20.         mov     edi,file_name
  21. .next:
  22.         mov     ah,[esi]
  23.         test    ah,ah
  24.         jz      .str_end
  25.         cmp     ah,'*'
  26.         jne     .no_insert_number
  27.         jmp     .insert_number
  28. .no_insert_number:
  29.         mov     [edi],ah
  30.         inc     edi
  31.         inc     esi
  32.         jmp     .next
  33. .insert_number:
  34.         bt      word [ch6.flags],1
  35.         jnc     @f
  36.         mov     eax,[cur_number]
  37.         ;mov     ebx,4
  38.         movsx   ebx,byte [sign_n]
  39.         push    ebx
  40.         call    int_to_str
  41.         pop     ebx
  42.         add     edi,ebx
  43. @@:
  44.         inc     esi
  45.         jmp     .next
  46. .str_end:
  47.  
  48. ;;;;clean memory
  49.  
  50.         mov     ecx,dword [sf_buf.bmp_header]
  51.         mov     ebx,13
  52.         mov     eax,68
  53.         mcall
  54.  
  55. ; ‚ëç¨á«ï¥¬, ᪮«ìª® ¡ ©â ­ã¦­® ¯à¨¡ ¢«ïâì ª ª ¦¤®© áâப¥,
  56. ; ç⮡ë á«¥¤ãîé ï ¡ë«  ¢ëà ¢­¥­  ­  4 ¡ ©â .
  57. ; ¥§ã«ìâ â ¯®¬¥é ¥¬ ¢ edi.
  58.  
  59.         xor     edx,edx
  60.         movzx   eax,word [scr_buf.width]  ; eax = è¨à¨­  ª à⨭ª¨
  61.         lea     eax,[eax*3]               ; eax = ¡ ©â ­  áâப㠪 à⨭ª¨
  62.         mov     ebx,4                     ; ebx = 4
  63.         mov     edi,ebx                   ; edi = 4
  64.         div     ebx                       ; eax = ¡ ©â ­  áâப㠪 à⨭ª¨ div 4  edx = ¡ ©â... mod 4
  65.         sub     edi,edx                   ; edi = ª®«¨ç¥á⢮ ¡ ©â
  66.         test    edx,edx
  67.         jnz     @f
  68.         xor     edi,edi
  69. @@:
  70.  
  71.         ; ¢ë¤¥«ï¥¬ ¯ ¬ïâì
  72. ;        mov     ecx,[scr_buf.end_ptr]
  73. ;        mov     [sf_buf.bmp_header],ecx
  74.  
  75. ;        add     ecx,0x36
  76. ;        mov     [sf_buf.bmp_area],ecx
  77.         movsx   ebx,word [scr_buf.width]
  78.         movsx   edx,word [scr_buf.height]
  79.         ;imul    ebx,edx
  80.         lea     ebx,[ebx*3]
  81.         add     ebx,edi
  82.         imul    ebx,edx
  83.         mov     ecx,ebx
  84.  
  85. ;        mov     [sf_buf.end],ecx
  86.         add     ecx,0x36
  87.         mov     ebx,12
  88.         mov     eax,68
  89.         mcall
  90.  
  91.         mov     [sf_buf.bmp_header],eax
  92.         add     eax,0x36
  93.         mov     [sf_buf.bmp_area],eax
  94.         add     eax,ecx
  95.         sub     eax,0x36
  96.         mov     [sf_buf.end],eax
  97.  
  98. ;        push    edi
  99.         ; § ¯®«­ï¥¬ áâàãªâãàã ¤«ï á®åà ­¥­¨ï ä ©« 
  100.         mov     ebp,fs_struc
  101.         mov     [ebp],dword 2
  102.  
  103.         mov     eax,[sf_buf.bmp_header]
  104.         mov     ebx,[sf_buf.end]
  105.         sub     ebx,eax
  106.         mov     [ebp+12],ebx
  107.         mov     [ebp+16],eax
  108.         mov     [ebp+21],dword file_name
  109.  
  110.         ; § ¯®«­ï¥¬ § £®«®¢®ª bmp
  111.         mov     ebp,[sf_buf.bmp_header]
  112.         mov     [ebp],word 'BM'
  113.         mov     ebx,[sf_buf.end]
  114.         sub     ebx,[sf_buf.bmp_area]
  115.         mov     [ebp+34],ebx    ; à §¬¥à ª à⨭ª¨
  116.         mov     [ebp+10],dword 0x36     ; à §¬¥à § £®«®¢ª 
  117.         add     ebx,0x36
  118.         mov     [ebp+2],ebx ; à §¬¥à ä ©« 
  119.         mov     [ebp+14],dword 0x28
  120.         movzx   eax,word [scr_buf.width]
  121.         mov     [ebp+18],eax ; £®à¨§®­â «ì­ë© à §¬¥à
  122.         movzx   eax,word [scr_buf.height]
  123.         mov     [ebp+22],eax ; ¢¥à⨪«ì­ë© à §¬¥à
  124.         mov     [ebp+26],word 1
  125.         mov     [ebp+28],word 24
  126.  
  127.         ; á®å࠭塞
  128.         mov     esi,[scr_buf.ptr]
  129.         mov     edi,[sf_buf.end]
  130.         movzx   edx,word [scr_buf.height]
  131.         movzx   ebx,word [scr_buf.width]
  132.         lea     ebx,[ebx*3]
  133.        
  134.         test    ebx,11b
  135.         jz      @f
  136.         shr     ebx,2
  137.         inc     ebx
  138.         shl     ebx,2
  139. @@:
  140.         cld
  141. align 4
  142. .next_str:
  143.         sub  edi,ebx
  144.         mov ecx,ebx
  145.         shr ecx,2
  146.         rep movsd
  147.         sub edi,ebx
  148.         dec edx
  149.         jnz .next_str
  150.  
  151.        draw_status saving
  152.         mov     eax,70
  153.         mov     ebx,fs_struc
  154.         mcall
  155.  
  156.         test    eax,eax
  157.         jne     save_error
  158.  
  159.         inc     dword [cur_number]
  160.         call    draw_number
  161.  
  162.         draw_status saved_ok
  163.  
  164. popa
  165. ret
  166.  
  167. .no_file_name:
  168.         draw_status no_file_name
  169. popa
  170. ret
  171.  
  172. .not_shooted:
  173.         draw_status not_shooted
  174. popa
  175. ret
  176.  
  177. save_error:
  178.         cmp     al,5
  179.         jne     @f
  180.         mov     [status.text],dword bad_file_name
  181. @@:
  182.         cmp     al,8
  183.         jne     @f
  184.         mov     [status.text],dword disk_filled
  185. @@:
  186.  
  187.         cmp     al,9
  188.         jne     @f
  189.         mov     [status.text],dword bad_fat_table
  190. @@:
  191.  
  192.         cmp     al,10
  193.         jne     @f
  194.         mov     [status.text],dword ac_den
  195. @@:
  196.  
  197.         cmp     al,11
  198.         jne     @f
  199.         mov     [status.text],dword device_er
  200. @@:
  201.         call    send_draw_status
  202. popa
  203. ret