kolibrios-gitea/programs/system/mgb/trunk/mgb.asm

1204 lines
30 KiB
NASM
Raw Normal View History

;=============================================================================
; Kolibri Graphics Benchmark 0.9
;--------------------------------------
; MGB - Menuet Graphics Benchmark 0.3
; Compile with FASM
;
;=============================================================================
; version: 0.9
; last update: 15/04/2019
; written by: Kiril Lipatov aka Leency
; changes: use big fonts, editing two comments, improve UI, show delta %
; Russian translation by Daniel Ovchinnikov
;---------------------------------------------------------------------
; version: 0.82
; last update: 03/11/2014
; written by: Marat Zakiyanov aka Mario79, aka Mario
; changes: fix "benchmark GS selector" for 16bpp (support SVN r.5154)
;---------------------------------------------------------------------
; version: 0.81
; last update: 01/05/2014
; written by: Marat Zakiyanov aka Mario79, aka Mario
; changes: fix "benchmark GS selector" for some display sizes
; (for example, 1366 by horizontal) and code optimization
;---------------------------------------------------------------------
; version: 0.8
; last update: 08/07/2013
; written by: Marat Zakiyanov aka Mario79, aka Mario
; changes: benchmark f4 with memory + f65
;---------------------------------------------------------------------
; version: 0.7
; last update: 05/04/2013
; written by: Marat Zakiyanov aka Mario79, aka Mario
; changes: benchmark GS selector - read screen area
;---------------------------------------------------------------------
; version: 0.6
; last update: 14/03/2013
; written by: Marat Zakiyanov aka Mario79, aka Mario
; changes: benchmark f36 - read screen area
;---------------------------------------------------------------------
; version: 0.5
; last update: 05/03/2013
; written by: Marat Zakiyanov aka Mario79, aka Mario
; changes: benchmark f73-blitter
;---------------------------------------------------------------------
; 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
;
; 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 IM_END
dd I_END ;0x200000
dd stacktop ;0x07FFF0
dd fname_buf
dd cur_dir_path
include '../../../config.inc' ;for nightbuild
include '../../../macros.inc'
include '../../../proc32.inc'
;include '../../../debug.inc'
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
include '../../../develop/libraries/box_lib/load_lib.mac'
include 'lang.inc' ;language support
@use_library
;---------------------------------------------------------------------
start:
mcall 68,11
mcall 68,12,8+9*6*38*4 ; 7352
mov [text_scren_buffer],eax
mcall 68,12,8+9*6*38*4 ; 8216
mov [text_scren_buffer2],eax
load_libraries l_libs_start,end_l_libs
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
mov edi,comment_string_2
mov esi,aComment2
call copy_str_1
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,0x80000027
red:
call draw_window
still:
mcall 10
cmp eax,1
jz red
cmp eax,2
jz key
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
cmp ah,'t'
jz ActionTest
cmp ah,'c'
jz ActionComment
cmp ah,'m'
jz ActionPatternMove
cmp ah,'o'
jz ActionOpen
cmp ah,'s'
jz ActionSave
jmp still
;---------------------------------------------------------------------
button:
mcall 17
cmp ah,1
jnz NotClose
close:
mcall -1
NotClose:
cmp ah,2
jnz locNotTest
ActionTest:
test dword [wFlags],1
jnz still
mcall 51,1,TestWndProc,thread_stack1
jmp still
;---------------------------------------------------------------------
locNotTest:
cmp ah,3
jnz NotComment
ActionComment:
test dword [wFlags],1
jnz still
mcall 51,1,thread_comment,thread_stack2
jmp still
;---------------------------------------------------------------------
NotComment:
cmp ah,6
jnz NotPatternCopy
ActionPatternMove:
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
;---------------------------------------------------------------------
NotPatternCopy:
cmp ah,4
jnz NotOpen
ActionOpen:
test dword [wFlags],1
jnz still
mov [OpenDialog_data.type],0 ; open
call OpenDialog_Start_1
jne still
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,5
jnz still
ActionSave:
test dword [wFlags],1
jnz still
mov [OpenDialog_data.type],1 ; save
call OpenDialog_Start_1
jne still
call locSaveFile
jmp ActionOpen.1
;---------------------------------------------------------------------
TestWndProc:
mcall 68,12,90*123*3
mov [area_for_f36],eax
or dword [wFlags],1
mov esi,results_table+8
align 4
.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 edi
call dword [esi]
pop edi esi
inc edi
mcall 26,9
cmp eax,[dwTestEndTime]
jb @b
mov [esi-8],edi
add esi,TEST_REC_SIZE
cmp dword [esi], testDrawPicture_f73
jnz @f
call prepare_f73
@@:
cmp dword [esi],0
jnz .next_test
xor dword [wFlags],1
mcall 68,13,[area_for_f36]
mcall -1
;---------------------------------------------------------------------
draw_window:
mcall 12,1
mcall 48,4
mov ebx,460*65536+(LINE_DESCRIPTION_CHARS+5)*8+16
mov ecx,80*65536+TESTS_NUM*(LINE_HEIGHT+2)+15+38
add cx,ax
xor eax,eax
xor esi,esi
mcall ,,,34000000h,,aCaption
mov eax,8
mov ebx,20*65536+84
mov ecx,4*65536+24
mov edx,2
mov esi,0x00007F7F
@@:
mcall
add ebx,96*65536
inc edx
cmp edx,7
jb @r
mov ecx,33
mov edx,0x00007F7F
mov esi,(LINE_DESCRIPTION_CHARS*8)/2+20
call drawSeparator
mcall 4,<46,9>,0x90DDEEFF,aButtonsText
call DrawBars
mov ecx,TESTS_NUM*LINE_HEIGHT+15+23
mov edx,0x00007F7F
mov esi,(LINE_DESCRIPTION_CHARS*8)/2+20
call drawSeparator
mcall 12,2
ret
;---------------------------------------------------------------------
drawSeparator:
mov eax,1
mov ebx,3
@@:
mcall
add ebx,2
dec esi
jnz @b
ret
;---------------------------------------------------------------------
align 4
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,[area_for_f36],<90,123>,<15,33>
ret
;---------------------------------------------------------------------
prepare_f73:
mov ecx, 90*123
mov eax, params_f73.data
mov ebx, [area_for_f36]
@@:
mov edx, [ebx]
and edx, 0xFFFFFF
mov [eax], edx
add ebx, 3
add eax, 4
dec ecx
jnz @b
ret
align 4
testDrawPicture_f73:
xor ebx,ebx
mcall 73,,params_f73
ret
;---------------------------------------------------------------------
align 4
testGetScreen_f36:
xor ebx,ebx
mcall 36,[area_for_f36],<90,123>,<15,33>
ret
;---------------------------------------------------------------------
GS_start_x = 15
GS_start_y = 33
GS_size_x = 90
GS_size_y = 123
;-----------------------------------------------------------------------------
align 4
testGetScreen_GS:
push edi
mov edi,[area_for_f36]
mcall 61,2
cmp eax,24
je get_area_with_GS_24
cmp eax,16
je get_area_with_GS_16
;-----------------------------------------------------------------------------
align 4
get_area_with_GS_32:
mcall 61,3
mov ebx,eax
mov esi,GS_start_y
imul esi,eax
mov eax,GS_start_x
shl eax,2
add esi,eax
mov ebp,GS_size_x
mov eax,ebp
shl eax,2
sub ebx,eax
mov edx,GS_size_y
sub esi,ebx
;--------------------------------------
align 4
.start_y:
add esi,ebx
mov ecx,ebp
;--------------------------------------
align 4
.start_x:
mov eax,[gs:esi]
mov [edi],eax
add esi,4
add edi,3
dec ecx
jnz .start_x
dec edx
jnz .start_y
pop edi
ret
;-----------------------------------------------------------------------------
align 4
get_area_with_GS_24:
mcall 61,3
mov ebx,eax
mov esi,GS_start_y
imul esi,eax
mov eax,GS_start_x
lea eax,[eax*3]
add esi,eax
mov ebp,GS_size_x
mov eax,ebp
lea eax,[eax*3]
sub ebx,eax
mov edx,GS_size_y
sub esi,ebx
;--------------------------------------
align 4
.start_y:
add esi,ebx
mov ecx,ebp
;--------------------------------------
align 4
.start_x:
mov eax,[gs:esi]
mov [edi],eax
add esi,3
add edi,3
dec ecx
jnz .start_x
dec edx
jnz .start_y
pop edi
ret
;-----------------------------------------------------------------------------
align 4
get_area_with_GS_16:
mcall 61,3
mov ebx,eax
mov esi,GS_start_y
imul esi,eax
mov eax,GS_start_x
shl eax,1
add esi,eax
mov ebp,GS_size_x
mov eax,ebp
shl eax,1
sub ebx,eax
mov edx,GS_size_y
sub esi,ebx
;--------------------------------------
align 4
.start_y:
add esi,ebx
mov ecx,ebp
;--------------------------------------
align 4
.start_x:
xor eax,eax
mov ax,[gs:esi]
shl eax, 3
ror eax, 8
shl ax, 2
ror eax, 8
shl al, 3
rol eax, 16
mov [edi],eax
add esi,2
add edi,3
dec ecx
jnz .start_x
dec edx
jnz .start_y
pop edi
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,<12,300>,0x0000AA66,aTestText,34
ret
;---------------------------------------------------------------------
align 4
testDrawText1m:
mov eax,[text_scren_buffer]
mov [eax],dword 6*34
mov [eax+4],dword 9
mcall 4,<0,0>,0x0800AA66,aTestText,34,[text_scren_buffer]
xor ebp,ebp
mov ebx,[text_scren_buffer]
add ebx,8
mcall 65,,<6*34,9>,<18,309>,32
ret
;---------------------------------------------------------------------
align 4
testDrawText2:
mcall 4,<27,315>,0x10E7B850,aTestText,34
ret
;---------------------------------------------------------------------
align 4
testDrawText2m:
mov eax,[text_scren_buffer2]
mov [eax],dword 6*38
mov [eax+4],dword 9
mcall 4,<0,0>,0x18E7B850,aTestText,34,[text_scren_buffer2]
xor ebp,ebp
mov ebx,[text_scren_buffer2]
add ebx,8
mcall 65,,<6*38,9>,<33,324>,32
ret
;---------------------------------------------------------------------
align 4
testDrawNumber:
mcall 47,0x80000,12345678,<42,333>,0x0E0B27B
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
je .exit
push ebx
movzx ecx,bx
add ecx,-2
shl ecx,16
mov cx,LINE_HEIGHT
mov ebx,0*65536+LINE_DESCRIPTION_CHARS*8+5
xor edx,edx
mcall 13
pop ebx
and ebx,0x0000FFFF
or ebx,5*65536
mov edx,[edi+TEST_REC_SIZE-4]
mcall 4,,0x9000CCCC
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,(LINE_DESCRIPTION_CHARS*8-8*8*2-20)*65536 ; 196
add ecx,0x10000000 ;big font
mcall 4,,,textarea,8
pop ecx
mov eax,[edi+4]
call int2str
add ebx,(6*8+26)*65536
add ecx,0x10000000 ;big font
mcall 4
;pop ecx
;add ebx,(-15)*65536
;mov edx,esp
;mov esi,1
;add ecx,0x10000000 ;big font
;mcall
; draw difference
pop ecx
add ecx,0x10000000 ;big font
pusha
mov esi,ecx
mov eax,[edi+0]
mov ecx,[edi+4]
cmp ecx,0
je .difference_end ; no div by zero
imul eax,100
xor edx,edx
div ecx
mov ecx, eax
sub ecx,100
mov [sign],'+'
cmp ecx,0
jge @f ; no need to invert positive rumber
neg ecx
mov [sign],'-'
@@:
cmp ecx,1 ; do not show <=1% results
jle .difference_end
cmp ecx,100 ; do not show >=100% results
je .difference_end
push ecx esi
add ebx,(10*8)*65536
mov ecx,esi
mov edx,sign
mov esi,1
mcall 4
pop esi ecx
add ebx,(1*8)*65536
mov edx,ebx
mcall 47, 10000000000001000000000000000000b
.difference_end:
popa
add esp,4
add edi,TEST_REC_SIZE
add bx,LINE_HEIGHT
jmp .next_result
.exit:
mov ebx, 0*65536+LINE_DESCRIPTION_CHARS*8+5
mov ecx, (TESTS_NUM*LINE_HEIGHT+15+27)*65536+LINE_HEIGHT*2
xor edx, edx
mcall 13
mov ebx, 5*65536+(TESTS_NUM*LINE_HEIGHT+15+27)
mcall 4,,0x9000CCCC,aLeft
add ebx, (8*10)*65536
mcall ,,0x90FFFF00,comment_string_1
mov ebx, 5*65536+(TESTS_NUM*LINE_HEIGHT+15+27+LINE_HEIGHT)
mcall ,,0x9000CCCC,aRight
add ebx, (8*10)*65536
mcall ,,0x90FFFF00,comment_string_2
ret
;---------------------------------------------------------------------
int2str:
push eax ecx edx edi
mov edi,textarea+7
mov dword[textarea+0],' '
mov dword[textarea+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
ret
;---------------------------------------------------------------------
thread_comment:
or dword [wFlags],1
mcall 40,0x80000027
mov esi,comment_string_1
cld
@@:
lodsb
test al,al
jne @r
sub esi,comment_string_1
mov eax,esi
dec eax
mov edi, edit1
mov [edi+48], eax ;ed_size
mov [edi+52], eax ;ed_pos
mov esi,comment_string_2
cld
@@:
lodsb
test al,al
jne @r
sub esi,comment_string_2
mov eax,esi
dec eax
mov edi, edit2
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
push dword edit1
call [edit_box_mouse]
push dword edit2
call [edit_box_mouse]
jmp .still
;---------------------------------------------------------------------
.key: ; key
mcall 2
cmp ah,13
je .close ;.close_with_open_file
cmp ah,27
je .close
push dword edit1
call [edit_box_key]
push dword edit2
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 ,<110,300>,<120,120>,0x34C0C0C0,,aCommentT ; 0x34780078
push dword edit1
call [edit_box_draw]
push dword edit2
call [edit_box_draw]
mcall 12,2
ret
;---------------------------------------------------------------------
locLoadFile:
mov [stFileInfoBlock], 0
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
je @f
movsd
add edi,TEST_REC_SIZE-4
jmp @b
@@:
mov edi,comment_string_2
mov ecx,44
rep movsb
ret
;---------------------------------------------------------------------
locSaveFile:
mov [stFileInfoBlock], 2
or dword [wFlags],1
mov esi,results_table ;+4 to save Right Bar
mov edi,mgb_data
cld
@@:
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 ecx,44
rep movsb
mcall 70,stFileInfoBlock
ret
;---------------------------------------------------------------------
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
results_table dd \
?,?,testDrawWindow,aDrawingWindow,\
?,?,testDrawBar,aDrawingBar,\
?,?,testGetScreen_f36,aGetScreenF36,\
?,?,testGetScreen_GS,aGetScreen_GS,\
?,?,testDrawPicture,aDrawingPicture,\
?,?,testDrawPicture_f73,aDrawingPictF73,\
?,?,testDrawVertLine,aDrawingVLine,\
?,?,testDrawHorzLine,aDrawingHLine,\
?,?,testDrawFreeLine,aDrawingFLine,\
?,?,testDrawText1,aDrawingText1,\
?,?,testDrawText1m,aDrawingText1m,\
?,?,testDrawText2,aDrawingText2,\
?,?,testDrawText2m,aDrawingText2m,\
?,?,testDrawNumber,aDrawingNumber,\
?,?,testDrawPixel,aDrawingPixel,\
0,0,0,0
;---------------------------------------------------------------------
LINE_HEIGHT = 17
TEST_REC_SIZE = 16
LINE_DESCRIPTION_CHARS = 58
TESTS_NUM = ($ - results_table) / TEST_REC_SIZE - 1
;---------------------------------------------------------------------
if lang eq it
aDrawingWindow db 'Window Of Type #3, 325x400 px',0
aDrawingBar db 'Filled Rectangle, 100x250 px',0
aDrawingPicture db 'Picture, 90x123, px',0
aDrawingPictF73 db 'Picture for Blitter, 90x123, px',0
aGetScreenF36 db 'Get a piece of screen f.36, 90x123, px',0
aGetScreen_GS db 'Get a piece of screen GS, 90x123, px',0
aDrawingVLine db 'Linea verticale, 350 px',0
aDrawingHLine db 'Linea orizzontale, 270 px',0
aDrawingFLine db 'Free-angled Line, 350 px',0
aDrawingText1 db 'Fixed-width Text, 34 chars',0
aDrawingText1m db 'Fixed-width Text(m), 34 chars',0
aDrawingText2 db 'Proportional Text, 34 chars',0
aDrawingText2m db 'Proportional Text(m), 34 chars',0
aDrawingNumber db 'Decimal Number, 8 digits',0
aDrawingPixel db 'Singolo pixel',0
aTestText db 'This is a 34-charachters test text'
aButtonsText db 'Test Commenti Apri Salva Move >',0
aCaption db 'Kolibri Graphical Benchmark 0.9',0
aLeft db 'Sinistra:',0
aRight db 'Destra :',0
aComment1 db 'Attuale test',0
aComment2 db 'previous test',0
aCommentT db 'Commenti',0
else if lang eq ru
aDrawingWindow db '<27><><EFBFBD><EFBFBD><E2A5AC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><><E1AAA8><EFBFBD>, 325x400 px',0
aDrawingBar db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A5AD><EFBFBD> <20><>אַ㣮<EFACAE><EFBFBD>, 100x250 px',0
aDrawingPicture db '<27><><EFBFBD><EFBFBD><E2A8AD>, 90x123, px',0
aDrawingPictF73 db '<27><><EFBFBD><EFBFBD><E2A8AD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 90x123, px',0
aGetScreenF36 db '<27><EFBFBD><E2A5AD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 90x123, px',0
aGetScreen_GS db '<27><EFBFBD><E2A5AD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 90x123, px',0
aDrawingVLine db '<27><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>, 350 px',0
aDrawingHLine db '<27><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>, 270 px',0
aDrawingFLine db '<27><><EFBFBD><EFBFBD>⥭㧠, 350 px',0
aDrawingText1 db '<27><><EFBFBD><EFBFBD><E2A5AC><EFBFBD><><E2A5AA> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 34 <20><><EFBFBD><EFBFBD><EFBFBD>',0
aDrawingText1m db '<27><><EFBFBD><EFBFBD><E2A5AC><EFBFBD><><E2A5AA> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD>), 34 <20><><EFBFBD><EFBFBD><EFBFBD>',0
aDrawingText2 db '<27><><EFBFBD><EFBFBD><E2A5AC><EFBFBD><><E2A5AA> <20><><EFBFBD><EFBFBD>让, 34 <20><><EFBFBD><EFBFBD><EFBFBD>',0
aDrawingText2m db '<27><><EFBFBD><EFBFBD><E2A5AC><EFBFBD><><E2A5AA> <20><><EFBFBD><EFBFBD>让 (<28><><EFBFBD>), 34 <20><><EFBFBD><EFBFBD><EFBFBD>',0
aDrawingNumber db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>᫮, 8 <20><><EFBFBD><EFBFBD>',0
aDrawingPixel db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>',0
aTestText db 'This is a 34-charachters test text'
aButtonsText db '<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><><E4A0A9> <20><> <20><><EFBFBD> >',0
aCaption db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7ACA0> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> v0.9',0
aLeft db '<27><><EFBFBD><EFBFBD><EFBFBD>:',0
aRight db '<27><><EFBFBD>:',0
aComment1 db '<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>',0
aComment2 db '<27><EFBFBD><E0A5A4><EFBFBD><20><><EFBFBD><EFBFBD>',0
aCommentT db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ਨ',0
else
aDrawingWindow db 'Window Of Type #3, 325x400 px',0
aDrawingBar db 'Filled Rectangle, 100x250 px',0
aDrawingPicture db 'Picture, 90x123, px',0
aDrawingPictF73 db 'Picture for Blitter, 90x123, px',0
aGetScreenF36 db 'Get a piece of screen f.36, 90x123, px',0
aGetScreen_GS db 'Get a piece of screen GS, 90x123, 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
aDrawingText1m db 'Fixed-width Text(mem), 34 chars',0
aDrawingText2 db 'Proportional Text, 34 chars',0
aDrawingText2m db 'Proportional Text(mem), 34 chars',0
aDrawingNumber db 'Decimal Number, 8 digits',0
aDrawingPixel db 'Single Pixel',0
aTestText db 'This is a 34-charachters test text'
aButtonsText db 'Test Comments Open Save Move >',0
aCaption db 'Kolibri Graphical Benchmark 0.9',0
aLeft db 'Left :',0
aRight db 'Right :',0
aComment1 db 'current test',0
aComment2 db 'previous test',0
aCommentT db 'Edit comments',0
end if
;---------------------------------------------------------------------
system_dir_Boxlib db '/sys/lib/box_lib.obj',0
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
;---------------------------------------------------------------------
head_f_i:
if lang eq it
head_f_l db 'Errore Sistema',0
else
head_f_l db 'System error',0
end if
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:
if __nightbuild eq yes
db '/sys/MANAGERS/opendial',0
else
db '/sys/File Managers/opendial',0
end if
communication_area_default_pach:
db '/rd0/1/',0
Filter:
dd Filter.end - Filter
.1:
db 'MGB',0
.end:
db 0
sign db ?,0
start_temp_file_name: db 'results.mgb',0
path4 db '/rd/1/results.mgb',0
;---------------------------------------------------------------------
align 4
params_f73:
; destination
.offset_X_dest dd 0 ; +0
.offset_Y_dest dd 0 ; +4
.width_dest dd 90 ; +8
.height_dest dd 123 ; +12
; source
.offset_X_src dd 0 ; +16
.offset_Y_src dd 0 ; +20
.width_src dd 90 ; +24
.height_src dd 123 ; +28
; other
.pointer dd .data; 90*4 ; +32
.row_size dd 90*4 ; +36
;---------------------------------------------------------------------
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
editboxes:
edit1 edit_box 260,12,15,0xffffff,0xbbddff,0xFF00FF,0x7F7F7F,\
0x90000000,43,comment_string_1,0,ed_focus,0
edit2 edit_box 260,12,50,0xffffff,0xbbddff,0xFF00FF,0x7F7F7F,\
0x90000000,43,comment_string_2,0,0,0
editboxes_end:
;---------------------------------------------------------------------
IM_END:
align 4
area_for_f36 rd 1
dwTestEndTime rd 1
dwMainPID rd 1
;-----------------------------------------------------------------------------
text_scren_buffer rd 1
text_scren_buffer2 rd 1
;---------------------------------------------------------------------
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
;---------------------------------------------------------------------
align 4
rb 4096
thread_stack2:
;---------------------------------------------------------------------
align 4
rb 4096
thread_stack1:
;---------------------------------------------------------------------
align 4
rb 4096
stacktop:
params_f73.data rb 123*90*4
I_END: