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 firstname.lastname@example.org.
Archive generated by hypermail 2.1.1.