2020-06-06 22:25 — asano
予告どおりソフトウェア編です。これまでの「ソフトウェア編」ではモニタ程度のものが動いていることが多かったと思いますが、今回はプログラムの実行ができているらしいとわかる程度です。
最も簡単なテストプログラムは実行開始番地で無限ループさせるものでしょう。
HD1-6120(IM6100も)は0FFFH番地から実行を始めますので、ここに0FFFH番地へのJMP
命令を置きます。これを実行させておいてアドレスバスの状態を観察するとA0~A11までがすべて"H"になっていて0FFFH番地を読み続けていることがわかります。
次に異なるアドレスでループさせてみます。
HD1-6120でダイレクトにJMP
できる先は、同ページ(アドレスの上位5ビットが同じ)か0ページ(アドレスの上位5ビットがすべて0)だけです。それ以外へ飛びたいときは同ページか0ページにアドレスを書いておいて間接アドレッシングを使います。ここでは簡単に0ページで試してみます。
まず「h 2
」で16ビット(ビッグエンディアン)に切り替えています。
続いて1FFEH, 1FFFH番地に041H番地へのJMP
命令(0A41H)を書き込みます。EMILY Boardはバイト毎にアドレスが振られているので、HD1-6120からは0FFFH番地に相当します。
同様に082H, 083H(HD1-6120からは041H)番地にも同じ命令を書き込みます。
最後にtr
でリセット状態を解除して実行します。
以前MN1613ボードの検討時に作ったアドレスバス表示ボードで見てみます。
左端がRD、右側12個がA11~A0です。
A0とA6が点灯しているので041Hにアクセスしていることがわかります。
左端(RD)が点灯し、隣(WR)が消灯していることから読み出しのみが行なわれていることもわかります。
いつもならこの程度動いていることがわかったところでUniversal Monitorの移植を始めるところなのですが、今回はいくつか考えなくてはならないことがあります。
- いつものアセンブラASが非対応
短いテストプログラムくらいならともかくモニタをハンドアセンブルするのはさすがに嫌なのでアセンブラを何とかしなくてはなりません。
- ASxxxx はIM6100に対応しています
- MN1613でしたようにASを対応させる
- EMILY Boardの対応
このままでも使えないことはありませんが、以下の点で不便です。
- ワードアドレス対応しないと毎回アドレス換算しなくてはならない
- データシートは8進表記なので8進での表示・入力に対応させたい
- Universal Monitorの仕様
ワード単位はMN1613でも対応しましたが、以下の点どうするか仕様を考えないといけません。
- 8進の扱い(常に8進・8進/16進切り替えなど)
- DUMP時のASCII表示をどうするか
とりあえずEMILY Boardの対応からと考えているのですが、これも仕様をどうするか悩ましいのです。
かなり大きな変更になるので一緒に盛り込めるものは盛り込みたいのですが、32ビット対応とか、8X300などで必要になりそうな複数メモリ空間とか、いろいろと欲が出てきてしまって...
コメントを追加