Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 1620 → Rev 1621

/programs/system/mgb/trunk/proc32.inc
File deleted
/programs/system/mgb/trunk/build.bat
1,2 → 1,3
@fasm mgb.asm mgb
@kpack mgb
@pause
/programs/system/mgb/trunk/build.sh
0,0 → 1,13
#!/bin/bash
# This script does for linux the same as build.bat for DOS,
# it compiles the KoOS kernel, hopefully ;-)
 
echo "lang fix en"
echo "lang fix en" > lang.inc
fasm -m 16384 mgb.asm mgb
rm -f lang.inc
exit 0
 
 
 
 
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/programs/system/mgb/trunk/mgb.asm
1,10 → 1,17
;=============================================================================
;
; Kolibri Graphics Benchmark 0.4
; MGB - Menuet Graphics Benchmark 0.3
; Compile with FASM
;
;=============================================================================
;
; version: 0.4
; last update: 18/09//2010
; written by: Marat Zakiyanov aka Mario79, aka Mario
; changes: select path with OpenDialog,
; use of Box_Lib and Proc_Lib,
; support start with path for *.mgb file
; optimization code and size of use memory
;---------------------------------------------------------------------
; Original author and copyrights holder:
; Mikhail Lisovin a.k.a. Mihasik
; lisovin@26.ru
29,222 → 36,190
db 'MENUET01'
dd 1
dd start
dd APP_MEM_END
dd 0x200000
dd 0x07FFF0
dd 0
dd 0
dd IM_END
dd I_END ;0x200000
dd stacktop ;0x07FFF0
dd fname_buf
dd cur_dir_path
 
include '..\..\..\macros.inc'
;__CPU_type equ p6 ; charge it
include '..\..\..\proc32.inc'
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
include '../../../develop/libraries/box_lib/load_lib.mac'
@use_library
;---------------------------------------------------------------------
start:
mcall 68,11
 
include 'proc32.inc'
load_libraries l_libs_start,end_l_libs
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
cmp eax,-1
jz close
;---------------------------------------------------------------------
mov edi,filename_area
mov esi,start_temp_file_name
call copy_str_1
 
mov edi,comment_string_1
mov esi,aComment1
call copy_str_1
 
proc start ; DATA XREF: seg000:off_Co
mov edi,comment_string_2
mov esi,aComment2
call copy_str_1
 
; FUNCTION CHUNK AT 000000CF SIZE 00000147 BYTES
 
mov ecx, -1
call subGetThreadInfo
mov edx, [dwMainPID]
mov ecx, eax
 
loc_36: ; CODE XREF: start+20j
call subGetThreadInfo
 
loc_3B:
cmp edx, [dwMainPID]
jz loc_46
dec ecx
jnz loc_36
 
loc_46: ; CODE XREF: start+1Dj
mov [dwMainWndSlot], ecx
 
locRedrawEvent: ; CODE XREF: start+3Cj
call subDrawMainWindow
 
locWaitForEvent: ; CODE XREF: start+6Cj start:loc_B3j ...
mcall 23, 20 ; Kolibri - WAIT FOR EVENT WITH TIMEOUT
; ebx = timeout
; Return: eax = event
mov edi,fname_buf
cmp [edi],byte 0
jne @f
mov esi,path4
call copy_str_1
jmp .OpenDialog
@@:
call locLoadFile
xor dword [wFlags],1
.OpenDialog:
;OpenDialog initialisation
push dword OpenDialog_data
call [OpenDialog_Init]
;---------------------------------------------------------------------
mcall 40,0x27
red:
call draw_window
still:
mcall 10
cmp eax, 1
jz locRedrawEvent
 
loc_62:
jz red
cmp eax, 2
jz locKeyEvent
jz key
cmp eax, 3
 
loc_6A:
jz locButtonEvent
 
loc_70:
;btr word[wFlags], 2
;jnb loc_87
;mov eax, 58
;mov ebx, stFileInfoBlock
;int 0x40 ; Kolibri - ACCESS TO FILE SYSTEM (obsolete)
; ebx -> fileinfo struc
 
loc_87: ; CODE XREF: start+55j
btr word[wFlags], 1
jnb locWaitForEvent
call subDelay100ms
mcall 0x12, 3, [dwMainWndSlot] ; Kolibri - ACTIVATE WINDOW
; ecx = slot
call subDelay100ms
 
loc_AE:
call subDrawBars
 
loc_B3:
jmp locWaitForEvent
endp
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subGetThreadInfo ; CODE XREF: start+5p start:loc_36p
mcall 9, APP_MEM_END ; Kolibri - GET THREAD INFO
; ebx -> buffer, ecx = slot (-1 for self)
; Return: eax = maximum slot
retn
endp
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subDelay100ms ; CODE XREF: start+6Ep start+85p
mcall 5, 0x0a ; Kolibri - DELAY
; ebx = time (in 1/100th of second)
retn
endp
 
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; START OF FUNCTION CHUNK FOR start
 
locKeyEvent: ; CODE XREF: start+41j
mcall 2 ; Kolibri - GET KEY CODE
; Return: ah = keycode
jz button
jmp still
;---------------------------------------------------------------------
copy_str_1:
xor eax,eax
cld
@@:
lodsb
stosb
test eax,eax
jnz @b
ret
;---------------------------------------------------------------------
key:
mcall 2
cmp ah, 't'
jz locActionTest
jz ActionTest
cmp ah, 'c'
jz locActionComment
jz ActionComment
cmp ah, 'p'
jz locActionPattern
jz ActionPattern
cmp ah, 'o'
jz locActionOpen
jz ActionOpen
cmp ah, 's'
jz locActionSave
jmp locWaitForEvent
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locButtonEvent: ; CODE XREF: start:loc_6Aj
mcall 0x11 ; Kolibri - GET PRESSED BUTTON
; Return: ah = button ID
jz ActionSave
jmp still
;---------------------------------------------------------------------
button:
mcall 17
cmp ah, 1
jnz locNotClose
mcall -1 ; Kolibri - FINISH EXECUTION
 
locNotClose: ; CODE XREF: start+E6j
jnz NotClose
close:
mcall -1
NotClose:
cmp ah, 2
jnz locNotTest
 
locActionTest: ; CODE XREF: start+B5j
bts [wFlags], 0
jb locWaitForEvent
mcall 5, 50 ; Kolibri - DELAY
; ebx = time (in 1/100th of second)
 
loc_132:
mcall 51, 1, subTestWndProc, 0x17FFF0; Kolibri - CREATE THREAD
; ebx = 1 - unique subfunction
; ecx = starting eip
; edx = starting esp
jmp locWaitForEvent
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locNotTest: ; CODE XREF: start+F2j
ActionTest:
test dword [wFlags],1
jnz still
mcall 51,1,TestWndProc,thread_stack1
jmp still
;---------------------------------------------------------------------
locNotTest:
cmp ah, 3
jnz locNotComment
 
locActionComment: ; CODE XREF: start+BAj
bts [wFlags], 0
jb locWaitForEvent
mov [dwBufferPtr], aComment1 ; "Current "...
mov [dwEditLabel], aComment ; "Comment"
mov [dwEditLabelLen], 7
call subCreateOpenSaveDlg
jmp locWaitForEvent
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locNotComment: ; CODE XREF: start+12Cj
jnz NotComment
ActionComment:
test dword [wFlags],1
jnz still
mcall 51,1,thread_comment,thread_stack2
jmp still
;---------------------------------------------------------------------
NotComment:
cmp ah, 4
jnz locNotPattern
 
locActionPattern: ; CODE XREF: start+BFj
call subSavePattern
call subDrawBars
jmp locWaitForEvent
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locNotPattern: ; CODE XREF: start+167j
jnz NotPattern
ActionPattern:
test dword [wFlags],1
jnz still
mov esi,results_table
cld
@@:
lodsd
mov [esi],eax
add esi,TEST_REC_SIZE-4
cmp dword [esi+TEST_REC_SIZE-4],0
jne @b
mov esi,comment_string_1
mov edi,comment_string_2
call copy_str_1
call DrawBars
jmp still
;---------------------------------------------------------------------
NotPattern:
cmp ah, 5
jnz locNotOpen
 
locActionOpen: ; CODE XREF: start+C8j
bts [wFlags], 0
jb locWaitForEvent
mov [dwBufferPtr], aPatternPath ; "/rd/1/pattern.mgb "...
mov [dwEditLabel], aOpenFile ; "Open file"
mov [dwEditLabelLen], 9
call subCreateOpenSaveDlg
jmp locWaitForEvent
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locNotOpen: ; CODE XREF: start+17Bj
jnz NotOpen
ActionOpen:
test dword [wFlags],1
jnz still
mov [OpenDialog_data.type],0 ; open
call OpenDialog_Start_1
jne .1
call locLoadFile
call DrawBars
.1:
xor dword [wFlags],1
jmp still
;---------------------------------------------------------------------
OpenDialog_Start_1:
push dword OpenDialog_data
call [OpenDialog_Start]
cmp [OpenDialog_data.status],1
ret
;---------------------------------------------------------------------
NotOpen:
cmp ah, 6
jnz locWaitForEvent
 
locActionSave: ; CODE XREF: start+D1j
bts [wFlags], 0
jb locWaitForEvent
mov [dwBufferPtr], aPatternPath ; "/rd/1/pattern.mgb "...
mov [dwEditLabel], aSaveAs ; "Save as..."
mov [dwEditLabelLen], 0Ah
call subCreateOpenSaveDlg
jmp locWaitForEvent
; END OF FUNCTION CHUNK FOR start
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subCreateOpenSaveDlg ; CODE XREF: start+15Ap start+1A9p ...
mcall 51, 1, subOpenSaveDlgProc, 0x19FFF0; Kolibri - CREATE THREAD
; ebx = 1 - unique subfunction
; ecx = starting eip
; edx = starting esp
retn
endp
 
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
subTestWndProc: ; DATA XREF: start+118o
 
jnz still
ActionSave:
test dword [wFlags],1
jnz still
mov [OpenDialog_data.type],1 ; save
call OpenDialog_Start_1
jne ActionOpen.1
call locSaveFile
jmp ActionOpen.1
;---------------------------------------------------------------------
TestWndProc:
or dword [wFlags],1
mov esi,results_table+8
.next_test: call subInitTestTimer
 
align 4
@@: push esi
.next_test:
xor edi,edi
mcall 26,9
inc eax
mov ecx,eax
add eax,100
mov [dwTestEndTime],eax
align 4
@@:
mcall 26
cmp eax,ecx
jb @r
align 4
@@:
push esi
call dword[esi]
pop esi
call subIfTimeElapsed
inc edi
mcall 26,9
cmp eax,[dwTestEndTime]
jb @b
mov [esi-8],edi
 
251,182 → 226,30
add esi,TEST_REC_SIZE
cmp dword[esi],0
jnz .next_test
macro unused {
call subInitTestTimer
 
locDrawNextWindow: ; CODE XREF: seg000:00000241j
mov ecx, 4F0190h
call testDrawWindow
call subIfTimeElapsed
jb locDrawNextWindow
mov [results_table+TEST_REC_SIZE*0], edi
call subInitTestTimer
 
locDrawNextBar: ; CODE XREF: seg000:00000269j
mcall 0x0d, 0x0A0064, 0x1E00FA, 0x6A73D0; Kolibri - DRAW RECTANGLE
; ebx = [xstart]*65536+[xsize], ecx = [ystart]*65536+[ysize]
; edx = 0xRRGGBB or 0x80RRGGBB for gradient
call subIfTimeElapsed
jb locDrawNextBar
mov [results_table+TEST_REC_SIZE*1], edi
call subInitTestTimer
 
locDrawNextLine: ; CODE XREF: seg000:00000291j
; 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
jb locDrawNextLine
mov [results_table+TEST_REC_SIZE*2], edi
call subInitTestTimer
 
locDrawNextText1: ; CODE XREF: seg000:000002BEj
; Kolibri - DRAW STRING
mcall 4, 0x0A012C, 0x0AA66, aTestText, 34
; ebx = [xstart]*65536+[ystart]
; ecx = 0xX0RRGGBB, edx -> string
call subIfTimeElapsed
jb locDrawNextText1
mov [results_table+TEST_REC_SIZE*3], edi
call subInitTestTimer
 
locDrawNextText2: ; CODE XREF: seg000:000002EBj
; Kolibri - DRAW STRING
mcall 4, 0x0A015E, 0x10E7B850, aTestText, 34
; ebx = [xstart]*65536+[ystart]
; ecx = 0xX0RRGGBB, edx -> string
call subIfTimeElapsed
jb locDrawNextText2
mov [results_table+TEST_REC_SIZE*4], edi
call subInitTestTimer
 
locDrawNextNumber: ; CODE XREF: seg000:00000318j
; Kolibri - DRAW NUMBER
; bl = 0/1 - ecx is number/pointer
; bh = 0/1/2 - dec/hex/bin
; highword(ebx) = number of digits
; 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
call subInitTestTimer
 
locDrawNextPixel: ; CODE XREF: seg000:00000340j
; 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
}
bts word[wFlags], 1
btr word[wFlags], 0
; Kolibri - FINISH EXECUTION
xor dword [wFlags],1
mcall -1
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subInitTestTimer ; CODE XREF: seg000:subTestWndProcp
; seg000:00000249p ...
xor edi, edi
mov eax, 26
mov ebx, 9
mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER
; Return: eax = time counter
inc eax
mov ecx, eax
add eax, 100
mov [dwTestEndTime], eax
 
locWait10ms: ; CODE XREF: subInitTestTimer+22j
mov eax, 26
mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER
; Return: eax = time counter
cmp eax, ecx
jb locWait10ms
retn
endp
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subIfTimeElapsed ; CODE XREF: seg000:0000023Cp
; seg000:00000264p ...
inc edi
mov eax, 26
mov ebx, 9
mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER
; Return: eax = time counter
cmp eax, [dwTestEndTime]
retn
endp
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subSavePattern ; CODE XREF: start:locActionPatternp
; mov esi, dwDrawWindowTime
; mov edi, dwDrawWindowTime2
; mov ecx, 18
; cld
; rep movsd
mov esi,results_table
cld
@@: lodsd
mov [esi],eax
add esi,TEST_REC_SIZE-4
cmp dword[esi+TEST_REC_SIZE-4],0
jne @b
mov esi,aComment1
mov edi,aComment2
mov ecx,44/4
rep movsd
retn
endp
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subDrawMainWindow ; CODE XREF: start:locRedrawEventp
mov eax, 12
mov ebx, 1
mcall ; Kolibri - BEGIN WINDOW REDRAW
mov eax,48
mov ebx,4
mcall
mov ebx, 100*65536+72*5+14;640145h
;---------------------------------------------------------------------
draw_window:
mcall 12,1
mcall 48,4
mov ebx,100*65536+72*5+14
mov ecx, 80*65536+TESTS_NUM*LINE_HEIGHT+15+20+35
add cx, ax
mov edx, 34000000h
mov edi, aCaption
xor eax, eax
mcall
xor esi,esi
mcall ,,,34000000h,,aCaption
 
mov eax, 8
mov ebx, 050036h+12
mov ecx, 5*65536+20
mov edx, 2
mov esi, 0x00007F7F;702050h
 
locDrawButtonsLoop: ; CODE XREF: subDrawMainWindow+3Bj
mcall ; Kolibri - DEFINE/DELETE BUTTON
; ebx = [xstart]*65536+[xsize]
; ecx = [ystart]*65536+[ysize]
; edx = 0xXYnnnnnn, esi = color
mov esi,0x00007F7F
@@:
mcall
add ebx, 72*65536
inc edx
cmp edx, 7
jb locDrawButtonsLoop
jb @r
 
mov ecx,31
mov edx,0x00007F7F
433,144 → 256,86
mov esi,(72*5)/2
call drawSeparator
 
mov eax, 4
mov ebx, 27*65536+12
mov ecx, 0x80DDEEFF
mov edx, aButtonsText ; "Test Comment+ Pattern+ Open "...
mcall ; Kolibri - DRAW STRING
; ebx = [xstart]*65536+[ystart]
; ecx = 0xX0RRGGBB, edx -> string
call subDrawBars
mcall 4,<27,12>,0x80DDEEFF,aButtonsText
call DrawBars
 
mov ecx,TESTS_NUM*LINE_HEIGHT+15+21
mov edx,0x00007F7F
mov esi,(72*5)/2
call drawSeparator
 
mov eax, 12
mov ebx, 2
mcall ; Kolibri - END WINDOW REDRAW
retn
endp
 
proc drawSeparator
mcall 12,2
ret
;---------------------------------------------------------------------
drawSeparator:
mov eax,1
mov ebx,3
@@: mcall
@@:
mcall
add ebx,2
dec esi
jnz @b
retn
endp
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc testDrawWindow
ret
;---------------------------------------------------------------------
align 4
testDrawWindow:
xor eax, eax
mov ebx, 640145h
mov ecx, 4F0190h
mov edx, 3000000h
mcall
retn
endp
 
proc testDrawBar
mov eax, 13
mov ebx, 0A0064h
mov ecx, 1E00FAh
mov edx, 6A73D0h
mcall
retn
endp
 
proc testDrawPicture
mov eax, 7
mov ebx, 0
mov ecx, 90*65536+123
mov edx, 15*65536+33
mcall
retn
endp
 
proc testDrawVertLine
mov eax, 38
mov ebx, 300*65536+300 ;8C008Ch
mov ecx, 30*65536+380 ;1E017Ch
mov edx, 1090207Fh
mcall
retn
endp
 
proc testDrawHorzLine
mov eax, 38
mov ebx, 30*65536+300 ;20008Ch
mov ecx, 380*65536+380 ;17C017Ch
mov edx, 1090207Fh
mcall
retn
endp
 
proc testDrawFreeLine
mov eax, 38
mov ebx, 30*65536+300 ;20008Ch
mov ecx, 380*65536+30 ;17C001Eh
mov edx, 1090207Fh
mcall
retn
endp
 
proc testDrawText1
mov eax, 4
mov ebx, 0C012Ch
mov ecx, 0AA66h
mov edx, aTestText
mov esi, 34
mcall
retn
endp
 
proc testDrawText2
mov eax, 4
mov ebx, 1B013Bh
mov ecx, 10E7B850h
mov edx, aTestText
mov esi, 34
mcall
retn
endp
 
proc testDrawNumber
mov eax, 47
mov ebx, 80000h
mov ecx, 12345678
mov edx, 2A014Ah
mov esi, 0E0B27Bh
mcall
retn
endp
 
proc testDrawPixel
mov eax, 1
mov ebx, 100
mov ecx, 100
mov edx, 0FFFFFFh
mcall
retn
endp
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subDrawBars ; CODE XREF: start:loc_AEp start+16Ep ...
mcall ,640145h,4F0190h,3000000h
ret
;---------------------------------------------------------------------
align 4
testDrawBar:
mcall 13,0A0064h,1E00FAh,6A73D0h
ret
;---------------------------------------------------------------------
align 4
testDrawPicture:
xor ebx,ebx
mcall 7,,<90,123>,<15,33>
ret
;---------------------------------------------------------------------
align 4
testDrawVertLine:
mcall 38,<300,300>,<30,380>,1090207Fh
ret
;---------------------------------------------------------------------
align 4
testDrawHorzLine:
mcall 38,<30,300>,<380,380>,1090207Fh
ret
;---------------------------------------------------------------------
align 4
testDrawFreeLine:
mcall 38,<30,300>,<380,30>,1090207Fh
ret
;---------------------------------------------------------------------
align 4
testDrawText1:
mcall 4,0C012Ch,0AA66h,aTestText,34
ret
;---------------------------------------------------------------------
align 4
testDrawText2:
mcall 4,1B013Bh,10E7B850h,aTestText,34
ret
;---------------------------------------------------------------------
align 4
testDrawNumber:
mcall 47,80000h,12345678,2A014Ah,0E0B27Bh
ret
;---------------------------------------------------------------------
align 4
testDrawPixel:
mcall 1,100,100,0FFFFFFh
ret
;---------------------------------------------------------------------
DrawBars:
mov edi,results_table
mov ebx,30+7
.next_result: cmp dword[edi+TEST_REC_SIZE-4],0
.next_result:
cmp dword[edi+TEST_REC_SIZE-4],0
je .exit
 
push ebx
mov eax,13
movzx ecx,bx
add ecx,-2
shl ecx,16
577,15 → 342,13
mov cx,LINE_HEIGHT
mov ebx,0*65536+72*5+5
xor edx,edx
mcall
mcall 13
pop ebx
 
and ebx,0x0000FFFF
or ebx,5*65536
mov edx,[edi+TEST_REC_SIZE-4]
mov ecx,0x8000CCCC ; 0x00E7E05A
mov eax,4
mcall
mcall 4,,0x8000CCCC
 
push '=' 0x00FFFF00 0x00FFFF7F 0x00FFFF7F
mov eax,[edi+0]
596,7 → 359,8
mov dword[esp+4],0x00FF7F7F
mov dword[esp+8],0x0000FF00
mov byte[esp+12],'>'
.lp1: ja @f
.lp1:
ja @f
mov dword[esp+0],0x00FF7F7F
mov dword[esp+4],0x007FFF7F
mov dword[esp+8],0x00FF0000
605,17 → 369,13
pop ecx
call int2str
add ebx,(72*5-6*8*2-6-10-5)*65536 ; 196
mov edx,APP_MEM_END
mov esi,8
mov eax,4
mcall
mcall 4,,,textarea,8
 
pop ecx
mov eax,[edi+4]
call int2str
add ebx,(6*8+6+10)*65536
mov eax,4
mcall
mcall 4
 
pop ecx
add ebx,(-6-5)*65536
628,47 → 388,32
add bx,LINE_HEIGHT
jmp .next_result
.exit:
 
mov eax, 13
mov ebx, 0*65536+72*5+5
mov ecx, (TESTS_NUM*LINE_HEIGHT+15+25)*65536+26
xor edx, edx
mcall
mcall 13
 
mov eax, 4
mov ebx, 5*65536+(TESTS_NUM*LINE_HEIGHT+15+27)
mov ecx, 0x8000CCCC
mov edx, aLeft
mcall ; Kolibri - DRAW STRING
mcall 4,,0x8000CCCC,aLeft
 
add ebx, (6*10)*65536
mov ecx, 0x00FFFF00
mov edx, aComment1
mov esi, 42
mcall ; Kolibri - DRAW STRING
mcall ,,0x80FFFF00,comment_string_1
 
mov eax, 4
mov ebx, 5*65536+(TESTS_NUM*LINE_HEIGHT+15+27+12)
mov ecx, 0x8000CCCC
mov edx, aRight
mcall ; Kolibri - DRAW STRING
mcall ,,0x8000CCCC,aRight
 
add ebx, (6*10)*65536
mov ecx, 0x00FFFF00
mov edx, aComment2
mov esi, 42
mcall ; Kolibri - DRAW STRING
 
retn
endp
 
proc int2str
mcall ,,0x80FFFF00,comment_string_2
ret
;---------------------------------------------------------------------
int2str:
push eax ecx edx edi
mov edi,APP_MEM_END+7
mov dword[APP_MEM_END+0],' '
mov dword[APP_MEM_END+4],' '
mov edi,textarea+7
mov dword[textarea+0],' '
mov dword[textarea+4],' '
mov ecx,10
@@: xor edx,edx
@@:
xor edx,edx
div ecx
add dl,'0'
mov [edi],dl
676,386 → 421,116
or eax,eax
jnz @b
pop edi edx ecx eax
retn
endp
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subDrawResultComments ; CODE XREF: subDrawBars+92p
; subDrawBars+AFp ...
xor di, di
mov eax, 4
 
locDrawCommentsLoop: ; CODE XREF: subDrawResultComments+1Cj
mcall ; Kolibri - DRAW STRING
; ebx = [xstart]*65536+[ystart]
; ecx = 0xX0RRGGBB, edx -> string
add bx, 13;55
bt edi, 31
jnb loc_52F
add edx, esi
 
loc_52F: ; CODE XREF: subDrawResultComments+12j
inc di
cmp di, 7
jb locDrawCommentsLoop
retn
endp
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subDrawResultNumbers ; CODE XREF: subDrawBars+CDp
; subDrawBars+DCp
xor edi, edi
mov eax, 47
mov esi, 0DDEEFFh
 
locDrawNumbersLoop: ; CODE XREF: subDrawResultNumbers+1Ej
call subGetDigitsCount
mcall ; Kolibri -
add dx, 13;55
add ecx, 4
inc edi
cmp edi, 7
jb locDrawNumbersLoop
retn
endp
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subGetDigitsCount ; CODE XREF: subDrawResultNumbers:locDrawNumbersLoopp
xor ebx, ebx
mov bh, 6
cmp dword[ecx], 99999
ja loc_589
dec bh
cmp dword[ecx], 9999
ja loc_589
dec bh
cmp dword[ecx], 999
ja loc_589
dec bh
cmp dword[ecx], 99
ja loc_589
dec bh
cmp dword[ecx], 9
ja loc_589
dec bh
 
loc_589: ; CODE XREF: subGetDigitsCount+Aj
; subGetDigitsCount+14j ...
bswap ebx
inc bl
retn
endp
 
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
subOpenSaveDlgProc: ; CODE XREF: seg000:0000059Dj
; DATA XREF: subCreateOpenSaveDlg+Ao
call subDrawOpenSaveDlg
 
locOSDWaitForEvent: ; CODE XREF: seg000:000005ADj
; seg000:000005C3j ...
mov eax, 10
mcall ; Kolibri -
cmp eax, 1
jz subOpenSaveDlgProc
cmp eax, 2
jz locOSDKeyEvent
cmp eax, 3
jz locOSDButtonEvent
jmp locOSDWaitForEvent
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locOSDKeyEvent: ; CODE XREF: seg000:000005A2j
mov eax, 2
mcall ; Kolibri - GET KEY CODE
; Return: ah = keycode
cmp ah, 0B3h
jnz locOSDNotRightKey
mov eax, [dwOSDCaretPos]
cmp eax, 41
ja locOSDWaitForEvent
inc eax
mov [dwOSDCaretPos], eax
call subDrawOpenSaveDlgControls
jmp locOSDWaitForEvent
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locOSDNotRightKey: ; CODE XREF: seg000:000005B9j
cmp ah, 0B0h
jnz locOSDNotLeftKey
mov eax, [dwOSDCaretPos]
test eax, eax
jz locOSDWaitForEvent
ret
;---------------------------------------------------------------------
thread_comment:
or dword [wFlags],1
mcall 40,0x27
mov esi,comment_string_1
cld
@@:
lodsb
test al,al
jne @r
sub esi,comment_string_1
mov eax,esi
dec eax
mov [dwOSDCaretPos], eax
call subDrawOpenSaveDlgControls
jmp locOSDWaitForEvent
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
mov edi, edit1
mov [edi+48], eax ;ed_size
mov [edi+52], eax ;ed_pos
;---------------------------------------------------------------------
.red:
call .draw_window
.still:
mcall 10 ; 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
 
locOSDNotLeftKey: ; CODE XREF: seg000:000005D5j
cmp ah, 0B6h
jnz locOSDNotDeleteKey
call subOSDDeleteChar
call subDrawOpenSaveDlgControls
jmp locOSDWaitForEvent
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
push dword name_editboxes
call [edit_box_mouse]
jmp .still
;---------------------------------------------------------------------
.key: ; key
mcall 2
cmp ah,13
je .close ;.close_with_open_file
cmp ah,27
je .close
 
locOSDNotDeleteKey: ; CODE XREF: seg000:000005F0j
cmp ah, 8
jnz locOSDNotBackspaceKey
mov eax, [dwOSDCaretPos]
test eax, eax
jz locOSDWaitForEvent
dec eax
mov [dwOSDCaretPos], eax
call subOSDDeleteChar
call subDrawOpenSaveDlgControls
jmp locOSDWaitForEvent
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locOSDNotBackspaceKey: ; CODE XREF: seg000:00000601j
cmp ah, 0Dh
jnz locOSDNotReturnKey
 
locOSDReturnKey: ; CODE XREF: seg000:000006E1j
mov al, ' '
mov edi, [dwBufferPtr]
add edi,43
mov ecx,43
std
repe scasb
cld
inc edi
mov byte[edi+1], 0
cmp [dwBufferPtr], aPatternPath ; "/rd/1/pattern.mgb "...
jnz locCloseOSD
cmp [dwEditLabel], aOpenFile ; "Open file"
jnz locSaveFile
push dword name_editboxes
call [edit_box_key]
jmp .still
;---------------------------------------------------------------------
.button: ; button
mcall 17
cmp ah,1 ; button id=1 ?
jne .still
.close:
xor dword [wFlags],1
mcall -1
;---------------------------------------------------------------------
.draw_window:
mcall 12,1
xor eax,eax
xor esi,esi
mcall ,<100,300>,<100,80>,0x34780078,,aComment
push dword name_editboxes
call [edit_box_draw]
mcall 12,2
ret
;---------------------------------------------------------------------
locLoadFile:
mov [stFileInfoBlock], 0
mov [dwDataSize], TESTS_NUM*4+44
bts word[wFlags], 2
mov eax,70 ; 58
mov ebx,stFileInfoBlock
mcall
mov esi,APP_MEM_END+100
or dword [wFlags],1
mcall 70,stFileInfoBlock
mov esi,mgb_data
mov edi,results_table+4
cld
@@: cmp dword[edi+TEST_REC_SIZE-8],0
@@:
cmp dword[edi+TEST_REC_SIZE-8],0
je @f
movsd
add edi,TEST_REC_SIZE-4
jmp @b
@@:
mov edi,aComment2
mov edi,comment_string_2
mov ecx,44
rep movsb
jmp locCloseOSD
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locSaveFile: ; CODE XREF: seg000:00000654j
mov [stFileInfoBlock], 2 ; 1
mov [dwDataSize], TESTS_NUM*4+44
bts word[wFlags], 2
ret
;---------------------------------------------------------------------
locSaveFile:
mov [stFileInfoBlock], 2
or dword [wFlags],1
mov esi,results_table+4
mov edi,APP_MEM_END+100
mov edi,mgb_data
cld
@@: cmp dword[esi+TEST_REC_SIZE-8],0
@@:
cmp dword[esi+TEST_REC_SIZE-8],0
je @f
movsd
add esi,TEST_REC_SIZE-4
jmp @b
@@: mov esi,aComment2
@@:
mov esi,comment_string_2
mov ecx,44
rep movsb
mov eax,70 ; 58
mov ebx,stFileInfoBlock
mcall
jmp locCloseOSD
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locOSDNotReturnKey: ; CODE XREF: seg000:00000624j
cmp [dwOSDCaretPos], 42
jnb locOSDWaitForEvent
mov edi, [dwBufferPtr]
add edi, 42
mov esi, edi
dec esi
mov ecx, 42
sub ecx, [dwOSDCaretPos]
std
rep movsb
shr eax, 8
mov esi, [dwBufferPtr]
add esi, [dwOSDCaretPos]
mov [esi], al
inc [dwOSDCaretPos]
call subDrawOpenSaveDlgControls
jmp locOSDWaitForEvent
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locOSDButtonEvent: ; CODE XREF: seg000:000005A7j
mov eax, 17
mcall ; Kolibri - GET PRESSED BUTTON
; Return: ah = button ID
cmp ah, 1
jnz locNotCloseOSD
jmp locOSDReturnKey
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locCloseOSD: ; CODE XREF: seg000:00000644j
; seg000:0000066Cj ...
bts [wFlags], 1
btr [wFlags], 0
mov eax, -1
mcall ; Kolibri - FINISH EXECUTION
 
locNotCloseOSD: ; CODE XREF: seg000:000006DFj
cmp ah, 2
jnz locNotSetCaretOSD
mov eax, 37
mov ebx, 1
mcall ; Kolibri - GET MOUSE COORDINATES, WINDOW-RELATIVE
; Return: eax = [x]*65536 + [y]
shr eax, 16
sub eax, 21
xor edx, edx
mov ebx, 6
div ebx
mov [dwOSDCaretPos], eax
call subDrawOpenSaveDlgControls
jmp locOSDWaitForEvent
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
locNotSetCaretOSD: ; CODE XREF: seg000:00000700j
jmp locOSDWaitForEvent
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subOSDDeleteChar ; CODE XREF: seg000:000005F2p
; seg000:00000612p
mov edi, [dwBufferPtr]
add edi, [dwOSDCaretPos]
mov esi, edi
inc esi
mov ecx, 43
sub ecx, [dwOSDCaretPos]
cld
rep movsb
retn
endp
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subDrawOpenSaveDlg ; CODE XREF: seg000:subOpenSaveDlgProcp
mov eax, 12
mov ebx, 1
mcall ; Kolibri - BEGIN WINDOW REDRAW
xor eax, eax
mov ebx, 64012Ch
mov ecx, 640050h
mov edx, 3780078h
mcall ; Kolibri - DEFINE/DRAW WINDOW
; ebx = [xstart]*65536+[xsize]
; ecx = [ystart]*65536+[ysize]
mov eax, 4
mov ebx, 80008h
mov ecx, 10DDEEFFh
mov edx, [dwEditLabel]
mov esi, [dwEditLabelLen]
mcall ; Kolibri - DRAW STRING
; ebx = [xstart]*65536+[ystart]
; ecx = 0xX0RRGGBB, edx -> string
call subDrawOpenSaveDlgControls
mov eax, 12
mov ebx, 2
mcall ; Kolibri - END WINDOW REDRAW
retn
endp
 
 
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
 
 
proc subDrawOpenSaveDlgControls ; CODE XREF: seg000:000005CBp
; seg000:000005E6p ...
pusha
mov eax, 8
mov ebx, 150102h
mov ecx, 28000Fh
mov edx, 40000002h
mcall ; Kolibri - DEFINE/DELETE BUTTON
; ebx = [xstart]*65536+[xsize]
; ecx = [ystart]*65536+[ysize]
; edx = 0xXYnnnnnn, esi = color
mov eax, 13
mov edx, 0E0E0E0h
mcall ; Kolibri - DRAW RECTANGLE
; ebx = [xstart]*65536+[xsize], ecx = [ystart]*65536+[ysize]
; edx = 0xRRGGBB or 0x80RRGGBB for gradient
push eax
mov eax, 60000h
mul [dwOSDCaretPos]
add eax, 150006h
mov ebx, eax
pop eax
mov edx, 6A73D0h
mcall ; Kolibri -
mov eax, 4
mov ebx, 15002Ch
xor ecx, ecx
mov edx, [dwBufferPtr]
mov esi, 43
mcall ; Kolibri - DRAW STRING
; ebx = [xstart]*65536+[ystart]
; ecx = 0xX0RRGGBB, edx -> string
popa
retn
endp
 
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
dwMainWndSlot dd 0 ; DATA XREF: start:loc_46w start+7Dr
dwBufferPtr dd 0 ; DATA XREF: start+13Cw start+18Bw ...
dwEditLabel dd 0 ; DATA XREF: start+146w start+195w ...
dwEditLabelLen dd 0 ; DATA XREF: start+150w start+19Fw ...
aComment db 'Comment' ; DATA XREF: start+146o
aOpenFile db 'Open file' ; DATA XREF: start+195o
; seg000:0000064Ao
aSaveAs db 'Save as...' ; DATA XREF: start+1D4o
dwOSDCaretPos dd 0 ; DATA XREF: seg000:000005BBr
; seg000:000005C6w ...
macro unused {
stFileInfoBlock dd 0 ; DATA XREF: start+5Co
; seg000:00000658w ...
dd 0
dwDataSize dd 1 ; DATA XREF: seg000:0000065Ew
; seg000:00000678w
dd APP_MEM_END+100
dd APP_MEM_END
aPatternPath db '/hd0/1/pattern.mgb ' ; DATA XREF: start+18Bo
}
mcall 70,stFileInfoBlock
ret
;---------------------------------------------------------------------
align 4
stFileInfoBlock dd 0,0,0
dwDataSize dd 1
dd APP_MEM_END+100
aPatternPath db '/hd0/1/pattern.mgb ' ; DATA XREF: start+18Bo
 
; start+1CAo ...
wFlags dd 0 ; DATA XREF: start:loc_70w
; start:loc_87w ...
dwTestEndTime dd 0 ; DATA XREF: subInitTestTimer+14w
; subIfTimeElapsed+Dr
dwDataSize dd TESTS_NUM*4+44 ;1
dd mgb_data
db 0
dd fname_buf
;---------------------------------------------------------------------
wFlags dd 0
;---------------------------------------------------------------------
align 4
results_table dd \
?,?,testDrawWindow,aDrawingWindow,\
?,?,testDrawBar,aDrawingBar,\
1068,17 → 543,11
?,?,testDrawNumber,aDrawingNumber,\
?,?,testDrawPixel,aDrawingPixel,\
0,0,0,0
 
;---------------------------------------------------------------------
LINE_HEIGHT = 13
TEST_REC_SIZE = 16
TESTS_NUM = ($ - results_table) / TEST_REC_SIZE - 1
 
macro cstr name,str {
local ..end
name db ..end-name-1,str
..end:
}
 
;---------------------------------------------------------------------
aDrawingWindow db 'Window Of Type #3, 325x400 px',0
aDrawingBar db 'Filled Rectangle, 100x250 px',0
aDrawingPicture db 'Picture, 55x123, px',0
1090,28 → 559,224
aDrawingNumber db 'Decimal Number, 8 digits',0
aDrawingPixel db 'Single Pixel',0
 
aTestText db 'This is a 34-charachters test text' ; DATA XREF: seg000:000002ADo
; seg000:000002DAo
aTestText db 'This is a 34-charachters test text'
aButtonsText db 'Test Comment+ Pattern+ Open Save',0
; DATA XREF: subDrawMainWindow+5Do
aCaption db 'Menuet Graphical Benchmark 0.3',0 ; DATA XREF: subDrawMainWindow+4Co
aCaption db 'Kolibri Graphical Benchmark 0.4',0
 
aLeft db 'Left :',0
aRight db 'Right :',0
 
aComment1 db 'current ' ; DATA XREF: start+13Co
; subDrawBars+9Co
;dwDrawWindowTime2 dd 0 ; DATA XREF: subSubSavePattern+5o
; ; subDrawBars+18o ...
; dd 0
; dd 0
; dd 0
; dd 0
; dd 0
; dd 0
aComment2 db 'no pattern '
; DATA XREF: subDrawBars+72o
; subDrawBars+B9o
APP_MEM_END: rb 30 ; ; DATA XREF: seg000:off_10o
; subGetThreadInfo+5o ...
dwMainPID dd ? ; DATA XREF: start+Ar start:loc_3Br
aComment1 db 'current',0
aComment2 db 'no pattern',0
aComment db 'Comment',0
;---------------------------------------------------------------------
system_dir_Boxlib db '/sys/lib/box_lib.obj',0
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
;---------------------------------------------------------------------
head_f_i:
head_f_l db 'System error',0
 
err_message_found_lib1 db 'box_lib.obj - Not found!',0
err_message_found_lib2 db 'proc_lib.obj - Not found!',0
 
err_message_import1 db 'box_lib.obj - Wrong import!',0
err_message_import2 db 'proc_lib.obj - Wrong import!',0
;---------------------------------------------------------------------
align 4
l_libs_start:
 
library01 l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \
err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
 
library02 l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \
err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
 
end_l_libs:
;---------------------------------------------------------------------
align 4
OpenDialog_data:
.type dd 1 ; Save
.procinfo dd procinfo ;+4
.com_area_name dd communication_area_name ;+8
.com_area dd 0 ;+12
.opendir_pach dd temp_dir_pach ;+16
.dir_default_pach dd communication_area_default_pach ;+20
.start_path dd open_dialog_path ;+24
.draw_window dd draw_window ;+28
.status dd 0 ;+32
.openfile_pach dd fname_buf ;+36
.filename_area dd filename_area ;+40
.filter_area dd Filter
.x:
.x_size dw 420 ;+48 ; Window X size
.x_start dw 10 ;+50 ; Window X position
.y:
.y_size dw 320 ;+52 ; Window y size
.y_start dw 10 ;+54 ; Window Y position
 
communication_area_name:
db 'FFFFFFFF_open_dialog',0
open_dialog_path:
db '/sys/File Managers/opendial',0
communication_area_default_pach:
db '/rd0/1/',0
 
Filter:
dd Filter.end - Filter
.1:
db 'MGB',0
.end:
db 0
 
start_temp_file_name: db 'pattern.mgb',0
 
path4 db '/rd/1/pattern.mgb',0
;---------------------------------------------------------------------
align 4
ProcLib_import:
OpenDialog_Init dd aOpenDialog_Init
OpenDialog_Start dd aOpenDialog_Start
;OpenDialog__Version dd aOpenDialog_Version
dd 0
dd 0
aOpenDialog_Init db 'OpenDialog_init',0
aOpenDialog_Start db 'OpenDialog_start',0
;aOpenDialog_Version db 'Version_OpenDialog',0
;---------------------------------------------------------------------
align 4
Box_lib_import:
;init_lib dd a_init
;version_lib dd a_version
 
 
edit_box_draw dd aEdit_box_draw
edit_box_key dd aEdit_box_key
edit_box_mouse dd aEdit_box_mouse
;version_ed dd aVersion_ed
 
;check_box_draw dd aCheck_box_draw
;check_box_mouse dd aCheck_box_mouse
;version_ch dd aVersion_ch
 
;option_box_draw dd aOption_box_draw
;option_box_mouse dd aOption_box_mouse
;version_op dd aVersion_op
 
;scrollbar_ver_draw dd aScrollbar_ver_draw
;scrollbar_ver_mouse dd aScrollbar_ver_mouse
;scrollbar_hor_draw dd aScrollbar_hor_draw
;scrollbar_hor_mouse dd aScrollbar_hor_mouse
;version_scrollbar dd aVersion_scrollbar
 
;dinamic_button_draw dd aDbutton_draw
;dinamic_button_mouse dd aDbutton_mouse
;version_dbutton dd aVersion_dbutton
 
;menu_bar_draw dd aMenu_bar_draw
;menu_bar_mouse dd aMenu_bar_mouse
;menu_bar_activate dd aMenu_bar_activate
;version_menu_bar dd aVersion_menu_bar
 
;FileBrowser_draw dd aFileBrowser_draw
;FileBrowser_mouse dd aFileBrowser_mouse
;FileBrowser_key dd aFileBrowser_key
;Version_FileBrowser dd aVersion_FileBrowser
 
;PathShow_prepare dd sz_PathShow_prepare
;PathShow_draw dd sz_PathShow_draw
;Version_path_show dd szVersion_path_show
dd 0
dd 0
 
;a_init db 'lib_init',0
;a_version db 'version',0
 
aEdit_box_draw db 'edit_box',0
aEdit_box_key db 'edit_box_key',0
aEdit_box_mouse db 'edit_box_mouse',0
;aVersion_ed db 'version_ed',0
 
;aCheck_box_draw db 'check_box_draw',0
;aCheck_box_mouse db 'check_box_mouse',0
;aVersion_ch db 'version_ch',0
 
;aOption_box_draw db 'option_box_draw',0
;aOption_box_mouse db 'option_box_mouse',0
;aVersion_op db 'version_op',0
 
;aScrollbar_ver_draw db 'scrollbar_v_draw',0
;aScrollbar_ver_mouse db 'scrollbar_v_mouse',0
;aScrollbar_hor_draw db 'scrollbar_h_draw',0
;aScrollbar_hor_mouse db 'scrollbar_h_mouse',0
;aVersion_scrollbar db 'version_scrollbar',0
 
;aDbutton_draw db 'dbutton_draw',0
;aDbutton_mouse db 'dbutton_mouse',0
;aVersion_dbutton db 'version_dbutton',0
 
;aMenu_bar_draw db 'menu_bar_draw',0
;aMenu_bar_mouse db 'menu_bar_mouse',0
;aMenu_bar_activate db 'menu_bar_activate',0
;aVersion_menu_bar db 'version_menu_bar',0
 
;aFileBrowser_draw db 'FileBrowser_draw',0
;aFileBrowser_mouse db 'FileBrowser_mouse',0
;aFileBrowser_key db 'FileBrowser_key',0
;aVersion_FileBrowser db 'version_FileBrowser',0
 
;sz_PathShow_prepare db 'PathShow_prepare',0
;sz_PathShow_draw db 'PathShow_draw',0
;szVersion_path_show db 'version_PathShow',0
;---------------------------------------------------------------------
; for EDITBOX
align 4
name_editboxes:
edit1 edit_box 200,10,30,0xffffff,0xbbddff,0,0,0,255,comment_string_1,mouse_dd,ed_focus+ed_always_focus,0
name_editboxes_end:
;---------------------------------------------------------------------
 
IM_END:
mouse_dd rd 1
align 4
dwTestEndTime dd ?
dwMainPID dd ?
;---------------------------------------------------------------------
textarea:
rb 8
;---------------------------------------------------------------------
comment_string_1:
rb 44
;---------------------------------------------------------------------
comment_string_2:
rb 44
;---------------------------------------------------------------------
mgb_data:
rb 100
;---------------------------------------------------------------------
procinfo:
rb 1024
;---------------------------------------------------------------------
cur_dir_path:
rb 4096
;---------------------------------------------------------------------
library_path:
rb 4096
;---------------------------------------------------------------------
temp_dir_pach:
rb 4096
;---------------------------------------------------------------------
fname_buf:
rb 4096
;---------------------------------------------------------------------
filename_area:
rb 256
;---------------------------------------------------------------------
rb 4096
thread_stack2:
;---------------------------------------------------------------------
rb 4096
thread_stack1:
;---------------------------------------------------------------------
rb 4096
stacktop:
I_END: