SDカードアダプタの設計

PC-6001のジョイスティックポートに接続可能なSDカードアダプタを作成しました。

SDカードドライバ

実行画面

ハード設計

手持ちの部品で作っているので抵抗とかがテキトーです。SDカードの仕様上は、DINとDATは50kohm〜 100kohmでプルアップする必要がある ようですが、それだとLED電流が少なくなりすぎて光らなくなります。ちゃんとバッファを入れたりすればいいんでしょうが、面倒なのでこれでやっていま す。

Joystick-SDカードアダプタ回路図

サンハヤトのユニバーサル基板(ICB-86)上に実装しています。部品代は500円くらいでしょうか。

ATARI仕様のジョイスティックポートには通常のDSUB9ピンのシリアルケーブルだと、角が邪魔をして入りません。そのため、ケーブルはコネクタ部分の耳を切り落として挿入しています。

ソフト設計

ドライバは、Tiny-FatFsを参考にさせていただきましたが、以下のような事情から、ほとんど作り直しました。

  • Z80で利用できるSDCCコンパイラでコンパイルできるようにする。
  • PC-6001の容量の制限から、リードオンリーにする。
  • やはり容量の制限から、SDカードのみの対応とする。
  • やはり容量と、速度の制限から、シングルセクタ単位のアクセスとする。

転送速度

速度計測を行いました。32kBのファイルを用意し、読込み時間を計測したところ、およそ1.5kB/s程度です。手動計測なのであ まり正確に測れません。ドライバ内で割り込みを禁止する必要があるため、PC-6001のタイマ割り込みでは計測できないのです。

そ れでも、テープが1200bps=150bytes/sであることを考えれば、7倍の速度ということになります。PC- 6001mk2でフル実装の64kBいっぱい読んでも約40秒。PC-6001用の普通のゲームなら23kB以内なので15秒程度で読めます。 まぁ、我慢できる範囲ではないでしょうか。

ちなみに、よく知られているようにPC-6001の処理時間の大半はVDG MC6847(Video Display Generator)によるDMA転送に取られてしまいます。画面表示が乱れても良いなら、倍速読み込みも可能です。実際ムービープレイヤーではその手法 をとっています。

こちらもよく読まれています