用arduino玩z80

pondahai
Mar 20, 2024

--

使用arduino uno作為z80微電腦系統的程式載入器

z80微電腦系統是多晶片系統,一個z80 CPU必須搭配外部的程式記憶體才可以運作,在上世紀八零年代,有許多z80微電腦系統問世,印象中都是一塊大電路板,上面除了有z80及許多IC外,另外就是搭配有七段顯示器以及鍵盤。

在圖書館借到了一本當年的z80微電腦製作手冊,書本的原意是講解作者設計的一款z80微電腦系統,但是如今這塊硬體已經不可尋,但是z80卻還買的到,因此就來發想如何用現代元件製作一塊最簡z80系統。

首先除了開頭提到要有z80以及記憶體外,這個記憶體通常分為ROM與RAM兩種。所謂的ROM就是唯讀記憶體而RAM叫做隨機存取記憶體。在規劃的時候會把每次開機會用到的固定程式放在ROM,而RAM是用來存放會變化的資料,例如使用者的輸入,程式運作的輔助資料等等。

在RAM的部分好解決,因為現在還買得到編號62開頭的SRAM,只是現在往往都設計成超過z80十六條位址線64KB的容量,一種解決方案是不管它,剩下的記憶體放著浪費,另一種則是設計硬體電路,將多餘的記憶體以分庫的方式來存取。而手邊剛好有以前留下的62256,32KB的SRAM,這就剛好沒有浪費的問題。

而ROM的部分較難處理,因為為了程式的修修改改,以往都是要用ROM的燒錄器將ROM的內容更動,耗時不方便。後來雖然有電氣可抹除的FLASH ROM,但是也是要經歷燒錄過程的時間,於是後來便有了ROM模擬器。

ROM模擬器內部以SRAM為基底,使用微控制器切換它的控制邏輯,在程式需要更新的時候,由電腦端對ROM模擬器內的SRAM做資料更新,更新完畢後再切換控制邏輯讓這內部的RAM變成目標板上的ROM,這樣既快速又方便。

這裡要提到的用arduino玩z80就是沿用上述的邏輯,讓arduino uno變成z80的ROM模擬器。

參考來自網路上其他網友的設計,可以透過攔截Z80的機器週期,將資料安插在週期之中,則Z80就會把資料上傳到RAM中,然後arduino在資料上傳完畢之後把RAM的控制權交還給Z80,然後再提供Z80時脈信號,這時候Z80就會開始運作。

https://hackaday.io/project/19000-a-4-4ics-z80-homemade-computer-on-breadboard

在z80微電腦製作手冊一書中,作者設計了一款名為ABC-80的微電腦,系統採用z80為核心,周邊採用8255作為控制晶片,把六顆七段顯示器與一組6x4鍵盤透過8255語系統連接。主程式透過IN、OUT指令對其存取,以掃描顯示的方式驅動七段顯示器,並在掃描顯示時序的同時也掃描鍵盤輸入。

於是我試圖用arduino的開發方式來遊玩z80系統,嘗試復刻這套書中的ABC-80系統。

過程使用麵包板,最初只有三個元件:z80、62256以及8255。

使用麵包板驗證系統

我也用Power Point做了動畫展示這個系統的運作原理。

動畫解說如何用arduino玩z80

最後用一個短片總結這個計畫目前的進度。

--

--

pondahai

有容乃大 海納百川 我是彭大海 以前是工程師 現在不是工程師 贊助鏈結: https://www.paypal.me/pondahai