VIA address decoding
Posted: Tue Aug 29, 2023 11:27 pm
I've been staring at schematics for a while now, and I'd like something confirming (or, better still, denying).
VIC responds to addresses that match the pattern 1001_0000_xxxx_rrrr
VIA1 responds to addresses that match the pattern 1001_00xx_xxx1_rrrr
VIA2 responds to addresses that match the pattern 1001_00xx_xx1x_rrrr
So reading from $903F will actually enable all three to try to drive the data bus at the same time - a collision(*).
However, the following groups of addresses are not decoded by any device:
$910x
$914x
$918x
$91Cx
$920x
$924x
$928x
$92Cx
$930x
$934x
$938x
$93Cx
I plan to use some of these addresses for Victor features such as user writable palette and reprogramming the EEPROM (once the magic unlock sequence has been written).
Is my observation about this address decoding correct, or have I missed something?
---
*) MOS chips seem to survive this fairly well. Victor uses level shifting line drivers which are substantially more aggressive in how they drive the data bus, and so I'll only be enabling the output from the databus for addresses strictly in the range $9000-$900F, because I don't want to be responsible for blowing the snot out of somebody's VIAs.
VIC responds to addresses that match the pattern 1001_0000_xxxx_rrrr
VIA1 responds to addresses that match the pattern 1001_00xx_xxx1_rrrr
VIA2 responds to addresses that match the pattern 1001_00xx_xx1x_rrrr
So reading from $903F will actually enable all three to try to drive the data bus at the same time - a collision(*).
However, the following groups of addresses are not decoded by any device:
$910x
$914x
$918x
$91Cx
$920x
$924x
$928x
$92Cx
$930x
$934x
$938x
$93Cx
I plan to use some of these addresses for Victor features such as user writable palette and reprogramming the EEPROM (once the magic unlock sequence has been written).
Is my observation about this address decoding correct, or have I missed something?
---
*) MOS chips seem to survive this fairly well. Victor uses level shifting line drivers which are substantially more aggressive in how they drive the data bus, and so I'll only be enabling the output from the databus for addresses strictly in the range $9000-$900F, because I don't want to be responsible for blowing the snot out of somebody's VIAs.