MS-DOS 2.11 インストール方法


Neko Projectを使って、MS-DOSの歴史をたどりながら、各バージョンごとにインストール作業を行っていきましょう。

ターゲットOSの機能やその変化点から、インストール時のポイント、その当時の四方山話しまで、いろいろ交えながらお話しさせて頂こうと思います。
必ずしも、バージョンの古い順から読む必要はないのですが、この順番で読み進めれば、各OSの変化をより実感できると思います。
「歴史をたどる」と言うのでならば、バージョン2ではなく1から開始すべきという指摘もあるかも知れませんが、次の理由からバージョン1は割愛させて頂きます。
 @試験的なリリースであり、一般ユーザーにはほとんど普及していなかったと思われる。
 Aハードディスク非対応のため、インストールという概念自体が存在しない。 FD起動の確認程度の操作しかできない。
 B筆者がこのバージョンを所有していない(Bだけで充分、@Aは不要との説あり)。

私がエミュレータとして使用したNeko Project 21/Wのバージョンは、ver.0.86 rev.45ですが、 細かいバージョン差があっても、本記事の内容に大きな影響はありません。




HDDイメージの作成


ハードディスクにインストールをする訳ですから、まずはハードディスクを作らなければなりません。 「作る」と言ってもそこはバーチャルの世界、サイズを指定してイメージファイルを作るだけです。 ただ、仮想ならではの便利さもあればわかり辛さもありますので、そのあたりをお伝えできたらと思います。

メニューより「Emulate」−「New Disk」−「Hard disk image」で、ファイルの種類「hdi」を選択し、新規作成します(保存場所・名前は任意です)。



このような画面が表示され、5MB〜40MBでサイズを選択できますが、 この当時のOSではそれほど多くのディスク容量を必要としませんので、ここでは5MBを選んでおくことにします。 ちなみに、MS-DOS 2.11のフォーマッターは20MBまでしか領域確保できないため、それより大きいサイズを選択しても20MBを超えた領域は無駄となります。 30MB・40MBというのはこの後のMS-DOS 3.1以降で使用する場合に選択します。

どうしても20MBよりも大きいディスク容量が欲しいという場合は、ファイルを2つ作成して両方をHDDとして割り当てて下さい。 そうすれば最大40MBまで利用できます。と言うと、どうしても40MBよりも大きいディスク容量が欲しいという人も出てくるかも知れませんが、 その場合はMS-DOS 2.11の使用自体を見直す必要があります(笑)。 拡張フォーマットというものも存在しませんので、1台に複数の領域を作ることもまだできない時代です。

MS-DOSのバージョンとHDDのセクタ長の関係は以下のようになっています。
MS-DOSバージョンファイルシステムセクタ長256バイトセクタ長512バイト
Ver1FAT12セクタ長に関係なく、HDD未サポート
Ver2FAT12標準フォーマット未サポート
Ver3以降FAT12
FAT16(3.3以降)
標準フォーマット
拡張フォーマット
拡張フォーマット
【参考】
Ver6.2
FAT12・FAT16ダブルスペースによる
圧縮ができない
32MB以上なら
ダブルスペースによる圧縮が可能
MS-DOS 2.11では、セクタ長が256バイトでないとハードディスクとして認識しません。

Neko Projectでは、hdiファイル作成の際に細かいパラメータ設定はできませんが、実際に作成されるSASIイメージは以下の通りです。
サイズシリンダ数ヘッド数セクタ数セクタ長ディスク容量ヘッダーファイルサイズ
5MB1534332565,170,1764,0965,174,272
10MB31043325610,475,5204,09610,479,616
15MB31063325615,713,2804,09615,717,376
20MB31083325620,951,0404,09620,955,136
30MB61563325631,173,1204,09631,177,216
40MB61583325641,564,1604,09641,568,256
シリンダ数 × ヘッド数 × セクタ数 × セクタ長 = トータルサイズ で、これが内部でのディスク容量となります。
hdiファイルは、先頭に4096バイトのヘッダーがありますので、これを足したものがファイルサイズとなります。

このように、Neko Projectで作ったhdiファイルは、必ずセクタ長256バイトになっていますので、MS-DOS 2.11で使用しても特に問題ありませんが、 セクタ長を自由に(と言っても256バイトと512バイトの二択)指定できるAnex86などで作成したhdiファイルを使用する場合は注意が必要です。



インストールの実行


それでは、実際にインストールを実行してみましょう。まずは、以下の状態でマシンを起動します。
・FDD1 MS-DOS 2.11 システムディスク
・IDE#0 先ほど作成した5MB HDDイメージ

OSが起動したら、まずハードディスクの初期化やシステム転送を行います。 そのためには、コマンドラインから「format /h」を実行します。 以下、私が行った作業のコンソール内容を示します。
A>format /h                                                                     
                                                                                
Format  Version 2.50                                                            
                                                                                
                                                                                
                                                                                
固定ディスクの装置番号を入力してください [1,2] = 1                              
                                                                                
モ―ドを選択してください                                                        
1:マップ 2:領域確保 3:領域解放 4:IPL 5:装置初期化 6:装置変更 7:終了 = 5      
                                                                                
システム情報が不正です                                                          
                                                                                
装置全体を初期化します、いいですか  ? y                                    
                                                                                
装置を初期化中です                                                              
  残り 60 メガバイト                                                            
                                                                                
モ―ドを選択してください                                                        
1:マップ 2:領域確保 3:領域解放 4:IPL 5:装置初期化 6:装置変更 7:終了 = 2      
                                                                                
        現在の装置使用状況        装置番号 1                                    
                                                                                
        MS−DOS              領域無し                                      
        他のOS                 6 MB                                         
        空き領域                21 MB   53 MB                                 
                                                                                
領域の大きさを入力してください [1-20 MB] = 5                                    
                                                                                
領域確保中です                                                                  
  残り  0 メガバイト                                                            
                                                                                
システムを転送しますか  ? y                                                
システムを転送しました                                                          
                                                                                
IPLを登録しますか  ? y                                                  
IPLを登録しました                                                            
                                                                                
ディスクのボリュ―ムラベルを入力してください                                    
漢字 - 5文字、英数字 - 11文字、無名称 - リタ―ンキ―                         
                                                                                
モ―ドを選択してください                                                        
1:マップ 2:領域確保 3:領域解放 4:IPL 5:装置初期化 6:装置変更 7:終了 = 7      
                                                                                

以上で、HDDの初期化・システム転送が完了します。

途中、装置番号は、イメージファイルをIDE#0にセットしたので[1]となりますが、もしIDE#1にセットした場合は[2]となります。
ちなみに、SASIの仕様がハードディスクは「2台まで」ですので、IDE#2・IDE#3にセットしても、フォーマッターがHDDとは認識しません。

ボリュ―ムラベルはただのコメントですので、ここでは省略していますが、このドライブに名前を付けたい場合には任意の文字列を入力して下さい。

ここでFDD1をイジェクトして、マシンをリセットします。

NEC PC-9800 Series Personal Computer                                            
                                                                                
マイクロソフト MS-DOS バ-ジョン 2.11                                                     
Copyright 1981,82,83 Microsoft Corp. / NEC Corporation                          
                                                                                
Command バージョン 2.11                                                            
現在の日付は yyyy-mm-dd (?) です                                               
日付を入力してください :                                                        
現在の時刻は hh:mm:ss.00 です                                                   
時刻を入力してください :                                                        
                                                                                
A>dir                                                                           
                                                                                
 ドライブ A: のディスクにはボリュームラベルがありません                         
 ディレクトリは A:\                                                             
                                                                                
COMMAND  COM    17190  86-06-10   0:00                                          
        1 個のファイルがあります                                                
  4956160 バイトが使用可能です                                                  
                                                                                

HDDからMS-DOS 2.11が起動したことが確認できます。
ただし、これだけではOSの最小限の機能しかインストールされていませんので、システムディスクの残りのファイルもハードディスクにコピーします。 これで、OSの全機能のインストールが完了します。

余談ながら、当時のパソコン事情がこの画面に現れていますので一応触れておきます。 OS起動時に日時の入力を促されるというものです。通常、変更する必要はないので、日付分と時間分、リターンキーを2度叩きます。
パソコンに内部時計があるのは皆さんご存じでしょう。インターネット利用が当たり前になった現代では、時刻合わせも自動で行われ、 手動による作業を経験したことがないという方も多いと思います。この時刻合わせという作業、かつては、みんな手動で行わなければならず、 パソコンの性能や季節(使用する室温)などにも依りますが、月差10秒程度は覚悟していましたので、年に数回は行ったものです。 そのとき活躍したのがダイヤル117(時報)ですが、今ではその存在自体も忘れ去られようとしています。
初期のパソコンでは、電源オフの状態では内部時計が動作しなかったそうで、パソコンを起動するたびに 時刻合わせが必要でした。(流石に私もそこまで古い機種は使ったことがありませんが)。 「必要」と言っても、ファイルのタイムスタンプを気にしない、あるいはファイルそのものを作成しないのであれば、時刻合わせは不要とも言えます。 その後、バッテリーバックアップの内蔵時計が標準化されたことで、電源オフの状態でも内部時計は動くようになりました。 旧機種のサポートのために、起動するたびに日時を求められるこの頃の仕様は少々面倒に感じたものでした。


謎のシークエラー


無事インストールは完了しました。ところが、インストールされた機能を実行しようとすると、いくつかのコマンドで原因不明のシークエラーが発生します。
たとえば、以下のようなファイル構成のディスク上で FILECONV.EXE を実行したところ
NECDIC   DRV    31190  86-11-20   0:00                                          
NECDIC   SYS   520192  86-11-20   0:00                                          
MOUSE    SYS     2989  86-06-10   0:00                                          
MOUSE    DOC     2851  86-06-10   0:00                                          
NECREN   DRV    64375  86-11-20   0:00                                          
FILECONV EXE    31648  86-06-10   0:00                                          
README   DOC      346  86-06-10   0:00                                          
CONFIG   SYS       19  86-06-10   0:00                                          
       34 個のファイルがあります                                                
  3973120 バイトが使用可能です                                                  
                                                                                
A>fileconv                                                                      
                                                                                
シークエラーです <ドライブ A:> <読取り中>                                       
中止, もう一度, 無視?                                                  

NECDIC.SYSという500KBオーバーのファイルがありまして、FD起動が当たり前だった時代としてはかなり巨大なサイズですが、 どうやら、これよりも後方(物理クラスタが大きい)のファイルにアクセスしようとするとシークエラーを起こすようです。
ディレクトリエントリは正しく認識できるのに、そのファイルの中身が正しく認識できていないようです。

ここからは私の推測ですが、5MBあるディスクのトータル容量を、これよりも少なく(0.5MB程度?と)誤認識しているものと思われます。 装置全体の初期化をする時も、本来5MBしかないディスクを60MBと表記していて、この時点で既に何か「嫌な予兆」はあったのかも知れません(苦笑)。
誤認識する閾値が、せめて1.25MBフロッピーディスク1枚分より大きければまだハードディスクにインストールする意味があるのですが、 フロッピーの半分ほどのサイズしか認識しません。 これではFDD起動の方がまだマシという、何とも悲しい結果になりました(泣)。



標準フォーマットは問題山積


少し脱線しますが、セクタ長256バイトのSASIハードディスクは、MS-DOSがバージョンアップしていっても 標準フォーマットができるようになっています(一部、途中のバージョンを除く)。
しかしながら、Neko Projectの現バージョンでは、MS-DOSのバージョンによって以下のような様々な現象が発生します。
バージョン結果エラー原因
Ver.2.11シークエラー原因不明
Ver.3.1シークエラー原因不明
Ver.3.1最終版標準フォーマット未対応OSの仕様で検証できず
Ver.3.3・3.3A・3.3B・3.3C・3.3D問題なく動作 
Ver.5.0 5.0A問題なく動作 
Ver.6.2OS起動せずOSの仕様で起動時エラー
※6.2では、ダブルスペースという圧縮ユーティリティを導入したため、256バイト自体が未サポートとなった

MS-DOS 3.1の途中から拡張フォーマットに対応しています。 詳しくはMS-DOS 3.1のところで説明致しますが、拡張フォーマットが使える環境では、標準フォーマットの使用は避けるのが無難と言えます。



シークエラーの原因と対応


話しをMS-DOS 2.11に戻します。
原因調査のため、他のPC-98エミュレータでも同様の環境構築をしてみました。その結果は、以下の通りです。

PC-98エミュレータバージョン結果
Anex86Ver.2.77問題なく動作
T98-NEXTVer.1.00HNDファイルを作成する際、セクタ長の指定不可
直接編集して実行したがOSが起動せず
Virtual98Ver.1.42問題なく動作
Neko Project 2Ver.0.86シークエラー
Neko Project 21Ver.0.86シークエラー
Neko Project 21WVer.0.86
Rev.45
シークエラー

ここで特筆すべきなのは、Neko Projectで作成したhdiファイルが、Anex86上ではエラーなく動作する点です。 このことから、シークエラーの原因は「hdiファイル」自体ではなく、「エミュレータの挙動に起因する」ことが明確になりました。 もしHDDの標準フォーマットを使いたい場合は「Anex86かVirtual98を使用すべし」ということのようです。

Neko ProjectのエミュレーションはIDEであるのに対し、Virtual98はSASIとなっています。 Anex86はHDDという表示になっていますので詳細は不明ですが、HDDが2台までとなっていますので、こちらもSASI互換のエミュレーションと思われます。 挙動の違いは恐らく、エミュレーションするハードディスクタイプの差なのでしょう。
SASIをターゲットとするOSを利用するには、SASIのエミュレーターである必要があり、 IDEをターゲットとするOSを利用するには、IDEのエミュレーターである必要がある、 非常に基本的ながら、エミュレータを使ってみないと気づけない事実にたどり着きました。

また余談ですが、format /h 実行時にディスク容量が正しく表示されない問題(例:5MBのHDDを「60MB」と誤表示する)は、 ディスクサイズやCHS構成によって起こったり起こらなかったりします。 一見深刻そうに見えますが、少なくとも今回の検証では無視しても大きな問題にはならないことがわかりました。



戻る