Close
0%
0%

用Arduino 玩Z80

我遇到一本1980年代出版,有關自製Z80微電腦的書,於是我復刻它的硬體

Similar projects worth following
1980年代有許多Z80微電腦的產品,其中有很多是DIY類產品,玩家可以自行組裝,是用來學習Z80的學習工具。
我在圖書館借到一本,裡面給出完整的電路圖,以及名為監督程式的預載程式原始碼。
我另外也知道有人打造了現代版的Z80微電腦,我認識到這是利用arduino以及Z80的時脈行為讓系統變成Z80的程

用arduino模擬Z80系統的ROM/RAM

目前網上有一套4晶片的結合Z80與arduino的專案
https://hackaday.io/project/19000-a-4-4ics-z80-homemade-computer-on-breadboard/details

他的特別之處在於雖然是利用arduino來上傳程式碼到Z80的記憶體,可是他不需要控制Z80的位址匯流排而是只控制資料匯流排就可以上傳。找不到它的原理說明,猜測是所謂的上傳就是把資料一筆一筆傳送到記憶體位址,所以是個迴圈程式,所以

後來明白,他是利用這道指令
LD (HL),A
從中截斷Z80與RAM的機器週期
禁制RAM的動作讓資料匯流排釋出
arduino把資料放在資料匯流排
等Z80機器週期把資料吃進去
Arduino再放手RAM給Z80控制
Z80就會把資料接手放進RAM裡面
位址則是來自HL暫存器
所以資料放完之後
arduino要再下一道
INC HL
將HL暫存器加一

Z80微電腦製作,劉秋良,欣大出版

ABC-80
目前根據書中ABC-80的架構
有一顆8255負責IO存取
ABC-80的周邊有:

在8255

  • 七段顯示器
  • 6x4鍵盤
  • 錄音機存取
  • 喇叭與LED(同在PC7)

在CPU

  • HALT指示燈

在arduino 作為Z80 周邊方面

以IO 位址0H 為存取位址
導向arduino 本身的串列埠作為終端輸出入

但是arduino對Z8來說屬於慢速周邊
因此硬體需要自動產生WAIT信號讓Z80 等待 arduino 反應
使用7400 NAND 組成的RS 正反器
IORQ與A7 OR 的信號作為正反器的RESET 信號
當Z80 程式 IN/OUT 定位到Arduino 為存取對象時
正反器產生WAIT 信號回授給Z80 插入等待週期
直到Arudino 程式反應到了
程式會產生清除正反器的信號
讓Z80 脫離WAIT 狀態
如此完成Z80與arduino 之間的周邊存取行為

遇到問題

在終端字串的輸出方面沒有問題
以正確執行圓周率計算為例子

但是在從arduino 串列埠輸入給Z80 方面就有問題
Z80的IN 指令抓不到資料

目前推測是 來自IORQ與A7 OR 起來的CS328信號與RD 信號之間有時間差
導致沒有攔截到

arduino做z80周邊所遇到的問題,已解決
其一,主要是IO週期之後,在wait條件還沒有解除之前,以單步方式帶z80走完緊接在IO指令之後的指令的擷取週期,這樣就可以讓z80脫離wait條件(IORQ以及位址命中)
其二,是simple-monitor.z80裡面有錯,他的換行字元比對值設定錯誤,導致程式無法進入執行階段(結果是我自己寫錯的😂...

Read more »

IMG_3337.MOV

透過arduino ide串列視窗 執行z80記憶體內的圓周率計算程式

quicktime - 26.88 MB - 03/28/2024 at 06:24

Download

IMG_3299.MOV

ABC-80輸入程式與執行

quicktime - 43.00 MB - 03/28/2024 at 06:18

Download

trim_ED3C1968-7A27-4AD9-B95E-60A188344F48.mp4

ABC-80 監督程式運作測試 量測Z80時脈頻率

MPEG-4 Video - 11.99 MB - 03/28/2024 at 06:14

Download

JPEG Image - 1.01 MB - 03/28/2024 at 06:05

Preview
Download

JPEG Image - 1.15 MB - 03/28/2024 at 06:05

Preview
Download

View all 10 files

View all 2 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates