On Monday 24 February 2003 10:14 pm, Tim Wegner wrote:
If you have the time or energy you could put in jumps around sections of code in VESAvirtscan and see if it ever works on the Nvidia boards.
Please give me more details on what to try.
Try jumping over the following sections (1, 2, 3) of code. This is where I have had the most trouble with my other video card. One of the problems is that just because you can read the value of the scanline length doesn't mean that you can actually set the scanline length. VESAvirtscan proc near xor ax,ax once_again: mov cx,sxdots ; this should be passed twice mov dx,sydots cmp cx,vesa_xres ; asked wider than screen x? jae setvirtscan cmp dx,vesa_yres ; asked higher than screen y? jae setvirtscan jmp wedone ; otherwise do nothing setvirtscan: cmp ax,004fh ; is this second pass? je secondpass (1) jump over next mov ax,4f06h ; VESA fn 6 scanline length mov bx,1 ; subfn 1 get line width int 10h cmp ax,004fh ; did that work? jne bad_vesa ; bad vesa.. try it anyway (2) jump over next mov ax,4f06h ; VESA fn 6 scanline length mov bx,3 ; subfn 3 get max line width int 10h cmp ax,004fh ; did that work? jne bad_vesa ; bad vesa.. try it anyway (3) jump over next mov ax,4f06h mov cx,bx ; get the max width in bytes mov bx,2 ; subfn 2 set width in bytes and cx,0fff8h ; 8 bytes width align int 10h cmp ax,004fh ; did that work? jne bad_vesa ; bad vesa.. try it anyway (4) here cmp sxdots,cx ; max width in pixels in cx jae alreadyset ; can't set more bad_vesa: Jonathan