[KERNEL] updated local labels in functions and other small changes

git-svn-id: svn://kolibrios.org@9910 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Doczom 2023-04-08 21:24:05 +00:00
parent fbb49920de
commit cf0e9867b0
11 changed files with 289 additions and 298 deletions

View File

@ -57,7 +57,6 @@ endg
align 4
pci_api:
;cross
mov eax, ebx
mov ebx, ecx
@ -76,8 +75,8 @@ else
ja pci_service_not_supported
end if
call dword [f62call+edx*4]
mov dword [esp+32], eax
call dword [f62call + edx*4]
mov dword [esp + SYSCALL_STACK.eax], eax
ret
@ -90,7 +89,7 @@ pci_api_drv:
cmp eax, 2
ja .fail
jmp dword [f62call+eax*4]
jmp dword [f62call + eax*4]
.fail:
or eax, -1
@ -116,7 +115,7 @@ pci_fn_2:
pci_service_not_supported:
or eax, -1
mov dword [esp+32], eax
mov dword [esp + SYSCALL_STACK.eax], eax
ret
;***************************************************************************
@ -157,7 +156,7 @@ align 4
pci_read_reg:
push ebx esi
cmp [BOOT.pci_data.access_mechanism], 2; what mechanism will we use?
je pci_read_reg_2
je .pci_read_reg_2
; mechanism 1
mov esi, eax ; save register size into ESI
@ -176,28 +175,29 @@ pci_read_reg:
or dl, bl ; add to port address first 2 bits of register address
or esi, esi
jz pci_read_byte1
jz .byte1
cmp esi, 1
jz pci_read_word1
jz .word1
cmp esi, 2
jz pci_read_dword1
jmp pci_fin_read1
jz .dword1
jmp .fin_read1
pci_read_byte1:
.byte1:
in al, dx
jmp pci_fin_read1
pci_read_word1:
jmp .fin_read1
.word1:
in ax, dx
jmp pci_fin_read1
pci_read_dword1:
jmp .fin_read1
.dword1:
in eax, dx
pci_fin_read1:
.fin_read1:
pop esi ebx
ret
pci_read_reg_2:
.pci_read_reg_2:
test bh, 128 ;mech#2 only supports 16 devices per bus
jnz pci_read_reg_err
jnz .pci_read_reg_err
mov esi, eax ; save register size into ESI
and esi, 3
@ -217,27 +217,27 @@ pci_read_reg_2:
mov dx, bx
or esi, esi
jz pci_read_byte2
jz .byte2
cmp esi, 1
jz pci_read_word2
jz .word2
cmp esi, 2
jz pci_read_dword2
jmp pci_fin_read2
jz .dword2
jmp .fin_read2
pci_read_byte2:
.byte2:
in al, dx
jmp pci_fin_read2
pci_read_word2:
jmp .fin_read2
.word2:
in ax, dx
jmp pci_fin_read2
pci_read_dword2:
jmp .fin_read2
.dword2:
in eax, dx
pci_fin_read2:
.fin_read2:
pop esi ebx
ret
pci_read_reg_err:
.pci_read_reg_err:
xor eax, eax
dec eax
pop esi ebx
@ -281,22 +281,22 @@ pci_write_reg:
mov eax, ecx
or esi, esi
jz pci_write_byte1
jz .byte1
cmp esi, 1
jz pci_write_word1
jz .word1
cmp esi, 2
jz pci_write_dword1
jmp pci_fin_write1
jz .dword1
jmp .fin_write1
pci_write_byte1:
.byte1:
out dx, al
jmp pci_fin_write1
pci_write_word1:
jmp .fin_write1
.word1:
out dx, ax
jmp pci_fin_write1
pci_write_dword1:
jmp .fin_write1
.dword1:
out dx, eax
pci_fin_write1:
.fin_write1:
xor eax, eax
pop ebx esi
@ -305,7 +305,7 @@ pci_fin_write1:
pci_write_reg_2:
test bh, 128 ;mech#2 only supports 16 devices per bus
jnz pci_write_reg_err
jnz .pci_write_reg_err
mov esi, eax ; save register size into ESI
@ -327,28 +327,28 @@ pci_write_reg_2:
mov eax, ecx
or esi, esi
jz pci_write_byte2
jz .byte2
cmp esi, 1
jz pci_write_word2
jz .word2
cmp esi, 2
jz pci_write_dword2
jmp pci_fin_write2
jz .dword2
jmp .fin_write2
pci_write_byte2:
.byte2:
out dx, al
jmp pci_fin_write2
pci_write_word2:
jmp .fin_write2
.word2:
out dx, ax
jmp pci_fin_write2
pci_write_dword2:
jmp .fin_write2
.dword2:
out dx, eax
pci_fin_write2:
.fin_write2:
xor eax, eax
pop ebx esi
ret
pci_write_reg_err:
.pci_write_reg_err:
xor eax, eax
dec eax
pop ebx esi
@ -432,12 +432,12 @@ pci_mmio_map:
or eax, eax
jnz @f
mov eax, -3 ; empty I/O space
jmp mmio_ret_fail
jmp .mmio_ret_fail
@@:
test eax, 1
jz @f
mov eax, -4 ; damned ports (not MMIO space)
jmp mmio_ret_fail
jmp .mmio_ret_fail
@@:
pop ecx ; ecx = block size, bytes (expanded to whole page)
mov ebx, ecx; user_alloc destroys eax, ecx, edx, but saves ebx
@ -445,15 +445,15 @@ pci_mmio_map:
push eax ; store MMIO physical address + keep 2DWords in the stack
stdcall user_alloc, ecx
or eax, eax
jnz mmio_map_over
jnz .mmio_map_over
mov eax, -5 ; problem with page allocation
mmio_ret_fail:
.mmio_ret_fail:
pop ecx
pop edx
ret
mmio_map_over:
.mmio_map_over:
mov ecx, ebx; ecx = size (bytes, expanded to whole page)
shr ecx, 12 ; ecx = number of pages
mov ebx, eax; ebx = linear address
@ -596,16 +596,16 @@ sys_pcibios:
.unsupported_func:
mov ah, 0x81 ; FUNC_NOT_SUPPORTED
.return:
mov dword[esp + 4 ], edi
mov dword[esp + 8], esi
mov dword[esp + SYSCALL_STACK.edi], edi
mov dword[esp + SYSCALL_STACK.esi], esi
.return_abcd:
mov dword[esp + 24], edx
mov dword[esp + SYSCALL_STACK.edx], edx
.return_abc:
mov dword[esp + 28], ecx
mov dword[esp + SYSCALL_STACK.ecx], ecx
.return_ab:
mov dword[esp + 20], ebx
mov dword[esp + SYSCALL_STACK.ebx], ebx
.return_a:
mov dword[esp + 32], eax
mov dword[esp + SYSCALL_STACK.eax], eax
ret
proc pci_enum

View File

@ -936,7 +936,7 @@ sys_IPC:
jb .touch
popf
mov [esp+32], ebx ;ebx=0
mov [esp + SYSCALL_STACK.eax], ebx ;ebx=0
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -946,11 +946,11 @@ sys_IPC:
jnz @f
stdcall sys_ipc_send, ecx, edx, esi
mov [esp+32], eax
mov [esp + SYSCALL_STACK.eax], eax
ret
@@:
or eax, -1
mov [esp+32], eax
mov [esp + SYSCALL_STACK.eax], eax
ret
proc sys_ipc_send stdcall, PID:dword, msg_addr:dword, msg_size:dword
@ -1079,22 +1079,22 @@ sysfn_meminfo:
mov eax, [pg_data.pages_count]
mov [ecx], eax
shl eax, 12
mov [esp+32], eax
mov [esp + SYSCALL_STACK.eax], eax
mov eax, [pg_data.pages_free]
mov [ecx+4], eax
mov [ecx + 4], eax
mov eax, [pg_data.pages_faults]
mov [ecx+8], eax
mov [ecx + 8], eax
mov eax, [heap_size]
mov [ecx+12], eax
mov [ecx + 12], eax
mov eax, [heap_free]
mov [ecx+16], eax
mov [ecx + 16], eax
mov eax, [heap_blocks]
mov [ecx+20], eax
mov [ecx + 20], eax
mov eax, [free_blocks]
mov [ecx+24], eax
mov [ecx + 24], eax
ret
.fail:
or dword [esp+32], -1
or dword [esp + SYSCALL_STACK.eax], -1
ret
align 4

View File

@ -76,6 +76,7 @@ update_counters:
sub eax, [esi - sizeof.APPDATA + APPDATA.counter_add] ; time stamp counter add
add [esi - sizeof.APPDATA + APPDATA.counter_sum], eax ; counter sum
ret
align 4
updatecputimes:
mov ecx, [thread_count]

View File

@ -525,18 +525,18 @@ destroy_thread:
jb .loop2
mov ecx, esi ; remove buttons
bnewba2:
.bnewba2:
mov edi, [BTN_ADDR]
mov eax, edi
cld
movzx ebx, word [edi]
inc bx
bnewba:
.bnewba:
dec bx
jz bnmba
jz .bnmba
add eax, 0x10
cmp cx, [eax]
jnz bnewba
jnz .bnewba
pusha
mov ecx, ebx
inc ecx
@ -546,8 +546,8 @@ destroy_thread:
call memmove
dec dword [edi]
popa
jmp bnewba2
bnmba:
jmp .bnewba2
.bnmba:
pusha ; save window coordinates for window restoring
cld
@ -662,27 +662,27 @@ destroy_thread:
shl edx, BSF sizeof.APPDATA
mov edx, [SLOT_BASE + edx + APPDATA.tid]
rmpr0:
.rmpr0:
mov esi, [RESERVED_PORTS]
test esi, esi
jz rmpr9
jz .rmpr9
rmpr3:
.rmpr3:
mov edi, esi
shl edi, 4
add edi, RESERVED_PORTS
cmp edx, [edi]
je rmpr4
je .rmpr4
dec esi
jnz rmpr3
jnz .rmpr3
jmp rmpr9
jmp .rmpr9
rmpr4:
.rmpr4:
mov ecx, 256
sub ecx, esi
@ -695,9 +695,9 @@ destroy_thread:
dec dword [RESERVED_PORTS]
jmp rmpr0
jmp .rmpr0
rmpr9:
.rmpr9:
popa
; clearing APPDATA structure this thread

View File

@ -20,12 +20,12 @@ endg
align 4
sys_background:
cmp ebx, 1 ; BACKGROUND SIZE
jnz nosb1
jnz .nosb1
test ecx, ecx
jz sbgrr
jz .sbgrr
test edx, edx
jz sbgrr
jz .sbgrr
;--------------------------------------
align 4
@@:
@ -98,13 +98,13 @@ align 4
mov [bgrlock], 0
;--------------------------------------
align 4
sbgrr:
.sbgrr:
ret
;--------------------------------------
align 4
nosb1:
.nosb1:
cmp ebx, 2 ; SET PIXEL
jnz nosb2
jnz .nosb2
mov eax, [img_background]
test ecx, ecx
@ -115,8 +115,8 @@ nosb1:
align 4
@@:
mov ebx, [mem_BACKGROUND]
add ebx, 4095
and ebx, -4096
add ebx, PAGE_SIZE-1
and ebx, -PAGE_SIZE
sub ebx, 4
cmp ecx, ebx
ja .ret
@ -132,7 +132,7 @@ align 4
ret
;--------------------------------------
align 4
nosb2:
.nosb2:
cmp ebx, 3 ; DRAW BACKGROUND
jnz nosb3
;--------------------------------------
@ -206,7 +206,7 @@ align 4
cmp [img_background], static_background_data
jz .nomem
stdcall user_alloc, [mem_BACKGROUND]
mov [esp+32], eax
mov [esp + SYSCALL_STACK.eax], eax
test eax, eax
jz .nomem
mov ebx, eax
@ -276,14 +276,14 @@ align 4
pop eax
and dword [page_tabs+(eax-1)*4], not MEM_BLOCK_DONT_FREE
stdcall user_free, ebx
mov [esp+32], eax
mov [esp + SYSCALL_STACK.eax], eax
and [bgrlockpid], 0
mov [bgrlock], 0
ret
;--------------------------------------
align 4
.err:
and dword [esp+32], 0
and dword [esp + SYSCALL_STACK.eax], 0
ret
;-------------------------------------
align 4
@ -293,17 +293,17 @@ nosb7:
mov ecx, [current_slot]
xor eax, eax
xchg eax, [ecx+APPDATA.draw_bgr_x]
mov [esp + 32], eax ; eax = [left]*65536 + [right]
xchg eax, [ecx + APPDATA.draw_bgr_x]
mov [esp + SYSCALL_STACK.eax], eax ; eax = [left]*65536 + [right]
xor eax, eax
xchg eax, [ecx+APPDATA.draw_bgr_y]
mov [esp + 20], eax ; ebx = [top]*65536 + [bottom]
xchg eax, [ecx + APPDATA.draw_bgr_y]
mov [esp + SYSCALL_STACK.ebx], eax ; ebx = [top]*65536 + [bottom]
ret
;---------------------------------------
align 4
nosb8:
cmp ebx, 9
jnz nosb9
jnz .exit
; ecx = [left]*65536 + [right]
; edx = [top]*65536 + [bottom]
mov eax, [_display.width]
@ -343,10 +343,6 @@ nosb8:
align 4
.exit:
ret
;--------------------------------------
align 4
nosb9:
ret
;------------------------------------------------------------------------------
@ -384,7 +380,7 @@ sys_getbackground: ; sysfn 39
mov eax, [BgrDataWidth]
shl eax, 16
mov ax, word [BgrDataHeight]
mov [esp+32], eax
mov [esp + SYSCALL_STACK.eax], eax
ret
;---------------------------------------
align 4
@ -400,8 +396,8 @@ align 4
align 4
@@:
mov ebx, [mem_BACKGROUND]
add ebx, 4095
and ebx, -4096
add ebx, PAGE_SIZE-1
and ebx, -PAGE_SIZE
sub ebx, 4
cmp ecx, ebx
ja .ret
@ -409,7 +405,7 @@ align 4
mov eax, [ecx+eax]
and eax, 0xFFFFFF
mov [esp+32], eax
mov [esp + SYSCALL_STACK.eax], eax
align 4
.ret:
ret
@ -456,8 +452,8 @@ align 4
; check bounds
mov ebx, [mem_BACKGROUND]
add ebx, 4095
and ebx, -4096
add ebx, PAGE_SIZE-1
and ebx, -PAGE_SIZE
sub ebx, 4
add eax, [.subrect_startptr]
cmp eax, ebx
@ -495,7 +491,7 @@ align 4
jmp .copy_rect
.end_copy_rect:
xor eax, eax
mov [esp+32], eax
mov [esp + SYSCALL_STACK.eax], eax
;--------------------------------------
align 4
.fail_39_3:
@ -513,7 +509,7 @@ align 4
;--------------------------------------
align 4
.nogb4:
mov [esp+32], eax
mov [esp + SYSCALL_STACK.eax], eax
ret
;-----------------------------------------------------------------------------

View File

@ -480,7 +480,7 @@ sys_getevent: ;; f11
cli ; the right to hope to disable interrupts, as when called from shed
call get_event_for_app
popfd
mov [esp+32], eax
mov [esp + SYSCALL_STACK.eax], eax
ret
;-----------------------------------------------------------------------------
align 4
@ -492,7 +492,7 @@ sys_wait_event_timeout: ;; f23
call unprotect_from_terminate
mov edx, get_event_for_app; wait_test
call Wait_events_ex ; ebx - timeout
mov [esp+32], eax
mov [esp + SYSCALL_STACK.eax], eax
call protect_from_terminate
ret
;-----------------------------------------------------------------------------

View File

@ -284,10 +284,10 @@ dd .setSkinUnicode
; out: eax = pack[left, right], ebx = pack[top, bottom]
mov eax, [screen_workarea.left - 2]
mov ax, word[screen_workarea.right]
mov [esp + 32], eax
mov [esp + SYSCALL_STACK.eax], eax
mov eax, [screen_workarea.top - 2]
mov ax, word[screen_workarea.bottom]
mov [esp + 20], eax
mov [esp + SYSCALL_STACK.ebx], eax
ret
.setScreenWorkingArea:
@ -346,16 +346,16 @@ dd .setSkinUnicode
.getSkinMargins:
; out: eax = pack[left, right], ebx = pack[top, bottom]
mov eax, [_skinmargins + 0]
mov [esp + 32], eax
mov [esp + SYSCALL_STACK.eax], eax
mov eax, [_skinmargins + 4]
mov [esp + 20], eax
mov [esp + SYSCALL_STACK.ebx], eax
ret
.setSkin:
; in: ecx -> file path string
mov ebx, ecx
call read_skin_file
mov [esp + 32], eax
mov [esp + SYSCALL_STACK.eax], eax
test eax, eax
jnz .ret
call .calculateScreen
@ -364,7 +364,7 @@ dd .setSkinUnicode
.getFontSmoothing:
xor eax, eax
mov al, [fontSmoothing]
mov [esp + 32], eax
mov [esp + SYSCALL_STACK.eax], eax
ret
.setFontSmoothing:
@ -374,7 +374,7 @@ dd .setSkinUnicode
.getFontSize:
xor eax, eax
mov al, [fontSize]
mov [esp + 32], eax
mov [esp + SYSCALL_STACK.eax], eax
ret
.setFontSize:
@ -393,7 +393,7 @@ dd .setSkinUnicode
jz @f
mov ebx, [esp]
call read_skin_file
mov [esp + 32 + 4], eax
mov [esp + SYSCALL_STACK.eax + 4], eax
@@:
call kernel_free
call .calculateScreen
@ -505,7 +505,7 @@ syscall_window_settings:
align 4
set_window_defaults:
mov byte [window_data + 0x20 + WDATA.cl_titlebar + 3], 1 ; desktop is not movable
mov byte [window_data + sizeof.WDATA + WDATA.cl_titlebar + 3], 1 ; desktop is not movable
push eax ecx
xor eax, eax
mov ecx, WIN_STACK
@ -1090,10 +1090,10 @@ align 4
movzx edi, word[WIN_POS + eax * 2]
shl edi, BSF sizeof.WDATA
; it is a unused slot?
cmp byte [edi*8 + SLOT_BASE + APPDATA.state], TSTATE_FREE
cmp byte [SLOT_BASE + edi*8 + APPDATA.state], TSTATE_FREE
je @f
; it is a hidden thread?
lea esi, [edi*8+SLOT_BASE+APPDATA.app_name]
lea esi, [SLOT_BASE + edi*8 + APPDATA.app_name]
cmp [esi], byte '@'
je @f
; is it already minimized?
@ -2548,6 +2548,3 @@ align 4
add esp, 4 ;dword for 0/1 - set_screen/fl_redraw
ret

View File

@ -61,7 +61,7 @@ draw_mouse_under:
xor ecx, ecx
xor edx, edx
mres:
.mres:
movzx eax, word [X_UNDER]
movzx ebx, word [Y_UNDER]
add eax, ecx
@ -86,11 +86,13 @@ draw_mouse_under:
pop ecx
inc ecx
cmp ecx, 16
jnz mres
jnz .mres
xor ecx, ecx
inc edx
cmp edx, 24
jnz mres
jnz .mres
popad
ret
@ -186,7 +188,7 @@ align 4
mov edx, 0
;--------------------------------------
align 4
drm:
.drm:
push eax
push ebx
push ecx
@ -243,11 +245,13 @@ drm:
mov eax, [esp+4] ; and x
inc ecx ; +1 cycle
cmp ecx, 16 ; if more than 16
jnz drm
jnz .drm
xor ecx, ecx
inc edx
cmp edx, 24
jnz drm
jnz .drm
add esp, 8
popad
ret

View File

@ -17,19 +17,18 @@ $Revision$
; ebx =3 - set alarm-clock ecx - 00SSMMHH
; out: 0 -Ok 1 -wrong format 2 -battery low
sys_settime:
cli
mov al, 0x0d
out 0x70, al
in al, 0x71
bt ax, 7
jnc bat_low
cmp ebx, 2;day of week
jne nosetweek
jnc .bat_low
cmp ebx, 2 ;day of week
jne .nosetweek
test ecx, ecx ;test day of week
je wrongtime
je .wrongtime
cmp ecx, 7
ja wrongtime
ja .wrongtime
mov edx, 0x70
call startstopclk
dec edx
@ -38,52 +37,52 @@ sys_settime:
inc edx
mov al, cl
out dx, al
jmp endsettime
nosetweek: ;set date
jmp .endsettime
.nosetweek: ;set date
cmp ebx, 1
jne nosetdate
jne .nosetdate
cmp cl, 0x99;test year
ja wrongtime
ja .wrongtime
shl ecx, 4
cmp cl, 0x90
ja wrongtime
ja .wrongtime
cmp ch, 0x99;test month
ja wrongtime
ja .wrongtime
shr ecx, 4
test ch, ch
je wrongtime
je .wrongtime
cmp ch, 0x12
ja wrongtime
ja .wrongtime
shl ecx, 8
bswap ecx ;ebx=00YYMMDD
test cl, cl ;test day
je wrongtime
je .wrongtime
shl ecx, 4
cmp cl, 0x90
ja wrongtime
ja .wrongtime
shr ecx, 4
cmp ch, 2 ;February
jne testday
jne .testday
cmp cl, 0x29
ja wrongtime
jmp setdate
testday:
ja .wrongtime
jmp .setdate
.testday:
cmp ch, 8
jb testday1;Aug-Dec
jb .testday1 ;Aug-Dec
bt cx, 8
jnc days31
jmp days30
testday1:
jnc .days31
jmp .days30
.testday1:
bt cx, 8 ;Jan-Jul ex.Feb
jnc days30
days31:
jnc .days30
.days31:
cmp cl, 0x31
ja wrongtime
jmp setdate
days30:
ja .wrongtime
jmp .setdate
.days30:
cmp cl, 0x30
ja wrongtime
setdate:
ja .wrongtime
.setdate:
mov edx, 0x70
call startstopclk
dec edx
@ -105,26 +104,26 @@ sys_settime:
shr ecx, 8
mov al, ch
out dx, al
jmp endsettime
nosetdate: ;set time or alarm-clock
jmp .endsettime
.nosetdate: ;set time or alarm-clock
cmp ebx, 3
ja wrongtime
ja .wrongtime
cmp cl, 0x23
ja wrongtime
ja .wrongtime
cmp ch, 0x59
ja wrongtime
ja .wrongtime
shl ecx, 4
cmp cl, 0x90
ja wrongtime
ja .wrongtime
cmp ch, 0x92
ja wrongtime
ja .wrongtime
shl ecx, 4
bswap ecx ;00HHMMSS
cmp cl, 0x59
ja wrongtime
ja .wrongtime
shl ecx, 4
cmp cl, 0x90
ja wrongtime
ja .wrongtime
shr ecx, 4
mov edx, 0x70
@ -132,7 +131,7 @@ sys_settime:
dec edx
cmp ebx, 3
je setalarm
je .setalarm
xor eax, eax;al=0-set seconds
out dx, al
inc edx
@ -151,8 +150,8 @@ sys_settime:
shr ecx, 8
mov al, ch
out dx, al
jmp endsettime
setalarm:
jmp .endsettime
.setalarm:
mov al, 1;set seconds for al.
out dx, al
inc edx
@ -178,19 +177,19 @@ sys_settime:
in al, dx
bts ax, 5;set bit 5
out dx, al
endsettime:
.endsettime:
dec edx
call startstopclk
sti
and [esp+36-4], dword 0
and [esp + SYSCALL_STACK.eax], dword 0
ret
bat_low:
.bat_low:
sti
mov [esp+36-4], dword 2
mov [esp + SYSCALL_STACK.eax], dword 2
ret
wrongtime:
.wrongtime:
sti
mov [esp+36-4], dword 1
mov [esp + SYSCALL_STACK.eax], dword 1
ret
startstopclk:
@ -235,14 +234,11 @@ sys_clock:
movzx edx, al
add ecx, edx
sti
mov [esp + 32], ecx
mov [esp + SYSCALL_STACK.eax], ecx
ret
align 4
sys_date:
cli
@@:
mov al, 10
@ -254,7 +250,6 @@ sys_date:
call delay_ms
jmp @b
@@:
mov ch, 0
mov al, 7 ; date
out 0x70, al
@ -270,5 +265,5 @@ sys_date:
in al, 0x71
mov cl, al
sti
mov [esp+32], ecx
mov [esp + SYSCALL_STACK.eax], ecx
ret

View File

@ -1363,7 +1363,14 @@ display_number:
; add check pointers
test bl, bl
jz @f
stdcall is_region_userspace, ecx, 1
bt ebx, 30 ; check 30 bit
jb @f
stdcall is_region_userspace, ecx, 4
jz @f
ret
@@:
jz @f
stdcall is_region_userspace, ecx, 8
jz @f
ret
@@:
@ -1882,16 +1889,6 @@ sm10:
smn2:
ret
detect_devices:
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;include 'detect/commouse.inc'
;include 'detect/ps2mouse.inc'
;include 'detect/dev_fd.inc'
;include 'detect/dev_hdcd.inc'
;include 'detect/sear_par.inc'
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ret
sys_end:
;--------------------------------------
cmp [_display.select_cursor], 0
@ -2024,27 +2021,27 @@ is_kernel_thread:
sysfn_terminate: ; 18.2 = TERMINATE
push ecx
cmp ecx, 2
jb noprocessterminate
jb .noprocessterminate
mov edx, [thread_count]
cmp ecx, edx
ja noprocessterminate
ja .noprocessterminate
mov eax, [thread_count]
shl ecx, BSF sizeof.APPDATA
add ecx, SLOT_BASE
mov edx, [ecx + APPDATA.tid]
cmp byte [ecx + APPDATA.state], TSTATE_FREE
jz noprocessterminate
jz .noprocessterminate
push eax
mov eax, ecx
call is_kernel_thread
pop eax
jz noprocessterminate
jz .noprocessterminate
push ecx edx
mov edx, ecx
call request_terminate
pop edx ecx
test eax, eax
jz noprocessterminate
jz .noprocessterminate
;--------------------------------------
; terminate all network sockets it used
pusha
@ -2073,10 +2070,10 @@ sysfn_terminate: ; 18.2 = TERMINATE
;call MEM_Heap_UnLock
cmp edx, [application_table_owner]; clear app table stat
jne noatsc
jne .noatsc
call unlock_application_table
noatsc:
noprocessterminate:
.noatsc:
.noprocessterminate:
add esp, 4
ret
;------------------------------------------------------------------------------
@ -2496,7 +2493,7 @@ sys_cachetodiskette:
align 4
sys_getkey:
mov [esp + 32], dword 1
mov [esp + SYSCALL_STACK.eax], dword 1
; test main buffer
mov ebx, [current_slot_idx] ; TOP OF WINDOW STACK
movzx ecx, word [WIN_STACK + ebx * 2]
@ -2688,23 +2685,23 @@ sys_cpuusage:
align 4
sys_redrawstat:
cmp ebx, 1
jne no_widgets_away
jne .no_widgets_away
; buttons away
mov ecx, [current_slot_idx]
sys_newba2:
.sys_newba2:
mov edi, [BTN_ADDR]
cmp [edi], dword 0 ; empty button list ?
je end_of_buttons_away
je .end_of_buttons_away
movzx ebx, word [edi]
inc ebx
mov eax, edi
sys_newba:
.sys_newba:
dec ebx
jz end_of_buttons_away
jz .end_of_buttons_away
add eax, 0x10
cmp cx, [eax]
jnz sys_newba
jnz .sys_newba
push eax ebx ecx
mov ecx, ebx
@ -2716,16 +2713,15 @@ sys_redrawstat:
dec dword [edi]
pop ecx ebx eax
jmp sys_newba2
end_of_buttons_away:
jmp .sys_newba2
.end_of_buttons_away:
ret
no_widgets_away:
.no_widgets_away:
cmp ebx, 2
jnz srl1
jnz .srl1
mov edx, [current_slot_idx] ; return whole screen draw area for this app
shl edx, 5 ;?
@ -2739,7 +2735,7 @@ sys_redrawstat:
dec eax
mov [edx + RECT.bottom], eax
srl1:
.srl1:
ret
;ok - 100% work
@ -2878,7 +2874,7 @@ endg
align 4
checkmisc:
cmp [ctrl_alt_del], 1
jne nocpustart
jne .nocpustart
mov ebp, cpustring
call fs_execute_from_sysdir
@ -2886,9 +2882,9 @@ checkmisc:
mov [ctrl_alt_del], 0
;--------------------------------------
align 4
nocpustart:
.nocpustart:
cmp [mouse_active], 1
jne mouse_not_active
jne .mouse_not_active
mov [mouse_active], 0
xor edi, edi
@ -2942,7 +2938,7 @@ align 4
pop eax
;--------------------------------------
align 4
mouse_not_active:
.mouse_not_active:
cmp [REDRAW_BACKGROUND], 0 ; background update ?
jz nobackgr
@ -3425,18 +3421,18 @@ delay_hs: ; delay in 1/100 secs
mov edx, [timer_ticks]
;--------------------------------------
align 4
newtic:
.newtic:
mov ecx, [timer_ticks]
sub ecx, edx
cmp ecx, ebx
jae zerodelay
jae .zerodelay
call change_task
jmp newtic
jmp .newtic
;--------------------------------------
align 4
zerodelay:
.zerodelay:
pop edx
pop ecx
ret
@ -3527,46 +3523,46 @@ syscall_reserveportarea: ; ReservePortArea and FreePortArea
r_f_port_area:
test ebx, ebx
jnz free_port_area
jnz .free_port_area
cmp ecx, edx ; beginning > end ?
ja rpal1
ja .rpal1
cmp edx, 65536 ;test ebx, not 0xffff
jae rpal1
jae .rpal1
mov eax, [RESERVED_PORTS]
test eax, eax ; no reserved areas ?
je rpal2
je .rpal2
cmp eax, 255 ; max reserved
jae rpal1
rpal3:
jae .rpal1
.rpal3:
mov ebx, eax
shl ebx, 4 ;16 byte is sizeof item in RESERVED_PORTS table
add ebx, RESERVED_PORTS
cmp ecx, [ebx+8]
ja rpal4
ja .rpal4
cmp edx, [ebx+4]
jae rpal1
rpal4:
jae .rpal1
.rpal4:
dec eax
jnz rpal3
jmp rpal2
rpal1:
jnz .rpal3
jmp .rpal2
.rpal1:
xor eax, eax
inc eax
ret
rpal2:
.rpal2:
; enable port access at port IO map
pushad ; start enable io map
mov eax, ecx
xor ebp, ebp ; enable - eax = port
cli
new_port_access:
.new_port_access:
call set_io_access_rights
inc eax
cmp eax, edx
jbe new_port_access
no_unmask_io:
jbe .new_port_access
;no_unmask_io:
sti
popad ; end enable io map
@ -3584,31 +3580,31 @@ no_unmask_io:
xor eax, eax
ret
free_port_area:
.free_port_area:
mov eax, [RESERVED_PORTS]; no reserved areas ?
test eax, eax
jz frpal2
jz .frpal2
mov ebx, [current_slot]
mov ebx, [ebx + APPDATA.tid]
frpal3:
.frpal3:
mov edi, eax
shl edi, 4
add edi, RESERVED_PORTS
cmp ebx, [edi]
jne frpal4
jne .frpal4
cmp ecx, [edi+4]
jne frpal4
jne .frpal4
cmp edx, [edi+8]
jne frpal4
jmp frpal1
frpal4:
jne .frpal4
jmp .frpal1
.frpal4:
dec eax
jnz frpal3
frpal2:
jnz .frpal3
.frpal2:
inc eax
ret
frpal1:
.frpal1:
push ecx
mov ecx, 256
sub ecx, eax
@ -3627,28 +3623,27 @@ free_port_area:
xor ebp, ebp
inc ebp
new_port_access_disable: ; disable - eax = port
.new_port_access_disable: ; disable - eax = port
call set_io_access_rights
inc eax
cmp eax, edx
jbe new_port_access_disable
no_mask_io: ; end disable io map
jbe .new_port_access_disable
;no_mask_io: ; end disable io map
xor eax, eax
ret
;-----------------------------------------------------------------------------
align 4
drawbackground:
dbrv20:
cmp [BgrDrawMode], dword 1
jne bgrstr
jne .bgrstr
call vesa20_drawbackground_tiled
; call [draw_pointer]
call __sys_draw_pointer
ret
;--------------------------------------
align 4
bgrstr:
.bgrstr:
call vesa20_drawbackground_stretch
; call [draw_pointer]
call __sys_draw_pointer
@ -3708,12 +3703,14 @@ sys_putimage_palette:
; edi = pointer to palette
; ebp = row delta
; check pointer
push ecx
push ecx esi
mov ax, cx
shr ecx, 16
imul eax, ecx
; imul eax, esi ; eax*count bit in 1 pixel
; shr eax, 3
stdcall is_region_userspace, ebx, eax
pop ecx
pop esi ecx
jnz sys_putimage.exit
mov eax, [current_slot]
@ -4078,10 +4075,10 @@ kb_write_wait_ack:
if used _rdtsc
_rdtsc:
bt [cpu_caps], CAPS_TSC
jnc ret_rdtsc
jnc .ret_rdtsc
rdtsc
ret
ret_rdtsc:
.ret_rdtsc:
mov edx, 0xffffffff
mov eax, 0xffffffff
ret

View File

@ -1,6 +1,6 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Copyright (C) KolibriOS team 2004-2022. All rights reserved. ;;
;; Copyright (C) KolibriOS team 2004-2023. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License ;;
;; ;;
;; PLAYNOTE.INC version 1.1 22 November 2003 ;;
@ -22,21 +22,21 @@ align 4
sound_interface:
cmp eax, ebx ; this is subfunction #55 ?
jne retFunc55 ; if no then return.
jne .ret ; if no then return.
cmp byte [sound_flag], 0
jne retFunc55
jne .ret
movzx eax, byte [countDelayNote]
or al, al ; player is busy ?
jnz retFunc55 ; return counter delay Note
jnz .ret ; return counter delay Note
mov [memAdrNote], esi;edx
call get_pid
mov [pidProcessNote], eax
xor eax, eax ; Ok! EAX = 0
retFunc55:
mov [esp+32], eax ; return value EAX for application
.ret:
mov [esp + SYSCALL_STACK.eax], eax ; return value EAX for application
ret
iglobal
@ -55,17 +55,17 @@ playNote:
; jmp NotPlayNotes
mov esi, [memAdrNote]
or esi, esi ; ESI = 0 ? - OFF Notes Play ?
jz NotPlayNotes ; if ESI = 0 -> ignore play pocedure
jz .NotPlayNotes ; if ESI = 0 -> ignore play pocedure
cmp eax, [count_timer_Note]
jb NotPlayNotes
jb .NotPlayNotes
push eax
inc eax
mov [count_timer_Note], eax
mov al, [countDelayNote]
dec al ; decrement counter Delay for Playing Note
jz NewLoadNote@Delay
jz .NewLoadNote@Delay
cmp al, 0xFF ; this is first Note Play ?
jne NextDelayNote
jne .NextDelayNote
;This is FIRST Note, save counter channel 2 chip 8253
mov al, 0xB6 ; control byte to timer chip 8253
out 0x43, al ; Send it to the control port chip 8253
@ -73,23 +73,23 @@ playNote:
mov ah, al ; AH = Lower byte counter channel 2
in al, 0x42 ; Read Upper byte counter channel 2 chip 8253
mov [mem8253r42], ax ; Save counter channel 2 timer chip 8253
NewLoadNote@Delay:
.NewLoadNote@Delay:
cld
; lodsb ; load AL - counter Delay
call ReadNoteByte
or al, al ; THE END ?
jz EndPlayNote
jz .EndPlayNote
cmp al, 0x81
jnc NoteforOctave
jnc .NoteforOctave
mov [countDelayNote], al
; lodsw ; load AX - counter for Note!
call ReadNoteByte
mov ah, al
call ReadNoteByte
xchg al, ah
jmp pokeNote
jmp .pokeNote
EndPlayNote: ; THE END Play Notes!
.EndPlayNote: ; THE END Play Notes!
in al, 0x61 ; Get contents of system port B chip 8255
and al, 0xFC ; Turn OFF timer and speaker
out 0x61, al ; Send out new values to port B chip 8255
@ -100,25 +100,25 @@ playNote:
out 0x42, al ; restore Upper byte channel 2
xor eax, eax ; EAX = 0
mov [memAdrNote], eax; clear header control Delay-Note string
NextDelayNote:
.NextDelayNote:
mov [countDelayNote], al; save new counter delay Note
pop eax
NotPlayNotes:
RET
.NotPlayNotes:
ret
NoteforOctave:
.NoteforOctave:
sub al, 0x81 ; correction value for delay Note
mov [countDelayNote], al; save counter delay this new Note
; lodsb ; load pack control code
call ReadNoteByte
cmp al, 0xFF ; this is PAUSE ?
jne packCode ; no, this is PACK CODE
jne .packCode ; no, this is PACK CODE
in al, 0x61 ; Get contents of system port B chip 8255
and al, 0xFC ; Turn OFF timer and speaker
out 0x61, al ; Send out new values to port B chip 8255
jmp saveESI
jmp .saveESI
packCode:
.packCode:
mov cl, al ; save code
and al, 0xF ; clear upper bits
dec al ; correction
@ -128,17 +128,18 @@ playNote:
mov ax, [eax] ; read constant
shr cl, 4 ; transform for number Octave
shr ax, cl ; calculate from Note this Octave!
pokeNote:
.pokeNote:
out 0x42, al ; Lower byte Out to channel 2 timer chip 8253
mov al, ah
out 0x42, al ; Upper byte Out to channel 2 timer chip 8253
in al, 0x61 ; Get contents of system port B chip 8255
or al, 3 ; Turn ON timer and speaker
out 0x61, al ; Send out new values to port B chip 8255
saveESI:
.saveESI:
; mov [memAdrNote], esi ; save new header control Delay-Note string
pop eax
RET
ret
ReadNoteByte:
;result:
; al - note