ええっ⁈ CPU創ったの⁈ すっごーい! 第2章 第6節

~あんたCPUなんか創ってどうするのよ?! Vol.2~

2017/8/11
コミックマーケット C92 1日目 東7そ11b

第2章 第6節 完成したTD4EX1

これで完成です。

使うICはTD4よりも1つ増えて11個になりました。最終的な命令コードを以下に示します。

表11 TD4EX1の命令コード
命令 命令コード 説明
bit 7~4 bit 3~0
ADD A, B 0000 0000 Aレジスタの内容にBレジスタの内容を加算
ADD B, A 0001 0000 Bレジスタの内容にAレジスタの内容を加算
ADD A, Im 0010 Im Aレジスタの内容に命令中で指定された定数(Im)を加算
MOV B, A 0011 0000 BレジスタにAレジスタの内容を転送
IN A 0110 0000 入力ポートからデータを取り込み、Aレジスタに格納
IN B 0111 0000 入力ポートからデータを取り込み、Bレジスタに格納
MOV A, B 1000 0000 AレジスタにBレジスタの内容を転送
MOV A, Im 1010 Im Aレジスタに命令中で指定された定数(Im)を格納
MOV B, Im 1011 Im Bレジスタに命令中で指定された定数(Im)を格納
OUT B 1100 0000 Bレジスタの内容を出力ポートに出力
JNC Im 1101 Im キャリー(C)がゼロならば指定アドレス(Im)にジャンプ
OUT Im 1110 Im 命令中で指定された定数(Im)を出力ポートに出力
JMP Im 1111 Im 指定アドレス(Im)にジャンプ

 

予定通りアキュムレータ間加算命令を追加できました。

TD4との命令コードの互換性は無いものの、ほとんどの命令は共通なのでプログラムの移植は簡単だと思います。唯一の心残りは ADD B, Im 命令が無いことですが、これはどうしようも無いので諦めてください。

以下にTD4EX1の回路図を示します。

 

図3 TD4EX1 全回路図

図3 TD4EX1 全回路図

 

このTD4EX1はTD4にアキュムレータ間加算命令を追加しただけですので、最大プログラムサイズは16バイトのままです。しかし前作Vol.1と同じ手法を使って最大プログラムサイズを拡大することは可能です。

具体的な検討はしていませんが、TD4EX1のジャンプ命令と条件ジャンプ命令はTD4をほぼそのまま踏襲していますので、さほど難しくは無いと思います。興味のある方はチャレンジしてみてください。