2016-09-04 26 views
3

至少运行VICE 2.4:

PRINT PEEK(53280) 
254 

POKE 53280,14 

PRINT PEEK(53280) 
254 

很显然,only bits #0-#3 are used,并认为“正确”的值与AND 15获得,但为什么 6510是否将高位设置为1

回答

4

6510 CPU不会将未使用的高位设置为1;相反,没有内存支持适当的VIC寄存器中的高位。所以发生的情况是,CPU在写入数据总线时将任何8位值放入数据总线,但VIC芯片只存储低4位;然后,当CPU尝试从该地址读取数据时,它会在地址总线上放置53280,VIC芯片需要将全部8位放在数据总线上。但它只存储了低4位;更高的4位将需要伪装为1.当然,它也可以为这些额外位选择其他假值(例如,它可以使用全零)。重点是,它必须是一个固定值,因为真正的4位从未存储在任何地方。

+0

谢谢。然而,必须有一个原因,为什么它是设计的'1',并不是更方便'0'...也许一些硬件优化,除非这纯粹是一个“随机”的设计选择。 – youri

+1

我不能说nMOS,但TTL通常读取任何未连接的输入作为正电压或1位。这是晶体管在输入端布置的不对称方式的一种人为现象。我忘记了细节,但是一个快速搜索表明TTL输入或者'拉到地面'(0)或者'没有拉到地面'(1),所以当没有连接时默认的回答是1也可能是最省电的答案是1)。 nMOS可能使用了类似的FET布局......但我不知道。 – sh1