2022-12-16 17:02 — asano
カテゴリー:
前回無事にZ8001が動作したわけですが、あれは以前中国から買ったもので念のため製作と並行して国内でZ8003も調達していました。
東芝製のTMPZ8003P-6、Z8003のセカンドソース品です。
Z8003というのはZ8001を仮想記憶対応したもので、MC68000に対するMC68010のようなものです。同様にZ8002に対するZ8004というのもありますが、セグメント無しの仮想記憶という需要はあまりなかったためか見かけませんね。
ピン配置はZ8001と一緒で、唯一RESERVEDだったピン33がABORTに変わっています。これはアクセスに失敗したことを知らせて実行中の命令を中断させ(例外処理を始め)る信号です。M68000系のBERRのようなものです。不用意にアサートされると問題なのでアダプタにプルアップを追加しました。
Z8001との動作上の相違点は前述のアボート機能の他、TSET
(Test and Set)命令で外部回路でロックできるように専用のステータスを出力することです。
MC68010ではバスエラー時にエラーになったアクセスの詳細や内部情報がスタックに積まれますが、Z8003は特に追加の情報は積まないようです。どうもアクセスの詳細は外部回路で記録しておけということのようです。どうせABORTを出すのはMMUだからそのくらいの追加は問題ないだろうという判断なのでしょうか。
内部情報が無いのは命令を頭から再実行するから不要ということなのでしょうかね。ロングワードのPUSH
の2ワード目でエラー発生とかどうなるんでしょう。デクリメントしちゃったポインタレジスタとか戻しているのかな。
Z8001/Z8002とZ8003/Z8004の判別を書けないかなと思っていましたが、ここまで動作に違いが無いと難しそうです。ABORTもTSET
も外部回路の助けを借りないといけませんから、ソフトウェアのみで汎用なルーチンは無理です。他に動作の違いでもあればいいのですが...
コメントを追加