2025年7月10日木曜日

FM-11用のFT245カードのドライバ作成に四苦八苦

 FM-11用のFT245カードがようやく完成しました

ミスを重ねて作り直していましたが、ようやく3作目で完成しました。

これが完成したFM-11用FT245カードです。


FT245カード

右側が本体の後方側で、コネクタの端から筐体の端までの間隔がそれほど大きくないので、基板上のUSBコネクタの位置を最初に作成したものよりもかなり下げてあります。

回路図を示します。

FT245 R3.3


基本的にFM-7系のFT245カードと同じですが、IOS信号の生成部を追加し、*EB信号を反転させています。


ハードはこれで良いとして問題はドライバソフトです。

FM-11AD2には2HDと2Dの2種のドライブが接続されていて、通信経路もこのFT245カードの他に内蔵COMポート(8251A)があり、さらに拡張COMポート(68B50)も追加しました。
そして、従来からFM-7でも使用しているFT245カードですので、FM-11だけでなくFM-7/77でも共通に使用できるドライバにしたいと考えました。

四苦八苦した挙句、これら全てに対応するドライバを作成してみました。

Windows側のft245drv.exeの画面です。
ディスク種別、OSの種類、通信経路が選択できるようになっています。
また、FM-7用では転送はDAT形式のみが可能でしたが、D77、DSK形式でもFM側に転送できるように拡張しました。


ft245drv.exe


FM側のソフトのメニュー画面です。
従来のドライブ、ディスク種別の選択の他に通信経路と動作機器を選択できるようになっています。


FM側のドライバのメニュー

ところが転送速度を確認してみると、FT245使用では2Dの転送が両方向とも1分弱、2HDではFM-11->Winでは2分弱と想定通りであるのに対してWin->FM-11では10分以上と極端に遅いのです。

SNDCH、RCVCHルーチンは今まで使用してきた実績のあるもので間違いがあるはずはありません。割り込み関係をいじってみたり、Windows側との間をハンドシェークにしてみたりとあれこれ試みても変わりません、、、

ハードに問題があるのかと疑って、前々回のブログで報告したFM-7用のカードをFM-11で使用するためのアダプタを使用して、FT245モジュール使用の初代を始め数枚のカードで試してみたり、配置アドレスを変更してみたりしましたが結果は同様でしたので、ハードの問題ではないようです。

現在のところ、3種の通信経路用のSNDCH、RCVCHルーチンを切り替えて使用しているのですが、その箇所が関係していることは分かっています。

切り替えルーチンは以下のようなものです。

 


動作時に希望の通信経路を選択するとIOPORTの値が0,1,2と切り替わり、それに応じてSETADRルーチンが実行されることでアクティブになるSNDCH、RCVCHが設定されます。 

このルーチンも今までに使用してきたものですので、このためにFMへの転送時間が大幅に増えることは全く納得できないのですが、これを外して直接呼び出すと、例えば2Dの転送で1分弱と正常な転送時間になるのですが、このルーチンを通すと4分30秒近くかかってしまうのです。

ということで、一本のドライバでまかなうことはできず、3種の通信経路毎に専用のドライバを用意しなければならないようですので、FT245用、内蔵COM0用、拡張ExCOM用とそれぞれのドライバを作成してみましたが、内蔵COM0と拡張ExCOM使用の場合は2DのFM->Winの転送に5分程度、Win->FMの転送ではその数倍の時間がかかるので実用的ではありませんでした。

結局、FT245専用のドライバと3種対応のドライバの2種のみとし、通常使用ではFT245専用のものを使用することとし、どうしても必要な場合にはCOM0やExCOMを選択できる3種対応のドライバを使用するというように使い分けることにしました。

さらに原因追及の必要があるとは思いますが、とりあえずF-Basic関係は一旦終了ということにして、OS-9のドライバの作成に取り掛かりたいと思います。

作成したWindows側のft245drv.exeとFM側のメニューソフトFT245FTと機械語サブルーチンFTDRV14FなどをOneDriveに上げておきます。これらのソフトはFM-11のみでなくFM-7や77でもそのまま使用できます。また、転送に使用するDATファイル形式とD77、DSKファイル形式間の変換ソフトも同梱してあります。

 

0 件のコメント:

コメントを投稿