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



MS-DOS史上、空前絶後の出来事が・・・


幾度となくバージョンアップが繰り返されたMS-DOSですが、通常、旧バージョンの動作を保証して機能アップしています。 細々した問題はあっても、ものすごく乱暴な言い方をすれば「複数のバージョンがあれば新しい方を使っておけばいい」 という安直な考えが、ほとんどの局面で成り立ちました。

1991年11月、MS-DOSが3.3から5.0へバージョンアップされた際、 それまで保たれてきた「上位互換性」に大きな変化が見られました。 敢えて大げさに言えば、DOSの安全神話が崩れたのです。 MS-DOS 3.3から5.0にバージョンアップした時、過去のバージョンとの上位コンパチを持たせなかったため 3.3をすぐに5.0に置き換えるということはリスキーな行為であると、当時のユーザの多くは認識していました。

OSのバージョンアップに伴い発生するトラブルは、主に次の3つに分類できます。
@OS自体の不具合
Aアプリケーションによる過剰なバージョンチェック
BOSが旧バージョンとの互換性を保持していない
通常は@またはAが問題となる程度で済みましたが、3.3から5.0への移行では、Bの問題が明確に現れました。

@Aは、OS提供メーカーの対応で、あるいはユーザの工夫で何とかなりますが、 Bはどうしようもありません。 少し開発者向けの具体的な話をすれば、 アブソリュートリード・ライト(INT 26h / 27h)を使用していたソフトは、 ディスクセクタを直接操作する設計上、5.0での仕様変更によって正常動作しなくなりました。
私の記憶では、これほど大変な思いをしたのは、後にも先にもこの時だけです。 詳細は別の機会と致しますが、3.3から5.0は、結構な数のユーザが併用を考えたようです。 私もそうでした。 そこで今回は、3.3と5.0を併用する方法について説明していこうと思います。

前回、 準備作業として3.3Dの構築をした際に話した内容 の繰り返しとなりますが、
複数バージョンを共存させる場合は、大きく次の2つのケースに分けられます。
@旧バージョンはほぼ使わないが、何かの時に備えて残しておきたい
Aパソコン起動時に、どちらかを選択可能になるようにしたい

ここでは、80MBのハードディスクを「30MB+50MB」に分割し、 それぞれに3.3Dと5.0をインストールするという作業のうち、 3.3Dのインストールまでが完了しているものとして進めて行きます。 当時の多くのユーザの立場でいうと、使い慣れた3.3の環境があるが、新たに5.0を導入したい、というシチュエーションです。

@、Aについて、若干手順が異なりますが、拡張フォーマットの領域の状態が、 インストールやパソコン起動の際にどのような動きの差となるかを理解することが キーポイントとなることを、まず先にお伝えしておきます。 では、具体的な手順についてです。

@必要時のみ旧バージョン(3.3)を使えるようにしておく
・5.0の起動ディスクをマウントして起動
・インストール画面が現れますが、ここで一旦「ESCキー」を押し、
・中止しますかに「はい」を選びます
・コマンドウインから「FORMAT /H」リターン
・「状態変更」を選んで、既に存在する「MS-DOS 3.30」の領域を「スリープ」でBOOT「不可」にします
・「ESCキー」を2度押し、処理を中止してもいいかに「はい」を選びます
 ※中止という言葉が紛らわしいですが、状態の変更を中止するのではなく、FORMATコマンド画面を終了することを意味します
・ここでパソコンをリセットして、あとは通常通り5.0のインストールを行います
 ※注意:絶対に装置全体の初期化は行わないでください。既存の3.3D環境が失われます。
・5.0(3.3C以降全て)のインストールは、ほぼ同じ方法でいけますので、説明は省きます

A起動時にバージョン選択メニューを表示
こちらは、インストール作業自体は、単独で行う時とほぼ同じ要領でよく、
・5.0の起動ディスクをマウントして起動
・あとは通常通りのインストールを行います
という手順になります。

@の場合、3.3Dは文字通り「眠った状態」ですので、普段は全く使わない領域となり 5.0がAドライブとなります。3.3Dも眠りから覚めた時はAドライブとなり、 ドライブレターがバッティングします。
なので、切り替えたい場合は、「FORMAT /H」でどちらか一方の領域を「アクティブ」でBOOT「可」、 残りを「スリープ」でBOOT「不可」にすることになります。
誤作動のリスクは無いものの、同時には使えないという制約もあります。

Aは3.3D(Aドライブ)と5.0(Bドライブ)のどちらから起動するかの選択メニューが現れます。
起動の都度、作業に応じて選ぶだけの状態となります。 どちらから起動してもドライブレターは同じため、どのバージョンで起動したかを意識しておかないと DOSのコマンドやアプリの起動でエラーが発生することになります。 インストール作業そのものは簡単ですが、インストール後に注意が必要です。

       NEC パーソナルコンピュータ 固定ディスク起動メニュープログラム バージョン 2.20        
       Copyright (C) NEC Corporation 1985,1991                                  
                                                                                
       処  理:領域の選択(起動)                                               
                                                                                
       固定ディスク      #1               1:MS-DOS 3.30                       
                                            2:MS-DOS 5.00                       
       メ ニ ュ ー 終 了               3:                                  
                                            4:                                  
                                            5:                                  
                                            6:                                  
                                            7:                                  
                                            8:                                  
                                            9:                                  
                                           10:                                  
                                           11:                                  
                                           12:                                  
                                           13:                                  
                                           14:                                  
                                           15:                                  
                                           16:                                  
                                                                                
                                                                                
    説明:↑・↓キー=領域の選択 ←キー=装置の選択 リターンキー=起動        
          スペースキー=自動起動の設定                                          
正常にインストールが行われれば、こんな起動画面が現れます。
余談ですが、1つのディスクに確保できる領域の数は、セクター長によって異なり、 256バイトの場合は8個、512バイトの場合は16個となります。


<<< 補足@ 3.3のメニューが誤作動する問題>>>
固定ディスク起動メニューから3.3を選択した場合、コマンドメニューの初期画面が表示されるはずが、 商品の紹介になってしまいます。 これは、固定ディスク起動メニューのリターン・キーがキーバッファに残ったままになることで、 コマンドメニューの初期画面でF1に割り当てられた「本製品のご紹介」が選択されたことと同じ動きになるために起こる現象です。 実機でも起きていた問題か、エミュレータ固有の問題か、今となってはわかりませんが、このような場合の対処方法があります。 AUTOEXEC.BATの中で、メニューを呼ぶ前にキーバッファクリアをしてあげるというものです。

簡単なので、ちょっと作って見ましょう。 キーバッファに入力がある間は空フェッチする、というものです。 今回のように1バイトのみの入力とわかっている場合ならgetch()を一度呼ぶだけでも事足ります。 汎用性を持たせるために、ここではどんな状態でもキーバッファをクリアするという仕様にしておきます。
#include <stdio.h>              
#include <conio.h>              
                                
void main(void) {               
    while (kbhit()) getch();    
}                               
ソース「KEYBC.C」とTurboC2.0でコンパイルした実行モジュール「KEYBC.COM」を ここに置きます。 MENU.COMに限らず、キーバッファにデータが残っていると誤動作するものは、 直前にKEYBC.COMを呼び出してあげればOKです。


<<< 補足A 自動起動に設定すると戻せない問題>>>
固定ディスク起動メニューで、起動したい領域でスペースキーを押すと「※」印が付き、 以降は常にこの領域から起動されます。 いちいち選択しなくてもいい、という利点はありますが、別の領域から起動したい場合に困ることになります。 実機では「TAB」キー+リセットで、自動起動の設定有無に関係なく固定ディスク起動メニューを表示することができ、 日本国憲法22条1項で制定された「領域選択の自由」が保証されます (私は法律の専門家ではありませんので間違ってたらごめんなさい)。

ところが、エミュレータでは「TAB」キー+リセットが効かないようです。 MS-DOS標準コマンドに「CHGEV」があり、3.3Dと5.0の両方が実行できる環境なら これで切り替えることができますが、この方法では元の無選択状態に戻すことはできません。

もし、OS標準機能で出来ないとなりますと、自前でツールを作って何とかすることになります。 私の場合、ディスクユーティリティー「DUT.EXE」というものがあって、これで対応できます。

当時の私の思いとしては、「TAB」キー+リセットという方法でもいいのですが、 折角FORMATコマンドで状態を変更する機能があるのですから、 ここで自動起動の設定も変更できたらいいのに、ということで組み込んだ機能です。 四半世紀後にこんなことで役立つことに気づいたのは、感慨深いです。 自作ツールについては、マニュアルを整備して公開を予定しています。詳細はそのときに説明致します。



複数バージョンの同居で起こる問題


同居によって様々な問題が発生するのは、人間もOSも同じです。 どのような問題が発生するのか、それをどのように対処するか、そのあたりについてお話しさせて頂きます。

【MS-DOS標準コマンド】
先に結論だけ言っておきますと、MS-DOS標準コマンドは特に注意や工夫は必要ありません。 DOSコマンドそのものが、問題のある環境では起動できないような仕組みになっていますので、 間違えればそこで気付きます。複数のバージョンを切り替えられる環境を持っているという前提ですので、 必要に応じて再起動すればいいですし、今どのバージョンを使っているかわからなくなったら 「VER」コマンドで知ることができます。

3.3Dと5.0の「DOS」ディレクトリにある拡張子EXEのファイルを、 間違った環境で起動した場合にどのような動きになるか、下記にまとめておきました。
コマンド3.3D環境で5.0のモジュール5.0環境で3.3Dのモジュール備考
ADDDRVDOSのバージョンが違いますDOSのバージョンが違います
APPENDDOSのバージョンが違いますDOSのバージョンが違いますCOMからEXEに変更された
ASSIGNこのシステムでは使用できません画面表示までOK
ATTRIBDOSのバージョンが違いますDOSのバージョンが違います
BACKUPDOSのバージョンが違いますDOSのバージョンが違います
CHGEV正常起動・処理終了正常起動・処理終了※リセット後固定起動となる
CHKDSKDOSのバージョンが違いますDOSのバージョンが違います
CHKFIL正常起動・処理終了正常起動・処理終了
CUSTOMこのシステムでは使用できません画面表示までOK
DELDRVDOSのバージョンが違いますDOSのバージョンが違います
DISKCOPY画面表示までOK画面表示までOK
DOSSHELLDOSのバージョンが違いますなし
DOSSWAP検証せずなし
DUMPこのシステムでは使用できません画面表示までOK
EDLINDOSのバージョンが違いますDOSのバージョンが違います
EMM386検証せずなし
FASTOPENDOSのバージョンが違いますなし
FCDOSのバージョンが違いますDOSのバージョンが違います
FILECONV画面表示までOK画面表示までOK
FINDDOSのバージョンが違いますDOSのバージョンが違います
FORMATこのシステムでは使用できません画面表示までOK
HDFORMATこのシステムでは使用できませんなし
HDUTL画面表示までOK画面表示までOK
JOINDOSのバージョンが違いますDOSのバージョンが違います
KEYこのシステムでは使用できません画面表示までOK
LABELDOSのバージョンが違いますDOSのバージョンが違います
MAOIX画面表示までOK画面表示までOK
MEMDOSのバージョンが違いますなし
MENUCONVDOSのバージョンが違いますなし
MENUEDなし画面表示までOK
NECAIKEY画面表示までOK画面表示までOK
PATCHファイル名の入力にファイル名の入力に
PRINTDOSのバージョンが違いますDOSのバージョンが違います
RECOVERDOSのバージョンが違いますDOSのバージョンが違います
REPLACEDOSのバージョンが違いますDOSのバージョンが違います
RESTOREDOSのバージョンが違いますDOSのバージョンが違います
SEDIT画面表示までOK画面表示までOK
SELKKCKKCFUNC.SYSが組み込まれていませんなし
SETUP検証せず検証せず
SETUP2検証せず検証せず
SETVERエントリなしなし
SHAREDOSのバージョンが違いますDOSのバージョンが違います
SORTDOSのバージョンが違いますDOSのバージョンが違います
SPEEDこのシステムでは使用できません画面表示までOK
SUBSTDOSのバージョンが違いますDOSのバージョンが違います
SWITCHこのシステムでは使用できません画面表示までOK
SYS起動OK、パラメータエラー起動OK、パラメータエラー
UNDELETEDOSのバージョンが違いますなし
USKCGMこのシステムでは使用できません画面表示までOK
XCOPYDOSのバージョンが違いますDOSのバージョンが違います


【市販アプリ】
市販アプリが、パワーユーザーとしての一番の腕の見せ所かも知れません。 メーカーが新バージョンに対応していると謳っているバージョンを購入して、 新OSでは新バージョンアプリを使う、というのが、一番安全な方法です。
 ・エコロジーの場合、3.3DまではエコロジーU、5.0以降はエコロジーVを使う
 ・一太郎の場合、3.3Dまでは一太郎4.3、5.0以降は一太郎5を使う
メーカーが対応してくれないとか、予算の関係でバージョンアップができない、という場合に、 自力で動作確認して従来バージョンのアプリを使う、という方法があります。 この時に問題となるのが、アプリが過剰にOSバージョンチェックを行っている、というケースです。 「過剰」という表現が妥当かどうかはさておいて、 アプリ発売時点で、OSのこのバージョンでは対応していることを確認した上で、 その範囲のバージョンはOK、それ以外はNGとする訳です。 将来OSがどのように変化するかはメーカー側が知る由もないので、 保証できないものはエラーで弾くという安全な方向に倒したということです。

ただ、この判断が、本来問題なく動くのに起動時にエラーになる、という事態を招くケースが発生しました。 そんな時に役立つのが「SETVER」コマンドです。

5.0以降でサポートされたこのコマンド、使い方は、CONFIG.SYSに「DEVICE=SETVER.EXE」を記述して AUTOEXEC.BATなどで「SETVER ファイル名 バージョン」とすることで、 特定のアプリ(コマンド)をあたかも違うバージョンで動かしたように振る舞うことができます。

ただしこれは、あくまで起動時などで行うバージョンチェックを通すだけで、 本当に問題なく動くかどうかは別問題です。 無理やり動かしたことによる結果はユーザーの自己責任となります。 例えて言うと、オーディションの書類選考を免除になるだけであって、 面接でのオーディションに合格できるかどうかは、本人の努力(プラス運?)次第です。

この「SETVER」コマンドの登場で、 MS-DOSファンクションに、バージョンチェックが2種類存在するようになりました。 従来のバージョンチェック機能はSETVERの指定に従って動きますが、 新たな機能は真のバージョンを返すことなります。 つまり、ユーザーにはSETVERによるバージョン偽装(?)を可能にし、 メーカーには、ユーザーによるバージョン偽装をさせる・させないの選択を可能にし、 結果的にものすごく複雑な状態になっていたように思います。 この時代、SETVERを使いこなしていた人ってどれくらいいるんですかね?

私自身、SETVERは使いにくかったので、アプリにパッチ当てたりしてました。 パッチ当てというとまた大げさな話になりますので、別のトピックでと致します。

【自作ツール】
自作ツールの場合は、シンプルです。 バージョンチェックを行うようにし、対象外のものを弾くか、各バージョンごとに処理を分岐させるかです。

私が実装したのは、アブソリュート・リード/ライト(INT 26h / 27h)です。 バージョンチェックが2種類となり、ユーザーにSETVERによる偽装を 可能にするかどうかの選択ができるようになったのは、先ほどお話しした通りです。 私のような「自給自足プログラマー」には大した問題ではありませんでしたが、 これも厳密に対処しようと思ったら、結構やっかいな問題でした。 これも、自作ツールの話のところでお伝えできればと思っています。


5.0〜5.0A〜5.0A-H


MS-DOS 5.0の後には、マイナーバージョンアップとなる5.0Aがリリースされましたが、 インストール方法を含め、OSとしての基本的な機能には大きな違いはありません。 この当時は、OSのバージョンアップが1年程度の短いスパンで行われていましたが、 5.0Aから次のバージョンが登場するまでは、約2年の間隔が空いています。

この期間中には、Windows 3.1が発売され、MS-DOS上での動作が必須であったため、 5.0Aはその動作環境の基盤として、非常に重要なバージョンとなりました。 個人的には、5.0や6.2よりも、5.0Aにもっとも親しみを感じています。

なお、5.0A-Hというバージョンも存在しますが、これは単体で市販されたものではなく、 PC本体にプリインストールされて出荷されたものです。 「H」は「ハードディスク対応」を意味しているようで、そのPCに特化したドライバなどが含まれています。 ただし、基本的なOS機能は5.0Aとほぼ同一と考えて差し支えありません。

私自身、5.0A-Hのディスクをいくつか所持していますが、 エミュレータ上での環境構築には一度も使用したことがありません。その理由は、以下の2点です。
 @対応機種以外での使用が、ライセンス上認められるかどうか不明(グレーゾーンと思われる)
 A5.0A-Hに含まれる機種依存の機能は、エミュレータ上ではほとんど意味をなさず、5.0Aで十分代用できる

この時代は、「DOSかWindowsか」という選択を迫られ始めた過渡期でもありました。 使い慣れたDOSが変わってほしくないという、根拠のない「応援」を抱きながら、私は5.0Aを使い続けていたように思います。 あの頃私は20代後半で、まだまだ起こり続けるその後の変化のほんの序章に過ぎなかったと、今振り返ればそう思います。


戻る