CPU実験室

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

ループ成功

ROMの先頭番地から「A0/00/00/00」の4バイトのコードを焼き込み、ボードを起動しました。

アドレスバスラインをオシロで触っていくとA0,A1,A2,A3がパタパタしていて残りはLレベルで安定しています。よってROMの0番地~15番地付近をプログラムがぐるぐる回っているといってよいでしょう。

以下がオシロの波形で上からA0、A1、A3(A2は割愛)の状態です。

f:id:O3I:20201030140812j:plain


ループしているのは4バイトのプログラムなので、普通に考えればパタパタするのはA0,A1の2本だけとなりますがAm29030のJUMP命令は遅延分岐なのでJUMPの次にある4バイト命令も見込みで実行してしまうようです。

上のオシロ波形でA0ライン(黄色)は8回変化するごとに少し幅の広い部分(オレンジ矢印)が来ますが実際にジャンプしているのはこのタイミングなのではないかと思います。

となるとループするのは0~7番地だろう、となりますがこれはCPUに内蔵された4ステージのパイプラインでコードの先読みも絡んでいるのかもしれません。(4バイト×4ステージ=16バイト)フェッチしているコードと実行しているコードが違うというのもデバッグが難しいところです。

 

テスト用治具を使ってランニングをしているところです

f:id:O3I:20201030143333j:plain

 

洗濯ばさみでCPUのパッケージに温度センサを押し付けていますが52℃くらいまで上昇して平衡状態になっています