{"id":19837084,"url":"https://github.com/46nori/z80atmega128","last_synced_at":"2025-05-01T18:30:37.195Z","repository":{"id":152566747,"uuid":"615728525","full_name":"46nori/Z80Atmega128","owner":"46nori","description":"Real Z80A system with I/O emulated by AVR(ATmega128)","archived":false,"fork":false,"pushed_at":"2024-08-25T04:55:09.000Z","size":13041,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-04-06T16:49:10.303Z","etag":null,"topics":["assembly","atmega128","avr","c","cpm","cpm22","cpm3","cpmplus","hardware-designs","kicad","z80","zork"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/46nori.png","metadata":{"files":{"readme":"README-ja.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-18T14:06:53.000Z","updated_at":"2024-08-25T04:55:12.000Z","dependencies_parsed_at":"2023-09-27T19:52:53.712Z","dependency_job_id":"c86711bd-9c39-474a-89bb-0a23de719650","html_url":"https://github.com/46nori/Z80Atmega128","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/46nori%2FZ80Atmega128","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/46nori%2FZ80Atmega128/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/46nori%2FZ80Atmega128/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/46nori%2FZ80Atmega128/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/46nori","download_url":"https://codeload.github.com/46nori/Z80Atmega128/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251924574,"owners_count":21665993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assembly","atmega128","avr","c","cpm","cpm22","cpm3","cpmplus","hardware-designs","kicad","z80","zork"],"created_at":"2024-11-12T12:13:28.500Z","updated_at":"2025-05-01T18:30:32.986Z","avatar_url":"https://github.com/46nori.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Z80ATmega128\n[English version is here.](./README.md)\n## 概要\n本プロジェクト目的は、本物のZ80A上でCP/M-80が動くシステムの構築である。  \nなぜいまさらそんなモノを？  \nきっかけは、部品箱から30年ぶりにZ80A CPUを発見したこと。たぶん1980年あたりに製造されたNMOSプロセスのザイログ純正品だ。このままコレクションしておくのも忍びないので、動かしてみることにした。  \n\n  ![](doc/Fig/Z80A.jpeg)\n\nだが、この時代に昔と同じようなZ80のワンボードマイコンを再現するなんて面白みがない。そもそもパーツの入手が困難だ。  \nそこで以下のアプローチをとることにした。\n\n1. [Z80A](https://www.zilog.com/docs/z80/um0080.pdf)と[ATmega128-16AU](https://www.microchip.com/en-us/product/ATmega128) (AVRマイコン)のハイブリッド構成とする。\n2. ROMは使用しない。Z80AとAVRで64KBのSRAMを共有し、Z80のブートストラップコードはAVRが配置する。\n3. Z80の外部I/Oと割り込みはAVRのファームウェアでエミュレートする。つまりZ80の周辺I/Oデバイスは全てソフトウェアで記述する。\n4. できるだけ入手しやすい部品で回路設計する。(2023年の日本の電子部品市場を想定)\n\n## 実績\n* CP/M 2.2がZ80A上でネイティブ動作可能\n* micoSDカード上のイメージからCP/Mを自律起動する\n* CP/M 3 (CP/M Plus)の動作も確認済み\n* 懐かしのテキストアドベンチャーゲーム ZORK I, II, IIが遊べる!\n* プリント基板(PCB)も製造してみた\n* デモビデオ  \n  [![](https://img.youtube.com/vi/2_RJPk65XRE/0.jpg)](https://youtu.be/2_RJPk65XRE\n)\n\n## コンテンツ\n```\n.\n├── avr                      AVR ファームウェア\n├── z80                      Z80 ソフトウェア\n│   ├── cpm22                CP/M-80 Ver2.2\n│   │   ├── bios               BIOS\n│   │   ├── sys                CPM.SYS(CCP/BDOS) and cpm.ihx(IPL+CCP/BDOS+BIOS)\n│   │   └── image              CP/M 2.2 Disk image\n│   └── cpm3                 CP/M 3 (CP/M Plus)\n│       └── image              CP/M 3 Disk image\n├── doc\n│   ├── Hardware/            ハードウェアドキュメント\n│   ├── Software/            ソフトウェアドキュメント\n│   └── README.md            ドキュメント目次\n└── schematics\n    └── KiCad\n        ├── *.kicad_sch      回路図\n        └── *.kicad_pcb      PCB\n```\n- [ドキュメント一覧](doc/README.md)\n  - [Z80ATmega128 Board セットアップガイド](doc/SetupGuide.md)\n  - [ハードウェア設計仕様](doc/Hardware/Design.md)\n- [開発日記](doc/Diary.md)\n\n## 必要なツール\n- [Microchip Studio](https://www.microchip.com/en-us/tools-resources/develop/microchip-studio) for AVR v7.0以降 : avr/以下のAVRファームウェアのコンパイル用\n- [AVRISP mkII](https://www.microchip.com/en-us/development-tool/ATAVRISP2) : ATmega128へのファームウェアの焼きこみとFUSEの設定用\n- [KiCad](https://www.kicad.org/) v7.0 : 回路図とPCBの設計用\n- [ASxxxx Cross Assemblers](https://shop-pdp.net/ashtml/asxxxx.php) : z80/以下のCP/M BIOSのアセンブル用\n- [cpmtools](https://github.com/lipro-cpm4l/cpmtools) : CP/M disk imagesの生成用\n\n## 試作基板\n  ![](doc/Fig/20230506.jpeg)\n\n## プリント基板\n  ![](doc/Fig/PCB2.jpeg)  \n  ![](doc/Fig/PCB1.jpeg)  \n\n## 回路図\n![](schematics/KiCad/SVG/Z80ATmega128.svg)\n![](schematics/KiCad/SVG/Z80ATmega128-Reset.svg)\n![](schematics/KiCad/SVG/Z80ATmega128-SD_Card_Interface.svg)\n![](schematics/KiCad/SVG/Z80ATmega128-ExtIO.svg)\n\n## ライセンス\nGPLv3\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F46nori%2Fz80atmega128","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F46nori%2Fz80atmega128","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F46nori%2Fz80atmega128/lists"}