CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

プログラムループ

クロック同期プリセットができる12bitカウンタをEPM7064に焼き込み、以下のテストプログラムを実行させてみました。LEDを点灯、消灯をLED0~LED7に順番に行うので光が流れるように見えます。

f:id:O3I:20210327165918j:plain

プリセットがクロック非同期だと飛び先アドレスにはNOP+実効アドレスのマシンコードを置かないと異常動作しましたが、今回の修正でアドレス004のLOOPラベル行にそのような細工をしなくても問題なくなりました。

ところがここで新たな問題が発覚しました。クロックを1kHzくらいに設定しこのプログラムを実行させるとLED0~LED7がすべて高速点滅するのですべてがボーッと点灯しているように見えるはずですが、やってみると以下のようにLED6に相当するLEDだけが点灯していません。

 

f:id:O3I:20210327165931j:plain

最初、LEDの球切れか出力ラッチのポート破損かと思ったのですが、LED6のみをターゲットに絞りアクセスすると点灯するため、ハード的な故障ではありません。

いろいろ試しているうちソースコードのアドレス010にある以下の命令が無視されていてそのLEDが点灯指示されていないことがわかりました。

 

f:id:O3I:20210327172152j:plain

これがどんな命令であろうがアドレス010にあるとスルーされてしまうようです。

なんか経験したことがないトラブルです