/programs/develop/metcc/trunk/libc/mesys/_mesys.asm |
---|
0,0 → 1,156 |
format ELF |
section '.text' executable |
public _msys_draw_window |
_msys_draw_window: |
;arg1 - xcoord |
;arg2 - ycoord |
;arg3 - xsize |
;arg4 - ysize |
;arg5 - workcolor |
;arg6 - type |
;arg7 - captioncolor |
;arg8 - windowtype |
;arg9 - bordercolor |
push ebp |
mov ebp,esp |
push ebx esi edi |
mov ebx,[ebp+8] |
shl ebx,16 |
mov bx,[ebp+16] |
mov ecx,[ebp+12] |
shl ecx,16 |
mov cx,[ebp+20] |
mov edx,[ebp+28] |
shl edx,24 |
add edx,[ebp+24] |
mov esi,[ebp+36] |
shl esi,24 |
add esi,[ebp+32] |
mov edi,[ebp+40] |
xor eax,eax |
int 0x40 |
pop edi esi ebx |
pop ebp |
ret |
public _msys_read_file |
_msys_read_file: |
;arg1 - file name |
;arg2 - file offset |
;arg3 - size to read |
;arg4 - data |
;arg5 - temp buffer |
;arg6 - file size |
push ebp |
mov ebp,esp |
xor eax,eax |
mov [file_struct.operation],eax |
mov eax,[ebp+12] |
mov [file_struct.offset],eax |
mov eax,[ebp+16] |
mov [file_struct.offset],eax |
mov eax,[ebp+20] |
mov [file_struct.offset],eax |
mov [file_struct.temp_buffer],temp_buffer |
mov edx,[ebp+8] |
call copy_file_name |
push ebx |
mov ebx,file_struct |
mov eax,58 |
int 0x40 |
mov ecx,[ebp+28] |
test ecx,ecx |
jz .no_file_size |
mov [ecx],ebx |
.no_file_size: |
pop ebx |
pop ebp |
ret |
copy_file_name: |
push esi edi |
cld |
mov edi,edx |
xor eax,eax |
xor ecx,ecx |
dec ecx |
repnz scasb |
not ecx |
mov edi,file_struct.path |
mov esi,edx |
rep movsb |
pop edi esi |
ret |
public _msys_write_file |
_msys_write_file: |
;arg1 - file name |
;arg2 - size |
;arg3 - data |
push ebp |
mov ebp,esp |
xor eax,eax |
mov [file_struct.offset],eax |
inc eax |
mov [file_struct.operation],eax |
mov eax,[ebp+12] |
mov [file_struct.size],eax |
mov eax,[ebp+16] |
mov [file_struct.data],eax |
mov [file_struct.temp_buffer],temp_buffer |
mov edx,[ebp+8] |
call copy_file_name |
push ebx |
mov eax,58 |
mov ebx,file_struct |
int 0x40 |
pop ebx |
pop ebp |
ret |
public _msys_run_program |
_msys_run_program: |
;arg1 - program name |
;arg2 - parameters |
push ebp |
mov ebp,esp |
mov [file_struct.operation],16 |
xor eax,eax |
mov [file_struct.offset],eax |
mov [file_struct.data],eax |
mov eax,[ebp+12] |
mov [file_struct.param],eax |
mov [file_struct.temp_buffer],temp_buffer; |
mov edx,[ebp+8] |
call copy_file_name |
push ebx |
mov eax,58 |
mov ebx,file_struct |
int 0x40 |
pop ebx |
pop ebp |
ret |
public _msys_debug_out |
_msys_debug_out: |
;arg1 - char to out |
push ebx |
mov ecx,[esp+8] |
mov ebx,1 |
mov eax,63 |
int 0x40 |
pop ebx |
ret |
section '.data' writeable |
section '.bss' writeable |
file_struct: |
.operation rd 1 |
.offset rd 1 |
.param: |
.size rd 1 |
.data rd 1 |
.temp_buffer rd 1 |
.path rb 1024 |
temp_buffer rb 4096 |
/programs/develop/metcc/trunk/libc/mesys/file_58.asm |
---|
0,0 → 1,108 |
format ELF |
include "public_stdcall.inc" |
section '.text' executable |
public_stdcall _msys_read_file,20 |
;arg1 - file name |
;arg2 - file offset |
;arg3 - size to read |
;arg4 - data |
;arg5 - file size |
push ebp |
mov ebp,esp |
xor eax,eax |
mov [file_struct.operation],eax |
mov eax,[ebp+12] |
mov [file_struct.offset],eax |
mov eax,[ebp+16] |
mov [file_struct.size],eax |
mov eax,[ebp+20] |
mov [file_struct.data],eax |
mov [file_struct.temp_buffer],temp_buffer |
mov edx,[ebp+8] |
call copy_file_name |
push ebx |
mov ebx,file_struct |
mov eax,58 |
int 0x40 |
mov ecx,[ebp+24] |
test ecx,ecx |
jz .no_file_size |
mov [ecx],ebx |
.no_file_size: |
pop ebx |
pop ebp |
ret 20 |
copy_file_name: |
push esi edi |
cld |
mov edi,edx |
xor eax,eax |
xor ecx,ecx |
dec ecx |
repnz scasb |
not ecx |
mov edi,file_struct.path |
mov esi,edx |
rep movsb |
pop edi esi |
ret |
public_stdcall _msys_write_file,12 |
;arg1 - file name |
;arg2 - size |
;arg3 - data |
push ebp |
mov ebp,esp |
xor eax,eax |
mov [file_struct.offset],eax |
inc eax |
mov [file_struct.operation],eax |
mov eax,[ebp+12] |
mov [file_struct.size],eax |
mov eax,[ebp+16] |
mov [file_struct.data],eax |
mov [file_struct.temp_buffer],temp_buffer |
mov edx,[ebp+8] |
call copy_file_name |
push ebx |
mov eax,58 |
mov ebx,file_struct |
int 0x40 |
pop ebx |
pop ebp |
ret 12 |
public_stdcall _msys_run_program,8 |
;arg1 - program name |
;arg2 - parameters |
push ebp |
mov ebp,esp |
mov [file_struct.operation],16 |
xor eax,eax |
mov [file_struct.offset],eax |
mov [file_struct.data],eax |
mov eax,[ebp+12] |
mov [file_struct.param],eax |
mov [file_struct.temp_buffer],temp_buffer; |
mov edx,[ebp+8] |
call copy_file_name |
push ebx |
mov eax,58 |
mov ebx,file_struct |
int 0x40 |
pop ebx |
pop ebp |
ret 8 |
section '.bss' writeable |
file_struct: |
.operation rd 1 |
.offset rd 1 |
.param: |
.size rd 1 |
.data rd 1 |
.temp_buffer rd 1 |
.path rb 1024 |
temp_buffer rb 4096 |
/programs/develop/metcc/trunk/libc/string/is.c |
---|
1,5 → 1,5 |
#include "ctype.h" |
int __is[128] = { |
char __is[128] = { |
0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, |
0x004, 0x104, 0x104, 0x104, 0x104, 0x104, 0x004, 0x004, |
0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, |
/programs/develop/metcc/trunk/libc/include/mesys.h |
---|
17,8 → 17,7 |
int captioncolor,int windowtype,int bordercolor); |
extern int stdcall _msys_read_file(char* filename,int fileoffset,int size,void* data, |
int* filesize); |
extern int stdcall _msys_write_file(char* filename,int fileoffset, int size, void* data); |
extern int stdcall _msys_create_file(char* filename); |
extern int stdcall _msys_write_file(char* filename,int size,void* data); |
extern void stdcall _msys_run_program(char* filename,char* parameters); |
extern void stdcall _msys_debug_out(int c); |
extern void debug_out_str(char* str); |
/programs/develop/metcc/trunk/libc/file/fclose.c |
---|
3,7 → 3,7 |
int fclose(FILE* file) |
{ |
int res; |
res=_msys_write_file(file->filename, 0, file->filesize, file->buffer); |
res=_msys_write_file(file->filename,file->filesize,file->buffer); |
free(file->buffer); |
free(file); |
return res; |
/programs/develop/metcc/trunk/libc/file/fflush.c |
---|
3,5 → 3,5 |
{ |
if ((file->mode & 3)==FILE_OPEN_READ) |
return 0; |
return _msys_file_write(file->filename, 0, file->filesize, file->buffer) ? EOF : 0; |
return _msys_file_write(file->filename,file->filesize,file->buffer) ? EOF : 0; |
} |
/programs/develop/metcc/trunk/libc/file/fopen.c |
---|
48,7 → 48,7 |
free(res); |
return 0; |
} |
res=_msys_create_file(filename); |
res=_msys_write_file(filename,0,0); |
if (res!=0) |
{ |
free(res); |