JavaScriptを有効にすると、ここにメニューを表示します。
FM-7/77用純正品互換RS-232Cカード制作プロジェクト

ysflight.com

[FM-7/77用RS232Cカード回路図 (KiCadフォーマット) ]

2022/4/16更新。ジャンパピンでCOM0/COM1切り替え可能になった。COM1に設定することでAV40以降の機種でも使用可能。


2019/1/18更新。FM-7/new7でもふたが閉まるバージョンのPCB基板

FM-7/77AV陸の孤島問題

今でもときどきヤフオクで中古の富士通FM-7シリーズ8ビットPCが出品される。割と動作品を入手するハードルは高くない。モニターが接続できてキーボードも使えるようにしたら、次の問題はどうやってWindowsなりMacなりからデータやプログラムを持ってくるか。FM77AV40以降の機種であれば、RS232Cポートが標準装備だから簡単なF-BASICのプログラムを書けばWindowsからデータを流し込むことができる。あ、ついでなんで、FM77AV40を起動しただけだと背面のRS232Cポートはオフになってるけど、F-BASICが起動したら

POKE &HFD0C,5
POKE &HFD0B,16
EXEC -512

とタイプして、再起動するまで待つ(ディスク読みに行くから結構待つ)と、BASICからRS232Cポートが使えるようになる。

しかし、FM77AV以前の機種だとRS232Cポートはついていない。そのままだとカセットインターフェースケーブルを入手あるいは自作して音で流し込むしかない。XM7が出た当時手元のディスクはすべてイメージ化してバックアップしたものの、既にディスクそのものは無く、これをなんとか再度実機で実行できないか、と思ったら一応カセットインターフェースケーブルを自作してDisk2Tapeを使ってディスクイメージを実機に転送することは可能。しかし、なぜかWAV化したディスクイメージを再生しても実機が認識するPCと認識しないPCがある。別のPCで録音してみたら波形はきれいだったから、多分、オーディオデバイスの最大ボリュームの問題だと思うんだけど。手元にあるPCでは以前はDell XPSデスクトップと2008 MacBook Proで再生したWAVは実機FM-7、FM77AV、FM77AV40がすべて認識できたが、他のPCでは失敗した。この方法は使うPCによって成功したり失敗したりする。

だからFM77AV40より前のFM-7系機種はせっかく動作する機体が手に入っても陸の孤島になってしまうかもしれない。

富士通純正RS232Cカードさえ手には入ればなんとかなるのだが、ヤフオクにも滅多に出てこない。出てきたとしても多分おそるべき金額に値段が吊り上がるから勝つのはかなり難しい。というような話をカーネギー・メロン大のコンピュータクラブでボソッと言ったら、回路図があったら作れるよ!と力強い言葉が返ってきたので、そこで、FM-7、FM77AVでもRS232Cが使えるように純正RS2323Cカード互換カード制作プロジェクトを開始してみた。

なお、今回もやっぱりApolloさんからかなり手助けしてもらってしまった。

回路図

回路図は入手できたものの、果たしてこの回路図は正しいのか?富士通が自分とこの回路図を公開したとは思えないから多分誰かが解析したもので、実際この回路図からRS232Cカードを作った人はいないかもしれない。そこで、Apolloさんから送っていただいた写真と比較してできる限りピン番号、部品番号をチェックすることにした。結果、やっぱり一部バグってる。ピン番号が抜けている箇所、ピン番号がどうも間違ってるっぽい箇所をいくつか発見。これは、一応本格的にデバッグしてから始めた方がよさそう、と思った。

そこで人生初、回路図のデバッグに挑戦。まず写真から確認できる接続をできるだけチェックした。これによって、かなりの接続は確認することができた。が、一部は部品の背後に隠れてしまってわからない。その後、それぞれのチップのデータシートを見ると入力ピン、出力ピン、入出力ピンの組み合わせがわかるらしいことに気が付いたので、これによりピンの組み合わせが間違ってる箇所は正しいピン番号を特定することができた。

さらにデータシートには、それぞれのピンの入力と出力の関係 (AND, OR, NOR, NAND等) が書いてあるから、アドレスバスからの信号によって$FD02, $FD06, $FD07への書き込みに反応するかを確認。また$FD02, $FD06, $FD07への書き込みに対して正しくデータバスのビットを処理しているかを確認。これでかなりのICとピン番号をチェックすることができた。昔は理解できなかったデータバスとかアドレスバスとかの意味が、回路図をデバッグする過程で次々にわかってくる。そうだったのか。こうなってたのか。当時この知識があったなら。

しかし、最後に何か所か、ICの仕様を考えると正しそうだけど、これって写真上の配線だと物理的に接続が無理じゃね?という線が残ったので、再度Apolloさんにお願いしてテスターで確認してもらって、最終的に正しいと思われる回路図ができた。

BreadboardとKiCad

最終的にプリント基板上にパーツを実装してFM-7、FM77AVに刺せるようにするとしても、その前に回路図が本当に正しいのか確認したかった。そこで、プリント基板のデザインと並行してBreadboardを使って試作品を作ることにした。コンピュータクラブの人から、この程度の基盤だったらいきなりプリント基板でもいいんじゃない?とのことだったが、Breadboardを使ってみたいという興味もあったし。

部品の調達で苦労したのはIntel 8251AチップとFCN-365P032-AUコネクタ。8251Aチップははるか昔に生産が終了しているらしい。Google検索しても出てこなかったのだが、さすがコンピュータクラブ、一発でJamecoなるオンラインショップから買えるとわかった。またFCNコネクタは富士通製コネクタでアメリカだとMouserで売ってた。その他は標準的な部品でどこからでも手に入るものだった。


Breadboard上にパーツだけ配置したところ。中央のが8251A互換チップ。

Breadboardに部品を配置してジャンパワイヤをつなげていくと、まさにカイワレ大根のようになった。(某氏によるとアルファルファ)。どこかにLEDでも入れてみたいという誘惑にかられたけど、まずは回路図通りに作ることにする。ジャンパワイヤーのM to Fケーブルなどというものの存在を知らなかった僕はFCNコネクタのすべてのピンにワイヤーをはんだ付けしてしまったが、結構苦労した。でもジャンパワイヤーのM to Fを使うと輸送中に抜けたりするかもしれないからしっかりはんだ付けしたのは良かったかも。このコネクタは将来別なFM-7用ボードを自作するような可能性があったら再利用できるし。


アルファルファ?カイワレ?

Breadboardと並行してKiCadなるツールを使って回路図とプリント基板のデザインを進めた。KiCadにはRS232Cカードで使う部品の多くはすでにデータベースとして入っていたので、入出力ピンの組み合わせが正しいことを確認することができた。

そして、Breadboard上のプロトタイプ完成。問題はこれをFM-7に刺して電源を投入して煙が上がらないかという心配だった。このFM-7は修理の過程で一度煙を吹いている。もう一度煙を吹いたら今度は復活しないかもしれない。まずテスタを使ってグランドと5V電源ピン、それと+12V、-12Vのそれぞれのピンがショートしていないことを確認する。あとは、KiCadのPCBエディタ上のネットワークと比較しながらそれぞれのICのピンが正しく接続しているかを確認した。確認できなかったのは本来接続すべきではないピン同士がショートしていないか。+12V、-12Vがデータピンとショートしてると煙を吹くかもしれない。この可能性が無いと自信を持って言えなかった。すべての組み合わせをテストしようものならピン数の二乗のオーダーの回数テストしなくてはならない。さすがにそれは無理。ただ、例えばジャンパワイヤーが2本でているピンは必ず2か所とつながっていることを確認することで少しでも余計な接続が無いということは確認した。

この手のテストは100%のチェックというのはありえなくてエラーの確立を減らす以上のことはできない。一応、できる限りのチェックはした。

実験成功

そして、ついに初実験。Breadboardはうちでちまちまと作っていたので、これをFM-7の置いてある大学の机まで持っていく。揺れて線がはずれないように、手で持っていく。普段から徒歩通勤だけど、手袋をするには暑いけど素手だと手が冷える半端な気温だった。この日の結末は二通り考えられた。最高の結末はテストに成功して回路が正しいことを確認して帰ってくる。最悪の結末はFM-7が焼けて二度と起動しなくなる。人事は尽くしたから天命を待つしかない。

FM-7にFCNコネクタを刺して、9ピンシリアルコネクタにはWindows側のUSBシリアルアダプタをクロスアダプタ(Null modemアダプタ)経由で接続する。FM-7の電源を入れるときは結構緊張した。見慣れたF-BASIC 3.0のプロンプトが出る。煙は上がらなかった!設計通り動いていたなら19200bpsでつながるはず。

FM-7側で

10 OPEN "O",#1,"COM0:F8N1"
20 PRINT #1,"Hello from FM7"
30 CLOSE #1

というコードを書いて、RUN!

Tera Termになんか出た!!!!

が、文字化けしている。実は文字化けは少し予想していた。8251Aのクロックの分周が正しくセットされていないとしたら4800bpsで動作するはず。試しにTera Term側を4800bpsに設定して再度実行したところ、

正しい文字列が出た!!!!

回路図が正しいことが確認できた。それで、いろいろデバッグを試みたのだが、どうもF8N1が完全に無視されているらしい。F-BASICマニュアルを確認してみたら、単に僕の間違いでF8N1は括弧でくくる必要があった。正しいコードは、

10 OPEN "O",#1,"COM0:(F8N1)"
20 PRINT #1,"Hello from FM-7"
30 CLOSE #1

こうだった。その後、読み込みも実験して、

40 OPEN "I",#1,"COM0:(F8N1)"
50 INPUT #1,A$
60 PRINT A$
70 CLOSE #1

これも成功。ただ、Tera Term側でハードウェアフローコントロールをオフにする必要があった。それは変。F-BASICの動作として正しいのだろうか?と、思って隣に置いてあるFM77AV40のRS232Cポートで実験したところ同じ動作を確認。どうやらF-BASICではハードウェアフローコントロールは使えないらしい。まあ、それは大した問題ではない。とにかく、回路図が正しいことが確認できた。

また9ピンコネクタだけの対応でよければ25ピンコネクタの未使用ピンに関係するICや配線を省略できて基板に余裕ができる。その単純化したバージョンも作ってテスト成功。あとはPCB基板を作ればいいだけ。

実験風景

続きは年明け。

年末のうちにPCB初期バージョンが届いた。懸念していたのはDSUB9コネクタの固定ピンがうまく穴にはまるかということだったが、ちょうどうまいことカチっとラッチする。

早速、無いはんだごての腕を駆使してはんだ付けに挑戦。これが、案外うまくいく。プリント基板へのはんだ付けなんて、大昔に技術の授業でやったきりとはいえ、ケーブル自作でそれなりに訓練を積んでいたのが良かったかもしれない。

ただ、最初、ハンダが穴を抜けて行ってしまっていくらハンダを積んでも山形にならない、と思ったら反対側に団子ができていた。それから、いくつかのソケットが浮いてしまった。セロテープで固定してやったから大丈夫かと思ったけど甘かった。それでも、導通は大丈夫。あまり美しくないけど電流は正しく流れるようだ。


PCBバージョン 20181225

はんだ付け。案外うまくいった。

一部ソケットが浮いちゃったけど

チップをはめ込んだところ。

テスターで導通テスト、そして少なくとも電源ピン、(+5V, GND, +12V, -12V)同士がショートしていないことを確認して、FM-7にセットしてみる。

FCN 32ピンコネクタの位置合わせも完璧。FM-7の拡張スロットにちょうどフィットする。一発でここまでできるってすごくない?と、思ったら、、、、

ふたが閉まらない。FM-77以降だと問題ないけどFM-7のふたにはリブがあって、DSUB9ピンコネクタとぶつかって閉まらない。なんてこった。刺しっぱなしにしようと思ったのにこれではできない。

だが、FM-77用なら大丈夫だし、とりあえず機能するかテストしてみよう。簡単なF-BASICのプログラムを書いて実行!


実験風景


DSUB9がリブに当たるとは。

大成功!PCBバージョンもまったく問題なく動作する。これでFM-7にRS232C接続を復活させることができる!

問題は、ふたが閉まらないことなんだよね。DSUB9がぶつかってるんだから、これを中央付近に移動させなくては。

中央付近に移動させるためにM5 (74LS00)を90度横向きにして右にずらし、M6 (74LS32)とM7 (74LS10)を下にずらし、M4 (75189)を右にずらして中央にDSUB9のスペースを確保。なんとかなった。かえってすっきりしてVIAをさらにいくつか減らすことができた。

このバージョンをOSHPARKにプリントのオーダーを出したのが1月8日。1月17日に届く。

その日はボウリングリーグがあったのだが苦戦。いや、調子としては悪くない。以前にくらべてスペアをはずさなくなった。前は3ゲームで大体6回のオープンフレームがあったが、先週はおなかが減ってたせいか集中力を欠いて9回もオープンを出したけど、週末のトーナメント、二週間前のリーグ戦、そしてこの日(というか1月17日)はスペアをミスしてオープンになったのが4フレームのみ。ところが、なぜかストライクが出ない。Hustle Ink, Brunswick Karma, Brunswick Danger Zoneの三種類のボールにあらゆるコースをトライしてもなぜか9ピンしか倒れない。昔と比べて進歩したのは10ピンを残すと9割ぐらいはずしていたのが、今は8割は取れる。だから、スペアは出るがスコアが伸びない。10月あたりはオープンフレームが6回ぐらいあっても3ゲームトータルで600超えを連発してたのに、今はオープンフレーム4回に抑えてたったの560台。ヘッドピンの右を教科書通りにたたいているのにこれだともう手詰まりになってしまった。

リーグ戦後気を取り直してはんだ付け。前回の教訓から大きめの穴にはハンダの山ができなくても無理にハンダを継ぎ足さないことにした。それから、最初洗濯ばさみにスポンジをつけてPCBに傷が入らないようにした上でソケットを抑えながらはんだ付けすることで浮くのを防止できないか、と、思ったらできなかったので(ピンの足先とソケットの表側で挟んでしまってぜんぜんPCBを押さえてくれなかった。またしてもApolloさんに教えてもらった方法で、いったんはんだ付けしてから、ハンダを溶かしながら押さえなおす方法で今度はソケットは浮かずにつけることができた。恰好が悪かったのはM4のソケットを上下逆につけちゃったけど、まあ、1ピンは上(または左)に統一してあるから現実的には問題なし。

そして、FM-7に接続してテスト。無事、ふたも閉まる。かえってWindows 10の方でシリアルアダプタのセットアップに手間取ったけど、無事成功。

Windows 10側からの送信も成功。RS232C経由ディスクイメージ書き戻しツールのクライアントだけ転送してみた。無事転送できたけど我がFM-7にはディスクドライブが無いからそれ以上のテストはできんかった。近いうちにFM77AV2を引っ張り出してテストする予定。

これによりディスクドライブがあったらディスクイメージファイルをRS232C経由で実フロッピーディスクに書き戻し可能になった(プロテクトがかかってるやつはダメだけど)。

 

さらに、

BIOSをオーバーライドしてXM7用T77テープイメージをRS232C経由で送り込む実験にも成功。今、権力の都合(場所が無い)で常にPCとつながってるのがAV40なのでまだこのRS232C互換カードでは実験してないけど、実機AV40でDelphis, Dragon Slayer, EmergencyのテープイメージをRS232C経由でロードして実行することに成功。実はテープインターフェースが廃止されてしまったAV40SX実機でテープ版ソフトが実行できるようになるという実用性(?)もあり。コードはもうすぐYSFLIGHT.COMで公開予定。

新しいPCB。M5を刺すときちょっと曲がっちゃった。

実験風景

 

Comments are welcome.  Send E-Mail to: 

Back to http://www.ysflight.com