Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 176 → Rev 182

/programs/develop/fasm/trunk/system.inc
4,12 → 4,36
;
; MenuetOS system.inc by VT
 
file_info_open: dd 0,0,0xffffff,0x20000,0xf0000
struc FILEIO
{ .cmd dd ?
.offset dd ?
dd ?
.count dd ?
.buff dd ?
db ?
.name dd ?
};
 
struc FILEINFO
{ .attr dd ?
.flags dd ?
.cr_time dd ?
.cr_date dd ?
.acc_time dd ?
.acc_date dd ?
.mod_time dd ?
.mod_date dd ?
.size dd ?
}
 
 
 
;file_info_open: dd 0,0,0xffffff,0x20000,0xf0000
fullpath_open: ; db '/RD/1/EXAMPLE.ASM'
times MAX_PATH db 0
 
 
file_info_write: dd 1,0,0,0,0xf0000
;file_info_write: dd 1,0,0,0,0xf0000
fullpath_write:; db '/RD/1/EXAMPLE'
times MAX_PATH db 0
 
63,42 → 87,112
; stc
ret
 
 
create:
call make_fullpaths
ret
 
 
open:
; call make_fullpaths
 
;; mov eax,fullpath_open
;; DEBUGF '"%s"\n',eax
 
; mov dword[file_info_open+8],-1
; mcall 58,file_info_open
; or eax,eax ; found
; jz @f
; cmp eax,6
; jne file_error
;@@: mov [filesize],ebx
; clc
; ret
;file_error:
; stc
; ret
 
call make_fullpaths
 
; mov eax,fullpath_open
; DEBUGF '"%s"\n',eax
xor eax, eax
mov [fileio.cmd], 5
mov [fileio.offset], eax
mov [fileio.offset+4], eax
mov [fileio.count], eax
mov [fileio.buff], fileinfo
mov byte [fileio.buff+4], al
mov [fileio.name], fullpath_open
 
mov dword[file_info_open+8],-1
mcall 58,file_info_open
or eax,eax ; found
jz @f
cmp eax,6
jne file_error
@@: mov [filesize],ebx
mov eax, 70
mov ebx, fileio
int 0x40
test eax, eax
jnz .fail
mov ebx, [fileinfo.size]
mov [filesize],ebx
clc
ret
file_error:
.fail:
stc
ret
 
create:
call make_fullpaths
read:
; pusha
; mov edi,edx
; mov esi,[filepos]
; add esi,0x20000
; cld
; rep movsb
; popa
;; ret
 
xor eax, eax
mov [fileio.cmd], eax
mov [fileio.offset], eax
mov [fileio.offset+4], eax
mov [fileio.count], ecx
mov [fileio.buff], edx
mov byte [fileio.buff+4], al
mov [fileio.name], fullpath_open
mov eax, 70
mov ebx, fileio
int 0x40
close:
ret
 
 
; ebx file handle
; ecx count of bytes to write
; edx pointer to buffer
write:
pusha
mov [file_info_write+8],ecx
mov [file_info_write+12],edx
mov [filesize],edx
mov eax,58
mov ebx,file_info_write
; pusha
; mov [file_info_write+8],ecx
; mov [file_info_write+12],edx
; mov [filesize],edx
; mov eax,58
; mov ebx,file_info_write
; int 0x40
; popa
; ret
 
xor eax, eax
mov [fileio.cmd], 2
mov [fileio.offset], eax
mov [fileio.offset+4], eax
mov [fileio.count], ecx
mov [fileio.buff], edx
mov byte [fileio.buff+4], al
mov [fileio.name], fullpath_write
mov eax, 70
mov ebx, fileio
int 0x40
popa
test eax, eax
jnz .fail
clc
ret
.fail:
stc
ret
 
make_fullpaths:
pusha
179,17 → 273,7
popa
ret
 
read:
pusha
mov edi,edx
mov esi,[filepos]
add esi,0x20000
cld
rep movsb
popa
; ret
 
close: ret
 
lseek:
cmp al,0
206,8 → 290,6
mov [filepos],eax
ret
 
 
 
display_character:
pusha
cmp [_mode],NORMAL_MODE
426,6 → 508,10
call display_string
jmp exit_program
 
align 4
fileio FILEIO
align 4
fileinfo FILEINFO
 
character db ?,0
bytes_count dd ?