forked from KolibriOS/kolibrios
uploaded display test utility
git-svn-id: svn://kolibrios.org@894 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
5c194bbe10
commit
929c2fa683
5
programs/system/disptest/trunk/build_ru.bat
Normal file
5
programs/system/disptest/trunk/build_ru.bat
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
@echo lang fix ru >lang.inc
|
||||||
|
@fasm disptest.asm disptest
|
||||||
|
@erase lang.inc
|
||||||
|
kpack disptest
|
||||||
|
@pause
|
887
programs/system/disptest/trunk/disptest.ASM
Normal file
887
programs/system/disptest/trunk/disptest.ASM
Normal file
@ -0,0 +1,887 @@
|
|||||||
|
; <--- description --->
|
||||||
|
; compiler: FASM 1.50
|
||||||
|
; name: Display Test
|
||||||
|
; version: 0.4
|
||||||
|
; 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
|
||||||
|
mov eax, 37
|
||||||
|
mov ebx, 4
|
||||||
|
mov edx, 2
|
||||||
|
mov ecx, cursor
|
||||||
|
int 0x40
|
||||||
|
or eax, eax
|
||||||
|
jz exit
|
||||||
|
mov [cursorID], eax
|
||||||
|
|
||||||
|
call draw_window ; at first create and draw the window
|
||||||
|
|
||||||
|
wait_event: ; main cycle
|
||||||
|
xor ebx, ebx
|
||||||
|
mov eax, 10
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
redraw: ; redraw event handler
|
||||||
|
call draw_window
|
||||||
|
jmp wait_event
|
||||||
|
|
||||||
|
|
||||||
|
key: ; key event handler
|
||||||
|
mov eax, 2 ; get key code
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
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' ; ¢¤à㣠ã 祫 Š€<C5A0>‘‹ŽŠ ))
|
||||||
|
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:
|
||||||
|
mov eax, 37
|
||||||
|
mov ebx, 5
|
||||||
|
int 0x40
|
||||||
|
mov eax, 18
|
||||||
|
mov ebx, 15
|
||||||
|
int 0x40 ; çâ®¡ë ®¡®¢¨«áï
|
||||||
|
jmp wait_event
|
||||||
|
|
||||||
|
button: ; button event handler
|
||||||
|
mov eax, 17 ; get button identifier
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
cmp ah, 1
|
||||||
|
jne wait_event ; return if button id != 1
|
||||||
|
|
||||||
|
exit:
|
||||||
|
or eax, -1 ; exit application
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
|
||||||
|
draw_window:
|
||||||
|
mov eax, 12 ; start drawing
|
||||||
|
mov ebx, 1
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
; ªãàá®à
|
||||||
|
;mov eax, 37
|
||||||
|
;mov ebx, 5
|
||||||
|
;mov ecx, cursorID
|
||||||
|
;int 0x40
|
||||||
|
|
||||||
|
mov eax, 14 ; screen size
|
||||||
|
int 0x40
|
||||||
|
mov ebx, eax
|
||||||
|
shr ebx, 16
|
||||||
|
mov ecx, eax
|
||||||
|
and ecx, 0xffff
|
||||||
|
mov [screenx], ebx
|
||||||
|
mov [screeny], ecx
|
||||||
|
|
||||||
|
inc ebx
|
||||||
|
inc ecx
|
||||||
|
mov eax, 0 ; create and draw the window
|
||||||
|
mov edx, 0x01000000
|
||||||
|
mov esi, edx
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
; áâ¥à¥âì £à ¨æë ®ª
|
||||||
|
|
||||||
|
mov eax, 13 ; £àã¡® â ª
|
||||||
|
xor edx, edx
|
||||||
|
int 0x40
|
||||||
|
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:
|
||||||
|
mov eax, 4
|
||||||
|
mov ebx, 8 * 65536 + 8
|
||||||
|
mov ecx, 0xffffff
|
||||||
|
mov edx, test_finish
|
||||||
|
mov esi, test_finish.size
|
||||||
|
int 0x40
|
||||||
|
mov dword [test_done], 1
|
||||||
|
jmp no_info
|
||||||
|
|
||||||
|
exit_draw:
|
||||||
|
|
||||||
|
cmp dword [show_info], 1
|
||||||
|
jnz no_info
|
||||||
|
|
||||||
|
; ᮢ à §¬¥àë íªà
|
||||||
|
mov ebx, [screenx]
|
||||||
|
mov ecx, [screeny]
|
||||||
|
|
||||||
|
; ᣥ¥à¨âì áâà®çªã á à §à¥è¥¨¥¬ íªà . <20>… 㦮, ¯®â®¬ã çâ® ¯¯æ
|
||||||
|
|
||||||
|
; ¯àאַ㣮«ì¨ª 200å40 á ¨ä®©
|
||||||
|
mov edx, 200
|
||||||
|
mov eax, 13
|
||||||
|
sub ebx, edx
|
||||||
|
shl ebx, 15
|
||||||
|
mov bx, dx
|
||||||
|
mov edx, 40
|
||||||
|
sub ecx, edx
|
||||||
|
shl ecx, 15
|
||||||
|
mov cx, dx
|
||||||
|
mov edx, 0xffffff
|
||||||
|
int 0x40
|
||||||
|
xor edx, edx
|
||||||
|
add ebx, 0x0000fffe ; ®ç¥ì 㤮¡® :))))
|
||||||
|
add ecx, 0x0000fffe
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
|
||||||
|
; ⥪áâ
|
||||||
|
mov eax, 4
|
||||||
|
shr ecx, 16
|
||||||
|
mov bx, cx
|
||||||
|
add ebx, 0x00010001
|
||||||
|
mov ecx, 0x80ffffff
|
||||||
|
mov edx, [test_num]
|
||||||
|
mov edx, [test_info + edx*4]
|
||||||
|
int 0x40
|
||||||
|
add ebx, 8
|
||||||
|
mov edx, press_space
|
||||||
|
int 0x40
|
||||||
|
add ebx, 8
|
||||||
|
mov edx, press_i
|
||||||
|
int 0x40
|
||||||
|
add ebx, 8
|
||||||
|
mov edx, press_c
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
no_info:
|
||||||
|
mov eax, 12 ; finish drawing
|
||||||
|
mov ebx, 2
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
; <---- procedures for various tests of display ----->
|
||||||
|
; in: ebx = screen_width, ecx = screen_height
|
||||||
|
|
||||||
|
lsz i_image_size, ru, "Image Size and Placement"
|
||||||
|
db 0
|
||||||
|
t_image_size:
|
||||||
|
mov eax, 38
|
||||||
|
mov esi, ebx
|
||||||
|
mov edi, ecx
|
||||||
|
mov edx, 0xffffff
|
||||||
|
; 6 ®â१ª®¢
|
||||||
|
xor ecx, ecx
|
||||||
|
int 0x40
|
||||||
|
mov ecx, edi
|
||||||
|
shl ecx, 16
|
||||||
|
xor ebx, ebx
|
||||||
|
int 0x40
|
||||||
|
mov ebx, esi
|
||||||
|
shl ebx, 16
|
||||||
|
add ecx, edi
|
||||||
|
int 0x40
|
||||||
|
sub ecx, edi
|
||||||
|
add ebx, esi
|
||||||
|
int 0x40
|
||||||
|
; à ¬ª £®â®¢
|
||||||
|
mov ebx, esi
|
||||||
|
shl ebx, 16
|
||||||
|
mov ecx, edi
|
||||||
|
shl ecx, 15
|
||||||
|
mov cx, di
|
||||||
|
shr cx, 1
|
||||||
|
int 0x40
|
||||||
|
shr ebx, 1
|
||||||
|
mov bx, si
|
||||||
|
shr bx, 1
|
||||||
|
mov ecx, edi
|
||||||
|
shl ecx, 16
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
lsz i_grid, ru, "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:
|
||||||
|
int 0x40
|
||||||
|
add ecx, ebp
|
||||||
|
cmp cx, di
|
||||||
|
jnae grid_next_y
|
||||||
|
sub ecx, 0x00010001
|
||||||
|
int 0x40
|
||||||
|
; ¢¥à⨪ «ìë¥ «¨¨¨
|
||||||
|
mov ecx, edi
|
||||||
|
shl ecx, 16
|
||||||
|
xor ebx, ebx
|
||||||
|
grid_next_x:
|
||||||
|
int 0x40
|
||||||
|
add ebx, ebp
|
||||||
|
cmp bx, si
|
||||||
|
jnae grid_next_x
|
||||||
|
sub ebx, 0x00010001
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
lsz i_horstr, ru, "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:
|
||||||
|
int 0x40
|
||||||
|
add ecx, ebp
|
||||||
|
cmp cx, di
|
||||||
|
jnae hor_next_y
|
||||||
|
ret
|
||||||
|
lsz i_vertstr, ru, "Vertical Straightness",0
|
||||||
|
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:
|
||||||
|
int 0x40
|
||||||
|
add ebx, ebp
|
||||||
|
cmp bx, si
|
||||||
|
jnae vert_next_x
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
lsz i_distort, ru, "Distortion",0
|
||||||
|
db 0
|
||||||
|
t_distort:
|
||||||
|
mov edx, 0xffffff
|
||||||
|
mov esi, ebx
|
||||||
|
mov edi, ecx
|
||||||
|
mov ebp, 3
|
||||||
|
|
||||||
|
xor ebx, ebx
|
||||||
|
dist_next:
|
||||||
|
mov eax, 38
|
||||||
|
push ebp
|
||||||
|
mov ebp, ebx
|
||||||
|
shl ebx, 16
|
||||||
|
or ebx, ebp
|
||||||
|
|
||||||
|
mov ecx, edi
|
||||||
|
shl ecx, 16
|
||||||
|
or ecx, ebp
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov ebx, esi
|
||||||
|
shl ebx, 16
|
||||||
|
mov bx, si
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov bx, bp
|
||||||
|
mov ecx, ebp
|
||||||
|
shl ecx, 16
|
||||||
|
or ecx, ebp
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov ecx, edi
|
||||||
|
shl ecx, 16
|
||||||
|
mov cx, di
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
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, "Horizontal Resolution",0
|
||||||
|
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
|
||||||
|
int 0x40
|
||||||
|
add ebx, ebp
|
||||||
|
int 0x40
|
||||||
|
add ebx, ebp
|
||||||
|
int 0x40
|
||||||
|
add ebx, ebp
|
||||||
|
int 0x40
|
||||||
|
add ebx, ebp
|
||||||
|
int 0x40
|
||||||
|
cmp bx, si
|
||||||
|
jna horres_next
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
lsz i_vertres, ru, "Vertical Resolution",0
|
||||||
|
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
|
||||||
|
int 0x40
|
||||||
|
add ecx, ebp
|
||||||
|
int 0x40
|
||||||
|
add ecx, ebp
|
||||||
|
int 0x40
|
||||||
|
add ecx, ebp
|
||||||
|
int 0x40
|
||||||
|
add ecx, ebp
|
||||||
|
int 0x40
|
||||||
|
add ecx, 0x00540054
|
||||||
|
cmp cx, di
|
||||||
|
jna vertres_next
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
lsz i_moire, ru, "Moire Patterns",0
|
||||||
|
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:
|
||||||
|
int 0x40
|
||||||
|
add ebx, ebp
|
||||||
|
cmp bx, si
|
||||||
|
jna moire_next
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
lsz i_revsharp, ru, "Reverse Video Sharpness",0
|
||||||
|
db 0
|
||||||
|
t_revsharp:
|
||||||
|
mov esi, ebx
|
||||||
|
mov edi, ecx
|
||||||
|
shr ecx, 1
|
||||||
|
mov eax, 13
|
||||||
|
mov edx, 0xffffff
|
||||||
|
int 0x40
|
||||||
|
; ⥯¥àì - ¨¢¥àáë¥ «¨¨¨
|
||||||
|
mov eax, 38
|
||||||
|
mov ecx, edi
|
||||||
|
mov edx, 0x01000000
|
||||||
|
xor ebx, ebx
|
||||||
|
mov ebp, 0x00010001
|
||||||
|
mov edi, 0x003F003F
|
||||||
|
revsharp_next:
|
||||||
|
add ebx, edi
|
||||||
|
int 0x40
|
||||||
|
add ebx, ebp
|
||||||
|
int 0x40
|
||||||
|
add ebx, ebp
|
||||||
|
int 0x40
|
||||||
|
add ebx, edi
|
||||||
|
sub ebx, ebp
|
||||||
|
int 0x40
|
||||||
|
cmp bx, si
|
||||||
|
jna revsharp_next
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
lsz i_flicker, ru, "Flicker Severity",0
|
||||||
|
db 0
|
||||||
|
t_flicker:
|
||||||
|
mov eax, 13
|
||||||
|
mov edx, 0xffffff
|
||||||
|
int 0x40
|
||||||
|
ret
|
||||||
|
|
||||||
|
lsz i_glare, ru, "Glare Severity",0
|
||||||
|
db 0
|
||||||
|
t_glare: ; ®¯â¨¬¨§¨à®¢ âì ¥ç¥£®
|
||||||
|
ret
|
||||||
|
|
||||||
|
lsz i_interlace, ru, "Interlacing Detection",0
|
||||||
|
db 0
|
||||||
|
t_interlace:
|
||||||
|
mov edi, ecx
|
||||||
|
mov eax, 38
|
||||||
|
mov edx, 0xffffff
|
||||||
|
xor ecx, ecx
|
||||||
|
mov ebp, 0x00020002
|
||||||
|
interlace_next:
|
||||||
|
add ecx, ebp
|
||||||
|
int 0x40
|
||||||
|
cmp cx, di
|
||||||
|
jna interlace_next
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
lsz i_scrreg, ru, "Screen Regulation",0
|
||||||
|
db 0
|
||||||
|
t_scrreg:
|
||||||
|
mov eax, 13
|
||||||
|
mov edx, 0xffffff
|
||||||
|
add ebx, 0x0018FFCD ; +25 ª ç «ã ¨ -50 ®â ¤«¨ë
|
||||||
|
shr ecx, 1
|
||||||
|
add ecx, 0x0013FFEC ; +19 ª ç «ã ¨ -19 ®â ¤«¨ë
|
||||||
|
int 0x40
|
||||||
|
ret
|
||||||
|
|
||||||
|
lsz i_pricol, ru, "Primary Color Purity"
|
||||||
|
db 0
|
||||||
|
t_pricol:
|
||||||
|
|
||||||
|
mov esi, ebx
|
||||||
|
mov edi, ecx
|
||||||
|
mov eax, 13
|
||||||
|
|
||||||
|
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
|
||||||
|
mov edx, 0xff0000
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
add ebx, ebp
|
||||||
|
shr edx, 8
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
add ebx, ebp
|
||||||
|
shr edx, 8
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
lsz i_colint, ru, "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
|
||||||
|
int 0x40
|
||||||
|
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, "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:
|
||||||
|
int 0x40
|
||||||
|
add ecx, ebp
|
||||||
|
cmp cx, di
|
||||||
|
jnae cgrid_next_y
|
||||||
|
; ¯®á«¥¤ïï «¨¨ï:
|
||||||
|
sub ecx, 0x00010001
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
; ¢¥à⨪ «ìë¥ «¨¨¨
|
||||||
|
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:
|
||||||
|
int 0x40
|
||||||
|
add ebx, ebp
|
||||||
|
cmp bx, si
|
||||||
|
jnae cgrid_next_x
|
||||||
|
; ¯®á«¥¤ïï «¨¨ï
|
||||||
|
sub ebx, 0x00010001
|
||||||
|
int 0x40
|
||||||
|
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:
|
||||||
|
int 0x40
|
||||||
|
add ebx, ebp
|
||||||
|
cmp bx, si
|
||||||
|
jnae ggrid_next_yx
|
||||||
|
sub ebx, 0x00010001
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
add ecx, [yshift]
|
||||||
|
cmp cx, di
|
||||||
|
jnae ggrid_next_yy
|
||||||
|
; last row of lines
|
||||||
|
mov ebx, [shift]
|
||||||
|
dec ecx
|
||||||
|
ggrid_last_yx:
|
||||||
|
int 0x40
|
||||||
|
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:
|
||||||
|
int 0x40
|
||||||
|
add ebx, ebp
|
||||||
|
cmp bx, si
|
||||||
|
jnae ggrid_next_xx
|
||||||
|
sub ebx, 0x00010001
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
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, "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
|
||||||
|
mov eax, 13
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov edx, 0x00ff0000
|
||||||
|
add ebx, ebp
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
mov edx, edi
|
||||||
|
add ebx, ebp
|
||||||
|
int 0x40
|
||||||
|
|
||||||
|
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, "<22> ¦¬¨â¥ ¯à®¡¥« ¤«ï ¯à®¤®«¦¥¨ï,"
|
||||||
|
db 0
|
||||||
|
lsz press_i, ru, "I ¤«ï ¯¥à¥ª«î票ï ᢥ¤¥¨©,"
|
||||||
|
db 0
|
||||||
|
lsz press_c, ru, "¨ C ¤«ï ¯¥à¥ª«îç¥¨ï ªãàá®à "
|
||||||
|
db 0
|
||||||
|
lsz header, ru, "’¥áâ ¬®¨â®à "
|
||||||
|
lsz test_finish, ru, "Š®¥æ â¥áâ . <20> ¦¬¨â¥ ESC."
|
||||||
|
|
||||||
|
cursor dd 32*32 dup(0x00000000) ; ¢á¥ à ¢® ᮦ¬¥âáï
|
||||||
|
|
||||||
|
cursorVisible dd 1
|
||||||
|
cursorID dd 0
|
||||||
|
|
||||||
|
|
||||||
|
; <--- uninitialised data --->
|
||||||
|
UDATA
|
||||||
|
|
||||||
|
|
||||||
|
MEOS_APP_END
|
||||||
|
; <--- end of MenuetOS application --->
|
13
programs/system/disptest/trunk/readme.txt
Normal file
13
programs/system/disptest/trunk/readme.txt
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
disptest v0.3
|
||||||
|
Программа для диагностики монитора.
|
||||||
|
Источник тестов: CheckIt 98.
|
||||||
|
|
||||||
|
Управление:
|
||||||
|
пробел, вправо - следующий тест
|
||||||
|
влево - предыдущий тест
|
||||||
|
i - показать/скрыть пояснения
|
||||||
|
d - перерисовать тест
|
||||||
|
c - показать/скрыть курсор
|
||||||
|
esc - выход
|
||||||
|
|
||||||
|
barsuk
|
Loading…
Reference in New Issue
Block a user