6809のプログラムの動作確認環境について
linux PC上でクロスアセンブルしたものを
SBC6809やFM7などの6809マシンに持って行って動作させるのが単純な話なんだが、
パラメータを一つ変えては、SDカードやEEPROMに書き込んで、動作させてみてを繰り返すのは
あまりにも非効率すぎる、プロならICEとかを使うのが王道だが趣味の道楽でそんな道具揃えてなど居られない。
そこで、PC上でエミュレータで動作させて、おおかた完成させてから実機に持ち込むやり方になる。
6809のエミュレータ環境を探すといろいろ有るが、懐かしのFMシリーズなどのPCエミュや
海外だとTRSなどの6809PCのものが結構出てくる。ただ そこまで多機能なモノは必要ではないのだ
ACIAでのデータのやり取りをシミュレートしてくれるだけのボードマイコンを再現してくれるので十分なのだ
web検索で探すと、6809tools,6809usim,6809 という3つが候補に上がる
6809toolsは、アセンブラのA09と実行環境のV09の組み合わせなんだが、
ROMエリアとACIAポートアドレスが固定で、ソースを変更しても動作させることが出来ない。
6809usimも同様にACIAポートが変更できない、動作させるためのROMを同梱のmakeROMで作るしか出来ないとか
今どきのlinux環境で素直にビルドできないとか問題山盛りすぎて話にならない。
最後の6809(正式名は6809 Assembler, Simulator, Debugger (in rust))で
https://github.com/gorsat/6809
で公開されてる。
概要としては、ACIAポートを起動時のコマンドラインオプションで指定でき、
エミュレータ本体に簡易マクロアセンブラとデバッガが内蔵されており、
ブレークポイントだけじゃなく、ステップトレースまでこなし、
端末画面2つ必要なのを除けば、使い勝手は申し分ない。
他のアセンブラで作った、HEX、モトローラSレコード、BINも実行できるのも有り難い。
github経由でしか、作者にメッセージが送れないので残念。
以前、GAME言語のあれこれについての中で、GAME80ICなどでZ80-MBC2とのscreenコマンドでのシリアル接続中にソーステキストのコピーペースト転送ができない事に触れていたが、単に使ってる環境に依存した所謂「おまかん」なのだが、回避したければ、素直にwindowsで使うか 若しくは linuxでもwine上でteratermを使えば済む話ではある。だが、我が家に於いては普段使いにできるwindows機など無い。棚の奥を探せばwin7の入った古PCが有るとは思うがボードマイコンとの接続の為だけに引っ張り出してきたいとまでは思わない。そこで ふと考えるにteratermにあってscreenやcu,minicomにないものはと、teratermには、テキスト転送中に行単位、文字単位でミリセカンドのディレイを挟む設定がある。対してlinux系のシリアル接続コマンドにそういった類のモノを知らない(単に自分が知らないだけの可能性もある) 。そこで、duckduckgo検索のサービスである「Duck.AI」に聞いてみた。自分の思いついた革新的なアイデアは大概は先人が既に思いついてる当たり前過ぎるモノというのはいつもの事であっさりと解決策を教えてくれた。
コメント
コメントを投稿