第6章 I/Oポートと強制リセット回路など

入力回路(入力ポート)

RETROF-2020の入力ポートは基板上に8bitのパラレル入力が一つだけです。これはフルキーボードを接続できる最低のビット数です。

前作RETROF-2017では16bitの入力ポートを2組(1組は基板上の16個のトグルスイッチに直結、もう1組は上位8ビットをゲーム用コントローラー、下位8ビットをキーボードに直結)用意しました。

これは旧作RETROF-2017の回路図の一部です。

   

しかし、実際に使ったのはキーボードが殆どであったため、RETROF-2020では基板面積の削減も考慮し、8ビットのパラレル入力を1組だけとしました。

但し、アドレスバスとデータバス、および入力要求信号の拡張端子を基板上に用意したので、外付拡張であれば16bitの入力ポートを最大65535組実装できます。

入力ポートを外部拡張する場合は、現状GNDに接続されている回路6-1の74LS541の1番ピンをポートアドレスのデコード出力を与える様に配線を修正するか、あるいは74LS541自体をICソケットから外す必要があります。

本機RETROF-2020の入力ポート

IOE端子をLにすると、入力ポートの値がそのままデータバスの下位8bitに放出さます。この状態でAレジスタがデータバスの値を読み込むだけです。



基板上での上記ブロック図に対応する素子です。


←基板のカラー画像はこちら。

入力命令のタイミングチャート

RETROF-2020は、入力した値をどこに格納するか、あるいは入力した値の加工(bitマスクなど)を行うか否かによって、複数の入力命令を用意しています。ここではそれらの中で最も単純な命令である「基板上に設置した入力ポートの値をそのままAレジスタに格納する機械語命令(ニモニックはINA)」のタイミングチャートを紹介します。

Φ1~3

プログラムカウンタで示されるメモリの内容をIR(インストラクションレジスタ)とWレジスタに転記します。 IRにはメモリ内容の上位8bitをWレジスタには、メモリ内容の下位8bitに0xFF00を加えた値が転記されます。

Φ1~Φ2は主メモリから読み出す値が安定するまでの待ち時間です。

Φ4~7

入力ポートの値をALUを介してAレジスタに転記します。この時ALUはデータバスの内容をそのままALUバスに出力します。

Φ4~Φ6はデータバスに放出される値とALUの演算結果が安定するまでの待ち時間です。

Φ8~12

次の命令の読出しに備えてPCの値をインクリメントします。この時ALUはアドレスバスの値に1を加えた値をALUバスに出力します。

Φ8~Φ12はアドレスバスに放出される値とALUの演算結果が安定するまでの待ち時間です。ALUの処理が繰上がりを伴うため時間を要するので、Φ4~7より待ち時間は1クロック分増えています。

Φ13

1つの機械語命令の終了をSC(ステージカウンタ)に伝えます。ステージカウンタはリセットされ、次の機械語命令の処理を始めます。