PC-6001: May 2009アーカイブ

SDカードをFDD互換にするには、ソフトウェアでのエミュレーションもさることながら、ハードウェアの互換性も取る必要があります。

具体的には、ポート0xd0~0xd3をアクセス可能にします。 そのためには、現在の回路のアドレスデコードを変更する必要があります。 参考までに、以下が現在の回路図です。

20090503-2313.PNG

現在のアドレスデコードはCPLDで行っていますが、拡張するにはピン数が厳しいです。 回路が上記のようになっているためです。

利用している入出力は以下のとおりです。

  • アドレス(A15, A14, A7, A6, A5, A4)
  • PCデータバス(D7~D0)
  • AVRデータバス(D7~D0)
  • PC制御信号(MREQ, IORQ, RD, WR, RESET)
  • AVR制御信号(AVRWR, AVRRD, INT0, INT1)
  • メモリ制御信号(ROMEN, RAMEN)

合計33ピン。 PLCCパッケージのCPLDでは入出力ピン数が34本までしか取れません。

上記ポートをサポートするには、最低でもA1, A0を入力し、AVRに対して識別信号を出さなければいけないので、3本追加となり、2本ピン数オーバーです。 CPLDを一つ追加すれば余裕でサポートでき、244の機能も包含できますが、回路的には複雑になります。 逆に、基本ロジックでデコードの一部を出すことでCPLD1個での実現も不可能ではないですが、デコードそのものが結構複雑なため、ICが2個程度追加されることになり、あまりうまみがありません。

回路の複雑さは基板設計の複雑さに跳ね返るので、なかなか微妙なところです。


N60-拡張BASIC

| | コメント(3) | トラックバック(0)

「SDカードをオリジナルのフロッピーディスクの代わりに使えたら便利いんじゃない?」と言われたので、拡張BASICをちょっと読んでみました。

基本のBASICは、それこそ8080でも動くんじゃないかというくらい基本命令ばかり使っています(実際にはldirやビット関連命令を使うので8080では走りませんが)が、拡張BASICはIXレジスタを使うほか、Z80の拡張命令を多少は積極的に使う傾向が見られます。

まぁその割には、いきなり最初で

ld	ix, (nn)

を使わずに、

ld	hl, (nn)
push	hl
pop	ix

としていたりしますが。 読みやすいソースなので気にすることではありませんね。


ディスク入出力に使うのは0xd0~0xd3のI/Oポートで、ここをうまく騙してやれば不可能ではなさそうです。

ハード的には、現在のCPLDの使い方だと入出力が最低でも1本不足します。 AVRの入出力には十分余裕があります。 複数のI/Oポートを使うためには、割り込みスピードを間に合わせるための工夫が必要ですが。

ソフト的には、ファイルをディスクイメージとして使うことになるでしょうね。 現在のFATの上に実装すれば良さそうです。