Re: memory corruption on $d011 effects (was: Using large DRAM modules inside the C64)

From: Hársfalvi Levente (
Date: 2005-10-14 10:30:26


This is interesting. I'd been thinking on this problem when I coded on 
Plus/4 (similar memory corruption "effect" on messing up with $ff06, the 
$d011 equivalent in the TED). First I though this must be some problem 
with memory refresh, ...but, as Marko pointed out, if a program ran 
through a page, even that would completely refresh the whole 64k of ram, 
and even if it didn't, it especially should refresh the area where the 
code used to run. ...On the other hand, when you code, you meet the 
problem more frequently =-). Sometimes I inspected the content after the 
code hung, and found out that usually not more than one byte, but of 
/each/ $100 page did change... I guess that's pretty interesting... What 
coincidence of events in the C= should be physically capable of change 
the xth byte of _each_ page?... I guess whatever it is, it must have 
something to do with memory refesh... should that be a corruption of the 
memory refresh cycle itself, or the memory refresh counter's content, I 
don't know.

I also noticed that not all computers are subject to this problem... I 
wonder how the "not subject" =-) ones manage to keep the memory content, 
if the digital logic is similarly buggy in all VIC-II and TED revisions 
(I seriously doubt that this has ever been changed). ...I have a late, 
"new" case C64 with the old (but late) MB. ...Once I had to swap its 
original VIC-II (a 6569R5) to a 6569R3. Whilst it never hanged before on 
$d011 effects, now it almost always did... Nothing but the VIC-II was 
swapped... I doubt that any digital logic should be differ in the the 
two VIC-IIs, and everything else, including ttls, rams, weren't 
changed... Would someone please solve the mistery?... =-)


Daniel Kahlin wrote:
> On Wed, 12 Oct 2005, Spiro Trikaliotis wrote:
>> I always thought the VIC refreshed the DRAM simply by accessing it. If
>> you "swap" A0-A7 and A8-15 inside of the VIC, the VIC just accesses
>> every row while generating its screen ($0400-$07E7), as the last byte
>> cycles through all possible values. Thus, it could refresh all 64 KB RAM
>> just by displaying the screen.
>> Is this wrong? Does the VIC really generate some refresh cycles?
> This is correct.   This is why messing with $d011, like FLD, FLI and 
> line-crunch may in some cases corrupt memory.  This is especially true 
> with line-crunch.   How sensitive a machine is to this is dependent on 
> which revision of the c64, and probably what type of DRAM chips there are
> installed.
> Also, the 256Kbit chips (41256) does not require you to cycle more than 
> the lowest 8-bits.  You can put 41256 chips into a regular c64, and put 
> a very simple circuit for manual bank select on A8 if you like.
>  /Daniel
>       Message was sent through the cbm-hackers mailing list

       Message was sent through the cbm-hackers mailing list

Archive generated by hypermail pre-2.1.8.