トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第274回]
●MMU回路(2)動作テスト(その1)
今回は前回説明しましたMMU回路の動作テストです。
いつものように画面左側のプログラムを実行したあとでマシン語モニタコマンドでステップ動作をさせています。
そのあたりの操作については[第258回]と[第259回]で詳しく説明していますので参照してください。
また以下の説明に出てくるHCMOSIC版MYCPU4基板のLED信号名についても[第259回]で説明していますので参照してください。
SUB A,BのCLK4まで実行しました。
LD A,d、LD B,d、SUB A,Bはすでに説明済みですから各CLKのときの状態の写真は省略します。
最後のSUB A,BのCLK4のときの写真のみ下に示します。
次のJNZ命令も[第272回]で説明済みです。
そこではJNZ 5でしたが今回はJNZ Fです。
JNZ FのCLK4まで実行しました。
MMU回路のバンク切換えを使うためにはJNCかJNZかJMP命令を使ってアドレスFにジャンプする必要があります。
またはプログラムが進んでアドレスEを実行したあとで自然にアドレスFが実行されるようにします。
下はJNZ FのCLK1まで実行したときの写真です。
その前に実行したSUB A,BによってCFが点灯しZFは消灯しています。
ですからJNZ F命令を実行するとアドレスFへのジャンプが行なわれることになります。
JNZのCLK2〜CLK4はCLK1と同じで変化しませんから写真は省略します。
JNZ F命令の次の1CLKを実行しました。
アドレスがF(00001111)になりました。
JNZ Fが正しく実行されたことがわかります。
RAMのアドレスFにはデータとして’39’が書かれています。
これは命令コードではありません。
RAMのアドレスXFには次にジャンプしたい8ビットのメモリアドレスそのものをダイレクトに記述します。
’39’を命令コードとして解釈するとLD W,Aになりますが、アドレスXFに書いたときはMMU回路によってメモリバンク#3のアドレス9へのJMP命令になります。
アドレスの下位4ビットが’0’〜’E’のメモリアドレスに書いたデータはすべて命令コードとして解釈されてその通りに実行されますが、アドレスの下位4ビットが’F’のメモリアドレスに書いたコードは8ビットのアドレスを指定したものと解釈され、そのアドレスへのジャンプが実行されます。
続けてJMP命令の次のCLK4まで実行しました。
つまりアドレスFのCLK4まで実行したことになります。
そのほかのアドレスでしたらコード”3”の命令が実行されるところなのですが、上に書いたようにアドレス’39’へのJMP命令と解釈されます。
アドレスFのCLK4まで実行したときの写真です。
写真左上のDECODE基板のPCwr_(赤色LED)が点灯していることで、LD命令ではなくてJMP命令として実行されていることがわかります。
次の1CLKを実行しました。
メモリアドレスが’39’になりました。
MMU回路によってアドレス’39’へのジャンプが実行されたことがわかります。
トランジスタでCPUをつくろう![第274回]
2020.12.5upload
前へ
次へ
ホームページトップへ戻る