2019年5月23日木曜日

SBC6303に自作6802ボードのモニタープログラムを移植

SBC6303に自作6802ボードのモニタープログラムを移植しました


しばらく前にSBC6303を製作していじっていたのですが、LILBUGがどうも手になじまず、結局、使い慣れている6802/6809ボード用のモニターを移植することにしました。
モニターのサイズが4KByteありますので、SBC6303ボードとBLボードを接続して32KByteのRAMを増設する必要があります。

6801系の命令は6800系の命令より拡張されており、特にXのPUSH,PULLとCPXのフラグ対応が有難い拡張で、プログラムがかなり組みやすくなっています。
Windows上でアセンブルしてできたMotorola S-formatのファイルをSDに書き込んでセットし、Arduino Proのリセットボタンを押すとSD内のファイル一覧が表示されます。
そこでSBC6303ボードのリセットボタンを押すとファイルが表示順に起動します。下の画像では、最初にLILBUGが起動し、さらにリセットボタンを押すことで6303MONが起動しています。

起動画面とコマンドリスト

コマンドリストは画像の通りです。私の自作ボード用のモニターとの違いはLoad,Saveコマンドです。
機能を同等にしたかったのですが、内蔵シリアルインターフェースが一つしかないのでLoad,Save機能は同等にできません。やむを得ず、LoadはTeraTermのファイル送信機能を利用することとし、Saveは画面にMotorolaのS-formatで表示し、それを画面からコピペでWindowsに保存することとしました。(従って、SaveではなくPunchコマンドです。)
コマンド入力ラインではASSIST09と同様に、アドレスは何桁入力しても最後の4桁のみが有効で、データでは最後の2桁のみが有効です。

Loadコマンドは、L(Retern)と入力した後、TeraTermの「ファイル送信」でLoadしたいファイルを指定します。
なお、Loadコマンドでは、9600baudは遅いので、TeraTermの送信遅延を下の画像のように設定する必要があります。


Loadコマンドの設定

Load中は、S-formatファイルの各行の先頭アドレスが表示されますので、どこまで読み込んでいるかが分かります。最後に実行アドレスが(あれば)表示されます。


Loadコマンド

Punchコマンドでは、Pに続いて開始アドレスと終了アドレスを入力します。実行アドレスは入力してもしなくても構いません。下の画像のように画面にS-format形式で表示されますので、これをコピペしてWindows上で名前を付けて保存します。

Punchコマンド

最後に


6801系のプログラムは6800よりもかなり組みやすくて良いのですが、ベースページの$00から$14までをCPUが使っているので、アプリケーションでの使用が制限されてしまうのが残念です。これさえなければ、6802を捨てて移行できるのに。。。

移植にあたっては、結構引っかかることが多く、アセンブルしては走らせて、結果を見ては修正を繰り返しました。最初はEP-ROMを1ダースほど並べて焼いては取り付けて実行・修正を繰り返していましたが、途中でSDに書き込めばよいと気づいてからは、かなり効率が上がりました。それにしても、SD中のファイルをリセットで順に起動するというVintagechipsさんのアイディアには感心しますね。
(なお、アセンブラですがツールは全て自作するという方針を一時棚上げにして、arcpitさんのX6801を使用させていただきました。感謝です。)

出来上がったSBC6303用のモニタープログラムのソースとS-formatをOneDriveに上げておきます。S-formatファイルをそのままSDに書き込めば動作します。ソースをつけておきますので、より使い易いように改造も可能です。

これで、6800,6809,6303で共通した操作性で扱うことができます。
また、Leo_yumesichiさんがSBC6800,SBC6809に移植されたので、68系のSBCで同じ操作性のモニターが動くことになりました。(使われる方がどれだけあるのかは疑問ですが。。。)

0 件のコメント:

コメントを投稿