MSX-DOS2PIS 02 05

From Z80 Machines Wiki
Jump to: navigation, search

2.5.RAMページング

一時プログラムがロードされると、マッパーRAMスロットは4ページすべてで有効になり、基本64kを構成する4つのRAMセグメントがページインされます。Pag​​e-0には、MSX BIOS ROM互換スロット処理エントリポイントがあります。 3ページで利用可能なさまざまなマッパーサポートルーチン(これらの仕様については5章を参照)。

COMMAND2.COMがこれを処理するため、プログラムは実行中に好きなスロット切り替えやページングを実行でき、終了する前にスロット選択やRAMページングを復元する必要はありません。プログラムがpage-0を変更する場合は、もちろん割り込みとスロットのエントリポイントに対して通常の予防措置を講じなければならず、page-3を変更してはいけません(これを行うことはできません)。

関数呼び出しを行うとき、ページ0、1、および2には任意のスロットを含めることができ、保持されます。環境文字列とディスク転送領域がマッパーのRAMスロット内になければならないことを除いて、選択されているスロットから任意のパラメータを渡すことができます。

MSX-DOS関数呼び出しまたはMSX-DOS BIOS関数呼び出しが行われたときに、0、1、および2ページで任意のRAMセグメントを選択でき、スタックも任意のページに配置できます。現在のページング状態は、エラー状態でもすべての関数呼び出しによって保持されます。元のTPAセグメントではなくても、関数呼び出しが行われたときにページインされているRAMセグメントには、すべてのディスク転送が行われます。

一時プログラムがTPAよりも多くのRAMを使用したい場合は、マッパーサポートルーチン(セクション5で説明)を使用してより多くのRAMを取得できます。 4つのTPAセグメント以外のRAMを使用する前に、プログラムはマッパールーチンに新しいセグメントの割り当てを依頼する必要があります。これにより、(RAMディスクなどによって)すでに使用されているセグメントを使用しようとしているプログラムとの競合がなくなります。これらのセグメントは、プログラムが終了すると自動的に解放されるため、通常は「ユーザーセグメント」として割り当てられます。 「システムセグメント」は、一時プログラムが終了した後でも使用され続ける必要がある場合にのみ割り当てる必要があります。

追加のセグメントを割り振った後、プログラムはそれらをページインし、マッパーサポートルーチンのいずれかを使用してアクセスすることができます。通常、一時プログラムはTPAセグメントのセグメント番号を覚えておく必要があります。これは、必要になったときにそれらをページインするためです。セグメント番号は通常0、1、2、3ですが、これは一時的プログラムでは想定されていません。それらは他のものをページングする前にセグメント番号を見つけるために "GET_Pn"マッパールーチンを使用しなければなりません。