MSX-DOS2PIS 05 06

From Z80 Machines Wiki
Jump to: navigation, search

5.6.セグメント間の呼び出し

セグメント間呼び出しを行うための2つのルーチンが提供されています。これらはMSXシステムROMによって提供される2つのスロット間呼び出しルーチンに非常に厳密にモデル化されており、それらの使用法の仕様は非常に似ています。 呼び出されたセグメントが実際に存在することの確認は行われないので、これを確実にするのはユーザーの責任です。呼び出されたセグメントは指定されたアドレスページにページインされますが、このページでマッパースロットが有効になっていることを確認するのはユーザーの責任です。これは確実に速くできるようにするためです。 このルーチンは、ページ3へのセグメント間呼び出しを行うためには使用できません。これが試みられると、ページ3は決して変更されてはならないので、ページ3の指定されたアドレスはページングなしで単純に呼び出されます。ページ0への呼び出しは、割り込みや他のエントリポイントのために、注意して行わなければなりません。また、スタックがこれらの呼び出しによってページアウトされないように注意する必要があります。

これらのルーチンは、スロット間呼び出しとは異なり、呼び出されたルーチンに制御を渡す前に割り込みを無効にしません。そのため、割り込みフラグが呼び出されたルーチンによって変更されない限り、それらは以前と同じ状態で呼び出し元に戻ります。 パラメーターは、IX、IY、AF '、BC'、DE '、またはHL'レジスターで渡すことはできません。これらはルーチンの内部で使用されるためです。これらのレジスタはセグメント間呼び出しによって破損し、また呼び出されたルーチンによっても破損する可能性があります。他のすべてのレジスタ(AF、BC、DE、およびHL)は、呼び出されたルーチンにそのまま渡され、そこから呼び出し元に返されます。

CAL_SEG - パラメータ:IY =呼び出されるセグメント番号 IX =電話番号 AF、BC、DE、HLが呼び出されたルーチンに渡された 他のレジスタが破損している 結果:AF、BC、DE、HL、IX、およびIYが呼び出されたルーチンから戻りました。他のすべてが破損しています。 CALLS - パラメーター:AF、BC、DE、呼び出し先ルーチンに渡されたHL 他のレジスタが破損している 呼び出し順序:CALL CALLS DBセグメント DWアドレス 結果:AF、BC、DE、HL、IX、およびIYが呼び出されたルーチンから戻りました。他のすべてが破損しています。