forked from KolibriOS/kolibrios
Mario79 fixes:
Application can determine own path now. Some boot messages changed (it is version Kolibri 5.1.0 now). Some rd functions updated (thanks to michael). Switch to another bank-switching procedure. git-svn-id: svn://kolibrios.org@5 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
b420f2df50
commit
bc47ee30d7
@ -5,6 +5,82 @@
|
|||||||
;; Addings by M.Lisovin ;;
|
;; Addings by M.Lisovin ;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
; calculate fat chain
|
||||||
|
|
||||||
|
calculatefatchain:
|
||||||
|
|
||||||
|
pushad
|
||||||
|
|
||||||
|
mov esi,0x100000+512
|
||||||
|
mov edi,0x280000
|
||||||
|
|
||||||
|
fcnew:
|
||||||
|
mov eax,dword [esi]
|
||||||
|
mov ebx,dword [esi+4]
|
||||||
|
mov ecx,dword [esi+8]
|
||||||
|
mov edx,ecx
|
||||||
|
shr edx,4 ;8 ok
|
||||||
|
shr dx,4 ;7 ok
|
||||||
|
xor ch,ch
|
||||||
|
shld ecx,ebx,20 ;6 ok
|
||||||
|
shr cx,4 ;5 ok
|
||||||
|
shld ebx,eax,12
|
||||||
|
and ebx,0x0fffffff ;4 ok
|
||||||
|
shr bx,4 ;3 ok
|
||||||
|
shl eax,4
|
||||||
|
and eax,0x0fffffff ;2 ok
|
||||||
|
shr ax,4 ;1 ok
|
||||||
|
mov dword [edi],eax
|
||||||
|
add edi,4
|
||||||
|
mov dword [edi],ebx
|
||||||
|
add edi,4
|
||||||
|
mov dword [edi],ecx
|
||||||
|
add edi,4
|
||||||
|
mov dword [edi],edx
|
||||||
|
add edi,4
|
||||||
|
add esi,12
|
||||||
|
|
||||||
|
cmp edi,0x280000+2856*2 ;2849 clusters
|
||||||
|
jnz fcnew
|
||||||
|
|
||||||
|
popad
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
restorefatchain: ; restore fat chain
|
||||||
|
|
||||||
|
pushad
|
||||||
|
|
||||||
|
mov esi,0x280000
|
||||||
|
mov edi,0x100000+512
|
||||||
|
|
||||||
|
fcnew2:
|
||||||
|
mov eax,dword [esi]
|
||||||
|
mov ebx,dword [esi+4]
|
||||||
|
shl ax,4
|
||||||
|
shl eax,4
|
||||||
|
shl bx,4
|
||||||
|
shr ebx,4
|
||||||
|
shrd eax,ebx,8
|
||||||
|
shr ebx,8
|
||||||
|
mov dword [edi],eax
|
||||||
|
add edi,4
|
||||||
|
mov word [edi],bx
|
||||||
|
add edi,2
|
||||||
|
add esi,8
|
||||||
|
|
||||||
|
cmp edi,0x100000+512+4278 ;4274 bytes - all used FAT
|
||||||
|
jb fcnew2
|
||||||
|
|
||||||
|
mov esi,0x100000+512 ; duplicate fat chain
|
||||||
|
mov edi,0x100000+512+0x1200
|
||||||
|
mov ecx,1069 ;4274/4
|
||||||
|
cld
|
||||||
|
rep movsd
|
||||||
|
|
||||||
|
popad
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
ramdisk_free_space:
|
ramdisk_free_space:
|
||||||
;---------------------------------------------
|
;---------------------------------------------
|
||||||
@ -18,7 +94,7 @@ ramdisk_free_space:
|
|||||||
mov edi,0x280000 ;start of FAT
|
mov edi,0x280000 ;start of FAT
|
||||||
xor ax,ax ;Free cluster=0x0000 in FAT
|
xor ax,ax ;Free cluster=0x0000 in FAT
|
||||||
xor ebx,ebx ;counter
|
xor ebx,ebx ;counter
|
||||||
mov ecx,2847 ;2849 ;2849 clusters
|
mov ecx,2849 ;2849 clusters
|
||||||
cld
|
cld
|
||||||
rdfs1:
|
rdfs1:
|
||||||
repne scasw
|
repne scasw
|
||||||
@ -122,7 +198,7 @@ fileread:
|
|||||||
push edx
|
push edx
|
||||||
mov edx,ecx
|
mov edx,ecx
|
||||||
add edx,ebx
|
add edx,ebx
|
||||||
cmp edx,14 ;ebx+ecx=14
|
cmp edx,15 ;ebx+ecx=14+1
|
||||||
pushf
|
pushf
|
||||||
jbe fr_do1
|
jbe fr_do1
|
||||||
sub edx,14
|
sub edx,14
|
||||||
@ -136,7 +212,7 @@ fileread:
|
|||||||
rep movsd
|
rep movsd
|
||||||
popf
|
popf
|
||||||
pop edx
|
pop edx
|
||||||
; jae fr_do2
|
jae fr_do2
|
||||||
xor eax,eax ; ok read
|
xor eax,eax ; ok read
|
||||||
xor ebx,ebx
|
xor ebx,ebx
|
||||||
ret
|
ret
|
||||||
|
@ -46,9 +46,11 @@ d80x25: line_full_top
|
|||||||
line_space
|
line_space
|
||||||
line_space
|
line_space
|
||||||
line_space
|
line_space
|
||||||
line_space
|
; line_space
|
||||||
db 186,' Kolibri OS comes with ABSOLUTELY NO WARR'
|
db 186,' KolibriOS based on MenuetOS and comes with ABSOLUTELY '
|
||||||
db 'ANTY; See file COPYING for details ',186
|
db 'NO WARRANTY ',186
|
||||||
|
db 186,' See file COPYING for details '
|
||||||
|
db ' ',186
|
||||||
line_full_bottom
|
line_full_bottom
|
||||||
|
|
||||||
novesa db "Display: EGA/CGA",13,10,0
|
novesa db "Display: EGA/CGA",13,10,0
|
||||||
@ -78,7 +80,7 @@ gr_direct db 186," Use direct LFB writing? "
|
|||||||
;mem_model db 13,10,186," Motherboard memory [1-16 Mb / 2-32 Mb / "
|
;mem_model db 13,10,186," Motherboard memory [1-16 Mb / 2-32 Mb / "
|
||||||
; db "3-64Mb / 4-128 Mb / 5-256 Mb] ? ",0
|
; db "3-64Mb / 4-128 Mb / 5-256 Mb] ? ",0
|
||||||
bootlog db 13,10,186," After bootlog display [1-continue/2-pause] ? ",0
|
bootlog db 13,10,186," After bootlog display [1-continue/2-pause] ? ",0
|
||||||
bdev db 13,10,186
|
bdev db 186
|
||||||
db " Load ramdisk from [1-floppy; 2-C:\menuet.img (FAT32);"
|
db " Load ramdisk from [1-floppy; 2-C:\menuet.img (FAT32);"
|
||||||
db 13,10,186," "
|
db 13,10,186," "
|
||||||
db "3-use preloaded ram-image from kernel restart]: ",0
|
db "3-use preloaded ram-image from kernel restart]: ",0
|
||||||
|
@ -46,9 +46,11 @@ d80x25: line_full_top
|
|||||||
line_space
|
line_space
|
||||||
line_space
|
line_space
|
||||||
line_space
|
line_space
|
||||||
line_space
|
; line_space
|
||||||
db 186,' Kolibri OS ¥ ¯à¥¤®áâ ¢«ï¥â ¨ª ª¨å £ àa'
|
db 186,' Kolibri OS ®á®¢ Menuet OS ¨ ¥ ¯à¥¤®áâ ¢«ï¥â '
|
||||||
db '⨩; <20>®¤à®¡¥¥ - á¬. GNU.TXT ',186
|
db '¨ª ª¨å £ àa⨩. ',186
|
||||||
|
db 186,' <20>®¤à®¡¥¥ ᬮâà¨â¥ ä ©« GNU.TXT '
|
||||||
|
db ' ',186
|
||||||
line_full_bottom
|
line_full_bottom
|
||||||
|
|
||||||
novesa db "‚¨¤¥®ª àâ : EGA/CGA",13,10,0
|
novesa db "‚¨¤¥®ª àâ : EGA/CGA",13,10,0
|
||||||
|
@ -17,7 +17,7 @@ preboot_device db 0 ; boot device
|
|||||||
;;preboot_memory db 0 ; amount of memory
|
;;preboot_memory db 0 ; amount of memory
|
||||||
; (1-16Mb;2-32Mb;3-64Mb;4-128Mb;5-256Mb)
|
; (1-16Mb;2-32Mb;3-64Mb;4-128Mb;5-256Mb)
|
||||||
; !!!! 0 - autodetect !!!!
|
; !!!! 0 - autodetect !!!!
|
||||||
preboot_blogesc db 0 ; start immediately after bootlog
|
preboot_blogesc db 1 ; start immediately after bootlog
|
||||||
|
|
||||||
hdsysimage db 'MENUET IMG' ; load from
|
hdsysimage db 'MENUET IMG' ; load from
|
||||||
image_save db 'MENUET IMG' ; save to
|
image_save db 'MENUET IMG' ; save to
|
||||||
|
@ -63,6 +63,7 @@ new_start_application_floppy:
|
|||||||
;result:
|
;result:
|
||||||
; eax - pid of new process
|
; eax - pid of new process
|
||||||
; or 0 if call fails.
|
; or 0 if call fails.
|
||||||
|
mov [appl_path],edi
|
||||||
pushad
|
pushad
|
||||||
mov esi,new_process_loading
|
mov esi,new_process_loading
|
||||||
call sys_msg_board_str ;write to debug board
|
call sys_msg_board_str ;write to debug board
|
||||||
@ -95,13 +96,17 @@ new_start_application_floppy:
|
|||||||
rep stosd ;clean extended information about process
|
rep stosd ;clean extended information about process
|
||||||
|
|
||||||
;set new process name
|
;set new process name
|
||||||
mov eax,[esp+8]
|
xor eax,eax
|
||||||
|
mov [appl_path_size],eax
|
||||||
|
mov eax,[esp] ;+8]
|
||||||
.find_last_byte:
|
.find_last_byte:
|
||||||
cmp byte [eax],0
|
cmp byte [eax],0
|
||||||
jz .find_last_byte_end
|
jz .find_last_byte_end
|
||||||
inc eax
|
inc eax
|
||||||
|
inc [appl_path_size]
|
||||||
jmp .find_last_byte
|
jmp .find_last_byte
|
||||||
.find_last_byte_end:
|
.find_last_byte_end:
|
||||||
|
add [appl_path_size],24
|
||||||
sub eax,11 ;last 11 bytes = application name
|
sub eax,11 ;last 11 bytes = application name
|
||||||
; mov eax,[esp] ;eax - pointer to file name
|
; mov eax,[esp] ;eax - pointer to file name
|
||||||
mov ebx,[new_process_place]
|
mov ebx,[new_process_place]
|
||||||
@ -217,6 +222,8 @@ new_start_application_fl:
|
|||||||
;result:
|
;result:
|
||||||
; eax - pid of new process
|
; eax - pid of new process
|
||||||
; or 0 if call fails.
|
; or 0 if call fails.
|
||||||
|
mov [appl_path],edi
|
||||||
|
mov [appl_path_size],36
|
||||||
pushad
|
pushad
|
||||||
mov esi,new_process_loading
|
mov esi,new_process_loading
|
||||||
call sys_msg_board_str ;write to debug board
|
call sys_msg_board_str ;write to debug board
|
||||||
@ -406,6 +413,16 @@ new_start_application_fl:
|
|||||||
call write_process_memory ;copy parameters to new process address space
|
call write_process_memory ;copy parameters to new process address space
|
||||||
|
|
||||||
.no_command_line:
|
.no_command_line:
|
||||||
|
;******************************************************************
|
||||||
|
mov edx,[app_i_icon]
|
||||||
|
test edx,edx
|
||||||
|
jz .no_command_line_1 ;application don't need path of file
|
||||||
|
mov ebx,[appl_path]
|
||||||
|
mov ecx,[appl_path_size]
|
||||||
|
mov eax,[new_process_place]
|
||||||
|
call write_process_memory ;copy path of file to new process address space
|
||||||
|
.no_command_line_1:
|
||||||
|
;******************************************************************
|
||||||
mov ebx,[new_process_place]
|
mov ebx,[new_process_place]
|
||||||
mov eax,ebx
|
mov eax,ebx
|
||||||
shl ebx,5
|
shl ebx,5
|
||||||
@ -1130,6 +1147,7 @@ new_start_application_hd:
|
|||||||
;ebx - file name length
|
;ebx - file name length
|
||||||
;ecx - work area (kernel address)
|
;ecx - work area (kernel address)
|
||||||
;ebp - parameters
|
;ebp - parameters
|
||||||
|
mov [appl_path],edi
|
||||||
pushad
|
pushad
|
||||||
|
|
||||||
mov esi,new_process_loading
|
mov esi,new_process_loading
|
||||||
@ -1155,14 +1173,18 @@ new_start_application_hd:
|
|||||||
test eax,eax
|
test eax,eax
|
||||||
jz .failed
|
jz .failed
|
||||||
|
|
||||||
;write application name
|
;write application name
|
||||||
|
xor eax,eax
|
||||||
|
mov [appl_path_size],eax
|
||||||
mov eax,[esp+4]
|
mov eax,[esp+4]
|
||||||
.find_last_byte:
|
.find_last_byte:
|
||||||
cmp byte [eax],0
|
cmp byte [eax],0
|
||||||
jz .find_last_byte_end
|
jz .find_last_byte_end
|
||||||
inc eax
|
inc eax
|
||||||
|
inc [appl_path_size]
|
||||||
jmp .find_last_byte
|
jmp .find_last_byte
|
||||||
.find_last_byte_end:
|
.find_last_byte_end:
|
||||||
|
add [appl_path_size],24
|
||||||
lea esi,[eax-11] ;last 11 bytes = application name
|
lea esi,[eax-11] ;last 11 bytes = application name
|
||||||
mov edi,[new_process_place]
|
mov edi,[new_process_place]
|
||||||
shl edi,8
|
shl edi,8
|
||||||
|
@ -1134,6 +1134,8 @@ uglobal
|
|||||||
app_mem_pos dd 0x0
|
app_mem_pos dd 0x0
|
||||||
;thread_create dd 0x0
|
;thread_create dd 0x0
|
||||||
;gdt_place dd 0x0
|
;gdt_place dd 0x0
|
||||||
|
appl_path dd 0x0
|
||||||
|
appl_path_size dd 0x0
|
||||||
endg
|
endg
|
||||||
|
|
||||||
iglobal
|
iglobal
|
||||||
@ -1154,8 +1156,6 @@ sys_threads:
|
|||||||
; on return : eax = pid
|
; on return : eax = pid
|
||||||
jmp new_sys_threads
|
jmp new_sys_threads
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
iglobal
|
iglobal
|
||||||
process_terminating db 'K : Process - terminating',13,10,0
|
process_terminating db 'K : Process - terminating',13,10,0
|
||||||
process_terminated db 'K : Process - done',13,10,0
|
process_terminated db 'K : Process - done',13,10,0
|
||||||
|
@ -82,12 +82,14 @@ partition_data_transfer:
|
|||||||
ret
|
ret
|
||||||
transfer_adress dd 0
|
transfer_adress dd 0
|
||||||
partition_data_transfer_1:
|
partition_data_transfer_1:
|
||||||
cli
|
cli
|
||||||
|
push edi
|
||||||
mov edi,PARTITION_START
|
mov edi,PARTITION_START
|
||||||
mov esi,[transfer_adress]
|
mov esi,[transfer_adress]
|
||||||
xor ecx,ecx
|
xor ecx,ecx
|
||||||
mov cx,69 ;100
|
mov cx,69 ;100
|
||||||
rep movsb
|
rep movsb
|
||||||
|
pop edi
|
||||||
sti
|
sti
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ drawbar dd __sys_drawbar
|
|||||||
putpixel dd __sys_putpixel
|
putpixel dd __sys_putpixel
|
||||||
; } mike.dld
|
; } mike.dld
|
||||||
|
|
||||||
version db 'Kolibri OS version 0.5.0.0 ',13,10,13,10,0
|
version db 'Kolibri OS version 0.5.1.0 ',13,10,13,10,0
|
||||||
;dd endofcode-0x10000
|
;dd endofcode-0x10000
|
||||||
|
|
||||||
;db 'Boot02'
|
;db 'Boot02'
|
||||||
@ -2269,7 +2269,7 @@ keyboard_mode_sys db 0
|
|||||||
|
|
||||||
iglobal
|
iglobal
|
||||||
version_inf:
|
version_inf:
|
||||||
db 0,5,0,0 ; version 0.5.0.0
|
db 0,5,1,0 ; version 0.5.1.0
|
||||||
db UID_KOLIBRI
|
db UID_KOLIBRI
|
||||||
db 'Kolibri',0
|
db 'Kolibri',0
|
||||||
version_end:
|
version_end:
|
||||||
@ -4131,101 +4131,6 @@ memmove: ; memory move in bytes
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; calculate fat chain
|
|
||||||
|
|
||||||
calculatefatchain:
|
|
||||||
|
|
||||||
pushad
|
|
||||||
|
|
||||||
mov esi,0x100000+512
|
|
||||||
mov edi,0x280000
|
|
||||||
|
|
||||||
fcnew:
|
|
||||||
xor eax,eax
|
|
||||||
xor ebx,ebx
|
|
||||||
xor ecx,ecx
|
|
||||||
xor edx,edx
|
|
||||||
mov al,[esi+0] ; 1
|
|
||||||
mov bl,[esi+1]
|
|
||||||
and ebx,15
|
|
||||||
shl ebx,8
|
|
||||||
add eax,ebx
|
|
||||||
mov [edi],ax
|
|
||||||
add edi,2
|
|
||||||
|
|
||||||
xor eax,eax
|
|
||||||
xor ebx,ebx
|
|
||||||
xor ecx,ecx
|
|
||||||
xor edx,edx
|
|
||||||
mov bl,[esi+1] ; 2
|
|
||||||
mov cl,[esi+2]
|
|
||||||
shr ebx,4
|
|
||||||
shl ecx,4
|
|
||||||
add ecx,ebx
|
|
||||||
mov [edi],cx
|
|
||||||
add edi,2
|
|
||||||
|
|
||||||
add esi,3
|
|
||||||
|
|
||||||
cmp edi,0x280000+4100*4
|
|
||||||
jnz fcnew
|
|
||||||
|
|
||||||
popad
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
restorefatchain: ; restore fat chain
|
|
||||||
|
|
||||||
pushad
|
|
||||||
|
|
||||||
mov esi,0x280000
|
|
||||||
mov edi,0x100000+512
|
|
||||||
|
|
||||||
fcnew2:
|
|
||||||
cld
|
|
||||||
xor eax,eax
|
|
||||||
xor ebx,ebx
|
|
||||||
xor ecx,ecx ; esi XXXXxxxxxxxx yyyyyyyyYYYY
|
|
||||||
xor edx,edx
|
|
||||||
mov ax,[esi] ; edi xxxxxxxx YYYYXXXX yyyyyyyy
|
|
||||||
mov bx,ax
|
|
||||||
shr bx,8
|
|
||||||
and ebx,15
|
|
||||||
mov [edi+0],al ; 1 -> 1 & 2
|
|
||||||
mov [edi+1],bl
|
|
||||||
add esi,2
|
|
||||||
|
|
||||||
xor eax,eax
|
|
||||||
xor ebx,ebx
|
|
||||||
xor ecx,ecx
|
|
||||||
xor edx,edx
|
|
||||||
mov bx,[esi]
|
|
||||||
mov cx,bx
|
|
||||||
shr ecx,4
|
|
||||||
mov [edi+2],cl
|
|
||||||
and ebx,15
|
|
||||||
shl ebx,4
|
|
||||||
mov edx,[edi+1]
|
|
||||||
add edx,ebx
|
|
||||||
mov [edi+1],dl ; 2 -> 2 & 3
|
|
||||||
add esi,2
|
|
||||||
|
|
||||||
add edi,3
|
|
||||||
|
|
||||||
cmp edi,0x100000+512+0x1200
|
|
||||||
jb fcnew2
|
|
||||||
|
|
||||||
mov esi,0x100000+512 ; duplicate fat chain
|
|
||||||
mov edi,0x100000+512+0x1200
|
|
||||||
mov ecx,0x1200/4
|
|
||||||
cld
|
|
||||||
rep movsd
|
|
||||||
|
|
||||||
popad
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
|
|
||||||
read_floppy_file:
|
read_floppy_file:
|
||||||
|
@ -27,9 +27,26 @@
|
|||||||
; Modifying the set_bank -function is mostly enough
|
; Modifying the set_bank -function is mostly enough
|
||||||
; for different Vesa 1.2 setups.
|
; for different Vesa 1.2 setups.
|
||||||
|
|
||||||
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!{
|
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
; set_bank for Trident videocards, work on Trident 9440
|
||||||
|
; modified by Mario79
|
||||||
|
;set_bank:
|
||||||
|
;cli
|
||||||
|
;cmp al,[0xfff2]
|
||||||
|
;je retsb
|
||||||
|
;mov [0xfff2],al
|
||||||
|
;push dx
|
||||||
|
;mov dx,3D8h
|
||||||
|
;out dx,al
|
||||||
|
;pop dx
|
||||||
|
;retsb:
|
||||||
|
;sti
|
||||||
|
;ret
|
||||||
|
|
||||||
; set_bank modified by kmeaw
|
|
||||||
|
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
; set_bank for S3 videocards, work on S3 ViRGE PCI (325)
|
||||||
|
; modified by kmeaw
|
||||||
set_bank:
|
set_bank:
|
||||||
cli
|
cli
|
||||||
cmp al,[0xfff2]
|
cmp al,[0xfff2]
|
||||||
|
Loading…
Reference in New Issue
Block a user