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の例を下に示します。まず最小限のものです。

 

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

 


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