Subversion Repositories Kolibri OS

Rev

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

  1. format COFF
  2.  
  3. section '.text' code
  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 uses ebx, 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.  
  33.         error_for_file_size:
  34.  
  35.         ret
  36. endp
  37.  
  38.  
  39. align 4
  40. proc __ksys_readfile stdcall uses ebx,filename:dword,position:dword,sizeblock:dword,buffer:dword
  41.  
  42.         xor eax,eax
  43.         mov ebx,[position]
  44.         mov ecx,[sizeblock]
  45.         mov edx,[buffer]
  46.         mov [fileinfo.subproc],eax
  47.         mov [fileinfo.offset_l],ebx
  48.         mov [fileinfo.offset_h],eax
  49.         mov [fileinfo.size],ecx
  50.         mov ecx,[filename]
  51.         mov [fileinfo.data],edx
  52.         mov [fileinfo.letter],al
  53.         mov [fileinfo.filename],ecx
  54.  
  55.         mov eax,70
  56.         mov ebx,fileinfo
  57.         int 0x40
  58.  
  59.         ret
  60. endp
  61.  
  62. align 4
  63. proc __ksys_rewritefile stdcall uses ebx,filename:dword,sizeblock:dword,data_write:dword
  64.  
  65.         xor eax,eax
  66.         mov ebx,[sizeblock]
  67.         mov ecx,[data_write]
  68.         mov edx,[filename]
  69.         mov [fileinfo.subproc],dword 2
  70.         mov [fileinfo.offset_l],eax
  71.         mov [fileinfo.offset_h],eax
  72.         mov [fileinfo.size],ebx
  73.         mov [fileinfo.data],ecx
  74.         mov [fileinfo.letter],al
  75.         mov [fileinfo.filename],edx
  76.  
  77.         mov eax,70
  78.         mov ebx,fileinfo
  79.         int 0x40
  80.  
  81.         ret
  82. endp
  83.  
  84. align 4
  85. proc __ksys_appendtofile stdcall uses ebx,filename:dword,pos:dword,sizeblock:dword,data_append:dword
  86.  
  87.         xor eax,eax
  88.         mov ebx,[pos]
  89.         mov ecx,[sizeblock]
  90.         mov edx,[data_append]
  91.         mov [fileinfo.subproc],dword 3
  92.         mov [fileinfo.offset_l],ebx
  93.         mov [fileinfo.offset_h],eax
  94.         mov [fileinfo.size],ecx
  95.         mov ecx,[filename]
  96.         mov [fileinfo.data],edx
  97.         mov [fileinfo.letter],al
  98.         mov [fileinfo.filename],ecx
  99.  
  100.         mov eax,70
  101.         mov ebx,fileinfo
  102.         int 0x40
  103.  
  104.         ret
  105. endp
  106.  
  107. struc FILEIO
  108. {
  109.  .subproc          rd 1
  110.  .offset_l         rd 1
  111.  .offset_h         rd 1
  112.  .size             rd 1
  113.  .data             rd 1
  114.  .letter           rb 1
  115.  .filename         rd 1
  116. }
  117.  
  118. fileinfo           FILEIO
  119. buffer_for_info    rd 11
  120.