# 用 Arduino 玩 Z80 ![截圖 2024-03-14 下午12.03.50](https://hackmd.io/_uploads/rJLVvgg0p.png) ## 原理 使用 arudino 作為 z80 的程式載入器 ## 方法 透過攔截 z80 機器週期 將欲上傳的資料插入週期之中 讓 z80 將資料搬運到 RAM 之中 arduino 提供 z80 時脈以及 reset 信號 ## 開發日記 啟蒙:Z80-MBC2 找到 z80 以及 SRAM 先在麵包板連接 研究 Z80-MBC2 的原碼理解上傳原理 決定使用 arduino uno 作為載入器核心 理解 uno 的接腳暫存器 其中 A0~A5+D6+D7 是隸屬同一個暫存器 因此做為資料匯流排 研究 uno 的 PWM 輸出腳 決定用 D3 作為 Z80 時脈輸出 以【Z80微電腦製作】一書為參考 ## Z80微電腦製作,劉秋良,欣大出版 ![WIN_20240204_21_45_52_Pro](https://hackmd.io/_uploads/rJfwtYz1C.jpg) 主要晶片有 Z80、SRAM 以及 8255 負責 IO 一開始在 8255 PC7 腳安裝 LED 實驗程式上傳 很快就成功了 後來花了幾天的時間 把書中的監督程式掃描進電腦做文字辨識 然後校正後做為上傳給z80系統的內容 在解決文字辨識的失誤後 監督程式正常運作 ## ABC-80 目前根據書中ABC-80的架構 有一顆8255負責IO存取 ABC-80的周邊有: 1. 在8255 1. 七段顯示器 2. 6x4鍵盤 3. 錄音機存取 4. 喇叭與LED(同在PC7) 2. 在CPU 1. HALT指示燈 #### chatgpt 修正如下: 啟發自 Z80-MBC2 的微電腦製作,我將 Z80 與 SRAM 首先連接到麵包板上進行實驗。隨後,我深入研究了 Z80-MBC2 的原始碼,以理解其上傳原理。為了執行這一計劃,我選擇使用 Arduino Uno 作為載入器核心。 在熟悉 Arduino Uno 的接腳暫存器後,我發現 A0 到 A5、D6 和 D7 是隸屬於同一個暫存器,可作為資料匯流排。接著,我深入研究了 Uno 的 PWM 輸出腳,最終決定使用 D3 作為 Z80 的時脈輸出。 參考書籍《Z80微電腦製作》,我了解到主要晶片包括 Z80、SRAM 和 8255,後者負責 I/O。一開始,我在 8255 的 PC7 腳安裝了 LED,並順利進行了實驗。 接著,我花了幾天的時間,將書中的監督程式進行了文字辨識,並進行校正後,準備將其作為上傳給 Z80 系統的內容。雖然在解決文字辨識中遇到了一些失誤,但最終我成功地讓監督程式正常運作。 ## 應用程式 ### z80算圓周率 https://github.com/GmEsoft/Z80-MBC2_PiSpigot?tab=readme-ov-file ### 簡單監督程式 https://github.com/skx/z80-examples ## 進度 ### 麵包板 ![Image01](https://hackmd.io/_uploads/H1l3B6GJ0.jpg) ![Image03](https://hackmd.io/_uploads/HJNar6MkC.jpg) ![Image04](https://hackmd.io/_uploads/B1bRSpzy0.jpg) ![Image10](https://hackmd.io/_uploads/BJT0SaG1R.jpg) ![Image15](https://hackmd.io/_uploads/BJjyI6zJ0.jpg) ### 電路板 把麵包板的實驗電路固化成電路板 ![image](https://hackmd.io/_uploads/SJiA_2GyC.png) ![image](https://hackmd.io/_uploads/HyYJF3fyR.png) ![image](https://hackmd.io/_uploads/B1eMqhfJR.png) 使用凱華按鍵 ![image](https://hackmd.io/_uploads/BJ3NX9olA.png) ![image](https://hackmd.io/_uploads/rytB7coxR.png) ## 推廣方式 * 分享開發紀錄 * 線上聚會分享 * 實體聚會分享 * 套件生產與販售 * ## 設計 * 硬體 * 鍵盤 不希望是一般輕觸開關 而是線性的感覺(無聲 就像八零年代 * 找個機會問鍵人谷 * 軟體 * 目前內建1. ABC-80 2.計算圓周率 3.簡易監督程式 4.BASIC * 視覺 * 包裝 ## 分享紀錄 ## 參考資料 Z80 微電腦製作,欣大 [ZX80](https://en.wikipedia.org/wiki/ZX80) 外型設計參考 https://www.facebook.com/yankodesign/posts/pfbid02UmWpnqK242wUPJnF45xUEqWXniTt5bN6kjcUmZdC5pUKcfEJmsMpypkkUMtSyH7Sl?locale=zh_TW | PART | NTD | |--|--| | KaiIh凯华1350矮轴Chos线性轴猪鼻子机械键盘轴体巧克力段落轴 | 374.4822857 | | 哈狐外设凯华巧克力矮轴机械键盘键帽PBT/PC猪鼻子超薄CFX键帽 | 253.6128 | | CPU z80 | 17.76 | | RAM 62256 | 8.88 | | GPIO 8255 | 11.1 | | PCB-main | 31.712 | | PCB-dsky | 79.712 | | 七段顯示器四位數 | 5.772 | | 七段顯示器一位數 | 3.996 | | 披薩盒【13X13X3.7 CM E浪】 | 5.6 | | 排針 | 12 | | 圓孔 | 115 | | 易折 | 13 | 包裝盒 貼紙 說明書 靜電袋 緩衝材 ## 關於 z80 套件 已經有幾位網友預定,但是我還沒定價呀~~ ## 目標群眾 資深工程師 大學教授 機械程式語言與組合語言的學習者 ## 討論進度 04/12 * 專案/套件名稱定案(待定 * 280duino * z80duino(有人用了 * edu-80 * MPF-I * adu-80 * 草山-80 * 社子-80 * 葫蘆-80 * TWD-80 * TWN-80 * ACT-80 * TX80是以Z80處理器命名的,“T”的意思是“台灣成分”。 * ZX80是以Z80處理器命名的,“X”的意思是“神秘成分”。 * FX80是以Z80處理器命名的,“F”的意思是“福爾摩沙成分”。 * * 套件的規劃 * 全套 * 自備 ardino uno * 首五套 現場焊接 1600 元 * * 套件價格 * 定價2000 * 購買者有完成套件並且分享到網路社群後,給予100元大海電子禮卷或是100元現金(直接折價?) * [攜帶式特雷門琴X藍牙音響](https://www.zeczec.com/projects/firexit) 操作失誤的問題討論。 * 未來的電子設計與量產顧問工作規劃。 * 專案問題與失敗分析直播 * 三十分鐘以內 八路繼電器 * 大字衣服 l ,海字衣服 xl 。 04/16 * mx 軸鍵 * 字體: * [vag rounded](https://www.foundertype.com/index.php/FontInfo/index/id/2909) * https://en.wikipedia.org/wiki/VAG_Rounded * 跟著大大團購 ## 鍵盤文字 ![image](https://hackmd.io/_uploads/H1FxjWngR.png) ## 集資文案 chatGPT https://chat.openai.com/share/948d29ad-76f7-4116-b1d2-f75a783c4003 標題:重拾八位元:共同探索電腦歷史的魅力 親愛的支持者們, 那段美好的時光,我們來不及參與。70年代,八位元電腦的時代,是一段充滿著機遇和創新的年代。然而,即使我們來不及親歷那個時代,我們仍然希望能夠重溫它的美好,感受它的激情。 我們是一群熱愛電腦歷史的年輕人,我們相信在這個科技快速發展的世界中,回顧過去的技術進步對於理解現在和塑造未來至關重要。因此,我們決定發起一個獨特的專案,讓大家一同重溫八位元電腦的黃金時代。 在我們的專案中,我們精心打造了一部70年代風格的Z80八位元電腦,並透過使用Arduino作為程式上傳器,使其更加現代化、易用化。這意味著,您可以輕鬆地在這套微電腦上上傳程式,並體驗當年八位元電腦的魅力。 D君負責軟硬體開發,他對於八位元技術的研究和開發功不可沒;H君負責美術設計,他將這部電腦設計得如此懷舊動人;S君則負責八位元電腦鍵盤的研發,他讓我們可以真實地感受到按下每一個鍵的手感。 我們相信,八位元電腦曾經引領了電腦革命,它不僅是過去的象徵,更是現在和未來的脈絡。通過這個專案,我們希望能夠讓更多的人了解八位元電腦的重要性,並一起探索電腦歷史的精彩。 我們誠摯地邀請您加入我們的集資專案,一同重拾八位元的美好時光,一同探索電腦歷史的深邃奧秘。感謝您的支持! 4/22 鍵盤材料費 1444 元 (大海先墊) z80 衣服 烙鐵頭與內部都很爛,需要換。