Subject: Re: vbl handler in grfabs_cc.c
To: Olaf Seibert <>
From: Chris Hopps <>
List: amiga-dev
Date: 03/15/1994 05:49:44
> (Francis Demierre) wrote:
> > void
> > cc_mode_vbl_handler(d)
> >         dmode_t *d;
> > {
> >    u_short vp = ((custom.vposr & 0x0007) << 8) | ((custom.vhposr) >> 8);
> > 
> >    if (vp < 12) {
> >        custom.cop1lc = PREP_DMA_MEM(h_this_data->frames[F_LONG]);
> >        custom.copjmp1 = 0;
> >    }
> > }
> Do I understand from this code that the vertical blank interrupt is
> used to strobe the copper to start the copperlist, and even to swap
> copperlists between even and odd fields in interlace mode?
> (if not, ignore the following)
> The last time Commodore did this was in Kickstart 1.1!!

Wrong. Its in 2.04-3.0+ check the dissassem.  The use coplc2...
However this method is required with hedly hardware.

> I don't have the hardware manual here (it's at home) but I would swear
> that custom.copjmp1 is strobed automatically, by the hardware, at vbl
> time.  And more importantly, the even frame copperlist can put the
> address of the odd frame copperlist in cop1lc, and vice versa. No need
> for interrupts to do this.

Yes and yes. I do both. (You really should check the source before
commenting :^)

> This improvement, first incorporated in KS 1.2 made the display much
> more stable in event of crashes and such.

Hmm I guess I don't understand what it has to do with crashes but I
don't/didn't plan on having the kernel crash too often.

> And, given the fact that the NTSC/PAL test up to 1.3 gave the wrong result
> at least 1/50 of the time, this may possibly explain the display glitches
> I sometimes get at the bottom of my screen - they are suspiciously
> near the NTSC/PAL or the line 511/line 512 demarcation.

Dunno about this.  But its not becuase of the above.  All copper list
in the kernel wait at *least* until vp > 12 so strobing before then is
not a problem and as you can see from above thats the only time I
strobe.  Have I overlooked something?

> -Olaf.