Z8001を動かす
カテゴリー:
Universal Monitor Z8000は現在のところZ8002のみの対応です。これは実行環境がSBCZ8002しかないためですが、Z8001は持っているので何とか動かしてみようというのが今回のお話です。
マイクロプロセッサ・マイクロコントローラ等です。
Universal Monitor Z8000は現在のところZ8002のみの対応です。これは実行環境がSBCZ8002しかないためですが、Z8001は持っているので何とか動かしてみようというのが今回のお話です。
アドレスエラー・バスエラーについて今度こそ終わりにするつもりです。
MC68040からは大きな方向転換があったように感じます。
複雑度は増しているはずなのにスタックに積まれる情報は減っているのです。前にもMC68010の判別(補足)に書きましたが、命令の再開を諦めて頭からやり直す方針のようです。
まずはアドレスエラーの場合です。
3回目は残りですが書ききれるかなぁ。さらに1回増えてしまうかもしれません。
ここからは自分の手で動かしたことはないのでマニュアルを元にざっくり書いていきます。
この両者はソフトウェアから見た例外処理はほぼ共通のようなのでまとめて書きます。
これらではエラー発生時の状況によってスタックに積まれる情報量に違いがあるようです。キリの悪いところで発生すると保存しないといけない項目が増えるということなのかな。
どちらが使われたかはSP+6の上位4ビットでわかります。
まずは少ない場合から。
HD1-6120ボードを作ってから約2年、ASが使えるようになったのでUniversal Monitorの移植に着手しました。
ボード完成以来ソフトウェア編での無限ループ確認くらいしかしていなかったのですが、やっとまともなプログラムが動かせます。いくつかあった問題は、ASはIM6100対応を行ない、EMILY Boardも12ビット8進表示モードを作ったことでほぼ解決しています。
残るUniversal Monitorの仕様は... 常に8進表示でダンプ時のASCII表示は無しとすることにします。
そう決まればあとは黙々と実装するのみです。
現在 D(ump), G(o), S(et) の各コマンドができて L(oad) はインテルHEXのみ実装してデバッグ中といった状況です。
ある程度のプログラムを書いてこのIM6100の癖がわかってきたので書いてみたいと思います。
先日のuPD78CG14E、QUIPなのでユニバーサル基板では扱いづらい上にμPD7800ともピン配置が大きく異なるのでuPD7800Gボードを流用するわけにもいかず...
別な基板発注するついでに専用基板起こしてみました。
写真はとりあえず動作したところです。
I/Oピンを引き出すためのコネクタと外部RAMが未実装ですが、Universal Monitorは動きます。RAMが内蔵の256バイトしかないので大したことはできませんが。
このボードは以下のようなコンセプトで作っています。
前回に引き続きピギーバック品をもう一つ。
沖のMSM85C154です。
対応するマスクROM品はMSM83C154で、これは80C51の拡張版です。本家のIntelは開発用としてはUV-EPROM内蔵の8751/87C51を用意していました
ROM無しタイプはI/Oピンが減ることもさることながらROMへの配線が面倒ですし、UV-EPROM内蔵タイプは専用ライタやアダプタが必要になるので、個人的にはピギーバックタイプは好きですね。ROMエミュレータを使えるのもメリットです。
1820-1692も例によって適当な開発環境が見当たりません。
というわけでCP-1600のときと同様にASのコードジェネレータを書いてみました。CP-1600同様これも書式は簡単で命令数も少なく、着手してから半日ほどでテストも含めて書けました。
現時点のパッチなどをhttps://electrelic.com/pub/asl-Nanoprocessor-20220616/に置いておきます。
patch -p1 < Nanoprocessor.patch
でパッチを当てます。t_nano.ori
をtests/t_nano
にコピーします。後は普通にビルドできるはずです。