JavaScriptを有効にすると、ここにメニューを表示します。

実機FM TOWNSとWindows/Mac/Linux間のファイル転送

ysflight.com

 

今年のDemosplash 2021のDiscord chatの中で出た質問のひとつに、実機FM TOWNSとWindows/mac/Linux間のファイル転送はどうするのが一番良いか、という質問が出たので答えをまとめておくことにした。この質問をするということは、TOWNS実機にはSCSI2SDや変換番長などの仮想ハードディスクが接続してあり(あるいは奇跡的に当時のハードディスクがあり)、フロッピーディスクでは大きすぎて転送しきれないファイルを転送したいということだと思う。また、そのぐらいTOWNSが使えているということは、Towns OSの基本的な操作方法はわかっていて、コンソールモードに入る方法と、基本的なDOSコマンドはわかっていると思う。それから、Towns OSがDドライブにインストールされているものと仮定して話を進める。CドライブはTownsだとROMドライブだから普通Towns OSはDドライブにインストールする。

もっとも環境にやさしい方法: シリアルRS232C

FM TOWNSにシリアル接続のXMODEMプロトコルを使ってファイルを送受信することができる。FM TOWNSは本体背面に25ピンRS232Cコネクタを装備している。これを使うには、以下のアイテムが必要:

これらのアイテムを使ってPCとTOWNSを接続するが、もしも延長が必要な場合は、USBケーブルを延長するべき。9ピンシリアルの部分を延長するとノイズを拾って使い物にならない。できればUSBの9ピンコネクタとTOWNS間にはコンバージョンアダプタ3連続だけにするのが一番いい。

次に、つぎのふたつのファイルをフロッピーディスクでTOWNSに転送する。このふたつは小さいからフロッピーディスクで余裕。?Windowsにフロッピーディスクがついてない?USB接続のフロッピーディスクドライブを買ってきて、TOWNS側でフォーマットすると大体読める。日本で売ってるやつだったら大丈夫だと思うけど、アメリカで買ったやつは3個中2個は日本の勝手フォーマット(1232KBフォーマット)も読み書きできたが、1個はダメだった。その場合は、720KBフォーマットをトライするといいかも。なお、フォーマットはややこしくなくするためにTowns側でやった方がいいと思う。

これらのファイルは以下のURLからダウンロードできる: https://github.com/captainys/FM/tree/master/TOWNS/XMODEM/EXE

なお、TOWNSのRS232Cは38400bpsまで行ける。ただし、そのためにはプログラムはRS232C I/OをビジーウェイトでTxRDY/RxRDYを待たなくてはならない。多分それが理由で自分が知ってるどのターミナルソフトも38400bpsに対応したものは無かった。が、僕は19200bpsで大きなファイルを転送したくなかったので、上のXMRECV.EXP, XMSEND.EXPを書いてみた。

実のところ、TOWNSのフリーのターミナルソフトは9600bps以上だとエラーが頻発して使い物にならないような気がする。富士通純正内蔵モデムも2400bpsだったもんね。9600bpsなんて誰も使わなかったんだな。なお、なぜ速いスピードでエラーが起こるかというと、TOWNSのプロテクテドモードでRS232C割り込みがかかると、割り込みハンドラはリアルモードに戻って、リアルモード割り込みハンドラを呼んで、戻ってきたらプロテクテドモードに戻してリターンという時間のかかることをしているからのようだ。

だがしかし、TOWNSが使っているインテル8251チップは、38400bpsまで出る。結構な個数の8251をFM-7にRS232Cカードを作ってた時に試したけど、どれも38400bpsに何の問題も無く対応していた。

なお、一度にファイルひとつしか送ることができないから、LHA.EXEみたいなアーカイバを使うといいと思う。Townsで動くUNZIPもありそうだけどな。

PC側には、ターミナルソフトをインストールする必要がある。僕はTeraTermを使ってる。使い方はターミナルソフトによって違うからそれぞれのマニュアルを見てもらいたいけど、(××というターミナルソフトはどうやって使うのか?というメールを僕に出した人は僕によって自動的に無視される)ただ、どういうターミナルソフトを使うかに関わらず、シリアルポートは次のように設定する必要がある。

TOWNSにファイルを送る:

  1. TeraTerm(じゃなくてもいいけど)起動
  2. TeraTermの場合だと、 File -> Transfer -> XMODEM -> Send を選ぶ。日本語版だと日本語になってそう。他のターミナルソフトだと多分メニューが違う。
  3. ファイルセレクタで送信するファイルを選ぶ.
  4. TOWNS起動、コンソールモードに入って、XMRECV.EXPをコピーしたディレクトリにCD
  5. 次のコマンドをタイプ(TownsOSはDドライブにあると仮定):
    D:\RUN386 -nocrt XMRECV.EXP ファイル名
  6. 待つ.

38400bps XMODEMだと10MB転送するのに45分ぐらい。

TOWNSからファイルを受け取る:

  1. TOWNS起動、コンソールモードに入って、XMSEND.EXPをコピーしたディレクトリにCD.
  2. 次のコマンドをタイプ(TownsOSはDドライブにあると仮定):
    D:\RUN386 -nocrt XMSEND.EXP full-path-filename
  3. TeraTerm(じゃなくてもいいけど)起動
  4. TeraTermの場合だと、 File -> Transfer -> XMODEM -> Receive を選ぶ。他のターミナルソフトだと違うメニュー鴨しれない。
  5. ファイル名選択。オプションは、チェックサムかCRCはどっちでも良くて、1Kのオプションは選ばない。バイナリ/アスキーの選択が合ったらバイナリを選ぶ.
  6. 待つ.

同じぐらい環境にやさしい方法: ディスクイメージをSCSI2SDに直接書く

FM TOWNSエミュレータ、「津軽」や「UNZ」が使うハードディスクイメージは直接SCSI2SDで使うマイクロSDカードに書き込むと、実機も同じように認識してくれる。あるいは、実機でSCSI2SDに転送したいファイルをセーブして、それをディスクイメージングツールでPC側に持ってきて、「津軽」を使ってファイルを抜き出すという技もある。

ツールは、Win32DiskImagerで何度も成功している.

本当に巨大なファイルを転送したいときはこの方法が有効。実際、ヤフオクで落としたIIMXのハードディスクイメージのダンプを取るとき、この方法を使った。

プロセスは非常に簡単で、Win32DiskImagerの使い方を読むぐらいだったが、注意しないと書き込みたくないマイクロSDに書き込んでしまったり、上書きしたくないディスクイメージファイルに上書きしてしまったりする事故が起こる。"Read"をクリックしようと思って"Write"をクリック、そして以後の確認は何も見ないで「OK」「OK」という事故も多発している。必ずバックアップを取ってから作業すること。どれほど注意していても、事故が起こる確率はゼロにならない。しかし、バックアップを取ることで事故が起きたときの被害が防止できる確率が上がる。自分は、FM-7を現役で使ってたころ、何度も痛い目にあって学習した。今時バックアップが取れるんだから、必ずバックアップを取ってから作業すること。

「津軽」上の仮想ハードディスクにファイルを転送するには、FTCLIENT.EXPというプログラムを使う。FTCLIENT.EXPは以下のURLからダウンロードできるhttps://github.com/captainys/TOWNSEMU/tree/master/townsapp/exp. なお、このファイルを転送するときは、EDITDISK.EXEみたいなディスクイメージツールを使う。あ、そうか。津軽で使うんだから、FTCLIENT.EXP書き込んだディスクイメージアップロードしときゃいいのか。あとでそうしよう。(そして忘れてしまう)

FTCLIENT.EXPをコピーしたら、次のステップでファイルを転送できる。

  1. 津軽をコマンドユーザインターフェース(CUI)モードで起動して、次のコマンドをタイプ:
    host2vm file-name-to-send
  2. 複数ファイルを送りたいときはこのコマンドを繰り返す。
  3. Towns OSでコンソールモードに入って、FTCLIENT.EXPがあるディレクトリにCDして、以下のコマンドをタイプ。 (TownsOSがDドライブと仮定):
    D:\RUN386 -nocrt FTCLIENT.EXP

これで、ファイルがVMに転送される。host2vmコマンドで指定したファイル名の中のディレクトリ名は無視される。

「津軽」上のファイルを抜き出したいときもFTCLIENT.EXPを使う。

  1. 「津軽」をコマンドユーザインターフェースモードで開始して、次のコマンドをタイプ:
    vm2host file-name-to-receive
    ファイル名は「津軽」内のパス名を指定。
  2. 複数ファイルを送りたいときはこのコマンドを繰り返す。
  3. Towns OSでコンソールモードに入って、FTCLIENT.EXPがあるディレクトリにCDして、以下のコマンドをタイプ。 (TownsOSがDドライブと仮定):
    D:\RUN386 -nocrt FTCLIENT.EXP
これによって、ホストコンピュータ上のカレントディレクトリにファイルがコピーできる。

環境に悪い方法: CD-R

この方法の問題は、転送するたびにCD-Rを消耗する点。

TOWNSはISO9660フォーマットのCD-ROMなら読める。このフォーマットは既存のCDライターで簡単に作ることができる。が、TOWNSの内蔵ドライブはCD-Rを読めないかもしれない。CD-RはプレスしたCDに比べてレーザーの反射率が低いので、古いドライブだと読めない。FM TOWNS 2Fのドライブだと読めたけど。TOWNS IIHRのだとだめだった。持ってる二台のIIMXは既にCDドライブが壊れててそもそもCDが読めない。

そういう場合は、ヤフオクとかで外付けCDドライブを買ってきて、内臓ドライブと思わせることでなんとかできる。詳しくは、ここを参照 . あるいは、SCSI CD起動用IPLを使ってもいいけど。

外付けSCSI CDドライブをつなげてTOWNSが内蔵ドライブだと思ってくれたら、あとはやりたい放題。

この方法は何かの理由でXMRECV.EXP, XMSEND.EXPをフロッピーディスクで転送できない場合にも有効鴨しれない。

Comments are welcome.  Send E-Mail to: 

Back to http://www.ysflight.com