forked from KolibriOS/kolibrios
Board
1) Optimize redrawing 2) Clearing of source code git-svn-id: svn://kolibrios.org@2234 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
132b516d92
commit
63531bfca1
@ -23,10 +23,10 @@ include 'debug.inc'
|
|||||||
purge newline
|
purge newline
|
||||||
MAXSTRINGS = 16
|
MAXSTRINGS = 16
|
||||||
TMP = 80*(MAXSTRINGS+1)
|
TMP = 80*(MAXSTRINGS+1)
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
START: ; start of execution
|
START: ; start of execution
|
||||||
mov edi,filename
|
mov edi,filename
|
||||||
cmp byte [edi], 0
|
cmp [edi],byte 0
|
||||||
jnz param
|
jnz param
|
||||||
mov esi,default_filename
|
mov esi,default_filename
|
||||||
@@:
|
@@:
|
||||||
@ -39,9 +39,7 @@ param:
|
|||||||
; allow user to see messages written before start
|
; allow user to see messages written before start
|
||||||
; mov ecx,4096
|
; mov ecx,4096
|
||||||
;flush:
|
;flush:
|
||||||
; mov eax,63
|
; mcall 63,2
|
||||||
; mov ebx,2
|
|
||||||
; mcall
|
|
||||||
; loop flush
|
; loop flush
|
||||||
|
|
||||||
mov ecx,TMP
|
mov ecx,TMP
|
||||||
@ -52,43 +50,32 @@ param:
|
|||||||
mov [tmp1],'x'
|
mov [tmp1],'x'
|
||||||
mov [tmp2],'x'
|
mov [tmp2],'x'
|
||||||
|
|
||||||
mov eax,14
|
mcall 14
|
||||||
mcall
|
|
||||||
and eax,0xffff0000
|
and eax,0xffff0000
|
||||||
sub eax,399 shl 16
|
sub eax,399 shl 16
|
||||||
add eax,399
|
add eax,399
|
||||||
mov [xstart],eax
|
mov [xstart],eax
|
||||||
|
mcall 48,3,sc,sizeof.system_colors
|
||||||
mov eax,48
|
|
||||||
mov ebx,3
|
|
||||||
mov ecx,sc
|
|
||||||
mov edx,sizeof.system_colors
|
|
||||||
mcall
|
|
||||||
if WRITE_LOG
|
if WRITE_LOG
|
||||||
mov esi,filename
|
mov esi,filename
|
||||||
call CreateFile
|
call CreateFile
|
||||||
end if
|
end if
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
red:
|
red:
|
||||||
call draw_window
|
call draw_window
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
still:
|
still:
|
||||||
|
mcall 23,1 ; wait here for event
|
||||||
mov eax,23 ; wait here for event
|
|
||||||
mov ebx,1
|
|
||||||
mcall
|
|
||||||
|
|
||||||
cmp eax,1 ; redraw request ?
|
cmp eax,1 ; redraw request ?
|
||||||
je red
|
je red
|
||||||
|
|
||||||
cmp eax,2 ; key in buffer ?
|
cmp eax,2 ; key in buffer ?
|
||||||
je key
|
je key
|
||||||
|
|
||||||
cmp eax,3 ; button in buffer ?
|
cmp eax,3 ; button in buffer ?
|
||||||
je button
|
je button
|
||||||
|
|
||||||
mov eax,63
|
mcall 63,2
|
||||||
mov ebx,2
|
|
||||||
mcall
|
|
||||||
|
|
||||||
cmp ebx,1
|
cmp ebx,1
|
||||||
jne still
|
jne still
|
||||||
|
|
||||||
@ -111,21 +98,21 @@ still:
|
|||||||
inc [filepos]
|
inc [filepos]
|
||||||
popa
|
popa
|
||||||
end if
|
end if
|
||||||
|
|
||||||
mov ebp,[targ]
|
mov ebp,[targ]
|
||||||
.no4:
|
.no4:
|
||||||
cmp al,13
|
cmp al,13
|
||||||
jne no13
|
jne no13
|
||||||
and dword[ebp-8],0
|
and [ebp-8],dword 0
|
||||||
jmp new_check
|
jmp new_check
|
||||||
|
;------------------------------------------
|
||||||
no13:
|
no13:
|
||||||
cmp al,10
|
cmp al,10
|
||||||
jne no10
|
jne no10
|
||||||
and dword[ebp-8],0
|
and [ebp-8],dword 0
|
||||||
inc dword [ebp-4]
|
inc dword [ebp-4]
|
||||||
cmp dword[ebp-4],MAXSTRINGS
|
cmp [ebp-4],dword MAXSTRINGS
|
||||||
jbe .noypos
|
jbe .noypos
|
||||||
mov dword[ebp-4],MAXSTRINGS
|
mov [ebp-4],dword MAXSTRINGS
|
||||||
lea esi,[ebp+80]
|
lea esi,[ebp+80]
|
||||||
mov edi,ebp
|
mov edi,ebp
|
||||||
mov ecx,80*(MAXSTRINGS)
|
mov ecx,80*(MAXSTRINGS)
|
||||||
@ -143,6 +130,7 @@ still:
|
|||||||
mov [targ],text2
|
mov [targ],text2
|
||||||
and [krnl_cnt],0
|
and [krnl_cnt],0
|
||||||
jmp new_check
|
jmp new_check
|
||||||
|
;------------------------------------------
|
||||||
no10:
|
no10:
|
||||||
cmp ebp,text1
|
cmp ebp,text1
|
||||||
je add2
|
je add2
|
||||||
@ -169,38 +157,28 @@ still:
|
|||||||
call add_char
|
call add_char
|
||||||
|
|
||||||
new_check:
|
new_check:
|
||||||
|
mcall 63,2
|
||||||
mov eax,63
|
|
||||||
mov ebx,2
|
|
||||||
mcall
|
|
||||||
|
|
||||||
cmp ebx,1
|
cmp ebx,1
|
||||||
je new_data
|
je new_data
|
||||||
|
call draw_text
|
||||||
call draw_window
|
|
||||||
|
|
||||||
jmp still
|
jmp still
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
key: ; key
|
key:
|
||||||
mov al,2 ; just read it and ignore
|
mcall 2
|
||||||
mcall
|
|
||||||
cmp ah,' '
|
cmp ah,' '
|
||||||
je button.noclose
|
je button.noclose
|
||||||
jmp still
|
jmp still
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
button: ; button
|
button:
|
||||||
mov al,17 ; get id
|
mcall 17 ; get id
|
||||||
mcall
|
|
||||||
|
|
||||||
cmp ah,1 ; button id=1 ?
|
cmp ah,1 ; button id=1 ?
|
||||||
jne .noclose
|
jne .noclose
|
||||||
|
|
||||||
or eax,-1 ; close this program
|
or eax,-1 ; close this program
|
||||||
mcall
|
mcall
|
||||||
.noclose:
|
.noclose:
|
||||||
xor [vmode],1
|
xor [vmode],1
|
||||||
jmp red
|
jmp red
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
add_char:
|
add_char:
|
||||||
push esi
|
push esi
|
||||||
mov esi,[ebp-4]
|
mov esi,[ebp-4]
|
||||||
@ -214,45 +192,54 @@ add_char:
|
|||||||
.ok:
|
.ok:
|
||||||
pop esi
|
pop esi
|
||||||
ret
|
ret
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
; *********************************************
|
; *********************************************
|
||||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||||
; *********************************************
|
; *********************************************
|
||||||
|
|
||||||
|
|
||||||
draw_window:
|
draw_window:
|
||||||
|
mcall 12,1 ; 1, start of draw
|
||||||
mov eax,12 ; function 12:tell os about windowdraw
|
|
||||||
mov ebx,1 ; 1, start of draw
|
|
||||||
mcall
|
|
||||||
|
|
||||||
; DRAW WINDOW
|
|
||||||
xor eax,eax ; function 0 : define and draw window
|
xor eax,eax ; function 0 : define and draw window
|
||||||
; mov ebx,50*65536+400 ; [x start] *65536 + [x size]
|
|
||||||
mov ebx,[xstart]
|
|
||||||
mov ecx,MAXSTRINGS*10+45 ; [y start] *65536 + [y size]
|
mov ecx,MAXSTRINGS*10+45 ; [y start] *65536 + [y size]
|
||||||
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
|
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
|
||||||
or edx,0x13000000
|
or edx,0x13000000
|
||||||
mov edi,title ; WINDOW LABEL
|
xor esi,esi
|
||||||
mcall
|
mcall ,[xstart],,,,title
|
||||||
|
|
||||||
mov ecx,4
|
|
||||||
mov esi,[sc.work]
|
|
||||||
mov ebx,296 shl 16+5*6
|
mov ebx,296 shl 16+5*6
|
||||||
mov edx,3;+1 shl 30
|
mcall 8,,<5,12>,3,[sc.work]
|
||||||
mcall 8,,<5,12>
|
|
||||||
mov edx,[vmode]
|
mov edx,[vmode]
|
||||||
lea edx,[edx*4+duk]
|
lea edx,[edx*4+duk]
|
||||||
mcall 4,<300,8>,,,4
|
mcall 4,<300,8>,,,4
|
||||||
|
call draw_text
|
||||||
mov ebx,15*65536+33 ; draw info text with function 4
|
mcall 12,2 ; 2, end of draw
|
||||||
|
ret
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
draw_text:
|
||||||
|
mov ebx,15*65536+30 ; draw info text with function 4
|
||||||
mov ecx,[sc.work_text]
|
mov ecx,[sc.work_text]
|
||||||
|
or ecx,0x40000000
|
||||||
|
mov edi,[sc.work]
|
||||||
mov edx,text1
|
mov edx,text1
|
||||||
cmp [vmode],0
|
cmp [vmode],0
|
||||||
je .kern
|
je .kern
|
||||||
mov edx,text2
|
mov edx,text2
|
||||||
.kern:
|
.kern:
|
||||||
|
push ebx ecx edx
|
||||||
|
mcall 9,procinfo,-1
|
||||||
|
mov eax,[ebx+42]
|
||||||
|
xor edx,edx
|
||||||
|
mov ebx,6
|
||||||
|
div ebx
|
||||||
|
pop edx ecx ebx
|
||||||
mov esi,80
|
mov esi,80
|
||||||
|
cmp eax,esi
|
||||||
|
ja @f
|
||||||
|
mov esi,eax
|
||||||
|
@@:
|
||||||
|
cmp esi,5
|
||||||
|
ja @f
|
||||||
|
mov esi,5
|
||||||
|
@@:
|
||||||
|
sub esi,4
|
||||||
mov eax,4
|
mov eax,4
|
||||||
newline:
|
newline:
|
||||||
mcall
|
mcall
|
||||||
@ -260,13 +247,8 @@ draw_window:
|
|||||||
add edx,80
|
add edx,80
|
||||||
cmp [edx],byte 'x'
|
cmp [edx],byte 'x'
|
||||||
jne newline
|
jne newline
|
||||||
mov eax,12 ; function 12:tell os about windowdraw
|
|
||||||
mov ebx,2 ; 2, end of draw
|
|
||||||
mcall
|
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
if WRITE_LOG
|
if WRITE_LOG
|
||||||
;********************************************
|
;********************************************
|
||||||
;* input: esi = pointer to the file name *
|
;* input: esi = pointer to the file name *
|
||||||
@ -288,7 +270,7 @@ CreateFile:
|
|||||||
.out:
|
.out:
|
||||||
popa
|
popa
|
||||||
ret
|
ret
|
||||||
|
;------------------------------------------------
|
||||||
;********************************************
|
;********************************************
|
||||||
;* input: esi = pointer to the file name *
|
;* input: esi = pointer to the file name *
|
||||||
;* edx = pointer to data buffer *
|
;* edx = pointer to data buffer *
|
||||||
@ -313,8 +295,7 @@ WriteToFile:
|
|||||||
.out:
|
.out:
|
||||||
pop ebx
|
pop ebx
|
||||||
ret
|
ret
|
||||||
|
;--------------------------------------------------
|
||||||
|
|
||||||
InfoStructure:
|
InfoStructure:
|
||||||
dd 0x0 ; subfunction number
|
dd 0x0 ; subfunction number
|
||||||
dd 0x0 ; position in the file in bytes
|
dd 0x0 ; position in the file in bytes
|
||||||
@ -328,10 +309,7 @@ filepos dd 0
|
|||||||
default_filename db '/sys/boardlog.txt',0
|
default_filename db '/sys/boardlog.txt',0
|
||||||
tmp db 0
|
tmp db 0
|
||||||
end if
|
end if
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
krnl_msg db 'K : '
|
krnl_msg db 'K : '
|
||||||
duk db 'KernUser'
|
duk db 'KernUser'
|
||||||
|
|
||||||
@ -349,7 +327,9 @@ end if
|
|||||||
krnl_cnt dd 0
|
krnl_cnt dd 0
|
||||||
vmode dd 1
|
vmode dd 1
|
||||||
targ dd text2
|
targ dd text2
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
I_END:
|
I_END:
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
offs dd ?
|
offs dd ?
|
||||||
flag rb 1
|
flag rb 1
|
||||||
rd 2
|
rd 2
|
||||||
@ -363,10 +343,18 @@ I_END:
|
|||||||
text2 rb 80*(MAXSTRINGS+1)
|
text2 rb 80*(MAXSTRINGS+1)
|
||||||
tmp2 db ?
|
tmp2 db ?
|
||||||
xstart dd ?
|
xstart dd ?
|
||||||
|
|
||||||
sc system_colors
|
sc system_colors
|
||||||
|
|
||||||
i_end:
|
i_end:
|
||||||
|
|
||||||
filename rb 256
|
filename rb 256
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
|
procinfo:
|
||||||
|
rb 1024
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
stackbuf rb 2000h
|
stackbuf rb 2000h
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
mem:
|
mem:
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
@erase lang.inc
|
@erase lang.inc
|
||||||
@echo lang fix en >lang.inc
|
@echo lang fix en >lang.inc
|
||||||
@fasm board.asm board
|
@fasm board.asm board
|
||||||
|
@kpack board
|
||||||
@erase lang.inc
|
@erase lang.inc
|
||||||
@pause
|
@pause
|
@ -1,5 +1,6 @@
|
|||||||
@erase lang.inc
|
@erase lang.inc
|
||||||
@echo lang fix ge >lang.inc
|
@echo lang fix ge >lang.inc
|
||||||
@fasm board.asm board
|
@fasm board.asm board
|
||||||
|
@kpack board
|
||||||
@erase lang.inc
|
@erase lang.inc
|
||||||
@pause
|
@pause
|
@ -1,5 +1,6 @@
|
|||||||
@erase lang.inc
|
@erase lang.inc
|
||||||
@echo lang fix ru >lang.inc
|
@echo lang fix ru >lang.inc
|
||||||
@fasm board.asm board
|
@fasm board.asm board
|
||||||
|
@kpack board
|
||||||
@erase lang.inc
|
@erase lang.inc
|
||||||
@pause
|
@pause
|
Loading…
Reference in New Issue
Block a user