* efficient handling of file names substitution

* current directory support; new sysfunction 30
* fixed bug in load_file with files of size divisible by page size

git-svn-id: svn://kolibrios.org@521 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Evgeny Grechnikov (Diamond)
2007-05-24 11:27:05 +00:00
parent 23bdfe5dc4
commit 4f326f77c6
23 changed files with 618 additions and 847 deletions

View File

@@ -533,6 +533,8 @@ high_code:
include 'detect/disks.inc'
;!!!!!!!!!!!!!!!!!!!!!!!!!!
call Parser_params
; READ RAMDISK IMAGE FROM HD
;!!!!!!!!!!!!!!!!!!!!!!!
@@ -549,8 +551,6 @@ include 'boot/rdload.inc'
include 'vmodeld.inc'
;!!!!!!!!!!!!!!!!!!!!!!!
call Parser_params
mov ax,[OS_BASE+0x10000+bx_from_load]
cmp ax,'r1' ; <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
je no_lib_load
@@ -689,6 +689,8 @@ no_lib_load:
mov dword [SLOT_BASE+256+APPDATA.fd_obj], ebx
mov dword [SLOT_BASE+256+APPDATA.bk_obj], ebx
mov dword [SLOT_BASE+256+APPDATA.cur_dir], sysdir_path
; task list
mov [CURRENT_TASK],dword 1
mov [TASK_COUNT],dword 1
@@ -774,72 +776,19 @@ no_lib_load:
; LOAD FIRST APPLICATION
cli
if 0
cmp byte [BOOT_VAR+0x9030],1
jne no_load_vrr_m
stdcall kernel_alloc, 0x100
push eax
mov ebx,eax
stdcall full_file_name,vrr_m,eax
mov ebp, eax
xor ebx, ebx
xor edx, edx
call fs_execute
pop ebx
push eax
stdcall kernel_free, ebx
pop eax
mov ebp, vrr_m
call fs_execute_from_sysdir
cmp eax,2 ; if vrr_m app found (PID=2)
je first_app_found
no_load_vrr_m:
stdcall kernel_alloc, 0x100
push eax
mov ebx,eax
stdcall full_file_name,firstapp,eax
mov ebp, eax
xor ebx, ebx
xor edx, edx
call fs_execute
pop ebx
push eax
stdcall kernel_free, ebx
pop eax
cmp eax,2 ; continue if a process has been loaded
je first_app_found
mov eax, 0xDEADBEEF ; otherwise halt
hlt
first_app_found:
else
sub esp, 0x100
cmp byte [BOOT_VAR+0x9030],1
jne no_load_vrr_m
mov ebp, esp
stdcall full_file_name,vrr_m,ebp
xor ebx, ebx
xor edx, edx
call fs_execute
cmp eax,2 ; if vrr_m app found (PID=2)
je first_app_found
no_load_vrr_m:
mov ebp, esp
stdcall full_file_name,firstapp,ebp
xor ebx, ebx
xor edx, edx
call fs_execute
mov ebp, firstapp
call fs_execute_from_sysdir
cmp eax,2 ; continue if a process has been loaded
je first_app_found
@@ -849,9 +798,6 @@ no_load_vrr_m:
first_app_found:
add esp, 0x100
end if
cli
;mov [TASK_COUNT],dword 2
@@ -3462,7 +3408,7 @@ checkpixel:
ret
iglobal
cpustring db '%sys%/CPU',0
cpustring db 'CPU',0
endg
uglobal
@@ -3477,21 +3423,8 @@ checkmisc:
cmp [ctrl_alt_del], 1
jne nocpustart
stdcall kernel_alloc, 0x100
push eax
mov ebx,eax
stdcall full_file_name,cpustring,eax
mov ebp, eax
xor ebx, ebx
xor edx, edx
call fs_execute
pop ebx
push eax
stdcall kernel_free, ebx
pop eax
mov ebp, cpustring
call fs_execute_from_sysdir
mov [ctrl_alt_del], 0