MS-DOSには各バージョンがあり、各バージョンによって、システムコールや
その他の仕様が異なります。したがってバージョンによって異なるシステムコールなどを
使うプログラムは、バージョンをチェックして今動いているMS-DOSで処理を続けて
大丈夫なのかを判断しなければならない場合があります。
MS-DOSのバージョンは、例えばVer.3.30というようにメジャーバージョン(整数部=3)と、
マイナーバージョン(小数部30)の2つに大別されています。
MS-DOSのバージョン取得
AH = 30h
INT 21h
戻り値:AL = メジャーバージョン
AH = マイナーバージョン
BH = OEMのシリアル番号
BL:CX = 24bitのユーザー番号
|
例えばVer.3.30ならば、AL=03h、AH=30hが返ってきます。また、Windows98でこの
システムコールを行うとAL=07h、AH=0Ahでした。おそらくサービスパックなどに
より異なるかと思います。
OEMのシリアル番号とは、どこのメーカーのMS-DOSかを示します。MS-DOSは本来、
マイクロソフトが開発していますが、ハードウェアーと密接な関係のある部分は
ハードウェアー会社が開発します。つまりマイクロソフトはOEMとしてハードウェアー
会社に供給し、ハードウェアー会社が自分のマシン用にセットアップして、ユーザーに
供給しているのです。特にNECのPC-9801、PC-9821シリーズと、DOS/VとかAT互換機は
ハードウェアー的に仕様が大幅に異なっているのは有名な話です。
したがってPC-9801用とDOS/V用とが別々に存在するソフトもあります。NECが
開発したMS-DOS(含MS-Windows)は、このOEMのシリアル番号がFFhになっていますので、
PC-9801かどうかを調べるためには、このOEMシリアル番号をチェックすればよいことに
なります。