大海電子Z80操作說明書 === 前言 --- 這是一套復刻了【Z80微電腦製作,劉秋良,欣大出版】書中的ABC-80微電腦。使用Arduino作為記憶體模擬器,可以讓使用者透過Arduino程式將Z80程式載入系統內執行。 目前系統有內建四套程式,分別是: * ABC-80監督程式 * 圓周率計算程式 * 迷你監督程式(Arduino終端機版本) * BASIC直譯程式 硬體 --- 本套Z80微電腦系統硬體有三大部分: 1. arduino UNO 2. Z80主機板 3. 鍵盤與顯示器 鍵盤說明 --- ![image](https://hackmd.io/_uploads/ryPyRrUD0.png) 使用方法 --- 使用Arduino IDE內建的Serial Monitor連接Z80微電腦上的Arduino UNO,通電後可以看見Monitor出現Z80系統的提示文字。這時候可以按下數字選擇內建程式,或是選擇不理會系統就會自動進入ABC-80監督程式。 ABC-80監督程式 --- 本監督程式會以系統上的鍵盤以及七段顯示器作為人機介面。監督程式首次運行時會演奏一段音樂,音樂演奏完畢後即進入待機模式,七段顯示器顯示ABC-80字樣。 - 鍵盤與顯示 使用者可以透過鍵盤輸入機器碼,首先按下ADDR鍵,七段顯示器會顯示四位數位址以及兩位數位元組內容,皆以十六進制數字系統顯示。 按下ADDR鍵時,位址四位數的每一位七段顯示器小數點都會顯示,用以指示目前輸入的焦點。按下DATA鍵則會改為顯示兩位數位元組七段顯示器小數點,表示目前輸入焦點為位元組資料。 一旦輸入焦點決定後,鍵盤上的數字以及ABCDEF按鍵就可以用來輸入十六進制數字。 - 輸入程式碼 欲輸入Z80機器碼,必須先指定位址,然後再輸入位元組資料,輸入一筆資料後,可以按下+號按鍵此時位址會加一,使用者就可以輸入下一筆位元組資料。如此反覆就可以完成程式碼輸入。 - 執行 當程式碼輸入完畢,需要重新輸入程式碼執行的開頭位址,這樣在按下GO鍵後,系統就會從指定的位址開始執行。 圓周率程式 --- 選擇本程式之後,系統會自動開始執行圓周率計算,目前設定計算小數點下50位。計算完畢後會顯示花費的運算時間。 迷你監督程式 --- 這組程式是利用Serial Monitor作為輸出入介面,使用者可以在Serial Monitor內輸入監督程式指令,與ABC-80監督程式一樣可以輸入機器碼與執行。 BASIC --- 此為內建的BASIC直譯程式,透過Serial Monitor與BASIC程式互動。 所需軟體 --- 1. vscode,使用vscode取代arcade,編譯比較快 2. Z80組譯器,用來組譯Z80程式碼 3. notepad++,文字編輯器用來整理Z80源碼 z80組譯步驟 --- 1. 在文字編輯器中整理Z80源碼 2. 在命令列執行組譯器,產生LST與CIM(機器碼) 3. 使用我寫的一個python小程式conv.py,可以把CIM轉換成C語言的陣列變數,用來插入arduino源碼中 組譯器使用範例 --- 我們測試了兩種Z80組譯器,它們分別的使用方法如下:(以源碼simple-monitor.z80為例) - z80asm ``` z80asm.exe simple-monitor.z80 -cim python3 conv.py simple-monitor.cim > simple-monitor.c ``` - zmac ``` zmac simple-monitor.z80 --od simple-monitor --oo cim,lst -c -s -g python3 conv.py simple-monitor/simple-monitor.cim > simple-monitor.c ``` 軟體的原理 --- 這套Z80微電腦使用arduino作為微電腦的程式記憶體載入器,因此欲載入Z80機器碼會以C語言陣列變數的形式存在arduino源碼中,待arduino執行時,arduino會把Z80的機器碼以一個特殊方法傳入Z80系統的RAM裡面,最後把控制權交還給Z80之後,Z80就可以執行了。
{"description":"這是一套復刻了【Z80微電腦製作,劉秋良,欣大出版】書中的ABC-80微電腦。使用Arduino作為記憶體模擬器,可以讓使用者透過Arduino程式將Z80程式載入系統內執行。","title":"大海電子Z80操作說明","contributors":"[{\"id\":\"c687840d-8843-45d7-8cf4-8b3aa0133cdf\",\"add\":1872,\"del\":67}]","image":"https://hackmd.io/_uploads/rkcUCHLDA.png"}
Expand menu