On Mon, 28 Aug 2000, Nicolas Welte wrote: > > Nicolas, does this agree with your investigations? > > At least I can comment on the color effect you observe (read about the > cycle stuff update already). What you see is just another PAL artifact I > guess, because the color stays stable in NTSC. But I never tested this > in the visible screen area, this is just what I see in the border (so > only one scanline is affected). Are there really color effects that > apply to a whole charcter cell? I'll write out the whole program at the end of this email. It's very unsophisticated, but it does show enormous differences between setting TEST during a badline (well - just before or just after of course), setting it the line below, the line below that or any other line within a character square. In this case, YSCROLL was left at the default 3 and the lines tested were $043, $044, $045 and then up to $04B. Lines $046 - $04A showed the same results - 1 character altered in the 40 character buffer. According to my notes, the character displayed for the rest of that screen location was always $FF though the colour varied (black, light green and purple IIRC) depending on which line TEST was set. I'm convinced TEST is changing the contents of the buffer, probably due to the BA AEC badline mechanism when 3 LSB of RASTER = YSCROLL. This buffer is almost certainly implemented as 12 40 bit long shift registers which are shifted during every cycle in the visible display area (assuming screen enabled). Thus it seems reasonable for the badline DMA mechanism to affect that cell and only that cell when a badline condition is given and then taken away in this manner. What I can't explain is why on line $044 there are 3 characters replaced in the buffer, yet on line $45 only 1 but the screen loses only 7 vertical pixels on these two lines whereas it loses 8 on the later ones. I should point out to anyone trying this program that I used an NTSC C128D for this test (all my PAL computers are 100 miles away) so of course there was no 2 line PAL switch behaviour. Richard -- Richard Atkinson Software Engineer Tenison Technology EDA Ltd http://www.tenisontech.com/ To run this program, first make sure $00FE contains 0. This is because I used a zero page load instruction to use an extra cycle over what LDA #$00 would have taken. Use run/stop - restore to get out of the loop and edit the line number on which the test bit is set. Initial value is line $047. start SEI init LDA $D011 AND #$80 wait for RASTER MSB = 1 BEQ init loop LDA $D011 AND #$80 wait for RASTER MSB = 0 BNE loop line LDA $D012 CMP #$47 wait for RASTER = $047 BNE line LDA #$02 STA $D030 set TEST bit LDA $FE STA $D030 reset TEST bit (after 7 cycles) JMP loop - This message was sent through the cbm-hackers mailing list. To unsubscribe: echo unsubscribe | mail email@example.com.
Archive generated by hypermail 2.1.1.