2025年7月30日水曜日

FM-11に2Dや2HDドライブとしてPC用のドライブを増設した結果

 FM-11AD2に2Dや2HDドライブとしてPC用のドライブを増設してみた結果です

FM-11AD2にPC用のドライブを増設して、2Dドライブ(320KB)、2HDドライブ(1MB)として使用してみました。

PC用ドライブを接続する前には、2DとしてYD-625を、2HDとしてYD-180を接続していましたが、現在は画像のように、2D用として2台、2HD用として1台のPC用ドライブを使用しています。
右の1台が2HD、左の2台が2Dとしての使用で、ドライブは右からD353T5、FD-235HG、MPF920です。


増設したPC用ドライブ3台


PC用ドライブを増設するまでの経過


入手したAD2に標準搭載されていたドライブは2HDが2台のみでしたので、このままでは今まで使用してきたFM-7、FM77AV2、FM77AV40SXそしてWindowsPCとの間でデータ交換するのが非常に不便です。

そこでまず2Dドライブを増設することを考えて、大胆にもFM-7用のFDCカードをアダプタを介して装着してみましたが、もちろん動作しませんでした。

ブログ「FM-11にFM-7等のカードを装着するためのアダプタを作成 2025/06/04 (https://www.blogger.com/blog/post/edit/1662007451717538019/264779242327682535)」

結局、知人から頂いた2Dドライブ増設ボードで無事に2Dドライブを増設することができました。ただし、この時に正常に動作したのは5インチ2Dのみで、PC用の3.5インチドライブは不完全な動作でした。

FT245カードも作成してWindowsPCとのデータ転送もできるようになりましたので、自分なりに使えるようになったと思っていましたが、メインの2HDドライブの5インチはヘッドロード音が大きく、しかもメディアを頻繁に叩く(!)のが心配で、できれば3.5インチをメインにしたいと考えました。

まず最初に、内蔵FDインターフェースボードから2台のFDDへの接続ケーブルを延長して外部に2HDドライブを接続してみました。
しかし、内蔵ドライブと同じ2HDのYD-180を接続したにもかかわらずドライブが動作しません。ドライブの設定をあれこれ変えてみたりしましたがダメです。

結局、オシロを持ち出してFDDへの信号を観察した結果、何と、インターフェースボードの34ピンコネクタにはドライブセレクト信号が0と1は出ていましたが2と3の信号は出ていないのです。

ということで、内部の34ピンコネクタからの増設は諦めて、背面に出ている50ピンのアンフェノールコネクタを使用することにして、各ピンの信号を調べました。
内部の34ピンとの対比や入力信号を受けている74LS14や信号出力のMB433(7438相当)の各ピンを調べましたが、どうしてもドライブセレクト2や3のピンが分かりません。

調べたピン配置は下記のようです。


ピン配置の調査結果(未完成)

ドライブセレクト信号2と3はピン18, 19ではないかと予想しましたが、良く分かりません。

そんな時に知人からパソコンワールド誌(1988年11月号)の記事を紹介していただきましてようやくピン配置が判明しました。


パソコンワールド誌より

私が調べたものとはドライブセレクト信号のピン配置と異なりますが、これに合わせてケーブルを作成しました。

増設ドライブ用ケーブル

これはPC用の3.5インチドライブ用で、34ピンコネクタの先にはドライブ番号変換用のアダプタが接続してありますが実際にはアダプタを外して、この先に5インチドライブ用の延長ケーブルを接続しています。

最初はFDDのドライブ番号を2にしたのですが認識せず、ドライブ0として無事に動作しました。番号の割り振りが増設ドライブ0と1ということのようです。(FM-11からはドライブ2として認識しています。)

最終目的であるPC用3.5インチドライブを接続するために使用したドライブは34ピンのディスクチェンジ信号をReady信号に置き換える改造を施したものです。なお、この改造に当たっては「試運転の資料館(https://shiuntenlos.ie-yasu.com/98ma0050.htm)」を参考にしました。ありがとうございます。

さらに、当初は上記のようにドライブ番号を0にするためのアダプタを使用していましたが、ドライブによっては0オーム抵抗の付け替えでドライブ1から0に変更できることがわかりましたので、その変更も行っています。使用したドライブはTEACのFD-235HG、ミツミのD353T5、SONYのMPF920です。

参考までにFD-235HGとD353T5の改造結果を示します。


FD-235HG改造箇所


D353T5改造箇所


増設した結果


以上の経過の後、PC用ドライブをFM-11に接続できたわけですが、現在のところ判明している不具合は以下の通りです。

(1)2HDドライブ

 F-Basic5.0ではドライブ2として正常に動作していますが、OS-9Level2では/ND2として認識するものの、何故かフォーマットができません。

仕方がないので、F-Basic5.0で初期化した後、F-Basic上でFT245を用いてWindowsPCからOS-9システムディスクのイメージを転送しました。その後はdirでファイルが一覧表示されますし、コマンドを実行することもできました。

(2)2Dドライブ

 以前の報告にも書きましたが、StepDoublerアダプタを介すると正常に動作しません。直に接続すると2Dドライブとして正常に使用できますが、本来2DDドライブですのでメディアの半分しか使用しておらず、FM-7系の2Dメディアとは互換性がありません。ということで、FM-11の2Dドライブ専用のメディアとして使用することになります。


2025年7月29日火曜日

FM-11用に作成したRTC_COMカードをFM-7/77用に移植

 FM-11用に作成したRTC_COMカードをFM-7/77用に移植しました。


FM-7用には以前、RTC_SDカードを作成して使用してきました。
(ブログ「FM-7にRTCとSDを接続する試み(2023年3月9日~5月19日の計6回掲載)」で紹介。)

しかし、カードを筐体の中にセットする機種ではSDの挿入・取り外しが非常に不便でしたので、常用しているFM77系には不向きということでFM-7でのみ使用してきました。
今回、FM-11用を作成する際にはそれを考慮してSDカード用の回路を取り除き、代わりに6850ACIAを用いた通信ポートを設けることにしました。RS232Cを持っている機種もありますが、別途通信ポートがあると便利な場合があると考えたからです。

実際にFM-11用を作成してみて、FM-7系にもあったら良いなと思えてきましたので、FM-7系用として32Pスロットに装着する形でのカードを作成しました。

これが作成したカードです。

FM-7用RTC_COMカード


いつものようにドジをしましたので、基板の修正(パターンカット1箇所、追加配線2本)が必要でしたが、修正して無事に動作しました。


裏面の修正箇所


回路図を示します。
上記の不具合を修正してあります。


回路図(修正済み)



(1)RTCモジュールのドライブソフト


ドライブソフト(RTC_RD2, RTC_WR2, RTC_SET2)はFM-11のF-Basic用に作成したものがそのまま使えます。RTCの時刻の読み出しにはRTC_RD2、RTCへの時刻の設定にはRTC_WR2、F-Basicへの時刻の転送にはRTC_SET2を使用します。

また、F-Basicと並んで良く使用しているOS-9Level2用にも同じ機能の3つのソフト(RtcRd2, RtcWr2, RtcSet2)を作成しました。実際には、F-Basic用に作成したものをOS-9用に移植したということですが、OS-9ではファイル名に「_」を使えないので名称も変更してあります。

F-Basicでの動作の様子は以前のブログで示していますので、ここではOS-9上での動作の様子を示します。
OS-9の起動直後は日付・時刻の設定がされていませんので(バッテリーが上がっている)、date t コマンドを実行するとデタラメな日付・時刻が表示されています。
ここでRtcWr2コマンドを実行して日付・時刻を設定します。このコマンドはRTCモジュールに設定すると同時にOS-9にも設定しますので、再度date tを実行すると設定した日付・時刻になっていることが確認できます。
(2000年問題に対処していないので2025年が1925年になっているのには笑えますが、実用上の不便はありません。)
 

RtcWr2の動作画面


一旦電源を落としてから再度起動すると、やはり日付・時刻がデタラメになっていますが、RTCモジュールはバッテリーバックアップされていますので、設定した値が保存されています。ここでRtcSet2コマンドを実行すると、RTCモジュールに保存されている日付・時刻がOS-9に設定されます。date tでそれが確認できます。



RtcSet2の動作画面


ということで、OS-9のStartupファイルにRtcSet2コマンドを書き込んでおけば、起動時にRTCモジュールの値でOS-9の日付・時刻を設定してくれます。

なお、RtcRd2コマンドは動作画面を示しませんが、RTCモジュールに設定された日付・時刻を読み出して表示するものです。


(2)ExCOM用通信ソフト


COMポートとして追加した6850ACIA(63C50を実装)用の通信ソフトですが、以前のブログにも書きましたが、何故かFT245、8251A、6850の3つの通信経路を一本のソフトで切り替えて使用する方法ではうまく動作しませんでしたので、FM側のソフトをそれぞれを単独のソフトとしFT245DRF(FT245用), FT245DRE(6850のExCOM用)の2本を作成しました。Windows側のソフトはFM-7/77/11に共通のft245drv.exeです。

FT245DRFは従来のソフトと同様ですので、ここではFT245DREの動作画面を示します。


FM側のFT245DREの動作画面(読み込み)



FM側のFT245DREの動作画面(書き込み)



Windows側のft245drv.exeの動作画面


なお、転送速度ですが、FT245カード使用では2Dディスクで1分弱、ExCOMでは5分ほどでしたので、ディスクイメージの転送に使用するのは実用的ではありませんが、このExCOMは以前からFlex9, F-Basic, OS-9, CP/Mで使用しているWindows上の仮想ドライブとのインターフェースに使用したいという目的のために実装したものです。
この場合には、ファイルの送受信が基本になりますので、ExCOMの38400baudでも十分に実用になることを経験しています。
ExCOMを使用したWindows上の仮想ドライブのドライブルーチンができましたら、改めて報告させていただきます。


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ファイル形式間の変換ソフトも同梱してあります。

 

2025年7月3日木曜日

FM-11用のRTC & COMカードが完成

 FM-11用のリアルタイムクロック(RTC)と拡張COMを作成しました

OS-9やFlex9の起動時には日付・時刻を入力する必要があり、結構面倒です。またF-Basicの場合にも、日付・時刻を必要とする場合には直接入力する必要があります。

ということで、FM-7用に作成してあったRTC_SDカードのRTC部をFM-11に移植することにしましたが、SDカード部を省いたために空いたスペースに68B50(ACIA)を増設して38400baudのCOMポートを増設しました。本体内蔵の8251A使用のCOMポートの通信速度が19200baudなので、その倍の速度のものが欲しかったということでもあります。

移植そのものはFM-11のコネクタに出ていないIOS信号の生成部を追加するだけで良いのですが、EB信号とQB信号が*EB, *QBと反転していることを見落としていたために最初は動作しませんでしたが、その点を修正することで正常に動作しました。(ということで、基板を再発注することになってしまいました。。。)

これが再発注した基板で完成させたRTC_ExCOMカードです。使用しているRTCモジュールはクロックタイムIC  DS3231を使用したZS-042というもので、5Vで動作するので使いやすいです。(バッテリーはCR2032なので充電回路部はカットしてあります。)これを68B21(PIA)を介してI2Cで制御しています。



RTC_ExCOMカード


回路図を示します。


RTC_ExCOM R1.1


まずはCOMポートのテストをしてみました。画像右端の6ピンコネクタからTTL-USB変換ケーブルを使用してWindowsPCに接続します。FT245カード用のドライブソフト(FM側、Windows側)を拡張して、FT245、内蔵COM(8251A)に加えて拡張COM(68B50)も使用できるようにして実行してみました。結果ですが、転送時間は内蔵COMポートの場合とほとんど変わりませんでした。ちょっとがっかりでした。

続いてRTCのテストをしました。FM-7用のドライブソフト(RTC_WR, RTC_RD, RTC_SET)はF-Basic3.0の内部ルーチンを使用していましたので、それをF-Basic5.0のDisplay Sub System中のSET TIMER, READ TIMERに置き換えました。また、FM-11の時刻関係のワークエリアが不明なので困っていましたが「Retro PC Gallery」(http://haserin09.la.coocan.jp/)のはせりん様から、FM-7と同じだと教えていただきましたので、無事にFM-11用のドライブソフトを完成させることができました。ありがとうございました。

作成したRTC_WR2, RTC_RD2, RTC_SET2はF-Basic5.0用の機械語プログラムで、RTC_WR2でZS-042に日付・時刻を設定し、RTC_RD2で設定されている値を読み込み・表示します。RTC_SET2はZS-042に設定されている値を読み込んでF-Basicのワークエリアに設定するもので、起動時に自動的に設定させたい場合にSTARTUPに書き込んで使用します。


参考までにRTC_WR2のアセンブルリストを示しておきます。68B21(PIA)のポートAを使用してI2CでDS3231をコントロールしています。68B21のポートAは入力に設定したままで出力もできるのでこのような入出力が同じポートで行なわれるような用途には適しています。


 


 
参考までに作成したRTC_WR2, RTC_RD2, RTC_SET2をOneDriveに上げておきます。
機械語プログラムでI2Cを使用するサンプルとしてみていただければと思います。