6809用のクロスアセンブラやクロス逆アセンブラなどを紹介します
【10月2日追記】6800・6809逆アセンブラの修正版を10月2日にアップしました。
私は主に6809のプログラムを作成して楽しんでいますが、その中で必要に迫られて作成したいくつかのプログラムを紹介します。
基本的にWindows上でソースを作成し、自作したクロスアセンブラでアセンブルした後、生成されたバイナリを6809SBCなどの実機に転送して実行するという手順を踏んでいますので、必要なものは
(1)クロスアセンブラ、クロス逆アセンブラ
(2)実機への転送ツール
(3)ファイル形式の変換ツール
というわけで、10年ほどのあいだに6800用と6809用ののクロスアセンブラ、クロス逆アセンブラなどを制作してきました。(その他にも必要に応じて6801用、6303用のクロスアセンブラも作りました。)
プログラムのうちのいくつかは今までのブログで紹介してきましたが、その後もあれこれと修正を加えているものがありますので、ここでまとめて紹介します。
紹介するものは
(1)アセンブラ・逆アセンブラ
6809クロスアセンブラ 6809AsmWin.exe とクロス逆アセンブラ 6809DasmWin.exe
6800クロスアセンブラ 6800AsmWin.exe とクロス逆アセンブラ 6800DasmWin.exe
(2)転送ツール
転送ツールとして良く使用するのは仮想ドライブ構築ソフトです。それぞれのDOS(?)に合わせて4種類制作しています。
Flex9用のFlexDrvWin.exe
OS-9用のOS9DrvWin.exe
F-BASIC3.0用のFBasDrvWin.exe
CP/M-80用のCpmDrvWinFT.exeとCpmDrvWinRS.exe
(3)その他のツールソフト
フロッピィディスクイメージの形式を変換するソフトとして CvtDskD77.exe
バイナリファイルをBin, Hex, Mot形式に変換するソフト CvtMotHexBin.exe
以上のソフトのうち、CvtMotHexBin.exe以外はすべてVC++2019でビルドしています。
各ソフトの簡単な説明を加えておきます。
(1)クロスアセンブラ
ファイルを選択して「アセンブル実行」ボタンを押すだけですが、エラーだけを表示する機能やワーニング表示を止める機能などがあります。結果の保存形式はLST, BIN, MOT, HEXがあります。特長としてはローカルラベル機能があります。この機能を有効にすると、例えばLOOPのようなよく使われるラベルを複数箇所で宣言できます。
6809クロスアセンブラ |
6809SBCとの通信の様子 |
表示・操作面はすべて同じようですが、内部ではもちろん、それぞれのFMS(ファイルマネージメントシステム)に合わせて処理されています。
CpmDrvWin.exe |
D77, DSK, DAT間変換ソフト |
Bin, Hex, Mot間変換ソフト |
以上のソフトは、必要に迫られてここ10年ぐらいの間に制作したもので、特にアセンブラや逆アセンブラは標準的な構造など全く知らないのに自己流で作ったものですが、自分にとっては結構役に立っています。(たまに動作がおかしいと思った時などには他のアセンブラなどの結果と比較することがありますが、現在の版では問題がないと思っています。)
一応、6800用ではMikbug9, Mikbug20, TL1, TinyBasic(電大版)などがアセンブルできることを確認してあります。GAMEⅢでは1文字を「'」ではなく「"」で囲むという標準ではない書き方が多数ありますのでそれを修正(#”A”→#'A')する必要がありました。
6809用ではASSIST09のリストのミス(CPX→CMPX)と4箇所の#'(sp)を#'(sp)'のようにスペース後の「'」を追加することでアセンブルできました。
これらをOneDriveに上げておきますので、もし使用してみて動作がおかしいということがありましたらご一報いただけると有難いです。
【10月2日追記】6800/6809逆アセンブラの修正版を10月2日にアップしました。