PC-98のHDDを直接AT互換機で読み書きできるようにするプログラム

Conv98AT Version 1.24

Copyright 2010-2023 まりも

■ このプログラムの目的

 PC-98のシステム起動で使われるハードディスクは、パーティションテーブルやその管理方式、論理フォーマット形式など全ての点で、PC/AT互換機とは異なっています。したがってPC-98で使っていたハードディスクをPC/AT互換機に接続しても(IDE,SATA,SCSI,USBなどインターフェイスを問わず)そのままでは全く認識できません。

 しかしPC-98方式のパーティションテーブルとPC/AT互換機のそれとは、たまたまうまい具合に記録位置が異なっており、共存させることも可能となっています(自動起動の設定情報を除く)。そこで本プログラムでは、PC-98のハードディスクのパーティションテーブルからPC/AT互換機のパーティションテーブルを作成し、所定の位置に埋め込むことで、PC-98とPC/AT互換機とで相互に認識可能としました。

■ 基本的使い方

 まずアーカイブを解凍して、Conv98.exeを取り出してください。MS-DOSのコマンドプロンプトあるいはWindows9xのコマンドプロンプト起動の状態(DOS窓は対象外)で、カレントディレクトリにConv98AT.EXEを置くか、それがあるフォルダにPATH通した状態で、

Conv98AT
とタイプして起動します。するとハードディスクが複数ある状態ではディスク装置の選択メニューが出ますので、対象としたいディスクを選んでください。なおここに出るディスクは、PC-98のブートBIOSの管理下にあるものだけです。BIOS管理外のハードディスク装置(USB接続なども)は対象になりません。1台しかディスク装置がない場合はそのまま選択してください。

 次に、PC-98で使用していた領域のリストが表示されます。 パーティションが4個以下の場合は、それらについてPC/AT互換機のパーティションテーブルが作成されます。

 PC/AT互換機のパーティションテーブルは、仕様上4個までしか記述できませんので、PC-98側のパーティションが4個を超えている場合は、先頭から4個までのアクティブなパーティションだけを対象とすることにしています。したがって、5個以上のパーティションがありその最後の パーティションをPC/AT互換機でアクセスできるようにしたいというような場合は、手前にあるパーティションのどれかを「スリープ」の状態にあらかじめしておいてください。ACTVPTNというソフトでそれを行うことができます。 スクリーンショットの例

 パーティションリストが表示されると、変換した情報を書き込んでよいかのメッセージが出ます。nで応答した場合は中止します。

 yで応答すると、次に
「一部のSD-IDE変換器用の特別な対策を行いますか?(y/n)」

という問いが出るようになります(バージョン1.24から)。詳細は後述します。Yで応答すると、当該ディスクを98に接続したときに、MS-DOS 6.20のScandisk で問題が検出されて元に戻されますが、心配は要りません。なお 変換器経由のSDメディア以外の記憶装置では意味がありませんので、必ず N (Y以外のキー)で応答してください。

 この後変更した情報がディスクに書き込まれます。

 その後、PC/AT互換機に接続してください。IDE,SATA,SCSI,のほか、リムーバブルのUSB接続でも認識できるはずです。ディスクファイルの読み込みだけでなく、書き込んでも問題ありません。またPC/AT互換機で使用後に、PC-98に接続しても、起動・認識できます。

■ 注意

 このプログラムでできるのは、PC-98上で現在接続されているハードディスクをPC/AT互換機で認識できるようにすることです。PC/AT互換機に繋いでからPC/AT互換機上で使うソフトウェアではありません。また逆方向の使い方、つまりPC/AT互換機で使っていたハードディスクをPC-98で認識させることはできません。

 PC/AT互換機上では、このハードディスクに対して、領域の作成や削除、検索、再フォーマットなどを行わないでください。とくにDOSのFDISKの実行は絶対に避けて下さい。FDISK /MBRコマンドの実行も絶対に行わないでください。PC-98側のIPLコードやパーティションテーブルが失われてしまいます。

 PC-98上でもIPLや起動メニューを書き直すようなことがあると、本プログラムで作成したPC/AT互換機用パーティション情報は破壊または消滅してしまいます。

 PC/AT互換機用パーティションテーブルと、PC-98の「固定ディスク起動メニュー」による領域の「自動起動」の設定記憶とは、ディスク上の記録場所が重複しています。したがって本プログラムを適用すると、自動起動設定が無効になります。また逆に、本プログラムを適用してあるハードディスクに対してPC-98上で自動起動の設定をすると、本プログラムが作ったPC/AT互換機用のパーティション情報のうち、4番目領域の情報が破壊されます。領域が4個ある場合は注意してください。

 PC-98側の領域のファイルシステムIDが81hとなるものは、MS-DOS 5.0以上で作成すると必ずFAT12ですが、MS-DOS 3.30Dまでで作成するとFAT16である場合があります。しかし現バージョンではFAT12として扱ってしまうため、もしFAT16であった場合には正しいファイルシステムIDに変換されません。

 PC-98側の領域のファイルシステムIDが91hのFAT16(DOS3互換)は、DOS論理セクタ長が1024あるいは2048バイトとされており、そのままではPC/AT互換機ではアクセスできません。MS-DOS 6.20に付属している"DBLTRANS"というプログラムをまず当該ドライブに適用してください。その結果ファイルシステムIDがA1hに変更され、DOS論理セクタ長が512バイトとなります。DOS 3からはアクセスできなくなります。

 CPUが8086,V30,80286では動作しません。80386以上の機種に目的のディスクドライブを接続して実行してください。

 PC/AT側ファイルシステムIDについてはFAT16では0E FAT32では0Cとしています。PC/AT側がLBAでアクセス可能な本体およびOSであればこれで問題はありません。いっぽうCHS形式でアクセスするシステムの場合は、1023シリンダ以内にあれば、ファイルシステムをFAT16では04または06、FAT32では0Bとしなければいけないことになっています。FAT12では01にしなければいけません。しかしながらPC-98側ではPC/AT側のCHSがどうなるかは全く判断できません(255ヘッド63セクタを仮定して8024MiB以内かで決め打ちは可能ですが)。どうしても必要があれば、いったんLBAが扱えるPC/ATで拙作FDSKにてFSIDを直接変更してください。

■ PC/AT互換機用のパーティション情報を消すには

 コマンドラインオプションで -r を付けて起動して下さい。既にあるPC/AT互換機用のパーティション情報とWindiwsディスク署名も削除されます(PC-98側のディスク署名には影響ありません)。

■ BIOSが認識しているパラメータを無視して認識させたいときは

 コマンドラインオプションで -m を付けて起動して下さい。BIOSヘッド数、BIOSセクタ数のパラメータの問い合わせが出ますので、そのハードディスクを論理フォーマットしたときの正しい値を入力してください。なおWindows2000を使用していた場合は、パーティションテーブルの通常未使用箇所に、BIOSヘッド数、セクタ数が記録されています。本プログラムではそれを表示しますので入力の際に参考にしてください。

 このオプションは上級者向けです。通常は使うことはないと考えられます。誤った値を設定すると、AT互換機側で認識でなくなるほか、OSの起動にも支障を来します。

 このオプションを使うことが想定される場合とは、たとえばIDEのハードディスクをSCSI変換で使っていて、変換をやめて直接IDEに接続しているような場合です。このときはもちろんPC-98側でも領域の認識ができません。しかしIDEのDISK BIOSが認識したパラメータではなく、SCSIのときのパラメータ(例えば8GB以上なら128セクタ、8ヘッド)を指定すれば、PC/AT互換機で正しく認識されます。

■ PC-98に戻したときにOSの起動ができなくなっていたら

 注意のところで述べたように、PC/AT互換機上で不用意にディスク管理関係の操作を行うと、PC-98にとって必要な情報が失われる場合があります。PC-98側のパーティションテーブルが消えてしまった場合は、元に戻せません。どうしても元に戻したいときは、別の拙作ソフトMkPtnTblを使って下さい。PC-98用のIPLと起動メニュープログラムが損傷しているだけであれば、別の拙作ソフトIPL_menu を使えば一発で復元できます。ただしこれを使うと、PC/AT互換機側のパーティションテーブルも消えますので、必要ならば本プログラムを再び実行して作成してください。

■ 動作の詳細

 このプログラムでは、PC-98のパーティションテーブルからBIOSシリンダ数を得て、現在のBIOSのヘッド数、セクタ数から、領域のLBA総セクタ数や、開始位置LBAセクタ番地を求めます。その値でPC/AT互換機のパーティションテーブルを、セクタ0のバイト位置1BEhから16×4バイトのところに作成します。これにより、ほとんどのPC/AT互換機とOSでは領域を認識できるようになります。

 PC-98でもPC/AT互換機でも認識できるファイルシステムは、FAT16,FAT32,NTFS(Windows2000版)です。Windows NT 4.0のNTFSについては、違いはないと思いますが、確認していません。それ以外のファイルシステムでは FreeBSD(98)はそのままファイルシステムIDをBSD386相当のものに変換しています。

 (バージョン 1.24から) 特定のSD-IDE変換器(FC1307Aというチップが使われているモノ)を介したSDメディアは、その変換器のファームウェアが作動し、98パーティション情報を消去してしまうことが知られています。これに対抗する措置として、以下のような機能を追加しています(16進数表記)。しかしそのファームウェアの全貌は不明です。この機能は現時点での暫定措置とお考えください。またSDメディア以外では無意味有害となります。

・Master Boot Recordの'IPL1'の手前を 00 00にする
・Master Boot Recordの末尾に 55 AAのシグネチャ追加
・PC/ATでFATの第1パーティションのFile System IDを 06に強制
・当該FATパーティション先頭セクタの末尾に 55 AAのシグネチャ追加
・当該FATの先頭のメディアIDを FE FF から F8 FE に変更(98と異なる仕様のため注意)

【5月25日追記】当該のSD-IDE変換器のファームウェアを改修して、上記の問題を解決するという方法が公開されました。98フォーマットとの互換性を下げるオプションを使うよりは、この改修で対応することをお勧めします。 FC1307A搭載SD-IDE変換基板のおかしな挙動を直す (https://zenn.dev/mctek/articles/306d1afc153c0b)

■ 免責事項など

 このプログラムは「フリーソフト」ですが、著作権は作者にあります。著作権者の意向を無視したことはしないでください。たとえば不特定多数がダウンロードできる場所への無断転載は禁止とします。転載に当たってはかならず許可を得て下さい。

 このプログラムを適用した結果については、とくに保証はしませんし、パーティション情報やファイルシステムが壊れるなどの損害があったとしても、作者は一切責任を負いません。それをご了解の上でご使用願います。

 連絡先メールアドレスはhomepage上にあります。

■ 改版履歴

2010. 4. 1  1.00版 【新規作成】
   対応file system FAT16,32,NTFS

2010. 4.20  1.10版 【機能追加】
   パラメータ任意設定を可能に、自動起動に関する注意記述追加

2021.10.12  1.20版 【修正】
ブート不可属性のN88-BASIC領域が無視されるのを修正
変換対象領域が無いときDISK書込みの問いが出ないようにした

2021.11.1  1.22版 【補足】
FSIDが91hのFAT16(DOS3互換)は事前にDBLTRANSを実行するよう明記

2023. 1.31  1.23版 
   先頭FAT領域のFATメディアIDをF8hにする選択機能を追加

2023. 8.22  1.24版
   特定のSD-IDE変換器用SDメディア向け設定機能を強化
   -r オプションのときこの機能の選択が表示されないよう修正

[戻る]