2016-09-04 19 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