Re: $DD00

From: Stephen Judd (judd_at_merle.acns.nwu.edu)
Date: 1998-10-26 16:16:08

Upon re-reading this:

> 	To make a long story short (and I mean loooong -- it took several
> days of frustration to figure out the solution :)... because the picture is
> interlaced, an interrupt is running which swaps bitmaps, and in particular
> modifies $DD00.  But $DD00 is also used to communicate with the quickcam,
> so that there are little pieces of code like
> 
> 	LDA $DD00
> 	AND #$F3
> 	a few other things
> 	STA $DD00
> 
> As you've probably figured out, the problem was that an interrupt was
> occasionally triggered between the LDA and STA, and what the interrupt
> wrote to $DD00 was quickly hosed by the STA above.  SEI and CLI fixed
> up the problem just fine.
> 	The bizarre thing is the symptoms, which were our only clue: at 
> random intervals, garbage would flicker on the screen, in fact what looked 
> like fairly regular garbage.  Moreover, on different (even/odd) frames the 
> entire screen would be vertically shifted by some small number of pixels 
> (2-4 say).  This includes the raster interrupt -- an INC $D020 and DEC $D020
> indicated where the interrupt occured at, and it was in two physically
> different places on the screen!  Moreover, the cause of the screen garbage
> is not very obvious to me, since changing $DD00 like above ought to
> merely switch to an "out of phase" bitmap -- not a totally different
> VIC bank!

This last part is very stupid.  Of course it switches VIC banks, as the
two bitmaps are in two separate banks.  What I meant is that the bitmaps
are in banks 1 and 2, and I see no way for $DD00 to accidentally point
to bank 0 or 3 for a single frame.  My thinking is that the garbage might
be $3FFF or some such.

> 	So, I have my guesses, but can anyone explain how messing with 
> $DD00 can totally confuse VIC?

-Steve
-
This message was sent through the cbm-hackers mailing list.
To unsubscribe: echo unsubscribe | mail cbm-hackers-request@dot.tcm.hut.fi.

Archive generated by hypermail 2.1.1.