forked from KolibriOS/kolibrios
167 lines
3.7 KiB
PHP
167 lines
3.7 KiB
PHP
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
;; ;;
|
||
|
;; Copyright (C) KolibriOS team 2004-2013. All rights reserved. ;;
|
||
|
;; Distributed under terms of the GNU General Public License ;;
|
||
|
;; ;;
|
||
|
;; ;;
|
||
|
;; GNU GENERAL PUBLIC LICENSE ;;
|
||
|
;; Version 2, June 1991 ;;
|
||
|
;; ;;
|
||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
|
||
|
|
||
|
window_create:
|
||
|
|
||
|
; allocate the window data block
|
||
|
mcall 68, 12, sizeof.window_data
|
||
|
test eax, eax
|
||
|
jz .fail
|
||
|
|
||
|
; fill it with all zeros
|
||
|
push eax
|
||
|
mov edi, eax
|
||
|
mov ecx, (sizeof.window_data+3)/4
|
||
|
xor eax, eax
|
||
|
rep stosd
|
||
|
pop eax
|
||
|
|
||
|
.fail:
|
||
|
ret
|
||
|
|
||
|
|
||
|
window_set_name: ; esi = ptr to name, ebx = window ptr
|
||
|
|
||
|
pusha
|
||
|
|
||
|
; Skip heading spaces
|
||
|
.spaceloop:
|
||
|
cmp byte[esi], ' '
|
||
|
jne .done
|
||
|
inc esi
|
||
|
jmp .spaceloop
|
||
|
.done:
|
||
|
|
||
|
; Now copy it
|
||
|
lea edi, [ebx + window.name]
|
||
|
mov ecx, MAX_WINDOWNAME_LEN
|
||
|
.loop:
|
||
|
lodsb
|
||
|
cmp al, 0x21
|
||
|
jbe .addzero
|
||
|
stosb
|
||
|
dec ecx
|
||
|
jnz .loop
|
||
|
.addzero:
|
||
|
xor al, al
|
||
|
stosb
|
||
|
|
||
|
call draw_windownames ; redraw it
|
||
|
|
||
|
popa
|
||
|
|
||
|
ret
|
||
|
|
||
|
|
||
|
|
||
|
window_refresh:
|
||
|
|
||
|
; set the correct buffer pointers ; FIXME: what is it good for?
|
||
|
mov eax, [textbox_width] ;
|
||
|
imul eax, 11 ;
|
||
|
mov [pos], eax ;
|
||
|
|
||
|
mov eax, [window_print]
|
||
|
mov eax, [eax + window.data_ptr]
|
||
|
add eax, window_data.text
|
||
|
mov [text_start], eax
|
||
|
|
||
|
ret
|
||
|
|
||
|
|
||
|
window_updated:
|
||
|
|
||
|
mov edi, [window_print]
|
||
|
test [edi + window.flags], FLAG_UPDATED
|
||
|
jnz .skip
|
||
|
|
||
|
or [edi + window.flags], FLAG_UPDATED
|
||
|
|
||
|
; now play a sound :)
|
||
|
|
||
|
.skip:
|
||
|
|
||
|
ret
|
||
|
|
||
|
|
||
|
print_text: ; eax = start ptr
|
||
|
; dl = end char
|
||
|
pusha
|
||
|
ptr2:
|
||
|
mov bl, [eax]
|
||
|
|
||
|
cmp bl, dl
|
||
|
je ptr_ret
|
||
|
cmp bl, 0
|
||
|
je ptr_ret
|
||
|
call print_character
|
||
|
|
||
|
inc eax
|
||
|
jmp ptr2
|
||
|
|
||
|
ptr_ret:
|
||
|
popa
|
||
|
ret
|
||
|
|
||
|
|
||
|
print_text2: ; esi = ptr to ASCIIZ string
|
||
|
|
||
|
pusha
|
||
|
.loop:
|
||
|
lodsb
|
||
|
test al, al
|
||
|
jz .done
|
||
|
mov bl, al
|
||
|
call print_character
|
||
|
jmp .loop
|
||
|
|
||
|
.done:
|
||
|
popa
|
||
|
ret
|
||
|
|
||
|
|
||
|
if TIMESTAMP
|
||
|
print_timestamp:
|
||
|
|
||
|
pusha
|
||
|
mcall 3 ; get system time
|
||
|
|
||
|
mov bl, '['
|
||
|
call print_character
|
||
|
mov ecx, TIMESTAMP
|
||
|
.loop:
|
||
|
mov bl, al
|
||
|
shr bl, 4
|
||
|
add bl, '0'
|
||
|
call print_character
|
||
|
|
||
|
mov bl, al
|
||
|
and bl, 0x0f
|
||
|
add bl, '0'
|
||
|
call print_character
|
||
|
|
||
|
dec ecx
|
||
|
jz .done
|
||
|
|
||
|
mov bl, ':'
|
||
|
call print_character
|
||
|
shr eax, 8
|
||
|
jmp .loop
|
||
|
.done:
|
||
|
mov bl, ']'
|
||
|
call print_character
|
||
|
mov bl, ' '
|
||
|
call print_character
|
||
|
|
||
|
popa
|
||
|
ret
|
||
|
end if
|