为什么总是设置53280 $ D020的高位(c64)

时间:2016-09-04 10:59:48

标签: c64 commodore

至少运行VICE 2.4:

PRINT PEEK(53280)
 254

POKE 53280,14

PRINT PEEK(53280)
 254

很明显only bits #0-#3 are usedAND 15获得“正确”值,但为什么 6510将高位设置为1

1 个答案:

答案 0 :(得分:4)

6510 CPU不会将未使用的高位设置为1;相反,没有内存支持适当的VIC寄存器中的高位。那么,当写入时,CPU会在数据总线上放置任何8位值,但VIC芯片只存储低4位;然后,当CPU尝试从该地址读取时,它将53280放在地址总线上,而VIC芯片需要将所有8位放在数据总线上。但它只存储了低4位;高4位需要伪造为1.

当然,它也可以为这些额外的位选择其他假值(例如,它可以使用全0);关键是,它必须是一个固定值,因为真正的4位从未存储在任何地方。