現在地

SBCZ8002(動作編)


テーマ:

カテゴリー:

2021年、今年もどうぞ宜しくお願いいたします。

さて昨年末に組み立てたまま動かずに悩んでいたSBCZ8002ですが、動作するようになりましたのでその顛末を書いておきます。

まずはすぐに使える周波数カウンタとテスタで見られるところから見ていきました。

A0はリセット直後は変化ありますがその後は"L"のままです。

A1A11は次のような周期で変化し続けています。

A1 333.8kHz
A2 143.2kHz
A3 95.6kHz
A4 47.9kHz
A5 36.0kHz
A6 24.1kHz
A7 12.2kHz
A8 12.2kHz
A9 12.2kHz
A10 12.2kHz
A11 12.2kHz

A12以上もリセット直後は変化がありますが、その後は"HHHL"のままになります。

アドレスラッチの74HC574は正常に動作しているらしいこと、0E000H~0EFFFHの範囲でループしているらしいことがわかります。もちろんZ8002も動作しているでしょう。

AS, MREQ, DSはともに667.2kHzなので上記ループはメモリアクセスであることがわかります。

B/Wは"L"、R/Wは"H"なのでワードのリードアクセスですね。

ST[3:0]は"HHLH"に安定するのでループはプログラム・アドレス空間からの命令の第1ワードの読み込みのようです。

ここまでの動作には特におかしな点はありません。やはりZ8002に問題は無さそうです。

続いてGAL16V8の出力を見てみると、リセットしても"H"のまままったく動きません。ROMやRAMのセレクト信号はこのGALが作っているのでROM, RAMなどには一切アクセスできていないことになります。

Z8002はマルチプレクスバスなのでリードアクセスに対してどのデバイスも応答しないと直前にバスに出力されたアドレスをそのまま読み込んでいる可能性が高いです。オペコードの0ExxxHはJR(相対分岐)命令なので、暴走した挙句にアドレスが0ExxxHの範囲に入ったときに近傍への分岐命令をフェッチし続けて捕まったのではないかと想像しています。

ここまで来ると原因はほぼGALに絞られてきます。

GALは書き込み時にベリファイはされていますが、ROMなどとは異なり通常動作とは異なる方法で読み出しているので、ベリファイは通るけど動作しないという可能性も捨てきれません。

一緒に買ったものや別ロットのGALに交換してみましたが状況に変化はありませんでした。

ここでふと書き込んでいるデータがおかしいのではないかと思い始めました。

念のために提供されているsbcz8002_datapack.zipを展開し直してみたら...

何事もなかったかのように動作してしまいました。試した複数のGALも新しいデータ書き直したら全部OKです。

新年早々しなくてよい苦労をしてしまったのでした。

参考文献・関連図書: 
『Z8000ユーザーズ・マニュアル 1 CPU/MMU編』, シャープ.

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
※ コメントは原則公開です。個別のご相談などは「ご意見・ご要望」からお願いします。