トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第270回]
●動作テスト(13)JNC d
今回はJNC dのテストです。
いつものように画面左側のプログラムを実行したあとでマシン語モニタコマンドでステップ動作をさせています。
そのあたりの操作については[第258回]と[第259回]で詳しく説明していますので参照してください。
また以下の説明に出てくるHCMOSIC版MYCPU4基板のLED信号名についても[第259回]で説明していますので参照してください。
SUB A,BのCLK4まで実行しました。
LD A,d、LD B,d、SUB A,Bはすでに説明済みですから各CLKのときの状態の写真は省略します。
最後のSUB A,BのCLK4のときの写真のみ下に示します。
Aに7、Bに5をロードしてSUB A,Bを実行しましたからAレジスタには結果の値の2が入りました。
7−2の計算ではCFはセットされませんからCF(赤色LED)は消灯しています。
CFとZFのLED表示については[第262回]に書いていますので参照してください。
次のJNC 5を実行しました。
JNC 5のCLK4まで実行しました。
その直前の状態ではCFは立っていませんからJNC 5の実行によってPC(プログラムカウンタ)にはアドレス5がセットされるはずです。
JNC 5のCLK1の写真です。
JNCの動作は基本的にはJMP命令の動作と同じです。
写真左上のDECODE基板のBdsel(青色LED)が点灯しました。
Bdselが点灯すると外部データが選択され、消灯するとBレジスタが選択されます。
Bdoutも点灯しています。
写真右上のREGISTER基板のB/d(D3〜D0)に外部データの値(0101)が出力されています。
内部バスにも0101が出力されています。
DECODE基板のPCwr_(赤色LED)も点灯しています。
JNCのCLK2〜CLK4はCLK1と同じで変化しませんから写真は省略します。
JNC 5の次の命令の1CLKだけを実行しました。
JNC 5の次の命令の1CLKだけを実行したときの写真です。
メモリアドレスが05(00000101)になりました。
JNC 5が正しく実行されたことが確認できました。
しかしそれだけではJNC命令のテストとしては不十分です。
CFが立っているときの動作も確認する必要があります。
CFが立つようにAレジスタの値を変えました。
さきほどのテストと同じようにSUB A,BのCLK4まで実行しました。
最後のSUB A,BのCLK4のときの写真です。
Aに3、Bに5をロードしてSUB A,Bを実行しましたからAレジスタには結果の値のEが入りました。
Eは負号なし数では14ですが符号付の数として考えたときは−2になります(2の補数)。
3−5の計算では上位桁に対するボローが発生しますからCFがセットされます(赤色LEDが点灯しています)。
次のJNC 5を実行しました。
JNC 5のCLK4まで実行しました。
その直前の状態でCFが立っていますからJNC 5は動作としてはNOP命令の動作になってPC(プログラムカウンタ)が+1進むだけの結果になるはずです。
JNC 5のCLK1の写真です。
さきほどと違ってDECODE基板のPCwr_(赤色LED)は消灯しています。
JNCのCLK2〜CLK4はCLK1と同じで変化しませんから写真は省略します。
JNC 5の次の命令の1CLKだけを実行しました。
JNC 5の次の命令の1CLKだけを実行したときの写真です。
メモリアドレスは1カウント進んで04(00000100)になりました。
CFが立っているときのJNC 5も正しく実行されたことが確認できました。
トランジスタでCPUをつくろう![第270回]
2020.11.28upload
前へ
次へ
ホームページトップへ戻る