■ ご利用ありがとうございます

SCSID.EXE は NEC PC-98x1 シリーズで利用していた SCSI ハードディスクを PC/AT 互換機でフォーマットせずに利用するためのディスクドライバ です。PC/AT 互換機の MS-DOS/Windows 95/Windows 98/Windows 98SE で 16 Bit デバイスドライバとして動作します。
CONFIG.SYS で組み込むドライバなので Windows 利用時は、16 Bit の MS-DOS 互換 モードドライブ(つまり遅いドライブ)として動作します。どちらかと言うと データ移行用に利用するためのドライバです。
商用ドライバも MicroStaff より出ているようです。次の URL を参照してください。

http://www.microstaff.co.jp/foruser/pc98_hdd_dosv/

ただし、私は使ったことが無いので詳細は不明です。

■ 実行環境

ハードウェア IBM PC/AT 互換機
80386 またはこれに互換性があるプロセッサで動作している必要 があります。
PC/AT は厳密に言えば 80386 で動作するマシンではないのですが...
OS
MS-DOS v6.22 制限つきで動作可能
Windows 3.1 制限つきで動作可能 (MS-DOS v6.22)
Windows 95 初期 動作可能
Windows 95 OSR1 動作可能
Windows 95 OSR2 動作可能
Windows 98 動作可能
Windows 98SE 動作可能
------------
Windows Me 動作不可
ファイルシステム FAT12, FAT16, FAT32
上記のファイルシステムにて長いファイル名 VFAT を使用可
警告 圧縮ドライブは未対応です。圧縮ドライブを使用する とファイルを破壊したり起動不能になる現象が確認さ れています。
ASPI MS-DOS モードの ASPI マネージャ
SCSI インターフェースに添付された MS-DOS 用ドライバ を組み込んでください。
メモリ MS-DOS 領域を最大で 32Kbyte 程度使用します。
補助ツール GCHS.EXE
NEC PC-98x1 で利用していたときの ヘッド数とセクタ数を割 り出すためのツールです。SCSID.EXE の /Gid=h:s オプショ ンの値を決めます。

■ 組み込み


■ SCSID.EXE のオプション

DEVICE=x:\path\SCSID.EXE [scsi-id:{Pa|Cb-c|Sd-e}[W]]... 
                         [/Gscsi-id=Heads:Sectors]... [/options]...
scsi-id:Pa[W] パーティション番号を指定してドライブとして利用できるようにします。

scsi-id は SCSI-ID 番号を指定します。0-9, A-F です。
a はパーティション番号です。0 番より指定します。
W は書き込みを許可を意味します。

パーティションが「スリープ」状態であっても利用可能です。

5:P0W
SCSI-ID #5 のパーティション 0 を書き込み許可で利用します。

パーティション番号指定の場合は /Gi=h:s オプションで ドライブのジオメトリを指定する必要があります。

パーティションをいきなり「書き込み許可」で利用しない で下さい。まず 5:P0 の様に W を付けずに指定して、一 通りのファイルやディレクトリが現れるかどうか確認して 下さい。

「書き込み許可」 W を付けない場合、ブルーバック画面 にて書き込みできない旨が報告されます。

scsi-id:Cb-c[W] シリンダ番号の範囲を指定してドライブとして利用できるようにします。

scsi-id は SCSI-ID 番号を指定します。0-9, A-F です。
b はパーティションが始まるシリンダ番号を指定します。
c はパーティションの最後のシリンダ番号を指定します。
W は書き込みを許可する場合に指定します。

5:C1-384
SCSI-ID 5 のドライブのシリンダ番号 1 から 384 の範囲 をパーティションとみなし、読み出しだけ可能な状態で利 用します。

シリンダ番号指定の場合は /Gi=h:s オプションでドライブ のジオメトリを指定する必要があります。

scsi-id:Sd-e[W] セクタ番号の範囲を指定してドライブとして利用できるようにします。

scsi-id は SCSI-ID 番号を指定します。0-9, A-F です。
d はパーティションが始まるセクタ番号を指定します。
e はパーティションの最後のセクタ番号を指定します。
W は書き込みを許可する場合に指定します。

5:S256-98559
SCSI-ID 5 のドライブのセクタ番号 256 から 98559 の範囲をパーティションとみなし、読み出しだけ可能な状態 で利用します。

/Gi=h:s ドライブのジオメトリを指定します。

PC-98x1 で利用していた時のヘッド数と 1 トラック当たりセクタ数を指定します。
i は SCSI-ID 番号、 h はヘッド数、 s はセクタ数を意味します。 ヘッド数は最大 15、セクタ数は最大 255 です。 この値は PC-98x1 で利用していた時の値か GCHS.EXE で解析した値を利用します。

ヘッド数と 1 トラック当たりセクタ数を SCSI ボードに よってはマルチベンダパラメータとも言っています。

SCSI ディスクはリニアセクタアクセスです。しかし、 PC-98x1 では SCSI ドライブに対しても架空のヘッド数と 1 トラック当たりのセクタ数が定められています。 この架空の値は SCSI ドライブがヘッド数と 1 トラック 当たりのセクタ数として推奨している値と違う場合もあります。

このオプションに既定値はありません。0:P0 や 5:C1-384 のの様にパーティション番号またはシリンダ番号を指定する場合 必須です。

/G5=8:32
SCSI-ID 5 のドライブを 8 ヘッド、1 トラック当たり 32 セクタとして扱います。

/X- セクタ長変換をしません。

512 Byte/sector になっていない パーティションをセクタ長変換をしないでそのまま利用しよう とします。OS が 512 Byte / sector 以外を処理できない場合 はエラーになります。

Windows 95 以降はセクタ長変換をせずに利用できます。

512 Byte / sector 以下(例えば 256 Byte / sector) ならば制限なく利用可能と思われます。

物理的なセクタ長は PC98x1 でも 512 Byte / sector あ るいは 256 Byte/ sector です。しかし、論理セクタ長 は512 Byte より大きい場合があります。

/X- が既定値です。

/X0[i] セクタ長変換をします。

ただし、セクタ長変換をした結果安全な場合に限ります。 安全な場合は次の条件を全て満たします。
  • セクタ数を変換した結果 OS が処理可能なドライブ当たりの セクタ数を超えない。MS-DOS v4.00 以上ならは 32 Bit の 範囲に収まる。MS-DOS v4.00 未満なら 16 Bit の範囲に収まる。
  • ルートディレクトリエントリー数がルートディレクトリの セクタ数から割り出した値と一致する。
  • FAT セクタ数が全クラスタ数より割り出した値に一致する。
/X0 は既定として指定されていません。

最後に /X0i の様に i を付けると BOOT セクタに対する書き 込みを無視するようになります。セクタ長変換した結果をディ スクに書き込まないようにし、元々の情報を保護します。

/X1[i] セクタ長を変換します。

セクタ長変換をした結果 FAT セクタ数に矛盾がある場合でも ドライブとして利用できるように処理を続けます。

/X1 は既定として指定されていません。

最後に /X1i の様に i を付けると BOOT セクタに対する書き 込みを無視するようになります。セクタ長変換した結果をディ スクに書き込まないようにし、元々の情報を保護します。

/Istr SCSI ホストアダプタを選択します。

str はホストアダプタ名になります。"host-adapter-name" または 'host-adapter-name' の様に引用符で囲んだ文字列で指定で きます。囲みを使用すると空白と特殊文字を \xhh で含めることが できます。

指定しない場合は最初に ASPI マネージャが認識したホストア ダプタを選択することになります。
ホストアダプタ名は GCHS.EXE /L にて確認できます。

/Nn SCSI ホストアダプタを番号で選択します。

n はホストアダプタ番号です。
/I または /N オプションのどちらかでホストアダプタを指定 します。どちらも省略した場合は /N0 が有効になり最初に ASPI マネージャが認識したホストアダプタが選択されます。

/I, /N 両方指定した場合は /N が優先されます。

/N0 が既定値です。

/S[+|-|] /S+ または /S SCSI デバイスから Read/Write するのに 6 Byte 形式を使用します。

このオプションは問題がない限り指定する必要はありません。 ドライブのセクタ数が 0x200000 以上の場合 6 Byte 形式を 使用することはできません。

/S- が既定値です。

/Tn SCSI コマンドを発行した後、タイムアウトとする時間を n 秒 にします。

タイムアウトしても 1 回再試行するので実際のエラー になるまでは n*2 秒以上経過した後になります。

/T10 が既定値です。

/Bn 1 度に Read/Write するバイト数の上限 n バイトにする。

このオプションは問題がない限り指定する必要はありません。 n=0 などの無理な設定をした場合はセクタ長に一致する値に なります。
このサイズよりも大きい Read/Write 要求が OS からドライバ に発行された場合、/B で指定したサイズ以内に収まるように 分割して処理します。

/B32768 が既定値です。

/K[+|-|]
/K+ または /K ドライバー組み込み中、 メッセージを表示するごとにキー入力待ちになります。
/K- キー入力待ちしません。

/K- が既定値です。

/V ドライバ内部状態の表示をします。

ただし、再構築をしない限り利用できません。 再構築時に SHOWSTATE 環境変数を設定する必要があります。

再構築をしていない SCSID.EXE は /V を指定できません。


■ 複数のドライブ(パーティション)を利用する

複数のディスクを利用するには SCSID.EXE に複数のパーティション指定をしま す。例えば下の様にします。
  DEVICE=C:\SCSID.EXE /G5=8:32 5:P0W 5:P1W 5:P2W 5:P3W /G3=4:48 3:P0W
この例でドライブ文字は下に示すとおりになります。
SCSI-IDPartitionDrive letter
5 0 D
5 1 E
5 2 F
5 3 G
3 0 H
ドライブ文字は D から割り当てられた場合を示しています。

複数のディスクを利用する場合は、/G オプションでジオメトリを 必要な分だけ指定します。

同一パーティションを重複して指定してはいけません。
重複指定または部分的な重なりがあった場合、 ディスクに記録されているファイルを破壊してしまいます。 SCSID.EXE の現在の設計では重複と部分的な重なりがあっても検出できません。

■ OS ごとの制限

私の手元で動作確認した結果は次の様になっています。どの環境でも動作を約 束できる訳ではないですが、参考にして下さい。

OS動作検証圧縮 領域最大 容量 byte *1推奨 オプションその他
DOS 2.xx 3.xx ? x 32 M /X0i *2
DOS 4.xx 5.xx ? x 2 G /X0i *2
DOS 6.xx o x 2 G /X0i *2
MS-Windows 3.1 o x 2 G /X0i *3
MS-Windows95 o x 2 G なし *4
MS-Windows95 OSR1 o x 2 G なし *4
MS-Windows95 OSR2 o x 2048 G なし *4
MS-Windows98 o x 2048 G なし *4
MS-Windows98 SE o x 2048 G なし *4
MS-WindowsMe x x x x x
o: 動作可能 ?: 未検証 x: 動作不可
*1 圧縮領域を使用しないで下さい。SCANDISK, DEFRAG などのツールにて 圧縮領域が破壊される場合があります。
*2 セクタ長変換ができない場合 32Mbyte 以下のパーティションでも使用 できない可能性があります。
*3 セクタ長変換ができない場合 2Gbyte 以下のパーティションでも使用 できない可能性があります。
*4 /X- の状態のままでも 1024 bytes/sector, 2048 bytes/sector を 扱えている様です。しかし、ドライブを認識できなかったり、 「フォーマットされていない旨」が示された場合は、/X0I を付けて 見てください。

■ 利用上の注意 (質問と回答形式)

Q.パーティションをいくつか表示した後に止まってしまう。
A.LASTDRIVE 指定よりもドライブ数が多いと止まってしまいます。 CONFIG.SYS を編集し LASTDRIVE 指定を編集して下さい。例えば、次のようにします。
LASTDRIVE=Z
DOS=HIGH,UMB
DEVICE= ... 以下続く ...
Q. SCSID.EXE で利用しているドライブをアクセスするとマウスやキーボードの 反応が悪くなるようだ。
A. はい。Windows で xcopy, backup など連続的にアクセスをするアプリケー ションを利用すると起きる現象です。
CD-R, CD-RW の焼きこみをディスクアクセスと平行して行うのは避けて下さ い。SCSID.EXE で利用しているドライブのファイルを CD-R や CD-RW に保存 するときは CD イメージを一旦別のハードディスクに作成するなどの方法を 推奨します。

Q. パフォーマンスメータの CPU 利用率が 0% ならない。10 - 50 % 程度の オフセットが掛かってしまう。
A. どうやら、Windows 自身の問題のようです。次を参照してみてください。

http://www.microsoft.com/JAPAN/support/kb/articles/J046/1/89.htm?LN=JA&SD=SO&FR=0

ただし、SCSID.EXE を利用すると現れやすい現象のようです。

Q. Sector size too large ... と表示され起動途中で止まってしまう。
A. この現象が出た場合は SCSID.EXE で利用しようとした SCSI ドライブを外して 起動してください。
起動は出来るようになるので CONFIG.SYS を編集して SCSID.EXE のオプショ ンを調整してください。次の質問項目も見てください。
SCSI ドライブを外す場合は終端接続も忘れずに確認してください。

Q. Sector size too large ... と表示された場合パーティションは利用できな いのですか?
A. まず CONFIG.SYS を編集して SCSID.EXE に /X0i オプションを指定して下さい。 それでもだめな場合は /X1i を指定して下さい。SCSID.EXE でセクタ長 変換するように試みます。あるいは MS-DOS を使用しているならば Windows95 または Windows98 を利用してみる様に勧めます。

Q. MS-DOS 互換のドライブと言われる。
A.16Bit ドライバですので当然です。

Q.関係のないハードウェアにもデバイスマネージャで見ると(!) が付いてしまった。
A.SCSI デバイスの割り込みが他のデバイスと共有されている場合 IRQ リソー スが不足したり、他のデバイスで使用している DMA, I/O, メモリが重なって (!) が付くことがあります。
必ずしも解決するとは限りませんが SCSI ボードに添付された ASPI マネー ジャを SCSI ボードに説明の有るとおりインストーラを使って組み込むと(!) が消える場合があります。特に使用するのは DOS 用の ASPI マネージャです が Windows 用のドライバを組み込むと(!)が消えることがあります。

(!) が消えるのは IOS.INI ファイルに「安全なドライバ」として DOS用 の ASPI マネージャが登録されるためです。Windows 用のドライバを組 み込むための .INF ファイルに IOS.INI を編集する指定が含まれている ことがあります。

Q.ドライブのジオメトリとは何か?どんな値を指定する必要がある?
A.ドライブのジオメトリとは NEC PC-9800/9821 シリーズで利用していた時に マルチベンダパラメータとして SCSI I/F ボードに設定した値です。

この値が不明な場合は GCHS.EXE を利用して調査する方法があります。

Q.ドライバを外すにはどうしたらよいか?
A.CONFIG.SYS から SCSID.EXE を組み込む行を削除するか、MS-DOS 5.0 以降ならば REM を付けて無効化してください。

外す前:
  DOS=HIGH,UMB
  device=C:\WINDOWS\himem.sys
  device=C:\WINDOWS\EMM386.EXE RAM
  DEVICE=C:\DRV\T3x5aspi.sys
  DEVICE=C:\DRV\SCSID.EXE /G5=8:32 5:P0W 5:P1W 5:P2w 5:P3W
  
後(その1):
  DOS=HIGH,UMB
  device=C:\WINDOWS\himem.sys
  device=C:\WINDOWS\EMM386.EXE RAM
  DEVICE=C:\DRV\T3x5aspi.sys
  
MS-DOS の ASPI マネージャが不要であけば ASPI マネージャも削除します。

後(その2):
  DOS=HIGH,UMB
  device=C:\WINDOWS\himem.sys
  device=C:\WINDOWS\EMM386.EXE RAM
  
Q.UMB に組み込んでも良いか? DEVICEHIGH を利用しても良いか?
A.推奨しません。動作可能なようなのですが次の問題があります。

  • 仮想的な DMA 転送が行われます。
    ディスクアクセスのバッファ領域が物理的なメモリが無い番地に確保される のが原因です。問題は起きないはずなのですがなるべく複雑な機構を利用する のは避けたほうが良いでしょう。
  • 不用意なメモリ書き込みに対する危険性が増します。
    Windows の DOS プロンプトモードにおいて UMB があたかも共有メモリの様に ふるまう現象が見られます。複数の DOS プロンプトを起動し UMB に書き 込みを行うと、他の DOS プロンプトの UMB にも書き込みが反映されます。

Q.ホストアダプタ名を指定しても正しく認識できていないようだ。
A.次の原因が考えられます。

  • SCSI I/F カードが 1 枚しかない場合は /I, /N オプションとも指定は 不要です。デフォルト(すなわち使用中の 1 枚の I/F ボード)が選択されます。
  • ホストアダプタ名を指定するのに特殊文字または空白を含める必要がある。 GCHS.EXE /L で表示される名前を " " で囲んで指定してみてください。
  • MS-DOS モード(起動直後)のホストアダプタ名と Windows 利用時のホスト アダプタ名が違う。F8 キーを押しながら Windows を起動して Command prompt only を選択した後 GCHS.EXE /L で表示されるホスト アダプタ名を指定して下さい。
Q.ホストアダプタ名が随分と長いように思える。
A.ASPI の規格から外れた(あるいは明文化されていない)仕様でホストアダプタ 名が定められている場合があります。従って、長くなることがあります。

Q.最大認識可能なドライブ(パーティション)容量は?
A.設計上 (512) * ((2^32)-1) バイトです。ただし、まともに試験できません ので確認していません。SCSID.EXE を組み込む OS によっては 2Gbyte ある いは 32Mbyte の制限が掛かります。

Q.圧縮ドライブに対応しているのですか?
A.対応していません。
Windows98 において SCANDISK を使用すると圧縮ドライブを破壊する現象が 確認されました。普通の読み書きは一見するとできている様です。しかし、 SCANDISK で起きている問題の原因が掴めていません。 従って対応宣言はしません。

Q.圧縮ドライブをマウントしようとしたら「ドライブレター(文字)が足りません」と表示され利用できません。
圧縮ドライブは未対応です。利用するのはかなり危険です。
A. ドライブ文字を Z まで使い切らなくても出るようです。SCSID.EXE を 使用したときだけの問題ではないので、全体で使用しているドライブ文字の範囲を 10 個(J) までにしてみてください。BIOS 設定やで認識するドライブを減 らしたり SCSID.EXE で使用するパーティションを減らしてみてください。

もう 1 つの注意は「ホストドライブを隠さない」ということです。Windows のバージョンによっては解決しているものもあるのですが、1 度隠した設定 をしてしまうと、圧縮ドライブのホストドライブでなくても隠しつづける バグが露見します。これは SCSID.EXE を使用してなくても起きる現象です。

Q.圧縮ドライブになっているパーティションを SCSID.EXE で利用しようとしたら Windows が起動しなくなった。
圧縮ドライブは未対応です。利用するのはかなり危険です。
A.DRIVESPACE3 にアップグレードしてあるドライブで問題が発生します。圧縮 ドライブを含む SCSI ドライブを外して起動しなおして下さい。あるいは、 F8 キーを押しながら Command prompt only モードで起動した後、win コマンドで Windows を起動すると CONFIG.SYS 等の編集ができる場合がある様 です。

Q.なぜか見えないドライブがある。たとえば MS-DOS プロンプトで見えていた D,E,F ドライブが Windows を起動したとたん D,F になる。
A.ドライブへのショートカットを使うと(作る)見えなかったドライブが見える ようになります。Windows95 で圧縮ドライブ(ドライブスペース)を利用している (または過去に利用していた)場合に起きる問題です。ホストドライブを 隠すための設定がレジストリに残るためにおきます。レジストリを修正すれば 復旧しますがお勧めしません。

どうしてもこの現象を解消したい場合は、別途ツールを開発してあるので 要望があれば公開したいと思います。

Q.SCSID.EXE で利用しているドライブを SCANDISK や DEFRAG して良いか?
A.禁止します。次の問題があります。
  • Windows3.1 を含めこれより以前の DOS, Windows では SCANDISK, CHKDSK を実行するとセクタ長が 512 バイト以外ではファイル、ディレクトリ、FAT 構造に問題があるとして修正を求める場合があります。修正してしまうと逆に ファイルを破壊します。
  • 圧縮領域においては SCANDISK, DEFRAG によってファイルやディレクトリを 破壊してしまう可能性があります。特に SCANDISK によって破壊される現象 を確認しています。
  • BOOT セクタや FAT 領域に書き込まれている重要な情報が書き換えられアクセス できなくなる恐れがあります。特に NEC PC に戻して利用できなくなる 恐れがあります。
  • SCANDISK, DEFRAG はディスクを激しくアクセスするので、マウスやキーボード の反応が悪くなり万が一の場合に何もできない恐れがあります。
  • ある程度のエラーに対処できるようにドライバは設計されていますがごく少ない ケースでしかテストしていません。SCANDISK, DEFRAG 中に読み書き障害が 発生した場合はどの様になるか予測がつきません。
Q.FDISK はできるのですか?
A.SCSID.EXE で利用しているドライブに FDISK を使うことはできません。

Q.FORMAT はできるのですか?
A.SCSID.EXE で利用しているドライブに FORMAT を使うことはできません。 FORMAT を起動すると不正処理で終了する様です。システムが不安定になる恐 れがあります。

Q.削除ファイル復旧ツールを使用できますか?
A.使用するのは推奨しません。評価版の FinalData を使用してみた結果特に 問題はなさそうなのです。しかし、復旧ツールの中には NEC PC-98x1 と PC/AT のパーティション構造の差で動作が違うものも有ると思われます。本 来 PC/AT につながるはずの無い NEC PC-98x1 で利用していたハードディス クを接続するのですから、思わぬトラブルを起こすかもしれません。

Q.VFAT や FAT32 も利用できるのですか?
A.利用できます。FAT12, FAT16, FAT32, VFAT(長いファイル名) に対応しています。 ただし、SCSID.EXE を組み込んだ OS で対応していることが前提です。

Q.FAT16, FAT32 の間の変換はするのですか?
A.変換はしません。従って PC-98x1 で Windows95 OSR2 を含め、より新しい OS で利用していた FAT32 パーティションは同等の OS バージョンもしくは より新しい互換性が有る OS で利用してください。

Q.NTFS などの FAT, VFAT, FAT32 以外のドライブ(パーティション) に対応していますか?
A.対応していません。

Q.利用しようとするパーティションのファイルシステムが SCSID.EXE を組み込んだ OS で利用可能かどうか何かチェックしていますか?
A.現在チェックしていません。従って FAT32 パーティションを Windows95 OSR1 を含めより古い OS で利用しようとした場合、ファイルがまったく見え ないか、破壊された状態でしか扱えません。データ損失の危険性があります。

Q.NEC PC-9821, PC-9800 シリーズで利用できますか?
A.PC-9821, PC9800 シリーズで利用するのは推奨しません。1 つの パーティションを複数のドライブに見える様に設定しなければ問題は出ない様に 設計してあります。しかし、問題を回避するための操作や設定が煩雑です。

Q.SCSID.EXE で利用可能になったドライブに保存されている NEC PC-9801, PC-9821 専用アプリケーションは IBM PC/AT 互換機上の MS-DOS や Windows で利用可能になるのですか?
A.利用可能になりません。


Copyright (C) [2001/4], [2001/7] by Akinori Furuta ( ).
戻る