2007-08-24 21:49:07 +02:00
|
|
|
format ELF
|
|
|
|
|
|
|
|
section '.text' executable
|
|
|
|
|
|
|
|
include 'proc32.inc'
|
|
|
|
public _ksys_get_filesize
|
|
|
|
public _ksys_readfile
|
|
|
|
public _ksys_rewritefile
|
|
|
|
public _ksys_appendtofile
|
|
|
|
|
|
|
|
align 4
|
|
|
|
proc _ksys_get_filesize stdcall, filename:dword
|
|
|
|
|
|
|
|
xor eax,eax
|
|
|
|
mov ebx,[filename]
|
|
|
|
mov [fileinfo.subproc],dword 5
|
|
|
|
mov [fileinfo.offset_l],eax
|
|
|
|
mov [fileinfo.offset_h],eax
|
|
|
|
mov [fileinfo.size],eax
|
|
|
|
mov [fileinfo.data],dword buffer_for_info
|
|
|
|
mov [fileinfo.letter],al
|
|
|
|
mov [fileinfo.filename],ebx
|
|
|
|
|
|
|
|
mov eax,70
|
|
|
|
mov ebx,fileinfo
|
|
|
|
int 0x40
|
|
|
|
|
|
|
|
test eax,eax
|
|
|
|
jnz error_for_file_size
|
|
|
|
|
2018-03-05 18:53:31 +01:00
|
|
|
mov eax,[buffer_for_info+32] ;file size
|
|
|
|
ret
|
2007-08-24 21:49:07 +02:00
|
|
|
|
|
|
|
error_for_file_size:
|
2018-03-05 18:53:31 +01:00
|
|
|
neg eax
|
2007-08-24 21:49:07 +02:00
|
|
|
|
|
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
|
|
align 4
|
2018-03-12 21:41:06 +01:00
|
|
|
proc _ksys_readfile stdcall,filename:dword,position:dword,sizeblock:dword,buffer:dword, preadbytes:dword
|
2007-08-24 21:49:07 +02:00
|
|
|
|
|
|
|
xor eax,eax
|
|
|
|
mov ebx,[position]
|
|
|
|
mov ecx,[sizeblock]
|
|
|
|
mov edx,[buffer]
|
|
|
|
mov esi,[filename]
|
|
|
|
mov [fileinfo.subproc],eax
|
|
|
|
mov [fileinfo.offset_l],ebx
|
|
|
|
mov [fileinfo.offset_h],eax
|
|
|
|
mov [fileinfo.size],ecx
|
|
|
|
mov [fileinfo.data],edx
|
|
|
|
mov [fileinfo.letter],al
|
|
|
|
mov [fileinfo.filename],esi
|
|
|
|
|
|
|
|
mov eax,70
|
|
|
|
mov ebx,fileinfo
|
|
|
|
int 0x40
|
|
|
|
|
2018-03-12 21:41:06 +01:00
|
|
|
mov esi, [preadbytes]
|
|
|
|
mov [esi], ebx
|
|
|
|
|
2007-08-24 21:49:07 +02:00
|
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
align 4
|
|
|
|
proc _ksys_rewritefile stdcall,filename:dword,sizeblock:dword,data_write:dword
|
|
|
|
|
|
|
|
xor eax,eax
|
|
|
|
mov ebx,[sizeblock]
|
|
|
|
mov ecx,[data_write]
|
|
|
|
mov edx,[filename]
|
|
|
|
mov [fileinfo.subproc],dword 2
|
|
|
|
mov [fileinfo.offset_l],eax
|
|
|
|
mov [fileinfo.offset_h],eax
|
|
|
|
mov [fileinfo.size],ebx
|
|
|
|
mov [fileinfo.data],ecx
|
|
|
|
mov [fileinfo.letter],al
|
|
|
|
mov [fileinfo.filename],edx
|
|
|
|
|
|
|
|
mov eax,70
|
|
|
|
mov ebx,fileinfo
|
|
|
|
int 0x40
|
|
|
|
|
|
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
align 4
|
|
|
|
proc _ksys_appendtofile stdcall,filename:dword,pos:dword,sizeblock:dword,data_append:dword
|
|
|
|
|
|
|
|
xor eax,eax
|
|
|
|
mov ebx,[pos]
|
|
|
|
mov ecx,[sizeblock]
|
|
|
|
mov edx,[data_append]
|
|
|
|
mov esi,[filename]
|
|
|
|
mov [fileinfo.subproc],dword 3
|
|
|
|
mov [fileinfo.offset_l],ebx
|
|
|
|
mov [fileinfo.offset_h],eax
|
|
|
|
mov [fileinfo.size],ecx
|
|
|
|
mov [fileinfo.data],edx
|
|
|
|
mov [fileinfo.letter],al
|
|
|
|
mov [fileinfo.filename],esi
|
|
|
|
|
|
|
|
mov eax,70
|
|
|
|
mov ebx,fileinfo
|
|
|
|
int 0x40
|
|
|
|
|
|
|
|
ret
|
|
|
|
endp
|
|
|
|
|
|
|
|
struc FILEIO
|
|
|
|
{
|
|
|
|
.subproc rd 1
|
|
|
|
.offset_l rd 1
|
|
|
|
.offset_h rd 1
|
|
|
|
.size rd 1
|
|
|
|
.data rd 1
|
|
|
|
.letter rb 1
|
|
|
|
.filename rd 1
|
|
|
|
}
|
|
|
|
|
|
|
|
fileinfo FILEIO
|
|
|
|
buffer_for_info rd 11
|