forked from KolibriOS/kolibrios
dfb6c4b5a7
git-svn-id: svn://kolibrios.org@386 a494cfbc-eb01-0410-851d-a64ba20cac60
1156 lines
27 KiB
NASM
1156 lines
27 KiB
NASM
;=============================================================================
|
||
;
|
||
; MGB - Menuet Graphics Benchmark 0.3
|
||
; Compile with FASM
|
||
;
|
||
;=============================================================================
|
||
;
|
||
; Original author and copyrights holder:
|
||
; Mikhail Lisovin a.k.a. Mihasik
|
||
; lisovin@26.ru
|
||
;
|
||
; Disassembled with IDA 5.0.0.879:
|
||
; http://www.datarescue.com/
|
||
; With use of 'ida.int' and 'kloader.ldw':
|
||
; Eugene Grechnikov a.k.a. diamond
|
||
; diamondz@land.ru
|
||
; http://diamondz.land.ru/
|
||
;
|
||
; Modified for version 0.3:
|
||
; Mike Semenako a.k.a mike.dld
|
||
; mike.dld@gmail.com
|
||
; http://www.mikedld.com/
|
||
;
|
||
;=============================================================================
|
||
|
||
org 0x0
|
||
use32
|
||
|
||
db 'MENUET01'
|
||
dd 1
|
||
dd start
|
||
dd APP_MEM_END
|
||
dd 0x200000
|
||
dd 0x07FFF0
|
||
dd 0
|
||
dd 0
|
||
|
||
include 'proc32.inc'
|
||
|
||
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
|
||
proc start ; DATA XREF: seg000:off_Co
|
||
|
||
; 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 ...
|
||
mov eax, 23
|
||
mov ebx, 20
|
||
int 0x40 ; Kolibri - WAIT FOR EVENT WITH TIMEOUT
|
||
; ebx = timeout
|
||
; Return: eax = event
|
||
cmp eax, 1
|
||
jz locRedrawEvent
|
||
|
||
loc_62:
|
||
cmp eax, 2
|
||
jz locKeyEvent
|
||
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
|
||
mov eax, 12h
|
||
mov ebx, 3
|
||
mov ecx, [dwMainWndSlot]
|
||
int 0x40 ; 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
|
||
mov eax, 9
|
||
mov ebx, APP_MEM_END
|
||
int 0x40 ; 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
|
||
mov eax, 5
|
||
mov ebx, 0Ah
|
||
int 0x40 ; Kolibri - DELAY
|
||
; ebx = time (in 1/100th of second)
|
||
retn
|
||
endp
|
||
|
||
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
; START OF FUNCTION CHUNK FOR start
|
||
|
||
locKeyEvent: ; CODE XREF: start+41j
|
||
mov eax, 2
|
||
int 0x40 ; Kolibri - GET KEY CODE
|
||
; Return: ah = keycode
|
||
cmp ah, 't'
|
||
jz locActionTest
|
||
cmp ah, 'c'
|
||
jz locActionComment
|
||
cmp ah, 'p'
|
||
jz locActionPattern
|
||
cmp ah, 'o'
|
||
jz locActionOpen
|
||
cmp ah, 's'
|
||
jz locActionSave
|
||
jmp locWaitForEvent
|
||
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
|
||
locButtonEvent: ; CODE XREF: start:loc_6Aj
|
||
mov eax, 11h
|
||
int 0x40 ; Kolibri - GET PRESSED BUTTON
|
||
; Return: ah = button ID
|
||
cmp ah, 1
|
||
jnz locNotClose
|
||
mov eax, -1
|
||
int 0x40 ; Kolibri - FINISH EXECUTION
|
||
|
||
locNotClose: ; CODE XREF: start+E6j
|
||
cmp ah, 2
|
||
jnz locNotTest
|
||
|
||
locActionTest: ; CODE XREF: start+B5j
|
||
bts [wFlags], 0
|
||
jb locWaitForEvent
|
||
mov eax, 5
|
||
mov ebx, 50
|
||
int 0x40 ; 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
|
||
; ebx = 1 - unique subfunction
|
||
; ecx = starting eip
|
||
; edx = starting esp
|
||
jmp locWaitForEvent
|
||
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
|
||
locNotTest: ; CODE XREF: start+F2j
|
||
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
|
||
cmp ah, 4
|
||
jnz locNotPattern
|
||
|
||
locActionPattern: ; CODE XREF: start+BFj
|
||
call subSavePattern
|
||
call subDrawBars
|
||
jmp locWaitForEvent
|
||
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
|
||
locNotPattern: ; CODE XREF: start+167j
|
||
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
|
||
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 ...
|
||
mov eax, 51
|
||
mov ebx, 1
|
||
mov ecx, subOpenSaveDlgProc
|
||
mov edx, 0x19FFF0
|
||
int 0x40 ; 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
|
||
@@: 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
|
||
mov eax, 0Dh
|
||
mov ebx, 0A0064h
|
||
mov ecx, 1E00FAh
|
||
mov edx, 6A73D0h
|
||
int 0x40 ; 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
|
||
mov eax, 38
|
||
mov ebx, 8C008Ch
|
||
mov ecx, 1E017Ch
|
||
mov edx, 1090207Fh
|
||
int 0x40 ; Kolibri - DRAW LINE
|
||
; 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
|
||
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
|
||
; 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
|
||
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
|
||
; 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
|
||
mov eax, 47
|
||
mov ebx, 80000h
|
||
mov ecx, 12345678
|
||
mov edx, 140172h
|
||
mov esi, 0E0B27Bh
|
||
int 0x40 ; 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
|
||
call subIfTimeElapsed
|
||
jb locDrawNextNumber
|
||
mov [results_table+TEST_REC_SIZE*5], edi
|
||
call subInitTestTimer
|
||
|
||
locDrawNextPixel: ; CODE XREF: seg000:00000340j
|
||
mov eax, 1
|
||
mov ebx, 100
|
||
mov ecx, 100
|
||
mov edx, 0FFFFFFh
|
||
int 0x40 ; Kolibri - PUT PIXEL
|
||
; ebx = x, ecx = y, edx = color
|
||
call subIfTimeElapsed
|
||
jb locDrawNextPixel
|
||
mov [results_table+TEST_REC_SIZE*6], edi
|
||
}
|
||
bts word[wFlags], 1
|
||
btr word[wFlags], 0
|
||
mov eax, -1
|
||
int 0x40 ; Kolibri - FINISH EXECUTION
|
||
|
||
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 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
|
||
int 0x40 ; 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
|
||
int 0x40 ; 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
|
||
int 0x40 ; 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
|
||
int 0x40 ; Kolibri - BEGIN WINDOW REDRAW
|
||
mov eax,48
|
||
mov ebx,4
|
||
int 0x40
|
||
mov ebx, 100*65536+72*5+14;640145h
|
||
mov ecx, 80*65536+TESTS_NUM*LINE_HEIGHT+15+20+35
|
||
add cx, ax
|
||
mov edx, 33000000h
|
||
mov edi, aCaption
|
||
xor eax, eax
|
||
int 0x40
|
||
mov eax, 8
|
||
mov ebx, 050036h+12
|
||
mov ecx, 5*65536+20
|
||
mov edx, 2
|
||
mov esi, 0x00007F7F;702050h
|
||
|
||
locDrawButtonsLoop: ; CODE XREF: subDrawMainWindow+3Bj
|
||
int 0x40 ; 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 locDrawButtonsLoop
|
||
|
||
mov ecx,31
|
||
mov edx,0x00007F7F
|
||
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 "...
|
||
int 0x40 ; 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
|
||
|
||
mov eax, 12
|
||
mov ebx, 2
|
||
int 0x40 ; Kolibri - END WINDOW REDRAW
|
||
retn
|
||
endp
|
||
|
||
proc drawSeparator
|
||
mov eax,1
|
||
mov ebx,3
|
||
@@: int 0x40
|
||
add ebx,2
|
||
dec esi
|
||
jnz @b
|
||
retn
|
||
endp
|
||
|
||
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
|
||
proc testDrawWindow
|
||
xor eax, eax
|
||
mov ebx, 640145h
|
||
mov ecx, 4F0190h
|
||
mov edx, 3000000h
|
||
int 0x40
|
||
retn
|
||
endp
|
||
|
||
proc testDrawBar
|
||
mov eax, 13
|
||
mov ebx, 0A0064h
|
||
mov ecx, 1E00FAh
|
||
mov edx, 6A73D0h
|
||
int 0x40
|
||
retn
|
||
endp
|
||
|
||
proc testDrawPicture
|
||
mov eax, 7
|
||
mov ebx, 0
|
||
mov ecx, 90*65536+123
|
||
mov edx, 15*65536+33
|
||
int 0x40
|
||
retn
|
||
endp
|
||
|
||
proc testDrawVertLine
|
||
mov eax, 38
|
||
mov ebx, 300*65536+300 ;8C008Ch
|
||
mov ecx, 30*65536+380 ;1E017Ch
|
||
mov edx, 1090207Fh
|
||
int 0x40
|
||
retn
|
||
endp
|
||
|
||
proc testDrawHorzLine
|
||
mov eax, 38
|
||
mov ebx, 30*65536+300 ;20008Ch
|
||
mov ecx, 380*65536+380 ;17C017Ch
|
||
mov edx, 1090207Fh
|
||
int 0x40
|
||
retn
|
||
endp
|
||
|
||
proc testDrawFreeLine
|
||
mov eax, 38
|
||
mov ebx, 30*65536+300 ;20008Ch
|
||
mov ecx, 380*65536+30 ;17C001Eh
|
||
mov edx, 1090207Fh
|
||
int 0x40
|
||
retn
|
||
endp
|
||
|
||
proc testDrawText1
|
||
mov eax, 4
|
||
mov ebx, 0C012Ch
|
||
mov ecx, 0AA66h
|
||
mov edx, aTestText
|
||
mov esi, 34
|
||
int 0x40
|
||
retn
|
||
endp
|
||
|
||
proc testDrawText2
|
||
mov eax, 4
|
||
mov ebx, 1B013Bh
|
||
mov ecx, 10E7B850h
|
||
mov edx, aTestText
|
||
mov esi, 34
|
||
int 0x40
|
||
retn
|
||
endp
|
||
|
||
proc testDrawNumber
|
||
mov eax, 47
|
||
mov ebx, 80000h
|
||
mov ecx, 12345678
|
||
mov edx, 2A014Ah
|
||
mov esi, 0E0B27Bh
|
||
int 0x40
|
||
retn
|
||
endp
|
||
|
||
proc testDrawPixel
|
||
mov eax, 1
|
||
mov ebx, 100
|
||
mov ecx, 100
|
||
mov edx, 0FFFFFFh
|
||
int 0x40
|
||
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
|
||
je .exit
|
||
|
||
push ebx
|
||
mov eax,13
|
||
movzx ecx,bx
|
||
add ecx,-2
|
||
shl ecx,16
|
||
mov cx,LINE_HEIGHT
|
||
mov ebx,0*65536+72*5+5
|
||
xor edx,edx
|
||
int 0x40
|
||
pop ebx
|
||
|
||
and ebx,0x0000FFFF
|
||
or ebx,5*65536
|
||
mov edx,[edi+TEST_REC_SIZE-4]
|
||
mov ecx,0x8000CCCC ; 0x00E7E05A
|
||
mov eax,4
|
||
int 0x40
|
||
|
||
push '=' 0x00FFFF00 0x00FFFF7F 0x00FFFF7F
|
||
mov eax,[edi+0]
|
||
cmp eax,[edi+4]
|
||
je @f
|
||
jb .lp1
|
||
mov dword[esp+0],0x007FFF7F
|
||
mov dword[esp+4],0x00FF7F7F
|
||
mov dword[esp+8],0x0000FF00
|
||
mov byte[esp+12],'>'
|
||
.lp1: ja @f
|
||
mov dword[esp+0],0x00FF7F7F
|
||
mov dword[esp+4],0x007FFF7F
|
||
mov dword[esp+8],0x00FF0000
|
||
mov byte[esp+12],'<'
|
||
@@:
|
||
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
|
||
int 0x40
|
||
|
||
pop ecx
|
||
mov eax,[edi+4]
|
||
call int2str
|
||
add ebx,(6*8+6+10)*65536
|
||
mov eax,4
|
||
int 0x40
|
||
|
||
pop ecx
|
||
add ebx,(-6-5)*65536
|
||
mov edx,esp
|
||
mov esi,1
|
||
int 0x40
|
||
add esp,4
|
||
|
||
add edi,TEST_REC_SIZE
|
||
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
|
||
int 0x40
|
||
|
||
mov eax, 4
|
||
mov ebx, 5*65536+(TESTS_NUM*LINE_HEIGHT+15+27)
|
||
mov ecx, 0x8000CCCC
|
||
mov edx, aLeft
|
||
int 0x40 ; Kolibri - DRAW STRING
|
||
|
||
add ebx, (6*10)*65536
|
||
mov ecx, 0x00FFFF00
|
||
mov edx, aComment1
|
||
mov esi, 42
|
||
int 0x40 ; 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
|
||
|
||
add ebx, (6*10)*65536
|
||
mov ecx, 0x00FFFF00
|
||
mov edx, aComment2
|
||
mov esi, 42
|
||
int 0x40 ; Kolibri - DRAW STRING
|
||
|
||
retn
|
||
endp
|
||
|
||
proc 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 ecx,10
|
||
@@: xor edx,edx
|
||
div ecx
|
||
add dl,'0'
|
||
mov [edi],dl
|
||
dec edi
|
||
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
|
||
int 0x40 ; 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
|
||
int 0x40 ; 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
|
||
int 0x40 ; 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
|
||
int 0x40 ; 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 [dwOSDCaretPos], eax
|
||
call subDrawOpenSaveDlgControls
|
||
jmp locOSDWaitForEvent
|
||
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
|
||
locOSDNotLeftKey: ; CODE XREF: seg000:000005D5j
|
||
cmp ah, 0B6h
|
||
jnz locOSDNotDeleteKey
|
||
call subOSDDeleteChar
|
||
call subDrawOpenSaveDlgControls
|
||
jmp locOSDWaitForEvent
|
||
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
|
||
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
|
||
mov [dwDataSize], TESTS_NUM*4+44
|
||
bts word[wFlags], 2
|
||
mov eax,70 ; 58
|
||
mov ebx,stFileInfoBlock
|
||
int 0x40
|
||
mov esi,APP_MEM_END+100
|
||
mov edi,results_table+4
|
||
cld
|
||
@@: cmp dword[edi+TEST_REC_SIZE-8],0
|
||
je @f
|
||
movsd
|
||
add edi,TEST_REC_SIZE-4
|
||
jmp @b
|
||
@@:
|
||
mov edi,aComment2
|
||
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
|
||
mov esi,results_table+4
|
||
mov edi,APP_MEM_END+100
|
||
cld
|
||
@@: cmp dword[esi+TEST_REC_SIZE-8],0
|
||
je @f
|
||
movsd
|
||
add esi,TEST_REC_SIZE-4
|
||
jmp @b
|
||
@@: mov esi,aComment2
|
||
mov ecx,44
|
||
rep movsb
|
||
mov eax,70 ; 58
|
||
mov ebx,stFileInfoBlock
|
||
int 0x40
|
||
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
|
||
int 0x40 ; 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
|
||
int 0x40 ; Kolibri - FINISH EXECUTION
|
||
|
||
locNotCloseOSD: ; CODE XREF: seg000:000006DFj
|
||
cmp ah, 2
|
||
jnz locNotSetCaretOSD
|
||
mov eax, 37
|
||
mov ebx, 1
|
||
int 0x40 ; 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
|
||
int 0x40 ; Kolibri - BEGIN WINDOW REDRAW
|
||
xor eax, eax
|
||
mov ebx, 64012Ch
|
||
mov ecx, 640050h
|
||
mov edx, 3780078h
|
||
int 0x40 ; 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]
|
||
int 0x40 ; 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
|
||
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
|
||
int 0x40 ; 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
|
||
; 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
|
||
int 0x40 ; Kolibri -
|
||
mov eax, 4
|
||
mov ebx, 15002Ch
|
||
xor ecx, ecx
|
||
mov edx, [dwBufferPtr]
|
||
mov esi, 43
|
||
int 0x40 ; 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 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,\
|
||
?,?,testDrawPicture,aDrawingPicture,\
|
||
?,?,testDrawVertLine,aDrawingVLine,\
|
||
?,?,testDrawHorzLine,aDrawingHLine,\
|
||
?,?,testDrawFreeLine,aDrawingFLine,\
|
||
?,?,testDrawText1,aDrawingText1,\
|
||
?,?,testDrawText2,aDrawingText2,\
|
||
?,?,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
|
||
aDrawingVLine db 'Vertical Line, 350 px',0
|
||
aDrawingHLine db 'Horizontal Line, 270 px',0
|
||
aDrawingFLine db 'Free-angled Line, 350 px',0
|
||
aDrawingText1 db 'Fixed-width Text, 34 chars',0
|
||
aDrawingText2 db 'Proportional Text, 34 chars',0
|
||
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
|
||
aButtonsText db 'Test Comment+ Pattern+ Open Save',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 ' ; 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
|