ラベル 6801 の投稿を表示しています。 すべての投稿を表示
ラベル 6801 の投稿を表示しています。 すべての投稿を表示

2026年2月18日水曜日

必要に迫られて自作したツールソフトの紹介(第5回)

 最近修正したソフトなどをいくつか紹介します


[1]クロスアセンブラ

以前公開した6809用のクロスアセンブラですが、使っていただいた方からcmpa #'z+1のアセンブル結果がCMPA #'Z+1のバイナリになってしまうというご指摘を受けました。

私はソースを常に大文字で書いていたので全く気付いていませんでした。ソースが小文字の場合は大文字に変換するようにプログラムしてあったのですが、大文字にすべきでない箇所も変換してしまっていました。

ということで、それを修正したクロスアセンブラ4種を公開します。他のMPU用のものにも同様の修正を加えました。

(1)6809AsmWin.exe Ver2.5
(2)6800AsmWin.exe Ver2.3
(3)6801AsmWin.exe Ver2.0
(4)6303AsmWin.exe Ver2.0

例として6809AsmWin.exeの動作画面を示します


6809AsmWin.exe


[2]FT-245カード他を使用する通信ソフト

FM-7, FM77, FM-11機に装着されたFT245通信カード、オプションまたは標準の8251A使用のCOMカード、68B50使用の拡張COMカードの3通信経路を使用して、FM機とWindows機との間で2D, 2DD, 2HDディスクイメージを転送するソフトです。

(1)Windows側

            ft245drv.exe Ver2.5

以前のものに通信経路を追加しただけでなく、対応機種にFM-11を加え、扱えるディスクにも2HDを追加しました。

動作画面です

Windows機上でのft245drv.exe

(2)FM-7/77/11側

   F-Basicでのメインプログラムと機械語サブルーチンのセットです

        1.FT245F, FTDRV22F    FT-245カード用です
        2.FT245C, FTDRV22C    オプションカードまたは標準のCOM(8251A使用) 用です       
        3.FT245E, FTDRV22E    68B50使用のExCOMカード用です

最初は上記3つの通信経路用を一つのプログラムにまとめて、動作中に切り替えることができるように作成したのですが、それぞれ専用のプログラムの方が使い勝手が良いということで別々のプログラムも作成しました。

  4.FT245A, FTDRV22A 上記1~3を統一したプログラムです

例としてFT245Aの動作画面を示します


FM機上でのFM245A

なお、転送速度ですが

FM機からWindows機への読み込みでは、およその値で
 2Dでは1が1分、2,3が5分、2HDでは1が2分、2,3が13分20秒
Windows機からFM機への書き込みでは、およその値で
 2Dでは1が1分、2,3が5分、2HDでは1が11分30秒、2,3が13分20秒
で、現在のバージョンでは2HDの書き込みに時間がかかりすぎています。


(3)動作確認した機種、F-BASICのバージョン、メディア

        ・FM-7、FM77AV2、FM77AV40SX
        ・F-BASIC V3.0、V3.3、V3.4
        ・2D、2DD、2HDディスク

以上紹介したソフトをOneDriveに置いておきますので、使用した結果、不都合が生じても私は責任は負わないということを承知していただいたうえで自由にご使用ください。


2024年11月15日金曜日

必要に迫られて自作したツールソフト(クロスアセンブラ)の紹介(第3回)

 必要に迫られて自作したツールソフトのうちのクロスアセンブラを手直ししました

【12月24日追記】12月22日のコメントでご指摘頂いた点を修正した版を公開します。末尾のリンク先からダウンロードしてください。

4月25日のブログ「必要に迫られて自作したアセンブラ等のツールソフトの紹介(第2回)」で紹介しましたソフトのうちのクロスアセンブラのバグを修正しましたので、公開します。

修正したバグはFCB疑似命令のオペランドの解釈部です。ごく普通の書き方をしていればよいのですが、時に、式の解釈を間違えたりする場合があったのです。

例えば、10月10日のブログ「自作の6809SBCにOS-9を移植する試み(その1 SBCの製作)」にも書きましたように、assist09をアセンブルした際に誤変換が発生したのですが、それはFCBのオペランドとして「'A」と「'A'」の両方の書式に対応するように修正したために発生したバグでした。

FCB疑似命令の解釈ルーチンは6809用、6800用、6801用、6303用の全てのクロスアセンブラに共通ですので、この際、まとめて修正することにしました。

この解釈ルーチンは、最初は単純な書式のみに対応したものを作成し、必要に応じて徐々に拡張してきたものでしたが、ちょっと複雑な形のオペランドはどうしても式として解釈する必要があります。現在のものの拡張では括弧を含めた式にも対応させるのは無理と感じましたので、思い切って全面的に書き換えることとしました。

以前、ちょっとした電卓プログラム的なものを作成したことがありましたので、それを手直しして使うことにしました。式中に「$AB」のような16進数や「’C」のような文字コードが入っても大丈夫で、もちろん括弧も使えます。


修正したクロスアセンブラによる結果

6303AsmWin.exeによるアセンブル中の画面を示します。
FCB疑似命令の処理ルーチンは他のアセンブラ全てに共通ですので、全く同じ結果になります。

6303AsmWin.exeでアセンブル


テストデータとして使用したのは下記のようなコードです。

テストデータ



アセンブル結果です。

6303AsmWinによる結果


0014行はFCBのみでオペランドがありませんので当然、エラーが出ています。
その他の行では、「’A’」や「’A」のような書き方が混在していても正しく変換されています。
下から2行目はassist09からの引用ですが、「',」という書き方でも正しく変換されていますので、それを最下行のようにあえて「','」のように書き換える必要がありません。
注意点ですが、FCBのオペランドですので計算結果が$FFを超えた場合の上位桁は無視されます。

ちなみにアークピットさんのX6801では以下のような結果になりました。

X6801による結果


計算結果のオーバーフローに対してはちゃんとwarningが出ています。

書式として「'A'」のように書くことになっていますので、「'A」のような書き方では誤変換してしまうのは当然なのですが、エラーメッセージが出ないので注意が必要です。


今までは6303用や6801用のクロスアセンブラは公開していなかったのですが、先日LILBUGをアセンブルしてみて、それなりに使えることが分かりましたので、公開することにします。修正した4つのクロスアセンブラ(6809AsmWin.exe, 6800AsmWin.exe, 6801AsmWin.exe, 6303AsmWin.exe)をOneDriveに置いておきますので、使用した結果については自己責任ということを承知していただいたうえで、自由にご使用ください。

【12月24日追記】クロスアセンブラの12月24日修正版をここに置きました。