/kernel/trunk/core/conf_lib.inc |
---|
10,7 → 10,7 |
conf_file_loaded: db 0 ; ä« £ § £à㧪¨ ª®ä¨£ |
conf_path_sect: db 'path',0 |
conf_fname db '%sys%/sys.conf',0 |
conf_fname db '/%sys%/sys.conf',0 |
/kernel/trunk/core/dll.inc |
---|
526,10 → 526,12 |
lea edi, [eax+ebx] ;cleanup remain space |
mov ecx, 4096 ;from file end |
and ebx, 4095 |
jz @f |
sub ecx, ebx |
xor eax, eax |
cld |
rep stosb |
@@: |
mov ebx, [file_size] |
pop eax |
ret |
696,16 → 698,16 |
exports dd ? ;fake exports table |
dd ? |
file_name rb 14+16+4+1 ; '/rd/1/drivers/<up-to-16-chars>.obj' |
file_name rb 15+16+4+1 ; '/%sys%/drivers/<up-to-16-chars>.obj' |
endl |
lea edx, [file_name] |
mov dword [edx], '%sys' |
mov dword [edx+4], '%/dr' |
mov dword [edx+8], 'iver' |
mov word [edx+12], 's/' |
mov dword [edx], '/%sy' |
mov dword [edx+4], 's%/d' |
mov dword [edx+8], 'rive' |
mov dword [edx+12], 'rs/' |
mov esi, [driver_name] |
lea edi, [edx+14] |
lea edi, [edx+15] |
mov ecx, 16 |
@@: |
lodsb |
/kernel/trunk/core/ext_lib.inc |
---|
15,7 → 15,6 |
common |
dd 0 |
forward |
align 4 |
__#name#_library_name__ db fname,0 |
} |
29,18 → 28,17 |
common |
dd 0 |
forward |
align 4 |
__#name#_import_name__ db sname,0 |
} |
macro export [name,sname] |
{ |
align 4 |
forward |
dd __#name#_export_name__,name |
common |
dd 0 |
forward |
align 4 |
__#name#_export_name__ db sname,0 |
} |
159,7 → 157,9 |
mov edi,s_libname |
mov esi,sys_path |
mov al, '/' |
stosb |
mov esi,sysdir_path |
@@: lodsb |
stosb |
or al,al |
306,4 → 306,6 |
ret |
endp |
uglobal |
s_libname db 64 dup (0) |
endg |
/kernel/trunk/core/sys32.inc |
---|
646,10 → 646,15 |
mov ebx, [.slot] |
shl ebx, 8 |
push ebx |
mov ebx,[SLOT_BASE+ebx+APPDATA.pl0_stack] |
stdcall kernel_free, ebx |
pop ebx |
mov ebx,[SLOT_BASE+ebx+APPDATA.cur_dir] |
stdcall kernel_free, ebx |
mov edi, [.slot] |
shl edi,8 |
add edi,SLOT_BASE |
/kernel/trunk/core/syscall.inc |
---|
169,7 → 169,7 |
dd undefined_syscall ; 27-reserved |
dd sys_sb16II ; 28-SetSb16 |
dd sys_date ; 29-GetDate |
dd undefined_syscall ; 30-reserved |
dd sys_current_directory ; 30-Get/SetCurrentDirectory |
dd undefined_syscall ; 31-reserved |
dd syscall_delramdiskfile ; 32-DelRamdiskFile |
dd syscall_writeramdiskfile; 33-WriteRamdiskFile |
/kernel/trunk/core/taskman.inc |
---|
44,6 → 44,10 |
rep stosd |
} |
fs_execute_from_sysdir: |
xor ebx, ebx |
xor edx, edx |
mov esi, sysdir_path |
align 4 |
proc fs_execute |
80,10 → 84,34 |
; [ebp] pointer to filename |
lea eax, [filename] |
mov dword [eax+1020],0 ;force terminate |
;string |
stdcall strncpy, eax, [ebp], 1023 |
lea edi, [filename] |
lea ecx, [edi+1024] |
mov al, '/' |
stosb |
@@: |
cmp edi, ecx |
jae .bigfilename |
lodsb |
stosb |
test al, al |
jnz @b |
mov esi, [ebp] |
test esi, esi |
jz .namecopied |
mov byte [edi-1], '/' |
@@: |
cmp edi, ecx |
jae .bigfilename |
lodsb |
stosb |
test al, al |
jnz @b |
jmp .namecopied |
.bigfilename: |
popad |
mov eax, -ERROR_FILE_NOT_FOUND |
ret |
.namecopied: |
mov [cmdline], ebx |
test ebx, ebx |
688,7 → 716,7 |
mov [slot], eax |
mov [buff], ebx |
mov [r_count], ecx |
and [r_count], 0 |
mov [tmp_r_cnt], ecx |
mov [offset], edx |
724,6 → 752,7 |
mov edi, [buff] |
mov edx, ecx |
rep movsb |
add [r_count], edx |
add [offset], edx |
sub [tmp_r_cnt], edx |
754,7 → 783,7 |
mov [slot], eax |
mov [buff], ebx |
mov [w_count], ecx |
and [w_count], 0 |
mov [tmp_w_cnt], ecx |
mov [offset], edx |
791,6 → 820,7 |
mov edx, ecx |
rep movsb |
add [w_count], edx |
add [offset], edx |
sub [tmp_w_cnt], edx |
jnz .read_mem |
964,6 → 994,16 |
mov eax, [pl0_stack] |
mov [SLOT_BASE+APPDATA.pl0_stack+ebx],eax |
push ebx |
stdcall kernel_alloc, 0x1000 |
pop ebx |
mov esi,[current_slot] |
mov esi,[esi+APPDATA.cur_dir] |
mov ecx,0x1000/4 |
mov edi,eax |
mov [ebx+SLOT_BASE+APPDATA.cur_dir],eax |
rep movsd |
shr ebx,3 |
mov eax, new_app_base |
mov dword [CURRENT_TASK+ebx+0x10],eax |