forked from KolibriOS/kolibrios
1)fixed applications iopl level 2)fixed #PF exceptions handler
3)changed sysfuncr.txt fn. 18.20, 64.1, 68.11, 68.16 git-svn-id: svn://kolibrios.org@172 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
8609e45095
commit
174a707452
@ -632,10 +632,19 @@ proc init_heap stdcall, heap_size:dword
|
|||||||
tab_count dd ?
|
tab_count dd ?
|
||||||
endl
|
endl
|
||||||
|
|
||||||
|
mov ebx,[CURRENT_TASK]
|
||||||
|
shl ebx,8
|
||||||
|
mov eax, [PROC_BASE+APPDATA.heap_top+ebx]
|
||||||
|
test eax, eax
|
||||||
|
jz @F
|
||||||
|
sub eax,[PROC_BASE+APPDATA.heap_base+ebx]
|
||||||
|
sub eax, 4096
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
mov edx, [heap_size]
|
mov edx, [heap_size]
|
||||||
and edx, edx
|
and edx, edx
|
||||||
jz .exit
|
jz .exit
|
||||||
add edx, 4095
|
add edx, (4095+4096)
|
||||||
and edx, not 4095
|
and edx, not 4095
|
||||||
mov [heap_size], edx
|
mov [heap_size], edx
|
||||||
add edx, 0x003FFFFF
|
add edx, 0x003FFFFF
|
||||||
@ -643,15 +652,13 @@ proc init_heap stdcall, heap_size:dword
|
|||||||
shr edx, 22
|
shr edx, 22
|
||||||
mov [tab_count], edx
|
mov [tab_count], edx
|
||||||
|
|
||||||
mov ebx,[CURRENT_TASK]
|
mov esi, [PROC_BASE+APPDATA.mem_size+ebx]
|
||||||
shl ebx,8
|
|
||||||
mov esi, [PROC_BASE+0x8c+ebx]
|
|
||||||
add esi, 0x003FFFFF
|
add esi, 0x003FFFFF
|
||||||
and esi, not 0x003FFFFF
|
and esi, not 0x003FFFFF
|
||||||
mov edi, esi
|
mov edi, esi
|
||||||
mov [PROC_BASE+0x18+ebx], esi
|
mov [PROC_BASE+APPDATA.heap_base+ebx], esi
|
||||||
add esi, [heap_size]
|
add esi, [heap_size]
|
||||||
mov [PROC_BASE+0x1C+ebx], esi
|
mov [PROC_BASE+APPDATA.heap_top+ebx], esi
|
||||||
|
|
||||||
mov eax, cr3
|
mov eax, cr3
|
||||||
and eax, not 0xFFF
|
and eax, not 0xFFF
|
||||||
@ -672,7 +679,7 @@ proc init_heap stdcall, heap_size:dword
|
|||||||
shl ecx, 12-2
|
shl ecx, 12-2
|
||||||
mov ebx,[CURRENT_TASK]
|
mov ebx,[CURRENT_TASK]
|
||||||
shl ebx,8
|
shl ebx,8
|
||||||
mov edi, [PROC_BASE+0x18+ebx]
|
mov edi, [PROC_BASE+APPDATA.heap_base+ebx]
|
||||||
add edi, new_app_base
|
add edi, new_app_base
|
||||||
shr edi, 10
|
shr edi, 10
|
||||||
mov esi, edi
|
mov esi, edi
|
||||||
@ -688,7 +695,6 @@ proc init_heap stdcall, heap_size:dword
|
|||||||
sub eax, 4096
|
sub eax, 4096
|
||||||
or ebx, FREE_BLOCK
|
or ebx, FREE_BLOCK
|
||||||
mov [pages_tab+esi], ebx
|
mov [pages_tab+esi], ebx
|
||||||
|
|
||||||
ret
|
ret
|
||||||
.exit:
|
.exit:
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
@ -704,8 +710,8 @@ proc user_alloc stdcall, alloc_size:dword
|
|||||||
|
|
||||||
mov ebx, [CURRENT_TASK]
|
mov ebx, [CURRENT_TASK]
|
||||||
shl ebx, 8
|
shl ebx, 8
|
||||||
mov esi, dword [ebx+PROC_BASE+0x18]; heap_base
|
mov esi, dword [ebx+PROC_BASE+APPDATA.heap_base]; heap_base
|
||||||
mov edi, dword [ebx+PROC_BASE+0x1C]; heap_top
|
mov edi, dword [ebx+PROC_BASE+APPDATA.heap_top]; heap_top
|
||||||
add esi, new_app_base
|
add esi, new_app_base
|
||||||
add edi, new_app_base
|
add edi, new_app_base
|
||||||
|
|
||||||
@ -788,8 +794,8 @@ proc user_free stdcall, base:dword
|
|||||||
@@:
|
@@:
|
||||||
mov ebx, [CURRENT_TASK]
|
mov ebx, [CURRENT_TASK]
|
||||||
shl ebx, 8
|
shl ebx, 8
|
||||||
mov esi, dword [ebx+PROC_BASE+0x18]; heap_base
|
mov esi, dword [ebx+PROC_BASE+APPDATA.heap_base]; heap_base
|
||||||
mov edi, dword [ebx+PROC_BASE+0x1C]; heap_top
|
mov edi, dword [ebx+PROC_BASE+APPDATA.heap_top]; heap_top
|
||||||
shr esi, 12
|
shr esi, 12
|
||||||
shr edi, 12
|
shr edi, 12
|
||||||
@@:
|
@@:
|
||||||
@ -834,103 +840,6 @@ proc user_free stdcall, base:dword
|
|||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
|
||||||
;proc new_mem_resize stdcall, new_size:dword
|
|
||||||
;
|
|
||||||
; stdcall wait_mutex, pg_data.pg_mutex
|
|
||||||
;
|
|
||||||
; mov edi, [new_size]
|
|
||||||
; add edi,4095
|
|
||||||
; and edi,not 4095
|
|
||||||
; mov [new_size], edi
|
|
||||||
|
|
||||||
; mov edx,[CURRENT_TASK]
|
|
||||||
; shl edx,8
|
|
||||||
; mov esi, [PROC_BASE+0x8c+edx]
|
|
||||||
; add esi, 4095
|
|
||||||
; and esi, not 4095
|
|
||||||
|
|
||||||
; cmp edi, esi
|
|
||||||
; jae .expand
|
|
||||||
|
|
||||||
; shr edi, 12
|
|
||||||
; shr esi, 12
|
|
||||||
;
|
|
||||||
;@@: mov eax, [pages_tab+0x4000+edi*4]
|
|
||||||
; test eax, 1
|
|
||||||
; jz .next
|
|
||||||
; mov dword [pages_tab+0x4000+edi*4], 2
|
|
||||||
; mov ebx, edi
|
|
||||||
; shl ebx, 12
|
|
||||||
; invlpg [ebx+std_application_base_address]
|
|
||||||
; call free_page
|
|
||||||
;
|
|
||||||
;.next: add edi, 1
|
|
||||||
; cmp edi, esi
|
|
||||||
; jb @B
|
|
||||||
;
|
|
||||||
;.update_size:
|
|
||||||
|
|
||||||
; mov ebx, [new_size]
|
|
||||||
; mov [PROC_BASE+0x8c+edx],ebx
|
|
||||||
;
|
|
||||||
;;search threads and update
|
|
||||||
;;application memory size infomation
|
|
||||||
; mov ecx,[PROC_BASE+0xb8+edx]
|
|
||||||
; mov eax,2
|
|
||||||
|
|
||||||
;.search_threads:
|
|
||||||
;;eax = current slot
|
|
||||||
;;ebx = new memory size
|
|
||||||
;;ecx = page directory
|
|
||||||
; cmp eax,[TASK_COUNT]
|
|
||||||
; jg .search_threads_end
|
|
||||||
; mov edx,eax
|
|
||||||
; shl edx,5
|
|
||||||
; cmp word [CURRENT_TASK+edx+0xa],9 ;if slot empty?
|
|
||||||
; jz .search_threads_next
|
|
||||||
; shl edx,3
|
|
||||||
; cmp [PROC_BASE+edx+0xb8],ecx ;if it is our thread?
|
|
||||||
; jnz .search_threads_next
|
|
||||||
; mov [PROC_BASE+edx+0x8c],ebx ;update memory size
|
|
||||||
;.search_threads_next:
|
|
||||||
; inc eax
|
|
||||||
; jmp .search_threads
|
|
||||||
;.search_threads_end:
|
|
||||||
; xor eax, eax
|
|
||||||
; dec [pg_data.pg_mutex]
|
|
||||||
; ret
|
|
||||||
;
|
|
||||||
;
|
|
||||||
;.expand:
|
|
||||||
; add edi, new_app_base
|
|
||||||
; add esi, new_app_base
|
|
||||||
;
|
|
||||||
;.grow: call alloc_page
|
|
||||||
; test eax, eax
|
|
||||||
; jz .exit
|
|
||||||
; stdcall map_page,esi,eax,dword PG_UW
|
|
||||||
|
|
||||||
; push edi
|
|
||||||
; mov edi, esi
|
|
||||||
; xor eax, eax
|
|
||||||
; mov ecx, 1024
|
|
||||||
; cld
|
|
||||||
; rep stosd
|
|
||||||
; pop edi
|
|
||||||
|
|
||||||
; add esi, 0x1000
|
|
||||||
; cmp esi, edi
|
|
||||||
; jna .grow
|
|
||||||
; jmp .update_size
|
|
||||||
;.exit:
|
|
||||||
; xor eax, eax
|
|
||||||
; inc eax
|
|
||||||
; dec [pg_data.pg_mutex]
|
|
||||||
; ret
|
|
||||||
;endp
|
|
||||||
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
proc alloc_dll
|
proc alloc_dll
|
||||||
pushf
|
pushf
|
||||||
@ -964,168 +873,3 @@ proc alloc_service
|
|||||||
add eax, srv_tab
|
add eax, srv_tab
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
if NEW
|
|
||||||
|
|
||||||
align 16
|
|
||||||
new_services:
|
|
||||||
cmp eax, 10
|
|
||||||
jb .fail
|
|
||||||
ja @f
|
|
||||||
|
|
||||||
push dword [ebp+8+new_app_base]
|
|
||||||
call get_mem_info
|
|
||||||
mov [esp+36], eax
|
|
||||||
ret
|
|
||||||
@@:
|
|
||||||
cmp eax, 11
|
|
||||||
ja @f
|
|
||||||
|
|
||||||
push dword [ebp+8+new_app_base]
|
|
||||||
call init_heap
|
|
||||||
mov [esp+36], eax
|
|
||||||
ret
|
|
||||||
@@:
|
|
||||||
cmp eax, 12
|
|
||||||
ja @f
|
|
||||||
|
|
||||||
push dword [ebp+8+new_app_base]
|
|
||||||
call user_alloc
|
|
||||||
mov [esp+36], eax
|
|
||||||
ret
|
|
||||||
@@:
|
|
||||||
cmp eax, 13
|
|
||||||
ja @f
|
|
||||||
|
|
||||||
push dword [ebp+8+new_app_base]
|
|
||||||
call user_free
|
|
||||||
mov [esp+36], eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
@@:
|
|
||||||
cmp eax, 14
|
|
||||||
ja @f
|
|
||||||
mov eax, [ebp+8+new_app_base]
|
|
||||||
add eax,new_app_base
|
|
||||||
stdcall get_notify, eax
|
|
||||||
ret
|
|
||||||
;@@:
|
|
||||||
; cmp eax, 15
|
|
||||||
; ja @f
|
|
||||||
; call set_notify
|
|
||||||
; ret
|
|
||||||
@@:
|
|
||||||
cmp eax, 16
|
|
||||||
ja @f
|
|
||||||
|
|
||||||
mov eax, [ebp+8+new_app_base]
|
|
||||||
add eax, new_app_base
|
|
||||||
stdcall get_service, eax
|
|
||||||
mov [esp+36], eax
|
|
||||||
ret
|
|
||||||
@@:
|
|
||||||
cmp eax, 17
|
|
||||||
ja @f
|
|
||||||
stdcall srv_handler,[ebp+8+new_app_base],\
|
|
||||||
[ebp+12+new_app_base],\
|
|
||||||
[ebp+16+new_app_base]
|
|
||||||
mov [esp+36], eax
|
|
||||||
ret
|
|
||||||
;@@:
|
|
||||||
; cmp eax, 20
|
|
||||||
; ja @f
|
|
||||||
; call CreateSound
|
|
||||||
; mov [esp+36], eax
|
|
||||||
; ret
|
|
||||||
|
|
||||||
@@:
|
|
||||||
.fail:
|
|
||||||
xor eax, eax
|
|
||||||
mov [esp+36], eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
proc strncmp stdcall, str1:dword, str2:dword, count:dword
|
|
||||||
|
|
||||||
mov ecx,[count]
|
|
||||||
jecxz .end
|
|
||||||
|
|
||||||
mov ebx,ecx
|
|
||||||
|
|
||||||
mov edi,[str1]
|
|
||||||
mov esi,edi
|
|
||||||
xor eax,eax
|
|
||||||
repne scasb
|
|
||||||
neg ecx ; cx = count - strlen
|
|
||||||
add ecx,ebx ; strlen + count - strlen
|
|
||||||
|
|
||||||
.okay:
|
|
||||||
mov edi,esi
|
|
||||||
mov esi,[str2]
|
|
||||||
repe cmpsb
|
|
||||||
mov al,[esi-1]
|
|
||||||
xor ecx,ecx
|
|
||||||
|
|
||||||
cmp al,[edi-1]
|
|
||||||
ja .str2_big
|
|
||||||
je .end
|
|
||||||
|
|
||||||
.str1_big:
|
|
||||||
sub ecx,2
|
|
||||||
|
|
||||||
.str2_big:
|
|
||||||
not ecx
|
|
||||||
.end:
|
|
||||||
mov eax,ecx
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
|
|
||||||
proc get_proc stdcall, exp:dword, sz_name:dword
|
|
||||||
|
|
||||||
mov edx, [exp]
|
|
||||||
.next:
|
|
||||||
mov eax, [edx]
|
|
||||||
test eax, eax
|
|
||||||
jz .end
|
|
||||||
|
|
||||||
push edx
|
|
||||||
stdcall strncmp, eax, [sz_name], 16
|
|
||||||
pop edx
|
|
||||||
test eax, eax
|
|
||||||
jz .ok
|
|
||||||
|
|
||||||
add edx,8
|
|
||||||
jmp .next
|
|
||||||
.ok:
|
|
||||||
mov eax, [edx+4]
|
|
||||||
.end:
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
proc link_dll stdcall, exp:dword, imp:dword
|
|
||||||
mov esi, [imp]
|
|
||||||
|
|
||||||
.next:
|
|
||||||
mov eax, [esi]
|
|
||||||
test eax, eax
|
|
||||||
jz .end
|
|
||||||
|
|
||||||
push esi
|
|
||||||
stdcall get_proc, [exp], eax
|
|
||||||
pop esi
|
|
||||||
|
|
||||||
test eax, eax
|
|
||||||
jz @F
|
|
||||||
|
|
||||||
mov [esi], eax
|
|
||||||
@@:
|
|
||||||
add esi, 4
|
|
||||||
jmp .next
|
|
||||||
.end:
|
|
||||||
ret
|
|
||||||
endp
|
|
||||||
|
|
||||||
end if
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -382,7 +382,10 @@ proc new_mem_resize stdcall, new_size:dword
|
|||||||
|
|
||||||
mov edx,[CURRENT_TASK]
|
mov edx,[CURRENT_TASK]
|
||||||
shl edx,8
|
shl edx,8
|
||||||
mov esi, [PROC_BASE+0x8c+edx]
|
cmp [PROC_BASE+APPDATA.heap_base+edx],0
|
||||||
|
jne .exit
|
||||||
|
|
||||||
|
mov esi, [PROC_BASE+APPDATA.mem_size+edx]
|
||||||
add esi, 4095
|
add esi, 4095
|
||||||
and esi, not 4095
|
and esi, not 4095
|
||||||
|
|
||||||
@ -522,19 +525,12 @@ proc page_fault_handler
|
|||||||
|
|
||||||
mov ebp, esp
|
mov ebp, esp
|
||||||
mov eax, cr2
|
mov eax, cr2
|
||||||
sub esp, 4
|
push eax
|
||||||
mov [esp], eax
|
|
||||||
push ds
|
push ds
|
||||||
|
|
||||||
mov ax, 0x10
|
mov ax, 0x10
|
||||||
mov ds, ax
|
mov ds, ax
|
||||||
|
|
||||||
; mov edx, 0x400 ;bocsh
|
|
||||||
; mov al,0xff ;bocsh
|
|
||||||
; out dx, al ;bocsh
|
|
||||||
; nop ;bocsh fix
|
|
||||||
|
|
||||||
|
|
||||||
mov ebx, [ebp-4]
|
mov ebx, [ebp-4]
|
||||||
|
|
||||||
cmp ebx, 0xe0000000
|
cmp ebx, 0xe0000000
|
||||||
@ -552,13 +548,15 @@ proc page_fault_handler
|
|||||||
inc [pg_data.pages_faults]
|
inc [pg_data.pages_faults]
|
||||||
|
|
||||||
shr ebx, 12
|
shr ebx, 12
|
||||||
|
mov ecx, ebx
|
||||||
|
shr ecx, 10
|
||||||
|
mov edx, [master_tab+ecx*4]
|
||||||
|
test edx, 1
|
||||||
|
jz .fail
|
||||||
|
|
||||||
mov eax, [pages_tab+ebx*4]
|
mov eax, [pages_tab+ebx*4]
|
||||||
|
|
||||||
shr ebx, 10
|
|
||||||
mov edx, [master_tab+ebx*4]
|
|
||||||
|
|
||||||
test eax, 2
|
test eax, 2
|
||||||
jz .exit
|
jz .fail
|
||||||
|
|
||||||
call alloc_page
|
call alloc_page
|
||||||
and eax, eax
|
and eax, eax
|
||||||
@ -581,6 +579,17 @@ proc page_fault_handler
|
|||||||
popad
|
popad
|
||||||
add esp, 4
|
add esp, 4
|
||||||
iretd
|
iretd
|
||||||
|
.fail:
|
||||||
|
pop ds
|
||||||
|
mov esp, ebp
|
||||||
|
popad
|
||||||
|
add esp, 4
|
||||||
|
|
||||||
|
save_ring3_context ;debugger support
|
||||||
|
|
||||||
|
mov bl, 14
|
||||||
|
jmp exc_c
|
||||||
|
iretd
|
||||||
|
|
||||||
.kernel_space:
|
.kernel_space:
|
||||||
shr ebx, 12
|
shr ebx, 12
|
||||||
@ -902,8 +911,13 @@ align 4
|
|||||||
sysfn_meminfo:
|
sysfn_meminfo:
|
||||||
|
|
||||||
add ebx, new_app_base
|
add ebx, new_app_base
|
||||||
|
cmp ebx, new_app_base
|
||||||
|
jb .fail
|
||||||
|
|
||||||
mov eax, [pg_data.pages_count]
|
mov eax, [pg_data.pages_count]
|
||||||
mov [ebx], eax
|
mov [ebx], eax
|
||||||
|
shl eax, 12
|
||||||
|
mov [esp+36], eax
|
||||||
mov ecx, [pg_data.pages_free]
|
mov ecx, [pg_data.pages_free]
|
||||||
mov [ebx+4], ecx
|
mov [ebx+4], ecx
|
||||||
mov edx, [pg_data.pages_faults]
|
mov edx, [pg_data.pages_faults]
|
||||||
@ -916,7 +930,9 @@ sysfn_meminfo:
|
|||||||
mov [ebx+20], eax
|
mov [ebx+20], eax
|
||||||
mov ecx, [free_blocks]
|
mov ecx, [free_blocks]
|
||||||
mov [ebx+24], ecx
|
mov [ebx+24], ecx
|
||||||
|
ret
|
||||||
|
.fail:
|
||||||
|
mov dword [esp+36], -1
|
||||||
ret
|
ret
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
@ -929,14 +945,6 @@ new_services:
|
|||||||
jb .fail
|
jb .fail
|
||||||
ja @f
|
ja @f
|
||||||
|
|
||||||
; add ebx, new_app_base
|
|
||||||
; stdcall get_mem_info, ebx
|
|
||||||
; mov [esp+36], eax
|
|
||||||
; ret
|
|
||||||
;@@:
|
|
||||||
; cmp eax, 11
|
|
||||||
; ja @f
|
|
||||||
|
|
||||||
stdcall init_heap, ebx
|
stdcall init_heap, ebx
|
||||||
mov [esp+36], eax
|
mov [esp+36], eax
|
||||||
ret
|
ret
|
||||||
@ -958,6 +966,8 @@ new_services:
|
|||||||
cmp eax, 14
|
cmp eax, 14
|
||||||
ja @f
|
ja @f
|
||||||
add ebx,new_app_base
|
add ebx,new_app_base
|
||||||
|
cmp ebx, new_app_base
|
||||||
|
jb .fail
|
||||||
stdcall get_notify, ebx
|
stdcall get_notify, ebx
|
||||||
ret
|
ret
|
||||||
@@:
|
@@:
|
||||||
@ -974,6 +984,8 @@ new_services:
|
|||||||
ja @f
|
ja @f
|
||||||
|
|
||||||
add ebx, new_app_base
|
add ebx, new_app_base
|
||||||
|
cmp ebx, new_app_base
|
||||||
|
jb .fail
|
||||||
stdcall get_service, ebx
|
stdcall get_service, ebx
|
||||||
mov [esp+36], eax
|
mov [esp+36], eax
|
||||||
ret
|
ret
|
||||||
@ -1235,6 +1247,33 @@ proc set_mtrr stdcall, reg:dword,base:dword,size:dword,mem_type:dword
|
|||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
align 4
|
||||||
|
proc stall stdcall, delay:dword
|
||||||
|
push ecx
|
||||||
|
push edx
|
||||||
|
push ebx
|
||||||
|
push eax
|
||||||
|
|
||||||
|
mov eax, [delay]
|
||||||
|
mul [stall_mcs]
|
||||||
|
mov ebx, eax ;low
|
||||||
|
mov ecx, edx ;high
|
||||||
|
rdtsc
|
||||||
|
add ebx, eax
|
||||||
|
adc ecx,edx
|
||||||
|
@@:
|
||||||
|
rdtsc
|
||||||
|
sub eax, ebx
|
||||||
|
sbb edx, ecx
|
||||||
|
jb @B
|
||||||
|
|
||||||
|
pop eax
|
||||||
|
pop ebx
|
||||||
|
pop edx
|
||||||
|
pop ecx
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
iglobal
|
iglobal
|
||||||
align 4
|
align 4
|
||||||
intel_str db "GenuineIntel",0
|
intel_str db "GenuineIntel",0
|
||||||
@ -1265,6 +1304,7 @@ align 16
|
|||||||
fpu_data rd 1
|
fpu_data rd 1
|
||||||
fdd_buff rd 1
|
fdd_buff rd 1
|
||||||
|
|
||||||
|
stall_mcs rd 1
|
||||||
;;CPUID information
|
;;CPUID information
|
||||||
|
|
||||||
cpu_vendor rd 3
|
cpu_vendor rd 3
|
||||||
|
@ -130,7 +130,7 @@ proc create_app_space stdcall, app_size:dword,img_size:dword
|
|||||||
mov [master_addr], eax
|
mov [master_addr], eax
|
||||||
|
|
||||||
mov eax, [app_size]
|
mov eax, [app_size]
|
||||||
add eax, 4095+4096
|
add eax, 4095
|
||||||
and eax, NOT(4095)
|
and eax, NOT(4095)
|
||||||
mov [app_size], eax
|
mov [app_size], eax
|
||||||
mov ebx, eax
|
mov ebx, eax
|
||||||
@ -757,7 +757,7 @@ proc add_app_parameters stdcall,slot:dword,img_base:dword,\
|
|||||||
mov ax,graph_data ;ax - selector of graphic segment
|
mov ax,graph_data ;ax - selector of graphic segment
|
||||||
mov [l.gs],ax
|
mov [l.gs],ax
|
||||||
mov [l.io],word 128
|
mov [l.io],word 128
|
||||||
mov [l.eflags],dword 0x3202
|
mov [l.eflags],dword 0x1202
|
||||||
|
|
||||||
mov [l.ss0],os_data
|
mov [l.ss0],os_data
|
||||||
mov ebx,[slot]
|
mov ebx,[slot]
|
||||||
|
@ -385,7 +385,7 @@
|
|||||||
ᮡá⢥® à ¡®âã, ¨ ¢à¥¬¥¨ ¯à®áâ®ï ¢ ®¦¨¤ ¨¨ ¯à¥àë¢ ¨ï
|
ᮡá⢥® à ¡®âã, ¨ ¢à¥¬¥¨ ¯à®áâ®ï ¢ ®¦¨¤ ¨¨ ¯à¥àë¢ ¨ï
|
||||||
(ª®â®à®¥ ¬®¦® ¯®«ãç¨âì ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 4 äãªæ¨¨ 18).
|
(ª®â®à®¥ ¬®¦® ¯®«ãç¨âì ¢ë§®¢®¬ ¯®¤äãªæ¨¨ 4 äãªæ¨¨ 18).
|
||||||
* <20> ç¨ ï á® á«®â 2, à §¬¥é îâáï ®¡ëçë¥ ¯à¨«®¦¥¨ï.
|
* <20> ç¨ ï á® á«®â 2, à §¬¥é îâáï ®¡ëçë¥ ¯à¨«®¦¥¨ï.
|
||||||
* Ž¡ëçë¥ ¯à¨«®¦¥¨ï à §¬¥é îâáï ¢ ¯ ¬ï⨠¯® ¤à¥áã 0x10000000
|
* Ž¡ëçë¥ ¯à¨«®¦¥¨ï à §¬¥é îâáï ¢ ¯ ¬ï⨠¯® ¤à¥áã 0x60400000
|
||||||
(ª®áâ â ï¤à std_application_base_address).
|
(ª®áâ â ï¤à std_application_base_address).
|
||||||
<20> «®¦¥¨ï ¥ ¯à®¨á室¨â, ¯®áª®«ìªã ã ª ¦¤®£® ¯à®æ¥áá ᢮ï
|
<20> «®¦¥¨ï ¥ ¯à®¨á室¨â, ¯®áª®«ìªã ã ª ¦¤®£® ¯à®æ¥áá ᢮ï
|
||||||
â ¡«¨æ áâà ¨æ.
|
â ¡«¨æ áâà ¨æ.
|
||||||
@ -878,8 +878,8 @@
|
|||||||
db a,b,c,d ¤«ï ¢¥àᨨ a.b.c.d
|
db a,b,c,d ¤«ï ¢¥àᨨ a.b.c.d
|
||||||
db UID_xxx: ®¤® ¨§ UID_NONE=0, UID_MENUET=1, UID_KOLIBRI=2
|
db UID_xxx: ®¤® ¨§ UID_NONE=0, UID_MENUET=1, UID_KOLIBRI=2
|
||||||
db 'name',0 - ASCIIZ-áâப á ¨¬¥¥¬
|
db 'name',0 - ASCIIZ-áâப á ¨¬¥¥¬
|
||||||
„«ï ï¤à Kolibri 0.6.0.0:
|
„«ï ï¤à Kolibri 0.5.8.1:
|
||||||
db 0,6,0,0
|
db 0,5,8,1
|
||||||
db 2
|
db 2
|
||||||
db 'Kolibri',0
|
db 'Kolibri',0
|
||||||
|
|
||||||
@ -1005,6 +1005,32 @@ db 'Kolibri',0
|
|||||||
¨ ¯à®¢¥à¨âì, çâ® ãáâ ¢«¨¢ ¥¬®¥ ¯®«®¦¥¨¥ ¥ ¢ë室¨â § ¯à¥¤¥«ë
|
¨ ¯à®¢¥à¨âì, çâ® ãáâ ¢«¨¢ ¥¬®¥ ¯®«®¦¥¨¥ ¥ ¢ë室¨â § ¯à¥¤¥«ë
|
||||||
íªà .
|
íªà .
|
||||||
|
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
====================== ”ãªæ¨ï 18, ¯®¤äãªæ¨ï 20 =====================
|
||||||
|
============= <20>®«ãç¨âì ¨ä®à¬ æ¨î ®¡ ®¯¥à ⨢®© ¯ ¬ïâ¨. =============
|
||||||
|
======================================================================
|
||||||
|
<EFBFBD> à ¬¥âàë:
|
||||||
|
* eax = 18 - ®¬¥à äãªæ¨¨
|
||||||
|
* ebx = 20 - ®¬¥à ¯®¤äãªæ¨¨
|
||||||
|
* ecx = 㪠§ â¥«ì ¡ãä¥à ¤«ï ¨ä®à¬ 樨 (36 ¡ ©â)
|
||||||
|
‚®§¢à é ¥¬®¥ § 票¥:
|
||||||
|
* eax = ®¡é¨© à §¬¥à ¨¬¥î饩áï ®¯¥à ⨢®© ¯ ¬ï⨠¢ ¡ ©â å
|
||||||
|
¨«¨ -1 ¢ á«ãç ¥ ®è¨¡ª¨
|
||||||
|
* ¡ãä¥à, ª®â®àë© ãª §ë¢ ¥â ecx, ᮤ¥à¦¨â á«¥¤ãîéãî ¨ä®à¬ æ¨î:
|
||||||
|
* +0: dword: ®¡é¨© à §¬¥à ¨¬¥î饩áï ®¯¥à ⨢®© ¯ ¬ï⨠¢ áâà ¨æ å
|
||||||
|
* +4: dword: à §¬¥à ᢮¡®¤®© ®¯¥à ⨢®© ¯ ¬ï⨠¢ áâà ¨æ å
|
||||||
|
* +8: dword: ç¨á«® áâà ¨çëå ®è¨¡®ª (¨áª«î票© #PF)
|
||||||
|
¢ ¯à¨«®¦¥¨ïå
|
||||||
|
* +12: dword: à §¬¥à ªãç¨ ï¤à ¢ ¡ ©â å
|
||||||
|
* +16: dword: à §¬¥à ᢮¡®¤®© ¯ ¬ï⨠¢ ªãç¥ ï¤à ¢ ¡ ©â å
|
||||||
|
* +20: dword: ®¡é¥¥ ª®«¨ç¥á⢮ ¡«®ª®¢ ¯ ¬ï⨠¢ ªãç¥ ï¤à
|
||||||
|
* +24: dword: ª®«¨ç¥á⢮ ᢮¡®¤ëå ¡«®ª®¢ ¯ ¬ï⨠¢ ªãç¥ ï¤à
|
||||||
|
* +28: dword: à §¬¥à ¨¡®«ì襣® ᢮¡®¤®£® ¡«®ª ¢ ªãç¥ ï¤à
|
||||||
|
(§ १¥à¢¨à®¢ ®)
|
||||||
|
* +32: dword: à §¬¥à ¨¡®«ì襣® ¢ë¤¥«¥®£® ¡«®ª ¢ ªãç¥ ï¤à
|
||||||
|
(§ १¥à¢¨à®¢ ®)
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
==================== ”ãªæ¨ï 20 - ¨â¥à䥩á MIDI. ====================
|
==================== ”ãªæ¨ï 20 - ¨â¥à䥩á MIDI. ====================
|
||||||
======================================================================
|
======================================================================
|
||||||
@ -2905,7 +2931,6 @@ dword-
|
|||||||
„®áâã¯ë¥ ¯®¤äãªæ¨¨:
|
„®áâã¯ë¥ ¯®¤äãªæ¨¨:
|
||||||
* ¯®¤äãªæ¨ï 0 - ç⥨¥ ä ©« /¯ ¯ª¨
|
* ¯®¤äãªæ¨ï 0 - ç⥨¥ ä ©« /¯ ¯ª¨
|
||||||
* ¯®¤äãªæ¨ï 1 - ¯¥à¥§ ¯¨áì ä ©«
|
* ¯®¤äãªæ¨ï 1 - ¯¥à¥§ ¯¨áì ä ©«
|
||||||
* ¯®¤äãªæ¨ï 2 - 㤠«¥¨¥ ä ©« /¯ ¯ª¨
|
|
||||||
* ¯®¤äãªæ¨ï 4 - ᮧ¤ ¨¥ ¯ ¯ª¨
|
* ¯®¤äãªæ¨ï 4 - ᮧ¤ ¨¥ ¯ ¯ª¨
|
||||||
* ¯®¤äãªæ¨ï 5 - ¯¥à¥¨¬¥®¢ ¨¥/¯¥à¥¬¥é¥¨¥ ä ©« /¯ ¯ª¨
|
* ¯®¤äãªæ¨ï 5 - ¯¥à¥¨¬¥®¢ ¨¥/¯¥à¥¬¥é¥¨¥ ä ©« /¯ ¯ª¨
|
||||||
* ¯®¤äãªæ¨ï 8 - LBA-ç⥨¥ á ãáâனáâ¢
|
* ¯®¤äãªæ¨ï 8 - LBA-ç⥨¥ á ãáâனáâ¢
|
||||||
@ -2995,30 +3020,6 @@ dword-
|
|||||||
‡ ¬¥ç ¨ï:
|
‡ ¬¥ç ¨ï:
|
||||||
* <20>â äãªæ¨ï ãáâ ५ , ¨á¯®«ì§ã©â¥ ¯®¤äãªæ¨î 2 äãªæ¨¨ 70.
|
* <20>â äãªæ¨ï ãáâ ५ , ¨á¯®«ì§ã©â¥ ¯®¤äãªæ¨î 2 äãªæ¨¨ 70.
|
||||||
|
|
||||||
======================================================================
|
|
||||||
=========== ”ãªæ¨ï 58, ¯®¤äãªæ¨ï 2 - 㤠«¨âì ä ©«/¯ ¯ªã. ===========
|
|
||||||
======================================================================
|
|
||||||
<EFBFBD> à ¬¥âàë:
|
|
||||||
* eax = 58 - ®¬¥à äãªæ¨¨
|
|
||||||
* ebx = 㪠§ â¥«ì ¨ä®à¬ 樮ãî áâàãªâãàã
|
|
||||||
”®à¬ â ¨ä®à¬ 樮®© áâàãªâãàë:
|
|
||||||
* +0: dword: 2 = ®¬¥à ¯®¤äãªæ¨¨
|
|
||||||
* +4: dword: ¨£®à¨àã¥âáï
|
|
||||||
* +8: dword: ¨£®à¨àã¥âáï
|
|
||||||
* +12 = +0xC: dword: ¨£®à¨àã¥âáï
|
|
||||||
* +16 = +0x10: dword: 㪠§ â¥«ì ¡ãä¥à ¤«ï à ¡®âë á¨á⥬ë
|
|
||||||
(4096 ¡ ©â)
|
|
||||||
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢
|
|
||||||
®¡é¥¬ ®¯¨á ¨¨
|
|
||||||
‚®§¢à é ¥¬®¥ § 票¥:
|
|
||||||
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë
|
|
||||||
* ebx à §àãè ¥âáï
|
|
||||||
‡ ¬¥ç ¨ï:
|
|
||||||
* <20>à¨ à ¡®â¥ á ¤¨áª¥â®© ¥ á«¥¤ã¥â 㤠«ïâì ¥¯ãáâãî ¯ ¯ªã.
|
|
||||||
Š®¤ à ¡®âë á ¦ñá⪨¬ ¤¨áª®¬ ¥¯ãáâë¥ ¯ ¯ª¨ 㤠«ï¥â ª®à४â®
|
|
||||||
(â.¥. ४ãàᨢ® á® ¢á¥¬¨ ä ©« ¬¨ ¨ ¢«®¦¥ë¬¨ ¯ ¯ª ¬¨).
|
|
||||||
<20> ¬¤¨áª ¯ ¯®ª ¥ ¯®¤¤¥à¦¨¢ ¥â.
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
============== ”ãªæ¨ï 58, ¯®¤äãªæ¨ï 4 - ᮧ¤ âì ¯ ¯ªã. =============
|
============== ”ãªæ¨ï 58, ¯®¤äãªæ¨ï 4 - ᮧ¤ âì ¯ ¯ªã. =============
|
||||||
======================================================================
|
======================================================================
|
||||||
@ -3495,8 +3496,11 @@ IPC
|
|||||||
* eax = 0 - ãᯥè®
|
* eax = 0 - ãᯥè®
|
||||||
* eax = 1 - ¥¤®áâ â®ç® ¯ ¬ïâ¨
|
* eax = 1 - ¥¤®áâ â®ç® ¯ ¬ïâ¨
|
||||||
‡ ¬¥ç ¨ï:
|
‡ ¬¥ç ¨ï:
|
||||||
* <20> ¤ ë© ¬®¬¥â íâ äãªæ¨ï ï¥âáï ¥¤¨áâ¢¥ë¬ á।á⢮¬ ¤«ï
|
* …áâì ¤à㣮© ᯮᮡ ¢ë¤¥«¥¨ï/®á¢®¡®¦¤¥¨ï ¤¨ ¬¨ç¥áª®© ¯ ¬ï⨠-
|
||||||
¤¨ ¬¨ç¥áª®£® ¢ë¤¥«¥¨ï/®á¢®¡®¦¤¥¨ï ¯ ¬ï⨠¯à¨«®¦¥¨ï.
|
¯®¤äãªæ¨¨ 11, 12, 13 äãªæ¨¨ 68.
|
||||||
|
”ãªæ¨ï ¥ ¬®¦¥â ¨á¯®«ì§®¢ âìáï ᮢ¬¥áâ® á 68.11, 68.12, 68.13
|
||||||
|
‚맮¢ äãªæ¨¨ ¡ã¤¥â ¨£®à¨à®¢ âìáï ¥á«¨ ¯à¨«®¦¥¨¥ ᮧ¤ áâ «®ª «ìãî
|
||||||
|
ªãç㠢맮¢®¬ 68.11
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
================= ”ãªæ¨ï 66 - à ¡®â á ª« ¢¨ âãன. =================
|
================= ”ãªæ¨ï 66 - à ¡®â á ª« ¢¨ âãன. =================
|
||||||
@ -3699,88 +3703,134 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
|||||||
ª®â®à®¥ ¢áñ à ¢® ¯à¨¡ìñâ ¯®â®ª.
|
ª®â®à®¥ ¢áñ à ¢® ¯à¨¡ìñâ ¯®â®ª.
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
======= ”ãªæ¨ï 68, ¯®¤äãªæ¨ï 5 - ¢ë¤¥«¨âì 䨧¨ç¥áªãî ¯ ¬ïâì. =======
|
===== ”ãªæ¨ï 68, ¯®¤äãªæ¨ï 11 - ¨¨æ¨ «¨§¨à®¢ âì ªãçã ¯à®æ¥áá . ====
|
||||||
======================================================================
|
======================================================================
|
||||||
<EFBFBD> à ¬¥âàë:
|
<EFBFBD> à ¬¥âàë:
|
||||||
* eax = 68 - ®¬¥à äãªæ¨¨
|
* eax = 68 - ®¬¥à äãªæ¨¨
|
||||||
* ebx = 5 - ®¬¥à ¯®¤äãªæ¨¨
|
* ebx = 11 - ®¬¥à ¯®¤äãªæ¨¨
|
||||||
* ecx = à §¬¥à (¢ ¡ ©â å)
|
* ecx = à §¬¥à ªãç¨ (¢ ¡ ©â å)
|
||||||
‚®§¢à é ¥¬®¥ § 票¥:
|
‚®§¢à é ¥¬®¥ § 票¥:
|
||||||
* eax = 䨧¨ç¥áª¨© ¤à¥á ¢ë¤¥«¥®© ¯ ¬ïâ¨
|
* eax = 0 - ¥ãᯥå
|
||||||
|
* ¨ ç¥ à §¬¥à ᮧ¤ ®© ªãç¨
|
||||||
‡ ¬¥ç ¨ï:
|
‡ ¬¥ç ¨ï:
|
||||||
* Ž¡ëçë¥ ¯à¨«®¦¥¨ï ¥ ¤®«¦ë ¨á¯®«ì§®¢ âì íâã äãªæ¨î, ®
|
* <20> §¬¥à ªãç¨ ¢ëà ¢¨¢ ¥âáï ¢ ¡®«ìèãî áâ®à®ã £à ¨æã áâà ¨æë.
|
||||||
¯à¥¤ § ç¥ ¤«ï á«ãç ï, ª®£¤ ¯à¨ à ¡®â¥ á ª ª¨¬-«¨¡®
|
* ‚맮¢ äãªæ¨¨ ¨¨æ¨ «¨§¨àã¥â ªãçã, ¨§ ª®â®à®© ¢¯®á«¥¤á⢨¨ ¬®¦®
|
||||||
ãáâனá⢮¬ âॡã¥âáï à §¬¥áâ¨âì ¤ ë¥ ¯® ¨§¢¥á⮬ã 䨧¨ç¥áª®¬ã
|
¢ë¤¥«ïâì ¨ ®á¢®¡®¦¤ âì ¡«®ª¨ ¯ ¬ï⨠¯®¤äãªæ¨ï¬¨ 12 ¨ 13.
|
||||||
¤à¥áã. (‚ áãé®áâ¨, íâ äãªæ¨ï à §à ¡ âë¢ « áì ¤«ï AC97WAV.)
|
* <20>ਠ¯®¢â®à®¬ ¢ë§®¢¥ äãªæ¨¨ ⥬ ¦¥ ¯à®æ¥áᮬ äãªæ¨ï ¢¥àñâ à §¬¥à
|
||||||
* —¨á«® ¡«®ª®¢ 䨧¨ç¥áª®© ¯ ¬ï⨠®£à ¨ç¥® (ª®áâ ⮩ 24,
|
áãé¥áâ¢ãî饩 ªãç¨.
|
||||||
¯à¨çñ¬ íâ ª®áâ â ¢ª«îç ¥â ¨ ¥áª®«ìª® ¡«®ª®¢ ¯ ¬ïâ¨
|
* <20>®á«¥ ᮧ¤ ¨ï ªãç¨ ¢ë§®¢ë äãªæ¨¨ 64.1 ¨£®à¨àãîâáï.
|
||||||
¤«ï ¤®¡®á⥩ ï¤à ).
|
|
||||||
* Žá¢®¡®¤¨âì ¢ë¤¥«¥ãî â ª¨¬ ®¡à §®¬ ¯ ¬ïâì ¬®¦®
|
|
||||||
¯®¤äãªæ¨¥© 6, ª®¯¨à®¢ ¨¥¬ ¤ ëå â㤠/®¡à â®
|
|
||||||
§ ¨¬ îâáï ¯®¤äãªæ¨¨ 7 ¨ 8.
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
====== ”ãªæ¨ï 68, ¯®¤äãªæ¨ï 6 - ®á¢®¡®¤¨âì 䨧¨ç¥áªãî ¯ ¬ïâì. ======
|
========== ”ãªæ¨ï 68, ¯®¤äãªæ¨ï 12 - ¢ë¤¥«¨âì ¡«®ª ¯ ¬ïâ¨. =========
|
||||||
======================================================================
|
======================================================================
|
||||||
<EFBFBD> à ¬¥âàë:
|
<EFBFBD> à ¬¥âàë:
|
||||||
* eax = 68 - ®¬¥à äãªæ¨¨
|
* eax = 68 - ®¬¥à äãªæ¨¨
|
||||||
* ebx = 6 - ®¬¥à ¯®¤äãªæ¨¨
|
* ebx = 12 - ®¬¥à ¯®¤äãªæ¨¨
|
||||||
* ecx = 䨧¨ç¥áª¨© ¤à¥á ¯ ¬ïâ¨
|
* ecx = âà¥¡ã¥¬ë© à §¬¥à ¢ ¡ ©â å
|
||||||
‚®§¢à é ¥¬®¥ § 票¥:
|
‚®§¢à é ¥¬®¥ § 票¥:
|
||||||
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï
|
* eax = 㪠§ â¥«ì ¢ë¤¥«¥ë© ¡«®ª
|
||||||
‡ ¬¥ç ¨ï:
|
‡ ¬¥ç ¨ï:
|
||||||
* Ž¡ëçë¥ ¯à¨«®¦¥¨ï ¥ ¤®«¦ë ¨á¯®«ì§®¢ âì íâã äãªæ¨î, ®
|
* <20>।¢ à¨â¥«ì® á«¥¤ã¥â ¨¨æ¨ «¨§¨à®¢ âì ªãçã ¯à®æ¥áá ¢ë§®¢®¬
|
||||||
¯à¥¤ § ç¥ ¤«ï á«ãç ï, ª®£¤ ¯à¨ à ¡®â¥ á ª ª¨¬-«¨¡®
|
¯®¤äãªæ¨¨ 11.
|
||||||
ãáâனá⢮¬ âॡã¥âáï à §¬¥áâ¨âì ¤ ë¥ ¯® ¨§¢¥á⮬ã 䨧¨ç¥áª®¬ã
|
* ”ãªæ¨ï ¢ë¤¥«ï¥â 楫®¥ ç¨á«® áâà ¨æ (4 Š¡) â ª, çâ® ä ªâ¨ç¥áª¨©
|
||||||
¤à¥áã. (‚ áãé®áâ¨, íâ äãªæ¨ï à §à ¡ âë¢ « áì ¤«ï AC97WAV.)
|
à §¬¥à ¢ë¤¥«¥®£® ¡«®ª ¡®«ìè¥ ¨«¨ à ¢¥ § ¯à®è¥®¬ã.
|
||||||
* <20> ¬ïâì ¤®«¦ ¡ëâì à ¥¥ ¢ë¤¥«¥ ¯®¤äãªæ¨¥© 5.
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
=== ”ãªæ¨ï 68, ¯®¤äãªæ¨ï 7 - § ¯¨á âì ¤ ë¥ ¢ 䨧¨ç¥áªãî ¯ ¬ïâì. ==
|
========= ”ãªæ¨ï 68, ¯®¤äãªæ¨ï 13 - ®á¢®¡®¤¨âì ¡«®ª ¯ ¬ïâ¨. ========
|
||||||
======================================================================
|
======================================================================
|
||||||
<EFBFBD> à ¬¥âàë:
|
<EFBFBD> à ¬¥âàë:
|
||||||
* eax = 68 - ®¬¥à äãªæ¨¨
|
* eax = 68 - ®¬¥à äãªæ¨¨
|
||||||
* ebx = 7 - ®¬¥à ¯®¤äãªæ¨¨
|
* ebx = 13 - ®¬¥à ¯®¤äãªæ¨¨
|
||||||
* ecx = 䨧¨ç¥áª¨© ¤à¥á
|
* ecx = 㪠§ â¥«ì ¡«®ª ¯ ¬ïâ¨
|
||||||
* edx = 㪠§ â¥«ì ¤ ë¥ (¢ ¯à¨«®¦¥¨¨)
|
|
||||||
* esi = à §¬¥à ¤ ëå (¢ ¡ ©â å)
|
|
||||||
‚®§¢à é ¥¬®¥ § 票¥:
|
‚®§¢à é ¥¬®¥ § 票¥:
|
||||||
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï
|
* eax = 1 - ãᯥè®
|
||||||
|
* eax = 0 - ¥ã¤ ç
|
||||||
‡ ¬¥ç ¨ï:
|
‡ ¬¥ç ¨ï:
|
||||||
* Ž¡ëçë¥ ¯à¨«®¦¥¨ï ¥ ¤®«¦ë ¨á¯®«ì§®¢ âì íâã äãªæ¨î, ®
|
* <20>«®ª ¯ ¬ï⨠¤®«¦¥ ¡ëâì à ¥¥ ¢ë¤¥«¥ ¯®¤äãªæ¨¥© 12.
|
||||||
¯à¥¤ § ç¥ ¤«ï á«ãç ï, ª®£¤ ¯à¨ à ¡®â¥ á ª ª¨¬-«¨¡®
|
|
||||||
ãáâனá⢮¬ âॡã¥âáï à §¬¥áâ¨âì ¤ ë¥ ¯® ¨§¢¥á⮬ã 䨧¨ç¥áª®¬ã
|
|
||||||
¤à¥áã. (‚ áãé®áâ¨, íâ äãªæ¨ï à §à ¡ âë¢ « áì ¤«ï AC97WAV.)
|
|
||||||
* „¨ ¯ §® 䨧¨ç¥áª¨å ¤à¥á®¢ ¤®«¦¥ «¥¦ âì ¢ãâà¨ à ¥¥ ¢ë¤¥«¥®£®
|
|
||||||
¯®¤äãªæ¨¥© 5 ¡«®ª 䨧¨ç¥áª®© ¯ ¬ïâ¨.
|
|
||||||
* <20>஢¥à®ª ª®à४â®á⨠¥ ¯à®¨§¢®¤¨âáï.
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
== ”ãªæ¨ï 68, ¯®¤äãªæ¨ï 8 - ¯à®ç¨â âì ¤ ë¥ ¨§ 䨧¨ç¥áª®© ¯ ¬ïâ¨. =
|
===== ”ãªæ¨ï 68, ¯®¤äãªæ¨ï 14 - ®¦¨¤ âì ¨§¢¥é¥¨ï ®â ¤à ©¢¥à . =====
|
||||||
======================================================================
|
======================================================================
|
||||||
<EFBFBD> à ¬¥âàë:
|
<EFBFBD> à ¬¥âàë:
|
||||||
* eax = 68 - ®¬¥à äãªæ¨¨
|
* eax = 68 - ®¬¥à äãªæ¨¨
|
||||||
* ebx = 8 - ®¬¥à ¯®¤äãªæ¨¨
|
* ebx = 14 - ®¬¥à ¯®¤äãªæ¨¨
|
||||||
* ecx = 䨧¨ç¥áª¨© ¤à¥á
|
* ecx = 㪠§ â¥«ì ¡ãä¥à ¤«ï ¨ä®à¬ 樨 (8 ¡ ©â)
|
||||||
* edx = 㪠§ â¥«ì ¡ãä¥à ¤«ï ¤ ëå (¢ ¯à¨«®¦¥¨¨)
|
|
||||||
* esi = à §¬¥à ¤ ëå (¢ ¡ ©â å)
|
|
||||||
‚®§¢à é ¥¬®¥ § 票¥:
|
‚®§¢à é ¥¬®¥ § 票¥:
|
||||||
* äãªæ¨ï ¥ ¢®§¢à é ¥â § 票ï
|
* ¡ãä¥à, ª®â®àë© ãª §ë¢ ¥â ecx, ᮤ¥à¦¨â á«¥¤ãîéãî ¨ä®à¬ æ¨î:
|
||||||
|
* +0: dword: ª®áâ â EV_INTR = 1
|
||||||
|
* +4: dword: ¤ ë¥ ¤à ©¢¥à
|
||||||
‡ ¬¥ç ¨ï:
|
‡ ¬¥ç ¨ï:
|
||||||
* Ž¡ëçë¥ ¯à¨«®¦¥¨ï ¥ ¤®«¦ë ¨á¯®«ì§®¢ âì íâã äãªæ¨î, ®
|
* ’¥ªãé ï ॠ«¨§ æ¨ï ¢® ¢à¥¬ï ®¦¨¤ ¨ï âॡã¥â ¤®¢®«ì® "âï¦ñ«ëå"
|
||||||
¯à¥¤ § ç¥ ¤«ï á«ãç ï, ª®£¤ ¯à¨ à ¡®â¥ á ª ª¨¬-«¨¡®
|
®¯¥à 権 ¯¥à¥ª«îç¥¨ï ª®â¥ªáâ .
|
||||||
ãáâனá⢮¬ âॡã¥âáï à §¬¥áâ¨âì ¤ ë¥ ¯® ¨§¢¥á⮬ã 䨧¨ç¥áª®¬ã
|
|
||||||
¤à¥áã. (‚ áãé®áâ¨, íâ äãªæ¨ï à §à ¡ âë¢ « áì ¤«ï AC97WAV.)
|
======================================================================
|
||||||
* „¨ ¯ §® 䨧¨ç¥áª¨å ¤à¥á®¢ ¤®«¦¥ «¥¦ âì ¢ãâà¨ à ¥¥ ¢ë¤¥«¥®£®
|
== ”ãªæ¨ï 68, ¯®¤äãªæ¨ï 15 - ãáâ ®¢¨âì ®¡à ¡®â稪 ¨áª«î票© FPU. =
|
||||||
¯®¤äãªæ¨¥© 5 ¡«®ª 䨧¨ç¥áª®© ¯ ¬ïâ¨.
|
======================================================================
|
||||||
* <20>஢¥à®ª ª®à४â®á⨠¥ ¯à®¨§¢®¤¨âáï.
|
<EFBFBD> à ¬¥âàë:
|
||||||
|
* eax = 68 - ®¬¥à äãªæ¨¨
|
||||||
|
* ebx = 15 - ®¬¥à ¯®¤äãªæ¨¨
|
||||||
|
* ecx = ¤à¥á ®¢®£® ®¡à ¡®â稪 ¨áª«î票©
|
||||||
|
‚®§¢à é ¥¬®¥ § 票¥:
|
||||||
|
* eax = ¤à¥á áâ ண® ®¡à ¡®â稪 ¨áª«î票©
|
||||||
|
(0, ¥á«¨ ® ¥ ¡ë« ãáâ ®¢«¥)
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
=========== ”ãªæ¨ï 68, ¯®¤äãªæ¨ï 16 - § £à㧨âì ¤à ©¢¥à. ===========
|
||||||
|
======================================================================
|
||||||
|
<EFBFBD> à ¬¥âàë:
|
||||||
|
* eax = 68 - ®¬¥à äãªæ¨¨
|
||||||
|
* ebx = 16 - ®¬¥à ¯®¤äãªæ¨¨
|
||||||
|
* ecx = 㪠§ ⥫ì ASCIIZ áâபã á ¨¬¥¥¬ ¤à ©¢¥à
|
||||||
|
¬ ªá¨¬ «ì ï ¤«¨ ¨¬¥¨ 16 ᨬ¢®«®¢ ¢ª«îç ï ®«ì
|
||||||
|
®áâ «ìë¥ á¨¬¢®«ë ¨£®à¨àãîâáï
|
||||||
|
‚®§¢à é ¥¬®¥ § 票¥:
|
||||||
|
* eax = 0 - ¥ã¤ ç
|
||||||
|
* ¨ ç¥ eax = åí¤« ¤à ©¢¥à
|
||||||
|
‡ ¬¥ç ¨ï:
|
||||||
|
* …᫨ ¤à ©¢¥à ¥éñ ¥ § £à㦥, ® § £à㦠¥âáï;
|
||||||
|
¥á«¨ ¤à ©¢¥à 㦥 § £à㦥, ¨ç¥£® ¥ ¬¥ï¥âáï.
|
||||||
|
* ˆ¬ï ¤à ©¢¥à çã¢áâ¢¨â¥«ì® ª ॣ¨áâàã ᨬ¢®«®¢.
|
||||||
|
* Œ®¦® § £à㦠âì ⮫쪮 ¤à ©¢¥à , § ॣ¨áâà¨à®¢ ë¥ ¢ á¨á⥬¥;
|
||||||
|
¢ ⥪ã饩 ॠ«¨§ 樨 ¥áâì ஢® 2 â ª¨å ¤à ©¢¥à :
|
||||||
|
* ¨¬ï SOUND, ä ©« /rd/1/unisound.obj
|
||||||
|
* ¨¬ï INFINITY, ä ©« /rd/1/infinity.obj
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
========== ”ãªæ¨ï 68, ¯®¤äãªæ¨ï 17 - ã¯à ¢«¥¨¥ ¤à ©¢¥à®¬. =========
|
||||||
|
======================================================================
|
||||||
|
<EFBFBD> à ¬¥âàë:
|
||||||
|
* eax = 68 - ®¬¥à äãªæ¨¨
|
||||||
|
* ebx = 17 - ®¬¥à ¯®¤äãªæ¨¨
|
||||||
|
* ecx = 㪠§ ⥫ì ã¯à ¢«ïîéãî áâàãªâãàã:
|
||||||
|
* +0: dword: åí¤« ¤à ©¢¥à
|
||||||
|
* +4: dword: ª®¤ äãªæ¨¨ ¤à ©¢¥à
|
||||||
|
* +8: dword: 㪠§ â¥«ì ¢å®¤ë¥ ¤ ë¥
|
||||||
|
* +12 = +0xC: dword: à §¬¥à ¢å®¤ëå ¤ ëå
|
||||||
|
* +16 = +0x10: dword: 㪠§ â¥«ì ¢ëå®¤ë¥ ¤ ë¥
|
||||||
|
* +20 = +0x14: dword: à §¬¥à ¢ë室ëå ¤ ëå
|
||||||
|
‚®§¢à é ¥¬®¥ § 票¥:
|
||||||
|
* eax = ®¯à¥¤¥«ï¥âáï ¤à ©¢¥à®¬
|
||||||
|
‡ ¬¥ç ¨ï:
|
||||||
|
* Š®¤ë äãªæ¨© ¨ áâàãªâãà ¢å®¤ëå/¢ë室ëå ¤ ëå
|
||||||
|
®¯à¥¤¥«ïîâáï ¤à ©¢¥à®¬.
|
||||||
|
* <20>।¢ à¨â¥«ì® ¤®«¦¥ ¡ëâì ¯®«ãç¥ åí¤« ¤à ©¢¥à ¯®¤äãªæ¨¥© 16.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
== ”ãªæ¨ï 68, ¯®¤äãªæ¨ï 18 - ãáâ ®¢¨âì ®¡à ¡®â稪 ¨áª«î票© SSE. =
|
||||||
|
======================================================================
|
||||||
|
<EFBFBD> à ¬¥âàë:
|
||||||
|
* eax = 68 - ®¬¥à äãªæ¨¨
|
||||||
|
* ebx = 18 - ®¬¥à ¯®¤äãªæ¨¨
|
||||||
|
* ecx = ¤à¥á ®¢®£® ®¡à ¡®â稪 ¨áª«î票©
|
||||||
|
‚®§¢à é ¥¬®¥ § 票¥:
|
||||||
|
* eax = ¤à¥á áâ ண® ®¡à ¡®â稪 ¨áª«î票©
|
||||||
|
(0, ¥á«¨ ® ¥ ¡ë« ãáâ ®¢«¥)
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
======================== ”ãªæ¨ï 69 - ®â« ¤ª . =======================
|
======================== ”ãªæ¨ï 69 - ®â« ¤ª . =======================
|
||||||
======================================================================
|
======================================================================
|
||||||
<EFBFBD>à®æ¥áá ¬®¦¥â § £à㧨âì ¤à㣮© ¯à®æ¥áá ª ª ®â« ¦¨¢ ¥¬ë© ãáâ ®¢ª®©
|
<EFBFBD>à®æ¥áá ¬®¦¥â § £à㧨âì ¤à㣮© ¯à®æ¥áá ª ª ®â« ¦¨¢ ¥¬ë© ãáâ ®¢ª®©
|
||||||
ᮮ⢥âáâ¢ãî饣® ¡¨â ¯à¨ ¢ë§®¢¥ ¯®¤äãªæ¨¨ 16 äãªæ¨¨ 58
|
ᮮ⢥âáâ¢ãî饣® ¡¨â ¯à¨ ¢ë§®¢¥ ¯®¤äãªæ¨¨ 7 äãªæ¨¨ 70.
|
||||||
¨«¨ ¯®¤äãªæ¨¨ 7 äãªæ¨¨ 70.
|
|
||||||
“ ¯à®æ¥áá ¬®¦¥â ¡ëâì ⮫쪮 ®¤¨ ®â« ¤ç¨ª; ®¤¨ ¯à®æ¥áá ¬®¦¥â
|
“ ¯à®æ¥áá ¬®¦¥â ¡ëâì ⮫쪮 ®¤¨ ®â« ¤ç¨ª; ®¤¨ ¯à®æ¥áá ¬®¦¥â
|
||||||
®â« ¦¨¢ âì ¥áª®«ìª® à §ëå. ‘¨á⥬ 㢥¤®¬«ï¥â ®â« ¤ç¨ª ® ᮡëâ¨ïå,
|
®â« ¦¨¢ âì ¥áª®«ìª® à §ëå. ‘¨á⥬ 㢥¤®¬«ï¥â ®â« ¤ç¨ª ® ᮡëâ¨ïå,
|
||||||
¯à®¨á室ïé¨å á ®â« ¦¨¢ ¥¬ë¬ ¯à®æ¥áᮬ. ‘®®¡é¥¨ï § ¯¨áë¢ îâáï ¢ ¡ãä¥à,
|
¯à®¨á室ïé¨å á ®â« ¦¨¢ ¥¬ë¬ ¯à®æ¥áᮬ. ‘®®¡é¥¨ï § ¯¨áë¢ îâáï ¢ ¡ãä¥à,
|
||||||
@ -4082,6 +4132,7 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
|||||||
* ¯®¤äãªæ¨ï 5 - ¯®«ã票¥ âਡã⮢ ä ©« /¯ ¯ª¨
|
* ¯®¤äãªæ¨ï 5 - ¯®«ã票¥ âਡã⮢ ä ©« /¯ ¯ª¨
|
||||||
* ¯®¤äãªæ¨ï 6 - ãáâ ®¢ª âਡã⮢ ä ©« /¯ ¯ª¨
|
* ¯®¤äãªæ¨ï 6 - ãáâ ®¢ª âਡã⮢ ä ©« /¯ ¯ª¨
|
||||||
* ¯®¤äãªæ¨ï 7 - § ¯ã᪠¯à®£à ¬¬ë
|
* ¯®¤äãªæ¨ï 7 - § ¯ã᪠¯à®£à ¬¬ë
|
||||||
|
* ¯®¤äãªæ¨ï 8 - 㤠«¥¨¥ ä ©« /¯ ¯ª¨
|
||||||
„«ï CD-¯à¨¢®¤®¢ ¢ á¢ï§¨ á ¯¯ à â묨 ®£à ¨ç¥¨ï¬¨ ¤®áâã¯ë
|
„«ï CD-¯à¨¢®¤®¢ ¢ á¢ï§¨ á ¯¯ à â묨 ®£à ¨ç¥¨ï¬¨ ¤®áâã¯ë
|
||||||
⮫쪮 ¯®¤äãªæ¨¨ 0,1,5 ¨ 7, ¢ë§®¢ ¤àã£¨å ¯®¤äãªæ¨© § ¢¥àè¨âáï
|
⮫쪮 ¯®¤äãªæ¨¨ 0,1,5 ¨ 7, ¢ë§®¢ ¤àã£¨å ¯®¤äãªæ¨© § ¢¥àè¨âáï
|
||||||
®è¨¡ª®© á ª®¤®¬ 2.
|
®è¨¡ª®© á ª®¤®¬ 2.
|
||||||
@ -4394,6 +4445,31 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
|||||||
¢ § ¬®à®¦¥®¬ á®áâ®ï¨¨; ¤«ï § ¯ã᪠¨á¯®«ì§ã©â¥
|
¢ § ¬®à®¦¥®¬ á®áâ®ï¨¨; ¤«ï § ¯ã᪠¨á¯®«ì§ã©â¥
|
||||||
¯®¤äãªæ¨î 5 äãªæ¨¨ 69.
|
¯®¤äãªæ¨î 5 äãªæ¨¨ 69.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
========== ”ãªæ¨ï 70, ¯®¤äãªæ¨ï 8 - 㤠«¥¨¥ ä ©« /¯ ¯ª¨. ==========
|
||||||
|
======================================================================
|
||||||
|
<EFBFBD> à ¬¥âàë:
|
||||||
|
* eax = 70 - ®¬¥à äãªæ¨¨
|
||||||
|
* ebx = 㪠§ â¥«ì ¨ä®à¬ 樮ãî áâàãªâãàã
|
||||||
|
”®à¬ â ¨ä®à¬ 樮®© áâàãªâãàë:
|
||||||
|
* +0: dword: 8 = ®¬¥à ¯®¤äãªæ¨¨
|
||||||
|
* +4: dword: 0 (§ १¥à¢¨à®¢ ®)
|
||||||
|
* +8: dword: 0 (§ १¥à¢¨à®¢ ®)
|
||||||
|
* +12 = +0xC: dword: 0 (§ १¥à¢¨à®¢ ®)
|
||||||
|
* +16 = +0x10: dword: 0 (§ १¥à¢¨à®¢ ®)
|
||||||
|
* +20 = +0x14: ASCIIZ-¨¬ï ä ©« , ¯à ¢¨« ä®à¬¨à®¢ ¨ï ¨¬ñ 㪠§ ë ¢
|
||||||
|
®¡é¥¬ ®¯¨á ¨¨
|
||||||
|
¨«¨
|
||||||
|
* +20 = +0x14: db 0
|
||||||
|
* +21 = +0x15: dd 㪠§ ⥫ì ASCIIZ-áâபã á ¨¬¥¥¬ ä ©«
|
||||||
|
‚®§¢à é ¥¬®¥ § 票¥:
|
||||||
|
* eax = 0 - ãᯥè®, ¨ ç¥ ª®¤ ®è¨¡ª¨ ä ©«®¢®© á¨á⥬ë
|
||||||
|
* ebx à §àãè ¥âáï
|
||||||
|
‡ ¬¥ç ¨ï:
|
||||||
|
* ”ãªæ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï ¤«ï CD (¢¥àñâáï ª®¤ ®è¨¡ª¨ 2).
|
||||||
|
* Œ®¦® 㤠«ïâì ⮫쪮 ¯ãáâë¥ ¯ ¯ª¨ (¯®¯ë⪠㤠«¥¨ï ¥¯ãá⮩ ¯ ¯ª¨
|
||||||
|
¯à¨¢¥¤ñâ ª ®è¨¡ª¥ á ª®¤®¬ 10, "¤®áâ㯠§ ¯à¥éñ").
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
=== ”ãªæ¨ï 71, ¯®¤äãªæ¨ï 1 - ãáâ ®¢¨âì § £®«®¢®ª ®ª ¯à®£à ¬¬ë. ==
|
=== ”ãªæ¨ï 71, ¯®¤äãªæ¨ï 1 - ãáâ ®¢¨âì § £®«®¢®ª ®ª ¯à®£à ¬¬ë. ==
|
||||||
======================================================================
|
======================================================================
|
||||||
@ -4481,4 +4557,4 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
|
|||||||
<EFBFBD>ਠ§ ¯ã᪥ ¯à®£à ¬¬ë ¢®§¬®¦ë â ª¦¥ á«¥¤ãî騥 ª®¤ë ®è¨¡®ª:
|
<EFBFBD>ਠ§ ¯ã᪥ ¯à®£à ¬¬ë ¢®§¬®¦ë â ª¦¥ á«¥¤ãî騥 ª®¤ë ®è¨¡®ª:
|
||||||
* 30 = 0x1E = ¥¤®áâ â®ç® ¯ ¬ïâ¨
|
* 30 = 0x1E = ¥¤®áâ â®ç® ¯ ¬ïâ¨
|
||||||
* 31 = 0x1F = ä ©« ¥ ï¥âáï ¨á¯®«¨¬ë¬
|
* 31 = 0x1F = ä ©« ¥ ï¥âáï ¨á¯®«¨¬ë¬
|
||||||
* 32 = 0x20 = ᫨誮¬ ¬®£® ¯à®æ¥áᮢ
|
* 32 = 0x20 = ᫨誮¬ ¬®£® ¯à®æ¥áᮢ
|
||||||
|
4557
kernel/trunk/docs/sysfuncr.txt.bak
Normal file
4557
kernel/trunk/docs/sysfuncr.txt.bak
Normal file
File diff suppressed because it is too large
Load Diff
@ -374,7 +374,6 @@ B32:
|
|||||||
@@:
|
@@:
|
||||||
mov [pg_data.kernel_tables], edx
|
mov [pg_data.kernel_tables], edx
|
||||||
|
|
||||||
|
|
||||||
;!!!!!!!!!!!!!!!!!!!!!!!!!!
|
;!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
include 'detect/disks.inc'
|
include 'detect/disks.inc'
|
||||||
;!!!!!!!!!!!!!!!!!!!!!!!!!!
|
;!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
@ -684,6 +683,9 @@ include 'vmodeld.inc'
|
|||||||
sub eax,ecx
|
sub eax,ecx
|
||||||
shl eax,2
|
shl eax,2
|
||||||
mov [0xf600],eax ; save tsc / sec
|
mov [0xf600],eax ; save tsc / sec
|
||||||
|
mov ebx, 1000000
|
||||||
|
div ebx
|
||||||
|
mov [stall_mcs], eax
|
||||||
|
|
||||||
; SET VARIABLES
|
; SET VARIABLES
|
||||||
|
|
||||||
|
@ -177,8 +177,10 @@ struc APPDATA
|
|||||||
.fpu_handler dd ? ;+24
|
.fpu_handler dd ? ;+24
|
||||||
.sse_handler dd ? ;+28
|
.sse_handler dd ? ;+28
|
||||||
.event dd ? ;+32
|
.event dd ? ;+32
|
||||||
|
.heap_base dd ? ;+36
|
||||||
|
.heap_top dd ? ;+40
|
||||||
|
|
||||||
db 92 dup(?)
|
db 84 dup(?) ;+44
|
||||||
|
|
||||||
.wnd_shape dd ? ;+128
|
.wnd_shape dd ? ;+128
|
||||||
.wnd_shape_scale dd ?
|
.wnd_shape_scale dd ?
|
||||||
|
Loading…
Reference in New Issue
Block a user