SSブログ

DOSエクステンダ,AX-VGA(月刊ASCII 1991年12月号7) [月刊アスキー廃棄(スクラップ)]

TBNをスクラップする

メモリ空間の障壁を突破しろ!
DOSエクステンダという言葉をよく聞きますが,これは何をするものなのでしょうか?
 DOSエクステンダとは,文字どおりに解釈すると「MS-DOSを拡張(extend)するもの」になります。具体的には,80286以上のCPUで拡張されたプロテクトモードという動作モードで動くように作られたプログラムを,MS-DOS上で実行できるように拡張するものをDOSエクステンダといいます。
リアルモードとプロテクトモード
 一般にMS-DOSのアプリケーションはリアルモードという8086のCPUの動作モードで動くように作られています.このリアルモードではCPUは最大1Mbytesのメモリしか直接扱うことができず,そのためメモリ不足で大きなプログラムの作成・実行ができないという問題があります.プロテクトモードではこのメモリの制限がなくなり,80286では最大16Mbytes,i386以上のCPUではそれ以上のメモリを扱えるようになります(なお,1Mbytesを超えたメモリのことをプロテクトメモリといいます)。またプロテクトモードでは,ディスクを仮想的なメモリとして使い,実装された以上のメモリをプログラムが使えるようにする仮想記憶という機構を実現します.さらにi386以上のCPUの場合は,複数の8086CPUの動作環境を作り出す仮想86モードや,メモリを任意のアドレスに割り当てるマッピング機能,本来の32bitCPUとして機能させるネイティブモード(32ビットプロテクトモード)が使用可能になります.
MS-DOSでのプロテクトメモリの使い方
 このように数々の優れた特徴を持つプロテクトモードですが,CPUがプロテクトモードで動いているときは,リアルモード用のプログラムを実行できません.そのため,MS-DOSを開発したMicrosoft社は、新しく開発したOS/2というオペレーティングシステムではプロテクトモードを採用したものの,MS-DOSでは従来の8086のパソコンでも使えることを尊重して,依然としてリアルモードを使用しています.
 したがってMS-DOSを使う限りは,80286以上のCPUを搭載したパソコンにどんなにプロテクトメモリを増設していても,このメモリはRAMディスクやディスクキャッシュ,プリンタスプーラ用の単なるデータ領域や,仮想EMSのためにしか利用されず,そのCPUの真価を発揮できません。ただし,MS-Windows3.0を使う場合は,スタンダードモード(80286以上のCPUが必要)やエンハンスドモード*1(i386以上のCPUが必要)で動かすことによって,プロテクトモードを活用することが可能になります。

*1 日電とエプソンは「386エンハンスドモード」,それ以外のメーカーは「386拡張モード」と呼んでいる.
 ところで,MS-DOSアプリケーションが大量のメモリを扱う手段として,EMSとい拡張メモリ方式が考案され,現在非常に普及していますが,アプリケーションがEMSを利用できるようにするにはプログラムの構造を大きく作りかえなければなりません。特にプログラムをEMS上に置くにはかなりの技術力を必要とするため,EMSも単なるデータ領域としてのみ使われる場合が多く,肥大化するアプリケーションのメモリ不足の解消に役立っているケースは少ないようです.
DOSエクステンダのメリット
 さて、話をDOSエクステンダに戻しましょう.DOSエクステンダを使うことによる最大のメリットは,8086で物理的にアドレッシング可能な1Mbytesのメモリの障壁を突破し、より大きなプログラムやデータが使えることにあります(一部には仮想記憶が利用できるものもあります)。またプログラムの開発者にとっては,大量のメモリをごく素直に扱えるため,プログラミングが容易になるというメリットもあります。特にi386のネイティブモード上で動作するDOSエクステンダでは,32bitのUNIXワークステーション用のアプリケーションを簡単に移植でき,これまでワークステーションでしか使えなかった高度なアプリケーションがパソコン上で利用可能になります.
 一般にDOSエクステンダは,プロテクトモード用のプログラムとMS-DOS,BIOS間のインターフェイスや,プロテクトメモリに対するメモリ管理機構を提供することによって,MS-DOS上でプロテクトモード用のプログラムを実行可能にしています(図1).


ASCII1991(12)d02DOSエクステンダ図1_W520.jpg
プログラムの開発方法
 さて,DOSエクステンダを使うには,まずプロテクトモードで動作するプログラムがなくてはいけません。プロテクトモード用のプログラムを開発するには2通りの方法があります。
 ひとつは,プロテクトモード用のコードを生成する専用のコンパイラやアセンブラを使う方法です。このような開発ツールとしては,Phar Lap Software社のHigh C 386や,WATCOM Systems社のWATCOM C/386といった,i386用のネイティブコードを生成するCコンパイラが有名です.これらの開発ツールで作成されたプログラムは,Phar Lap Software社の386|DOS-ExtenderやRational Systems社のDOS/4G,京都マイクロコンピュータのEXE386といったDOSエクステンダ上で動作させることができます。
 もうひとつの方法は,既存のMS-DOS用のコンパイラで生成されたプログラム(OBJファイル)とプロテクトモード用の代替ライブラリとをリンクしてDOSエクステンダ上で動くようにしてしまう方法です。この方法は,80286以上のCPUを対象にしたDOSエクステンダで採用されています.たとえば,Rational Systems社のDOS/16MではLatticeC,MicrosoftC,MS-FORTRANに対応しており,京都マイクロコンピュータのEXE286ではMicrosoftCとTurboC/C++に対応しています.

DOSエクステンダの使い方
 DOSエクステンダを利用したプログラムの実際の使い方としては,DOSエクステンダを別のプログラムとして独立させ,それを実行するときのパラメータにプロテクトモード用のプログラムを指定する方式と,DOSエクステンダとプロテクトモード用のプログラムをひとつのEXEファイルにまとめてしまう方式があります。たとえばEXE286/386では前者の方式に,386|DOS-ExtenderやDOS/16M,DOS/4Gなどは両方の方式に対応しています。当然,後者の方がユーザーにとっては便利であり,Lotus1-2-3といったたいていのDOSエクステンダ対応のアプリケーションは後者のやり方でプログラムが提供されています。
VCPIとDPMI
 ところで,DOSエクステンダを使う際に注意しなければいけないことがあります.それは,すでに仮想EMSドライバやRAMディスク,ディスクキャッシュなどでプロテクトメモリを使っているときにDOSエクステンダを使用すると,プロテクトメモリと競合してそれらのデータが破壊される場合があることです.これは,当初プロテクトメモリの使い方に関する取り決めがなかったため,DOSエクステンダや仮想EMSドライバなどのプロテクトメモリを扱うプログラムが,すべてのプロテクトメモリを自分だけで使おうとしてしまうからです.
 しかし、後になってこの不具合をなくそうと,Phar Lap Software社などが中心になっVCPI(Virtual Control Program Interface)という規格を提唱しました.VCPIはプロテクトメモリの使い方やCPUの動作モードの切り替え方などを規定しています。現在では,ほとんどのDOSエクステンダと,QEMM386,386MAX,MELWAREなどの拡張メモリドライバがVCPIに対応しています.
 ところが,Microsoft社はVCPIではマルチタスクOSで使うには不十分であるという理由で,MS-Windows3.0のリリースとほぼ同じ頃に,DPMI(Dos Protected Mode Interface)という規格を打ち出しました.MS-Windows3.0のエンハンスドモードでDOSアプリケーションを実行するときはDPMIによってプロテクトメモリが管理されるようになっていますが,DPMIはVCPIと互換性がないため,エンハンスドモードではVCPI対応アプリケーションを実行できません(スタンダードモードでは可能)DPMIが発表された当時,すでに米国ではVCPI対応のアプリケーションがかなり普及していました.そのため,DPMIの登場が米国のユーザーやソフトハウスに多少の混乱をもたらしていることは否めないようです.なお,MS-DOS Ver.5.0に付属する仮想EMSドライバ(EMM386.EXE)は,この現実を踏まえたためか,DPMIではなくVCPIに対応しています.
 現在のところ,DPMIに対応したDOSエクステンダや拡張メモリドライバはほとんどありませんが,DOSそのものを開発したMicrosoft社が採用した以上,今後はDPMIに対応したソフトウェアが増えてくるものと思われます.   (笹川)

LaTeXを使ったときにDOSエクステンダを利用しただけだった。他のDOSソフトでは使わなかった。

似ているようで似ていない!?
AX-VGAとDOS/Vの関係について教えてください.
 日本IBMが1990年11月に発表した「DOS J4.0/V」通称「DOS/V」は,VGAと呼ばれるビデオシステムを持つIBM PC/ATおよびその互換機で日本語表示を可能とするディスクオペレーティングシステムです.これに対してAX協議会が1991年4月に発表した「AX-VGAシステム」は,日本語表示機能を持つVGAビデオシステムを搭載したIBM PC/AT互換機と言えます.「AX-VGAシステム」はその実現方法の違いにより,ハードウェアによって実現する「AX-VGA/H」と,ソフトウェアのみによって実現する「AX-VGA/S」とがあります.
 ここでは「DOS/V」と「AX-VGAシステム」の基礎となるIBM PC/ATとVGAおよび「DOS/V」,「AX-VGA/H」,「AX-VGA/S」それぞれの日本語表示機能実現方法と必要とされるハード構成について説明します。

IBM PC/ATとVGA
 IBMが1981年に発表したパーソナルコンピュータIBM PCはその後IBM PC/XT(1983年),IBM PC/AT(1984年)さらにPS/2(1987年)と仕様が拡張されていきます。基本的に上位互換ではありましたが,IBM PC/ATまではオープン・アーキテクチャ(情報公開)であったものがPS/2からは情報非公開となり,PS/2の低価格な互換機は市場に存在できなくなりました。また,PS/2のバス(Micro Channel Architecture)はIBM XT,ATバスと互換性がなく,それまでのIBM XT/AT用拡張ボードが使えませんでした。このためPS/2は数字的には売れなかったわけではなかったのですが,すでに世界の標準となっていたAT互換機の膨大な市場を塗り替えるほどの力はありませんでした。そしてAT互換機の市場はより拡大してきたのです。1984年に登場したIBM PC/ATはCPUに80286を搭載していましたが,その後互換機メーカーからCPUにi386やi486を搭載したより高性能なIBM PC/AT互換機が市場に送り出されています.
 IBM PCにおけるビデオシステムは国内のパーソナルコンピュータに見られるように最初から決まったシステムが搭載されているわけではありません。拡張ボードとして供給され,時代とともに進化し続けています。このため数多くのビデオシステムが存在します(表1).IBM PC/ATと同時期に発表されたEGA(Enhanced Graphics Adaptor)は,640×350ドット,64色中16色同時表示を可能とするもので,IBM PC/ATにおける標準ビデオシステムとしての一時代を築きましたが,その後PS/2のビデオシステムに採用されたVGA(Video Graphics Array)がIBM PC/AT用の拡張ボードとして多数発売され,現在ではVGAが標準的なビデオシステムとなっています.VGAは最大640×480ドット,26万色中16色(320×200ドットでは26万色中256色)同時表示が可能です.


ASCII1991(12)d03AXVGA-DOSV表1_W520.jpg
「DOS/V」における日本語表示
 「DOS/V」は,英語MS-DOSと日本語処理のためのデバイスドライバからなります.日本語の表示はVGAの640×480ドットのグラフィック表示を用いて行ないます.IBM PC/ATは漢字ROMを持っていませんから,起動時に漢字フォントをディスクから読み出しプロテクトメモリに置きます。「DOS/V」は仮想テキストVRAMを持ち,そこに書き込まれた文字コードに従って,日本語処理用のデバイスドライバが適当なタイミングで文字コードに対応したフォントをグラフィック画面に展開します.「DOS/V」が動作するハード環境は以下のとおりです(代表的な機種は日本IBMの「PS55/5510ZJ).
・IBM PC/ATまたはPS/2とその互換機
・VGAビデオシステム
・80286以上のCPU
・1Mbytes以上のRAM

「AX-VGA/H」における日本語表示
 VGAに日本語テキスト表示機能を追加したビデオシステムを搭載したIBM PC/AT互換機が「AX-VGA/H」です.VGAチップ.漢字ROM,外字RAM,専用LSI,ビデオBIO SROMなどで構成され,テキストVRAMに書かれた文字コードに従い,八ードウェアで漢字フォントを展開して表示します(図2)対象となるハードウェアは以下のとおりです(採用機種は日立製作所のFLORAシリーズ)
. ・IBM PC/AT互換機
・AX-VGAビデオシステム
・80286以上のCPU
・1Mbytes以上のRAM


ASCII1991(12)d03AXVGA-DOSV図2_W520.jpg
「AX-VGA/S」における日本語表示
 「AX-VGA/H」が持つビデオシステムのうち,漢字ROM,外字RAM,専用LSI,ビデオBIOS ROMの部分をソフトウェアにより実現するのが「AX-VGA/S」です.「DOS/V」と同様にデバイスドライバの形でソフトエミュレータが組み込まれ,仮想テキストVRAMの内容に従い,拡張メモリに置かれた漢字フォントを使ってグラフィック画面に文字フォントを展開します。
 「DOS/V」と異なる点はこのエミュレーションがi386以上のCPUが持つ機能,仮想8086モードで行なわれるところにあります.「DOS/V」においてはBIOSを経由したテキスト出力のみが保証されますが,「AX-VGA/S」では仮想8086モードでエミュレーションされるため,BIOSに関係なくテキストVRAMにアクセスした場合でも正しく表示されます.対象となるハードウェアは以下のとおりです(主な機種は三洋電機の「AXGEnote386SX」).
・IBM PC/AT互換機
・VGAビデオシステム
・i386以上のCPU
・2Mbytes以上のRAM(漢字ROMなし)
・1Mbytes以上のRAM(漢字ROMあり)

「AX-VGA」と「DOS/V」の関係
 以上のように「AX-VGA」は,VGAもしくは日本語表示拡張されたVGAビデオシステムを搭載したIBM PC/AT互換機です.したがって「DOS/V」を動作させることも可能です.
 また,「AX-VGA/S」はソフトにより「AX-VGA」の日本語表示を可能としています.もし,「AX-VGA/S」のデバイスドライバを含むDOS単体の販売が行なわれれば,i386CPU+VGAを搭載したPC/AT互換機は,「DOS/V」のみならず「AX-VGA」による日本語環境をも実現できることになります.
 将来的にはAXやJ-3100のVGA対応機種で,DOS/V上のアプリケーションが動かせるようにメーカーが対応する可能性もあるのではないか,といわれています。「AX-VGA」と「DOS/V」は世界標準といわれるIBMPC/AT+VGAで実現できる2つの異なる日本語環境ですが,その生い立ちを考えればIBM PCを父親に,日本IBMとAX協議会を母親として持つ異母兄弟と表現するのが分かりやすいのではないでしょうか.    (柴田)

 潔くDOS/Vに統一すればよかったのにと思う。DOS/Vに統一したのはいつだったか。

nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット