2020年12月26日土曜日

Z80H 韋駄天用のCP/Mをソースから構成する

 Z80H韋駄天用のCP/Mを公開されているソースから構成しました


Z80Hの作者はX1-CP/Mから韋駄天用のCP/Mを構成されていますが、前回のブログでは、私は手持ちのFM-CP/Mを利用しました。しかし、X1-CP/MやFM-CP/Mから構成する方法では試してみることができる方は限られます。

そもそもCP/Mの本体部分は共通(だと思っています)ですので、公開されているソースからでも構成できるはずです。ということで、以前中日電工の菱田さんのブログを参考にしてCP/Mを構成した時と同じように構成してみましたので、菱田さんのブログの記事を参照しながら私の行ったその手順を解説します。

[1]ソースからバイナリを作成する

(1-1)ソースとアセンブラを入手する

公開されているページからソース cpm2-asm.zip をダウンロードします。(中日電工のブログ第17,18回 以下同様)

使用するのはこれを展開してできるファイルのうちの cpm22.z80 です。

アセンブラはVectorで入手できるZASM1.64を使用します。

(1-2)ソースのエラーを修正する(第19,35,36回)

このままアセンブルするとエラーが生じますので数箇所を修正します。

・END文の追加

・ラベルHALTをHLTに変更

・NFUNCTSの定義文を前方に移動

・CKSUMTBL: DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 を次の2行に分割する

  CKSUMTBL: DEFW 0

      DEFB: 0,0,0,0,0,0,0,0,0,0,0,0,0,0

・ADD A,M をADD A,(HL) に変更(3箇所)

ブログ中のその他の変更はND80Zのためのものなので不要です。

(1-3)60K-CP/M用に設定する

先頭の MEM EQU 62 を60に変更する。

(1-4)アセンブルする

以上の修正を加えたソース(cpm60k.txt)をWindows上でアセンブルします。

>msdos zasm -L -Ccpm60k.bin cpm60k.txt

(1-5)得られたBINファイルの末尾256バイトを削除する

末尾の BIOS JUMP TABLE の部分はIDATENシステムの方で用意されるので不要です。

できあがったファイルは$0000~$15FFの6KBとなります。


[2]CP/Mディスクを作成する

(2-1)ソースを入力してアセンブルする

「6809活用研究」のZ80Hの記事中にはIPL20, CONFIG, BIOS14, KER14 のソースが掲載されていますので、それを入力してアセンブルします。

(2-2)システムディスクのイメージの作成

バイナリエディタなどで320KBサイズのディスクイメージを作成して、次の順にファイルを書き込みます。

・$0000 - $00FF に IPL         (TRK:0, SCT:1)

・$0100 - $16FF に cpm60k  (TRK:0, SCT:2 - 23)

・$1700 - $1CFF に bios14    (TRK:0, SCT:24 - 29)

・$1D00 - $1EFF に config    (TRK:0, SCT:30 - 31)

・$2000 - $3BFF に ker14     (TRK:1, SCT:1 - 28)

・$4000 以降(TRK:2以降)はDirectoryとProgram&Dataなので、様々なブログで公開されているCP/Mシステムからコピーすることで、トランジェントコマンドやアプリケーションが設定できます。

韋駄天システムはX1-CP/Mを元にしているので、システムのセクタが他のCP/Mとは異なり1セクタ前にずれています。(はせりんさまに教えていただきました。ありがとうございました。)

 最後に、$1CFFの値を$3C(60)に変更します。これは起動時に60K CP/Mと表示される値です。

(2-3)システムディスク、あるいはシステムイメージファイルの作成

私は以前のブログに書きましたように、ドライブ0にGOTEKを使用していますので、できあがったイメージファイル(.DSK)を.88ファイルに変換して、さらに.hfeファイルに変換してUSBメモリーに書き込めば終了です。

フロッピーディスクをお使いの方はイメージファイルをそのままディスクにベタに書き込めば良いのですが、その方法としては、RS-232Cカードや以前のブログでも紹介していますFT-245カードを使ってFM77やFM-7に転送して書き込むことになりますが、転送時間がかかっても良ければF-BASICのプログラムを組めば良いので、詳細は省略させていただきます。




試作第1作は修正箇所が見えていて見苦しかったので、作り直すとともにCPUをZilog Z84C0020PECに交換しました。



韋駄天システムは最終的には64K-CP/Mとなるのですが、今のところまだ60K-CP/Mのままです。

これで、ハンダ付けを伴う製作と雑誌記事からのソフトの入力の手間をを厭わなければ、FM77で8MHz動作のCP/Mが走ることになります。





2020年12月19日土曜日

Z80カードの第4作は77AV用のZ80Hカード(韋駄天)

 懲りもせずに、さらにZ80カードを作ってみました!

[12月21日追記]CP/Mも走りました!(はせりんさんのアドバイスのおかげです)


今回のZ80カードは、ほうめいさんによる77AV用のZ80Hカード(韋駄天)です。

「6809活用研究(工学社)」掲載の記事を見て、いつかは作ってみたいと思って記事のコピーを保存してあったのですが、ほうめいさんのブログ「まごころせいじつ堂」に回路図の訂正が載ったのを見て、ついに作ってみることにしました。

(うまく行けば、私の常用機であるFM77AV40SXでもCP/Mが走るかもという甘い希望を持っていますがどうでしょうか。) ←コネクタが違っていました。残念!


ハードの製作

ブログの回路図を元にしてKiCadで回路図を描き、ICの配置もブログの写真通りにしてプリント基板を製作しましたが、メモリーICを128KBに変更することで何とか10x8cmのサイズに収めることができました。

Z80Hは手持ちがありませんでしたので、古いD780C-1を使用してみましたが不思議なことに8MHzクロックのままで動作しています。

しかし、いつものようにポカをしてしまい、128KBメモリーのプルアップすべきCS端子をプルダウンしてしまったので、パターンカットや追加配線が必要となりました。




画像では、とりあえずメモリーのピン30を抜いて+5Vに接続していますが、こんなこともあろうかと作り直しを前提に、普段はTTL ICには使用しないことにしているソケットを使用しています。


FM77AVに装着した様子です。高さを8㎝に抑えたので、装着した状態でカバーを閉じることができます。

「6809活用研究」にはF-BasicのTiny Monitorも載っていましたので、入力して走らせてみました。



画像のように、コマンド M, D, S, R が機能していますのでハードは正常に動作しているようです。


CP/Mの移植

CP/Mの移植に必要なソフトも「6809活用研究」に載っているので、BIOS等はそれらを打ち込めばよいのですが、CP/M本体はX1用のものを使用することになっています。

もちろんX1用のCP/Mは所有していないので、最初に手持ちのFM-CP/Mのディスク中のFMCPM605.SYSが5インチ用の60K_CP/Mかと思って適用してみたり、動いている56K_CP/Mから60K_CP/Mを作成して適用してみたりしましたが、うまく行きません。さらに、CP/M2.2のソースをアセンブルしたものを適用したりしましたが、やはり動作しません。

ということで、CP/Mの移植については挑戦中ということで、先にそのまま入力していたBIOSなどのソースを改めて読んでいるところです。

[12月23日追記]FM-CP/Mの60K版を元にしたものが動作しましたので、次の課題は公開されているソースをアセンブルしたもので動作させることですね。


最後に

回路やソフトを公開して下さったほうめいさんに感謝いたします。

とりあえず製作した試作第一作の不完全なプリント基板(ミスがあるためパターンカットと追加配線が必要なのと、シルク印刷が不十分)ですが、余分が数枚ありますので、もしご希望の方がおられましたらメールで連絡を下さい。返信用封筒に切手を貼って送ってくださったら無料でお送りします。


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からの受信ルーチンも含まれていますので、更なる用途も考えられると思います。

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年10月11日日曜日

F-BASIC版のP-ROM Writerカード用ドライバが完成

 

F-BASIC版のP-ROM Writerカード用ドライブソフトも作りました


9月16日のブログで、P-ROMライター用のドライブソフトが完成したと書きましたが、それは、私が常用しているFlex9上で動作するものでしたので、オリジナルのOS-9版と同様、一般的ではありませんでした。
そこで、普段はほとんど使うことがないF-BASIC上で動作するものを作ろうとしたのですが、Flex9ではデータバッファとして32KBを確保できたのに対してF-BASICでは$8000番地から上がROMですのでそんなには取れません。
初めは裏RAMを使用することを考えたのですが、それでも32KBは無理です。(32KBにこだわるのは27256の容量だからです。)
結局、裏RAM使用は止めて少ないバッファ容量に合わせてデータを分割して読み込み、複数回の書き込みをすることとしました。(Flex9版でも27512では2回に分けて書き込んでいます。)
下図で分かりますように、バッファ容量として8KB確保しましたので、2716, 2732, 2764は一回で書き込めますが、27128では2回、27256では4回、27512では8回の書き込みを繰り返すことになります。







これに合わせて、Block選択コマンドを追加しました。(1ブロックは8KB)0を選択すると自動的に書き込みを繰り返して全ブロックを書き込みます。0以外では選択したブロックのみを書き込みます。
また、書き込むデータも全体をメモリ上には置いておけず、機械語ファイルとしてディスクに保存することになりますので、そのファイルのLoad, Saveコマンドも追加しました。
さらに、データファイルを8KB単位に分割して機械語ファイル形式に変換するためのソフトも別途必要です。

結局、実装したコマンドは Info, Type, Block, Pwidth, Dump, Erase, Read, Write, Verify, Load, Save, Quitの計12個となりました。


27512を選択した例を示します。




ブランクチェックをした後、書き込んでいます。
ブロック1から8までを連続して書き込んでいます。




ドライブソフトですが、ほとんどの機能を機械語サブルーチンに任せているので、BASIC部は基本的に初期化とコマンド選択・実行準備だけという簡単なものです。

BASIC部を示します。



機械語サブルーチン部を示します。


また、P-ROMに書き込むデータはF-BASICの機械語データ形式なので、先頭が 0x00,データサイズ(2bytes),書き込みアドレス(2bytes)の計5バイトで始まり、その後にデータ本体が続き、末尾が 0xFF,0x00,0x00,0x00,0x00の計5バイトで終わる形となります。
Windows上でデータファイルを8KB毎に分割し、上記の機械語形式に合わせて先頭と末尾に必要な各5バイトを追加するためのツールソフト spltdat.exeを作成しました。

以上より、私の場合のP-ROMに書き込む標準的な手順をまとめると、
(1)Windows上で書き込むバイナリデータを作成する。
(2)spltdat.exeで8KB単位のデータファイルに分割する。
        元ファイル ROMDAT --> 変換後ファイル ROMDAT1, ROMDAT2,...,ROMDAT8
(3)作成されたデータファイルをFM-7に転送する。
     転送手段としてはRS-232Cカードを使用できますが、それ以外にも思い付きハードでソフトに七転八倒さんによるFT-245使用の高速転送カードやArduinoMega2560使用のカードも使用できます。
(4)ドライバ PROMWRと書き込みデータを同じディスクに入れておいて、PROMWRを起動する。
(5)P-ROMの種類、書き込むブロック範囲、書き込みパルス幅を指定して書き込む。
以上です。
もちろんF-BASIC上で書き込みデータを直接作成して、そのまま書き込むこともできますが、その場合には$5000~$6FFFのバッファにデータを置き、一旦SAVEMで末尾にブロック番号を付けたファイル名で保存する必要があります。

作成した 書き込みソフトPROMWR, PWRSUBとツールspltdat.exeをOneDriveに置いておきます。なお、PROMWRはF-BASICのASCIIセーブ形式、PWRSUBは機械語データ形式になっていますので、そのままでF-BASICのディスクに保存できます。

2020年9月16日水曜日

P-ROM Writerカードのドライブソフトが完成

 ようやくP-ROM Writerカード用のドライブソフトが完成しました


6月26日のブログで紹介したP-ROM Writerカードですが、元になった記事ではOS-9上のソフトでコントロールしていました。
その際には、とりあえずOS-9 Level1で動作させて27C256に書き込めることを確認しましたが、OS-9上ではなく他のOS上で動作するドライブソフトを作成する必要があると考えていました。
また、ブログには2716の書き込みができていないと書きましたが、その原因は使用した270uHのインダクタにあり、流れる電流が許容値を大幅に超えており、かなりの発熱が生じていたために25Vが安定しなかったことにありました。

ハードの不具合が解消できたのでソフトの作成にかかりました。
最初はOS-9上のソフトを手直しすれば良いと考えていたのですが、他の方の制作したソフトを読むのは結構難しくて、結局、一から作ることになりました。

制作したドライブソフトは使い慣れているFlex9上で動作するもので、コマンドとして以下の13個を用意しました。
Type, Erase, Pwidth, Info:ROM指定、Blankチェック、書き込みパルス幅指定
Info:ROM種他の設定値の表示
Read, Write, Verify:読み出し、書き込み、ベリファイ
Dump, Fill, Memory:バッファのダンプ、フィル、データ変更
Load, Save:ファイルのロード、ファイルへのセーブ
Quit:終了

これらのうち、Info(設定値を表示)とPwidth(書き込みパルス幅を設定)以外は元のドライブソフトと同様な機能です。(Memoryはスクリーンエディタではありませんが...)

対応しているROMは2716, 2732, 2764, 27128, 27256, 27512の6種ですが、27128は手持ちがないので動作確認はできていません。
バッファサイズとして32KB用意してあるので27256までは一回で書き込めますが、27512は2回に分けて書き込むことになります。(27512の指定時に書き込みエリアの前半・後半を選択します。)

起動してROM種を選択している様子です。


ライター全景です。
左が68B21が載ったI/O拡張カードで、右がP-ROMライターカードです。



2732に書き込んでいる様子です。ジャンパー線でVPPを21Vに設定しています。




カード上でのROMの選択は20PのICソケット上でのジャンパーで行いますが、書き込み電圧VPPの指定だけはROM毎に確認してジャンパー線で設定する必要があります。特に2732や2764は要注意です。

【参考】
VPP値ですが、手持ちのADVATESTROMライタ付属のROM一覧表で調べてみると、
・2716   25V ----------------------------- 25V
・2732   25V, 21V ----------------------- 25V,21Vのどちらか要確認
・2764   25V, 21V, 12.5V, 12.75V -- ほぼ21Vだが一部25Vあり
・27128 21V, 12.5V, 12.75V, 13V -- 21V,12.5Vのどちらか要確認
・27256 21V, 12.5V, 12.75V --------- ほぼ12.5Vだが一部21Vあり
・27512 12.5V, 12.75V, 13V --------- 12.5V
と様々です。
271625V2751212.5Vと決め打ちしてて良いようですが、他はほぼ2種類あります。
 
また書き込みパルス幅ですが、27256以降は1msで書き込めますが、それ以前のものはパルス幅を大きくする必要がありますので、パルス幅も設定する必要があります。


コマンドの実行例を示します。

リードコマンドとライトコマンドです。
進行状態を表すために1ページ(256バイト)読み書きするごとにドット(.)を表示しています。




ダンプコマンドです。
以前作成したモニタコマンド中のルーチンを流用しているために、16バイトごとのチェックサム表示という余分な機能も付いています。



メモリーコマンドです。
これもモニタコマンド中のルーチンの流用です。書き込みデータを表示・編集できます。Pキーでアドレスを戻すことができます。また、テンキーの「*/+-=,」はA-Fとして扱われます。



これで一応、2716から27512までのEP-ROMのライターのハード、ソフトが完成したと言って良いかと思いますが、ソフトについてはオリジナルがOS-9上、今回制作したものはFlex9上で動作するものですので、一般的ではありません。
F-Basic上で動作するソフトが作れれば良いのですが、私の手には余ります。
今回のFlex9版の実行ファイルと共にソースファイルをOneDriveにアップしておきます。

2020年8月18日火曜日

Atmel StudioからArduinoを用いてATtiny85に書き込む

Atmel StudioからArduino UNOを書き込み器として用いてATtiny85に書き込む


私の場合はATtiny85に書き込むツールとしてTL866ⅡPLUSを使用しているのですが、Arduinoで書き込みができないかという声がありましたので、試してみました。
やりたいことはAtmel Studioでプログラムを作成し、それを書き込み器として設定したArduino(ArduinoISP)でATtiny85に書き込むということです。

(1)Arduino UNOを書き込み器として設定する。


「ファイル」→「スケッチ例」→「11.ArduinoISP」からArduinoISPを選択
「ツール」→「ボード」でArduino UNOを選択
「ツール」→「シリアルポート」でArduino UNOが接続されているポートを選択
「ツール」→「書込装置」でAVRISP mkIIを選択
スケッチをコンパイルして書き込む。
これでArduino UNOが書き込み装置になりました。

(2)ArduinoにATtiny85を認識させる。


「ファイル」→「環境設定」の設定タブ中の「追加のボードマネージャのURL:」に
「http://drazzy.com/package_drazzy.com_index.json」を書き込み、OKボタンを押す。(もう既に設定済みのものがあれば次の行に書き込みます。)
「ツール」→「ボード」→「ボードマネージャ」でフィルタにATtinyCoreと入力し、現れたATTinyCoreをインストールする。
「ツール」→「ボード」でATtiny25/45/85(No bootloader)を選択
「ツール」→「書込装置」でArduino as ISPを選択

(3)ArduinoにATtiny85を接続する。


        次のように接続します。(画像参照)
        Arduino UNO ATtiny85
        13 <----------> SCK 
        12 <----------> MISO
        ~11 <----------> MOSI
        ~10 <----------> RESET
        5V <----------> VCC
        GND <----------> GND







以上でArduino側の準備は終了です。
(もちろん、電源は入れたままにしておきます。)

(4)Atmel Studioの設定


「ツール」→「外部ツール」で次の3項目を設定

設定例
タイトル:ArduinoISP(ATtiny85)
コマンド:C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe
引数:-c avrisp -P COM6 -b 19200 -p t85 -U flash:w:$(ProjectDir)Release\$(TargetName).hex:i -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m
(COM6はArduinoが接続されているポート、t85はATtiny85、3つのfuseの値は適宜設定)
さらに、「出力ウインドウを使用」にチェックを入れます。「起動時に引数を入力」にチェックを入れると書き込み時に引数を変更できますが、かえって面倒かもしれません。

これで、「ツール」メニュー中にArduinoISP(ATtiny85)が現れます。
[注意]これは書き込む条件、チップ毎に設定する必要があります。

しかし、私の場合、これだけではconfigファイルがないというエラーが出ましたので、C:\Program Files (x86)\Arduino\hardware\tools\avr\etc中にあるavrdude.confをavrdude.exeのあるフォルダにコピーします。

(5)書き込み


Releaseモードでビルドしてhexファイルが作られましたら、「ツール」メニュー中のArduinoISP(ATtiny85)を選択するとhexファイルが書き込まれます。
Atmel Studioの出力ウインドウにメッセージが出ますので、書き込まれていることを確認できます。

[参考にしたサイト]
ArduinoISPの設定方法についてはAnalogic Intelligence Z80-MBCの作成 其の参を、
Atmel StudioへのArduinoISPの設定方法についてはシナプスのハード製作記を参考にさせていただきました。ありがとうございます。

2020年8月9日日曜日

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

FM-7やFM77に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年7月18日土曜日

ArduinoMega2560カードの紹介その後のその後

4月10日に紹介した「ArduinoMega2560カードの紹介その後(完結編)」で完結したつもりでしたが、その後行ったいくつかの試みを紹介します。
(1)部品配置を多少変更した新しい基板を製作しました。
(2)リフレッシュの方法を変更してみました。
(3)任意のファイルを指定してArduino2560からFM-7に送り込めるようにしました。

(1)ですが、USBケーブルを挿入しやすくするためにArduino2560カードの位置を少し左に移動し、カード上のリセットボタンが押しにくかったので基板上にリセットボタンを新設しました。
(2)ですが、リフレッシュ法を桜井さまが試された方法に変更してみました。
オリジナルのカードの考案者であるFS-Micro Corporationの桜井さまはDRAMのリフレッシュについて2つの方法を試みられました。
一つ目はMega2560の割り込みを用いる方法で、これはリフレッシュの仕様を完全には満たすことができない上にCPUがほとんどリフレッシュにかかりきりになってしまうので実用的ではないとのことです。二つ目はPICを増設しそれによってハード的にリフレッシュ信号を作るというもので、これは完全にリフレッシュの仕様を満たすことができ、CPUにも余裕があるので良い方法だそうです。

参考までに、桜井さまから頂いたPICを使用した基板を示します。


PIC使用の基板



しかし、FM-7上でArduino2560を動作させてメモリデータを読み出したり、データやプログラムを送り込んだりさせたいと考えていた思い付きハードでソフトに七転八倒のshujiakitaさんや私にとっては、殆どのCPU時間をリフレッシュに取られるにしても、残りのわずかな時間にデータ等の読み書きができて、その後6809に戻れれば良いので、ソフトのみでリフレッシュを行う手法もそれなりに有用だと考えました。

(3)ですが、任意のファイルをArduino2560が読み込んでFM-7のメモリに書き込めるようにスケッチを変更しました。

ということで、PICの追加なしでソフトのみでD-RAMのリフレッシュを行なうArduino2560カードを、WindowsとFM-7の間でプログラムやデータのやり取りを行うツールとして製作しました。


新基板
新基板


使い方ですが、Arduino2560へのスケッチの書き込みに使用したポートをそのまま使用しますので、TeraTermのポートをそのポートに指定し(もちろん、ArduinoIDEのポート指定はずらしておきます)、バイナリ指定をしてファイル送信を実行します。
送信するファイルの先頭には保存アドレス(2バイト)、ファイルサイズ(2バイト)を付けておきます。

動作中の様子


下のFM-7の画面で分かりますように、RUN直後にArduino2560に切り替わり、処理が終了した後、6809に戻り20行のLISTを実行しています。もちろん、複数回実行してもちゃんと6809に戻ってきます。


転送後に6809に戻っている


TeraTermの実行画面です。
データファイルの先頭4文字の保存アドレス、転送バイト数を読み取り、以降のデータを指定アドレスに書き込み、その後、そのデータを読み出しています。
続いてBOOT ROMの内容を読み出した後、6809に戻っています。


転送結果


以上、動作的には以前の割り込みを使用しないソフトでのリフレッシュ法の場合とそれほど違ってはいないように見えますが、不完全かもしれませんが正式のリフレッシュ法を用いているという安心感が得られました。

なお、割り込みによるリフレッシュ法の詳細とその適用結果については、FS-Micro Corporationの桜井さまがブログのArticle#256~265の10回に亘って詳細に解説されていますので、そちらをご参照ください。本稿に直接関係するのはArticle#261です。


2020年6月26日金曜日

FM-7/77用拡張PIAボードとP-ROMライタ

FM-7/77用拡張PIAボードとP-ROMライタの製作


P-ROMライタは持っているので、まれに必要になる2716のような古いデバイスも書き込みができるのですが、古い機種(ADVANTESTのR4945A)ですのでパソコンとの通信速度が9600baudと遅く、4MbitのROMを焼くときには読み込みに時間がかかりすぎて使う気になれません。
ということで、昨年TL866ⅡPLUSを購入しました。これは実に優秀で使い易くてしかも安いので言うことなしと言いたいのですが、残念なことに2764以前には対応していません(メーカーによりますが)。
大昔は自作の8ビット機用にROMライタボードを製作して使用していたこともあり、いつかは作ろうと思ってはいましたが実行する機会がありませんでした。
先日、プリント基板をまとめて発注することになり、ついでにということでROMライタ基板も作成しました。

元にしたのはマイコンピュータ「OS-9活用テクノロジー」(CQ出版社)中の「P-ROMライタ/エディタの製作(阿部英志著)」です。これは、2716から27512までに対応していますが使用するROMに応じてジャンパプラグを差し替えるというもので、その分簡素な回路になっています。

FM-7/77からはPIA(68B21)ひとつで制御するようになっているので、この部分を切り離して汎用の拡張PIAボードとし、フラットケーブルでROMライタボードと接続する形にしました。
(一体化して10x10cmのサイズに収めたもののプリント基板も一緒に作りましたが、製作の予定は今のところありません。)

回路図


拡張PIAボード


拡張PIAボードはFM-7/77の32Pコネクタに接続して使用するもので、FM-7では未使用のアドレス$FD9CにPIAのポートAを割り当てています。

P-ROMライタ

P-ROMライタはVPPの25V, 21V, 12.5VをTL497Aで作り出し、D-FFのLS273でアドレスとデータをコントロールしています。(TL497Aというのがいかにも古いという感じですが、幸い手持ちがありましたし、何と今でも入手可能なデバイスのようです。)


製作した基板


下左:拡張PIA基板 下右:P-ROMライタ基板
上:一体化した基板(製作予定なし)


いつもどこかでドジをする私ですが、今回は2SC1815のフットプリントが2.54mmピッチでなく1.27mmピッチであったことに気づかずにそのまま利用したり、ピッチが5.08mmの270uHや220uFのピッチを2.54mmにしたので、ハンダ付けがとてもしにくい部分がありましたが、配線パターンのミスはなかったようです。(部品を入手してから基板の設計をすべきなのですが、大体が逆のパターンになってしまいます...)


拡張PIA基板の動作テスト


まず拡張PIA基板を製作し、動作テストのつもりで、以前紹介した、PIAを用いてI2C通信によってRTCから時刻の読み出し/書き込みをするアセンブラプログラムを走らせてみました。


拡張PIA基板の動作テスト



Flex9上でRTCを読み書き


正常に読み書きできましたので、このPIAボードが正常に機能していることが確認できました。


P-ROMライタ基板の製作


続いてP-ROMライタ基板を仕上げ、ジャンパプラグも2716用、2732用、2764用、27256用の4種類を作成しました。20Pの丸穴ICソケットを利用しています。



完成した基板

ジャンパプラグ
(左から2716, 2732, 2764, 27256用)


動作風景


試しにP-ROM 27C256を書き込んでみましたが、正常に書き込むことができました。
ただ、今のところ2716にはうまく書き込めていません。(手持ちの2716が古すぎるせいなのかも...)


ドライバソフト


このROMライタのドライバソフトはOS-9上で動作するもので、コマンドも多く、データのスクリーンエディットもできるなど機能豊富なものですが、OS-9は一般的ではないので、他のOS(?)に移植しなければなりません。
とりあえずそのままOS-9上で動作させるということでしばらく触れていなかったOS-9を走らせてみましたが、使い方をかなり忘れてしまっていて、思い出すのに苦労しています。
(でも

2020年6月10日水曜日

FM-7用Z80カードの第3作を製作

富士通の回路を10x8㎝に収めたCP/Mカードを作ってしまいました

3月13日のブログ「FM-7用Z80カードの第2作などを製作」で紹介したI/O誌の記事を元にしたZ80カードでは富士通のCP/M-80が動作しましたし、特に不満はなかったのですが、実は、「F-BASIC解析マニュアル フェーズ2」に掲載されている富士通純正のCP/Mカードの回路図も、いずれ製作するつもりでKiCadで回路図を作成してありました。

しかし、IC数が19個と多いので10x10㎝の格安基板には収まりそうもなく(富士通純正のCP/Mカードのサイズは124x78mmです)、製作費を考えて二の足を踏んでいました。
でも10x10㎝以内のサイズに無理やり押し込んでみたらどうなるかと試してみたところ、何とか10x8cmのサイズに入りましたので、作ってみることにしました。

いつもですと電源ラインだけは太い線で手配線し、残りはFreeRouting.exeに任せるのですが、今回は電源ラインも太くする余裕もありませんし、また、いつも全ICにつけているパスコンもオリジナル回路を忠実に再現するということで少なくなっているので、安定して動作するかという点では不安がありますがとにかく作ってみたものが下の画像です。


製作した基板と完成基板


ICの配置はオリジナルと同じにしてありますし、他の部品もできる限り同じ配置になるようにしてあります。ご覧のように、これ以上は小さくできないというサイズです。

左:純正基板 右:製作した基板


左が純正のZ80カードで、右が製作したコンパクトサイズのZ80カードです。高さは同じ8cmで幅が10㎝と狭くなっています。


動作中の様子1



動作中の様子2


動作中の様子です。私としては珍しくミスがなく、組み立てたらすんなりと富士通のCP/M-80が動作しました。
まだ十分にテストしていませんが、今のところ純正基板と同様に動作しているように思えます。しかし上記しましたように、安定動作するかどうかはまだまだ確認する必要があります。

ということで、2種類のZ80基板を作ってしまいましたが、余った基板は現在発注してある40Pコネクタと共に配布する予定です。
(40Pコネクタが届くのが待ち遠しいです。今回は、以前作った基板から40Pコネクタを外して使用しました。)

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の故障等の心配をすることなく、安心して使用し続けることができます。(と言っても、フロッピーそのものがいつまで使用できるかが問題ですが...)