【发布时间】:2017-01-11 23:23:07
【问题描述】:
至少运行 VICE 2.4:
PRINT PEEK(53280)
254
POKE 53280,14
PRINT PEEK(53280)
254
很明显only bits #0-#3 are used,用AND 15得到“正确”的值,但是为什么6510把高位设置为1?
【问题讨论】:
至少运行 VICE 2.4:
PRINT PEEK(53280)
254
POKE 53280,14
PRINT PEEK(53280)
254
很明显only bits #0-#3 are used,用AND 15得到“正确”的值,但是为什么6510把高位设置为1?
【问题讨论】:
6510 CPU 没有将未使用的高位设置为 1;相反,没有内存支持相应 VIC 寄存器中的高位。所以发生的情况是,CPU 在写入时将任何 8 位值放在数据总线上,但 VIC 芯片只存储低 4 位;然后,当 CPU 尝试从该地址读取时,它会将 53280 放在地址总线上,VIC 芯片需要将所有 8 位放在数据总线上。但它只存储了低 4 位;高 4 位需要伪装成 1。
当然,它也可以为这些额外的位选择其他假值(例如,它可以使用全 0);关键是,它必须是一个固定值,因为真正的 4 位从未存储在任何地方。
【讨论】:
1,而不是更方便的0……也许是一些硬件优化,除非这纯粹是一个“随机”的设计选择。