Re: GO64 tech stuff?

From: Richard Atkinson (
Date: 2000-08-29 12:55:44

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 Atkinson
Software Engineer
Tenison Technology EDA Ltd

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

	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

Archive generated by hypermail 2.1.1.