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

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に置いておきますので、使用した結果、不都合が生じても私は責任は負わないということを承知していただいたうえで自由にご使用ください。


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

 

2022年6月22日水曜日

FT245通信カードとRAMディスクカードの合体カードの製作

 FT245カードとRAMディスクカードを合体させてみました

以前、秋月電子のFT245モジュールが品切れだった時期があり、それならという事で代わりにFT245RLチップを使ったカードを試作してみたことがあります。

それについては4月2日のブログ「FT245高速通信カードの改造の試み」で紹介しましたが、その試作機は秋月のFT245モジュールの回路をそのままそっくりプリント基板に実装したものでした。しかし、USBから電源を取る必要はないなど、不要なパーツを省くことで回路を簡単化できそうでした。

製作してみると、スペースに結構余裕ができましたので、これならさらに回路を追加することができるのではないかということで、表面実装のSRAMを用いればRAMディスクの回路を入れることができるのではと思いつきました。

それまではFM-7の32PスロットにはFDCカード、FT245通信カードの2枚が刺さっていましたので、RAMディスクカードを使う際には自作の32Pスロット拡張基板を使用していました。しかしFT245通信カードと512KBのRAMディスクカードを一枚に合体させれば、FM-7本体だけで収まることになり使い勝手が向上します。

ということで製作したものが下画像のカードです。今までのFT245カードや512KB RAMディスクと同様、TTL ICには74LSを使用しています。


試作第1作(74LS使用)

回路はどちらも実績があるものですので、配置に多少手間を掛けただけで完成しました。回路的には74LSだけでなく74HCも使用できるので、バッテリバックアップ機能の向上を期待して、全てのTTL ICを74HCにしたものも製作してみました。

USBコネクタとしてminiとmicroの両方を実装したのはどちらの接続ケーブルも使用できるようにするためです。上部に見えるスライドスイッチはFM-7からWindowsへの転送時にTXEフラグを読むか読まないかを切り替えるものです。(ソフトでの対応が必要です。)

実装としては、USB microコネクタの取り付けに最も苦労しました。0.65mmピッチのFT245RLチップはそれほど大変ではありませんでしたが、それよりも1.27mmピッチのHM628512の方が大変でした。ハンダの乗りがチップによって異なるようです。


74HCでの製作品


裏面

ドライブソフトはFT245通信カード用、RAMディスクカード用のそれぞれがもちろん使用できますが、両カードの開発者の「思い付きハードでソフトに七転八倒」さんが統合したものを制作されています。


2022年5月18日水曜日

拡張ROM/RAMディスクボードと仮想ドライブ用のF-BASICドライバ

ROM/RAMディスクボード用の接続ケーブルを製作し、ドライバも改良しました 

今まで拡張ROM/RAMディスクボードを使用する際には、32P拡張スロット基板を経由して使用していました。



通常の接続形態

しかし、いつもいつも32P拡張スロットが必要なわけでもないので、拡張ROM/RAMディスク基板を直接FM-7や77に接続して使用しようと考えました。

そのために製作したのがこれらの接続ケーブルです。


製作したFM-7用、FM77AV2用のコネクタ


左のMILコネクタがFM-7用、右のアンフェノールコネクタがFM77AV2用で、このように接続して使用します。


FM-7に装着


FM77AV2に装着


これで拡張ROM/RAMディスク基板を直接本体に接続して使用できるようになりました。

ボード上のシリアルポートからTTL-USB変換ケーブルでWindowsPCに接続すれば、このボードのみでWindowsPC上の仮想ドライブも使用することができます。(もちろん、RS232CカードやFT245カードも使用できます。)ROM/RAMディスクと仮想ドライブの切り替えは専用ソフト RRWCHG で行います。RAMディスクを使用する際には、最初にフォーマットプログラム RAMFMTFB で初期化します。


RRWCHGによる切り替え


RAMFMTFBによる初期化


使用するドライバソフトですが、下図にありますように、今までに紹介したドライバソフトを改良したものを使用しています。




FM側のソフトが3つに分かれているのは、常駐部があるので少しでもサイズを小さくするためで、それぞれ専用ソフトになっています。なお、以前にも書きましたがFM側の常駐型のソフトの制作にあたっては、轍名聡氏による「裏RAMディスク」(Oh!FM誌1984年11月号)を参考にさせていただきました。感謝いたします。

WindowsPC側はいずれの場合も同じソフト FBasDrvWin.exe で、以前紹介しましたようにiniファイルでシリアル用とFT245用を切り替えます。


ROM/RAMディスクボードがない場合でも

また、上図で分かりますように、拡張ROM/RAMディスクボードがない場合でも、FM-7/77用のRS-232CカードかFT245カードのいずれかがあれば、FM側の WINDRVU7(またはRDSKWINF) とWindowsPC側の FBasDrvWin.exe をインストールすることでWindowsPC上の仮想ドライブを使用することができます。


FBasDrvWin画面(以前紹介したものです)


これらのソフトの中には以前と同じものもありますが、まとめてOneDriveに上げておきます。なお、FM側のソフトはバイナリだけでなくソースも含めてありますし、入力用の補助プログラムも用意してあります。




2022年4月2日土曜日

FT245高速通信カードの改造の試み

 秋月電子のFT245モジュールでなくFT245RLチップを使ってみました

一時期ですが秋月電子でFT245モジュールが欠品だったこともあり、また、モジュールを使わなければもっとコンパクトになるのではないかと思って、モジュールではなくチップを使ったカードを試作してみました。

モジュールをチップに置き換えるだけならわざわざ基板を起こす必要はないのですが、

(1)今までDIPのICのみを使用してきたが、表面実装部品を使ってみたい。

(2)PCとの接続ケーブルでmini-USBコネクタではなくmicro-USBコネクタを使いたい。

(3)回路を変更する実験をしてみたい。

のような意図もありました。

(1)ですが、最近はDIPのICよりも表面実装部品を使う方が作りやすい傾向もありますので、ここらで表面実装部品に慣れておきたいということです。

(2)ですが、最近はmicro-USBコネクタの方が普通になっているように感じています。

(3)ですが、FM-7からWindowsPCへの通信時に、WindowsPCの準備ができていない時でもFM-7がデータを送り出してしまうので、これを何とかしたいという事でFT245RLのTXEをフラグとしてチェックする形式に変更することを考えました。


表面実装部品を使うのは初めてなのでネットで情報を集めてみると、アマチュア的にはヒートガンかホットプレートを使用するのが普通のようですが、先日、基板から部品を外すためにPOT-21Cという小型ハンダ槽を購入したので、これを使えばホットプレートの代わりになるのではないかと考えて試してみることにしました。

これが入手した小型ハンダ槽です。温度は500℃まで上げることができます。小さな部品はもちろん、40Pコネクタ程度の大きさのものなら、数秒であっさりと基板から外すことができます。


小型ハンダ槽
ハンダ


このハンダ槽の上に5mm厚のアルミ板を載せて、ホットプレートの代わりにするというわけです。まずは左下のmini-USBコネクタと小さなフェライトインダクタ(FB)をクリームハンダを使用してハンダ付けができるかどうかを試してみました。
温度を400℃に設定し、クリームハンダを塗った上に部品を載せた基板を置いてみました。
結果ですが、1608サイズのFBは綺麗にハンダ付けされていました。しかし、USBコネクタはFBよりも熱容量が大きいせいか仕上がりが不十分だったので、後で半田ごてで補修しました。




次にメインであるFT245RLのハンダ付けに挑戦しました。温度を350℃に下げて、クリームハンダを塗ってICを載せて置いてみました。
結果ですが、うまくハンダ付けはできませんでした。350℃に下げたのが原因だったようですが、400℃に上げる勇気はなかったので普通にはんだごてですることにしました。
ホットプレートを使用する場合は蓋をするので、カップのようなものをかぶせるとうまく行くのではないかと思っています。次回挑戦する際には蓋を用意してやってみます。



FT245RLをハンダ付け


できあがったのが下の基板です。
追加のリード線が見苦しいですが、これは何とFT245RLのGNDを結線し忘れていたためです...(相変わらずドジばかり...)


完成した基板

とりあえず、ICの細い足に何とかリード線をハンダ付けして動作させることができました。
(SSOPですので0.65mm間隔の足にハンダ付けするのは大変でした...)

以上は元のFT245モジュールを使用した回路をそのままFT245RLに置き換えただけなので、ポリヒューズなどの余計な部品が載っていますが、電源をFM-7から取るようにすれば部品をいくつか省略できます。

次に回路の変更ですが、74LS244の15ピンに接続されているFT_DB6をカットして、代わりにFT245RLの22ピンのTXEを接続するだけです。
つまり、データのbit7がRXFであるのに加えてbit6をTXEにして、ソフトで読めるようにするわけです。

実は、もう既に既存のカードを改造し、それに対応してソフトも変更してありました。そのカードが下の画像のものです。LS244の15ピンを抜いてTXEに接続してあります。


DB6をTXEに変更したカード


ソフトの変更ですが、FM-7が受信する場合にはbit7(RXF)をチェックしてLowになったらデータを受信しているのと同様に、送信する場合にはbit6(TXE)をチェックしてLowになったらデータを送信するように変更することになります。

改造の結果

(1)表面実装部品を使ったおかげで、基板にかなり余裕ができましたので、上手く設計すれば他の回路も同居させることもできそうです。
(2)USBコネクタもmini-USBとmicro-USBの両方を搭載しても余裕です。
(3)FM-7からの送信時にもフラグをチェックするように変更してみたわけですが、実際にはそれ程のメリットは感じられませんでした。むしろ、何かの原因で通信経路の不調が生じた場合にハングアップ状態になってしまうのはデメリットかもしれません。


ということで、次回製作予定のプリント基板は下図のように切り替えスイッチを付けてどちらのモードでも使えるようにしようと思っています。


次回製作予定の基板


今回、初めて表面実装部品を使用してみましたが、フェライトビーズは問題なくハンダ付けができたので、同様な形であるRやCなどもこのような方法でできそうです。あとはもう少し試行錯誤しながらICなどの部品もハンダ付けできるような条件を見出したいと思います。


2020年12月11日金曜日

Ndittを使用しないでGOTEK用のHFEファイルを作成する(その3)

 

ついに実用レベルの高速化を実現できました


前々回(その1)のブログでFDをイメージ化するのに「思い付きハードでソフトに七転八倒」さんが製作されたFT245RL使用の高速転送カードを使用できればもっと速くなるだろうと書きましたが、実際に2Dディスク(320KB)でわずか1分という、RS232Cカード使用の場合の10倍ほどの高速化を実現することができました。

使用したFT245カードは、FT245RLモジュールの他にはTTL-ICがわずか5個という簡素なものですが、その速さには目を見張るものがあります。




FM-7側のソフトはもちろん、「思い付きハードでソフトに七転八倒」さんがハードに合わせて作成されたものをそのまま使用させていただきました。
WindowsPC側のソフトは、とりあえずの間に合わせで私が作成したものを用いました。




使用法


(1)Windows側でmkd88img.exeを起動し、Port Noと保存ファイル名を指定して「データ受信開始」ボタンを押します。
ステータスバーに Data receive start ... が表示されて、データ受信待ち状態になります。




(2)FM-7側でLOADM”RDFDIMG",,RでRDFDIMGを起動します。
プログラムサイズは243バイトで$6800からに入り、実行開始アドレスは$6850です。デフォルトではドライブ0が指定されていますが、アドレス$6856の0を希望のドライブ番号に変えることで他のドライブも読めます。
Windows側では、track no = nn のように、読み終わったトラック番号が表示されます。




(3)40トラックの読み込みが終了すると(track no = 39はほとんど見えません...)、続いてDSKファイルとD88ファイルの作成に進みますが一瞬で終了します。



2つのファイルが作成されると DSK, D88 file created. が表示されて処理が終了します。
そのまま、別のFDの処理を続けることもできますが、同じファイル名のままだと重ね書きになります。

Windows上にD88形式のイメージファイルが作成できれば、後は、8月9日のブログ「FM-7/77にGOTEKを接続する」に書きましたように、HxCFloppyEmulator.exeを用いてD88ファイルをHFEファイルに変換してUSBメモリに書き込むだけです。

使用感など


ディスク一枚が1分で処理できるのは結構実用的ではないでしょうか。
私はこれを用いて手持ちのF-BASICの2Dディスクを全部読み込んでイメージファイル化してみましたが、それ程の手間ではありませんでした。

最後に


NDittを使わずにFM-7自身でFDを読んでそのままWindowsPCに転送することでイメージ化できないかという着想から始まった試みでしたが、WindowsPCへのデータ転送にRS-232Cを用いた場合はFD1枚に10分もかかり、出来ないことはないが普段使うツールとしては非実用的といえる結果となりました。
そんな時に、FT245基板を製作された「思い付きハードでソフトに七転八倒」の秋田さんが趣旨に賛同してFM-7側のFD読み込み・転送ソフト RDFDIMG を作成してくださいました。
これによってFD1枚のイメージ化が1分でできるようになり、実用的なツールになりました。

ということで、「FM-7側ソフト担当:秋田さん(企画の賛同者)、Windows側ソフト担当:私(企画・仕様設計)」という合同作品となりました。

使用したRDFDIMG(「思い付きハードでソフトに七転八倒」の秋田さん制作)とmkd88img.exe(拙作)をOneDriveに上げておきます。
なお、RDFDIMG にはFM-7からWindowsへの送信ルーチンだけでなく、Windowsからの受信ルーチンも含まれていますので、更なる用途も考えられると思います。

2019年8月26日月曜日

FM77用の拡張I/Oボード、ROM/RAMディスクボードのプリント基板化が完了

6月12日のブログで紹介しましたFM77用の拡張I/Oボード、ROM/RAMディスクボードのプリント基板が完成しました


拡張I/Oボードの方は比較的単純な回路なのですが、ROM/RAMディスクボードはソフトに合わせて回路をかなり変更したのに、変更記録を完全に取っていなかったこともあり、製作時の記憶をなかなか思い出せず、KiCadの回路図に起こすのにかなり苦労しました。

例によって、勘違いによるミスもあり、修正を余儀なくされましたが、そう大きな修正でもなく何とか修正できました。
今回のミスで最大のものは同じピン数のコネクタで番号配置の異なるものを部品指定してしまったので、配線がでたらめになってしまったことでした。

でも、格安基板の10cmx10cmまでというサイズに収めるためにかなり無理をしましたがなんとか収まったので良しとします。

制作した基板を示します。
右が拡張I/Oボードで、左がROM/RAMボードです。

右:拡張I/Oボード、左:ROM/RAMボード

下画像のように2枚を重ねた状態で使用できます。


重ねた状態

それぞれの基板の回路図を示します。

拡張I/Oボード


ROM/RAMボード


それぞれの基板の部品配置です。
(1)拡張I/Oボード
FM77AVの拡張ポート(アンフェノール50P)に接続します。基板上の68B21にはAE-FT245RL、68B50にはAE-FT232RLとMAX232が接続されており、他に68B40(PTM)があります。(AE-FT232RLとMAX232は排他使用です。)


拡張I/Oボードの部品配置

(2)ROM/RAMボード
68B21を1個のみで4MbitのROMとRAMを制御しています。
ROMとRAMのペアが2組あり、それぞれスイッチで切り替えます。私はFLEX9システムとOS-9システムとで使用しています。RAMはバッテリバックアップされています。


ROM/RAMボードの部品配置

私の使用機器はFM77AV40SXなので、拡張ポートはアンフェノール50P ですので、途中で50Pフラットケーブルに変換して接続しています。
基板の入力を50Pフラットケーブルにしたのは、FM-7でも使用できるようにと考えたからですが、残念ながら、FM-7の拡張ポートには2.5MHzのクロックが出ていませんし、ピン配置等も異なりますので、そのままでは接続できません。
むしろFM-7の場合には、32Pの拡張コネクタの方が必要な信号が揃っていますので、こちらに接続するべきかもしれません。


左がFM77からの50Pケーブル、右がWindows機へのUSBケーブル

これらの基板のみで使用する場合は、本体のドライブが0と1で、ROMがドライブ2、RAMがドライブ3という形で使用することになります。
FLEX9やOS-9のディスクドライブルーチンをフックして、ドライブ番号が2と3の時のみROMやRAMをアクセスするように切り替えるルーチンを追加します。

さらにWindows機上の仮想ドライブを使用する場合には、ドライブ3や2を仮想ドライブに切り替えるルーチンを使用します。使用するFlexDrvWin.exeは以前公開したものがそのまま使えます。

現在は、F-BASICでも使用できるように、FbasDrvWin.exeを作りましたので、F-BASIC側のディスクドライブルーチンをフックするプログラムを作っているところです。



[蛇足]+++++++++++++++++++++++++++++++++++++++++++++
手持ちの過去の製作物でプリント基板化したいものとしては、もう一つ、数十年前に製作したFM-7用のFDD基板があります。


MB8877A使用のFDD基板(表面)

長い間、この基板の先に5インチ2台と3.5インチ2台のフロッピードライブを計4台接続して使用していました。

同(裏面)

今となってはドライブも処分してしまいましたし、特にプリント基板化して製作する必要もないのですが、捨てるのもためらわれるので未だに手元に置いてありますので、プリント基板化して資料として保管しておいた方が良いかなと思うわけですが、迷っている理由が2つあります。
(1)ICが20個もあるので格安基板の10cmx10cmには収まりそうもないのでコストがかかりそう。(恐らく12cmx8cm位になりそう)
(2)昔の製作物なのでデータセパレータとして、アナログでなくデジタルセパレータのFDC9216Bを使用しているので、現在のものよりも性能は落ちる。(特に不都合はないが)
ということで、FDC9216BとMB8877Aは予備も複数保管してあるのですが、KiCadで回路図を書き上げたところで止まっています。
アイディアとしては、現在普通に出回っているパソコン用の3.5インチFDD(2DD,2HD)をFM-7で使用できる基板にすれば使い道があるかなと。STEP信号を2倍にする回路を付加すればできそうな気がするのですが、まだきちんと追及していません。



2019年6月12日水曜日

FM77用の拡張IOボード、ROM/RAMディスクボード

FM77用の拡張ボードを紹介します


最近はソフトの手直しばかりで、とりたてて紹介するものがありません。そこで、以前製作して今でも使用しているFM77用の拡張ボードを紹介します。
このボードのために制作した、Windows上で仮想ドライブを実現するソフトFlexDrvWin.exeがこのブログのシングルボードマイコンを製作するベースとなったと言えるものです。

製作したのは、FM77AV40SX用のIO拡張ボードとROM/RAMディスクボードです。
私はFM77AV40SXでFLEX09とOS-9Level2を使用しているのですが、2DDフロッピーはかなり遅く、また、ドライブもメディアもいつまで使えるのかも分かりませんので、何とかFDDと縁を切りたいと思っていました。

色々と考慮した結果、手持ちのFM-7とFM77AV40SXに共通して装備されている50ピンのIO拡張コネクタを利用して、まずIO拡張ボードを作り、それに接続する形のROM/RAMディスクを製作することとしました。

製作したIOボードとROM/RAMボードを下に示します。

下がIO拡張ボード、上がROM/RAMボード

上部の空ソケットには512KBのSRAMを装着してRAMディスクとして利用していましたが、後述のようにWindows上の仮想ドライブに切り替えたので不要となりました。

左がIO拡張ボード、右がROM/RAMボード

今では、こんな配線をする気力はもうないかも...

それぞれの裏面配線の様子



ROM/RAMボードの構成を下に示します。
RAM/ROMボードの構成


6821によるROM/RAMディスクのアクセス方法を下に示します。
6821によるTrk,Sct番号のセット方法


IO拡張ボードには、6821PIA、6850ACIA、6840PTMが搭載してあり、6850にはRS-232Cシリアルインターフェースが、6821にはFT-245パラレルインタフェースが接続してあります。どちらも38400baudです。
ROM/RAMボードには、512KBのROMとRAMのペアが2組あり、それらを6821PIAが制御しています。RAMはバッテリバックアップしてあります。
ROM/RAMディスクの容量は
 4Mbit(512KB)では Trk 64、Sct 32 で(64-1)*32=2016セクタ
 2Mbit(256KB)では Trk 32、Sct 32 で(32-1)*32=  992セクタ
 1Mbit(128KB)では Trk 16、Sct 32 で(16-1)*32=  480セクタ
となります。

2組あるのは、FLEX09用とOS-9用で、それぞれをスイッチで切り替えて使用します。
(端にあるソケットはROMライターですが、未完成です。)

記録を見ると、2014年12月末から作り始めて2015年3月初めにハードは完成していますが、実用になる制御ソフトの完成には年末近くまでかかっています。

最初はROM/RAMディスクとして使用


FLEXでは実質4台までしかドライブが接続できないので、
ドライブ0:内蔵ドライブ0
ドライブ1:内蔵ドライブ1
ドライブ2:ROMディスク
ドライブ3:RAMディスク
として利用することになります。
内蔵ドライブ0のシステムディスクで起動し、その後、システムドライブを2に、ワークドライブを3に切り替えれば、フロッピーを使用せずに済みますので、結構快適になりました。

最初はシリアル/パラレルのインターフェースは実装していなかったのですが、ROM/RAMディスクのみでは結局、データ保存にフロッピーが必要なので、Windows上の仮想ドライブも追加することにしました。
FT-245モジュールを搭載しているのは、Windows上の仮想ドライブとパラレルインターフェースで通信したかったからで、作る前は、シリアルインターフェースでは遅くて実用にならないからパラレルでと思っていたのですが、実際に製作してみると、確かに転送速度は10倍以上違うのですが、DISKの読み書きに時間がかかるのでトータルの時間は少し速い程度であると分かりましたので、現在はシリアルも使用しています。

その時に制作したのが、6809シングルボードコンピュータでWindows上の仮想ドライブを実現しているFlexDrvWin.exeというソフトの原型で、このソフトのドライブ3にDSKファイルをセットすればFM77AV40SX上のFLEX09で読み書きできます。(OS-9の場合は別ソフトのOS9DrvWin.exeを使います。)

ドライブ3をRAMディスクからWindows上の仮想ドライブに変更


動作中の様子を示します。
手前がFM77AV40SXのディスプレイとキーボード、後方がWindows機です。
後方右上のWindows上のFlexWinDrvの画面で分かるように、ドライブ3にセットした仮想ディスクを読んでいます。


動作中の様子

画面表示


この拡張ボードによってデータ等はフロッピーでなくWindows上のファイルとして保存できるようになったのですが、起動時はフロッピーが必要です。これを解決するためにはフロッピーエミュレータが必要ですが、まだ製作できていません。。。

ドライブ2も仮想ドライブに変更


現在は、FLEX09システムのドライバールーチンをさらに書き換えて、ドライブ3だけでなく2もWindows上の仮想ドライブに設定変更をしていますので、FlexWinDrvのドライブ2と3に仮想ディスクをセットして使用しています。(結局、ROMディスクもRAMディスクも使わなくなってしまった。。。)

[蛇足]画像で分かりますように、FM77AV40SXの純正キーボードは使用せず、大切に保管してあります。代わりに、自作のキーコード変換器を接続したPS/2キーボードを使用しています。さらに、内蔵ドライブも取り外して保管し、代わりに一般的なDOS/V機用のFDDを装着しています。
自作のキーコード変換器は下の画像のものです。
ATtiny85を使用したハードは簡単なものです。ソフトには結構苦労しましたが、FM77AVのスキャンコードをですくまさんが調べて公開してくださっていたので、とても助かりました。感謝いたします。

自作のキーコード変換器


資料の整理を兼ねて、手配線のボードをプリント基板化しようと考えています。無事に完成したら公開するつもりです。

2019年2月23日土曜日

番外編 ー 68Katy-aeの制作

6821PIAを用いたI2C通信ができて以来、ブログの更新をしばらくできませんでしたが、その間何をしていたかと言いますと、懸案だった6809と6802基板用のモニタープログラムの修正をしていました。(次回のブログで紹介します。)
せいぜい2週間ぐらいの予定で始めたのですが、変なところでつまずいてしまい、四苦八苦している間に、気分転換も兼ねて68Katy-aeに手を出してしまいました。

基本的に6809と6800(6802)にしか関心はないのですが、なぜか手元にHD6301などがあったこともあり、先日は電脳伝説さんのSBC6303も作ってしまいました。
[蛇足]製作した電脳伝説さんのSBC6303基板では、手持ちのHD6301V1P, HD6303RP, HD637B01VOPのいずれも正常に動作しました。

SBC6303とBL基板


昔、SHARPのX68000でOS-9/68000を使っていたこともあり、いつかは68K基板を設計したいと思ってはいましたが、知識も技術も時間もなく手が出せませんでした。
ということで、68Katy-ae基板です。手持ちのCPUは68000ばかりで68008はないので、ちょっと残念でしたが、68Katyの原作者とae版の作者tomi9jpさんが知恵を絞ってくれたおかげで、私は何も考えずに手を動かせば良いのだと安直に考えたのが間違いでした。

結局、基板、XC9532、68008に加えてAE-FT245RLまで買い直す羽目になり、まだ完成したわけではありませんが、ネットではうまく動作したという記事がほとんどなので、失敗したという記録もそれなりに意味があるかもと思いますので、ここに残しておくことにします。

製作した基板3枚 上は不良だったAE-FT245RL


その1 XC9532の取り付け間違い。CPLDはAlteraしか扱ったことがなく、Xilinxは初めてということもあり、チップの〇印を見てもピン1の位置が良く分からず間違えてしまいました。
(印字を基準にして左上がピン1が普通だろー--泣。)ーー>画像右端の基板

その2 XC9532の書き込みに苦労。Alteraの書き込みケーブルは何種類か持っているのですが、Xilinxのダウンロードケーブルはありませんでしたので、まず中古のパラレルケーブルを入手しましたが、これが不良品で、どうやってもIMPACTで認識しません。次にUSBのダウンロードケーブルDLC9を入手しましたが、何とこれも不良品でした。最後にUSBIIのDLC10を入手し(高かった!)、ようやく書き込みができました。
その間、tomi9jpさんにXC9532について質問した際のやり取りの結果、AE-FT245RLで書き込みをする手順を公開していただけたのですが、この方法でもうまく書き込めませんでした。何十回か試みると1回ぐらい書けたような反応をすることもあったのですが。。。
 ->実は、この原因はAE-FT245RLにあったことが後に分かります。


入手したダウンロードケーブル



その3 ROM1のMX29F040TCを最初から取り付けてしまった。後からでは取り付けが困難だからと思ったのですが、結果的には動作しない場合の原因の切り分けが難しくなってしまいました。CPLDには正常に書き込みができているのに、TeraTermには全く何も表示されない。。。
このために、SRAMやROM0を交換したり、68008やAE-FT245RLを買い直したりしましたが、症状は変わりません。-ー>画像中央の基板。まだ動作していません。。。
[訂正]動作しました。最下行に経過を追加しました。

その4 3枚目の基板でようやく動作。ROM1を取り付けず、CPLDへの書き込みデータをオリジナルのものにしたら動作しました。最初は画像のように、訳のわからない表示だったのですが、FT245RLを交換したら正常になり、uLinuxも動作しました。ーー>画像左端の基板

不良FT245RLによる表示(リセット直後の?入力)

正常FT245RLによる表示(リセット直後の?入力)

uLinuxも動作した

その5 AE-FT245RLの不良。あれこれ調べた結果、何とDB4ピンのハンダ付け不良であることが判明し、ハンダ付けし直して無事復活しました。秋月さんには数十年来お世話になっていますが、こんなことは初めてでした。今までは使えていたので、ソケットの抜き差しを繰り返しているうちにハンダ付け部分が緩んだのですね。

FT245RLのハンダ付け不良個所(DB4ピン)



現在はROM1を取り付けていませんが、増設するかどうか迷っています。それよりも動作していない中央の基板の原因追及を優先すべきだと思いますので。

以上、68Katy-aeを何とか動作させるまでの四苦八苦の記録でした。

[追加]画像中央の2枚目の基板(TSOPを追加してあるもの)が動作しました。
オシロで見てもクロックは正常ですし、アドレスバスやデータバスを見ても異常は見つけられなかったので、回路図を見ながらすべての配線をチェックしたところ、2ヶ所導通がないことを見つけました。いずれもCPLDの端子のところで、見た目は正常にハンダ付けされているように見えました。(ハンダ付け歴50年以上なのに恥ずかしい。。。)
この結果、zBugやuLinuxはもちろん、ROM0のAMD29F040の内容をTSOPのMX29F040にコピーして、ROM1からも起動できました。tomi9jpさんに感謝感謝です。

この基板で68Kの機械語を覚えて、使いこなせるようになるといいなあ。(機械語が一番面白い。次はC言語、そしてJAVAかな。)