まつたろうの歩み

PythonやCの勉強中に「指し示す」いう表現がありました。それを知りたくて今はコンピュータシステムを勉強しています。

コンピュータシステムの理論と実装。第5章のうち Memory ができました。

f:id:kmatsutaro:20220416055441j:plain

コンピュータシステムの理論と実装。

次のプロジェクトの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は出力しかない、ことに注意して下さい。

できました。

f:id:kmatsutaro:20220416061534j:plain

スクリーンモードでテストします

テストの途中でキーボードの入力を有効にして、大文字の K と Y を入力します。

f:id:kmatsutaro:20220416061759j:plain

キーボードのテスト

無事に終了しました。

f:id:kmatsutaro:20220416061908j:plain

successfully

次のCPUの作成はかなり難しそうです。頑張ります。

編集後記

ロシアは「スラブ民族のために戦っている」という大義があるそうです。しかし実際の戦争では多くの人が殺戮され、レイプの報告もあります。大義も何もあったものではありません。すぐに戦争はやめるべきです。