Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 477 → Rev 478

/programs/system/mgb/trunk/mgb.asm
35,6 → 35,9
dd 0
dd 0
 
include 'macros.inc'
;__CPU_type equ p6 ; charge it
 
include 'proc32.inc'
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
65,9 → 68,7
call subDrawMainWindow
 
locWaitForEvent: ; CODE XREF: start+6Cj start:loc_B3j ...
mov eax, 23
mov ebx, 20
int 0x40 ; Kolibri - WAIT FOR EVENT WITH TIMEOUT
mcall 23, 20 ; Kolibri - WAIT FOR EVENT WITH TIMEOUT
; ebx = timeout
; Return: eax = event
cmp eax, 1
93,10 → 94,7
btr word[wFlags], 1
jnb locWaitForEvent
call subDelay100ms
mov eax, 12h
mov ebx, 3
mov ecx, [dwMainWndSlot]
int 0x40 ; Kolibri - ACTIVATE WINDOW
mcall 0x12, 3, [dwMainWndSlot] ; Kolibri - ACTIVATE WINDOW
; ecx = slot
call subDelay100ms
 
112,9 → 110,7
 
 
proc subGetThreadInfo ; CODE XREF: start+5p start:loc_36p
mov eax, 9
mov ebx, APP_MEM_END
int 0x40 ; Kolibri - GET THREAD INFO
mcall 9, APP_MEM_END ; Kolibri - GET THREAD INFO
; ebx -> buffer, ecx = slot (-1 for self)
; Return: eax = maximum slot
retn
125,9 → 121,7
 
 
proc subDelay100ms ; CODE XREF: start+6Ep start+85p
mov eax, 5
mov ebx, 0Ah
int 0x40 ; Kolibri - DELAY
mcall 5, 0x0a ; Kolibri - DELAY
; ebx = time (in 1/100th of second)
retn
endp
136,8 → 130,7
; START OF FUNCTION CHUNK FOR start
 
locKeyEvent: ; CODE XREF: start+41j
mov eax, 2
int 0x40 ; Kolibri - GET KEY CODE
mcall 2 ; Kolibri - GET KEY CODE
; Return: ah = keycode
cmp ah, 't'
jz locActionTest
153,13 → 146,11
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locButtonEvent: ; CODE XREF: start:loc_6Aj
mov eax, 11h
int 0x40 ; Kolibri - GET PRESSED BUTTON
mcall 0x11 ; Kolibri - GET PRESSED BUTTON
; Return: ah = button ID
cmp ah, 1
jnz locNotClose
mov eax, -1
int 0x40 ; Kolibri - FINISH EXECUTION
mcall -1 ; Kolibri - FINISH EXECUTION
 
locNotClose: ; CODE XREF: start+E6j
cmp ah, 2
168,17 → 159,11
locActionTest: ; CODE XREF: start+B5j
bts [wFlags], 0
jb locWaitForEvent
mov eax, 5
mov ebx, 50
int 0x40 ; Kolibri - DELAY
mcall 5, 50 ; Kolibri - DELAY
; ebx = time (in 1/100th of second)
 
loc_132:
mov eax, 51
mov ebx, 1
mov ecx, subTestWndProc
mov edx, 0x17FFF0
int 0x40 ; Kolibri - CREATE THREAD
mcall 51, 1, subTestWndProc, 0x17FFF0; Kolibri - CREATE THREAD
; ebx = 1 - unique subfunction
; ecx = starting eip
; edx = starting esp
241,11 → 226,7
 
 
proc subCreateOpenSaveDlg ; CODE XREF: start+15Ap start+1A9p ...
mov eax, 51
mov ebx, 1
mov ecx, subOpenSaveDlgProc
mov edx, 0x19FFF0
int 0x40 ; Kolibri - CREATE THREAD
mcall 51, 1, subOpenSaveDlgProc, 0x19FFF0; Kolibri - CREATE THREAD
; ebx = 1 - unique subfunction
; ecx = starting eip
; edx = starting esp
282,11 → 263,7
call subInitTestTimer
 
locDrawNextBar: ; CODE XREF: seg000:00000269j
mov eax, 0Dh
mov ebx, 0A0064h
mov ecx, 1E00FAh
mov edx, 6A73D0h
int 0x40 ; Kolibri - DRAW RECTANGLE
mcall 0x0d, 0x0A0064, 0x1E00FA, 0x6A73D0; Kolibri - DRAW RECTANGLE
; ebx = [xstart]*65536+[xsize], ecx = [ystart]*65536+[ysize]
; edx = 0xRRGGBB or 0x80RRGGBB for gradient
call subIfTimeElapsed
295,11 → 272,8
call subInitTestTimer
 
locDrawNextLine: ; CODE XREF: seg000:00000291j
mov eax, 38
mov ebx, 8C008Ch
mov ecx, 1E017Ch
mov edx, 1090207Fh
int 0x40 ; Kolibri - DRAW LINE
; Kolibri - DRAW LINE
mcall 38, 0x8C008C, 0x1E017C, 0x1090207F
; ebx = [xstart]*65536+[xend], ecx = [ystart]*65536+[yend]
; edx = 0x00RRGGBB - color or 0x01****** - inversed line
call subIfTimeElapsed
308,12 → 282,8
call subInitTestTimer
 
locDrawNextText1: ; CODE XREF: seg000:000002BEj
mov eax, 4
mov ebx, 0A012Ch
mov ecx, 0AA66h
mov edx, aTestText ; "This is a 34-charachters test text"
mov esi, 34
int 0x40 ; Kolibri - DRAW STRING
; Kolibri - DRAW STRING
mcall 4, 0x0A012C, 0x0AA66, aTestText, 34
; ebx = [xstart]*65536+[ystart]
; ecx = 0xX0RRGGBB, edx -> string
call subIfTimeElapsed
322,12 → 292,8
call subInitTestTimer
 
locDrawNextText2: ; CODE XREF: seg000:000002EBj
mov eax, 4
mov ebx, 0A015Eh
mov ecx, 10E7B850h
mov edx, aTestText ; "This is a 34-charachters test text"
mov esi, 34
int 0x40 ; Kolibri - DRAW STRING
; Kolibri - DRAW STRING
mcall 4, 0x0A015E, 0x10E7B850, aTestText, 34
; ebx = [xstart]*65536+[ystart]
; ecx = 0xX0RRGGBB, edx -> string
call subIfTimeElapsed
336,12 → 302,7
call subInitTestTimer
 
locDrawNextNumber: ; CODE XREF: seg000:00000318j
mov eax, 47
mov ebx, 80000h
mov ecx, 12345678
mov edx, 140172h
mov esi, 0E0B27Bh
int 0x40 ; Kolibri - DRAW NUMBER
; Kolibri - DRAW NUMBER
; bl = 0/1 - ecx is number/pointer
; bh = 0/1/2 - dec/hex/bin
; highword(ebx) = number of digits
348,6 → 309,10
; ecx = number/pointer
; edx = [x]*65536+[y]
; esi = 0xX0RRGGBB
mcall 47, 80000h, 12345678, 140172h, 0E0B27Bh
 
 
 
call subIfTimeElapsed
jb locDrawNextNumber
mov [results_table+TEST_REC_SIZE*5], edi
354,12 → 319,9
call subInitTestTimer
 
locDrawNextPixel: ; CODE XREF: seg000:00000340j
mov eax, 1
mov ebx, 100
mov ecx, 100
mov edx, 0FFFFFFh
int 0x40 ; Kolibri - PUT PIXEL
; Kolibri - PUT PIXEL
; ebx = x, ecx = y, edx = color
mcall 1, 100, 100, 0x0FFFFFF
call subIfTimeElapsed
jb locDrawNextPixel
mov [results_table+TEST_REC_SIZE*6], edi
366,8 → 328,8
}
bts word[wFlags], 1
btr word[wFlags], 0
mov eax, -1
int 0x40 ; Kolibri - FINISH EXECUTION
; Kolibri - FINISH EXECUTION
mcall -1
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
377,7 → 339,7
xor edi, edi
mov eax, 26
mov ebx, 9
int 0x40 ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER
mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER
; Return: eax = time counter
inc eax
mov ecx, eax
386,7 → 348,7
 
locWait10ms: ; CODE XREF: subInitTestTimer+22j
mov eax, 26
int 0x40 ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER
mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER
; Return: eax = time counter
cmp eax, ecx
jb locWait10ms
402,7 → 364,7
inc edi
mov eax, 26
mov ebx, 9
int 0x40 ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER
mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER
; Return: eax = time counter
cmp eax, [dwTestEndTime]
retn
439,10 → 401,10
proc subDrawMainWindow ; CODE XREF: start:locRedrawEventp
mov eax, 12
mov ebx, 1
int 0x40 ; Kolibri - BEGIN WINDOW REDRAW
mcall ; Kolibri - BEGIN WINDOW REDRAW
mov eax,48
mov ebx,4
int 0x40
mcall
mov ebx, 100*65536+72*5+14;640145h
mov ecx, 80*65536+TESTS_NUM*LINE_HEIGHT+15+20+35
add cx, ax
449,7 → 411,7
mov edx, 33000000h
mov edi, aCaption
xor eax, eax
int 0x40
mcall
mov eax, 8
mov ebx, 050036h+12
mov ecx, 5*65536+20
457,7 → 419,7
mov esi, 0x00007F7F;702050h
 
locDrawButtonsLoop: ; CODE XREF: subDrawMainWindow+3Bj
int 0x40 ; Kolibri - DEFINE/DELETE BUTTON
mcall ; Kolibri - DEFINE/DELETE BUTTON
; ebx = [xstart]*65536+[xsize]
; ecx = [ystart]*65536+[ysize]
; edx = 0xXYnnnnnn, esi = color
475,7 → 437,7
mov ebx, 27*65536+12
mov ecx, 0x80DDEEFF
mov edx, aButtonsText ; "Test Comment+ Pattern+ Open "...
int 0x40 ; Kolibri - DRAW STRING
mcall ; Kolibri - DRAW STRING
; ebx = [xstart]*65536+[ystart]
; ecx = 0xX0RRGGBB, edx -> string
call subDrawBars
487,7 → 449,7
 
mov eax, 12
mov ebx, 2
int 0x40 ; Kolibri - END WINDOW REDRAW
mcall ; Kolibri - END WINDOW REDRAW
retn
endp
 
494,7 → 456,7
proc drawSeparator
mov eax,1
mov ebx,3
@@: int 0x40
@@: mcall
add ebx,2
dec esi
jnz @b
509,7 → 471,7
mov ebx, 640145h
mov ecx, 4F0190h
mov edx, 3000000h
int 0x40
mcall
retn
endp
 
518,7 → 480,7
mov ebx, 0A0064h
mov ecx, 1E00FAh
mov edx, 6A73D0h
int 0x40
mcall
retn
endp
 
527,7 → 489,7
mov ebx, 0
mov ecx, 90*65536+123
mov edx, 15*65536+33
int 0x40
mcall
retn
endp
 
536,7 → 498,7
mov ebx, 300*65536+300 ;8C008Ch
mov ecx, 30*65536+380 ;1E017Ch
mov edx, 1090207Fh
int 0x40
mcall
retn
endp
 
545,7 → 507,7
mov ebx, 30*65536+300 ;20008Ch
mov ecx, 380*65536+380 ;17C017Ch
mov edx, 1090207Fh
int 0x40
mcall
retn
endp
 
554,7 → 516,7
mov ebx, 30*65536+300 ;20008Ch
mov ecx, 380*65536+30 ;17C001Eh
mov edx, 1090207Fh
int 0x40
mcall
retn
endp
 
564,7 → 526,7
mov ecx, 0AA66h
mov edx, aTestText
mov esi, 34
int 0x40
mcall
retn
endp
 
574,7 → 536,7
mov ecx, 10E7B850h
mov edx, aTestText
mov esi, 34
int 0x40
mcall
retn
endp
 
584,7 → 546,7
mov ecx, 12345678
mov edx, 2A014Ah
mov esi, 0E0B27Bh
int 0x40
mcall
retn
endp
 
593,7 → 555,7
mov ebx, 100
mov ecx, 100
mov edx, 0FFFFFFh
int 0x40
mcall
retn
endp
 
615,7 → 577,7
mov cx,LINE_HEIGHT
mov ebx,0*65536+72*5+5
xor edx,edx
int 0x40
mcall
pop ebx
 
and ebx,0x0000FFFF
623,7 → 585,7
mov edx,[edi+TEST_REC_SIZE-4]
mov ecx,0x8000CCCC ; 0x00E7E05A
mov eax,4
int 0x40
mcall
 
push '=' 0x00FFFF00 0x00FFFF7F 0x00FFFF7F
mov eax,[edi+0]
646,7 → 608,7
mov edx,APP_MEM_END
mov esi,8
mov eax,4
int 0x40
mcall
 
pop ecx
mov eax,[edi+4]
653,13 → 615,13
call int2str
add ebx,(6*8+6+10)*65536
mov eax,4
int 0x40
mcall
 
pop ecx
add ebx,(-6-5)*65536
mov edx,esp
mov esi,1
int 0x40
mcall
add esp,4
 
add edi,TEST_REC_SIZE
671,31 → 633,31
mov ebx, 0*65536+72*5+5
mov ecx, (TESTS_NUM*LINE_HEIGHT+15+25)*65536+26
xor edx, edx
int 0x40
mcall
 
mov eax, 4
mov ebx, 5*65536+(TESTS_NUM*LINE_HEIGHT+15+27)
mov ecx, 0x8000CCCC
mov edx, aLeft
int 0x40 ; Kolibri - DRAW STRING
mcall ; Kolibri - DRAW STRING
 
add ebx, (6*10)*65536
mov ecx, 0x00FFFF00
mov edx, aComment1
mov esi, 42
int 0x40 ; Kolibri - DRAW STRING
mcall ; Kolibri - DRAW STRING
 
mov eax, 4
mov ebx, 5*65536+(TESTS_NUM*LINE_HEIGHT+15+27+12)
mov ecx, 0x8000CCCC
mov edx, aRight
int 0x40 ; Kolibri - DRAW STRING
mcall ; Kolibri - DRAW STRING
 
add ebx, (6*10)*65536
mov ecx, 0x00FFFF00
mov edx, aComment2
mov esi, 42
int 0x40 ; Kolibri - DRAW STRING
mcall ; Kolibri - DRAW STRING
 
retn
endp
726,7 → 688,7
mov eax, 4
 
locDrawCommentsLoop: ; CODE XREF: subDrawResultComments+1Cj
int 0x40 ; Kolibri - DRAW STRING
mcall ; Kolibri - DRAW STRING
; ebx = [xstart]*65536+[ystart]
; ecx = 0xX0RRGGBB, edx -> string
add bx, 13;55
753,7 → 715,7
 
locDrawNumbersLoop: ; CODE XREF: subDrawResultNumbers+1Ej
call subGetDigitsCount
int 0x40 ; Kolibri -
mcall ; Kolibri -
add dx, 13;55
add ecx, 4
inc edi
801,7 → 763,7
locOSDWaitForEvent: ; CODE XREF: seg000:000005ADj
; seg000:000005C3j ...
mov eax, 10
int 0x40 ; Kolibri -
mcall ; Kolibri -
cmp eax, 1
jz subOpenSaveDlgProc
cmp eax, 2
813,7 → 775,7
 
locOSDKeyEvent: ; CODE XREF: seg000:000005A2j
mov eax, 2
int 0x40 ; Kolibri - GET KEY CODE
mcall ; Kolibri - GET KEY CODE
; Return: ah = keycode
cmp ah, 0B3h
jnz locOSDNotRightKey
882,7 → 844,7
bts word[wFlags], 2
mov eax,70 ; 58
mov ebx,stFileInfoBlock
int 0x40
mcall
mov esi,APP_MEM_END+100
mov edi,results_table+4
cld
915,7 → 877,7
rep movsb
mov eax,70 ; 58
mov ebx,stFileInfoBlock
int 0x40
mcall
jmp locCloseOSD
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
941,7 → 903,7
 
locOSDButtonEvent: ; CODE XREF: seg000:000005A7j
mov eax, 17
int 0x40 ; Kolibri - GET PRESSED BUTTON
mcall ; Kolibri - GET PRESSED BUTTON
; Return: ah = button ID
cmp ah, 1
jnz locNotCloseOSD
953,7 → 915,7
bts [wFlags], 1
btr [wFlags], 0
mov eax, -1
int 0x40 ; Kolibri - FINISH EXECUTION
mcall ; Kolibri - FINISH EXECUTION
 
locNotCloseOSD: ; CODE XREF: seg000:000006DFj
cmp ah, 2
960,7 → 922,7
jnz locNotSetCaretOSD
mov eax, 37
mov ebx, 1
int 0x40 ; Kolibri - GET MOUSE COORDINATES, WINDOW-RELATIVE
mcall ; Kolibri - GET MOUSE COORDINATES, WINDOW-RELATIVE
; Return: eax = [x]*65536 + [y]
shr eax, 16
sub eax, 21
998,12 → 960,12
proc subDrawOpenSaveDlg ; CODE XREF: seg000:subOpenSaveDlgProcp
mov eax, 12
mov ebx, 1
int 0x40 ; Kolibri - BEGIN WINDOW REDRAW
mcall ; Kolibri - BEGIN WINDOW REDRAW
xor eax, eax
mov ebx, 64012Ch
mov ecx, 640050h
mov edx, 3780078h
int 0x40 ; Kolibri - DEFINE/DRAW WINDOW
mcall ; Kolibri - DEFINE/DRAW WINDOW
; ebx = [xstart]*65536+[xsize]
; ecx = [ystart]*65536+[ysize]
mov eax, 4
1011,13 → 973,13
mov ecx, 10DDEEFFh
mov edx, [dwEditLabel]
mov esi, [dwEditLabelLen]
int 0x40 ; Kolibri - DRAW STRING
mcall ; Kolibri - DRAW STRING
; ebx = [xstart]*65536+[ystart]
; ecx = 0xX0RRGGBB, edx -> string
call subDrawOpenSaveDlgControls
mov eax, 12
mov ebx, 2
int 0x40 ; Kolibri - END WINDOW REDRAW
mcall ; Kolibri - END WINDOW REDRAW
retn
endp
 
1032,13 → 994,13
mov ebx, 150102h
mov ecx, 28000Fh
mov edx, 40000002h
int 0x40 ; Kolibri - DEFINE/DELETE BUTTON
mcall ; Kolibri - DEFINE/DELETE BUTTON
; ebx = [xstart]*65536+[xsize]
; ecx = [ystart]*65536+[ysize]
; edx = 0xXYnnnnnn, esi = color
mov eax, 13
mov edx, 0E0E0E0h
int 0x40 ; Kolibri - DRAW RECTANGLE
mcall ; Kolibri - DRAW RECTANGLE
; ebx = [xstart]*65536+[xsize], ecx = [ystart]*65536+[ysize]
; edx = 0xRRGGBB or 0x80RRGGBB for gradient
push eax
1048,13 → 1010,13
mov ebx, eax
pop eax
mov edx, 6A73D0h
int 0x40 ; Kolibri -
mcall ; Kolibri -
mov eax, 4
mov ebx, 15002Ch
xor ecx, ecx
mov edx, [dwBufferPtr]
mov esi, 43
int 0x40 ; Kolibri - DRAW STRING
mcall ; Kolibri - DRAW STRING
; ebx = [xstart]*65536+[ystart]
; ecx = 0xX0RRGGBB, edx -> string
popa