NATUを作る(パート7)
HARUは失敗に終わってしまった。
だが、その悔しさをバネに、新たにNATUを作ることになった。
今回は、GRED IIを考えていきたいと思います。
GRED IIのスペックおさらい
GRED IIのスペックをおさらいしてみよう。
まず、ALUは加減算、インクリメント、デクリメントが可能
レジスタは、
0-ゼロレジスタ
1-始まりのx
2-始まりのy
3-終わりのx
4-終わりのy
5-今のx
6-今のy
で、6Byteあれは十分そう?
I/Oは、VRAM書き込み命令が出されたとき、レジスタの5番地と6番地の所を、指定された色に書き換えるようにすればOK?
制御関係の命令は、、、
条件分岐付きの計算は、減算のみ
完了を伝える命令
問題は、文字を専用回路で行うのか、CPUで行うのか というところだと思う。
専用設計vsCPU
CPUで行うなら、専用の命令を追加する必要がある。
幸い、今の命令セット的に命令を追加する余裕がある。
、、、フォントを保存するROMを作ってみて、決めたいと思う。
そして、少しROMを作った瞬間に、僕は思いました。
「文字だけ専用設計にするメリットってなんだ、、?」
専用設計にしても、結局作るのはCPUに近い回路になるし、CPUで実行して、別処理を別スレッドで並行して処理できるようにすればいいんじゃね、、?
というわけで、CPUに文字の機能も入れることにしました。
(まだ途中で変える可能性はあります)
CPUの文字のプログラムを考えてみたいと思います。
プログラム
大体の流れとしては、
ROMから読み出し
VRAMに書き込み
を繰り返す感じにしたいと思います。
0:ROM(1段目)から指定されたアドレスの情報を読み出す(7〜10番地に保存)
1:0から7番地を引く・フラグがオンだったら3にジャンプ
2:VRAMに書き込む
3:今のxをインクリメントして保存
4:0から8番地を引く・フラグがオンだったら○にジャンプ
5:VRAMに書き込む
6:今のxをインクリメントして保存
、、、プログラムを書いている途中にだんだん思ってきました。
「CPUでやるメリットないんじゃ、、、」
CPUでやるメリットの一つに、並列処理できるようにするというのがありましたが、それは頑張れば専用回路でも可能です。
さらに、一つの文字をVRAMに書き込む速度なら、専用回路の方が4倍近く高速です。
さらに、CPUで行うと、プログラムを保存するROMが大きくなってしまったり、速度が落ちてしまったりと、いいことが全くありません。
なので、専用回路でやりたいと思います。
それでは、次回は文字のことは一旦置いておいて、CPUを作っていきたいと思います。
今回は、約1時間50分の作業でした。
お疲れ様でした。
それじゃあ、次回、また会いましょう