至少运行VICE 2.4:
PRINT PEEK(53280)
254
POKE 53280,14
PRINT PEEK(53280)
254
很明显only bits #0-#3 are used,AND 15
获得“正确”值,但为什么 6510将高位设置为1
?
答案 0 :(得分:4)
6510 CPU不会将未使用的高位设置为1;相反,没有内存支持适当的VIC寄存器中的高位。那么,当写入时,CPU会在数据总线上放置任何8位值,但VIC芯片只存储低4位;然后,当CPU尝试从该地址读取时,它将53280放在地址总线上,而VIC芯片需要将所有8位放在数据总线上。但它只存储了低4位;高4位需要伪造为1.
当然,它也可以为这些额外的位选择其他假值(例如,它可以使用全0);关键是,它必须是一个固定值,因为真正的4位从未存储在任何地方。