/programs/testing/disptest/trunk/build_en.bat |
---|
0,0 → 1,5 |
@echo lang fix en >lang.inc |
@fasm disptest.asm disptest |
@erase lang.inc |
kpack disptest |
@pause |
/programs/testing/disptest/trunk/disptest.ASM |
---|
0,0 → 1,930 |
;------------------------------------------------------------------------------ |
; Display Test for KolibriOS |
;------------------------------------------------------------------------------ |
; version: 0.41 |
; last update: 17/03/2012 |
; written by: Marat Zakiyanov aka Mario79, aka Mario |
; changes: some optimisations and code refactoring |
;------------------------------------------------------------------------------ |
; compiler: FASM 1.50 |
; name: Display Test |
; version: 0.4 |
; original author: barsuk |
; <--- include all MeOS stuff ---> |
include "lang.inc" |
include "../../../macros.inc" |
; <--- start of MenuetOS application ---> |
MEOS_APP_START |
;include "..\..\..\debug.inc" |
; <--- start of code ---> |
CODE |
mcall 37,4,cursor,2 |
or eax, eax |
jz exit |
mov [cursorID], eax |
;------------------------------------------------------------------------------ |
redraw: |
call draw_window ; at first create and draw the window |
;------------------------------------------------------------------------------ |
wait_event: ; main cycle |
xor ebx, ebx |
mcall 10 |
cmp eax, 1 ; if event == 1 |
je redraw ; jump to redraw handler |
cmp eax, 2 ; else if event == 2 |
je key ; jump to key handler |
cmp eax, 3 ; else if event == 3 |
je button ; jump to button handler |
jmp wait_event ; else return to the start of main cycle |
;------------------------------------------------------------------------------ |
key: ; key event handler |
mcall 2 ; get key code |
cmp ah, 27 |
jz exit |
cmp ah, 0x20 |
jz next_test |
cmp ah, 179 ; -> |
jz next_test |
cmp ah, 176 ; <- |
jz prev_test |
cmp ah, 'i' |
jz toggle_info |
cmp ah, 'I' ; ¢¤à㣠ã 祫 )) |
jz toggle_info |
cmp ah, 'c' |
jz toggle_cursor |
cmp ah, 'C' |
jz toggle_cursor |
cmp ah, 'd' |
jz redraw |
cmp ah, 'D' |
jz redraw |
jmp wait_event |
;------------------------------------------------------------------------------ |
next_test: |
cmp dword [test_done], 1 |
jz wait_event |
inc dword [test_num] |
call draw_window |
jmp wait_event |
;------------------------------------------------------------------------------ |
prev_test: |
cmp dword [test_num], ebx |
jz wait_event |
dec dword [test_num] |
mov dword [test_done], ebx |
call draw_window |
jmp wait_event |
;------------------------------------------------------------------------------ |
toggle_info: |
xor dword [show_info], 1 |
call draw_window |
jmp wait_event |
;------------------------------------------------------------------------------ |
toggle_cursor: |
mov eax, cursorVisible |
cmp dword [eax], 0 |
jz .no_cursor |
mov dword [eax], 0 |
mov ecx, [cursorID] |
jmp .set |
;-------------------------------------- |
.no_cursor: |
mov dword [eax], 1 |
xor ecx, ecx |
;-------------------------------------- |
.set: |
mcall 37,5 |
mcall 18,15 ; çâ®¡ë ®¡®¢¨«áï |
jmp wait_event |
;------------------------------------------------------------------------------ |
button: ; button event handler |
mcall 17 ; get button identifier |
cmp ah, 1 |
jne wait_event ; return if button id != 1 |
;-------------------------------------- |
exit: |
or eax, -1 ; exit application |
mcall |
;------------------------------------------------------------------------------ |
draw_window: |
mcall 12,1 |
; ªãàá®à |
;mov eax, 37 |
;mov ebx, 5 |
;mov ecx, cursorID |
;int 0x40 |
mcall 14 ; screen size |
mov ebx, eax |
shr ebx, 16 |
mov ecx, eax |
and ecx, 0xffff |
mov [screenx], ebx |
mov [screeny], ecx |
inc ebx |
inc ecx |
xor eax, eax ; create and draw the window |
mov edx, 0x01000000 |
mov esi, edx |
mcall |
; áâ¥à¥âì £à ¨æë ®ª |
xor edx, edx |
mcall 13 ; £àã¡® â ª |
dec ebx |
dec ecx |
mov eax, [test_num] |
mov eax, [test_proc + eax*4] |
or eax, eax |
jz end_of_test |
call eax |
jmp exit_draw |
;-------------------------------------- |
end_of_test: |
mcall 4,<8,8>,0xffffff,test_finish,test_finish.size |
mov dword [test_done], 1 |
jmp no_info |
;-------------------------------------- |
exit_draw: |
cmp dword [show_info], 1 |
jnz no_info |
; ᮢ à §¬¥àë íªà |
mov ebx, [screenx] |
mov ecx, [screeny] |
; ᣥ¥à¨âì áâà®çªã á à §à¥è¥¨¥¬ íªà . 㦮, ¯®â®¬ã çâ® ¯¯æ |
; ¯àאַ㣮«ì¨ª 200å40 á ¨ä®© |
mov edx, 200 |
sub ebx, edx |
shl ebx, 15 |
mov bx, dx |
mov edx, 40 |
sub ecx, edx |
shl ecx, 15 |
mov cx, dx |
mcall 13,,,0xffffff |
xor edx, edx |
add ebx, 0x0000fffe ; ®ç¥ì 㤮¡® :)))) |
add ecx, 0x0000fffe |
mcall |
; ⥪áâ |
shr ecx, 16 |
mov bx, cx |
add ebx, 0x00010001 |
mov ecx, 0x80ffffff |
mov edx, [test_num] |
mov edx, [test_info + edx*4] |
mcall 4 |
add ebx, 12 |
mcall ,,,press_space |
add ebx, 8 |
mcall ,,,press_i |
add ebx, 8 |
mcall ,,,press_c |
;-------------------------------------- |
no_info: |
mcall 12,2 |
ret |
;------------------------------------------------------------------------------ |
; <---- procedures for various tests of display -----> |
; in: ebx = screen_width, ecx = screen_height |
;------------------------------------------------------------------------------ |
lsz i_image_size,\ |
ru, " §¬¥à ¨§®¡à ¦¥¨ï ¨ à §¬¥é¥¨¥",\ |
en, "Image Size and Placement" |
db 0 |
;------------------------------------------------------------------------------ |
t_image_size: |
mov esi, ebx |
mov edi, ecx |
; 6 ®â१ª®¢ |
xor ecx, ecx |
mcall 38,,,0xffffff |
mov ecx, edi |
shl ecx, 16 |
xor ebx, ebx |
mcall |
mov ebx, esi |
shl ebx, 16 |
add ecx, edi |
mcall |
sub ecx, edi |
add ebx, esi |
mcall |
; à ¬ª £®â®¢ |
mov ebx, esi |
shl ebx, 16 |
mov ecx, edi |
shl ecx, 15 |
mov cx, di |
shr cx, 1 |
mcall |
shr ebx, 1 |
mov bx, si |
shr bx, 1 |
mov ecx, edi |
shl ecx, 16 |
mcall |
ret |
;------------------------------------------------------------------------------ |
lsz i_grid,\ |
ru, "¥âª ",\ |
en, "Grid" |
db 0 |
;------------------------------------------------------------------------------ |
t_grid: |
; á¥âª à §¬¥à®¬ ¢ 64 ¯¨ªá¥« |
mov eax, 38 |
inc ebx |
inc ecx |
mov esi, ebx |
mov edi, ecx |
mov edx, 0xffffff |
mov ebp, 0x00400040 |
; £®à¨§®â «ìë¥ «¨¨¨ |
shl ebx, 16 |
xor ecx, ecx |
;-------------------------------------- |
grid_next_y: |
mcall |
add ecx, ebp |
cmp cx, di |
jnae grid_next_y |
sub ecx, 0x00010001 |
mcall |
; ¢¥à⨪ «ìë¥ «¨¨¨ |
mov ecx, edi |
shl ecx, 16 |
xor ebx, ebx |
;-------------------------------------- |
grid_next_x: |
mcall |
add ebx, ebp |
cmp bx, si |
jnae grid_next_x |
sub ebx, 0x00010001 |
mcall |
ret |
;------------------------------------------------------------------------------ |
lsz i_horstr,\ |
ru, "®à¨§®â «ìë¥ ¯àï¬ë¥ «¨¨¨",\ |
en, "Horizontal Straightness" |
db 0 |
;------------------------------------------------------------------------------ |
t_horstr: |
mov eax, 38 |
mov edi, ecx |
mov edx, 0xffffff |
mov esi, ecx |
inc esi |
shr esi, 3 |
mov ebp, esi |
shl ebp, 16 |
mov bp, si |
; £®à¨§®â «ìë¥ «¨¨¨ |
shl ebx, 16 |
mov ecx, ebp |
shr ecx, 1 |
mov cx, bp |
shr cx, 1 |
;-------------------------------------- |
hor_next_y: |
mcall |
add ecx, ebp |
cmp cx, di |
jnae hor_next_y |
ret |
;------------------------------------------------------------------------------ |
lsz i_vertstr,\ |
ru, "¥à⨪ «ìë¥ ¯àï¬ë¥ «¨¨¨",\ |
en, "Vertical Straightness" |
db 0 |
;------------------------------------------------------------------------------ |
t_vertstr: |
mov eax, 38 |
mov edx, 0xffffff |
mov esi, ebx |
shl ecx, 16 |
mov edi, esi |
shr edi, 3 |
mov ebp, edi |
shl ebp, 16 |
mov bp, di |
mov ebx, ebp |
shr ebx, 1 |
mov bx, bp |
shr bx, 1 |
;-------------------------------------- |
vert_next_x: |
mcall |
add ebx, ebp |
cmp bx, si |
jnae vert_next_x |
ret |
;------------------------------------------------------------------------------ |
lsz i_distort,\ |
ru, "஢¥àª ¨áª ¦¥¨ï",\ |
en, "Distortion", |
db 0 |
;------------------------------------------------------------------------------ |
t_distort: |
mov edx, 0xffffff |
mov esi, ebx |
mov edi, ecx |
mov ebp, 3 |
xor ebx, ebx |
;-------------------------------------- |
dist_next: |
push ebp |
mov ebp, ebx |
shl ebx, 16 |
or ebx, ebp |
mov ecx, edi |
shl ecx, 16 |
or ecx, ebp |
mcall 38 |
mov ebx, esi |
shl ebx, 16 |
mov bx, si |
mcall |
mov bx, bp |
mov ecx, ebp |
shl ecx, 16 |
or ecx, ebp |
mcall |
mov ecx, edi |
shl ecx, 16 |
mov cx, di |
mcall |
mov eax, 30 |
sub esi, eax |
sub edi, eax |
mov ebx, ebp |
add ebx, eax |
pop ebp |
dec ebp |
jnz dist_next |
ret |
;------------------------------------------------------------------------------ |
lsz i_horres,\ |
ru, " §à¥è¥¨¥ ¯® £®à¨§®â «¨",\ |
en, "Horizontal Resolution", |
db 0 |
;------------------------------------------------------------------------------ |
t_horres: |
mov eax, 38 |
mov edx, 0xffffff |
mov edi, ecx |
shl ecx, 16 |
mov esi, ebx |
xor ebx, ebx |
mov edi, 0x003A003A |
mov ebp, 0x00030003 |
;-------------------------------------- |
horres_next: |
add ebx, edi |
mcall |
add ebx, ebp |
mcall |
add ebx, ebp |
mcall |
add ebx, ebp |
mcall |
add ebx, ebp |
mcall |
cmp bx, si |
jna horres_next |
ret |
;------------------------------------------------------------------------------ |
lsz i_vertres,\ |
ru, " §à¥è¥¨¥ ¯® ¢¥à⨪ «¨",\ |
en, "Vertical Resolution", |
db 0 |
;------------------------------------------------------------------------------ |
t_vertres: |
mov eax, 38 |
mov edx, 0xffffff |
; mov esi, ebx |
shl ebx, 16 |
mov edi, ecx |
xor ecx, ecx |
mov ebp, 0x00030003 |
mov esi, 0x002A002A |
;-------------------------------------- |
vertres_next: |
add ecx, esi |
mcall |
add ecx, ebp |
mcall |
add ecx, ebp |
mcall |
add ecx, ebp |
mcall |
add ecx, ebp |
mcall |
add ecx, 0x00540054 |
cmp cx, di |
jna vertres_next |
ret |
;------------------------------------------------------------------------------ |
lsz i_moire,\ |
ru, " ¡«®ë ã à ",\ |
en, "Moire Patterns", |
db 0 |
;------------------------------------------------------------------------------ |
t_moire: |
mov eax, 38 |
mov edx, 0xffffff |
mov edi, ecx |
shl ecx, 16 |
mov esi, ebx |
xor ebx, ebx |
mov ebp, 0x00030003 |
;-------------------------------------- |
moire_next: |
mcall |
add ebx, ebp |
cmp bx, si |
jna moire_next |
ret |
;------------------------------------------------------------------------------ |
lsz i_revsharp,\ |
ru, "¥¢¥àᨢ ï १ª®áâì ¢¨¤¥®",\ |
en, "Reverse Video Sharpness", |
db 0 |
;------------------------------------------------------------------------------ |
t_revsharp: |
mov esi, ebx |
mov edi, ecx |
shr ecx, 1 |
mcall 13,,,0xffffff |
; ⥯¥àì - ¨¢¥àáë¥ «¨¨¨ |
mov eax, 38 |
mov ecx, edi |
mov edx, 0x01000000 |
xor ebx, ebx |
mov ebp, 0x00010001 |
mov edi, 0x003F003F |
;-------------------------------------- |
revsharp_next: |
add ebx, edi |
mcall |
add ebx, ebp |
mcall |
add ebx, ebp |
mcall |
add ebx, edi |
sub ebx, ebp |
mcall |
cmp bx, si |
jna revsharp_next |
ret |
;------------------------------------------------------------------------------ |
lsz i_flicker,\ |
ru, "஢¥ì ¬¥àæ ¨ï",\ |
en, "Flicker Severity", |
db 0 |
;------------------------------------------------------------------------------ |
t_flicker: |
mcall 13,,,0xffffff |
ret |
;------------------------------------------------------------------------------ |
lsz i_glare,\ |
ru, "஢¥ì ¡«¨ª®¢ ¯®¤á¢¥âª¨",\ |
en, "Glare Severity", |
db 0 |
;------------------------------------------------------------------------------ |
t_glare: ; ®¯â¨¬¨§¨à®¢ âì ¥ç¥£® |
ret |
;------------------------------------------------------------------------------ |
lsz i_interlace,\ |
ru, "¡ à㦥¨¥ ¨â¥à«¥©á¨£ ",\ |
en, "Interlacing Detection", |
db 0 |
;------------------------------------------------------------------------------ |
t_interlace: |
mov edi, ecx |
mov eax, 38 |
mov edx, 0xffffff |
xor ecx, ecx |
mov ebp, 0x00020002 |
;-------------------------------------- |
interlace_next: |
add ecx, ebp |
mcall |
cmp cx, di |
jna interlace_next |
ret |
;------------------------------------------------------------------------------ |
lsz i_scrreg,\ |
ru, "¥£ã«¨à®¢ª íªà ",\ |
en, "Screen Regulation", |
db 0 |
;------------------------------------------------------------------------------ |
t_scrreg: |
add ebx, 0x0018FFCD ; +25 ª ç «ã ¨ -50 ®â ¤«¨ë |
shr ecx, 1 |
add ecx, 0x0013FFEC ; +19 ª ç «ã ¨ -19 ®â ¤«¨ë |
mcall 13,,,0xffffff |
ret |
;------------------------------------------------------------------------------ |
lsz i_pricol,\ |
ru, "¨áâ®â ®á®¢ëå 梥⮢",\ |
en, "Primary Color Purity", |
db 0 |
;------------------------------------------------------------------------------ |
t_pricol: |
mov esi, ebx |
mov edi, ecx |
shr ebx, 4 ; /16 |
mov ebp, ebx |
shl ebx, 16 |
mov bx, bp |
shl ebp, 16 |
lea ebp, [ebp + ebp * 4] ; ebp *= 5 |
mov ecx, 0x00280000 |
mov cx, di |
sub cx, 80 |
;shr cx, 1 |
shl bx, 2 |
mcall 13,,,0xff0000 |
add ebx, ebp |
shr edx, 8 |
mcall |
add ebx, ebp |
shr edx, 8 |
mcall |
ret |
;------------------------------------------------------------------------------ |
lsz i_colint,\ |
ru, "à ¤¨¥â ¨â¥á¨¢®á⨠梥â ",\ |
en, "Color Intensity Gradient", |
db 0 |
;------------------------------------------------------------------------------ |
t_colint: |
mov esi, ebx |
mov edi, ecx |
; mov eax, ecx |
; shr ecx, 2 ; end y coord |
; and ecx, 0xffffff80 ; íâ® not 7F |
; shr eax, 7 ; / 128 |
; mov ebp, eax |
; mov edx, eax |
; lea eax, [eax + eax * 2] ; eax *= 5 |
; shl ebp, 4 |
; add eax, ebp |
; shl eax, 16 |
; add ecx, eax |
; mov edx, ebp |
; shl ebp, 16 |
; mov bp, dx ; © ¡®«ì®© |
; ï ¥ ¯®ï«, çâ® â ¬ ¤¥« «®áì, ¨ à¥è¨« ¯¨á âì ᮢ ®_ |
; ¤® §¤¥áì ᣥ¥à¨âì ecx ( ç «ìë© á¤¢¨£) ¨ ebp (è £ ¯® ã) |
mov eax, edi |
lea eax, [eax + 2 * eax] |
shr eax, 5 ; eax = 3/32 ¢ëá®âë |
mov ebp, eax |
shl ebp, 16 |
mov bp, ax ; ebp = ax ¢ ®¡®¨å á«®¢ å |
mov ebx, eax ; á®åà ¨¬ íâ® § 票¥ |
mov eax, edi |
inc eax |
shr eax, 4 ; 3/16 ¢ëá®âë - ç «ì®¥ § 票¥ |
; ¢á¥£® ¯®«®áë § ©¬ãâ 3/4 ¢ëá®âë, ¨â®£® ¯® 3/32 ¢ëá®âë ¯®«®áã (¤«ï ஢®£® áç¥â ) |
lea eax, [eax + eax * 2] |
mov ecx, eax |
shl ecx, 16 |
shr ebx, 2 |
lea ebx, [ebx + ebx * 2] ; ebx = 3/4 ebx, â.¥. 3/4 ¢ëá®âë ¯®«®áë |
add eax, ebx |
mov cx, ax |
xor edx, edx |
mov eax, 0xffff |
div esi |
mov edi, eax ; edi = 64K/width |
mov dword [color_index], 0 |
jmp colint_next |
;------------------------------------------------------------------------------ |
color_table dd 0x00ff0000, 0x0000ff00, 0x00ffff00, \ |
0x000000ff, 0x00ff00ff, 0x0000ffff, 0x00ffffff |
color_index dd 0 |
;------------------------------------------------------------------------------ |
colint_next: |
xor edx, edx |
xor ebx, ebx |
mov eax, 38 |
;-------------------------------------- |
colint_next_line: |
push edx |
push eax |
movzx eax, dh |
shl eax, 16 |
mov dl, dh |
or edx, eax |
mov eax, [color_index] |
mov eax, [color_table + eax * 4] |
and edx, eax |
pop eax |
mcall |
pop edx |
add ebx, 0x00010001 |
add edx, edi |
cmp bx, si |
jna colint_next_line |
add ecx, ebp |
inc dword [color_index] |
cmp dword [color_index], 7 |
jb colint_next |
ret |
;------------------------------------------------------------------------------ |
lsz i_colalign,\ |
ru, "¢¥â®¢®¥ ¢ëà ¢¨¢ ¨¥",\ |
en, "Color Alignment Grid", |
db 0 |
;------------------------------------------------------------------------------ |
t_colalign: |
; ªà á ï á¥âª |
inc ebx ; ⠪ 㦮 |
inc ecx |
mov esi, ebx |
mov edi, ecx |
mov edx, 0xff0000 |
; £®à¨§®â «ìë¥ «¨¨¨ |
shl ebx, 16 |
xor ecx, ecx |
push edi |
shr edi, 3 |
mov ebp, edi |
shl ebp, 16 |
mov bp, di |
pop edi |
mov [yshift], ebp |
mov eax, 38 |
;-------------------------------------- |
cgrid_next_y: |
mcall |
add ecx, ebp |
cmp cx, di |
jnae cgrid_next_y |
; ¯®á«¥¤ïï «¨¨ï: |
sub ecx, 0x00010001 |
mcall |
; ¢¥à⨪ «ìë¥ «¨¨¨ |
mov ecx, edi |
shl ecx, 16 |
xor ebx, ebx |
push esi |
shr esi, 3 |
mov ebp, esi |
shl ebp, 16 |
mov bp, si |
mov [xshift], ebp |
pop esi |
mov eax, 38 |
;-------------------------------------- |
cgrid_next_x: |
mcall |
add ebx, ebp |
cmp bx, si |
jnae cgrid_next_x |
; ¯®á«¥¤ïï «¨¨ï |
sub ebx, 0x00010001 |
mcall |
jmp cgrid_green |
;------------------------------------------------------------------------------ |
xshift dd 0 |
yshift dd 0 |
shift dd 0 |
;------------------------------------------------------------------------------ |
cgrid_green: |
; §¥«¥ë¥ «¨¨¨: £®à¨§®â «ìë¥ |
mov edx, esi |
shr edx, 5 |
lea eax, [edx + edx * 2] |
shl edx, 16 |
or edx, eax |
mov [shift], edx |
mov eax, 38 |
mov edx, 0x00ff00 |
xor ecx, ecx |
mov ebp, [xshift] |
;-------------------------------------- |
ggrid_next_yy: |
mov ebx, [shift] |
;-------------------------------------- |
ggrid_next_yx: |
mcall |
add ebx, ebp |
cmp bx, si |
jnae ggrid_next_yx |
sub ebx, 0x00010001 |
mcall |
add ecx, [yshift] |
cmp cx, di |
jnae ggrid_next_yy |
; last row of lines |
mov ebx, [shift] |
dec ecx |
;-------------------------------------- |
ggrid_last_yx: |
mcall |
add ebx, ebp |
cmp bx, si |
jnae ggrid_last_yx |
; ¨ ¢¥à⨪ «ìë¥ |
mov edx, edi |
shr edx, 5 |
lea eax, [edx + edx * 2] |
shl edx, 16 |
or edx, eax |
mov [shift], edx |
mov eax, 38 |
mov edx, 0x00ff00 |
mov ecx, [shift] |
mov ebp, [xshift] |
;-------------------------------------- |
ggrid_next_xy: |
xor ebx, ebx |
;-------------------------------------- |
ggrid_next_xx: |
mcall |
add ebx, ebp |
cmp bx, si |
jnae ggrid_next_xx |
sub ebx, 0x00010001 |
mcall |
add ecx, [yshift] |
cmp cx, di |
jnae ggrid_next_xy |
xor ebx, ebx |
dec ecx |
;-------------------------------------- |
ggrid_last_xy: |
;int 0x40 |
;add ebx, ebp |
;cmp bx, si |
;jnae ggrid_last_xy |
ret |
;------------------------------------------------------------------------------ |
lsz i_colsyn,\ |
ru, "¨åந§ æ¨ï 梥â ",\ |
en, "Color Synchronization", |
db 0 |
;------------------------------------------------------------------------------ |
t_colsyn: |
inc ebx |
inc ecx |
mov esi, ebx |
mov edi, ecx |
shr ebx, 5 |
mov eax, ebx |
lea ebx, [ebx + ebx * 4] |
shl ebx, 1 ; 10/32 |
mov ebp, ebx |
shl eax, 16 |
or ebx, eax |
shl ebp, 16 |
mov edi, 0x0000ffff |
add ecx, 0x003FFF7F |
mov edx, edi |
mcall 13 |
mov edx, 0x00ff0000 |
add ebx, ebp |
mcall |
mov edx, edi |
add ebx, ebp |
mcall |
ret |
;------------------------------------------------------------------------------ |
; <--- initialised data ---> |
DATA |
screenx dd 0 |
screeny dd 0 |
test_num dd 0 |
test_done dd 0 |
show_info dd 1 |
test_proc dd t_image_size, t_grid, t_horstr, t_vertstr,\ |
t_distort, t_horres, t_vertres, t_moire, t_revsharp, \ |
t_flicker, t_glare, t_interlace, t_scrreg, t_pricol, \ |
t_colint, t_colalign, t_colsyn, 0 |
test_info dd i_image_size, i_grid, i_horstr, i_vertstr, \ |
i_distort, i_horres, i_vertres, i_moire, i_revsharp, \ |
i_flicker, i_glare, i_interlace, i_scrreg, i_pricol, \ |
i_colint, i_colalign, i_colsyn, 0 |
lsz press_space,\ |
ru, " ¦¬¨â¥ ¯à®¡¥« ¤«ï ¯à®¤®«¦¥¨ï,",\ |
en, "Press 'Space' key to continue", |
db 0 |
lsz press_i,\ |
ru, "I ¤«ï ¯¥à¥ª«î票ï ᢥ¤¥¨©,",\ |
en, "I to turn details on and off ", |
db 0 |
lsz press_c,\ |
ru, "¨ C ¤«ï ¯¥à¥ª«îç¥¨ï ªãàá®à ",\ |
en, "and C to show and hide cursor", |
db 0 |
lsz header,\ |
ru, "¥áâ ¬®¨â®à ",\ |
en, "Display test", |
db 0 |
lsz test_finish,\ |
ru, "®¥æ â¥áâ . ¦¬¨â¥ ESC.",\ |
en, "Test has been finished. Press ESC.", |
db 0 |
cursor dd 32*32 dup(0x00000000) ; ¢á¥ à ¢® ᮦ¬¥âáï |
cursorVisible dd 1 |
cursorID dd 0 |
;------------------------------------------------------------------------------ |
; <--- uninitialised data ---> |
UDATA |
;------------------------------------------------------------------------------ |
MEOS_APP_END |
; <--- end of MenuetOS application ---> |
;------------------------------------------------------------------------------ |
/programs/testing/disptest/trunk/Tupfile.lua |
---|
0,0 → 1,3 |
if tup.getconfig("NO_FASM") ~= "" then return end |
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"}) |
tup.rule({"disptest.ASM", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "disptest") |
/programs/testing/disptest/trunk/build_ru.bat |
---|
0,0 → 1,5 |
@echo lang fix ru >lang.inc |
@fasm disptest.asm disptest |
@erase lang.inc |
kpack disptest |
@pause |
/programs/testing/disptest/trunk/readme.txt |
---|
0,0 → 1,13 |
disptest v0.3 |
Ïðîãðàììà äëÿ äèàãíîñòèêè ìîíèòîðà. |
Èñòî÷íèê òåñòîâ: CheckIt 98. |
Óïðàâëåíèå: |
ïðîáåë, âïðàâî - ñëåäóþùèé òåñò |
âëåâî - ïðåäûäóùèé òåñò |
i - ïîêàçàòü/ñêðûòü ïîÿñíåíèÿ |
d - ïåðåðèñîâàòü òåñò |
c - ïîêàçàòü/ñêðûòü êóðñîð |
esc - âûõîä |
barsuk |
/programs/testing/fspeed/udata.inc |
---|
0,0 → 1,43 |
;----------------------------------------------------------------------------- |
align 4 |
cur_dir_path: |
rb 4096 |
;----------------------------------------------------------------------------- |
library_path: |
rb 4096 |
;----------------------------------------------------------------------------- |
temp_dir_pach: |
rb 4096 |
;----------------------------------------------------------------------------- |
process_info: |
rb 1024 |
;----------------------------------------------------------------------------- |
fname: |
rb 4096 |
;----------------------------------------------------------------------------- |
filename_area: |
rb 256 |
;----------------------------------------------------------------------------- |
text_work_area: |
rb 1024 |
;----------------------------------------------------------------------------- |
file_info: |
rb 40 |
;----------------------------------------------------------------------------- |
align 4 |
app_colours: |
w_frame dd ? |
w_grab dd ? |
w_work_dark dd ? |
w_work_light dd ? |
w_grab_text dd ? |
w_work dd ? |
w_work_button dd ? |
w_work_button_text dd ? |
w_work_text dd ? |
w_work_graph dd ? |
;----------------------------------------------------------------------------- |
align 4 |
rb 256 |
STACK_TOP: |
;----------------------------------------------------------------------------- |
/programs/testing/fspeed/Tupfile.lua |
---|
0,0 → 1,3 |
if tup.getconfig("NO_FASM") ~= "" then return end |
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"}) |
tup.rule({"fspeed.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "fspeed") |
/programs/testing/fspeed/fspeed.asm |
---|
0,0 → 1,353 |
;***************************************************************************** |
; File Speed - for Kolibri OS |
; Copyright (c) 2014, Marat Zakiyanov aka Mario79, aka Mario |
; All rights reserved. |
; |
; Redistribution and use in source and binary forms, with or without |
; modification, are permitted provided that the following conditions are met: |
; * Redistributions of source code must retain the above copyright |
; notice, this list of conditions and the following disclaimer. |
; * Redistributions in binary form must reproduce the above copyright |
; notice, this list of conditions and the following disclaimer in the |
; documentation and/or other materials provided with the distribution. |
; * Neither the name of the <organization> nor the |
; names of its contributors may be used to endorse or promote products |
; derived from this software without specific prior written permission. |
; |
; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY |
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY |
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
;***************************************************************************** |
;----------------------------------------------------------------------------- |
use32 |
org 0x0 |
db 'MENUET01' |
dd 0x01 |
dd START |
dd IM_END |
dd I_END |
dd STACK_TOP |
dd 0x0 |
dd cur_dir_path |
;----------------------------------------------------------------------------- |
include 'lang.inc' |
include '../../macros.inc' |
define __DEBUG__ 1 |
define __DEBUG_LEVEL__ 1 |
include '../../debug-fdo.inc' |
include '../../develop/libraries/box_lib/trunk/box_lib.mac' |
include '../../develop/libraries/box_lib/load_lib.mac' |
@use_library |
;----------------------------------------------------------------------------- |
struct RESULT_SLOT |
text dd ? |
read_speed dd ? |
write_speed dd ? |
chunk_size dd ? |
ends |
;----------------------------------------------------------------------------- |
START: |
DEBUGF 1,'FSPEED: start of programm\n' |
;----------------------------------------------------------------------------- |
mcall 68,11 |
test eax,eax |
jz exit |
;----------------------------------------------------------------------------- |
load_libraries l_libs_start,end_l_libs |
;if return code =-1 then exit, else nornary work |
inc eax |
test eax,eax |
jz exit |
;----------------------------------------------------------------------------- |
;OpenDialog initialisation |
push dword OpenDialog_data |
call [OpenDialog_Init] |
push check1 |
call [init_checkbox] |
mcall 40,0x27 |
;----------------------------------------------------------------------------- |
red: |
call draw_window |
;----------------------------------------------------------------------------- |
still: |
mcall 10 |
cmp eax,1 |
je red |
cmp eax,2 |
je key |
cmp eax,3 |
je button |
push dword check1 |
call [check_box_mouse] |
jmp still |
;----------------------------------------------------------------------------- |
key: |
mcall 2 |
jmp still |
;----------------------------------------------------------------------------- |
button: |
mcall 17 |
cmp ah,2 |
je select_file |
cmp ah,3 |
je testing |
cmp ah,1 |
jne still |
;-------------------------------------- |
exit: |
mcall -1 |
;----------------------------------------------------------------------------- |
select_file: |
; invoke OpenDialog |
mov [OpenDialog_data.type],dword 0 |
push dword OpenDialog_data |
call [OpenDialog_Start] |
cmp [OpenDialog_data.status],1 |
jne still |
; prepare for PathShow |
push dword PathShow_data |
call [PathShow_prepare] |
call draw_PathShow |
jmp still |
;----------------------------------------------------------------------------- |
draw_PathShow: |
mcall 13,<5,400-20>,<5,15>,0xffffff |
; draw for PathShow |
push dword PathShow_data |
call [PathShow_draw] |
ret |
;----------------------------------------------------------------------------- |
draw_window: |
mcall 48,3,app_colours,4*10 ; get current colors |
mcall 12,1 |
xor esi,esi |
xor ebp,ebp |
mov edx,[w_work] ; color of work area RRGGBB,8->color |
or edx,0x34000000 |
mcall 0,<100,400>,<100,300>,,,title |
call draw_PathShow |
mov eax,[w_work_text] |
or eax,0x80000000 |
mov [check1.text_color],eax |
push dword check1 |
call [check_box_draw] |
mcall 8,<5,80>,<25,15>,2,[w_work_button] |
mcall ,<400-65,50>,,3 |
mov ecx,[w_work_button_text] |
or ecx,0x80000000 |
mcall 4,<5+10,25+4>,,s_text |
mcall ,<400-65+10,25+4>,,r_text |
mov ecx,[w_work_text] |
or ecx,0x80000000 |
mcall ,<10,47>,,check_box_warning_text |
mcall ,<10,65>,,result_table_text |
mov edx,ecx |
and edx,0xffffff |
mcall 38,<5,400-15>,<59,59> |
; draw result table |
mov ebx,10 shl 16+77 |
mov ebp,result_table |
mov ecx,18 |
;-------------------------------------- |
@@: |
push ecx |
mov ecx,[w_work_text] |
or ecx,0x80000000 |
mcall 4,,,[ebp+RESULT_SLOT.text] |
push ebx |
mov edx,ebx |
add edx,(11*6) shl 16 |
mov ebx,0x800a0000 |
mcall 47,,[ebp+RESULT_SLOT.read_speed],,[w_work_text] |
add edx,(16*6) shl 16 |
mcall ,,[ebp+RESULT_SLOT.write_speed] |
pop ebx |
add ebx,6+5 |
add ebp,sizeof.RESULT_SLOT |
pop ecx |
dec ecx |
jnz @b |
mcall 12,2 |
ret |
;-----------------------------------------------------------------------------;----------------------------------------------------------------------------- |
testing: |
mcall 70,fileinfo |
test eax,eax |
jz @f |
DEBUGF 1,'FSPEED: file not found %s\n',fname |
jmp still |
;-------------------------------------- |
@@: |
DEBUGF 1,'FSPEED: target file %s\n',fname |
mov ebp,result_table |
mov ecx,18 |
;-------------------------------------- |
@@: |
push ecx |
call read_chunk |
pusha |
call draw_window |
popa |
call write_chunk |
pusha |
call draw_window |
popa |
pop ecx |
add ebp,sizeof.RESULT_SLOT |
dec ecx |
jnz @b |
jmp still |
;----------------------------------------------------------------------------- |
read_chunk: |
mov eax,[file_info+32] ; file size |
cmp [ebp+RESULT_SLOT.chunk_size],eax |
jb @f |
xor eax,eax ; small file size for current chunk size |
mov [ebp+RESULT_SLOT.read_speed],eax |
ret |
;-------------------------------------- |
@@: |
mcall 68,12,[ebp+RESULT_SLOT.chunk_size] |
mov [fileread.return],eax |
xor eax,eax |
mov [fileread.offset],eax ; zero current offset |
mcall 26,9 ; get start time |
add eax,1600 ; 16 sec for iterations |
mov esi,eax |
mov ecx,1 |
mov eax,[ebp+RESULT_SLOT.chunk_size] |
mov [fileread.size],eax |
;-------------------------------------- |
.loop: |
mcall 70,fileread |
mcall 26,9 ; check current time |
cmp esi,eax |
jbe .end |
; correct offset |
mov edx,[ebp+RESULT_SLOT.chunk_size] |
add [fileread.offset],edx ; current offset |
; check offset and file size |
mov edx,[file_info+32] ; file size |
sub edx,[ebp+RESULT_SLOT.chunk_size] |
cmp [fileread.offset],edx |
jbe @f |
xor edx,edx |
mov [fileread.offset],edx ; zero current offset |
;-------------------------------------- |
@@: |
inc ecx |
jmp .loop |
;-------------------------------------- |
.end: |
mov eax,[ebp+RESULT_SLOT.chunk_size] |
xor edx,edx |
mul ecx |
shr eax,10+4 ;div 1024 ; div 16 |
shl edx,18 |
add eax,edx |
mov [ebp+RESULT_SLOT.read_speed],eax ; speed KB/s |
DEBUGF 1,'FSPEED: read chunk size: %s iterations: %d speed: %d KB/s\n',\ |
[ebp+RESULT_SLOT.text],ecx,eax |
mcall 68,13,[fileread.return] |
ret |
;----------------------------------------------------------------------------- |
write_chunk: |
test [check1.flags],dword 10b |
jz .exit |
mov eax,[file_info+32] ; file size |
cmp [ebp+RESULT_SLOT.chunk_size],eax |
jb @f |
;-------------------------------------- |
.exit: |
xor eax,eax ; small file size for current chunk size |
mov [ebp+RESULT_SLOT.write_speed],eax |
ret |
;-------------------------------------- |
@@: |
mcall 68,12,[ebp+RESULT_SLOT.chunk_size] |
mov [filewrite.data],eax |
xor eax,eax |
mov [filewrite.offset],eax ; zero current offset |
mcall 26,9 ; get start time |
add eax,1600 ; 16 sec for iterations |
mov esi,eax |
mov ecx,1 |
mov eax,[ebp+RESULT_SLOT.chunk_size] |
mov [filewrite.size],eax |
;-------------------------------------- |
.loop: |
mcall 70,filewrite |
mcall 26,9 ; check current time |
cmp esi,eax |
jbe .end |
; correct offset |
mov edx,[ebp+RESULT_SLOT.chunk_size] |
add [filewrite.offset],edx ; current offset |
; check offset and file size |
mov edx,[file_info+32] ; file size |
sub edx,[ebp+RESULT_SLOT.chunk_size] |
cmp [filewrite.offset],edx |
jbe @f |
xor edx,edx |
mov [filewrite.offset],edx ; zero current offset |
;-------------------------------------- |
@@: |
inc ecx |
jmp .loop |
;-------------------------------------- |
.end: |
mov eax,[ebp+RESULT_SLOT.chunk_size] |
xor edx,edx |
mul ecx |
shr eax,10+4 ;div 1024 ; div 16 |
shl edx,18 |
add eax,edx |
mov [ebp+RESULT_SLOT.write_speed],eax ; speed KB/s |
DEBUGF 1,'FSPEED: write chunk size: %s iterations: %d speed: %d KB/s\n',\ |
[ebp+RESULT_SLOT.text],ecx,eax |
mcall 68,13,[filewrite.data] |
ret |
;----------------------------------------------------------------------------- |
include 'idata.inc' |
;----------------------------------------------------------------------------- |
IM_END: |
;----------------------------------------------------------------------------- |
include 'udata.inc' |
;----------------------------------------------------------------------------- |
I_END: |
;----------------------------------------------------------------------------- |
/programs/testing/fspeed/idata.inc |
---|
0,0 → 1,313 |
;----------------------------------------------------------------------------- |
s_text: |
if lang eq ru |
db 'ë¡®à ä ©« ',0 |
else |
db 'Select file',0 |
end if |
;----------------------------------------------------------------------------- |
r_text: |
if lang eq ru |
db 'ãáª',0 |
else |
db 'Start',0 |
end if |
;----------------------------------------------------------------------------- |
result_table_text: |
if lang eq ru |
db ' §¬¥à ⥨¥ (/á) ¯¨áì (/á)',0 |
else |
db 'Size Read (KB/s) Write (KB/s)',0 |
end if |
;----------------------------------------------------------------------------- |
title db 'File Speed v0.3',0 |
;----------------------------------------------------------------------------- |
include_debug_strings |
;----------------------------------------------------------------------------- |
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: |
;----------------------------------------------------------------------------- |
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 |
ProcLib_import: |
OpenDialog_Init dd aOpenDialog_Init |
OpenDialog_Start dd aOpenDialog_Start |
;OpenDialog_Version dd aOpenDialog_Version |
;ColorDialog_Init dd aColorDialog_Init |
;ColorDialog_Start dd aColorDialog_Start |
;ColorDialog_Version dd aColorDialog_Version |
dd 0 |
dd 0 |
aOpenDialog_Init db 'OpenDialog_init',0 |
aOpenDialog_Start db 'OpenDialog_start',0 |
;aOpenDialog_Version db 'Version_OpenDialog',0 |
;aColorDialog_Init db 'ColorDialog_init',0 |
;aColorDialog_Start db 'ColorDialog_start',0 |
;aColorDialog_Version db 'Version_ColorDialog',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 |
init_checkbox dd aInit_checkbox |
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 |
;Frame_draw dd sz_Frame_draw |
;Version_frame dd szVersion_frame |
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 |
aInit_checkbox db 'init_checkbox2',0 |
aCheck_box_draw db 'check_box_draw2',0 |
aCheck_box_mouse db 'check_box_mouse2',0 |
;aVersion_ch db 'version_ch2',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 |
;sz_Frame_draw db 'frame_draw',0 |
;szVersion_frame db 'version_frame',0 |
;----------------------------------------------------------------------------- |
PathShow_data: |
.type dd 0 ;+0 |
.start_y dw 5+4 ;+4 |
.start_x dw 5+5 ;+6 |
.font_size_x dw 6 ;+8 ; 6 - for font 0, 8 - for font 1 |
.area_size_x dw 400-30 ;+10 |
.font_number dd 0 ;+12 ; 0 - monospace, 1 - variable |
.background_flag dd 0 ;+16 |
.font_color dd 0x0 ;+20 |
.background_color dd 0x0 ;+24 |
.text_pointer dd fname ;+28 |
.work_area_pointer dd text_work_area ;+32 |
.temp_text_length dd 0 ;+36 |
;----------------------------------------------------------------------------- |
check1 check_box2 (100 shl 16)+12,(27 shl 16)+12,6,0xFFFFFF,0,0xffffff,\ |
check_text1,ch_flag_middle |
check_text1: |
if lang eq ru |
db '¥áâ¨à®¢ âì § ¯¨áì',0 |
else |
db 'Use testing of write',0 |
end if |
check_box_warning_text: |
if lang eq ru |
db ' ! ஢¥àª ᪮à®á⨠§ ¯¨á¨ ã¨ç⮦ ¥â ᮤ¥à¦¨¬®¥ ä ©« !',0 |
else |
db 'WARNING! Testing of write speed is destroy contents of file!',0 |
end if |
;----------------------------------------------------------------------------- |
OpenDialog_data: |
.type dd 0 |
.procinfo dd process_info ;+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 ;+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_dialog2',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 '/sys',0 |
Filter: |
dd Filter.end - Filter.1 |
.1: |
;db 'BIN',0 |
;db 'DAT',0 |
.end: |
db 0 |
start_temp_file_name: |
db 'default.dtp',0 |
default_dtp: |
db '/sys/default.dtp',0 |
;----------------------------------------------------------------------------- |
sector equ 512 |
;-------------------------------------- |
result_table: |
dd a512b, 0, 0, sector*1 |
dd a1K, 1, 1, sector*2 |
dd a2K, 2, 2, sector*4 |
dd a4K, 3, 3, sector*8 |
dd a8K, 4, 4, sector*16 |
dd a16K, 5, 5, sector*32 |
dd a32K, 6, 6, sector*64 |
dd a64K, 7, 7, sector*128 |
dd a128K, 8, 8, sector*256 |
dd a256K, 9, 9, sector*512 |
dd a512K, 10, 10, sector*1024 |
dd a1M, 11, 11, sector*2*1024 |
dd a2M, 12, 12, sector*4*1024 |
dd a4M, 13, 13, sector*8*1024 |
dd a8M, 14, 14, sector*16*1024 |
dd a16M, 15, 15, sector*32*1024 |
dd a32M, 16, 16, sector*64*1024 |
dd a64M, 17, 17, sector*128*1024 |
;----------------------------------------------------------------------------- |
a512b db ' 512',0 |
a1K db ' 1K',0 |
a2K db ' 2K',0 |
a4K db ' 4K',0 |
a8K db ' 8K',0 |
a16K db ' 16K',0 |
a32K db ' 32K',0 |
a64K db ' 64K',0 |
a128K db '128K',0 |
a256K db '256K',0 |
a512K db '512K',0 |
a1M db ' 1M',0 |
a2M db ' 2M',0 |
a4M db ' 4M',0 |
a8M db ' 8M',0 |
a16M db ' 16M',0 |
a32M db ' 32M',0 |
a64M db ' 64M',0 |
;----------------------------------------------------------------------------- |
align 4 |
fileinfo: |
.subfunction dd 5 |
.offset dd 0 |
.offset_1 dd 0 |
.size dd 0 |
.return dd file_info |
db 0 |
.name: dd fname |
;----------------------------------------------------------------------------- |
align 4 |
fileread: |
.subfunction dd 0 |
.offset dd 0 |
.offset_1 dd 0 |
.size dd 0 |
.return dd process_info |
db 0 |
.name: dd fname |
;----------------------------------------------------------------------------- |
align 4 |
filewrite: |
.subfunction dd 3 |
.offset dd 0 |
.offset_1 dd 0 |
.size dd 0 |
.data dd process_info |
db 0 |
.name: dd fname |
;----------------------------------------------------------------------------- |
/programs/testing/fspeed/build_en.bat |
---|
0,0 → 1,6 |
@erase lang.inc |
@echo lang fix en >lang.inc |
@fasm fspeed.asm fspeed |
@kpack fspeed |
@erase lang.inc |
@pause |
/programs/testing/fspeed/build_ru.bat |
---|
0,0 → 1,6 |
@erase lang.inc |
@echo lang fix ru >lang.inc |
@fasm fspeed.asm fspeed |
@kpack fspeed |
@erase lang.inc |
@pause |
/programs/testing/fspeed |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |
/programs/testing/kbd/trunk/Tupfile.lua |
---|
0,0 → 1,3 |
if tup.getconfig("NO_FASM") ~= "" then return end |
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"}) |
tup.rule({"kbd.ASM", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "kbd") |
/programs/testing/kbd/trunk/kbd.ASM |
---|
0,0 → 1,594 |
; |
; Kolibri Bus Disconnect |
; Test for bus disconnect |
; |
; Compile with FASM for Menuet |
; |
; |
include '..\..\..\macros.inc' |
include 'lang.inc' |
memsize = 1000h |
org 0 |
PARAMS = memsize - 1024 |
appname equ 'Kolibri Bus Disconnect' |
version equ ' 1.1 ' |
use32 ; ¢ª«îç¨âì 32-¡¨âë© à¥¦¨¬ áᥬ¡«¥à |
db 'MENUET01' ; 8 byte id |
dd 0x01 ; header version |
dd START ; start of code |
dd I_END ; size of image |
dd memsize ; memory for app |
dd memsize - 1024 ; esp |
dd PARAMS , 0x0 ; I_Param , I_Icon |
;--------------------------------------------------------------------- |
;--- ---------------------------------------------- |
;--------------------------------------------------------------------- |
START: |
cmp [PARAMS], byte 0 |
jne check_parameters |
no_params: |
call find_north_bridg |
drawwindow: |
mov eax,48 |
mov ebx,3 |
mov ecx,sc |
mov edx,sizeof.system_colors |
mcall |
mov eax, 12 |
mov ebx, 1 ; start redraw |
mcall |
mov eax, 0 ; window |
mov ebx, 100 shl 16 + 300 |
mov ecx, 100 shl 16 + 90 |
mov edx, [sc.work] |
or edx, 0x13000000 |
mov edi, title |
mcall |
mov eax, 4 |
mov ebx, 17 shl 16 + 30 |
mov ecx, [sc.work_text] |
mov edx, msg_nb |
mov esi, msg_nb.length |
mcall |
mov ebx, 105 shl 16 + 30 |
mov edx, [nb_name] |
movzx esi, byte[edx] |
inc edx |
mcall |
mov ebx, 17 shl 16 + 40 |
mov edx, msg_stat |
mov esi, msg_stat.length |
mcall |
mov ebx, 102 shl 16 + 50 |
mov edx, msg_divs |
mov esi, msg_divs.length |
mcall |
mov ebx, 17 shl 16 + 62 |
mov edx, msg_hdd |
mov esi, msg_hdd.length |
mcall |
mov ebx, 17 shl 16 + 72 |
mov edx, msg_sgd |
mov esi, msg_sgd.length |
mcall |
call get_divs |
mov eax, 47 |
mov ebx, 0x30000 |
mov ecx, [val_hdd] |
mov edx, 8 |
shl edx, cl |
mov ecx, edx |
mov edx, 80 shl 16 + 62 |
mov esi, [sc.work_text] |
mcall |
mov ecx, [val_sgd] |
mov edx, 8 |
shl edx, cl |
mov ecx, edx |
mov edx, 80 shl 16 + 72 |
mcall |
call get_bd_stat |
mov ecx, [sc.work_text] |
mov esi, msg_nf.length |
mov ebx, 105 shl 16 + 40 |
mov edx, msg_nf |
mov al, [bd_stat] |
test al, al |
jz @f |
mov edx, msg_dis |
dec al |
jz @f |
mov edx, msg_en |
mov esi, msg_en.length |
@@: mov eax, 4 |
mcall |
; ®§¤ ñ¬ ª®¯ªã |
mov ecx, 27 shl 16 + 20 |
mov eax, 8 |
mov ebx, 220 shl 16 + 70 |
mov esi, [sc.work_button] |
mov edx, 2 |
mcall |
; ¥éñ 14 ;) |
mov edi, 7 |
mov ecx, 60 shl 16 + 10 |
mov eax, 8 |
mov ebx, 105 shl 16 + 25 |
mov edx, 3 |
@@: mcall |
inc edx |
add ebx, 27 shl 16 |
dec edi |
jnz @b |
add ecx, 12 shl 16 |
mov ebx, 105 shl 16 + 25 |
mov edi, 7 |
@@: mcall |
inc edx |
add ebx, 27 shl 16 |
dec edi |
jnz @b |
end_dr: mov eax, 12 |
mov ebx, 2 ; end redraw |
mcall |
; Wait for event ... |
mov eax, 10 |
mcall |
cmp al, 3 |
jne not_bt |
mov eax, 17 ; get id |
mcall |
cmp ah, 1 |
jne no_exit |
mov eax, -1 ; close this program |
mcall |
no_exit: |
cmp ah, 2 |
jne no_ch_bt |
mov dl, [bd_stat] |
test dl, dl |
jz drawwindow |
xor eax, eax |
dec dl |
jnz @f |
inc eax |
@@: call set_bd_stat |
jmp drawwindow |
no_ch_bt: |
cmp ah, 9 |
jg no_hdd_bt |
sub ah, 3 |
movzx esi, ah |
mov edi, [val_sgd] |
call set_divs |
jmp drawwindow |
no_hdd_bt: |
sub ah, 10 |
movzx edi, ah |
mov esi, [val_hdd] |
call set_divs |
jmp drawwindow |
not_bt: cmp al, 2 |
jne drawwindow |
mov eax, 2 ; ¯®ª ª« ¢ ¥ ¯®¤¤¥à¦¨¢ ¥âáï - ç¨â ¥¬ ¨ § ¡ë¢ ¥¬ |
mcall |
jmp drawwindow |
;-------------------------------------------------------------------------- |
bus_num: db 2 ; ®¬¥à è¨ë |
devfn: db 255 |
bd_id: dd 0 ; ¤¥â¨ä¨ª â®à ãáâனá⢠|
bd_stat: db 0 ; 0 - ¥ ©¤¥, 1 - ¢ëª«îç¥, 2 - ¢ª«îç¥ |
nb_name dd nb_nf |
bd_msk dd msk_i440 |
if lang eq it |
;nb_nf db 9, 'Non trovato' |
nb_nf db 11, 'Non trovato' |
else |
nb_nf db 9, 'Not found' |
end if |
msk_i440 db 0 |
nb_i440 db 4, 'i440' |
msk_nforce db 0x6D, 0x80, 0xE7, 0x06, 0 ; ®¬¥à ॣ¨áâà , ¬ ᪠, ®¬¥à ॣ¨áâà , ¬ ᪠, ... , 0 |
nb_nforce db 6, 'nForce' |
msk_nforce2 db 0x6F, 0x10, 0 |
nb_nforce2 db 8, 'nForce 2' |
msk_sis730 db 0x6B, 0x01, 0 |
nb_sis730 db 7, 'SiS 730' |
nb_sis733 db 7, 'SiS 733' |
msk_sis735 db 0x6A, 0x03, 0 |
nb_sis735 db 7, 'SiS 735' |
nb_sis740 db 7, 'SiS 740' |
nb_sis741 db 7, 'SiS 741' |
nb_sis745 db 7, 'SiS 745' |
msk_sis746 db 0x6C, 0x01, 0 |
nb_sis746 db 7, 'SiS 746' |
nb_sis748 db 7, 'SiS 748' |
msk_amd751 db 0x62, 0x06, 0 |
nb_amd751 db 7, 'AMD 751' |
nb_amd751s db 8, 'AMD 751S' |
nb_amd761 db 7, 'AMD 761' |
msk_amd762 db 0x62, 0x02, 0x6A, 0x02, 0 |
nb_amd762 db 7, 'AMD 762' |
msk_viakt133 db 0x52, 0x80, 0x70, 0x08, 0 |
nb_viakt133 db 30, 'VIA KT133(A)/KM133/KL133/KN133' |
nb_viakx133 db 9, 'VIA KX133' |
nb_viakle133 db 10, 'VIA KLE133' |
msk_viakt266 db 0x92, 0x80, 0x95, 0x02, 0x70, 0x08, 0 |
nb_viakt266 db 18, 'VIA KT266(A)/KT333' |
nb_viakm266 db 21, 'VIA KM266/KL266/KM333' |
nb_viakn266 db 9, 'VIA KN266' |
msk_viakt400 db 0xD2, 0x80, 0xD5, 0x02, 0x70, 0x08, 0 |
nb_viakt400 db 18, 'VIA KT400(A)/KT600' |
nb_viakm400 db 9, 'VIA KM400' |
msk_viakt880 db 0x82, 0x80, 0x85, 0x02, 0 |
nb_viakt880 db 9, 'VIA KT880' |
bd_table: dd 0x70061022 ; AMD 751 ---- |
dd nb_amd751 |
dd msk_amd751 |
dd 0x70041022 ; AMD 751S |
dd nb_amd751s |
dd msk_amd751 |
dd 0x700E1022 ; AMD 761 |
dd nb_amd761 |
dd msk_amd751 |
dd 0x700C1022 ; AMD 762 |
dd nb_amd762 |
dd msk_amd762 |
dd 0x71908086 ; i440 --- |
dd nb_i440 |
dd msk_i440 |
dd 0x01A410DE ; nForce ---- |
dd nb_nforce |
dd msk_nforce |
dd 0x01E010DE ; nForce 2 |
dd nb_nforce2 |
dd msk_nforce2 |
dd 0x07301039 ; SiS 730 ---- |
dd nb_sis730 |
dd msk_sis730 |
dd 0x07331039 ; SiS 733 |
dd nb_sis733 |
dd msk_sis730 |
dd 0x07351039 ; SiS 735 |
dd nb_sis735 |
dd msk_sis735 |
dd 0x07401039 ; SiS 740 |
dd nb_sis740 |
dd msk_sis735 |
dd 0x07411039 ; SiS 741 |
dd nb_sis741 |
dd msk_sis735 |
dd 0x07451039 ; SiS 745 |
dd nb_sis745 |
dd msk_sis735 |
dd 0x07461039 ; SiS 746 |
dd nb_sis746 |
dd msk_sis746 |
dd 0x07481039 ; SiS 748 |
dd nb_sis748 |
dd msk_sis746 |
dd 0x03051106 ; VIA KT133(A)/KM133/KL133/KN133 ---- |
dd nb_viakt133 |
dd msk_viakt133 |
dd 0x03911106 ; VIA KX133 |
dd nb_viakx133 |
dd msk_viakt133 |
dd 0x06911106 ; VIA KLE133 |
dd nb_viakle133 |
dd msk_viakt133 |
dd 0x30991106 ; VIA KT266(A)/KT333 |
dd nb_viakt266 |
dd msk_viakt266 |
dd 0x31161106 ; VIA KM266/KL266/KM333 |
dd nb_viakm266 |
dd msk_viakt266 |
dd 0x31561106 ; VIA KN266 |
dd nb_viakn266 |
dd msk_viakt266 |
dd 0x31891106 ; VIA KT400(A)/KT600 |
dd nb_viakt400 |
dd msk_viakt400 |
dd 0x32051106 ; VIA KM400 |
dd nb_viakm400 |
dd msk_viakt400 |
dd 0x22691106 ; VIA KT880 |
dd nb_viakt880 |
dd msk_viakt880 |
bd_table_end: |
find_north_bridg: |
mov bl, 6 |
xor cl, cl |
nbus: mov bh, [bus_num] |
ndevfn: mov ch, [devfn] |
mov eax, 62 |
mcall |
cmp eax, 0xffffffff |
je bd_next |
;--------- |
mov esi, bd_table_end - bd_table - 12 |
@@: cmp eax, [bd_table + esi] |
je bd_found |
test esi, esi |
jz bd_next |
sub esi, 12 |
jmp @b |
;--------- |
bd_next:dec byte[devfn] |
jns ndevfn |
mov byte[devfn], 0 |
dec byte[bus_num] |
jns nbus |
ret |
bd_found: |
add esi, bd_table + 4 |
mov edi, nb_name |
mov ecx, 2 |
rep movsd |
mov [bd_id], eax |
ret |
;---------------------- |
;bd_stat: db 0 ; 0 - ¥ ©¤¥, 1 - ¢ëª«îç¥, 2 - ¢ª«îç¥ |
get_bd_stat: |
mov byte[bd_stat], 1 |
cld |
mov esi, [bd_msk] |
lodsw |
test al, al |
jnz @f |
mov byte[bd_stat], 0 |
ret |
@@: push eax |
mov bh, [bus_num] |
mov bl, 4 |
mov ch, [devfn] |
mov cl, al |
mov eax, 62 |
mcall |
pop edx |
and al, dh |
jnz @f |
lodsw |
test al, al |
jnz @b |
ret |
@@: mov byte[bd_stat], 2 |
ret |
;---------------------- |
set_bd_stat: |
cmp dword[bd_id], 0x01E010DE ; á¯¥æ¨ «ì® ¤«ï nForce2 400 |
je set_stat_nforce2 |
mov edi, eax |
cld |
mov esi, [bd_msk] |
bd_ss_nxt: |
lodsw |
test al, al |
jz bd_ss_end |
mov dl, ah ; ¬ ᪠|
mov bh, [bus_num] |
mov bl, 4 |
mov ch, [devfn] |
mov cl, al |
mov eax, 62 |
mcall |
mov bl, 8 |
test edi, edi |
jz @f |
or al, dl |
mov dl, al |
mov eax, 62 |
mcall |
jmp bd_ss_nxt |
@@: not dl |
and al, dl |
mov dl, al |
mov eax, 62 |
mcall |
jmp bd_ss_nxt |
bd_ss_end: |
ret |
;------- nForce 2 ----------- |
set_stat_nforce2: |
; IN : eax = 0 - disable, !0 - enable |
push eax |
mov bh, [bus_num] |
mov bl, 4 |
mov ch, [devfn] |
mov cl, 0x6f |
mov eax, 62 |
mcall |
and al, 0x1F |
mov dl, al |
mov bl, 8 |
mov eax, 62 |
mcall |
pop eax |
test eax, eax |
jz @f |
or dl, 0x10 |
mov eax, 62 |
mcall |
ret |
@@: and dl, 0xef |
mov eax, 62 |
mcall |
ret |
;-------------------------------------------------------------------------- |
; x8 x16 x32 x64 x128 x256 x512 |
div_hdd: db 0x23, 0x27, 0x2B, 0x2F, 0x63, 0x67, 0x6B ; Halt Disconnect Divisor |
div_sgd: db 0x12, 0x52, 0x92, 0xD2, 0x12, 0x52, 0x92 ; Stop Grand Divisor |
; low word of 0xC001001B MSR |
; HDD\SGD 8 16 32 64 128 256 512 |
; 8 0x1223 0x5223 0x9223 0xD223 | 0x1223 0x5223 0x9223 |
; 16 0x1227 | |
; 32 0x122B | |
; 64 0x122F | 0x522F |
; 128 0x1263 | |
; 256 0x1267 & bit 18 is clear | & bit 18 is set |
; 512 0x126B | |
; ^^^^ |
; ||||_HDD |
; ||_SGD |
set_divs: |
; IN : ESI - hdd (0 = x8, 1 = x16 ..) |
; EDI - sgd (0 = x8, 1 = x16 ..) |
mov eax, 68 |
mov ebx, 3 |
mov edx, 0xC001001b |
mcall |
mov al, [div_hdd + esi] |
mov ah, [div_sgd + edi] |
and eax, 0xFFFBFFFF |
cmp edi, 3 |
jle @f |
or eax, 0x40000 |
@@: mov edi, eax |
mov esi, ebx |
mov eax, 68 |
mov ebx, 4 |
mcall |
ret |
get_divs: |
; OUT : val_hdd - hdd (0 = x8, 1 = x16 ..) |
; val_sgd - sgd ... |
mov eax, 68 |
mov ebx, 3 |
mov edx, 0xC001001b |
mcall |
mov ecx, 7 |
@@: cmp [div_hdd + ecx - 1], al |
je @f |
loop @b |
@@: dec ecx |
mov [val_hdd], ecx |
mov ecx, 4 |
@@: cmp [div_sgd + ecx - 1], ah |
je @f |
loop @b |
@@: dec ecx |
test eax, 0x40000 |
jz @f |
add ecx, 4 |
@@: mov [val_sgd], ecx |
ret |
;****************************************************************************** |
check_parameters: |
cmp [PARAMS], dword "BOOT" ; received BOOT parameter -> goto handler |
je boot_bd_enable |
jmp no_params |
;****************************************************************************** |
boot_bd_enable: |
call find_north_bridg |
call set_bd_stat |
mcall -1 |
;****************************************************************************** |
;-------------------------------------------------------------------------- |
title db appname,version,0 |
msg_divs db ' x8 x16 x32 x64 x128 x256 x512' |
.length = $ - msg_divs |
msg_hdd db 'Hatl Disc.' |
.length = $ - msg_hdd |
msg_sgd db 'Stop Grand' |
.length = $ - msg_sgd |
msg_nb db 'North bridge :' |
.length = $ - msg_nb |
msg_stat db 'Status :' |
.length = $ - msg_stat |
if lang eq it |
msg_en db 'Abilitato ' |
.length = $ - msg_en |
msg_dis db 'Disabilitato' |
.length = $ - msg_dis |
msg_nf db 'Non trovato ' |
.length = $ - msg_nf |
else |
msg_en db 'Enabled ' |
.length = $ - msg_en |
msg_dis db 'Disabled ' |
.length = $ - msg_dis |
msg_nf db 'Not found' |
.length = $ - msg_nf |
end if |
I_END: |
sc system_colors |
val_hdd dd ? |
val_sgd dd ? |
/programs/testing/kbd/trunk/makefile |
---|
0,0 → 1,18 |
#!gmake |
FASM=/opt/bin/fasm |
KPACK=/opt/bin/kpack |
LANG=lang.inc |
FILE=kbd |
SOURCE=${FILE}.ASM |
OUT=${FILE}.bin |
en: |
echo "lang fix en" > ${LANG} |
${FASM} ${SOURCE} ${OUT} |
it: |
echo "lang fix it" > ${LANG} |
${FASM} ${SOURCE} ${OUT} |
clean: |
rm -f ${LANG} ${OUT} |
/programs/testing/kbd/trunk/build.bat |
---|
0,0 → 1,2 |
@fasm kbd.asm kbd |
@pause |
/programs/testing/kbd/trunk/readme.txt |
---|
0,0 → 1,45 |
Kolibri Bus Disconnect |
Àâòîð : Ìèõàéëîâ Èëüÿ Àíäðååâè÷ aka Ghost |
Âåðñèÿ : îò 24/10/06 |
ÎÑ : Kolibri |
forum : meos.sysbin.com -> Ïðîãðàììû -> GMon |
mailto : ghost.nsk@mail.ru |
Ïîääåðæèâàåìûå ÷èïñåòû: |
AMD 751 |
AMD 751S |
AMD 761 |
AMD 762 |
NVIDIA nForce |
NVIDIA nForce 2 (400) |
SiS 735 |
SiS 740 |
SiS 741 |
SiS 745 |
SiS 730 |
SiS 733 |
SiS 746 |
SiS 748 |
VIA KT133(A)/KM133/KL133/KN133 * |
VIA KX133 |
VIA KLE133 |
VIA KT266(A)/KT333 |
VIA KM266/KL266/KM333 |
VIA KN266 |
VIA KT400(A)/KT600 |
VIA KM400 |
VIA KT880 |
ÏÐÈÌÅ×ÀÍÈÅ: (Heavyiron, 24.10.2006) |
Âëàäåëüöû äàííûõ ÷èïñåòîâ ìîãóò (ïðè æåëàíèè) ïîìåñòèòü |
ýòó ïðîãðàììó â àâòîçàãðóçêó ñ ïàðàìåòðîì boot. Äëÿ ýòîãî â |
autorun.dat íåîáõîäèìî ïîìåñòèòü,íàïðèìåð, òàêóþ ñòðîêó: |
"/RD/1/KBD BOOT 20 # Enable Bus Disconnect for AMD K7 processors", |
íå çàáûâ ïðè ýòîì óâåëè÷èòü êîëè÷åñòâî çàïóñêàåìûõ ïðîãðàìì íà îäíó |
â ñàìîì íà÷àëå ôàéëà autorun.dat. |
/programs/testing/mgb/trunk/mgb.asm |
---|
0,0 → 1,1203 |
;============================================================================= |
; 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 '¨á⥬®¥ ®ª® ᮠ᪨®¬, 325x400 px',0 |
aDrawingBar db ' ªà è¥ë© ¯àאַ㣮«ì¨ª, 100x250 px',0 |
aDrawingPicture db ' à⨪ , 90x123, px',0 |
aDrawingPictF73 db ' à⨪ ¤«ï ¡«¨ââ¥à , 90x123, px',0 |
aGetScreenF36 db '⥨¥ íªà ¨§ ¢¨¤¥®¯ ¬ïâ¨, 90x123, px',0 |
aGetScreen_GS db '⥨¥ íªà ¨§ ¢¨¤¥®ª àâë, 90x123, px',0 |
aDrawingVLine db '®«ì訩 ª â¥â, 350 px',0 |
aDrawingHLine db '¥ì訩 ª â¥â, 270 px',0 |
aDrawingFLine db '¨¯®â¥ã§ , 350 px',0 |
aDrawingText1 db '¨áâ¥¬ë© â¥ªáâ ¬ «¥ìª¨©, 34 § ª ',0 |
aDrawingText1m db '¨áâ¥¬ë© â¥ªáâ ¬ «¥ìª¨© (¡ãä), 34 § ª ',0 |
aDrawingText2 db '¨áâ¥¬ë© â¥ªáâ ¡®«ì让, 34 § ª ',0 |
aDrawingText2m db '¨áâ¥¬ë© â¥ªáâ ¡®«ì让 (¡ãä), 34 § ª ',0 |
aDrawingNumber db '¥áïâ¨ç®¥ ç¨á«®, 8 æ¨äà',0 |
aDrawingPixel db '¤¨®çë© ¯¨ªá¥«ì',0 |
aTestText db 'This is a 34-charachters test text' |
aButtonsText db '¥áâ §¢ ¨ï § ä ©« ä ©« ¯à ¢® >',0 |
aCaption db 'à ä¨ç¥áª¨© ¡¥ç¬ ઠ¤«ï ®«¨¡à¨ v0.9',0 |
aLeft db '«¥¢ :',0 |
aRight db '¯à ¢ :',0 |
aComment1 db 'íâ®â â¥áâ',0 |
aComment2 db '¯à¥¤ë¤ã騩 â¥áâ',0 |
aCommentT db '¥¤ ªâ¨à®¢ âì ª®¬¬¥â ਨ',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: |
/programs/testing/mgb/trunk/Tupfile.lua |
---|
0,0 → 1,3 |
if tup.getconfig("NO_FASM") ~= "" then return end |
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"}) |
tup.rule({"mgb.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "mgb") |
/programs/testing/mgb/trunk/build.bat |
---|
0,0 → 1,6 |
@erase lang.inc |
@echo lang fix en >lang.inc |
@fasm -m 16384 mgb.asm mgb |
@kpack mgb |
@erase lang.inc |
@pause |
/programs/testing/mgb/trunk/makefile |
---|
0,0 → 1,19 |
#!gmake |
# Macro |
FASM=/opt/bin/fasm |
KPACK=/opt/bin/kpack |
LANG=lang.inc |
FILE=mgb |
SOURCE=${FILE}.asm |
OUT=${FILE}.bin |
en: |
echo "lang fix en" > ${LANG} |
${FASM} ${SOURCE} ${OUT} |
it: |
echo "lang fix it" > ${LANG} |
${FASM} ${SOURCE} ${OUT} |
clean: |
rm -f ${LANG} ${OUT} |
/programs/testing/mgb/trunk/build.sh |
---|
0,0 → 1,13 |
#!/bin/bash |
# This script does for linux the same as build.bat for DOS, |
# it compiles the KoOS kernel, hopefully ;-) |
echo "lang fix en" |
echo "lang fix en" > lang.inc |
fasm -m 16384 mgb.asm mgb |
rm -f lang.inc |
exit 0 |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/programs/testing/protection/trunk/test.asm |
---|
0,0 → 1,205 |
;------------------------------------------------------------------------------- |
; |
; PROTECTION TEST |
; |
;------------------------------------------------------------------------------- |
; last update: 07/03/2014 |
; changed by: Marat Zakiyanov aka Mario79, aka Mario |
; changes: Optimisations and code refactoring. |
; Reducing the consumption of RAM, 4 KB instead of 64 KB. |
; Translation into Russian. |
;--------------------------------------------------------------------- |
use32 |
org 0x0 |
db 'MENUET01' ; 8 byte id |
dd 0x01 ; header version |
dd START ; start of code |
dd I_END ; size of image |
dd IM_END ; memory for app |
dd stack_top ; esp |
dd 0x0 ; I_Param |
dd 0x0 ; I_Icon |
;------------------------------------------------------------------------------- |
include '../../../macros.inc' |
include 'lang.inc' |
;------------------------------------------------------------------------------- |
START: ; start of execution |
red: ; redraw |
call draw_window ; at first, draw the window |
;------------------------------------------------------------------------------- |
still: |
mcall 10 ; wait here for event |
cmp eax,1 ; redraw request ? |
jz red |
cmp eax,3 ; button in buffer ? |
jz button |
cmp eax,2 ; key in buffer ? |
jnz still |
;------------------------------------------------------------------------------- |
key: |
mcall 2 ; just read it and ignore |
jmp still |
;------------------------------------------------------------------------------- |
button: |
mcall 17 |
cmp ah,1 ; button id=1 ? |
jnz noclose |
mcall -1 ; close this program |
;------------------------------------------------------------------------------- |
noclose: |
cmp ah,2 |
jnz notest2 |
cli |
;------------------------------------------------------------------------------- |
notest2: |
cmp ah,3 |
jnz notest3 |
sti |
;------------------------------------------------------------------------------- |
notest3: |
cmp ah,4 |
jnz notest4 |
mov [0x10000],byte 1 |
;------------------------------------------------------------------------------- |
notest4: |
cmp ah,5 |
jnz notest5 |
jmp dword 0x10000 |
;------------------------------------------------------------------------------- |
notest5: |
cmp ah,6 |
jnz notest6 |
mov esp,0 |
push eax |
;------------------------------------------------------------------------------- |
notest6: |
cmp ah,7 |
jnz notest7 |
in al,0x60 |
;------------------------------------------------------------------------------- |
notest7: |
cmp ah,8 |
jnz still |
out 0x60,al |
jmp still |
;------------------------------------------------------------------------------- |
; ********************************************* |
; ******* WINDOW DEFINITIONS AND DRAW ******** |
; ********************************************* |
;------------------------------------------------------------------------------- |
draw_window: |
;mcall 48,3,sys_colors,40 |
mcall 12,1 |
mcall 0,<200,370>,<200,295>,0x14FFFFFF,,tlabel |
mcall 8, <36,15>, <88,15>, 2, 0x6888B8 |
.newb: |
mcall |
add ecx,26*65536 |
inc edx |
cmp edx,9 |
jb .newb |
cld |
mov ebx,26*65536+37 ; draw info text with function 4 |
mov ecx,0x10000000 |
mov edx,text |
mov esi,40 |
mov eax,4 |
.newline: |
mcall |
add ebx,13 |
add edx,40 |
cmp [edx],byte 'x' |
jnz .newline |
mcall 12,2 ; function 12:tell os about windowdraw |
ret |
;------------------------------------------------------------------------------- |
; DATA AREA |
;------------------------------------------------------------------------------- |
if lang eq it |
text: |
db 'Il programma usa 0x1000 byte di memoria ' |
db ' ' |
db 'Open debug board for rezult information ' |
db ' ' |
db ' CLI ' |
db ' ' |
db ' STI ' |
db ' ' |
db ' MOV [0x10000],BYTE 1 ' |
db ' ' |
db ' JMP DWORD 0x10000 ' |
db ' ' |
db ' MOV ESP,0 & PUSH EAX ' |
db ' ' |
db ' IN Al,0x60 ' |
db ' ' |
db ' OUT 0x60,AL ' |
db 'x' |
else if lang eq ru |
text: |
db 'ਫ®¦¥¨¥ ¨á¯®«ì§ã¥â 0x1000 ¡ ©â ¯ ¬ïâ¨' |
db ' ' |
db 'âªàëâì BOARD ¤«ï ¯à®á¬®âà १ã«ìâ â ' |
db ' ' |
db ' CLI ' |
db ' ' |
db ' STI ' |
db ' ' |
db ' MOV [0x10000],BYTE 1 ' |
db ' ' |
db ' JMP DWORD 0x10000 ' |
db ' ' |
db ' MOV ESP,0 & PUSH EAX ' |
db ' ' |
db ' IN Al,0x60 ' |
db ' ' |
db ' OUT 0x60,AL ' |
db 'x' |
else |
text: |
db 'Application uses 0x1000 bytes of memory ' |
db ' ' |
db 'Open debug board for result information ' |
db ' ' |
db ' CLI ' |
db ' ' |
db ' STI ' |
db ' ' |
db ' MOV [0x10000],BYTE 1 ' |
db ' ' |
db ' JMP DWORD 0x10000 ' |
db ' ' |
db ' MOV ESP,0 & PUSH EAX ' |
db ' ' |
db ' IN Al,0x60 ' |
db ' ' |
db ' OUT 0x60,AL ' |
db 'x' |
end if |
;------------------------------------------------------------------------------- |
if lang eq it |
tlabel: |
db 'Kolibri prova di protezione',0 |
else if lang eq ru |
tlabel: |
db 'Kolibri ¯à®¢¥àª § é¨âë ï¤à ',0 |
else |
tlabel: |
db 'Kolibri protection test',0 |
end if |
;------------------------------------------------------------------------------- |
I_END: |
;------------------------------------------------------------------------------- |
align 4 |
rb 256 |
stack_top: |
;------------------------------------------------------------------------------- |
IM_END: |
;------------------------------------------------------------------------------- |
/programs/testing/protection/trunk/Tupfile.lua |
---|
0,0 → 1,3 |
if tup.getconfig("NO_FASM") ~= "" then return end |
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"}) |
tup.rule({"test.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "test") |
/programs/testing/protection/trunk/build_en.bat |
---|
0,0 → 1,6 |
@erase lang.inc |
@echo lang fix en >lang.inc |
@fasm -m 16384 test.asm test |
@kpack test |
@erase lang.inc |
@pause |
/programs/testing/protection/trunk/build_ru.bat |
---|
0,0 → 1,6 |
@erase lang.inc |
@echo lang fix ru >lang.inc |
@fasm -m 16384 test.asm test |
@kpack test |
@erase lang.inc |
@pause |
/programs/testing/protection/trunk/makefile |
---|
0,0 → 1,18 |
#!gmake |
# Macro |
FASM=/opt/bin/fasm |
KPACK=/opt/bin/kpack |
LANG=lang.inc |
FILE=test |
SOURCE=${FILE}.asm |
OUT=${FILE}.bin |
en: |
echo "lang fix en" > ${LANG} |
${FASM} ${SOURCE} ${OUT} |
it: |
echo "lang fix it" > ${LANG} |
${FASM} ${SOURCE} ${OUT} |
clean: |
rm -f ${LANG} ${OUT} |
/programs/testing/protection/trunk |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |
/programs/testing/protection |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |