FM-7用のRTC&SDカード基板を製作してみました
【修正】OneDriveのリンク先が間違っていましたので、正しいリンク先に変更しました。
以前、6821PIAを用いてI2CでRTCを、SPIでSDカードを読み書きする試みを紹介しました。
(https://flexonsbd.blogspot.com/2018/10/piartci2c.html)
(https://flexonsbd.blogspot.com/2022/06/sd6809.html)
【修正】OneDriveのリンク先が間違っていましたので、正しいリンク先に変更しました。
以前、6821PIAを用いてI2CでRTCを、SPIでSDカードを読み書きする試みを紹介しました。
私にとってのGOTEKの第1号ですが、以前紹介しました(https://flexonsbd.blogspot.com/2020/08/fm-777gotek.htmlとhttps://flexonsbd.blogspot.com/2021/05/fm-777gotek.html)ようにPC用のフロッピィドライブケースに、フロッピィドライブとともに収めて使用していました。しかしある時に突然電源が故障して5Vのはずが8Vになってしまい、フロッピィドライブの方は無事だったのですが、GOTEKに刺してあったUSBメモリは破損し、GOTEK本体も動作がおかしくなってしまいました。
そのためしばらく使用を中止していたのですが、不思議なことに電源を交換して試してみたら正常に動作しているようにみえました。ということで、しばらく使用していたのですが、やはりダメージを受けていたようで、読み出しはできるのですが書き込みができません。
やはり故障品として処分するしかないかと思ったのですが、考えてみるとメインのマイコンのSTM32F105は5Vを降圧した3.3Vで動作しているはずなので、5Vが8Vになっても大した影響はないはずです。だとすると、ダメージを受けそうなのは残るゲートIC(74HC04D)だけです。試しに電源をつないで74HC04Dの端子電圧を測定してみると、ゲートのINが3.25VでOUTが4.04Vだったりして明らかに異常です。
ということで74HC04D(SOICタイプ)を入手して交換することにしました。
これが交換前の状態です。最近のものとは多分異なっています。SFRC922Dという刻印があり、使用されているマイコンはSTM32F105でした。
| 交換前 |
交換すべきICはこれです。SOICタイプの74HC04Dです。
![]() |
| 該当のIC(74HC04D) |
![]() |
| ICを除去 |
フラックスを塗ってはんだ付けしました。SOPタイプよりも小さいのですが、それほど大変な作業ではありませんでした。
| 交換後 |
FM-7に載せた自作のFDCカードにFDDとともに接続して動作テストをしました。
GOTEKで起動しておいて、まずFDを初期化してからVOLCOPYでGOTEK中のシステムをFDにコピーしました。次にFDからGOTEK中に用意したブランクファイルにVOLCOPYで書き戻してみました。その結果、どちらのVOLCOPYも正常に行えて、書き戻したファイルからも正常に起動しました。以上より、GOTEKは正常に動作していると思われます。
| チェック中 |
私のようにGOTEKを故障させた方はまずおられないとは思いますが、電源不良によるTTL IC破損による故障の場合は100円程度のICを交換することで修理可能だという一例のつもりで紹介しました。
FM用のエミュレータであるXM7を使用されている方も多いと思います。私も使わせていただいています。素晴らしいソフトを作成された開発者に敬意を表します。
XM7を使用していると、しばしばD77形式のディスクイメージ中のファイルを操作したいことがあります。つまり、ディスクイメージ中にWindowsからファイルを書き込んだり、逆にディスクイメージからWindowsへファイルを読み出したりしたいということです。
今までにそのためのソフトを制作してきました。当然のことですが、各OS(?)によってディスク中への保存形式が異なりますので、ソフトも各OSで異なるものとなりました。
制作したソフトについてはその都度紹介してきましたが、扱えるファイル形式を今までのD77(D88)、DSKに加えて、FT245高速通信カードで用いられているDAT形式に対応するように拡張しましたので、ここでまとめて紹介します。
今までに制作したソフトは以下の4本です。
(1)F-BASIC用 FbasDrvWin.exe
(2)OS-9用 Os9DrvWin.exe
(3)CP/M用 CpmDrvWin.exe
(4)FLEX9用 FlexDrvWin.exe (DAT形式には対応しない)
それぞれ対応するOSが異なりますが、操作性は全て同じにしてあります。
(ただし、FLEX9用のみはディスク形式が異なるためにFT245通信カードを使用する転送ソフトは使用できませんので、DAT形式に対応する必要がありません。)
それぞれの画面イメージは次のようです。
| FbasDrvWin.exe |
| Os9DrvWin.exe |
| CpmDrvWin.exe |
| FlexDrvWin.exe |
FT245を用いた通信カードは非常に高速ですので、もうRS232Cカードを使うことはなくなり、もっぱらこればかり使用しています。
このカードを使用するためのドライバソフトとしては、カードを考案された「思い付きハードでソフトに七転八倒」さんが作成された専用ソフト FDDIMG_RW77.exe があります。(https://vehwk3yxv7hw.blog.fc2.com/blog-entry-73.htmlで入手できます。)
これは特定のセクタの読み書きができたり、ディスクの検査ができるなどの機能を持ち、さらにRAMディスクのドライバも内蔵しているという多機能のものですが、私の用途ではFMとWindowsPCの間でFDのディスクイメージを丸ごと転送することがほとんどです。
ということで、FMとWindowsPC間での転送専用のソフトを作成しました。常用機がFM77AV40SXですので、2Dのみでなく2DDディスクにも対応させました。
使用しているFT245通信カードです。私は通常、このようにFT245通信カードと自作のFDCカードを32Pスロット拡張基板に装着して使用しています。
| 使用しているFT245通信カード |
作成したソフトの構成図です。
なお、転送時のデータの処理方法が異なるため、FDDIMG_RW77.exeとは互換性がありませんので混用はできません。FM側FT245DRV(とFTDRV11o)、Windows側 ft245drv.exe のペアで使用することになります。
![]() |
構成図 |
FM側の機械語サブルーチンをロードする間の起動画面です。
| FM側の起動画面 |
FM側のメインメニュー画面です。
| FM側のメインメニュー画面 |
メニューの1と2で転送方向を選択します。
3,4,5はオプション設定で、3でドライブ番号の選択(0~3の範囲)、4でディスクのタイプの選択(2Dか2DD)、5でFMからWindowsへの転送時にFT245RLのTXE(TX Enable)機能を使用するかしないかを選択します。使用する場合はFT245通信カード上のスライドスイッチを右(USBコネクタ側)に、使用しない場合は左(バッテリ側)にセットします。このスライドスイッチがないカードの場合にはTXE機能をOFFにします。
WindowsPC側のメニュー画面を示します。
| Windows PC側のメニュー画面 |
起動後にまず、COMポート番号を選択します。使用可能な番号のみが表示されますのでその中から選択します。もし希望の番号が表示されていない場合は「COMポートスキャン」ボタンを押してから選択します。
| 動作中の画面 |
知人から上記の記事を紹介され、製作してみたいと思って部品(V9938やそれ用の64ピンソケット、64Kx4bitのD-RAM、そして21.47727MHzの水晶振動子など)を既に集めていると言われたのですが、記事を読むと使用しているビデオディスプレイプロセッサ V9938は64ピンのシュリンクソケットですし、D-RAMは3段重ねの実装ですので手配線では難度が高いと判断し、プリント基板を作成することを提案しました。
6個のD-RAMを並べ、V9938の64ピンシュリンクソケットを配置しても100x80mmのサイズに収まりましたので、これで行けると判断してプリント基板を発注しました。
しかし、いつものようにドジをしてしまい、9ピンD-Subの取り付けを裏面にすべきだったのを表面に配置してしまいました。幸い左右対称ですので、無理矢理裏面に実装することにしましたが...
出来上がったのがこの基板です。
| V9938基板 |
実装した状態が下画像です。
| 実装済み基板 |
まず、知人が製作して動作テストを始めてくれましたが、全く動作しないとのことでした。プリント基板のパターンを追いかけたところ、当初、記事中の回路図にミスがあり、そのままでgerberファイルを作成したのですが、発注前にそのミスに気づいたので回路図を訂正し、gerberファイルも書き直したつもりだったのですが、うっかりと訂正前のgerberファイルで発注してしまっていました。
2箇所のパターンカットと3本の追加配線を行ってもらうことで無事に動作するようになりました。なお、このミスや裏返しになった9ピンD-Subなどを修正した基板を発注中です。
当初は製作と動作テストは知人に任せるという他力本願のつもりでしたが、記事を読み込んでいるうちに自分も製作してみたくなり、部品を集め始めました。V9938はメルカリで、64ピンシュリンクソケットと水晶振動子はaitendoで購入することができました。
製作した基板が上に示した実装済み基板です。
なお、本体基板の他に出力表示用の回路が必要で、記事ではビデオ出力回路とアナログRGB回路が紹介されています。
最初は簡単なビデオ出力回路を製作したのですが、結果はあまりきれいな表示ではありませんでしたので、続いてアナログRGB回路を製作しました。これは流石にきれいなグラフィック画面を表示してくれました。以下に示すサンプル画面はこれによる表示です。
| ビデオ出力回路 |
| アナログRGB出力回路 |
この増設サブシステムカードをFM-7に装着し、12月号に掲載されている拡張BASICを入力してサンプルプログラムを走らせてみました。心配していた、シールド線不使用によるノイズの混入も見られないようです。
| 「COL」結果 |
| 「HMMV」結果 |
| 「PAINT」結果 |
増設サブシステムカードの出力は専用の出力となりますので、ディスプレイが2台必要だったりしますが、工夫して何とか1台の切り替えで表示できるようにしました。
下画像の最上段がディスプレイ切り替えスイッチで1:FM77AV40SX、2:FM77AV2、3:FM-7(通常出力)、4:FM-7(増設システムカード)を切り替えます。中段のボックスの中には以前「アップスキャンコンバータの製作(2021年6月15日)」(https://flexonsbd.blogspot.com/2021/06/blog-post.html)で紹介したアップスキャンコンバータを収めていて、FM-7の出力をこれに入れて、その31KHz出力を最上段の3:に入力しています。最下段はXRGB-2plusでこの21ピンマルチ入力に今回の増設サブシステムカードの出力を入れて、その31KHz出力を最上段の4:に入れています。
中断の切替器のA,B切り替えはディスプレイのCentury LCD-10000VとEIZO L365の切替用のつもりです。
| ディスプレイ切り替え回路 |
今までは、ドライブ0がGOTEK、1がFDDという形で使用してきました。ほとんどの場合はこれで問題はないのですが、時にはFDから起動したい場合もあります。しかし、ドライブ0がGOTEKだと、ドライブ1にFDを入れてもFDからは起動してくれないのです。
しかたなくドライブ0をFDに戻してみたのですが、GOTEKが使えないと結構不便です。ということで、GOTEKを再度追加することにしたのですが、以前、FM-7用のGOTEKを設置した際にはGOTEKとFDDのドライブ番号を互いに入れ替えることができるようにしたので(ドライブナンバー切替用ケーブルの製作(2021.02.02))、SXについてもドライブ番号を切り替えられるようにケーブルを作成することにしました。
最も簡単な形は、ドライブ1はそのままで、ドライブ0のFDDとGOTEKの番号を0と2に切り替える形式でしたので、そのような機能を持つケーブルを製作しました。
下の画像が製作したケーブルと追加したGOTEKです。GOTEKは98用のFDD用のケースを流用しており、パネルについていた2HD/2DD切り替え用のスイッチをそのままFDDとGOTEKの切り替えスイッチとして使用しています。
| 製作したケーブルとGOTEK |
製作したケーブルの接続図を示します。FM-7用の場合とほとんど同じです。
![]() |
| ケーブル結線図 |
| 装着の様子 |
| 動作中 |
以上で、通常はGOTEKから起動して運用し、必要な場合は切り替えてFDから起動することができるようになりました。また、FD同士のコピーも楽になりました。
【2022年10月23日 訂正】FM77AV20/EXには40Pコネクタしかないというご指摘を受けましたので、対応機種をAV40/EX/SX用に訂正させていただきます。タイトルも変更しました。ご指摘ありがとうございました。
入手困難であった富士通の48ピンコネクタが入手できましたので、以前から作ってみたかったFM7720/40用の512KB増設RAMカードを製作してみました。
製作したSRAMカードを示します。
| 製作した512KB SRAMカード |
回路図を示します。
![]() |
| 回路図 |
実は、あまり良くない個所が一個所あります。SRAMのWE端子にRW信号を接続していますが、74HC00のWE出力信号を接続するつもりでしたが、うっかり間違えました。でも、OE信号にE信号を入れているので、動作に不具合はないのではと思ってそのままにしてあります。
512KBのSRAMの他にはTTL-ICがわずか2個で済みましたので、90x60mmというコンパクトなものになりました。
| 純正RAMカードと比べてみた |
詳細な動作チェックはこれからですが、とりあえずOS-9 Level2のmfreeコマンドで確認してみました。
確かに512KB容量が確保されています。
| 製作したRAMカードの場合 |
純正のRAMカードの場合は容量が256KBです。
| 純正RAMカードの場合 |
【2022年12月7日】回路図を再修正しました
FM-7でASSIST09を使う方法については、2022年9月15日に「自作クロスアセンブラの修正とASSIST09のFM-7への移植」で紹介しましたが、FM-7にはPTM(Programmable Timer Module)がないので、そのままではトレースコマンドが使えませんでした。
機械語プログラムのデバッグには必須の強力なコマンドですので、何とか使えるようにしたいという事で、FM-7にPTM(68B40)を増設することにしました。
ASSIST09ではPTMの出力によってNMIを発行していますが、残念ながら32PスロットにはNMI端子が出ていません。背面の50PのI/O拡張ポートには出ていますが、普段は拡張基板を接続していますので、使いたくありません。という事で、40PのZ80用スロットに目を付けました。このスロットはZ80カード、63C09カード、Arduino2560カードで使用していますが、機械語のデバッグ時にはこれらのカードを外せば良いと考えたわけです。
早速、KiCadで回路図を作成して基板を発注しました。出来上がった基板がこれです。
| PTM-PIAカード |
上右の28ピンICがPTM(63B40)で、その左の40ピンICがPIA(68B21)です。以前、拡張用にPIAカードを作ったのですが、それにPTMを追加するような形で製作しました。
回路図を示します。
(下に動作しなかった原因を述べてありますが、この回路図はその修正等を加えてあります。【2022年12月7日再修正しました】)
![]() |
| PTM-PIAカード(再修正済) |
ASSIST09の方の変更は、「自作クロスアセンブラの修正とASSIST09のFM-7への移植」中の拡張ROMのプログラム中のPTMのアドレスをこの基板に合わせて$FDF0に書き換えるだけです。
早速、実行してみましたが動作しません。(いつものことですが。。。)
最初に使用していた68B40が不調だったりしましたが、交換しても変わりがありません。回路にも間違いはないようですし、プリント基板のパターンも全て確認しましたが、回路図と違いはありませんでした。
色々調べた挙句、ようやく原因が分かりました。何と、Z80用スロットのNMI、IRQやFIRQ端子はメインCPUへの入力端子ではなく、逆向きのZ80カードへの出力端子だったのです。(他にEやQも通常とは逆向きのようです。)事前調査不足でした。。。
結局、FM-7にPTMを増設するには、背面の50P拡張ポートを使用するしかないという事になりましたので、基板の作り直しが必要になってしまったわけですが、とりあえず、製作した基板を使用するために、下画像のような変換アダプタを製作しました。
| 変換アダプタ |
40Pメスコネクタは、以前FM-7をばらした際に基板から外して保存してあったものです。これを接続して、画像のような形で使用します。
| 使用形態 |
| トレースコマンド実行画面 |
| 拡張コネクタベース基板 |
| 32Pコネクタ拡張基板 |
2019年10月26日の「FM-7でPC用のフロッピードライブを使う」で紹介しました、PC用の2DDドライブをFM-7等で使うための、FDDに直接装着するタイプのアダプタをプリント基板化しました。
簡単なものですのであえて基板化する必要もないのですが、他の基板を発注する際に、ついでにということで製作してみたものです。
製作したアダプタは下画像のようです。
| アダプタのFDD側 |
| アダプタのFDC側 |
回路は簡単すぎて、回路図を示すほどのものではありませんが、FDCからのドライブセレクト信号(0あるいは1)をピン12に入れる切り替えスイッチと、ダイオード1個によるReady信号生成回路からなっています。このダイオード1個によるReady信号生成回路は前回同様に、てきとーに。さんの「FM77AV20/40以降のFDD修理というか交換」中のダイオード1個による簡便な変換回路を使わせていただいています。感謝いたします。
![]() |
| FDD ADAPTER |
| FDDに装着した様子 |
| FDDを2台制御できます |
| 製作した基板 |