次のプロジェクトのCPUに入りましたが、時間がかかりそうなので忘れないうちにMemoryをまとめておきます。Memory作成で考えるポイントは、addressの幅のちがいです。そこにMuxやDMuxを入れて、ビット数を揃える必要があります。Memoryのaddress[15] は address[0.. ?]
Memoryのアドレス空間です。手持ちの関数電卓で確認しました。
0000 0000 0000 0000 --- 0 RAM16K address[14] の始まり
0011 1111 1111 1111 --- 16383 ここまで
0100 1111 1111 1111 --- 16384 Screen address[13] の始まり
0101 1111 1111 1111 --- 24575 ここまで
0110 0000 0000 0000 --- 24576 Keyboard
RAMを作成して時間がたっていたので、ノートで確認しました。私の例では、まず切り替えスイッチ代わりにDmuxで最上位ビットをRAM16Kと下に分けました。下はさらにScreenとKeyboardに分けました。Keyboardは出力しかない、ことに注意して下さい。
できました。
テストの途中でキーボードの入力を有効にして、大文字の K と Y を入力します。
無事に終了しました。
次のCPUの作成はかなり難しそうです。頑張ります。
編集後記
ロシアは「スラブ民族のために戦っている」という大義があるそうです。しかし実際の戦争では多くの人が殺戮され、レイプの報告もあります。大義も何もあったものではありません。すぐに戦争はやめるべきです。