Disabling memory refresh in UltiMax mode Re: 6510 handling of $00 and $01 registers

From: Marko Mäkelä <msmakela_at_gmail.com>
Date: Wed, 7 Dec 2011 22:37:51 +0200
Message-ID: <20111207203751.GB3234@x60s>
On Wed, Dec 07, 2011 at 08:45:01PM +0100, Segher Boessenkool wrote:
>>I am fairly sure that R/W and the address lines will be asserted. I 
>>vaguely remember that the data lines are left floating.
>
>That is correct.  We don't have die pictures of a 6510 yet, but
>it seems like the 00/01 thing forces the DBE signal low, and
>that is all it does (and the actual register stuff of course).

Now, thinking harder, reads from 0 and 1 should be shown on the address 
and data bus too. (The data bus would be driven by the memory chips, as 
usual.)

>>One more tidbit: on the 128, you can programmatically enable UltiMax 
>>mode on the MMU (GAME=0, EXROM=1, enter 64 mode) and let the VIC-IIe 
>>fetch its data from an unconnected address. In the mid-1990s, I played 
>>a bit with this, trying to write a test program that would display the 
>>data fetched by the processor. It did not occur to me back then to 
>>research whether you can disable memory refresh and corrupt the RAM in 
>>this mode.
>
>The row address gets delivered to the RAM no matter what, so there is 
>no problem there?

The row address is the low-order 6 bits, right? The VIC-II will do 5 
memory refresh cycles per raster line, reading from $3fxx using a 8-bit 
counter. But, will $3fxx always be visible to the VIC-II in the UltiMax 
mode?  Does this change if you make VA14 or VA15 nonzero? IIRC, in 
UltiMax mode, the VIC-II should see data from ROML or ROMH, and only the 
first $1000 bytes should be fetched from RAM.

I clearly remember that if you enable UltiMax mode on the C128 (pull 
-GAME to the ground) and have the VIC-II fetch data from the cartridge 
port while there is no cartridge present, it will display some sort of 
garbage. It is probably simplest to try it in text mode, so that the 
colours will remain more predictable (coming from the colour RAM, not 
from the "text buffer" that could be in unconnected address space).

I was thinking of a test where you would disable interrupts, run a loop 
at (say) $0100..$0102 and have the VIC-II fetch all graphics from the 
cartridge port. Then, after some running time, hit the reset button and 
enter the C128 monitor to confirm if the RAM at $xx03..$xxff was 
corrupted. Anyone willing to conduct such a test?

	Marko

       Message was sent through the cbm-hackers mailing list
Received on 2011-12-07 21:00:04

Archive generated by hypermail 2.2.0.