提到6502,可能現在這個世代的網友沒幾個人聽說過。不過如果說Apple II,可能聽過的人就多了(有沒有實際見過那是另一回事)。若再說到任天堂FC紅白機,聽過的人就更多了。Apple II和紅白機,上頭的CPU就是6502。
現在嵌入式系統使用的核心,大概不外乎是ARM、MIPS、PowerPC、8051、x86‧‧‧6502是越來越少見了。以前在學校都是玩x86和8048,從來沒有玩過6502。但我剛退伍的時候,第一個找到的工作,就是使用6502核心的CPU。
那當然不是單純的6502而已,已經整合了許多週邊,只是使用的核心為6502。之後第二個工作,一開始摸的專案,也是6502,可能也是因為它才被公司錄取的。6502對我來說一直有種很難形容得出來的情愫。
前幾天在網路翻東西,結果看到一個資訊,大意是說有人怕越來越少人用的計算機系統消失於時間的洪流,於是開始收集這類系統的資料,以免讓珍貴的過往無聲消失。於是有了這樣的東西。
這裡有個65頁的專案簡報檔,應該會喚醒許多老骨頭的回憶,還可以看到年輕時的Steve Jobs和Bill Gates。
老實說,模擬紅白機的模擬器就會模擬6502的CPU指令集和行為。6502的模擬技術,其實一點都不稀罕。不過,這群人採取不同的手段,而且是最麻煩的方法。
傳統採用的功能導向模擬手段,設計者必須先搞清楚目標物的功能,包含指令集、整合性週邊的功能、暫存器集‧‧‧等等。如果資訊不完全,是沒辦法完整而正確模擬其功能。
簡單說來,要用這個手法寫個模擬器,設計者先要閱讀大量技術文獻,做許許多多相容性測試,才能確保正確地模擬。
這群人改採不同的方法:電晶體層級的電路模擬,類似FPGA的電路模擬。也就是說,他們不管這東西的所有功能,直接把電路抄出來,模擬整個電晶體網路的功能。只要電路抄得對,保證是100%重現晶片功能。甚至連官方文獻沒有記載的隱藏版功能,都能被完整重現出來。
這個其實也不是啥了不起的事情,中國大陸一堆抄板子抄晶片的地下單位,幹的也是相同的事情。只不過他們是要抄出來做成成品拿去賣錢的,才不會做啥模擬的蠢事。
這群人用顯微鏡,把晶片的結構拍成照片。用軟體轉成向量圖,再由向量圖轉成多邊形圖形,再從多邊形圖形轉譯成整個電路的連接圖(Netlist),把這個連接圖用軟體去模擬其行為。
這裡有晶片的圖片,不過不是網頁上稱的大圖,應該是縮減過的。
他們真是佛心來的,弄了個Javascript的版本可以在網頁上跑,讓世界上其他有興趣的人可以來玩玩看。不過瀏覽器必須支援HTML5,所以太舊版本的瀏覽器是沒辦法觀看的。
網頁右側有幾個控制執行的按鈕,可以單步前進、單步後退、Reset CPU、全速執行。右方的機械碼區,可以填入你自己的6502機械碼。
執行指令的時候,左側晶片會顯示對應的動作。不過僅能看到金屬連接線的信號變化,沒有完整電路圖是看不出實際電路動作的。鍵盤的大於和小於按鍵可以放大和縮小晶片的圖形,也可以用滑鼠拖曳晶片。
有興趣的人可以去看看吧!
想看Javascript原始碼的人,可以在這裡下載。不過我對裡面的Netlist比較有興趣啦!