Subversion Repositories Kolibri OS

Rev

Rev 647 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. format ELF
  2.  
  3. section '.text' executable
  4.  
  5. include 'proc32.inc'
  6. public _ksys_get_filesize
  7. public _ksys_readfile
  8. public _ksys_rewritefile
  9. public _ksys_appendtofile
  10.  
  11. align 4
  12. proc _ksys_get_filesize stdcall, filename:dword
  13.  
  14.         xor eax,eax
  15.         mov ebx,[filename]
  16.         mov [fileinfo.subproc],dword 5
  17.         mov [fileinfo.offset_l],eax
  18.         mov [fileinfo.offset_h],eax
  19.         mov [fileinfo.size],eax
  20.         mov [fileinfo.data],dword buffer_for_info
  21.         mov [fileinfo.letter],al
  22.         mov [fileinfo.filename],ebx
  23.  
  24.         mov eax,70
  25.         mov ebx,fileinfo
  26.         int 0x40
  27.  
  28.         test eax,eax
  29.         jnz error_for_file_size
  30.  
  31.         mov eax,[buffer_for_info+32] ;file size
  32.         ret
  33.  
  34.         error_for_file_size:
  35.         neg eax
  36.  
  37.         ret
  38. endp
  39.  
  40.  
  41. align 4
  42. proc _ksys_readfile stdcall,filename:dword,position:dword,sizeblock:dword,buffer:dword
  43.  
  44.         xor eax,eax
  45.         mov ebx,[position]
  46.         mov ecx,[sizeblock]
  47.         mov edx,[buffer]
  48.         mov esi,[filename]
  49.         mov [fileinfo.subproc],eax
  50.         mov [fileinfo.offset_l],ebx
  51.         mov [fileinfo.offset_h],eax
  52.         mov [fileinfo.size],ecx
  53.         mov [fileinfo.data],edx
  54.         mov [fileinfo.letter],al
  55.         mov [fileinfo.filename],esi
  56.  
  57.         mov eax,70
  58.         mov ebx,fileinfo
  59.         int 0x40
  60.  
  61.         ret
  62. endp
  63.  
  64. align 4
  65. proc _ksys_rewritefile stdcall,filename:dword,sizeblock:dword,data_write:dword
  66.  
  67.         xor eax,eax
  68.         mov ebx,[sizeblock]
  69.         mov ecx,[data_write]
  70.         mov edx,[filename]
  71.         mov [fileinfo.subproc],dword 2
  72.         mov [fileinfo.offset_l],eax
  73.         mov [fileinfo.offset_h],eax
  74.         mov [fileinfo.size],ebx
  75.         mov [fileinfo.data],ecx
  76.         mov [fileinfo.letter],al
  77.         mov [fileinfo.filename],edx
  78.  
  79.         mov eax,70
  80.         mov ebx,fileinfo
  81.         int 0x40
  82.  
  83.         ret
  84. endp
  85.  
  86. align 4
  87. proc _ksys_appendtofile stdcall,filename:dword,pos:dword,sizeblock:dword,data_append:dword
  88.  
  89.         xor eax,eax
  90.         mov ebx,[pos]
  91.         mov ecx,[sizeblock]
  92.         mov edx,[data_append]
  93.         mov esi,[filename]
  94.         mov [fileinfo.subproc],dword 3
  95.         mov [fileinfo.offset_l],ebx
  96.         mov [fileinfo.offset_h],eax
  97.         mov [fileinfo.size],ecx
  98.         mov [fileinfo.data],edx
  99.         mov [fileinfo.letter],al
  100.         mov [fileinfo.filename],esi
  101.  
  102.         mov eax,70
  103.         mov ebx,fileinfo
  104.         int 0x40
  105.  
  106.         ret
  107. endp
  108.  
  109. struc FILEIO
  110. {
  111.  .subproc          rd 1
  112.  .offset_l         rd 1
  113.  .offset_h         rd 1
  114.  .size             rd 1
  115.  .data             rd 1
  116.  .letter           rb 1
  117.  .filename         rd 1
  118. }
  119.  
  120. fileinfo           FILEIO
  121. buffer_for_info    rd 11
  122.