fix button [width & height & y pos]

"kernel" style code

git-svn-id: svn://kolibrios.org@4977 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Akyltist 2014-06-17 14:12:56 +00:00
parent 0923c62681
commit dd6485818f

View File

@ -1,33 +1,30 @@
; ;------------------------------------------------------------------------------
; DEBUG BOARD for APPLICATIONS and KERNEL DEVELOPMENT ; DEBUG BOARD for APPLICATIONS and KERNEL DEVELOPMENT
;
; See f63 ; See f63
;
; Compile with FASM for KolibriOS ; Compile with FASM for KolibriOS
; ;------------------------------------------------------------------------------
include 'lang.inc'
WRITE_LOG equ 1 WRITE_LOG equ 1
P_LEN equ 11 P_LEN equ 11
include 'lang.inc' ;------------------------------------------------------------------------------
use32 use32
org 0x0 org 0x0
db 'MENUET01' ; 8 byte id db 'MENUET01'
dd 0x01 ; header version dd 0x01
dd START ; start of code dd START
dd I_END ; size of image dd I_END
dd mem ; memory for app dd mem
dd mem ; esp dd mem
dd filename , 0x0 ; I_Param , I_Icon dd filename, 0x0
;------------------------------------------------------------------------------
include '../../../macros.inc' include '../../../macros.inc'
include '../../../debug.inc' include '../../../debug.inc'
purge newline purge newline
MAXSTRINGS = 16 MAXSTRINGS = 16
TMP = 80*(MAXSTRINGS+1) TMP = 80*(MAXSTRINGS+1)
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
START: ; start of execution START:
call CheckUnique call CheckUnique
mov edi, filename mov edi, filename
cmp [edi], byte 0 cmp [edi], byte 0
jnz param jnz param
@ -38,13 +35,6 @@ START: ; start of execution
test al,al test al,al
jnz @b jnz @b
param: param:
; allow user to see messages written before start
; mov ecx,4096
;flush:
; mcall 63,2
; loop flush
mov ecx, TMP mov ecx, TMP
xor eax, eax xor eax, eax
mov edi, [targ] mov edi, [targ]
@ -58,7 +48,7 @@ param:
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 mcall 48, 3, sc, sizeof.sys_colors_new
mov esi, filename mov esi, filename
call CreateFile call CreateFile
@ -93,7 +83,6 @@ new_data:
movzx ebx, byte[buffer_length] movzx ebx, byte[buffer_length]
mov [ebx+tmp], al mov [ebx+tmp], al
inc [buffer_length] inc [buffer_length]
mov ebp, [targ] mov ebp, [targ]
.no4: .no4:
cmp al, 13 cmp al, 13
@ -211,9 +200,8 @@ add_char:
ret ret
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; ********************************************* ;************************ WINDOW DEFINITIONS AND DRAW ************************
; ******* WINDOW DEFINITIONS AND DRAW ******** ;------------------------------------------------------------------------------
; *********************************************
draw_window: draw_window:
mcall 12, 1 ; 1, start of draw mcall 12, 1 ; 1, start of draw
mcall 48, 5 ; GetClientTop mcall 48, 5 ; GetClientTop
@ -222,26 +210,23 @@ draw_window:
shl ecx, 16 shl ecx, 16
add ecx, MAXSTRINGS*10+45 ; [y start] *65536 + [y size] add ecx, MAXSTRINGS*10+45 ; [y start] *65536 + [y size]
xor eax, eax ; function 0 : define and draw window xor eax, eax ; function 0 : define and draw window
; mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
mov edx, 0xffffff mov edx, 0xffffff
or edx, 0x14000000 or edx, 0x14000000
xor esi, esi xor esi, esi
mcall ,[xstart],,,,title mcall ,[xstart],,,,title
mov ebx,296 shl 16+5*6 mov ebx, 296 shl 16+31
mcall 8,,<5,12>,3,[sc.work] mcall 8,,<4,13>,3,[sc.btn_face]
mov edx, [vmode] mov edx, [vmode]
lea edx, [edx*4+duk] lea edx, [edx*4+duk]
mcall 4,<300,8>,,,4 mcall 4,<300,7>,,,4
call draw_text call draw_text
mcall 12, 2 ; 2, end of draw mcall 12, 2 ; 2, end of draw
ret ret
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
draw_text: draw_text:
mov ebx, 15*65536+30 ; draw info text with function 4 mov ebx, 15*65536+30 ; draw info text with function 4
; mov ecx,[sc.work_text]
xor ecx, ecx xor ecx, ecx
or ecx, 0x40000000 or ecx, 0x40000000
; mov edi,[sc.work]
mov edi, 0xffffff mov edi, 0xffffff
mov edx, text1 mov edx, text1
cmp [vmode], 0 cmp [vmode], 0
@ -273,16 +258,15 @@ newline:
cmp [edx], byte 'x' cmp [edx], byte 'x'
jne newline jne newline
ret ret
;------------------------------------------------------------------------------
;********************************************
;* input: esi = pointer to the file name *
;********************************************
;------------------------------------------------------------------------------
;* input: esi = pointer to the file name *
;------------------------------------------------------------------------------
CreateFile: CreateFile:
pusha pusha
mov dword [InfoStructure],2 ; create file mov dword [InfoStructure+00], 2 ; create file
mov dword [InfoStructure+4],0 ; reserved mov dword [InfoStructure+04], 0 ; reserved
mov dword [InfoStructure+8],0 ; reserved mov dword [InfoStructure+08], 0 ; reserved
mov dword [InfoStructure+12], 0 ; 0 bytes to write (just create) mov dword [InfoStructure+12], 0 ; 0 bytes to write (just create)
mov dword [InfoStructure+16], 0 ; NULL data pointer (no data) mov dword [InfoStructure+16], 0 ; NULL data pointer (no data)
mov dword [InfoStructure+20], 0 ; reserved mov dword [InfoStructure+20], 0 ; reserved
@ -294,19 +278,17 @@ 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 *
;* ecx = data length * ;* ecx = data length *
;******************************************** ;------------------------------------------------------------------------------
WriteToFile: WriteToFile:
push ebx push ebx
mov dword [InfoStructure],3 ; write to file mov dword [InfoStructure+00], 3 ; write to file
mov eax, [filepos] mov eax, [filepos]
mov dword [InfoStructure+4],eax ; lower position addr mov dword [InfoStructure+04], eax ; lower position addr
mov dword [InfoStructure+8],0 ; upper position addr (0 for FAT) mov dword [InfoStructure+08], 0 ; upper position addr (0 for FAT)
mov dword [InfoStructure+12], ecx ; number of bytes to write mov dword [InfoStructure+12], ecx ; number of bytes to write
mov dword [InfoStructure+16], edx ; pointer to data buffer mov dword [InfoStructure+16], edx ; pointer to data buffer
mov dword [InfoStructure+20], 0 ; reserved mov dword [InfoStructure+20], 0 ; reserved
@ -320,12 +302,11 @@ WriteToFile:
pop ebx pop ebx
ret ret
;------------------------------------------------- ;------------------------------------------------------------------------------
;********************************************
;* input: esi = pointer to string * ;* input: esi = pointer to string *
;* edi = pointer to string * ;* edi = pointer to string *
;* ecx = data length * ;* ecx = data length *
;******************************************** ;------------------------------------------------------------------------------
StrCmp: StrCmp:
repe cmpsb repe cmpsb
ja .a_greater_b ja .a_greater_b
@ -341,11 +322,10 @@ StrCmp:
.end: .end:
ret ret
;------------------------------------------------- ;------------------------------------------------------------------------------
;********************************************
;* input: edi = pointer to string * ;* input: edi = pointer to string *
;* ecx = data length * ;* ecx = data length *
;******************************************** ;------------------------------------------------------------------------------
; 'a' - 'A' = 32 -> 'A'|32 = 'a' ; 'a' - 'A' = 32 -> 'A'|32 = 'a'
ToLower: ToLower:
xor eax, eax xor eax, eax
@ -356,20 +336,19 @@ ToLower:
.end: .end:
ret ret
;------------------------------------------------------------------------------
;------------------------------------------------- ;* get info on current thread, save pid/tid
;* look for another process with same name and different pid/tid
;* if found, close self
;* else continue normally
;------------------------------------------------------------------------------
CheckUnique: CheckUnique:
;get info on current thread, save pid/tid
;look for another process with same name and different pid/tid
;if found, close self
;else continue normally
.get_thread_info: .get_thread_info:
mov ebx, procinfo mov ebx, procinfo
mov ecx, -1 mov ecx, -1
mcall 9 mcall 9
.get_pid:
; check_buffer .get_pid: ; check_buffer
mov [process_count], eax mov [process_count], eax
mov eax, [ebx+process_information.PID] mov eax, [ebx+process_information.PID]
mov [pid_tid], eax mov [pid_tid], eax
@ -394,15 +373,13 @@ CheckUnique:
lea edi, [ebx+process_information.process_name] lea edi, [ebx+process_information.process_name]
push ecx push ecx
mov ecx, my_name_size-1 mov ecx, my_name_size-1
.lower_case: .lower_case:
call ToLower call ToLower
lea esi, [my_name] lea esi, [my_name]
mov ecx, my_name_size mov ecx, my_name_size
call StrCmp call StrCmp
pop ecx pop ecx
cmp eax, 0 cmp eax, 0
je .close_program je .close_program
@ -411,7 +388,8 @@ CheckUnique:
jmp .check_threads jmp .check_threads
.close_program: .close_program:
mcall 18,3 ; restore and active window of previous thread ; restore and active window of previous thread
mcall 18, 3
mov eax, -1 mov eax, -1
mcall mcall
@ -419,27 +397,21 @@ CheckUnique:
ret ret
;------------------------------------------------------------------------------
;-------------------------------------------------- ;*********************************** DATA ************************************
;------------------------------------------------------------------------------
align 4
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
dd 0x0 ; upper part of the position address dd 0x0 ; upper part of the position address
dd 0x0 ; number of bytes to read dd 0x0 ; number of bytes to read
dd 0x0 ; pointer to the buffer to write data dd 0x0 ; pointer to the buffer to write data
db 0 db 0x0
dd 0 ; pointer to the filename dd 0x0 ; pointer to the filename
filepos dd 0x0
filepos dd 0
default_filename db '/sys/boardlog.txt',0 default_filename db '/sys/boardlog.txt',0
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
krnl_msg db 'K : '
duk db 'KernUser'
; DATA AREA
; 11,11 > 0,-1
; 5,11 > 0,-1
if lang eq ru if lang eq ru
title db '„®áª  ®â« ¤ª¨ ¨ á®®¡é¥­¨©',0 title db '„®áª  ®â« ¤ª¨ ¨ á®®¡é¥­¨©',0
else if lang eq it else if lang eq it
@ -449,10 +421,12 @@ else if lang eq ge
else else
title db 'General debug & message board',0 title db 'General debug & message board',0
end if end if
;------------------------------------------------------------------------------
krnl_msg db 'K : '
duk db 'KernUser'
krnl_cnt dd 0 krnl_cnt dd 0
vmode dd 1 vmode dd 1
targ dd text2 targ dd text2
my_name db 'board',0 my_name db 'board',0
my_name_size = $-my_name my_name_size = $-my_name
process_count dd 0x0 process_count dd 0x0
@ -463,24 +437,17 @@ I_END:
offs dd ? offs dd ?
flag rb 1 flag rb 1
rd 2 rd 2
;x1pos dd ?
;y1pos dd ?
text1 rb 80*(MAXSTRINGS+1) text1 rb 80*(MAXSTRINGS+1)
tmp1 db ? tmp1 db ?
rd 2 rd 2
;x2pos dd ?
;y2pos dd ?
text2 rb 80*(MAXSTRINGS+1) text2 rb 80*(MAXSTRINGS+1)
tmp2 db ? tmp2 db ?
xstart dd ? xstart dd ?
sc sys_colors_new
sc system_colors
i_end: i_end:
buffer_length rb 1 buffer_length rb 1
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
tmp rb 256 tmp rb 256
;------------------------------------------------------------------------------
filename rb 256 filename rb 256
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
align 4 align 4