0,0 → 1,1187 |
; |
; Vertical Refresh Rate programm |
; |
; Author: Trans <<< 13 >>> |
; Date: February-May 2003 (09.05.2003) |
; Version: 2.0 |
; Last Modification: 30.07.2003 |
; Compile with FASM for Menuet |
; |
use32 |
|
org 0x0 |
|
db 'MENUET01' ; 8 byte id |
dd 0x01 ; header version |
dd START ; start of code |
dd I_END ; size of image |
dd 0x5000 ; memory for app |
dd 0x4ff0 ; esp |
dd 0x0 , 0x0 ; I_Param , I_Icon |
|
include 'lang.inc' |
START: ; start of execution |
|
mov eax,14 |
int 40h |
mov ebx,eax |
shr ebx,16 |
mov [oldX],ebx |
shl eax,16 |
shr eax,16 |
mov [oldY],eax |
|
; Test on installed video driver |
mov eax,21 |
mov ebx,13 |
mov ecx,1 |
mov edx,drvinfo |
int 40h |
cmp eax,0FFFFFFFFh ; = -1 - error or not installed |
jne vrr_00 |
call warning_info |
retn |
; |
|
vrr_00: |
call get_vert_rate |
mov eax,[currvm] |
mov [oldvm],eax |
call get_pid |
call draw_window ; at first, draw the window |
|
still: |
|
mov eax,10 ; check here for event |
int 0x40 |
|
cmp eax,1 ; redraw request ? |
je red |
cmp eax,2 ; key in buffer ? |
je key |
cmp eax,3 ; button in buffer ? |
je button |
call get_pid |
jmp still |
|
red: ; redraw |
call draw_window |
jmp still |
|
key: ; key |
mov eax,2 ; just read it |
int 0x40 |
cmp ah,'1' |
jne key_loc_00 |
call safekey |
jmp still |
key_loc_00: |
cmp ah,'2' |
jne key_loc_01 |
call safekey |
jmp still |
key_loc_01: |
cmp ah,'3' |
jne key_loc_02 |
call safekey |
jmp still |
key_loc_02: |
cmp ah,'4' |
jne key_loc_03 |
call safekey |
jmp still |
key_loc_03: |
cmp ah,'5' |
jne key_loc_04 |
call safekey |
jmp still |
key_loc_04: |
cmp ah,'-' |
jne key_loc_05 |
xor eax,eax |
call inc_dec_rate |
jmp still |
key_loc_05: |
cmp ah,'+' |
jne key_loc_06 |
xor eax,eax |
inc eax |
call inc_dec_rate |
jmp still |
key_loc_06: |
cmp ah,'r' ;Return in last stable mode |
jne key_loc_07 |
call restore_mode |
jmp red |
key_loc_07: |
cmp ah,13 ;Apply select mode |
jne still |
xor eax,eax |
mov ax,[vmselect] |
cmp al,0 |
je still |
xor ebx,ebx |
mov bl,al |
dec bl |
shl bx,1 ; ebx=(ebx-1)*2 |
xor edx,edx |
mov dx,[vidmode+ebx] |
mov ecx,ebx |
shl ebx,2 |
add ebx,ecx ; ebx=ebx*5 |
shr ax,8 |
dec ax |
shl ax,1 |
add ebx,eax |
ror edx,16 |
mov dx,[_m1+ebx] |
rol edx,16 |
call set_my_mode |
call protect_and_return |
xor ax,ax |
mov [vmselect],ax |
jmp red |
|
button: ; button |
mov eax,17 ; get id |
int 0x40 |
|
cmp ah,1 ; button id=1 ? |
jne noclose |
mov eax,-1 ; close this program |
int 0x40 |
noclose: |
cmp ah,2 ;'+' screen width |
jne button_loc_01 |
xor eax,eax |
inc eax |
call inc_dec_rate |
jmp still |
button_loc_01: |
cmp ah,3 ;'-' screen width |
jne button_loc_02 |
xor eax,eax |
call inc_dec_rate |
jmp still |
button_loc_02: |
cmp ah,4 ; Ok |
jne button_loc_03 |
mov ah,13 |
jmp key_loc_07 |
button_loc_03: |
cmp ah,5 ; Cancel |
jne button_loc_04 |
mov [vmselect],word 00h |
jmp red |
button_loc_04: |
cmp ah,6 ; Return |
jne button_loc_05 |
mov ah,'r' |
jmp key_loc_06 |
button_loc_05: |
cmp ah,7 ; Default |
jne button_loc_06 |
call restore_mode |
button_loc_06: |
jmp still |
|
|
; ********************************************* |
; ******* WINDOW DEFINITIONS AND DRAW ******** |
; ********************************************* |
|
|
draw_window: |
|
dw_continue: |
|
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,1 ; 1, start of draw |
int 0x40 |
|
; DRAW WINDOW |
mov eax,0 ; function 0 : define and draw window |
mov ebx,100*65536+400 ; [x start] *65536 + [x size] |
mov ecx,100*65536+200 ; [y start] *65536 + [y size] |
mov edx,0x020020C0;0x00000040 ; color of work area RRGGBB,8->color glide |
mov esi,0x805080d0 ; color of grab bar RRGGBB,8->color glide |
mov edi,0x00ffffff ; color of frames RRGGBB |
int 0x40 |
|
; WINDOW LABEL |
call print_my_title |
|
; CLOSE BUTTON |
mov eax,8 ; function 8 : define and draw button |
mov ebx,(400-19)*65536+12 ; [x start] *65536 + [x size] |
mov ecx,5*65536+12 ; [y start] *65536 + [y size] |
mov edx,1 ; button id |
mov esi,0x5599cc ; button color RRGGBB |
int 0x40 |
|
; BUTTONS |
xor eax,eax |
mov edx,eax |
mov al,8 |
mov ebx,330*65536+20 |
mov ecx,84*65536+48 |
mov dl,2 |
int 40h ; Button '+'Width |
add ebx,30*65536 |
mov dl,3 |
int 40h ; Button '-'Width |
mov ebx,22*65536+85 |
mov ecx,170*65536+15 |
inc dl ;dl=4 |
int 40h ; Button 'Ok' |
add ebx,90*65536 |
inc dl ;dl=5 |
int 40h ; Button 'Cancel' |
add ebx,90*65536 |
inc dl ;dl=6 |
int 40h ; Button 'Return' |
add ebx,90*65536 |
inc dl ;dl=7 |
int 40h ; Button 'Default' |
|
call draw_face |
|
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,2 ; 2, end of draw |
int 0x40 |
|
ret |
|
;------------Subfunctions----------- |
|
restore_mode: |
push eax |
push ebx |
push edx |
call kill_all |
mov eax,21 |
mov ebx,13 |
mov ecx,4 |
int 40h |
call ref_screen |
pop edx |
pop ecx |
pop eax |
retn |
|
|
|
; IN: edx = RefRate*65536+No.VideoMode |
set_my_mode: |
push ecx |
push ebx |
push edx |
mov eax,[currvm] |
mov [oldvm],eax |
mov [currvm],edx |
call kill_all |
pop edx |
push edx |
mov eax,21 |
mov ebx,13 |
mov ecx,3 |
int 40h |
pop edx |
pop ebx |
pop ecx |
call ref_screen |
retn |
|
; IN: eax = 0/1 - -/+ 1Hz |
inc_dec_rate: |
push ebx |
push ecx |
push edx |
mov edx,eax |
mov eax,21 |
mov ebx,13 |
mov ecx,5 |
int 40h |
pop edx |
pop ecx |
pop ebx |
retn |
|
|
ref_screen: |
push eax |
push ebx |
push ecx |
mov eax,5 |
mov ebx,100 |
int 40h |
mov eax,19 |
mov ebx,strt |
xor ecx,ecx |
int 40h |
pop ecx |
pop ebx |
pop eax |
retn |
|
get_pid: |
mov eax,9 |
mov ebx,buffer |
xor ecx,ecx |
dec ecx |
int 40h |
mov [totp],eax |
mov eax,[ebx+30] |
mov [mypid],eax |
mov ax,[ebx+4] |
mov [mypno],ax |
retn |
|
get_vert_rate: |
xor eax,eax |
mov ebx,eax |
mov ecx,eax |
mov al,21 |
mov bl,13 |
mov cl,2 |
int 40h |
mov [initrr],ebx |
mov [refrate],ebx |
ror ecx,16 |
mov cx,bx |
rol ecx,16 |
mov [currvm],ecx |
retn |
|
kill_all: |
call get_pid |
mov ecx,[totp] |
ka_loc_00: |
push ecx |
push ecx |
mov eax,9 |
mov ebx,buffer |
int 40h |
pop ecx |
mov eax,[mypid] |
cmp eax,[ebx+30] |
je ka_loc_02 |
mov eax,18 |
mov ebx,2 |
int 40h |
ka_loc_02: |
pop ecx |
loop ka_loc_00 |
retn |
|
|
get_initial_videomode: |
retn |
|
|
draw_table: |
mov eax,13 |
mov ebx,9*65536+303 |
mov ecx,59*65536+87 |
xor edx,edx |
int 40h |
mov ebx,10*65536+300 |
mov ecx,60*65536+24 |
mov edx,00FF00FFh |
int 40h |
mov ebx,10*65536+36 |
mov ecx,72*65536+72 |
mov edx,0000FFFFh |
int 40h |
mov eax,38 |
mov edx,00FFFFFFh |
mov ebx,10*65536+310 |
mov edi,60*65536+60 |
mov esi,12*65536+12 |
xor ecx,ecx |
mov cl,8 |
dt_loc_hor_line: |
push ecx |
mov ecx,edi |
int 40h |
add edi,esi |
pop ecx |
loop dt_loc_hor_line |
mov ebx,10*65536+10 |
mov edi,60*65536+144 |
mov esi,66*65536+66 |
mov ecx,edi |
int 40h |
add ebx,36*65536+36 |
xor ecx,ecx |
mov cl,5 |
dt_loc_vert_line: |
push ecx |
mov ecx,edi |
int 40h |
add ebx,esi |
pop ecx |
loop dt_loc_vert_line |
mov eax,4 |
mov ebx,52*65536+75 |
mov ecx,000000FFh |
mov edx,_m1280x1024 |
mov esi,9 |
int 40h |
add edx,9 |
add ebx,66*65536 |
int 40h |
add edx,9 |
add ebx,66*65536 |
int 40h |
add edx,9 |
add ebx,66*65536 |
int 40h |
xor eax,eax |
mov ebx,eax |
mov ecx,eax |
mov al,47 |
inc ebx |
shl ebx,16 |
inc ecx |
mov edi,ecx |
mov edx,22*65536+86 |
mov esi,00FF0000h |
mov ecx,5 |
dt_loc_00: |
push ecx |
mov ecx,edi |
int 40h |
inc edi |
add dx,12 |
pop ecx |
loop dt_loc_00 |
xor ecx,ecx |
inc ecx |
mov edi,ecx |
mov edx,76*65536+63 |
mov esi,000000FFh |
mov ecx,4 |
dt_loc_01: |
push ecx |
mov ecx,edi |
int 40h |
inc edi |
add edx,66*65536 |
pop ecx |
loop dt_loc_01 |
mov eax,4 |
mov ebx,16*65536+63 |
mov ecx,000000FFh |
mov edx,_mk |
mov esi,4 |
int 40h |
shl ecx,16 |
add bx,12 |
add edx,4 |
int 40h |
retn |
|
;IN: ah=keycode |
safekey: |
sub ah,30h |
push bx |
mov bx,word [vmselect] |
cmp bx,0 |
jnz sk_loc_00 |
cmp ah,5 |
je sk_loc_01 |
mov bl,ah |
mov [vmselect],bx |
jmp sk_loc_01 |
sk_loc_00: |
push esi |
push edx |
push ecx |
push eax |
mov bh,ah |
xor edx,edx |
mov esi,_m1 |
mov al,bl |
dec al |
xor ah,ah |
mov cx,10 |
mul cx |
xor ecx,ecx |
mov cx,ax |
xor ax,ax |
mov al,bh |
dec al |
shl ax,1 |
add cx,ax |
add esi,ecx |
lodsw |
cmp ax,0 |
jnz sk_loc_02 |
xor eax,eax |
mov bh,ah |
sk_loc_02: |
mov [vmselect],bx |
pop eax |
pop ecx |
pop edx |
pop esi |
sk_loc_01: |
call draw_window |
pop bx |
retn |
|
; IN: ebx=Xstart*65536+Xend |
; ecx=Ystart*65536+Yend |
; edx=color |
draw_rect: |
push eax |
push ebx |
push ecx |
push edx |
push edi |
xor eax,eax |
mov al,38 |
push ecx |
mov edi,ecx |
shr edi,16 |
mov cx,di |
int 40h |
pop ecx |
push ecx |
mov edi,ecx |
ror ecx,16 |
mov cx,di |
int 40h |
pop ecx |
push ebx |
mov edi,ebx |
shr edi,16 |
mov bx,di |
int 40h |
pop ebx |
mov edi,ebx |
ror ebx,16 |
mov bx,di |
int 40h |
pop edi |
pop edx |
pop ecx |
pop ebx |
pop eax |
retn |
|
; |
; OUT: eax = 0 - no event |
protect_and_return: |
push ebx |
push ecx |
xor eax,eax |
mov al,5 |
xor ebx,ebx |
mov bx,300 |
int 40h |
call get_pid |
xor eax,eax |
mov ebx,eax |
mov ecx,eax |
mov al,18 |
mov ebx,3 |
mov cx,[mypno] |
int 40h |
pop ecx |
pusha |
call draw_window |
popa |
xor eax,eax |
mov al,5 |
xor ebx,ebx |
mov bx,300 |
int 40h |
xor eax,eax |
mov al,11 |
int 40h |
cmp eax,1 |
jne par_loc_00 |
pusha |
call draw_window |
popa |
par_loc_00: |
xor eax,eax |
mov ebx,eax |
mov al,23 |
mov bx,700 |
int 40h |
cmp eax,0 |
jnz par_loc_02 |
; mov [ftr_eax],eax |
mov edx,[oldvm] |
call set_my_mode |
par_loc_02: |
pop ebx |
retn |
|
debug_ftr: |
; xor eax,eax |
; mov ebx,eax |
; mov al,47 |
; mov bl,8 |
; shl ebx,16 |
; mov bh,1 |
; mov ecx,[ftr_eax] |
; mov edx,20*65536+180 |
; mov esi,00FFFFFFh |
; int 40h |
; mov ecx,[ftr_ebx] |
; add edx,54*65536 |
; int 40h |
retn |
|
print_cur_vm: |
mov eax,4 |
mov ebx,20*65536+40 |
mov ecx,0000FF00h |
mov edx,curmode |
mov esi,cmlen |
int 40h |
mov al,14 |
int 40h |
mov esi,00FFFFFFh |
mov edi,eax |
shr eax,16 |
xor ecx,ecx |
mov cx,ax |
inc ecx |
xor ebx,ebx |
mov bl,4 |
shl ebx,16 |
mov edx,104*65536+40 |
mov eax,47 |
int 40h |
add edx,30*65536 |
mov cx,di |
inc ecx |
int 40h |
add edx,30*65536 |
mov ecx,[initrr] |
sub ebx,1*65536 |
int 40h |
mov al,4 |
mov ebx,200*65536+40 |
mov ecx,0000FF00h |
mov edx,selmode |
mov esi,cmlen |
int 40h |
mov ax,[vmselect] |
cmp ax,0 |
jz pcv_loc_00 |
push eax |
xor eax,eax |
mov al,13 |
mov ebx,284*65536+54 |
mov ecx,40*65536+10 |
mov edx,000020C0h |
int 40h |
pop eax |
push eax |
xor ecx,ecx |
dec al |
mov cl,al |
shl cx,3 |
add cl,al ; cx=(al-1)*9 |
mov edx,_m1280x1024 |
add edx,ecx |
xor eax,eax |
mov al,4 |
mov esi,9 |
mov ebx,284*65536+40 |
mov ecx,00ff0000h |
int 40h |
pop eax |
cmp ah,0 |
jz pcv_loc_00 |
push esi |
push edx |
push ecx |
push eax |
xor eax,eax |
mov al,13 |
mov ebx,344*65536+18 |
mov ecx,40*65536+10 |
mov edx,000020C0h |
int 40h |
pop eax |
push eax |
mov bx,ax |
xor edx,edx |
mov esi,_m1 |
mov al,bl |
dec al |
xor ah,ah |
mov cx,10 |
mul cx |
xor ecx,ecx |
mov cx,ax |
xor ax,ax |
mov al,bh |
dec al |
shl ax,1 |
add cx,ax |
add esi,ecx |
lodsw |
xor ecx,ecx |
mov cx,ax |
xor ebx,ebx |
mov bl,3 |
shl ebx,16 |
mov edx,344*65536+40 |
xor eax,eax |
mov al,47 |
mov esi,00ff0000h |
int 40h |
pop eax |
pop ecx |
pop edx |
pop esi |
pcv_loc_00: |
retn |
|
print_all_herz: |
push esi |
push edi |
push eax |
push ebx |
push ecx |
push edx |
cld |
mov esi,_m1 |
mov ebx,(10+36+26)*65536+86 |
mov edx,66*65536 |
xor ecx,ecx |
mov cl,4 |
pah_loc_00: |
push ecx |
push edx |
push ebx |
mov cl,5 |
xor edx,edx |
mov dl,12 |
pah_loc_01: |
lodsw |
cmp ax,00h |
jnz pah_loc_02 |
call print_noherz |
jmp pah_loc_03 |
pah_loc_02: |
call print_herz |
pah_loc_03: |
add ebx,edx |
loop pah_loc_01 |
pop ebx |
pop edx |
add ebx,edx |
pop ecx |
loop pah_loc_00 |
pop edx |
pop ecx |
pop ebx |
pop eax |
pop edi |
pop esi |
retn |
|
; IN: ebx=X*65536+Y - coordinate |
print_noherz: |
push eax |
push ebx |
push ecx |
push edx |
push esi |
xor eax,eax |
mov al,4 |
mov ecx,00FFFFFFh |
mov edx,noherz |
xor esi,esi |
mov si,3 |
int 40h |
pop esi |
pop edx |
pop ecx |
pop ebx |
pop eax |
retn |
|
; IN: eax=numer_of_herz |
; ebx=X*65536+Y |
print_herz: |
push eax |
push ebx |
push ecx |
push edx |
push esi |
mov edx,ebx |
xor ebx,ebx |
mov bl,3 |
shl ebx,16 |
mov ecx,eax |
mov esi,00FFFFFFh |
xor eax,eax |
mov al,47 |
int 40h |
pop esi |
pop edx |
pop ecx |
pop ebx |
pop eax |
retn |
|
get_pixelclock: |
retn |
|
; light version of function |
calc_refrate: |
retn |
|
rect_select: |
mov ax,[vmselect] |
; mov [ftr_ebx],eax |
cmp ax,00h |
je rs_loc_00 |
cmp ah,0 |
jne rs_loc_01 |
dec al |
mov cx,66 |
mul cx |
add ax,46 |
mov bx,ax |
shl ebx,16 |
add ax,66 |
mov bx,ax |
mov ecx,60*65536+144 |
mov edx,00ff0000h |
call draw_rect |
retn |
rs_loc_01: |
push ax |
xor ah,ah |
dec al |
xor ebx,ebx |
mov bx,66 |
mul bx |
add ax,46 |
mov bx,ax |
shl ebx,16 |
add ax,66 |
mov bx,ax |
pop ax |
xchg ah,al |
xor ah,ah |
dec al |
xor ecx,ecx |
mov cx,12 |
mul cx |
add ax,84 |
mov cx,ax |
shl ecx,16 |
add ax,12 |
mov cx,ax |
mov edx,00ff0000h |
call draw_rect |
rs_loc_00: |
retn |
|
print_my_title: |
pusha |
xor eax,eax |
mov ecx,eax |
mov cl,labellen-labelt |
mov al,4 |
mov edx,labelt |
mov ebx,8*65536+8 |
mov edi,00ff0000h |
xor esi,esi |
inc esi |
pmt_loc_00: |
push ecx |
mov ecx,edi |
int 40h |
inc edx |
sub edi,4*65536 |
add edi,4*256 |
add ebx,6*65536 |
pop ecx |
loop pmt_loc_00 |
popa |
retn |
|
|
draw_face: |
call draw_table |
; |
; |
mov ebx,320*65536+390 |
mov ecx,66*65536+144 |
mov edx,0000FF00h |
call draw_rect |
mov ebx,10*65536+390 |
mov ecx,27*65536+55 |
call draw_rect |
add ebx,2*65536 |
sub bx,2 |
add ecx,2*65536 |
sub cx,2 |
call draw_rect |
mov ebx,10*65536+390 |
mov ecx,155*65536+193 |
call draw_rect |
add ebx,2*65536 |
sub bx,2 |
add ecx,2*65536 |
sub cx,2 |
call draw_rect |
xor eax,eax |
mov al,13 |
mov ebx,182*65536+36 |
mov ecx,26*65536+5 |
mov edx,000020C0h |
int 40h |
mov ebx,173*65536+54 |
mov ecx,153*65536+7 |
int 40h |
mov ebx,337*65536+36 |
mov ecx,62*65536+10 |
int 40h |
mov al,4 |
shr ecx,16 |
mov bx,cx |
add ebx,3*65536 |
mov ecx,00FF0000h |
mov edx,width |
mov esi,5 |
int 40h |
xor ecx,ecx |
add edx,5 |
xor esi,esi |
inc esi |
mov ebx,335*65536+104 |
int 40h |
add ebx,36*65536 |
inc edx |
int 40h |
mov edx,tmode |
mov ecx,00FF0000h |
mov ebx,182*65536+24 |
mov esi,6 |
int 40h |
mov edx,actions |
mov ebx,173*65536+152 |
mov esi,9 |
int 40h |
xor ecx,ecx |
mov edx,button1 |
mov ebx,59*65536+174 |
mov esi,2 |
int 40h |
add edx,esi |
mov esi,6 |
add ebx,78*65536 |
int 40h |
add edx,esi |
add ebx,90*65536 |
int 40h |
add edx,esi |
mov esi,7 |
add ebx,87*65536 |
int 40h |
call rect_select |
; call debug_ftr |
call print_cur_vm |
call print_all_herz |
retn |
|
warning_info: |
call warning_window |
call warning_loop |
retn |
|
warning_window: |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,1 ; 1, start of draw |
int 0x40 |
; DRAW WARNING WINDOW |
mov eax,0 ; function 0 : define and draw window |
; mov ebx,100*65536+400 ; [x start] *65536 + [x size] |
mov ebx,[oldX] |
shr ebx,1 |
sub ebx,200 |
shl ebx,16 |
mov bx,400 |
; mov ecx,100*65536+200 ; [y start] *65536 + [y size] |
mov ecx,[oldY] |
shr ecx,1 |
sub ecx,100 |
shl ecx,16 |
mov cx,200 |
mov edx,0x02808080 ; color of work area RRGGBB,8->color glide |
mov esi,0x40300010 ; color of grab bar RRGGBB,8->color glide |
mov edi,0x00ff0000 ; color of frames RRGGBB |
int 0x40 |
; WARNING WINDOW LABEL |
call print_my_title |
; CLOSE BUTTON |
mov eax,8 ; function 8 : define and draw button |
mov ebx,(200-36)*65536+72 ; [x start] *65536 + [x size] |
mov ecx,(160-9)*65536+18 ; [y start] *65536 + [y size] |
mov edx,1 ; button id |
mov esi,0x00800010 ; button color RRGGBB |
int 0x40 |
; WARNING TEXT |
mov eax,4 ; function 4 : write text to window |
mov ebx,(200-(len_warn00/2)*6)*65536+60 ; [x start] *65536 + [y |
;] |
mov ecx,0xf0ff0000 ; color of text RRGGBB |
mov edx,warn00 ; pointer to text beginning |
mov esi,len_warn00 ; text length |
; int 0x40 |
; inc ebx |
int 40h |
add ebx,1*65536 |
int 40h |
mov ebx,(200-(len_warn01/2)*6)*65536+100 |
mov edx,warn01 |
mov esi,len_warn01 |
int 40h |
mov edx,button1 |
add ecx,0ffffh |
mov ebx,(200-6)*65536+(160-4) |
mov esi,2 |
int 40h |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,2 ; 2, end of draw |
int 0x40 |
retn |
|
warning_loop: |
mov eax,5 |
mov ebx,13 |
int 0x40 |
mov eax,11 |
int 40h |
cmp eax,1 ; redraw request ? |
je warning_red |
cmp eax,2 ; key in buffer ? |
je warning_key |
cmp eax,3 ; button in buffer ? |
je warning_button |
mov eax,4 |
mov ebx,(200-(len_warn01/2)*6)*65536+100 |
mov ecx,[blinkcol] |
sub cl,12 |
dec cl |
dec cl |
dec cl |
dec cl |
mov [blinkcol],ecx |
mov ch,0f0h |
shl ecx,16 |
mov edx,warn01 |
mov esi,len_warn01 |
int 40h |
sub ebx,1*65536 |
int 40h |
jmp warning_loop |
warning_red: ; redraw |
call warning_window |
jmp warning_loop |
warning_key: ; key |
mov eax,2 ; read key |
int 0x40 |
cmp ah,01h |
jne warning_loop |
xor eax,eax |
dec eax ; Terminate application |
int 40h |
jmp warning_loop |
warning_button: ; button |
mov eax,17 ; get id |
int 0x40 |
cmp ah,1 ; button id=1 ? |
jne warning_loop |
xor eax,eax |
dec eax ; close this program |
int 0x40 |
jmp warning_loop |
retn |
|
;------------DATA AREA--------------- |
|
oldX dd ? |
oldY dd ? |
initvm dd ? |
currvm dd 0 |
oldvm dd 0 |
refrate dd 0 |
initrr dd 0 |
mypid dd ? |
mypno dw ? |
totp dd ? |
vmselect dw 0 |
ftr_eax dd ? |
ftr_ebx dd ? |
blinkcol dd 0ffh |
|
; db 0,0,0,0,0,0,0,0 |
;_m1 dw 0,0,0,0,0 |
;_m2 dw 0,0,0,0,0 |
;_m3 dw 0,0,0,0,0 |
;_m4 dw 0,0,0,0,0 |
|
labelt: |
db 'Vertical Refresh Rate, ver.2.0, Copileft 2003 ;) TRANS' |
labellen: |
|
_m1280x1024 db '1280x1024' |
_m1024x768 db '1024x768 ' |
_m800x600 db ' 800x600 ' |
_m640x480 db ' 640x480 ' |
_mk db 'Key1Key2' |
|
curmode db 'Current mode: ' |
db ' x x Hz' |
cmlen=$-curmode |
selmode db ' Select mode: ' |
selcans db '----x----x---Hz' |
noherz db '---' |
width db 'Width',11h,10h |
tmode db ' Mode ' |
actions db ' Actions ' |
button1 db 'Ok' ;len=2 |
button2 db 'Cancel' ;len=6 |
button3 db 'Return' ;len=6 |
button4 db 'Default' ;len=7 |
|
strt db 'LAUNCHER ' |
|
warn00 db ' W A R N I N G ! ' |
len_warn00=$-warn00 |
warn01 db 'V i d e o D r i v e r N O T I n s t a l l e d' |
len_warn01=$-warn01 |
|
|
drvinfo: ; 512 bytes driver info area |
; +0 - Full driver name |
; +32 - Driver version |
; +64 - Word List of support video modes (max 32 positions) |
; +128 - 5 words list of support vertical rate to each present mode |
org $+32 |
drvver: |
org $+32 |
vidmode: |
org $+64 |
_m1: |
org drvinfo+200h |
|
buffer: |
I_END: |
|
|
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |