Login
Search for:


Previous | Next

From: TLC (all posts)
Date: 2001-03-14
Subject: Re: Some more TED effects
Hello!

> There's another interesting effect I've faced in the past
> and never could truthfully explain. Consider the following
> short routine:
>
> . 600 SEI
> . 601 LDA $FF1D
> . 604 STA $FF19
> . 607 STA $FF15
> . 60A JMP $0601
>
> In fast mode it gives a stable color pattern, but
> apparently there are some white dots I can't understand why
> are there... I guess this should be some "noise" from
> somewhere???

Damn... What a beautiful pattern I've seen for the first time... ;-)

The dot effect is the same as seen on the newer VIC-II (8565) in the C64
and possible all VIC-IIe-s (C128). The first VIC-II-s didn't have this effect (6569Rx), nor the VIC-I (6561) in the VIC-20. As far as I remember it was discussed on some forums earlier (or have I seen it in Marko's VIC document?... I don't know).

The effect is somehow related to NMOS technology (or probably HMOS in those chips). When something is inactive, it is pulled 'high' by pullup resistors, presenting '1' logical levels.

Let's see the minute when the beam is on the border, and you write something to the color register. In this minute, the processor is writing to a latch whose value is constantly accessed by the TED itself
(since it currently draws the border, so it constantly accesses the border colour register).

In that minute, it gets confused somehow. I don't know its details (who knows that?...). But seems like, for one pixel time the TED prevents itself from accessing the register (since that is currently written).
Nevertheless, the part that queried the register doesn't care about this fact but puts out a pixel whose color is currently found on the TED internal bus.

Since in that minute, the internal bus gets no data at all, it is
'inactive', so all of its bits are '1'. That means, the color of the pixel you get is '$ff', say, the $0f light green with maximum luminance level!

You can verify this by the following small routine:

sei lsr $ff06
lda #$d2
sta $ff13
lda #$71
loop:
sta $ff19 ;13 times
.
.
.
nop jmp loop ;57 cycles, exactly one line in this mode

This generates a constant, bright white based pattern with vertical bars on it (first, you can see the bars if you try it with another color value). If you don't see the effect, turn brightness down and colors to the maximum on the TV (or monitor) - you'll clearly see the green bars on the top of the white.

You can use any color values instead of $71 - only $ff (or $7f) will completely absorb the green bars.

> They seem to have a "regular" repeating order,
> but it differs on the border and the window area.
> Furthermore, in slow mode these white dots have different
> repeating order...

This has something to do with the fact that the processor activity is in no way synced with the TED screen refresh. In the first case, you're lucky since somehow the program is in sync with the number of cycles per line and the number of cycles per frame - so the writes to the color registers happen exactly the same minutes each frame.

In the other case, this coincidence is broken - so the writes will happen in different screen positions in each subsequent frames. ...It's not completely unperiodic since the computer is predictable, so it will sooner or later get into the same phase, that's why you see it 'moving'.

> The dots are also there when I - for example - load
> something with a turbo that "stripes" the border...

The same thing.

Best regards,

L.

Copyright © Plus/4 World Team, 2001-2024