Subject: Re: vbl handler in grfabs_cc.c
To: None <amiga-dev@sun-lamp.cs.berkeley.edu, francis@hasler.ascom.ch>
From: Olaf Seibert <rhialto@mbfys.kun.nl>
List: amiga-dev
Date: 03/15/1994 11:06:19
francis@hasler.ascom.ch (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!!
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.
This improvement, first incorporated in KS 1.2 made the display much
more stable in event of crashes and such.
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.
-Olaf.
--
___ Olaf 'Rhialto' Seibert D787B44DFC896063 4CBB95A5BD1DAA96
\X/ There are no lemurs in this post rhialto@mbfys.kun.nl
------------------------------------------------------------------------------