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