EMSを使用するためには、ドライバーを組み込まなくてはなりません。当たり前ですが。
ドライバーの組み込み方は、このホームページの範囲外なので、説明書でも読んでください。
アセンブラでEMSを使うためには次の手順を踏まなくてはなりません。
- EMM(EMSドライバ)が組み込まれているかどうか調べる(ノートがあるか調べる)
- EMSメモリーの空き容量を調べる(ノートのページが余っているか調べる)
- EMSメモリーを割り当てる(空きページを使うよう宣言する)
- ページフレームの場所を調べる
- EMSメモリーを物理ページにマップする(ノートのページをめくる)
- メモリーにアクセス(ノートにメモする、読む)
- EMSメモリーを物理ページからアンマップする(ノートを閉じる)
- EMSメモリーを解放する(ノートのページを消しゴムで消す)
青字の部分は、必要に応じて繰り返す
|
MS-DOSのシステムコールは、「INT 21h」を呼び出して使用していましたが、
EMMのシステムコールは「INT 67h」を使用します。
EMSを使用するにあたり、注意事項をあげます。
- EMS領域をスタックとして使用しない
-
EMSをスタックとして使用している最中に、EMSを使用する常駐プログラムやデバイスドライバー
に制御が移った場合、そのプログラムがスタックを使用する可能性がある。このような場合、
EMSを使用している常駐プログラムなどが、自分自身あるいは自分用のデータを
破壊してしまう可能性がある。
- 常駐プログラムなどでEMSを使用する場合
-
EMSを使用する常駐プログラムを作成する場合、EMSを使用する前にページが
マップされているかどうか調べ、マップされていたらどのページがマップされているか
調べ、常駐プログラムから本来のプログラムに戻る際に、もとのページをマップ
しなおさなければならない。つまりだれかがノートを開いていたら、自分が
使う前に、しおりを挟み、自分が使い終わったときに、もとのページを開いて
おかないといけない。
では、次ページからEMSのファンクションの説明をします。EMSのファンクションには、
OSのみが使用可能なファンクションも多く設けられています。これらはプログラムを
作るだけでは関係ないし、またEMMがプログラムからの呼び出しだと判断した場合には、
何もしない場合もありますし、OSが壊れる場合もありますので、省略します。OSを
作ろうというならば必要になってくるかもしれませんが、そのような考えを持っている
人は、こんなページを見るわけないでしょうから・・・。
なお、EMSの規格はVersion 4.0のものです。このページで紹介するような基本的な
ファンクションは3.2でもほとんど変わっていませんので、省略します。