| |
ws
Registered: Apr 2012 Posts: 251 |
Bus Noise
Abstract:
D800/Color Ram Hi-Bits (xxxx0000) are allegedly not connected. Thus: fuzz.
Well but actually why then this:
https://ibb.co/fqQkEk
https://ibb.co/k4g30Q
(one is C64 with reloaded board, other one is vice, just to make sure (sadly vice returns what? some prerecorded signals?))
This is anything but random. So then what is it? Any clues?
WS |
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
what you read from unconnected i/o is the last value that was on the bus, usually what the VIC fetched in the previous cycle. it IS indeed anything but random, it is 100% predictable. VICE (x64sc) in fact emulates this correctly :)
tests are here: https://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/C64.. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
mmmh now i think about it again... i am not entirely sure if that applies to the color ram under all conditions. a test program would be needed to verify this :) a simple loop like you used doesnt really give useful results however, what you need to do is testing this with a stable raster irq, so that the reads always happen at the same well defined cycles. |
| |
ws
Registered: Apr 2012 Posts: 251 |
Ah! Good idea. I had been trying to read stuff as fast as i could, but i had always thought about syncing, too. Will now do that. The other possibility i imagined would be reading out tons of data to an external target and then checking for patterns but to do that, i am waiting for a certain hardware add-on that currently unpublicly is being developed (i hope, still). |
| |
Mindcooler
Registered: Nov 2006 Posts: 28 |
Is this the same effect the VIC gets trying to read ZP location 01? |
| |
Flavioweb
Registered: Nov 2011 Posts: 463 |
Is the same... but when cpu write to 00/01...
Vic always read ram adresses 00/01.
If you make a 00/01 write during vb, idle byte ($3FFF or so...) value is stored to ram 00/01. |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Iirc, $01 (and $00) access is not at all the same. Writes always go through to the RAM, and VIC reads a stable value from there, it's just that these RAM cells happen to be shadowed by the CPU's processor port registers which intercept reads. |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Ah, my bad. Confirmed with the Q&A section of C=hacking #8 that writes to $00/$01 indeed don't go through directly, but the write signal goes to RAM regardless, picking up whatever is left on the bus. VIC reads from $00/$01 are stable, though. |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
according to some C= hacking article (iirc) d800 upper 4 bits does not always come from what the VIC left on the bus. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
according to older articles the illegal opcodes do all sort of funky things.....
a lot of those conclusions come from incomplete testing and misunderstanding of how certain things really work. we are 20 years further now :) |