CPUの仕様が、ほぼ固まったと思う。メモリーアドレスは、コードとデーターが共通で、12ビット。従って、12ビットのプログラムカウンタ(PC)を持つ。アキュムレーターはAレジスタの一つ。2つの汎用レジスタ、BとCがある。アドレスレジスタはHLからなる8ビットだが、上位4ビットは別途セグメントレジスタ(Sレジスタ)を介して設定する。フラグは、キャリーとゼロの2つ。スタックポインタは、とりあえず6ビットを用意するが、必要なら最長12ビットまで拡張する可能性はある。命令はすべて8ビットであり、従って256種類の命令が存在する。特徴としては、条件ジャンプが無いこと。代わりに、フラグの値により次の命令をスキップする命令がある。CALL命令が無く、代わりにPCをスタックに保存する命令がある。従って、PCをスタックに保存した後にジャンプを行えば、CALL命令と同等になる。この仕様のため、リターン命令の実行後は命令が1つスキップされる。使用可能な命令は次の通り。Sのそれぞれのレジスタ間とメモリー(HL)との間で4ビット値のロードが可能。ソースとデスティネーションが同じの場合は、別の機能に割り当ててある。PC"は、先に、CALLの代替命令で述べたとおり。NC"などは、これも先に条件ジャンプの代替命令で述べたとおりである。ロード命令のソースもしくはデスティネーションが111の場合を、PUSH/POPに割り当てた。インクリメント・デクリメント命令のレジスタ割り当ても、全く同様。111は、スタックポインタの操作に割り当てた。リテラル値の代入はSレジスタのみで、他のレジスタへの代入もすべてこのレジスタを介して行う。メモリーと、アキュムレーター(Aレジスタ)との間で行うことが出来る。7ビットのオペランドを伴い、全256種類の命令のうち半分の128を占めることになった。モニタープログラムもこのCPU用に作成することが出来たので、まずまずの処理能力があることは証明済み。次のステップとしては、CPLDによるエミュレーションになるかと考えている。0.3のダウンロードはこちらから。