1,17 → 1,10 |
;============================================================================= |
; 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 |
36,220 → 29,404 |
db 'MENUET01' |
dd 1 |
dd start |
dd IM_END |
dd I_END ;0x200000 |
dd stacktop ;0x07FFF0 |
dd fname_buf |
dd cur_dir_path |
dd APP_MEM_END |
dd 0x200000 |
dd 0x07FFF0 |
dd 0 |
dd 0 |
|
include '..\..\..\macros.inc' |
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 |
;__CPU_type equ p6 ; charge it |
|
load_libraries l_libs_start,end_l_libs |
include 'proc32.inc' |
|
cmp eax,-1 |
jz close |
;--------------------------------------------------------------------- |
mov edi,filename_area |
mov esi,start_temp_file_name |
call copy_str_1 |
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
|
mov edi,comment_string_1 |
mov esi,aComment1 |
call copy_str_1 |
|
mov edi,comment_string_2 |
mov esi,aComment2 |
call copy_str_1 |
proc start ; DATA XREF: seg000:off_Co |
|
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 |
; 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 |
cmp eax,1 |
jz red |
jz locRedrawEvent |
|
loc_62: |
cmp eax,2 |
jz key |
jz locKeyEvent |
cmp eax,3 |
jz button |
jmp still |
;--------------------------------------------------------------------- |
copy_str_1: |
xor eax,eax |
cld |
@@: |
lodsb |
stosb |
test eax,eax |
jnz @b |
ret |
;--------------------------------------------------------------------- |
key: |
mcall 2 |
|
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 |
cmp ah,'t' |
jz ActionTest |
jz locActionTest |
cmp ah,'c' |
jz ActionComment |
jz locActionComment |
cmp ah,'p' |
jz ActionPattern |
jz locActionPattern |
cmp ah,'o' |
jz ActionOpen |
jz locActionOpen |
cmp ah,'s' |
jz ActionSave |
jmp still |
;--------------------------------------------------------------------- |
button: |
mcall 17 |
jz locActionSave |
jmp locWaitForEvent |
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
|
locButtonEvent: ; CODE XREF: start:loc_6Aj |
mcall 0x11 ; Kolibri - GET PRESSED BUTTON |
; Return: ah = button ID |
cmp ah,1 |
jnz NotClose |
close: |
mcall -1 |
NotClose: |
jnz locNotClose |
mcall -1 ; Kolibri - FINISH EXECUTION |
|
locNotClose: ; CODE XREF: start+E6j |
cmp ah,2 |
jnz locNotTest |
ActionTest: |
test dword [wFlags],1 |
jnz still |
mcall 51,1,TestWndProc,thread_stack1 |
jmp still |
;--------------------------------------------------------------------- |
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 |
cmp ah,3 |
jnz NotComment |
ActionComment: |
test dword [wFlags],1 |
jnz still |
mcall 51,1,thread_comment,thread_stack2 |
jmp still |
;--------------------------------------------------------------------- |
NotComment: |
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 |
cmp ah,4 |
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: |
jnz locNotPattern |
|
locActionPattern: ; CODE XREF: start+BFj |
call subSavePattern |
call subDrawBars |
jmp locWaitForEvent |
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
|
locNotPattern: ; CODE XREF: start+167j |
cmp ah,5 |
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: |
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 |
cmp ah,6 |
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 |
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 |
|
mov esi,results_table+8 |
.next_test: call subInitTestTimer |
|
align 4 |
.next_test: |
@@: push esi |
call dword[esi] |
pop esi |
call subIfTimeElapsed |
jb @b |
mov [esi-8],edi |
|
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 |
mcall -1 |
|
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
|
|
proc subInitTestTimer ; CODE XREF: seg000:subTestWndProcp |
; seg000:00000249p ... |
xor edi,edi |
mcall 26,9 |
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 |
align 4 |
@@: |
mcall 26 |
|
locWait10ms: ; CODE XREF: subInitTestTimer+22j |
mov eax, 26 |
mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER |
; Return: eax = time counter |
cmp eax,ecx |
jb @r |
align 4 |
@@: |
push esi |
call dword [esi] |
pop esi |
jb locWait10ms |
retn |
endp |
|
|
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
|
|
proc subIfTimeElapsed ; CODE XREF: seg000:0000023Cp |
; seg000:00000264p ... |
inc edi |
mcall 26,9 |
mov eax, 26 |
mov ebx, 9 |
mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER |
; Return: eax = time counter |
cmp eax,[dwTestEndTime] |
jb @b |
mov [esi-8],edi |
retn |
endp |
|
add esi,TEST_REC_SIZE |
cmp dword [esi],0 |
jnz .next_test |
xor dword [wFlags],1 |
mcall -1 |
;--------------------------------------------------------------------- |
draw_window: |
mcall 12,1 |
mcall 48,4 |
mov ebx,100*65536+72*5+14 |
|
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 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 |
mov ecx,80*65536+TESTS_NUM*LINE_HEIGHT+15+20+35 |
add cx,ax |
mov edx, 34000000h |
mov edi, aCaption |
xor eax,eax |
xor esi,esi |
mcall ,,,34000000h,,aCaption |
|
mcall |
mov eax,8 |
mov ebx,050036h+12 |
mov ecx,5*65536+20 |
mov edx,2 |
mov esi,0x00007F7F |
@@: |
mcall |
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 |
add ebx,72*65536 |
inc edx |
cmp edx,7 |
jb @r |
jb locDrawButtonsLoop |
|
mov ecx,31 |
mov edx,0x00007F7F |
256,86 → 433,144 |
mov esi,(72*5)/2 |
call drawSeparator |
|
mcall 4,<27,12>,0x80DDEEFF,aButtonsText |
call DrawBars |
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 |
|
mov ecx,TESTS_NUM*LINE_HEIGHT+15+21 |
mov edx,0x00007F7F |
mov esi,(72*5)/2 |
call drawSeparator |
mcall 12,2 |
ret |
;--------------------------------------------------------------------- |
drawSeparator: |
|
mov eax, 12 |
mov ebx, 2 |
mcall ; Kolibri - END WINDOW REDRAW |
retn |
endp |
|
proc drawSeparator |
mov eax,1 |
mov ebx,3 |
@@: |
mcall |
@@: mcall |
add ebx,2 |
dec esi |
jnz @b |
ret |
;--------------------------------------------------------------------- |
align 4 |
testDrawWindow: |
retn |
endp |
|
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
|
|
proc testDrawWindow |
xor eax,eax |
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 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 ... |
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 |
342,13 → 577,15 |
mov cx,LINE_HEIGHT |
mov ebx,0*65536+72*5+5 |
xor edx,edx |
mcall 13 |
mcall |
pop ebx |
|
and ebx,0x0000FFFF |
or ebx,5*65536 |
mov edx,[edi+TEST_REC_SIZE-4] |
mcall 4,,0x8000CCCC |
mov ecx,0x8000CCCC ; 0x00E7E05A |
mov eax,4 |
mcall |
|
push '=' 0x00FFFF00 0x00FFFF7F 0x00FFFF7F |
mov eax,[edi+0] |
359,8 → 596,7 |
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 |
369,13 → 605,17 |
pop ecx |
call int2str |
add ebx,(72*5-6*8*2-6-10-5)*65536 ; 196 |
mcall 4,,,textarea,8 |
mov edx,APP_MEM_END |
mov esi,8 |
mov eax,4 |
mcall |
|
pop ecx |
mov eax,[edi+4] |
call int2str |
add ebx,(6*8+6+10)*65536 |
mcall 4 |
mov eax,4 |
mcall |
|
pop ecx |
add ebx,(-6-5)*65536 |
388,32 → 628,47 |
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 13 |
mcall |
|
mov eax, 4 |
mov ebx, 5*65536+(TESTS_NUM*LINE_HEIGHT+15+27) |
mcall 4,,0x8000CCCC,aLeft |
mov ecx, 0x8000CCCC |
mov edx, aLeft |
mcall ; Kolibri - DRAW STRING |
|
add ebx, (6*10)*65536 |
mcall ,,0x80FFFF00,comment_string_1 |
mov ecx, 0x00FFFF00 |
mov edx, aComment1 |
mov esi, 42 |
mcall ; Kolibri - DRAW STRING |
|
mov eax, 4 |
mov ebx, 5*65536+(TESTS_NUM*LINE_HEIGHT+15+27+12) |
mcall ,,0x8000CCCC,aRight |
mov ecx, 0x8000CCCC |
mov edx, aRight |
mcall ; Kolibri - DRAW STRING |
|
add ebx, (6*10)*65536 |
mcall ,,0x80FFFF00,comment_string_2 |
ret |
;--------------------------------------------------------------------- |
int2str: |
mov ecx, 0x00FFFF00 |
mov edx, aComment2 |
mov esi, 42 |
mcall ; Kolibri - DRAW STRING |
|
retn |
endp |
|
proc int2str |
push eax ecx edx edi |
mov edi,textarea+7 |
mov dword[textarea+0],' ' |
mov dword[textarea+4],' ' |
mov edi,APP_MEM_END+7 |
mov dword[APP_MEM_END+0],' ' |
mov dword[APP_MEM_END+4],' ' |
mov ecx,10 |
@@: |
xor edx,edx |
@@: xor edx,edx |
div ecx |
add dl,'0' |
mov [edi],dl |
421,116 → 676,386 |
or eax,eax |
jnz @b |
pop edi edx ecx eax |
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 |
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 |
dec eax |
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 |
mov [dwOSDCaretPos], eax |
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 |
locOSDNotLeftKey: ; CODE XREF: seg000:000005D5j |
cmp ah, 0B6h |
jnz locOSDNotDeleteKey |
call subOSDDeleteChar |
call subDrawOpenSaveDlgControls |
jmp locOSDWaitForEvent |
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
|
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: |
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 |
mov [stFileInfoBlock], 0 |
or dword [wFlags],1 |
mcall 70,stFileInfoBlock |
mov esi,mgb_data |
mov [dwDataSize], TESTS_NUM*4+44 |
bts word[wFlags], 2 |
mov eax,70 ; 58 |
mov ebx,stFileInfoBlock |
mcall |
mov esi,APP_MEM_END+100 |
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,comment_string_2 |
mov edi,aComment2 |
mov ecx,44 |
rep movsb |
ret |
;--------------------------------------------------------------------- |
locSaveFile: |
mov [stFileInfoBlock], 2 |
or dword [wFlags],1 |
jmp locCloseOSD |
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
|
locSaveFile: ; CODE XREF: seg000:00000654j |
mov [stFileInfoBlock], 2 ; 1 |
mov [dwDataSize], TESTS_NUM*4+44 |
bts word[wFlags], 2 |
mov esi,results_table+4 |
mov edi,mgb_data |
mov edi,APP_MEM_END+100 |
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,comment_string_2 |
@@: mov esi,aComment2 |
mov ecx,44 |
rep movsb |
mcall 70,stFileInfoBlock |
ret |
;--------------------------------------------------------------------- |
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 |
} |
align 4 |
stFileInfoBlock dd 0,0,0 |
dwDataSize dd TESTS_NUM*4+44 ;1 |
dd mgb_data |
db 0 |
dd fname_buf |
;--------------------------------------------------------------------- |
wFlags dd 0 |
;--------------------------------------------------------------------- |
align 4 |
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 |
results_table dd \ |
?,?,testDrawWindow,aDrawingWindow,\ |
?,?,testDrawBar,aDrawingBar,\ |
543,11 → 1068,17 |
?,?,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 |
559,224 → 1090,28 |
aDrawingNumber db 'Decimal Number, 8 digits',0 |
aDrawingPixel db 'Single Pixel',0 |
|
aTestText db 'This is a 34-charachters test text' |
aTestText db 'This is a 34-charachters test text' ; DATA XREF: seg000:000002ADo |
; seg000:000002DAo |
aButtonsText db 'Test Comment+ Pattern+ Open Save',0 |
aCaption db 'Kolibri Graphical Benchmark 0.4',0 |
; DATA XREF: subDrawMainWindow+5Do |
aCaption db 'Menuet Graphical Benchmark 0.3',0 ; DATA XREF: subDrawMainWindow+4Co |
|
aLeft db 'Left :',0 |
aRight db 'Right :',0 |
|
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: |
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 |