NEXTOR DDG 03 01

From Z80 Machines Wiki
Jump to: navigation, search

3.1.手動作成

完全なNextor ROMファイルを手動で作成するには、以下のレシピに従う必要があります。記載されているファイル位置はゼロベースです。

  1. カーネルベースファイル(NEXTOR.BASE.DAT)のコピーを作成します。
  2. ファイルの末尾にページ0コードを追加します。このコードは、カーネルベースファイルの最初の255バイトから単純にコピーすることができます。
  3. 結果のファイルの末尾に、値K(カーネルベースファイルのバンク数)を1バイト追加します(これがドライババンクのバンクIDになります)。 Kの値は、カーネルベースファイル自体の254の位置から読み取ることができます。
  4. 手順3で取得したファイルの末尾にドライバファイル(正確には16080バイトの長さでなければなりません。それ以外の場合はパディングが必要です)を追加します。
  5. 結果のファイルの末尾にバンクコードを追加します。 ASCII16マッパーをサポートするハードウェアに適したファイルが必要な場合は、このコードをカーネルベースファイルの最後の48バイト自体から単純にコピーすることができます。それ以外の場合は、カスタムマッピングコードを指定する必要があります。
  6. ドライバコードが1つのバンクに収まらない場合は、手順2〜5を繰り返して追加のバンクを追加し、必要に応じて各バンクのバンクIDを増やします。
  7. 必要に応じて、バンク0とバンク3の1Kの空き領域にカスタムコードまたはデータを追加するように、結果のファイルにパッチを適用します。ファイルの内容をファイルの位置3BD0hとFBD0hに2回(最大1K)まで入れます。
  8. ターゲットハードウェアのマッパータイプがASCII16でない場合は、カーネル共通コードバンクのバンク切り替えコード(結果ファイルの最初の "K" 16Kブロックの最後の48バイト)にパッチを適用します。カスタムバンク切換コードを使用してステップ3)。
  9. ターゲットハードウェアのマッパータイプがASCII16でない場合は、手順5と8で使用したのと同じカスタムバンク切り替えコードをファイル位置2012に配置します。
  10. ROMマッパーが8Kバンクを使用している場合のみ:
a.生成されたファイルの位置F7hに、LD(xxxxh)という命令を書き込みます。ここで、xxxxは、ページ1の前半に表示される8Kバンクを選択するメモリマップポートです(4000h〜5FFFh)。これは32hバイトで、その後にxxxxh自体がリトルエンディアン形式で続きます。
b.ファイルの16K部分すべてに対して前の手順を繰り返します。つまり、LD(xxxxh)、A命令をファイル位置(4000h * n)+ F7hに書き込む必要があります。ここで、nは、0からファイル内の16Kバンクの数から1を引いた数です。

この手順の結果、デバイスドライバが正しく埋め込まれた完全なNextor ROMファイルを使用する準備が整いました。生成されたROMファイルにさらにパッチを当てたり、修正したりする必要はありません。