NEXTOR DDG 03 02

From Z80 Machines Wiki
Jump to: navigation, search

3.2. MKNEXROMユーティリティの使用

完全なNextorカーネルROMを構築するのに必要なすべてのステップを手動で実行する代わりに、提供されたMKNEXROMユーティリティを使用することは通常より便利です。このツールを使用して新しいNextorカーネルROMファイルを作成できますが、マッパーコードを変更したり既存のファイルを変更したり、バンク0と3にある1Kの空き領域にコンテンツを追加したりすることもできます。

MKNEXROMはWindows専用のコマンドライン実行ファイルとして提供されていますが、標準Cのソースコードも提供されているので、他のプラットフォームに移植するのは簡単なはずです。 MKNEXROMツールの使用法は次のとおりです。

MKNEXROM <basefile> <newfile> [/ d:<ドライバファイル>] [/ m:<マッパーファイル>]
         [/ e:<extrafile>] [/ 8:<8Kバンク選択ポートアドレス>] 

<basefile>は次のいずれかになります。

  • Nextorカーネルベースファイル、つまりカーネル共通コードのみを含むファイル。
  • ドライババンクがすでに追加された完全なNextorカーネルROMファイル。

ドライバコードを含むファイルです。セクション4で説明されている規則と構造に従って、それは有効なドライバーでなければなりません。このファイルの内容は次のようになると予想されます。

1.256ダミーバイト

2.ドライバーのシグネチャ

3.ドライバージャンプテーブル

4.ドライバコード自体

さらにオプションとして、ドライバーが16Kブロックを超えて複数の16Kバンクにまたがって出現した場合

5. 256ダミーバイト

6. 追加のドライバーコードまたはデータ。

7.最大16Kのダミースペース(最後のバンクには不要)

ドライバなしのカーネルベースファイルが<basefile>に指定されている場合はドライバファイルの指定は必須であり、完全なカーネルROMファイルが指定されている場合は禁止されています。

<mapperfile>はバンクコードを含むファイルです。マッパーファイルが指定されていない場合は、ベースファイル自体のマッパーコードがドライバコードに追加されます。

<extrafile>は、結果のROMファイルの追加コードまたはデータを含むファイルです。この追加データは最大1Kの長さで、バンク0とバンク3のアドレス0x3BD0の位置0x3BD0に配置されます。つまり、このコードまたはデータは、アドレス0x7BD0でカーネルスロットへ標準のスロット間呼び出し(RDSLTやCALSLTなど)を介してアプリケーションから見えます。詳細については"4.7.1.カーネルメインバンクの空き容量"を参照してください。

/ 8は、ROMマッパーが8Kバンクを使用している場合にのみ使用する必要があります。 _ <8Kバンク選択ポートアドレス>は、ページ1の前半に表示される8Kバンクを選択するメモリマップドポートアドレス(4000h〜5FFFh)です。たとえば、ASCII 8マッパーの場合は6000hです。これは生成されたROMブートコードに適切にパッチを当ててこの種のマッパーをサポートします。

8KバンクでROMマッパーを使用するときに/ 8パラメーターを使用する代わりに、マッパーファイル自体にヘッダーを追加することによって、生成されたROMに適切にパッチを適用するようにMKNEXROMに指示することができます。このヘッダは、FFhバイトとそれに続くリトルエンディアン形式のバンク選択ポートアドレスで構成されています。例については以下を参照してください。