2017年1月20日 星期五

6502 的 dummy read 與 write

這種行為是光看功能spec不會發現的現像,簡單來說反正就是不知道這顆cpu是怎樣去設計的,在讀取時候,指令對於資料讀寫的目標位址分成高低各1byte組成,如果 低byte發生carry (cross page) , 會產生多一次的讀取或是寫入行為(所以指令的cycle也會多出來) , 對於一般的記憶體相同資料寫入兩次或是讀取兩次,並沒有任何影響性,但任天堂紅白機記憶體區域有部分帶有 buffer或是latch的特性,特別是一些register io的 io mapping 區域,這時候就得針對這種奇怪的行為做處理,至於指令規格描述單就功能層面並不會提到這回事.

其實紅白機真的有很多奇奇怪怪的硬體特性,有些部分像是秘技一樣,早期前輩先開路摸索,現在這些秘密多半已經公開文件化,還有一些為了測試正確性而開發的ROM給模擬器開發者測試,雖然已經不用再像以前直接測試硬體做功能測試,但看那些描述文件或是網路資料常常也不是非常簡單理解就是.


沒有留言:

張貼留言