2022年11月18日金曜日

FM-7,77,AV用増設サブシステムカードの製作

Oh!FM誌の1989年8月号から1989年12月号までに連載された「増設サブシステムカード」を製作しました

知人から上記の記事を紹介され、製作してみたいと思って部品(V9938やそれ用の64ピンソケット、64Kx4bitのD-RAM、そして21.47727MHzの水晶振動子など)を既に集めていると言われたのですが、記事を読むと使用しているビデオディスプレイプロセッサ V9938は64ピンのシュリンクソケットですし、D-RAMは3段重ねの実装ですので手配線では難度が高いと判断し、プリント基板を作成することを提案しました。

6個のD-RAMを並べ、V9938の64ピンシュリンクソケットを配置しても100x80mmのサイズに収まりましたので、これで行けると判断してプリント基板を発注しました。

しかし、いつものようにドジをしてしまい、9ピンD-Subの取り付けを裏面にすべきだったのを表面に配置してしまいました。幸い左右対称ですので、無理矢理裏面に実装することにしましたが...

出来上がったのがこの基板です。


V9938基板


それ程無理をせずに配置できています。記事ではシールド線を使用しているV9938から9ピンD-Subへの配線を基板左端に集めてあり、もしこの配線ではノイズが乗ってダメな場合にはこの配線をカットしてシールド線で追加配線できるように考慮してあります。

実装した状態が下画像です。

実装済み基板


まず、知人が製作して動作テストを始めてくれましたが、全く動作しないとのことでした。プリント基板のパターンを追いかけたところ、当初、記事中の回路図にミスがあり、そのままで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の切替用のつもりです。


ディスプレイ切り替え回路


私の興味の範囲は言語とプログラミングで、グラフィックは難しそうで近寄らないことにしていたのですが、今回このような回路を製作してサンプルプログラムを走らせてみると、グラフィックも結構面白そうだなと感じるようになりました。

以上、大昔のOh!FM誌に掲載されていた増設サブシステムカードを知人と協力して製作してみたという紹介でした。


2022年10月29日土曜日

FM77AV40SX用GOTEKのドライブ番号切り替えケーブルの製作

 FM77AV40SXのGOTEKのドライブ番号を0または2に切り替えられるようにしました

今までは、ドライブ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用の場合とほとんど同じです。


ケーブル結線図



装着した状態を示します。SXからのケーブルのドライブ0用のコネクタに作成したケーブルを接続し、中間のコネクタをFDDに装着して、端のオスコネクタにGOTEKからのケーブルを接続しています。
ちなみに右上の基板はFT245使用の高速通信カードで、左の基板は最近製作した512KBのRAMカードです。



装着の様子


動作中の様子です。押しボタンが戻っている状態でFDDが、押し込んだ状態でGOTEKがドライブ0になります。0でない方のドライブは2になって、合計3台構成となります。



動作中


以上で、通常はGOTEKから起動して運用し、必要な場合は切り替えてFDから起動することができるようになりました。また、FD同士のコピーも楽になりました。



2022年10月21日金曜日

FM77AV40用512KB増設RAMカードの製作

FM77AV20/40用の512KB増設RAMカードを製作しました

【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カードの場合


まだ詳細なメモリテストを済ませていませんが、一応、動作しているように見えますので、
512KBのSRAMと48ピンのコネクタが入手できれば、割と簡単にメモリの増設ができるという紹介でした。

2022年10月20日木曜日

FM-7にPTMを増設してASSIST09のトレースコマンドを実現

 FM-7にPTM(68B40)を増設してASSIST09のトレースコマンドを実現しました

【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をばらした際に基板から外して保存してあったものです。これを接続して、画像のような形で使用します。


使用形態


これで、無事に動作しました。

トレースコマンド実行画面


いつものようにミスをしながらも、何とか動作させることができましたので、FM-7での機械語プログラムのデバッグが楽になると期待しています。

そもそもスロットの端子名だけで使えると誤解した私の知識不足が原因であるわけですが、少しでもどなたかの参考になればと思い、あえて紹介することにしました。


2022年9月27日火曜日

FM-7用の32Pスロット拡張基板の製作(第5作)

 32Pスロット拡張基板の第5作目です(ついに最終版?)


2022年3月1日の「FM-7用の32Pスロット拡張基板の製作(第4作!)」で紹介した拡張基板ですが、これで終わりにしようと考えていました。

しかし、使用していると、本体の50P拡張コネクタからのケーブルをあまり長くできないので不便を感じることがありました。ということで、拡張ベース基板上にスペースが十分ありますので、データ線と制御線にバッファを追加することで50Pケーブルを長くしても動作するようにしたいと考えました。さらに、FM-7本体の32Pスロットには+12V,-12V電源も来ているので、私的には特に必要はなかったのですが、ついでに12V電源も追加して本体の32Pスロットとの完全互換を実現することにしました。

製作した基板を示します。


拡張コネクタベース基板



32Pコネクタ拡張基板


製作したベース基板の回路図です。

ExConnBase51


正負12V電源用のDC-DCコンバータとしてMAU109(秋月電子で購入)を使用することにしました。これについては、カベキンブログの「富士通 FM-7用32Pスロット拡張基板に±12Vの電源を追加」(2022年4月6日)を参考にさせていただきました。カベキンさまに感謝いたします。


相変わらずミスがあって、、、

実は製作したプリント基板にはミスがあり、なかなか動作しませんでした。上記の回路図はそのミスを修正したものです。
単純なミスのU2(74LS541)のEXTDETとIRQの入出力の向きが逆であることはすぐに分かったのですが、最後の一つはなかなか分かりませんでした。
FM-7に接続すると、殆どの場合起動しないのですが、ごくまれに正常に起動するのです。しかも、起動した場合でもU5(74LS245)だけが異常に熱くなるのです。
プリント基板上の配線を何度見直しても異常はありません、試作品という事でICソケットを使用していましたので、74LS245を交換してみましたが変わりません。ついには追加した12V電源の存在を疑って、MAU108を取り外したりしてみましたが変化はありません。

あれこれと2日間も悩んだ挙句ようやく原因に気づきました。
何と、U5(74LS245)のCE端子をGNDに落としていました。これによってU5が常にアクティブになっていて、FM-7本体のデータバスと衝突したために発熱していたという事なのでした。(相変わらずいつもどこかでドジをしています。。。)

修正してようやく動作した

U5のCE端子をIOS0に接続することによって、ようやく正常に動作するようになりました。期待した通り、50Pフラットケーブルを長くしても正常に動作しましたので、配置などの取り回しが楽になりました。

32Pコネクタ拡張基板の方は、コネクタの数を第4作の3個から4個に増やしてみました。これは、バッファを追加したことでドライブ能力が大きくなった(?)と期待してのことです。さらにコネクタを増設できるような端子が2箇所ありますが、これは富士通のFCNコネクタ(現在は入手が極めて困難です)を使用せずに、通常のコネクタとピンヘッダでも使用できるようにと考えてのことです。

最終と考えているこの基板ですが、最終基板に修正用のジャンパ線が走っているのは嬉しくないので、修正した回路でもう一度基板を発注しました。(今度こそ最終版にしたい...)

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スライドスイッチが必要です。
また、本文中に書きましたように、対応していないドライブがあることをご承知おきください。


2DDドライブ用ステップ信号2倍化回路をFDD2台に対応させました

 2DDドライブ用ステップ信号2倍化回路を2台のFDDが接続できるように改良しました

2020年7月29日の「2DDドライブ用ステップ2倍化回路のその後」で紹介しましたステップ2倍化回路ですが、ドライブ毎にそれぞれ2倍化基板が必要となるのは煩雑なので、1枚の基板でドライブ2台を制御できるように改良しました。

最初は単純に2回路を1枚の基板に収めたものを製作して使用してみましたが、これは如何にも大きすぎて、扱いにくいものでした。


左:従来のもの 右:最初に製作した2回路版

そもそも、よく考えてみるとATtiny85が2個も必要なわけではありませんでした。ということで、回路を見直した結果、現在の基板と同じサイズに収めることができました。

その回路を示します。

FDD2台用回路


次に製作した2台用基板


右端の34PコネクタにFDCからのケーブルを、左端のコネクタとその隣の上向きのコネクタに2台のFDDへのケーブルを接続します。上下に出ている4PはFDD用の電源ケーブルです。
(FDD用のコネクタが左と上に向いているのは、当初、左向きのコネクタをメスにしてFDDに直接装着することでケーブルを省略できると考えていたからなのですが、それはそれで使いにくい面もあり、結局ケーブルで接続する形にしています。)

ドライブ番号は0~3から指定でき、それぞれStep信号2倍化回路を通すか通さないかを選択できますので、PC用の2DDのFDDのみでなくGOTEKや2Dのドライブも接続できます。
(GOTEKを使用する場合は、常に本体のドライブ番号はS0ではなくS1にセットしておきます。)

下画像はGOTEKをドライブ0に、PC用FDDをドライブ1に指定して、自作のFDCカードに接続した様子です。


使用中の様子

長いケーブルを使用したので、結構ゴチャゴチャに見えますね...

でも従来の基板と同じサイズのもので2台のFDDが制御できるようになったので、目的は達成できました。


2022年9月15日木曜日

自作クロスアセンブラの修正とASSIST09のFM-7への移植

 ASSIST09がアセンブルできるように自作クロスアセンブラを修正し、FM-7に移植してみました

【9月20日訂正】末尾に訂正が一個所あります。

発注しているプリント基板ができあがるまでハードいじりは措いておいて、いつかは直そうと思っていたソフトの修正に取り掛かりました。

まずは6809用のクロスアセンブラですが、以前、「必要に迫られて自作したアセンブラ等のツールソフトの紹介(2021年9月1日)」で紹介したもので、ASSIST09のソースをアセンブルする際にはそのままではアセンブルできず、ソースを修正する必要がありました。

例えばASSIST09のソースの1684行は

FCB 'H,$01,'H,$01,'H,$00,',,$00 --> $48,$01,$48,$01,$48,$00,$2C,$00 になって欲しい

となっていますが、この中の「',」が$2Cとならずに区切り記号と解釈されてしまうのです。ですので、アセンブルする際には「',」を$2Cと置き換えてアセンブルしていました。

ちなみに、使用者が多いと思われるアークピットさんのX6809でもこれは正常にアセンブルされません。アセンブル結果は次のようになります。

$48,$2C,$24,$30,$31,$2C,$00,$01,$48,$2C,$24,$30,$30,$2C,$00,$00

これは、X6809では1文字は「'」で囲んで「','」にしなければならないという仕様になっているからです。

私の自作アセンブラ(6809用、6800用)でも、最初はそのような仕様にしていたのですが、ASSIST09だけではなく他のソースでも後ろの「'」のない書き方が多いようなので、どちらの書き方にも対応するように変更した結果、「',,」が正常に変換されないというバグが発生していました。

もう一つの不具合も FCB疑似命令に関するもので、負数がちゃんと変換されないというもので、FCBのオペランド中での負数の処理にバグがありました。そのため、やはりアセンブル前にソースのFCBのオペランド中の-1を$FF,-2を$FEのように書き換えていました。

上記の2つの不具合はいずれもFCBのオペランド文字列の解釈に関するものでしたので、それを修正したVer1.92を作成しました。これによって「',」でも「','」のどちらでも正しく変換できるようになりました。


Ver1.92でのアセンブル結果


WARNINGが出ている


ASSIST09をアセンブルするために

以上で自作クロスアセンブラでASSIST09をアセンブルできるようになったのですが、実はソースそのものを何箇所か変更する必要があります。

私が以前から使用していたものは、書籍「MC6809-MC6809Eマイクロプロセッサ プログラミング マニュアル」中のソースではなくバイナリを手入力したもので、必要な個所を直接書き換えて使用していました。当時はアセンブラを所有していなかったので、ソースをアセンブルできなかったのです。

その後、ネットからソースを入手しましたが、そのソースが書籍のものと何箇所か異なっていることに気づいてはいましたが、ちゃんとソースを読んでいませんでした。

最近、ソースをアセンブルしてバイナリを得る必要があったので、書籍と見比べた結果、やはり書籍版を使用することにして、書籍版に合わせてネット版ソースを変更しました。

(私は今まで書籍版のバイナリを使い続けており、ネット版をそのままアセンブルしたものを使用したことがありませんので、動作にどんな違いがあるのかは分かりません。)

変更したのは下記の4箇所です。

1.825行からのCIDTAルーチン

2.870行からのCODTAOルーチン

3.1085行のCPX命令は6800の命令なのでCMPXに変更

4.1619行のCBKADDルーチンのDECBを変更

以上の変更を加えたソースを自作クロスアセンブラでアセンブルすると6つのWarningが出ますが、これはExtend命令と解釈したがDirect命令に変更できるよという警告ですので、該当の6箇所のオペランドの先頭にDirect命令を指示する「<」を付加します。改めてアセンブルするとWarningも出ずに、書籍と同じバイナリが生成されました。

以前は、Direct命令に変更できる場合は常に変更したコードを生成するようにしていたのですが、これではまずい場合がありましたので現在のような仕様にしているのですが、元のソースを書き換える必要があるのは嬉しくないので、変更するかしないかを選択できるようにしたVer1.93を作成しました。プログラムソースをかなり書き換えたので、正常に動作するかどうかをテスト中です。


FM-7へのASSIST09の移植

以前、ASSIST09に関するブログを書いた際には、もう既に移植済みのASSIST09にコマンドを追加したという内容でした。

「ASSIST09に追加したLoad, Saveコマンドを改良しました」(2018年6月27日)

「ASSIST09にLoad, Saveコマンドを追加」(2018年5月26日)

今さらとは思いますが、マイコンなどへの移植はネットでもいくつか見ますが(私も昔から自作マイコンで使用しています)、FM-7への移植はあまり見たことがないので、ここでFM-7へのASSIST09の移植の手順について書いてみたいと思います。

なお、以下の移植の手順についてはインターフェース誌1982年4月号の「ASSIST09の詳細とFM-8への移植(高橋豊)」をほとんどそのままFM-7に適用したものです。高橋豊さんに感謝いたします。

[1]最も簡単な移植(入出力にACIAを使用、領域圧縮なし、拡張ROMなし、アドレス$F800からに配置)

アセンブラが使用できればソースを変更してバイナリを生成できますので、ソースの24行、25行のACIAとPTMのアドレスを変更し、配置するアドレスを20行に書いてアセンブルするだけです。PTMが実装されていない場合はアドレスに$0000を書いておきます。

しかし、これでは2KBのASSIST09の他に6KBもの使われないエリアが生じて無駄が多くなりますし、そもそも、FM-7のようなパソコンの$F800からには移植できません...

[2]簡単な移植(入出力にACIAを使用、領域圧縮なし、拡張ROMなし、任意のアドレスに配置)

任意のアドレスに配置する場合には、20行目のROMBEG(スタートアドレス)を書き換えます。さらに[1]の設定に加えて、SWIやNMIのベクターアドレスをASSIST09用に再設定する必要があります。ベクターアドレスについては直接設定することになります。

[3]未使用領域を圧縮して移植(拡張ROMあり、他は[2]と同様)

拡張ROMを使用する場合は、それを用いて必要な再設定をすることができます。図のFM-7への配置例で示したものでは、$6800~$6FFFにASSIST09を配置し、その下に$100バイトの拡張ROMを置き、その下からがスタック/ワークエリアとしています。ソースの変更箇所はROMBEG(スタートアドレス)とRAMOFS(拡張ROMのオフセット)のみで、他は拡張ROM中で設定できます。


ASSIST09の配置例


ASSIST09は拡張を容易にするために、自身のアドレスから2KB下に$20,$FE(BRA *)があると、拡張ROMがあるとみなし、ASSIST09の起動前に$20,$FEの次のアドレスにサブルーチンジャンプすることで、ユーザの初期化プログラムなどを実行することができます。図では、2KB下ではなく$100バイト下に設定しています。

この初期化プログラム中で必要な処理を書くわけですが、最小限必要な処理は以下の2つです。

・1文字入力ルーチン、1文字出力ルーチンをFM-7のそれに置き換える。

・SWI、NMIルーチンをASSIST09用に置き換える。

SWIはASSIST09の内部でサブルーチンコールなどのために使用しています。NMIはBREAKキーでF-BASICに戻るために使います。

その他、コマンドの拡張もここで行うことができます。


拡張ROMの例を下に示します。まず最小限のものです。

  1. 0001 *
  2. 0002 * ExROM for FM-7 (最小版)
  3. 0003 *
  4. 0004 * ASSIST09の詳細とFM-8への移植
  5. 0005 * 高橋豊 インターフェース 19824月号 PP138-162
  6. 0006 *
  7. 0007 6800 ROMBEG EQU $6800
  8. 0008 0100 ROMSIZ EQU $100
  9. 0009 6700 ROM2OF EQU ROMBEG-ROMSIZ
  10. 0010 0020 LINSIZ EQU $20
  11. 0011 67E0 ROMLIN EQU ROMBEG-LINSIZ
  12. 0012
  13. 0013 0016 QCIDTA EQU 22
  14. 0014 001C QCODTA EQU 28
  15. 0015
  16. 0016 * ----- USER ROM ------
  17. 0017
  18. 0018 6700 ORG ROM2OF
  19. 0019
  20. 0020 6700 20 FE BRA * USER ROM MARK
  21. 0021
  22. 0022 6702 INIT EQU *
  23. 0023 * CIDTA==> GETKEY
  24. 0024 6702 31 8C 0C LEAY <GETKEY,PCR
  25. 0025 6705 10AF C8 16 STY QCIDTA,U
  26. 0026 * CODTA==> OUTCRT
  27. 0027 6709 31 8C 27 LEAY <OUTCRT,PCR
  28. 0028 670C 10AF C8 1C STY QCODTA,U
  29. 0029 6710 39 RTS
  30. 0030
  31. 0031 * FM-7 HANDLER
  32. 0032 DB6D GTKEYE EQU $DB6D INPUT 1 CHR
  33. 0033 D9D9 OTCRTE EQU $D9D9 OUTPUT 1 CHR
  34. 0034 FBF7 CSRONE EQU $FBF7 CURSOR ON
  35. 0035 FBEB CSROFE EQU $FBEB CURSOR OFF
  36. 0036 8684 BASICE EQU $8684 RETURN TO BASIC
  37. 0037 0313 STPFLG EQU $0313 BREAK FLAG
  38. 0038
  39. 0039 6711 GETKEY EQU *
  40. 0040 6711 34 7C PSHS B,DP,X,Y,U
  41. 0041 6713 4F CLRA
  42. 0042 6714 1F 8B TFR A,DP
  43. 0043 6716 B6 0313 LDA STPFLG
  44. 0044 6719 27 03 BEQ CONT
  45. 0045
  46. 0046 671B 7E 8684 JMP BASICE
  47. 0047
  48. 0048 671E BD FBF7 CONT JSR CSRONE
  49. 0049 6721 BD DB6D JSR GTKEYE
  50. 0050 6724 1C FE ANDCC #$FE
  51. 0051 6726 27 09 BEQ GTKYRT
  52. 0052 6728 34 02 PSHS A
  53. 0053 672A BD FBEB JSR CSROFE
  54. 0054 672D 35 02 PULS A
  55. 0055 672F 1A 01 ORCC #1
  56. 0056 6731 35 FC GTKYRT PULS B,DP,X,Y,U,PC
  57. 0057
  58. 0058 6733 OUTCRT EQU *
  59. 0059 6733 34 7E PSHS A,B,DP,X,Y,U
  60. 0060 6735 4F CLRA
  61. 0061 6736 1F 8B TFR A,DP
  62. 0062 6738 A6 E4 LDA ,S
  63. 0063 673A BD D9D9 JSR OTCRTE
  64. 0064 673D 35 FE PULS A,B,DP,X,Y,U,PC
  65. 0065
  66. 0066 67E0 ORG ROMLIN
  67. 0067
  68. 0068 *LINK TO FM-7
  69. 0069 0269 MONTRP EQU $0269 FM-7 MONITOR
  70. 0070 01D7 SWITRP EQU $01D7 FM-7 SWI
  71. 0071 01DA NMITRP EQU $01DA FM-7 NMI
  72. 0072
  73. 0073 67E0 LINKER EQU *
  74. 0074 67E0 30 8C 54 LEAX <RESET,PCR
  75. 0075 67E3 BF 026A STX MONTRP+1
  76. 0076 67E6 308D 07FE LEAX SWI,PCR
  77. 0077 67EA BF 01D8 STX SWITRP+1
  78. 0078 67ED 308D 07FB LEAX NMI,PCR
  79. 0079 67F1 BF 01DB STX NMITRP+1
  80. 0080 67F4 86 7E LDA #$7E JMP $****
  81. 0081 67F6 B7 0269 STA MONTRP
  82. 0082 67F9 B7 01D7 STA SWITRP
  83. 0083 67FC B7 01DA STA NMITRP
  84. 0084 67FF 39 RTS
  85. 0085
  86. 0086 6837 RESET EQU ROMBEG+$037 ASSIST09 START
  87. 0087 6FE8 SWI EQU ROMBEG+$7E8 ASSIST09 SWI
  88. 0088 6FEC NMI EQU ROMBEG+$7EC ASSIST09 NMI
  89. 0089
  90. 0090 END
  91.  
  92. 0 error(s), 0 warning(s) is detected.
  93.  
  94. Label address
  95. BASICE 8684 CONT 671E CSROFE FBEB CSRONE FBF7 GETKEY 6711
  96. GTKEYE DB6D GTKYRT 6731 INIT 6702 LINKER 67E0 LINSIZ 0020
  97. MONTRP 0269 NMI 6FEC NMITRP 01DA OTCRTE D9D9 OUTCRT 6733
  98. QCIDTA 0016 QCODTA 001C RESET 6837 ROM2OF 6700 ROMBEG 6800
  99. ROMLIN 67E0 ROMSIZ 0100 STPFLG 0313 SWI 6FE8 SWITRP 01D7
 

コマンドの拡張は非常に有用ですので、高橋豊さんの例をそのままお借りしてコマンド拡張方法の具体例を示します。

  1. 0001 *
  2. 0002 * ExROM for FM-7 (拡張コマンドあり、ACIA/PTM処理あり)
  3. 0003 *
  4. 0004 * ASSIST09の詳細とFM-8への移植
  5. 0005 * 高橋豊 インターフェース 19824月号 PP138-162
  6. 0006 *
  7. 0007 6800 ROMBEG EQU $6800
  8. 0008 0100 ROMSIZ EQU $100
  9. 0009 6700 ROM2OF EQU ROMBEG-ROMSIZ
  10. 0010 0020 LINSIZ EQU $20
  11. 0011 67E0 ROMLIN EQU ROMBEG-LINSIZ
  12. 0012 0000 PTM EQU $0000
  13. 0013 0000 ACIA EQU $0000
  14. 0014
  15. 0015 000A LF EQU $A
  16. 0016 000D CR EQU $D
  17. 0017 0020 SPACE EQU $20
  18. 0018
  19. 0019 0003 PDATA EQU 3
  20. 0020 0009 VCTRSW EQU 9
  21. 0021
  22. 0022 0016 QCIDTA EQU 22
  23. 0023 001C QCODTA EQU 28
  24. 0024 002A QEXPAN EQU 42
  25. 0025 002C QCMDL2 EQU 44
  26. 0026 002E QACIA EQU 46
  27. 0027 0034 QPTM EQU 52
  28. 0028
  29. 0029 009B NUMBER EQU $9B
  30. 0030
  31. 0031 * ----- USER ROM -----
  32. 0032
  33. 0033 6700 ORG ROM2OF
  34. 0034
  35. 0035 6700 20 FE BRA * USER ROM MARK
  36. 0036
  37. 0037 6702 INIT EQU *
  38. 0038 * CIDTA==> GETKEY
  39. 0039 6702 31 8C 23 LEAY <GETKEY,PCR
  40. 0040 6705 10AF C8 16 STY QCIDTA,U
  41. 0041 * CODTA==> OUTCRT
  42. 0042 6709 31 8C 3E LEAY <OUTCRT,PCR
  43. 0043 670C 10AF C8 1C STY QCODTA,U
  44. 0044 * PTM==> USER PTM
  45. 0045 6710 108E 0000 LDY #PTM
  46. 0046 6714 10AF C8 34 STY QPTM,U
  47. 0047 * ACIA==> USER ACIA
  48. 0048 6718 108E 0000 LDY #ACIA
  49. 0049 671C 10AF C8 2E STY QACIA,U
  50. 0050 *SET USER COMMAND TABLE
  51. 0051 6720 31 8C 33 LEAY <USRCMD,PCR
  52. 0052 6723 10AF C8 2C STY QCMDL2,U
  53. 0053 6727 39 RTS
  54. 0054
  55. 0055 * FM-7 HANDLER
  56. 0056 DB6D GTKEYE EQU $DB6D INPUT 1 CHR
  57. 0057 D9D9 OTCRTE EQU $D9D9 OUTPUT 1 CHR
  58. 0058 FBF7 CSRONE EQU $FBF7 CURSOR ON
  59. 0059 FBEB CSROFE EQU $FBEB CURSOR OFF
  60. 0060 8684 BASICE EQU $8684 RETURN TO BASIC
  61. 0061 0313 STPFLG EQU $0313 BREAK FLAG
  62. 0062
  63. 0063 6728 GETKEY EQU *
  64. 0064 6728 34 7C PSHS B,DP,X,Y,U
  65. 0065 672A 4F CLRA
  66. 0066 672B 1F 8B TFR A,DP
  67. 0067 672D B6 0313 LDA STPFLG
  68. 0068 6730 27 03 BEQ CONT
  69. 0069
  70. 0070 6732 7E 8684 JMP BASICE
  71. 0071
  72. 0072 6735 BD FBF7 CONT JSR CSRONE
  73. 0073 6738 BD DB6D JSR GTKEYE
  74. 0074 673B 1C FE ANDCC #$FE
  75. 0075 673D 27 09 BEQ GTKYRT
  76. 0076 673F 34 02 PSHS A
  77. 0077 6741 BD FBEB JSR CSROFE
  78. 0078 6744 35 02 PULS A
  79. 0079 6746 1A 01 ORCC #1
  80. 0080 6748 35 FC GTKYRT PULS B,DP,X,Y,U,PC
  81. 0081
  82. 0082 674A OUTCRT EQU *
  83. 0083 674A 34 7E PSHS A,B,DP,X,Y,U
  84. 0084 674C 4F CLRA
  85. 0085 674D 1F 8B TFR A,DP
  86. 0086 674F A6 E4 LDA ,S
  87. 0087 6751 BD D9D9 JSR OTCRTE
  88. 0088 6754 35 FE PULS A,B,DP,X,Y,U,PC
  89. 0089
  90. 0090 * USER COMMAND
  91. 0091 6756 USRCMD EQU *
  92. 0092 6756 04 FCB 4
  93. 0093 6757 46 FCC /F/
  94. 0094 6758 0007 FDB FILL-*
  95. 0095 675A 04 FCB 4
  96. 0096 675B 58 FCC /X/
  97. 0097 675C 0041 FDB XFER-*
  98. 0098 675E FE FCB -2
  99. 0099
  100. 0100 675F FILL EQU *
  101. 0101 675F 8D 19 BSR GETNUM
  102. 0102 6761 109E 9B LDY <NUMBER
  103. 0103 6764 8D 14 BSR GETNUM
  104. 0104 6766 DE 9B LDU <NUMBER
  105. 0105 6768 33 41 LEAU 1,U
  106. 0106 676A 8D 0E BSR GETNUM
  107. 0107 676C 96 9C LDA <NUMBER+1
  108. 0108 676E 34 40 PSHS U
  109. 0109 6770 1F 21 TFR Y,X
  110. 0110 6772 A7 80 FILNXT STA ,X+
  111. 0111 6774 AC E4 CMPX ,S
  112. 0112 6776 26 FA BNE FILNXT
  113. 0113 6778 35 C0 PULS U,PC
  114. 0114
  115. 0115 677A GETNUM EQU *
  116. 0116 677A 86 2A LDA #QEXPAN
  117. 0117 677C 8E 0000 LDX #0
  118. 0118 677F 3F SWI
  119. 0119 6780 09 FCB VCTRSW
  120. 0120 6781 AD 84 JSR ,X
  121. 0121 6783 26 09 BNE ERR
  122. 0122 6785 81 20 CMPA #SPACE
  123. 0123 6787 27 04 BEQ RTS
  124. 0124 6789 81 0D CMPA #CR
  125. 0125 678B 26 01 BNE ERR
  126. 0126 678D 39 RTS RTS
  127. 0127
  128. 0128 678E ERR EQU *
  129. 0129 678E 30 8C 04 LEAX <ERRMSG,PCR
  130. 0130 6791 3F SWI
  131. 0131 6792 03 FCB PDATA
  132. 0132 6793 35 90 PULS X,PC
  133. 0133 6795 45 ERRMSG FCC /ERROR/,CR,LF,4
  134. 0134
  135. 0135 679D XFER EQU *
  136. 0136 679D 8D DB BSR GETNUM
  137. 0137 679F 109E 9B LDY <NUMBER
  138. 0138 67A2 8D D6 BSR GETNUM
  139. 0139 67A4 DE 9B LDU <NUMBER
  140. 0140 67A6 33 41 LEAU 1,U
  141. 0141 67A8 8D D0 BSR GETNUM
  142. 0142 67AA DC 9B LDD <NUMBER
  143. 0143 67AC 34 66 PSHS D,Y,U
  144. 0144 67AE A3 62 SUBD 2,S
  145. 0145 67B0 22 0E BHI BACKWD
  146. 0146 67B2 35 10 PULS X
  147. 0147 67B4 1E 12 EXG X,Y
  148. 0148 67B6 A6 80 FORWD1 LDA ,X+
  149. 0149 67B8 A7 A0 STA ,Y+
  150. 0150 67BA AC 62 CMPX 2,S
  151. 0151 67BC 26 F8 BNE FORWD1
  152. 0152 67BE 35 B0 PULS X,Y,PC
  153. 0153 67C0 30 CB BACKWD LEAX D,U
  154. 0154 67C2 A6 C2 BAKWD1 LDA ,-U
  155. 0155 67C4 A7 82 STA ,-X
  156. 0156 67C6 AC E4 CMPX ,S
  157. 0157 67C8 26 F8 BNE BAKWD1
  158. 0158 67CA 35 F0 PULS X,Y,U,PC
  159. 0159
  160. 0160 67E0 ORG ROMLIN
  161. 0161 *LINK TO FM-7
  162. 0162 0269 MONTRP EQU $0269 FM-7 MONITOR
  163. 0163 01D7 SWITRP EQU $01D7 FM-7 SWI
  164. 0164 01DA NMITRP EQU $01DA FM-7 NMI
  165. 0165
  166. 0166 67E0 LINKER EQU *
  167. 0167 67E0 30 8C 54 LEAX <RESET,PCR
  168. 0168 67E3 BF 026A STX MONTRP+1
  169. 0169 67E6 308D 07FE LEAX SWI,PCR
  170. 0170 67EA BF 01D8 STX SWITRP+1
  171. 0171 67ED 308D 07FB LEAX NMI,PCR
  172. 0172 67F1 BF 01DB STX NMITRP+1
  173. 0173 67F4 86 7E LDA #$7E JMP $****
  174. 0174 67F6 B7 0269 STA MONTRP
  175. 0175 67F9 B7 01D7 STA SWITRP
  176. 0176 67FC B7 01DA STA NMITRP
  177. 0177 67FF 39 RTS
  178. 0178
  179. 0179 6837 RESET EQU ROMBEG+$037 ASSIST09 START
  180. 0180 6FE8 SWI EQU ROMBEG+$7E8 ASSIST09 SWI
  181. 0181 6FEC NMI EQU ROMBEG+$7EC ASSIST09 NMI
  182. 0182
  183. 0183 END
  184.  
  185. 0 error(s), 0 warning(s) is detected.
  186.  
  187. Label address
  188. ACIA 0000 BACKWD 67C0 BAKWD1 67C2 BASICE 8684 CONT 6735
  189. CR 000D CSROFE FBEB CSRONE FBF7 ERR 678E ERRMSG 6795
  190. FILL 675F FILNXT 6772 FORWD1 67B6 GETKEY 6728 GETNUM 677A
  191. GTKEYE DB6D GTKYRT 6748 INIT 6702 LF 000A LINKER 67E0
  192. LINSIZ 0020 MONTRP 0269 NMI 6FEC NMITRP 01DA NUMBER 009B
  193. OTCRTE D9D9 OUTCRT 674A PDATA 0003 PTM 0000 QACIA 002E
  194. QCIDTA 0016 QCMDL2 002C QCODTA 001C QEXPAN 002A QPTM 0034
  195. RESET 6837 ROM2OF 6700 ROMBEG 6800 ROMLIN 67E0 ROMSIZ 0100
  196. RTS 678D SPACE 0020 STPFLG 0313 SWI 6FE8 SWITRP 01D7
  197. USRCMD 6756 VCTRSW 0009 XFER 679D
 


配置例にあるように、拡張ROM($6700~$67FF)とASSIST09($6800~$6FFF)を一つにまとめておいて、
 CLEAR ,&H6000
 LOADM "ASSIST" <-- ASSIST09とExROMを合体したファイル
 EXEC &H67E0
その後
 MON でASSIST09が起動します。ASSIST09から抜ける場合はBREAKキーを押します。

FM-7への移植手順は以上ですが、改めてインターフェース誌で情報を公開して下さった高橋豊さんに感謝いたします。

修正した6809用クロスアセンブラについてはチェックが終わり次第公開します。
それにしても、6809の命令一覧表には載っていない命令(例えば、LEA命令のプログラムカウンタ相対のDirectモード命令)が存在したりして、情報不足のせいか今一つ理解できないことがいくつかあるのが悩ましいところです。
【9月20日訂正】私の勘違い(&知識不足)でした。Directモード命令ではなく、プログラムカウンタ相対の8ビットオフセットか16ビットオフセットかの違いでした。

2022年8月24日水曜日

ESPRIMO D583/HXのマザーボードにSATAコネクタを取り付ける

 常用のWindows機のマザーボードにSATAコネクタを増設してみました


動機

私の常用機は富士通のESPRIMO D583/HXです。使い始めてもう7,8年になりますが、これを選んだのはビジネスユーザ向けということで、余計なソフトが入っていないことと、ある程度仕様を選択できることからでした。

今までに、Windows8.1を10に、メモリを4GB->8GB->12GB->16GBと増設し、500GBのHDDを500GBのSSDに交換してきましたが、いよいよディスクが窮屈になってきていました。

ちなみに、ファイルの保存等には4TBと2TBの2台のLANDISKを使用しているのですが、プログラミング時などのWorkエリアとしてSSDの200GBをDドライブとして使っていたので、Cドライブが残り少なくなってしまったということです。

そこで、現用のSSDを全てCドライブにして、Workエリア等としては、以前購入したままにしてあった3TBのHDDを使用することを考えました。

ところが何と、D583/HXのマザーボードにはSATAコネクタが2個しかないのです。これではSSDとDVDドライブの2台でおしまいです。筐体を開けてマザーボードを見ると、SATA1というパターンはありますが、コネクタが実装されていません。。。

(サブ機はHP製で、これには十分な数のSATAコネクタが実装されていたので、HDDの増設が簡単にできたのに...)

ということで、始めは画像のようなHDDスタンドを購入して使用していました。これによって、確かに簡単にHDDを増設できたのですが、使用しているとUSB3と言えども遅いのですね。(このスタンドのせいではなく、本体がUSB3.0なので仕方がないのですが...)HDDのフォルダを最初に選択した時には、最悪数秒待たされるのです。その後はまあまあ普通にアクセスできるので良いのですが、今までSSDの速度に慣れてしまっていたためか我慢ができません。


当初使用していたUSB3のHDDスタンド

SATAコネクタを増設された方がいた!

そんな時に、マザーボードに直接SATAコネクタを増設したという蓼科電研さんのブログを見つけました。

正に目からうろこで、これならHDDも内蔵できるし速度も上がるだろうという事で、早速部品集めにかかりました。しかし、こんなことをする人はあまりいないようで、まずSATAコネクタが見つかりません... aitendoでは扱っているようですが品切れですし、DigikeyではMolex製を扱っていますが、両端の固定ピンが平行で、マザーボードのパターンとは合っていません。また、直流カットコンデンサも蓼科電研さんのブログではパターンが小さいので、容量が22nFでサイズが1005が良いと書かれていましたが、これも手に入りにくい... 結局、何とかなるという甘い考えでMolexのコネクタ2種と、サイズ1608の22nFのコンデンサを入手しました。


マザーボードの現状

左下部にSATAコネクタが2個ありますが


D583/HXのマザーボード


その下部のSATA1にはコネクタが実装されていません。

SATA1のコネクタが未実装


裏面を見ても、直流カットのコンデンサ4個も実装されていません。。。

Cも未実装


コネクタ増設作業

まずはパターンのハンダ除去作業から取り掛かります。

私のハンダ吸い取り器は十年ほど前にヤフオクで入手したHOZANのHS-800というとても古いもので、入手時から真空ポンプの吸引力が弱っていましたが、消耗部品もストックしてあるので使い続けています。(さすがに今回のマザーボードは手強かった。)


ハンダ吸い取り器

両端にある固定ピン用や信号用の穴はすぐにハンダが吸い取れましたが、GND用の3つの穴のハンダはなかなか抜けず、何度も試みているうちにすぐ隣の信号用の穴がふさがってしまったりで、結局30分ほどもかかってしまいましたが、何とか吸い取ることができました。


ハンダ吸い取り前



ハンダ吸い取り後

パターン付近が汚れてしまいましたが、ハンダは吸い取れています。


SATAコネクタを実装

SATAコネクタは片側の固定ピンを無理矢理曲げることで、何とか取り付けることができましたが、問題は直流カットの4個のコンデンサの取り付けでした。

基板のパターンはやはり1005用らしくてとても小さく、サイズ1608のコンデンサはとにかく大きすぎました。何とかハンダ付けしてみましたが、隣と接触してショートしてしまうのです。ということで、結局直接の取り付けは諦めて、0.32mmのポリウレタン線を10~15mmぐらいに切って1608のコンデンサにハンダ付けして、その先を基板にハンダ付けしました。画像はとても見苦しいですが、カプトンテープで絶縁してあります。


Cを4個取り付けたが...


仕上げ

以上で、無事に3つ目のSATAコネクタが使えるようになりましたので、SATA0にSSD、SATA1にHDD、SATA4にDVDを装着して、SSDを取り付けてあった位置にHDDを取り付けました。SSDはとりあえずですが、画像のようにライザーカードに空いている穴の一つを利用してねじ止めして、あとはテープで固定してみました。

(ちなみに、本来のライザーカードはPCIスロットが2個のものでしたが、当初はSATA拡張カードを利用することを考えていたのでPCIeスロットのものを入手して交換してあります。結局今回は使うことがありませんでしたが...)


SSD取り付けの様子


結果


動作させてみた結果ですが、間違いなくHDDのアクセスは速くなりました。USB3のHDDスタンドの場合にあった最初のアクセスが待たされる現象が無くなり、快適に使用できています。また、外付けだったHDDが内蔵できたのも良かったです。


終わりに

以上ですが、マザーボードを加工してSATAコネクタを増設するという報告があまり見当たらないようですので、私の試みを紹介させていただきました。

と言いましても、何も新しいことはありませんで、殆どが蓼科電研さんのブログの後追いにすぎません。蓼科電研さんに心より感謝いたします。

強調しておきたい事は、ハンダ吸い取り器がないとマザーボードのハンダの吸い取りは絶対に無理だという事、直流カットコンデンサのハンダ付けはサイズ1005のコンデンサが必須で、しかも細いコテ先のハンダごてが必要だという事の2つです。SATAコネクタについては固定ピンがパターンと合っていないものでも、無理矢理ですがピンを曲げることで何とか取り付けることはできるようです。

万が一、同様な試みを実行してみようという方がおられましたら、最悪の場合はマザーボードを破壊してしまう可能性がある事をご承知ください。私の場合はたまたまうまく行っただけかも知れませんので。


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ディスクカード用のそれぞれがもちろん使用できますが、両カードの開発者の「思い付きハードでソフトに七転八倒」さんが統合したものを制作されています。