VGA End horizontal blanking 0?

What happens when the VGA is programmed with the CRTC's End horizontal or vertical blanking set to 0? Would the VGA still output a blank line(vertically) or pixe(horizontally) on a row? Or is the only way to remove the blanking from the screen to set it above the horizontal or vertical total (effectively disable it)? My emulation is running using the Dosbox int10 get/putpixel and function 00h(set video) methods, but they set it to horizontal pixel 384 (effectively in the middle of the left overscan on-screen).

Debugging of the generated horizontal and vertical frequencies (in pixels processed horizontally/vertically by my CRTC until H/VTotal, multiplied by 8 or 9 depending on the set width):

Video mode 02h:

Vertical:
0-349=Display
350-354=Overscan
355-386=VBlank
387=VRetrace
388-446=VBlank
447(+)=VTotal

Horizontal:
0-311=Active display
312-343=Overscan
344=HRetrace
345-383=Overscan
384=HBlank
385-399=Overscan
400(+)=HTotal

Atm special signals (Total and retrace) have equal priority, with horizontal first, vertical last and retrace before total, with any combination of horizontal and vertical total and retraces signals on the same virtual coordinate (see above coordinates, being OR-ed together to generate a signal with all possible outputs).

When no special signal (V/H Total/Retrace) is used, normal output is used, with priority being:
Highest: Blanking.
Average: Display.
Lowest: Overscan.

I seem to get the correct display, but with above settings I get a black line (as far as I can see it's the HBlank pixel every row, at horizontal timing of 384).

Effectively this is calculated as start 384 (Start Horizontal Blanking) and end of +0 (End horizontal blanking). Thus blanking is applied to timing 384 - (384+0) = 384 - 384 = 384 only. Is this correct? Should this be coordinate 384 or not at all (thus the ending being exclusive ( coordinate<(384+0) ))?
Last edited on
Topic archived. No new replies allowed.