Subversion Repositories Kolibri OS

Rev

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

  1. format ELF
  2. section '.text' executable
  3. public _msys_read_file
  4. _msys_read_file:
  5. ;arg1 - file name
  6. ;arg2 - file offset
  7. ;arg3 - size to read
  8. ;arg4 - data
  9. ;arg5 - file size
  10.   push  ebp
  11.   mov   ebp,esp
  12.   xor   eax,eax
  13.   mov   [file_struct.operation],eax
  14.   mov   eax,[ebp+12]
  15.   mov   [file_struct.offset],eax
  16.   mov   eax,[ebp+16]
  17.   mov   [file_struct.offset],eax
  18.   mov   eax,[ebp+20]
  19.   mov   [file_struct.offset],eax
  20.   mov   [file_struct.temp_buffer],temp_buffer
  21.   mov   edx,[ebp+8]
  22.   call  copy_file_name
  23.   push  ebx
  24.   mov   ebx,file_struct
  25.   mov   eax,58
  26.   int   0x40
  27.   mov   ecx,[ebp+24]
  28.   test  ecx,ecx
  29.   jz    .no_file_size
  30.   mov   [ecx],ebx
  31. .no_file_size:
  32.   pop   ebx
  33.   pop   ebp
  34.   ret   20
  35.  
  36. copy_file_name:
  37.   push  esi edi
  38.   cld
  39.   mov   edi,edx
  40.   xor   eax,eax
  41.   xor   ecx,ecx
  42.   dec   ecx
  43.   repnz scasb
  44.   not   ecx
  45.   mov   edi,file_struct.path
  46.   mov   esi,edx
  47.   rep   movsb
  48.   pop   edi esi
  49.   ret
  50.  
  51. public _msys_write_file
  52. _msys_write_file:
  53. ;arg1 - file name
  54. ;arg2 - size
  55. ;arg3 - data
  56.   push  ebp
  57.   mov   ebp,esp
  58.   xor   eax,eax
  59.   mov   [file_struct.offset],eax
  60.   inc   eax
  61.   mov   [file_struct.operation],eax
  62.   mov   eax,[ebp+12]
  63.   mov   [file_struct.size],eax
  64.   mov   eax,[ebp+16]
  65.   mov   [file_struct.data],eax
  66.   mov   [file_struct.temp_buffer],temp_buffer
  67.   mov   edx,[ebp+8]
  68.   call  copy_file_name
  69.   push  ebx
  70.   mov   eax,58
  71.   mov   ebx,file_struct
  72.   int   0x40
  73.   pop   ebx
  74.   pop   ebp
  75.   ret   12
  76.  
  77. public _msys_run_program
  78. _msys_run_program:
  79. ;arg1 - program name
  80. ;arg2 - parameters
  81.   push  ebp
  82.   mov   ebp,esp
  83.   mov   [file_struct.operation],16
  84.   xor   eax,eax
  85.   mov   [file_struct.offset],eax
  86.   mov   [file_struct.data],eax
  87.   mov   eax,[ebp+12]
  88.   mov   [file_struct.param],eax
  89.   mov   [file_struct.temp_buffer],temp_buffer;
  90.   mov   edx,[ebp+8]
  91.   call  copy_file_name
  92.   push  ebx
  93.   mov   eax,58
  94.   mov   ebx,file_struct
  95.   int   0x40
  96.   pop   ebx
  97.   pop   ebp
  98.   ret   8
  99. section '.bss' writeable
  100. file_struct:
  101. .operation   rd 1
  102. .offset      rd 1
  103. .param:
  104. .size        rd 1
  105. .data        rd 1
  106. .temp_buffer rd 1
  107. .path        rb 1024
  108.   temp_buffer rb 4096
  109.  
  110.  
  111.