Login
Search for:


Previous | Next

From: Crown (all posts)
Date: 1998-06-05
Subject: Re: RAM refresh
Hi there,

>Does the refresh counter wrap on raster line $100? What about the last
>raster line? The VIC-II changes $d012 one cycle too late (or was it too
>early) at the end of the last raster line. Well, I could see that from my
>measurement data, but I don't have it here right now.
Yes it wraps at line $100, but that's normal, as $100*5 is dividable with 256, so there will be no adress lost.
The last raster line is also normal, the acesses are
$FF13 $FF14 $FF15 $FF16 $FF17
Hmm, how does $d012 incrementation affects Ram refresh? Does the VIC-II increments $d012 at X-cords 0? Or does the clearing of the refresh counter happens somewhere here?
I didn't checked yet, in which cycle the counter clear happens exactly,
but surely will do that also.

>Now does anybody have the interest (and time) to write a C16/plus4 program
>that runs entirely in open address space? On the C64 it was rather easy
>to write one that requires only 8 addresses to run. I baptized it to
>de00-de07. But it took me 2 weeks to design a program that runs in the
>color memory, because there the data is fetched both by the videochip and
>by the processor. I filled the stack with $DA, and the program executed
>RTS and other opcodes ending in 0 most of the time. That program is
>called dadb, for the address where it spends most of its time. The
>program is included with Frodo 4.1; the de00-de07 program is missing, but
>instead there's the de00all program written by Andreas Boose.
Well, this will be a bit harder on Plus4, as in the RAM refresh cycles the registers of the TED are also acessed, and some of them are changing continously. These are:
$ff00-$ff05 the timers, well they could be stopped, by only writing one of its low byte, but docs say that there should be no more than
125 usec between the write of the low byte, and the high byte.
I didn't checked yet what happens if you don't write the high byte.
Also it has to be checked yet, if the decrementing is aliased to odd or even cycles (Phi0 and Phi2), and also if is aliased at all.
$ff09 this doesn't change, all we had to do is to wait in setup time
'till all IRQ reqs happen. (Does any Light Pen implementation using that bit which is not used according to docs?)
$FF1A-$FF1F these are all counters which change continously.

$FF3E-$FF3F these doesn't change but you cannot change the values at this address, it always reflect $ff at read. (Possibly the write goes through to RAM also, but even the TED can't read these addresses from RAM.)

So, it will a bit harder to do it on Plus4.

Tibor Biczo / Crown of GOTU

Copyright © Plus/4 World Team, 2001-2024