CPU実験室

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

もやもやしたまま今年も終わり

インクリメントはちょっと置いといて別の方法でLチカを試みてみます。

これも単純なんですがローテーション命令です

 

f:id:O3I:20191228094848j:plain

初期値0xFEをロード・・・パラレルLEDは'0'になっているビットが点灯するため・・・しておきそれを左ローテーションさせるだけですがこれは難なくうまくいきます。

 

f:id:O3I:20191228095145j:plain

約55μsで一巡する超高速ナイトライダーで見た目LEDは全ビット点灯しているように見えますがリセットボタンを押すと8個のLEDのどれか1つが点灯したまま止まるので、大げさすぎるハードウェアによる「電子サイコロ」としてお正月に活用できますw

 

f:id:O3I:20191228095717j:plain

ここで欲を出して目で見てわかるくらいの速度にしようとウェイトルーチンを挿入すると・・・

 

f:id:O3I:20191228095908j:plain


ACB命令(Add, Compare and Branch)はZ80でいうとDJNZ命令みたいなもので任意のループを作れるはずですが、やはり減算処理がうまくいってないためかwaitから抜け出せなくなってしまいます。

 

CPUが単に動かないというならハードウェア的な接続が誤っているとか壊れているということになりますがCPU内部機能がおかしい、論理演算はOKだが算術演算だけNGというのは非常に考えにくいです。CPU自体がニセモノとかハードバグがFIXしてないエンジニアリングサンプルってこともないでしょう

 

やはり自分の使い方がまちがっているはずなのですが、解決できずもやもやしたまま年を越します