[net.micro.pc] Trying to access vertical retrace.

jlt@meccts.UUCP (James L. Thompson) (11/18/85)

  Does anyone know how to determine if the Color Graphics Adapter is
performing a vertical retrace?  I have written a routine to display
text by directly addressing the screen memory.  When I use this
routine on the monochrome card I don't get any snow.  When I use
this on the color card, however, it looks like hell.
  The Tech. Manual states '...the CPU should access the display buffer
during the vertical retrace time(if not, then the display will be
affected with random patterns...)'.  It also refers to vertical retrace
as Interrupt Level 2 (I assume that means the IRQ2 interrupt line).
After looking at the schematics I could find no connection to any IRQ
line on the bus.  This leads me to believe that the only retrace that
can be access by software is the horizontal retrace (IBM calls it Display
Enable or Horizontal Drive) via 6845 port X'3DA', bit 0.  The
horizontal retrace does not provide sufficient time to display a whole
line and therefore must be called for each character displayed.  This
technique is just too slow.

ching@amd.UUCP (Mike Ching) (11/21/85)

In article <> jlt@meccts.UUCP (James L. Thompson) writes:
>
>  Does anyone know how to determine if the Color Graphics Adapter is
>performing a vertical retrace?

The BIOS tests bit 3 of the 6845 status register (3DAH).  When this
bit is active, the raster is in vertical retrace and the video can
be turned off by clearing bit 3 of the 6845 mode select register
(3D8H).  Reenable video when the update is complete.

spud@olivee.UUCP (John Purser) (11/24/85)

Here's what I use to find vertical retrace. The proc exits on vertical
retrace.

STATUS_PORT EQU     03DAh
V_RTRC	    EQU     8

vrt_rtrc proc near
    push    ax
    push    dx
    mov     dx,STATUS_PORT
l01:
    in	    al,dx 		; stays in this loop if you enter during
    test    al,V_RTRC		; vertical retrace
    jnz     l01
l02:
    in	    al,dx		; stays in this loop until you hit
    test    al,V_RTRC		; vertical retrace then exits
    jz	    l02
    pop     dx
    pop     ax
    ret
vrt_rtrc endp

    This works on an ATT6300 and should work on an IBM.
    The top loop is there so that I won't exit until I have a full 
    vertical retrace to use.


    John Purser
    Olivetti ATC