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

2022年9月26日月曜日

PC用の2DDドライブをFM-7等で使うためのアダプタの基板化

PC用の2DDドライブをFM-7等で使うためのアダプタを基板化してみました 

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に装着した様子


そしてFDCからのケーブルと電源ケーブルを接続します。画像では、FM-7上の自作FDCカードと接続しています。この時、FDC右端のStep信号2倍化回路のスイッチをDouble側にセットしておきます。使用したFDDはTEACのFD-235HGです。
【注意】対応しているFDDには制限があります。構造上、34Pコネクタの上部に電源コネクタがあるMITSUMIのドライブにはそもそも装着できないので使用できません。これは、以前私がチェックした限りでは、このダイオード1個によるReady信号生成回路ではMITSUMIのD353やD359の中には動作しないものがあったために、対象外と考えたためです。確実に動作するのはTEACのFD-235HGやHFで、他にSONYのMPF920も動作確認をしています。これらについては、2019年12月31日の「FM-7でPC用のフロッピードライブを使う(その後の訂正・補足)」をご覧ください。

なお、FM-7ではStep信号2倍化回路が必要ですが、FM77AV20/40/40SX等のFDDが2DD仕様のものでは接続するだけでそのまま使用できます。私は手配線のものをFM77AV40SXで2019年以来使用していますが、特に不都合は生じていません。





ドライブ番号として0と1が選択できますので、2台までのFDDが制御できます。


FDDを2台制御できます

以上、手配線で使用していたものをプリント基板化してみたというだけの報告でした。

なお、画像のような基板が数多くできてしまいましたので、もしご希望の方がおられましたらお申し出くだされば、郵送料(84円)のみでお送りできます。


製作した基板

実際に製作するためには、34Pのピンヘッダ(オス)、34Pのピンソケット(メス)、通常の信号用ダイオード、3Pスライドスイッチが必要です。
また、本文中に書きましたように、対応していないドライブがあることをご承知おきください。


2020年12月3日木曜日

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

 

前回紹介したプログラムを改良し、多少の高速化を図りました


前回紹介したプログラムは、FM-7側はF-BASICで作成し、WindowsPC側は2つのプログラムに分かれていましたが、FM-7側のプログラムをアセンブラで、WindowsPC側のプログラムを一つにまとめることで、より使い易くするとともに多少の高速化を図ることができました。

(1)FM-7側(RDIMG)
アセンブラで書き直すにあたって、最初はFDCを直接コントロールしてトラックリードコマンドで、1トラックを一気に読み込んでメモリに展開し、そこからセクタデータを取り出すと高速になるのではないか(ディスクの読み込みが40x2の80回で済むので)と考えて作成してみました。
結果、セクタデータは得られたのですが、標準のフォーマットとは異なる個所もあり、また、読み込むたびに値が変わる部分もあり、全てに対応するのは結構面倒そうです。
ちなみに、読み込んだトラックデータは以下のようでした。

                            標準の値                     実際の値
----------------------------------------------------------------------------------------------
GAP1                      4E                             4E,その他の値
----------------------------------------------------------------------------------------------
SYNC                      00 (12バイト)            00,その他の値
IDアドレスマーク    A1,A1,A1,FE             14,A1,A1,FE or C2,A1,A1,FE
IDとCRC(4+2バイト)             同じ
----------------------------------------------------------------------------------------------
GAP2                      4E                              4E,その他の値
SYNC                      00 (12バイト)            00,その他の値
IDアドレスマーク    A1,A1,A1,FB             14,A1,A1,FB or C2,A1,A1,FB
                                                                 (FBはF8の場合もあり)
DATAとCRC(256+2バイト)    同じ
----------------------------------------------------------------------------------------------
GAP3                       4E                             4E,その他の値
----------------------------------------------------------------------------------------------

これを見る限り12バイトの00に続いた後、 14(orC2),A1,A1,FEの後にID(TRK,SIDE,SCT,セクタ長)+CRCが、14(orC2),A1,A1,FBの後にDATA(256バイト)+CRCがあると決め打ちして良いようにも思いますが、ちょっと不安です。

ということで結局、BIOSを用いてセクタリードを40x2x16の1280回繰り返すことにしました。1セクタ読むごとに256バイトのデータとチェックサム値を転送しています。ファイル名をRDIMGとしました。


(2)WindowsPC側(mkd88img.exe)
前回のプログラムはFM-7から送られたデータをそのままセクタ順に保存してできたDSKファイルをまず作り、次に別のプログラムを用いてD88ファイルを作成するものでしたが、それを一体化してmkd88img.exeとしました。処理結果としてDSKファイルとD88ファイルの2つが生成されます。

FDイメージファイル作成の手順


(1)FM-7とWindowsPCをRS232Cボードで接続して適切なボーレートに設定します。RTS/CTS制御可能なボードであれば19200Baudが可能です。
(2)WindowsPC側のmkd88img.exeを起動します。オプションを付けずに起動するとCOM4,19200Baud,生成ソフト名FDIMG.DSK, FDIMG.D88となりますので、変更する場合は下記のようにオプションを付けて起動します。
 mkd88img [p=n] [b=nn] fname (fnameはディレクトリを含んでも良い)
(3)FM-7側のRDIMGを起動します。デフォルトではドライブ0のディスクを読むようになっているので、他のドライブの場合は一旦Loadして(&H6000からに入ります)から&H6002の値0を希望のドライブ番号に変えた後、Exec &H6000で実行します。
(4)指定したディレクトリにDSKファイルとD88ファイルが作成されます。


結果など


速度ですが、2Dディスクを処理するのにおよそ10分(19200Baud)、15分(9600Baud)、20分(4800Baud)、35分(2400Baud)程度となりました。
8251Aを直接コントロールしているのでRTS/CTS制御をしてボーレートを上げることができていますが、2400Baudでは前回の結果と同じ程度なので、処理時間はディスクの読み込み方法とはあまり関係がなく、ほぼ転送速度で決まってしまっているようです。

作成したRDIMGとmkd88img.exeをOneDriveにMakeD88ImageFile2.zipとして上げておきます。FM-7にRDIMGを直接入力する場合はRDIMG.bin(236バイトもありますが...)を打ち込みます。(RDIMGはF-BASICの機械語形式に合わせたもので仮想ドライブにドラッグ&ドロップする場合に用います。)



2020年11月24日火曜日

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

 Ndittを使わないGOTEK用のHFEファイルの作成方法を紹介します


8月9日のブログ「FM-7/77にGOTEKを接続する」でFM-7/77でGOTEKが使えるという紹介をしましたが、実際にGOTEKを使用する場合の最大の障壁は、如何にして手持ちのフロッピーディスクの内容をWindowsPCに取り込むかだと思います。

〇標準的な方法

下図の左の方法で、3.5インチ又は5インチのFDDを装着したWindowsPCを用意し、Nditt.exeでフロッピーディスクを読み込んで.D88(.D77)イメージファイルに変換するというものです。

実際、私もこのためだけに3.5インチと5インチFDD付きの古いWindowsXPパソコンを保管しています。しかし、これは如何にも面倒です。

そこで、FDDのないWindowsPCでも可能な方法を紹介します。

〇FM-7を使用する方法

下図の右のように、FM-7上でフロッピーディスクの全セクタを読み出してWindowsPCに転送し、作成された.DSKファイルを.D77形式に変換するというものです。







このために必要なソフト(FM-7側:SNDIMG,  WindowsPC側:rcvfdimg.exe)を作成しました。

さらに最後の手順の.DSKから.D88への変換には従来から使用しているソフト FbDsktoD77.exe を使用しました。


各ソフトの機能

・転送ソフト SNDIMG:

FM-7上で動作するF-BASICのソフトで、フロッピーディスクの全セクタを読み込み、バイナリのままでWindowsPCに送信します。

ドライブは0を設定してありますので、他ドライブの場合は直接プログラムを修正します。

・受信ソフト rcvfdimg.exe:

WindowsPC上で動作するコンソールソフトで、受信したセクタデータをTrack0,Sector1からTrack39,Sector32までそのまま順に並べた.DSK形式のファイルを作成します。

  Usage:rcvfdimg [p=n] [b=nnnn] [filename](全て省略可)

        (省略時:p(ポート)は4、b(ボーレート)は4800baud、filenameはFDIMG.DSK)

・.DSKファイル変換ソフト FbDsktoD77.exe:

WindowsPC上で動作するコンソールソフトで、.DSK形式のF-BASICファイルを.D88形式に変換します。私が普段Windows上の仮想ディスクで使用するファイルを作成するために使用しているものなので、ファイルの拡張子が.D77にしてありますが、それを.D88にリネームします。また、デフォルトでは640KBのファイル用なのでオプションとして39を付けて変換する必要があります。(ファイル名のみで起動するとUsageが表示されます。)

  Usage:FbDsktoD77 filename 39 (ファイル名の拡張子は不要)



使用感など

最近はFDDがついていないPCが普通になってしまったようで、結構困ることがありますので、この方法もありかと思います。

ただ、速度的にはかなり遅くて2Dディスクの320KBで30分余りかかります。。。

ディスクの読み込みが遅い上にBASICでのRS232C通信ですのでさらに遅くなるのは当然ですが、FM-7(と普通のWindowsPC)でイメージファイルが作成できるのはメリットではないでしょうか。

GOTEKを使おうと考えるということは、当然、FM-7にはフロッピードライブが装着されていると思いますので、あとはWindowsPCとの通信手段としてのRS232Cカードなどがあれば良いわけです。

RS232Cカードの自作もそれ程大変ではないと思いますし、他にも「思い付きハードでソフトに七転八倒」さんが製作されたFT245RL使用の高速転送カードを使用できればもっと速くなると思います。また、以前ブログで紹介したArduinoMega2560を使用したカードを使うという手もあるかと思いますが、まだ試していません。

使用したソフト(SNDIMG,rcvfdimg.exeソース付き,FbDsktoD77.exe)をOneDriveに上げておきます。rcvfdimg.exeは以前のブログ「ASSIST09に追加したLoad, Saveコマンドを改良しました」で紹介したslwinr.exeを手直しして作成しましたが、ソースもつけておきましたので改良して使っていただければと。

蛇足になりますが、F-BASICのソフト SNDIMG だけは何とかしてFM-7に読み込む必要がありますが、40行足らずですので直接打ち込んだ方が早いと思います。


2020年8月9日日曜日

FM-7/77にGOTEKを接続する

FM-7やFM77にGOTEKを接続してみました

[12月6日追加]新基板のGOTEKの場合はこちらをご覧ください
[8月19日追加あり]

以前からHxCエミュレータには興味があったのですが、お遊びで試してみることができるような値段ではないので手を出さなかったのですが、低価格のGOTEKなら失敗してもあきらめがつくということで、2台入手してみました。
FlashFloppyというソフトの存在を知ったことも大きかったです。それまでは有料であるHxCのエミュレータをインストールしなければGOTEKは使えないものと思い込んでおりましたので。
さらにGOTEKは種類も多く、FM-7や77では2DDの720KBのものしか使えないのではないかと思っていたのですが、FlashFloppyをインストールするのであればどれでも良いのではないかと考えて、最安値に近いものを購入しました。

購入したのはSFR1M44-U100Kという型番のものです。オプションとしてOLEDディスプレイとロータリーエンコーダ(スイッチ付き)も入手しました。

FlashFloppyの入手・インストールやオプションの取り付け方等については先人の知恵をお借りしました。GOTEKやHxCというキーワードで検索すればたくさんヒットしますので、それらをご参照ください。
私は、特に「レトロなPCとか」の「FDDエミュレータのまとめ」を参考にさせていただきました。説明が具体的でかつ画像もありますので大変参考になりました。他には、「FlashFloppy Wiki」も参考にしました。ありがとうございました。


オプションのOLEDとロータリーエンコーダ(スイッチ付き)を増設しました。
画像にはありませんが、さらに圧電スピーカーも追加しました。


テスト風景です。自作のFDCカードからのフラットケーブルをそのままGOTEKに接続しています。カード上のStepDoubler機能はOFFにしています。
USBメモリ中に、F-BASIC30、Flex9、OS-9Level1、CP/M-80のシステムディスクのイメージファイル(D88形式をHFE形式に変換したもの)を入れて起動してみました。
どのシステムも正常に起動し、読み書きができました。




実際の使用風景です。このために最近入手したPC98用のFDDケースに収めています。GOTEKをドライブ0に、PC用のFDDをStepDoublerアダプタを通して接続してドライブ1に設定しています。
(OS-9を動作させるために、StepDoublerアダプタには7月19日のブログ「2DDドライブ用ステップ2倍化回路のその後」中の訂正を加えています。)



接続図です。


常用しているFM77AV40SXにも組み込んでみました。2DDファイルもOKでした。



訳が分からなくて苦労したことなど


ハードの設定やソフトのインストールなどは先人の知恵をお借りすることで、それ程苦労することはなかったのですが、イメージファイルをUSBメモリにインストールするところでは苦労しました。

HxCFloppyEmulator.exeでイメージファイルを作成する際の設定
[1]購入時の3桁7セグ表示の場合
 (1)使用するモードはIndexed Modeを選択
 (2)SDCard HxC Floppy Emyulator settingsとUSB HxC Floppy Emyulator settingsの設定では
 DoubleStepにチェックを入れない。
 Indexed Modeにチェックを入れる。
 2 drives emulationのチェックを外す。
以上の設定の上で(設定ファイルをUSBメモリにコピーする)、LoadでD88形式のディスクイメージファイルを指定してExportでHFE形式で書き出し、それをUSBメモリにコピーする。
その際のファイル名はDSKA0000.HFE,DSKA0001.HFE,...のように命名する。
7セグ上では000,001,...のように表示されるので、2つの押しボタンスイッチで選択する。

[2]OLEDに変更後の場合
 (1)使用するモードはNormal Modeを選択
 (2)settingsの設定では
 DoubleStepにチェックを入れない。
 Indexed ModeやAUTO BOOT Modeにチェックを入れない。
 2 drives emulationのチェックを外す。
以上の設定で(設定ファイルのコピーは不要)、LoadでD88形式のディスクイメージファイルを指定してExportでHFE形式で書き出し、それをUSBメモリにコピーする。
その際のファイル名は自由で良い。OLEDではそのままファイル名が表示される。

分かってしまえば簡単な手順なのですが、最初は何も分からない状態ですので、アップデートの必要がないのにしてみてエラーに悩んだり、あれこれ設定してみた間違った設定ファイルを書き込んでみたり、Modeと設定ファイルが合っていなかったりの試行錯誤の連続でした。
しかも、オプションのOLEDに交換するまでは3桁の7セグ表示ですので、表示の意味も良く分からない状態でインストールしようとしている者にとっては迷ってしまいがちです。

結果的には、何とか無事にインストールできて良かったです。

[8月19日追加]
上記はFM-7やFM77AVのような2Dの機種の場合です。
私が常用しているFM77AV40SXのような2DDの機種の場合は、次のようになります。
・元ファイルが2Dのイメージファイルの場合はDoubleStepにチェックを入れる。
・元ファイルが2DDのイメージファイルの場合はDoubleStepにチェックを入れない。


使用感など


まず、スピードはフロッピィとあまり変わらないようです。
また、音ですが、有り合わせの圧電スピーカーを付けたせいか、アクセス音はチリチリという小さな音が聞こえるだけですが、フロッピィのアクセス音は邪魔だったのでこれで良いかなと思います。
ただ一つ難点はOLEDの表示が老年者には小さすぎることですね...

何よりも良いのは、つまみを回すだけで起動するイメージファイルを選べることです。
私はメインでFlex9、時々OS-9やCP/M、ごくまれにFBasicを使っていますが、それらをUSBメモリに入れておけば、いちいちフロッピィを取り出す必要がありません。
ドライブ1にはフロッピィディスクをセットしてありますが、ドライブ2,3としてRAMディスクやWiindows上の仮想ドライブも使えますので、いよいよフロッピィと縁が切れるかもしれません。


2020年7月19日日曜日

2DDドライブ用ステップ2倍化回路のその後

Ready信号生成のためのPICを不要とすることができました

[2020年8月2日画像追加あり]
[2020年8月6日訂正あり]

6月8日の「2DDドライブ用ステップ2倍化回路のプリント基板化」で、FDCカードからFDDへのケーブルの間に挿入する形のステップ2倍化回路基板を紹介しましたが、それは、ステップ2倍化のためのATtiny85とReady信号生成のためのPIC12F675の両方を必要とするものでしたが、3つのICを必要とするのはいかにも大袈裟です。

このPIC12F675を使用せずにReady信号を生成する方法として次の2つを考えました。
(1)FDDを改造して34ピンにReady信号を取り出す。
(2)ATtiny85にReady信号生成のプログラムを追加する。

PIC12F675によるReady信号生成回路はK-ichi's memoさんによるMSXでPC用FDDを使うで紹介されているものをそのまま使用させていただいていましたが、プログラム作成では結構苦労されているようでしたので、まずは(1)による方法を試してみました。


(1)による方法


参考にしたのは、試運転さんによるPC-9821にPC/AT互換機用FDDを接続する(実施編)です。様々なFDDの改造手順が紹介されていますので、手持ちのFDDのうち該当するもの3台について改造してみました。


2種のTEAC FD-235HG


左がFD-235HG A122 (TB6048F)で右がFD-235HG 7304 (TB6022AF)です。
使用している制御ICの種類によってReady信号のピンが異なりますが、34ピンに接続されているDISK CHANGE信号をカットし、ICの該当ピンから34ピンにReady信号線を接続するだけです。


MITSUMI D353T5

D353T5の場合はDCH端子にハンダ付けされているチップ抵抗を、その下のRDY端子に付け替えるだけですので、元に戻すこともできます。(下図の左下の部分)



D353T5の改造部分



2DDドライブ用ステップ2倍化回路の修正は、FDC側のコネクタとFDD側のコネクタの34ピンを直結するだけです。
(下画像では修正線が何本もありますが、あれこれと改造した残骸でして必要なのは最下部の1本のみです。)

2倍化基板の修正(最下部の1本のみ追加)


改造した結果ですが、PIC12F675を外し、ATtiny85のプログラムは変更せずに動作しました。

しかし、FDDを改造するのはいかにも敷居が高いので、次に(2)のATtiny85のプログラムで対応することを試してみました。


(2)による方法


K-ichi's memoさんのブログによれば、MotorOnがアクティブの間、0.5ms毎に2000回(約1s間)Indexをチェックし、その間1度もIndexが出ていなかったらReadyではないと判断するとのことですので、そのアルゴリズムをそのまま使わせていただいてATtiny85のメイン部に追加しました。(K-ichi's memoさんに感謝いたします。)

プログラムリストを下に示します。


[2020年8月6日訂正]上記プログラム中の2000を5000に訂正します。(理由を最後尾に記述しました。)

2DDドライブ用ステップ2倍化回路の修正ですが、ATtiny85のピン配置をPB0:MotorON, PB1:Index, PB3:Readyとしましたので、ATtiny85 pin5,6,2をそれぞれPIC12F675のソケット端子のpin6,5,7に接続します。

[2020年8月2日追加」必要な追加配線を示す画像を追加しました。




改造した結果ですが、PIC12F675なしで無事に動作しましたので、FDDの改造が不要なこちらの方法の方が良いようです。

[2020年8月6日追加」上記のプログラムリストは2000回(約1秒間)チェックするというものですが、実は、このプログラムではOS-9Level1やLevel2のFDは正常に起動しません。起動時のメッセージを見ていると、どうも起動中の処理に時間がかかりすぎているようですので、2000回を5000回に変えてみたところ、OS-9も正常に起動するようになりました。
ということで、上記プログラムの2000を5000に訂正します。


2020年6月8日月曜日

2DDドライブ用ステップ2倍化回路のプリント基板化

いくつかプリント基板化した製作物がありますので何回かに分けて紹介していきます。

まずは2DDドライブ用ステップ2倍化回路のプリント基板化です。

2月28日のブログ「2DDドライブと2Dドライブの混在の工夫」で紹介しました、FDCのステップ信号を2倍化して2DDドライブを使用する回路ですが、その目的はタイトル通りで、2DDドライブと2Dドライブを混在させることでした。

その前作である2019年12月31日のブログ「FM-7でPC用のフロッピードライブを使う」ではFDCのSTEP信号をMB8877Aから出た直後に2倍化していましたが、この形では全ドライブが2Dか2DDのどちらかになってしまうということで、それぞれのドライブの直前のケーブルの途中に挿入して別々に選択できるようにしたわけです。

2月28日には手配線したもので動作したという紹介をしましたが、複数枚必要ということで今回それをプリント基板化しました。
2月28日の回路を用いていますが、書き忘れていた7438の11番ピンの1kΩでのプルアップを追加してあります。またソフトについてはFDC基板の中での2倍化はSTEP信号が正信号でしたが、基板の外では負信号ですので、STEP信号の立ち下がりで割り込みが入るように変更しています。

他の基板を発注する際に、ついでにということで慌てて作ったためかKiCadのフットプリントを間違えてしまい、そのため電源用コネクタの一つが5Pになっていたうえにパターンカットが2箇所必要になりました。さらにドライブ番号切り替えスイッチのシルク印刷がDR0とDR1と逆になっていましたが、配線変更等はなかったので良しとします。

製作したプリント基板と組み立てた完成基板です。

製作した基板



FM-7で使用している様子です。MITSUMIのD359M3DとTEACのFD235HGの2台を接続しています。




ハード、ソフトのテストのために先日入手したFM77AV1で使用している様子です。このように使用したいというのが製作の動機でした。(サイズが合わず、ちゃんと固定できていないので多少見苦しいですが...)




これで古い8ビット機のFDDの故障等の心配をすることなく、安心して使用し続けることができます。(と言っても、フロッピーそのものがいつまで使用できるかが問題ですが...)

2020年3月13日金曜日

FM-7用Z80カードの第2作などを製作

FM-7用のZ80カード(第2作)がようやく製作できました


ようやく基板が届いたのでZ80カードを製作することができました。
第2作はI/O誌1985年9月号に掲載された記事「Z80カードの製作」(著者は北斗星さん)の回路です。
第1作のインターフェース誌のFM-8用の回路の流用では動作が不安定だったり、対応していないFM-7があったりしたのですが、その原因を究明できていないのに(恐らくDRAMのリフレッシュ周りだろうとは思っているのですが、)別の回路に移るというのは、安易な姿勢だとは思いますが、Z80の知識がないので仕方がないと自分を納得させています。

この回路はFM-7/New7/77用として設計されており、第1作にはなかった6809とZ80を切り替えるためにアドレス$FD05をアクセスする際の対応やリフレッシュ回路もあり、動作が期待できましたが、実際にあっけなく動作しました。
(ということで第3作として予定していた「F-BASIC解析マニュアル」中の回路はKiCadで書き上げて準備してありましたが、製作の必要はなさそうです。)

回路ですが、ほぼI/O誌の回路図のとおりで、私が変更したのはLS244をLS541に置き換えたのと、Z80がアクセスされたときに点灯するLEDを追加した部分だけですので、回路図を載せるのは控えておきます。

製作したZ80カードです。10㎝x8㎝に収まっています。

Z80カード表面


Z80カード裏面

動作している様子です。(余計なものが写っていますが...)
左の基板は同時に製作した修正版FDCカードです。
Step信号2倍化回路を通して2DDのFDD(TEAC FD-235HG)を使用しています。


動作全景


両カードのアップ


FM-CP/Mも正常に動作しています。

FM-CP/Mの起動画面


FDCカードも手直しをしました。


前作のミスを修正したFDCカードです。


FDCカード


今度はちゃんと裏面からFDDへのケーブルのコネクタを出しています。
しかし、今回もミスがあり、パターンカットは不要でしたが、GNDへのジャンパの追加が2本必要でした...(ちゃんと見直しをしたつもりでしたが、ダメですね。)
でも簡単な修正ですので、基板はこれで完成とします。

FDCカード裏面



ということで、手持ちの純正CP/M基板は温存して、以前から所有していながらほとんど使用していなかったCP/Mを安心して使えるようになりましたので、多少Z80への興味が出てきたこともあり、CP/MのBIOSを自分で書いてみようなどと(無謀ですね!)考えています。

どうやらZ80側では必要なパラメータを6809に渡して、実際の処理は6809にさせれば良いようですので、これならできるかななどと甘いことを考えています。
参考資料としては、中日電工さんのZ80ワンボードマイコン(ND80Z3.5 上の動作全景写真の左上に映っています!)と互換CP/Mシステムを所有しておりますので、2012年の互換CP/M開発当時のブログを読みながら、ND80Z3.5上にCP/Mシステムを構築するという試みをなぞっているところです。
BIOSが作れれば、CP/M本体のソースは公開されていますので(上記ブログによれば何ヶ所かバグがあるようですが)、自分用のCP/Mができあがることになります。
いつになるかは全く分かりませんが、できましたらブログで紹介させていただきます。

2020年2月28日金曜日

2DDドライブと2Dドライブの混在の工夫

Step Doubler回路を用いて2DDドライブと2Dドライブを混在させる


中国の業者に発注したFDCカードとZ-80カードの基板が十日もあれば届くと思っていたのに、一か月を過ぎても届かないので、予定していたことが全く進みません。。。
ということで、今回はほんのちょっとした工夫の報告です。

10月26日のブログ(12月31日に追記あり)で、FM-7でPC用の2DDドライブを使用するという報告をしましたが、それは自作のFDCカードの中でMB8877AからのSTEP出力を2倍化するというものでした。
従って、適用できるのは2DDドライブのみということになるわけですが、実際の運用としては、5インチとのメディア変換などで2Dドライブも接続したい場合があります。

そこで、FDCカード中でStep信号を2倍化するのではなく、2DDドライブの直前のフラットケーブルの途中に挿入することにしました。さらに、ドライブのコネクタ部で行っていたドライブセレクト信号の切り替えとReady信号生成も同じ基板に載せました。

この形ですと、市販の2DドライブのFDDシステムをお持ちの方でも、別途2DDドライブを用意して、この回路を通してドライブに接続することで、2DDドライブを使用できることになります。

作成した基板です

Ready信号生成回路を後付けしたので見苦しいですが、基板中央の8ピンICがStepDoubler回路のATtiny85で、その出力を7438を通してFDDに送っています。外付けの8ピンICがReady信号用のPIC12F675です。ドライブ0と1の切り替えジャンパとStepDoubler回路のバイパス用のジャンパがあります。


基板


回路図を示します。

手持ちの7438を用いていますが、3.5インチの2DDドライブは負荷としてはそう大きくはないので、7406でも大丈夫だと思います。

回路図

Ready信号の生成部ですが、以前のブログで紹介した2つの回路のうちのPIC12F675を用いてIndex信号とMotorOn信号からReady信号を生成する回路を用いております。
最初はダイオードによる簡便な回路で製作しましたが、残念ながら正常に動作しませんでした。ドライブがセレクトされたときには常にReady信号が出るのがまずいのでしょうか。PICを用いた回路では、正常に動作しています。


動作風景です。

画像で分かりますようにフラットケーブルの途中に基板を入れ、基板を通さずに2Dドライブを、基板を通して2DDドライブを接続しています。
FM-7に刺さっているカードが自作のFDCカードで、これに載っているStepDoubler回路はスキップしています。


動作風景

ディスプレイは小さいので左の棚の上に置いています。

画面表示


私は、通常は2DDドライブ2台で運用しているのですが、2Dドライブが必要な場合はこの回路を用いてFM77AV1から外した2Dドライブ(YD-625)と2DDドライブ(FD-235HG)とで運用しています。メディア変換が必要な場合にはYD-625の代わりに5インチドライブを使用しています。

改良すべき点として、ATtiny85とPIC12F675を一つのICに置き換えることがあるとは思いますが、当面はこのままで使用するつもりです。

2020年1月23日木曜日

FM-7用のFDCカードのプリント基板化完了

FM-7用のFDCカードをプリント基板化しました。


2019年8月26日のブログ「FM77用の拡張I/Oボード、ROM/RAMディスクボードのプリント基板化が完了」の末尾で紹介しました、手配線のFM-7用FDCカードですが、プリント基板化し、ようやく動作確認ができました。

いつものようにいくつかのドジをしてしまい、しなくても良い回り道をしましたが、現在は無事に動作しております。

まず回路図を示します。
2019年10月26日のブログ「FM-7でPC用のフロッピードライブを使う」で示した回路には一個所間違いがありましたので訂正してあります。(Q,E,RW信号からWE信号を作るところです。)
また、Step信号の2倍化回路を追加してあります。


回路図(StepDoubler回路付き)


製作した基板を以下に示します。
およそ12cmx8cmのサイズに計21個のICを何とか収めることができました。
中央の40ピンICがFDCのMB8877A、その右上の8ピンICがデータセパレータの9216B、基板右上隅の8ピンICがStepDoubler用のATtiny85で、その右のスイッチはそのStepDoubler回路のバイパススイッチです。
(ミスのある基板ですので、試作ということで34ピンコネクタの代わりにボックスコネクタを使用したり、FDD用の電源として0.1uのパスコン用の穴にピンを立てて取り出したり、修正をICの足を切断して表面で配線したりしていますので見苦しいですが...)


FM-7用FDCカード


回路のミスのみでなく、FDD用の34ピンコネクタを裏側ではなく表側に配置してしまったり、FDD用の電源コネクタを忘れたりしています。(こんな基板を10枚も作ってしまいました...)
全くダメな基板というわけでもなく、多少の修正で動作するのでまあ良しとします。

もう一度、これらを修正し、FDD用の電源コネクタを追加した基板を作成中です。
このカードのみで普通の2Dのドライブ(あるいはDOS用の2HD/2DDドライブ)を4台まで接続できます。(もちろん、各ドライブにはReady信号を生成する回路が必要ですが。)

一度はもうFM-7ではFDDを使うのはやめようと決めましたし、FDを使わない工夫をされている方々がおられますので(「思い付きハードでソフトに七転八倒」さん、「ysflight.com」さん、「日本橋電気街徘徊日誌」さんなど)、その方々のお知恵を拝借すれば、あえてクラシックなFDDを使う必要もないのですが、大昔、手配線で苦労して製作したFDCカードですので、プリント基板化し、資料として残すことができて満足です。


2019年12月31日火曜日

FM-7でPC用のフロッピードライブを使う(その後の訂正・補足)

前回の報告の一部訂正と動作したFDDが増えたという報告です


前回(10月26日)のブログでは動作するFDDはTEAC FD-235HGのみですと書きましたが、その後、報告の内容に間違いがあることに気づきました。

それは、使用したFDCがMB8877AなのでSTEP信号は正論理であるのに、FM77AV40SXのSTEP信号を観測した際に負論理だったので、STEP信号が負論理であると思い込んでしまったことです。
観測したSTEP信号はFDCの出力端子ではなくFDDへの入力端子でしたのに、完全な勘違いでした。
正しいSTEP信号

STEP信号の2倍化回路はFDCの出力直後に入れていますので、正論理のSTEP信号を処理することになります。

ATtiny85のプログラムを信号の立ち上がりで起動するように訂正し、さらに、パルス幅tとパルス間隔をFM77AV40SXのSTEP信号のパルス幅(1.5ms)とパルス間隔(4.5ms)に合わせました。
(割り込みルーチン内でタイマーによるdelay関数を使用しているのは気になるところですが、STEP信号による割り込み以外は生じないということで大丈夫だろうと判断しています。)

また、端子変換やREADY信号生成回路として、前回はK-ichi's memoさんの「MSXでPC用FDDを使う」中のPIC12F675を用いた回路を使用しましたが、FM77AV40SXで常用しているてきとーに。さんの「FM77AV20/40以降のFDD修理というか交換」中のダイオード1個による簡便な変換回路も製作し、両変換回路による違いも確認しました。


実験風景


その結果、手持ちの13台のFDDで確認した結果は以下のようになりました。
(1)両変換回路で動作
 TEAC FD-235HG (7304,7487,8386) 
 SONY MPF920                             
 YE-DATA YD-702D (6637D) 
 MITSUMI D353M3D (3110 2台)
(2)ダイオード1個の変換回路のみで動作
 MITSUMI D353M3 (2552,2553)
(3)PIC12F675の変換回路のみで動作
 MITSUMI D353M3D (4340,6250 2台)
 MITSUMI D359M3D (4372)

何故かMITSUMIのFDDは末尾にDが付いているものは3110のみが動作しましたが、他はどちらかでしか動作しませんでした。設定が異なるのかもしれませんが、MITSUMIのマニュアルが入手できていませんので原因は不明です。
この結果を見る限り、この用途で使う場合にはMITSUMIのFDDは避けた方が良いようです。

運用上の問題ですが、2DDドライブでディスクを初期化しても2Dドライブのヘッド幅の半分しか初期化できないので、2DDドライブで作成したディスクは2Dドライブでは読み書きできない2DDドライブ専用のディスクになるという問題があります。
(全てが2DDドライブのシステムで完結していれば良いのですが、2Dのシステムとの兼用を考えるとこれがネックとなります。)

この問題を解決するために、FM77AV1を入手し、ドライブ2として手持ちの5インチのYD-274(古い!)を接続し、5インチのF-BASICシステムディスクからAV1の3.5インチの2Dドライブで初期化した2Dディスクにシステムをコピーし、元ディスクとしました。
また、上記の実験で使用した2DDドライブで使用するフロッピーもまずAV1の2Dドライブで初期化したものを使用しました。

2019年10月26日土曜日

FM-7でPC用のフロッピードライブを使う

PC用のFDD(2HD,2DD)がFM-7で2Dドライブとして使用できるという報告です


8月26日のブログ「FM77用の拡張I/Oボード、ROM/RAMディスクボードのプリント基板化が完了」の末尾に、プリント基板化を考えているカードとして、MB8877A使用のFDC基板を紹介しました。
そこでは、STEP信号を2倍化すれば、FM-7にPC用のFDD(2DDドライブ)が接続できるのではないかと書きました。

2倍化するための回路をあれこれと考えていたのですが、ディスクリート回路ではどうも無理なようでしたので、マイコンで実現してみることにしました。
考え方としては、MB8877AからSTEP信号が1つ出たら、適当な間隔をあけて2つのSTEP信号を出せば良いので、マイコンなら簡単そうです。

マイコンとしてPS/2キーボード変換器で使ったことのあるATtiny85を用いることにしました。これなら8ピンとコンパクトですので、FDCカードに載りそうですので。
ATtiny85のINT0割り込みはPB2なので、PB2にSTEP信号を入れ、その立ち下がりで割り込みを発生させて、割り込みルーチン内で2つの信号を出すことになります。

回路図です


参考にしたTEAC FD-235HGのマニュアルによると、STEP信号の間隔は最小3ms(方向転換後は4ms?)で、幅は特に規定されていないようですので、下図のように、幅10us、間隔4msで、2つ目の信号の後は4msの待ち時間を入れました。
(FM-7用のドライブのステップレートは6msまたは20msのようですので、本当は、全体を6ms以内に抑えた方が良いのでしょうが、とりあえずの値ということで...)




STEP信号です

ATtiny85のmain.c部のプログラムを以下に示します。

/*
 * StepDoubler.c
 *
 * STEP PULSE for FDD changes to double pulse
 * input pulse
 * -> output first pulse (pulse width is 10us)
 * wait 4ms
 * output second pulse (pulse width is 10us)
 * wait 4ms
 *
 * PORTB bit2:input pulse, bit4:output pulse (double pulse)
 *
 * Original Version '2019.10.25
 * Copyright (C) by Old68fun
 */ 

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define F_CPU 8000000UL

void setup(void)
{
MCUSR = 0x00; /* MCUSRのWDRFを解除(0) */
WDTCR |= (1<<WDCE)|(1<<WDE); /* WDCEとWDEに論理1書き込み */
WDTCR = 0x00; /* ウォッチドッグ禁止 */

DDRB = 0b11111011; /* PORTB bit2:input, bit4:output */
PORTB = 0x00; /* PORTB not pull up */
PORTB |= _BV(2); /* bit 2:pull up */
PORTB |= _BV(4); /* bit 4:pull up */

MCUCR = (1 << ISC01) | (0 << ISC00); /* INT0 interrupt on falling edge */
GIMSK = (1 << INT0); /* Enable INT0 interrupt */
sei();
}

ISR (INT0_vect)
{
// cli();

// first pulse
PORTB &= ~_BV(4); // DATA bit=L
_delay_us(10);
PORTB |= _BV(4); // DATA bit=H
_delay_ms(4);
// second pulse
PORTB &= ~_BV(4); // DATA bit=L
_delay_us(10);
PORTB |= _BV(4); // DATA bit=H
_delay_ms(4);

// sei();

}

int main(void)
{

setup();

while(1) {
}
return 0;
}


FDCの回路図を示します。
【2020年1月21日追記】この回路には一個所間違いがあります。また、動作している実機と同じであることの確認をまだしていないものです。

FM_FDC回路図です(動作確認はまだです)

MB8877AのSTEP出力(ピン15)と7438の入力端子の間に上記のATtiny85を挿入して改造は完了です。

動作中の様子を示します。確かに2Dディスクが読めて、F-BASIC 3.0が起動しています。

                                        
動作中の様子です


FDDの電源も臨時にATtiny85基板から取っています。

基板の右上の小基板がATtiny85です


2DDドライブとしてMITSUMIのD359M3Dを使用しました。
【'2019.10.27追記】末尾に使用可能ドライブについて追記しました。

使用したFDDはMITSUMIのD359M3Dです

なお、FD用ケーブルとFDDとの接続部での端子変換やREADY信号生成には、以前、FM77AV40SX用にと製作したK-ichi's memoさんの「MSXでPC用FDDを使う」中のPIC12F675を用いた回路を使わせていただきました。蛇足ですが、現在はFM77AV40SXにはてきとーに。さんの「FM77AV20/40以降のFDD修理というか交換」中のダイオード1個による簡便な変換回路を用いています。


端子変換、READY信号生成部です


横から見た様子です


手配線の基板なのでIC数はこれで精一杯でしたが、プリント基板化すればATtiny85も収まりそうです。

FDC基板の全景です

これで、大昔に製作したFDCカードをプリント基板化する動機付けができました。
回路図をKiCadで書き上げたところで止まっていましたが、これから基板パターンを仕上げようと思います。

【'2019.10.27追記】ドライブについての情報を追加します。
使用したドライブ
  TEAC FD-235HG, YE-DATA YD-702D, MITSUMI D359M3D, D353M3D
使用可能なドライブ
  TEAC FD-235HG のみFILES,LOAD,SAVEが可能でした。
他のドライブのうち YD-702D, D359M3DはDISK-BASICが起動し、FILES, LOADは可能ですが、SAVEができません。D353M3DはDISK-BASICの起動すらしませんでした。

DATASHEETが入手できたのは FD-235HG, YD-702D のみですが、STEPパルス幅は0.8us, 1.0us(最小値)、パルス間隔は3ms(4ms), 3ms(最小値)でした。
パルス幅を2us~10us、パルス間隔を3ms~5msに変えてみましたが上記の結果は変わりませんでした。
ということで、現在のところ、対応ドライブはTEACのFD-235HGのみということになります。


【'2019.11.01追記】FM77AV40SXのSTEP信号を実測してみました。
ディスクをアクセスしているときのSTEP信号は下図のようでした。

FM77AV40SXのSTEP信号

何とSTEP信号の幅はusのオーダーではなく、1.5msもありました。2つ目のSTEP信号は4.5ms後に出ていますが、FDDの規格では3ms以上ですから余裕があります。次のSTEP信号までの間隔は20msですが、これはFM-7のSTEP間隔20msという規格に合わせてあるのでしょうか。