2025年05月25日

AKI80でCP/M


1.はじめに
 秋月さんのスーパーAKI-80が秋葉原店で¥280(Z80にちなんで¥Z80と言うことらしい)で大量に販売中でX(旧Twitter)のタイムラインで話題になっていてZ80色が一段と濃厚になっています。動かすために必要な部品は今では入手困難な物もあり、色々な対応情報がポストされています。
 個人的にはキットはあまり購入しないのですが、以前AKI-80ゴールドを購入したことを思い出し発掘しました(秋月さん製のROMライターも持っているのでこれにもAKI80が付いているはず)。
 発掘した基板は表面にピンヘッダを半田付けした状態で放置されていましたw
 そこで超小型Z80マイコン(Z80PicCompact)のようにUSB機能を有した20ピンのPIC(PIC18F14K50)を使って動かしてみようと思います。


2.基本設計
 基本的な構想は次の通りです。
  1. SRAM
     基板上には32KBのSRAMが実装されていますが、全RAMの状態で動かしたいので手持ちの128KBのSRAM(M68AF127B)に乗せ換えます。ICパッケージの縦幅が広くてAKI80のパターンに合わないのでピンを折り曲げてSOJパッケージのように加工します。この手法はたまに見かけますがCPU実験室の管理人さんは猫が足をお腹の下に折り曲げて座る香箱座りにちなんで香箱付けと命名しているようです(うまい命名ですね)。

  2. ROM
     ROMは実装せずにPIC(PIC18F14K50T-I/S)が代行します。とは言っても今回使用するPICは非力で内蔵のフラッシュメモリ(8KWord)では容量的に足りないのでリセット直後のブートコードだけPICに内蔵し、PICに接続されているSDカードからブートするようにします。
     CP/Mを移植するまではhexloaderが起動するようにして任意のプログラムを起動できるようにします。

  3. シリアル通信
     今回使用するPICにはUSB機能もあるのでPICとパソコンをUSBで接続します。Z80から見るとPICはI/O装置のように見え、8ビットパラレルでZ80と通信します。パソコン~Z80間は調歩同期シリアルに一度も変換されずに接続されるので高速な通信が可能です。また、電源もUSBから給電します。

  4. 外部記憶装置
     PICのSPIインターフェースにSDカードを接続します。Z80からはI/O空間上に8ビットバスで接続されているように見えます。

  5. 割込み対応
     Z80がI/O空間上のPIC(今回は0xec~0xefを割り当てた)にアクセスするとハード的にWAIT状態になるようにすることでPICがZ80からの要求を取りこぼさないようにしています。
     しかし割込み応答時にIORQ/もアクティブになる(同時にM1/もアクティブになる)ため(この時のアドレスバスはメモリ上のコードをフェッチする際の値になる)、アドレスバスがたまたまPICのI/Oアドレスの値になった場合、WAITしないようにPIC用のI/Oアドレスディコードロジック内にM1/がhighであるという条件も付け加えました。
     上記のことは今回基板を起こしたAki80Adapterを製造依頼した後に追加したのでI/OアドレスディコードロジックはAKI80側に実装しました。
     どこに?・・1ゲートしか使用されていなかった 74VHC00 を利用(使用されていた1ゲートも今回の改造で不要になるので4ゲート使用可能)し、更に 74HC32 も重ねて実装しました。
     このようにロジックICを重ねていけばいくらでもロジックを増やせそうにも思えますが、半田付けを例えば IC1-1Pin,IC2-1Pin,IC1-2Pin,IC2-2Pin・・の順にしないと半田付けが困難で直ぐにブリッジしてしまうので表面実装用のロジックICを重ねると作業性が悪くなります。


3.今回の改造内容
 今回の改造内容は下記の回路図の通りです。左側の四角内がAKI80で右側が新規に基板を作成したAki80Adapterです。両者はAKI80のROMソケットで接続され、Aki80Adapter側はソケット対応の連結用丸ピン端子だけでROMは実装しません。

今回実施した改造


3-1)AKI80側の改造
 AKI80側の改造内容をAKI80の回路図上に書いたものが下図になります。上述のように中央の74VHC00は未使用になったので取り外し、パターンカット後に74HC32と74HC00を重ねて実装し直しました。

AKI80側の改造の回路図

 同様に手書きではありますが、参考に(なるのか?)パターン図も載せておきます。

AKI80側の改造のパターン図

 上述した香箱処理したメモリの様子が下の写真です。

香箱処理したメモリチップ(上から) 香箱処理したメモリチップ(横から)

 改造後の状態が下の写真になります。SRAMとROMソケットの間の隙間は殆どないので見た目は良くないですが線材はSRAMの上を這わせました。基板のトップ面とボトム面の結線の線材を通すため、パターンカット兼用のホールをドリルで開けています。
 また、今回予定している確認を全て完了したわけではないので未洗浄で結線の固定やカプトンテープでの保護等もまだ行っていません。

改造後のAKI80(トップ面) 改造後のAKI80(ボトム面)


3-2)Aki80Adapterの制作
 今回制作したAki80Adapterのパターン図(グランドベタ化前)が下図になります。横やりが入ると面倒なのでグランドベタ化後の図は省略します(的確なコメントなら大歓迎)。

Aki80Adapterのパターン図

 3Dイメージが下図になります。

Aki80Adapterの3Dイメージ

 出来上がったプリント基板が下の写真です。

Aki80Adapterのプリント基板

 部品実装後(洗浄前)が下の写真になります。

Aki80Adapter(トップ面) Aki80Adapter(ボトム面)


4.動作確認
 下の写真は動作確認中の様子です。ピンヘッダ用の穴に釣り糸を通してロジアナからのプローブ線を固定しています。

動作確認の様子

 動作確認としてPICがデータバス上にINI命令を出力してZ80に実行させることでメモリ上の0100hにJP 0100hの3バイトのコードを書き込ませた後、0100hへジャンプした時のロジアナ波形が下図になります。黄色文字の部分がPICが生成しているコードで右側の緑文字部分がメモリ上に書き込んだコードをZ80が実行している部分になります。メモリ上での動作はウェイト無しで12MHz動作になっています。

ロジアナ波形例

 ここまでくれば一段落ですね(ホッ)。
 まずはPICからZ80にHexLoaderをロードさせた状態で、CP/MのBIOSのエミュレート+MSBASICのhexファイルを作成し、TeraTermからロードすることで無事MSBASICが動作しました。
 気が向いた時にCP/Mも移植して見ようと思います。

CP/MのBIOSエミュによるMSBASICの起動



 X(旧Twitter)に投稿したメッセージに添付した動画を貼っておきます。



★追記 2025/05/27
 PICからHexLoaderをロードした状態でBoot.hex(SDカードからIPLをロード後、IPLを起動する)を読み込んでCP/Mが立ち上がりました。PIC側の初期ロード対象プログラムをboot.hexに変更すれば、USB接続でCP/Mが自動起動するようにできますが、暫くはHexloaderが立ち上がる状態で遊んでみたいと思います。

CP/Mの起動画面


★追記 2025/05/28
 パソコンと接続し、CP/Mが動作中の写真も貼っておきます。

パソコンと接続中のAki80Adapter




[TOP] [ 前へ ] AKI80でCP/M [ 次へ ]

posted by skyriver at 11:19| Comment(0) | Z80 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください