はじめに
こんにちは。okada.kenです。
年齢層が高い人しか関心が無いかもしれない、大昔のPC98の技術ネタを書いてみたいと思います。PC98のHDDに残された大切なデータを取り出すために、NICを刺してLANに接続してFTPを介してデータ吸い出しをしてみた、という記事になります。
PC98というパソコンをご存じでしょうか。1980年代前半〜1990年代中頃まで日本国内で販売され、Windows時代の到来と共に少しずつ姿を消していった、NEC製のデスクトップPCです。下は私が所有しているPC98です。
PC98はビジネス用途(文書作成や会計計算)や工場の機械制御に使われたと聞きますが、私にとってはゲーム機でした。ファミコンが1983年発売、スーパーファミコンが1990年発売、初代PlayStationが1994年発売で、家庭用ゲーム機が発展する時代に並行してPC98用ゲームも発展していました。家庭用ゲーム機と比べるとユーザ数は少なかったですが、バラエティ豊かなハードウェア(HDDなど大容量記憶媒体、グラフィックカードによる3D表現、微細な絵が表現できるCRTモニタ、MIDIなど音源性能)やマウス・キーボードを活かした野心的なゲーム作品が多かった印象です。
で。私のPC98のHDDの中に大切なデータが入っているのでそれを取り出してみた、というのがこの記事の主眼です。パソコン通信で集めたMIDI楽曲ファイルが数百MB程度HDDの中に残されているのですが、PC98から大量データを外に出す手段はほとんどありません。フロッピーでこつこつコピーする場合1回1.5MBずつになってしまいますし、USBポートもありませんし、MOドライブもCD-Rドライブも持っていません。PC98からHDDを取り出してWindows機に接続するという方法もあるのですが、リスクがあるため今回は選択しませんでした。
なのでPC98にNICを装備させて、TCP/IPとftpクライアントを使ってデータを取り出したいと思います。
PC98のHDD
対象となるPC98を見てみましょう。私が持っているのはPC9821Ae/U2(1993年1月発売)です。
当時はCRTディスプレイが一般的でした。今の感覚だとデカいですね。
この当時のパソコンは本体裏面に電力供給用コンセントがあり、ここにディスプレイや周辺機器を接続しておくと、パソコンの主電源と連動してそれらに電源供給される仕組みがありました。パソコンの主電源を入れるだけでモニタやスピーカーの電源が入るので原始的で分かりやすかったのですが、最近はあまり見ないですね。
当時のハードディスクを取り出してみましょう。前面カバーを取り外します。
ハードディスクケースを抜きます。
ハードディスクケースの中にハードディスクが入ってます。HDD接続方式はIDE。昔の規格ですね。
ハードディスクのラベルを拡大してみます。容量340Mbytesと書いてあります。……当時はこれでも大容量でした。
大切なデータはこのHDDの中に入っているのですが、このHDDを現代のWindows機に接続してもMasterBootRecordの形式が異なるために認識してくれません。MBRを書き換えるフリーソフトも存在するのですが、ミスってデータ破壊のリスクを冒すのが怖かったので今回は選択しませんでした。
PC98のNIC
PC98用のNICは持っていなかったので、ヤフオクで調達しました。MELCO製のLGY2-98-DA(PC98拡張スロット規格のCバス用)。通信速度は10Mbps。懐かしい通信速度ですね。
たぶんいないと思いますが、もしも私と同じようにこれからPC98用のNICを調達する方がいたら、ドライバが入手可能かどうかに注意して下さい。実はMELCOのNICを買う前に以下のCONTEC製NIC(C-NET(98)E-11)を購入したのですが、メーカーのホームページでドライバを見つけられなかったため使えませんでした。20数年前の製品ですからね。
ところがMELCOはいまだにPC98用ドライバがダウンロード出来ます(2020年8月現在)。さすがは信頼と実績の国産メーカー。凄いです。
余談ですが、上のCONTEC製NICは古い接続端子が残っていて面白いですね。右側のRJ45端子は馴染みがありますが、左の同軸ケーブルや中央のAUI用の接続端子は私も使ったことがありません。いずれも通信用端子です。詳しくは以下のURLなどを参考にしてください。
PC98のNICのインストール
PC98にMELCO製NICを挿して、一般的なLANケーブルを挿します。LANケーブルの先は自宅で日常的に使ってるスイッチングハブです。
PC98を起動して、NICのパケットドライバを入れます。パケットドライバって何ですか?って言われそうですが、NICと物理層との間をやり取りするためのドライバです。PC98用NICのドライバには「パケットドライバ」「Windows95ドライバ」「ODIドライバ」「NDIS2ドライバ」などが入っていて、それぞれ古いOS(MS-DOS、Windows95、NetWare、OS/2)用のドライバだと思われます……たぶん(パケットドライバ以外は使ったこと無いです)。
パケットドライバのドキュメントには以下のような説明文がありました。物理層とやりとりするだけ、ということが伝わります。
5.LGY-98のドライバについて
LGY-98のドライバは、パケットの送信、受信処理を行っているだけであり、
プロトコルには関知していません。そのためどのようなプロトコルにでも
対応できます。
このパケットドライバをPC98にインストールしたいと思います。現代的なOSではインストーラを実行すると必要なファイルが適切な場所に自動的にコピーされて有効になりますが、PC98とMS-DOSの世界ではそんなことはしてくれません。全て手作業です。
Windows機でNIC用ドライバをダウンロードして、USB接続のフロッピーディスクドライブを使って3.5インチフロッピーを経由してPC98にコピーします。Windowsで使えるUSB接続FDDは2020年現在でもAmazonで3000円程度で購入できます。
PC98の主電源を入れて、MS-DOSという古いOSを起動させます。MS-DOSはCUIしか提供しないので、WindowsにおけるDOSプロンプトのような見た目をしています。HDDにインストールされたゲームやアプリケーションを利用する場合、このコマンドラインからゲームを起動する必要があります。
ドライバを使ってみましょう。パケットドライバを以下のように実行して常駐させます。常駐とはプログラムをメモリに展開して、必要なときにMS-DOSやアプリケーションから機能を呼び出せる状態にすることです。
ドライバの引数は自分で設定する必要があります。
LGYPKT <packet_int_no> <int_level> <io_addr>
第1引数はソフトウェア割り込みレベルです。通常は 0x60
を指定しろとマニュアルに書いてあるのでその通りにします。
第3引数はIOポートアドレスです。通常は 0x00D0
を指定しろとマニュアルに書いてあるので、その通りにします。
第2引数は割り込みレベル(IRQ)を指定します。これはマニュアル記載の設定では動作しなかったのですが、調べると「melchk.exeという診断プログラムを使うべし」という情報が見つかりました。ドライバに含まれていたので、実行した結果が以下になります。
そしてこの結果と以下のマニュアルを見比べて、IRQを決めます。なのでドライバの第2引数は「12」になります。原始的ですね。
(2)int_level
割り込みレベル(IRQ)を10進数で指定します。LGY-98では3,5,6,12の
いずれかが選択可能です。デフォルトは3です。LGYSETUPで表示される
INTの値は記述しませんので注意してください。
LGYSETUPで表示されるINTは、PC-9800シリーズ独自のINTです。LGYSETUPの「INT」とint_levelに記述する値の対応表を以下に示します。 LGYSETUPのINT int_level(=IRQ) 0 3 1 5 2 6 5 12
これでパケットドライバが常駐しました。再起動しても常駐するように、AUTOEXEC.BAT に今のコマンドを書いておきます。なおAUTOEXEC.BATとはMS-DOS起動時に自動実行されるバッチファイルのことです。
TCP/IPの設定
パケットドライバをインストールしたことで物理層と会話できるようになりました。次はTCP/IPを話してくれるソフトを入れる必要があります。PC98用のフリーソフトTEENを使います(未だにフリーソフトを提供し続けてくれていることに感謝します)。
teen.def が設定ファイルなので、以下のようにIP設定を書き込みます。teenの書式は見慣れないものですが、ネットマスクやゲートウェイなどの概念は現代と変わりありません(当たり前か)。
設定ファイルを作ったら環境変数にパスを設定した上で、teenを実行して常駐させます。問題無さそうならこれもAUTOEXEC.BATに書いておきましょう。
ここまでパケットドライバとteenをHDDの a:\net
にコピーして、autoexec.bat に以下のようなコードを追加しました。これでPC98を再起動しても自動的に常駐するようになります。
a:\net\lgypkt 0x60 12 0xD0
set teen=a:\net\teen.def
a:\net\teene
さて、ここまで来たらPC98からWindows機へのpingを打ってみましょう。
LANに接続されています。8.8.8.8
へのpingも通るので、インターネットも接続出来ています。当たり前のこととはいえ、1993年のパソコンがネット接続できるというのは妙な感動がありますね。
FTPクライアントを使ってデータ転送
最後にPC98用TEENに対応したftpクライアントを入れます。(未だにフリーソフトを提供し続けてくれていることに感謝します)
ftpの転送先を作る必要があるので、Windows機でFTPサーバを動かします。Windows標準のIISを使えば簡単に作れますので、説明を省略します。ググればいっぱい情報出てきます。
では、PC98からFTPサーバ(Windows機)にファイルを転送してみましょう。
ちゃんとファイルが送信されていきます。
この様子だとsshクライアントを入れればPC98からawsのサーバにもログイン出来ますし、テキストブラウザを入れればインターネットも見られそうですね。
まとめ
おかげさまでいつ壊れるか分からない20数年前のHDDから数百MBのデータを、ftpソフトを使いLAN経由でデータを吸い出すことに成功しました。めでたしめでたし。
ただ今回の作業をしている最中に2基あるFDDが、1基は完全に壊れ、もう1基は起動直後や機嫌が良い時しか読み込んでくれない状態になってしまいました。またヤフオクなどで壊れていない中古のFDDを調達して交換しないといけないです。レトロPCはすぐに壊れてしまうので扱いが面倒ですねぇ(ワクワク)。
おたより発掘
懐かしい。AT互換機全盛になったあとも、PC98をチャンポンボードというものを買ったりして頑張って使ってた思い出が。 "PC98をLANに接続してみた|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社" https://t.co/SB1I7QrpNf
— Masao S (@masawo) August 28, 2020