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

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日修正版をここに置きました。


2024年11月8日金曜日

HD63C03YPを使用したシングルボードマイコンの製作

 HD63C03YPを使用したシングルボードマイコンを製作してみました

今年の2月頃にブログ「居酒屋ガレージ日記」の「行商(ジャンク品頒布)」のコーナーで、64ピンのHD63C03YPを6個もソケット付きで分けていただきました。ありがとうございました。

今までに「電脳伝説」のVintagechipsさんの6303SBCは製作したことがあったのですが、64ピンの6303は40ピンのものと何が違うのだろうという興味もあって、分けていただいたのを契機に製作してみることにしました。

データシートを読んでも、モード切り替えなど理解できていない点があったのですが、ネットの記事を参考にしたりしながらなんとか回路をでっちあげて基板を作成しました。

これが製作したHD63C03YPマイコンです。

HD63C03YPマイコン

その回路図を示します。

HD63C03YP R1.1


この回路図は、現在の基板のミスの修正と多少の変更を加えたものです。
また、4053Bによるポートの切り替え部はモード設定のつもりだったのですが、どうも不要だったようです。ということで、最小でMPU、ROM、RAMと1個のゲートICのみで構成できることになります。
メモリマップは、64KBのうちの下位32KBがRAM、上位32KBがROMで、必要なプログラムはROMに入れて使用するという前提です。(とりあえずは最上位の2KBにモニターを入れます。)

LILBUGをインストール

回路はできても問題はソフトです。まず、モニタープログラムが必要ですが、ハードが正常に動作するかが分からない状態でいきなり自作のモニターを入れるというわけにもいきませんので、とりあえず、回路の動作確認のためにLILBUGを入れてみることにしました。
(いずれは6303SBCに自作のモニターを入れたように、これにも自作のモニターを入れて操作性を統一するつもりです。)

LILBUGの英文マニュアルはネットで得られたのですが、ソースは見つからなかったので6303SBCを製作したときのソースを使わせていただきました。

他の方々はアークピットさんのクロスアセンブラX6801を使うことが多いようですが、私は以前作成してあったWindows上で動作する自作のクロスアセンブラ6303AsmWin.exeを使いました。残念ながらIF文には対応していないので、その部分は決め打ちする形に変更しましたが、他は変更せずにアセンブルしROMの27C256に焼いて装着しました。

最初は回路図のようにクリスタルとして最高速の12MHzを使用していましたが、ボーレートが適切な値にならないので9.8MHzに交換して19200baudでTeraTermと通信しています。
下図はダンプコマンドの実行例ですが、もちろん、書き込みも正常に行えました。


LILBUGが動作

無事にLILBUGが正常に動作したことから、ハードが正常に動作することが確認できましたので、次は6303SBCの時と同様に、自作の6802用モニターを改造してインストールする予定です。

終わりに

現在のところ、40ピンの6303との違いとして分かったことですが、アドレスラインとデータラインが独立していること、動作モードが一つしかないらしいこと、内部RAMはソフトの設定で無効にできるということぐらいです。

また、ちょっとした不具合ですが、パワーオンリセットが効きませんので、電源ON後にリセットボタンを押す必要があります。

以上、HD63C03YPを使用したマイコンを作ってみたという報告でした。

改めて、MPUとソケットを分けていただいた「居酒屋ガレージ日記」さんに感謝いたします。


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で同じ操作性のモニターが動くことになりました。(使われる方がどれだけあるのかは疑問ですが。。。)