Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1998 → Rev 2234

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