NEXTOR DDG 02 03
From Z80 Machines Wiki
2.3. Nextorカーネル
Nextorカーネルは、MSX-DOS 2カーネルの1つに基づいたアーキテクチャを持っていますが、重要な変更をもたらします。
- バンクの数が増えました。現在のバージョンでは、パーティション管理コード用に1つの追加バンクがあり、組み込みパーティション化ツール用に2つの追加バンクがあります。
- ディスクドライバ(Nextorの用語では「デバイスドライバ」)のコードは、カーネルバンク0と3の最後には埋め込まれていません。代わりに、ドライバの最後のバンクの直後に配置されています。カーネル共通コード必要に応じて、ドライバーは複数のバンクにまたがって出現することができます。
- デバイスドライバの構造はまったく新しいものです。それはもちろん記憶装置にアクセスするためのルーチンを含むが、それはまたBASIC拡張コマンド(「CALL」コマンド)、拡張BIOSコマンド、およびタイマー割り込みサービスルーチンを追加することが容易であるように拡張ポイントも含む。
- ページ0のコードは、追加のユーティリティルーチンを含むように変更されています。これらのルーチンはドライバコードで使用できます。
- すべてのバンクのアドレス4FFEhに新しい情報バイトが追加されます。これには、16Kバンクのカーネル共通コードのサイズが含まれています(または、この値はドライバのバンク番号と見なすこともできます)。
- バンク3のMSX-DOS 1カーネルは、特にページ0コードとバンクIDを追加することによって変更されているため、デバイスドライバへの呼び出しを実行できます。
- バンク0と3に1Kの未使用スペースがあります(アドレス7BD0h〜7FCFhで表示)。このスペースはカーネルコードを一切含んでおらず、ドライバーがここにいるために必要なコードやデータを置くために使用することができます。 詳細については"4.7.1.カーネルメインバンクの空き容量"を参照してください。
- ドライババンク内の別の5つのエントリポイントにリダイレクトされるカーネルバンク0および3(アドレス7850hから始まる)に5つのエントリポイントがあります。このようにして、ドライバはカーネルスロットへの直接のスロット間呼び出しを介してアクセス可能なコードを提供することができます。 詳細については、"4.4.7. DRV_DIRECT0 / 1/2/3/4(4142h、4145h、4148h、414Bh、413Eh)"を参照してください。
図3はNextorカーネルの構造を示しています
Banks 0-(K-1) Bank K Banks (K+1)-... (optional) 4000h +---------------------+---------------------+---------------------+ | Page 0 code | Page 0 code | Page 0 code | +---------------------+---------------------+---------------------+ 40FEh | K | K | K | +---------------------+---------------------+---------------------+ 40FFh | Bank ID | K (bank ID) | Bank ID | 4100h +---------------------+---------------------+---------------------+ | | | | | Bank | | Additional | | kernel code | Driver code | driver code | | | | | | | | | | | | | 7BD0h +---------------------+ | | | Available 1K space | | | | (on banks 0 and 3) | | | 7FD0h +---------------------+---------------------+---------------------+ | Bank switching code | Bank switching code | Bank switching code | 7FFFh +---------------------+---------------------+--
図3 - Nextorのカーネル構造( "K"はカーネル共通コードバンク数)
Nextorは、MSX-DOS 2の同じルールを適用して、複数のカーネルが見つかった場合にどのカーネルがマスターになるかを決定します(最も大きいバージョン番号のカーネルが勝つ)。しかし、これは他のNextorカーネルにのみ当てはまります。 Nextorは、バージョン番号に関係なく、システムに存在する他のMSX-DOS 1または2カーネルを常に上書きします。