MSX-DOS2PIS 02 03

From Z80 Machines Wiki
Jump to: navigation, search

2.3.ページゼロ使用法

エントリ時に、さまざまなパラメータ領域がRAMの最初の256バイトに一時プログラム用に設定されます。この領域のレイアウトは以下の通りで、MSX-DOS1と互換性があり、MSXスロット切り替え呼び出しに使用される領域は別としてCP/Mと互換性があります。

+------+------+------+------+------+------+------+
 0008h |  RST 08h not used  |  RDSLT routine entry point       |
       +------+------+------+------+------+------+------+------+
 0010h |  RST 10h not used  |  WRSLT routine entry point       |
       +------+------+------+------+------+------+------+------+
 0018h |  RST 18h not used  |  CALSLT routine entry point      |
       +------+------+------+------+------+------+------+------+
 0020h |  RST 20h not use   |  ENASLT routine entry point      |
       +------+------+------+------+------+------+------+------+
 0028h |  RST 28h not used  |             not used             |
       +------+------+------+------+------+------+------+------+
 0030h | CALLF routine entry point |      not used             |
       +------+------+------+------+------+------+------+------+
 0038h |  Interrupt vector  |                                  |
       +------+------+------+                                  +
 0040h |                                                       |
       +                                                       +
 0048h |        Used by secondary slot switching code          |
       +                                                       +
 0050h |                                                       |
       +                           +------+------+------+------+
 0058h |                           |                           |
       +------+------+------+------+                           +
 0060h |        Unopened CP/M FCB for first parameter          |
       +                           +------+------+------+------+
 0068h |                           |                           |
       +------+------+------+------+                           +
 0070h |        Unopened CP/M FCB for second parameter         |
       +                           +------+------+------+------+
 0078h |                           |   Space for end of FCB    |
       +------+------+------+------+------+------+------+------+
 0080h |                                                       |
   .   .                                                       .
   .   .      Default Disk transfer address.  Initialized to   .
   .   .      original command line parameters.                .
   .   .                                                       .
 00F8h |                                                       |
       +------+------+------+------+------+------+------+------+

0000h番地には、一時プログラムを終了させるために使用できるジャンプ命令があります。このジャンプ先は、BIOSのジャンプベクタを探すためにも使用できます(セクション2.4を参照)。このジャンプアドレスの下位バイトは、CP/M互換性のために常に03hです。

アドレス0003hと0004hの2つの予約バイトは、CP/MのIOBYTEと現在のドライブ/ユーザーです。 MSX-DOSはCP/M互換性のために現在のドライブバイトを最新の状態に保ちますが、新しいプログラムはこれを使用するのではなく「Get current drive」MSX-DOS関数呼び出しを使用することを推奨します。ユーザー番号とIOBYTEは、入出力リダイレクトがCP/Mと同じ方法では行われず、ユーザー番号の概念もないため、サポートされていません。 0005h番地には、MSX-DOSの呼び出しに使用されるMSX-DOSの常駐部の先頭へのジャンプ命令があります。さらにこのジャンプのアドレスは、プログラムが使用できるTPAの先頭を定義します。 TPAのサイズは、MSXマシンで使用されているカートリッジとその数によって異なりますが、通常は53Kです。このジャンプ先の下位バイトは、CP/Mとの互換性のために常に06hになり、その直前の6バイトにはCP/Mのバージョン番号とシリアル番号が含まれます。

各Z80再起動位置(0008h〜0028h)で4バイトがユーザー用に予約されています。これはジャンプには十分です。ただし、再起動位置間のバイトは、さまざまなMSXスロットスイッチングルーチンへのエントリポイントに使用されます。

0038hから005Bhまでの全領域は、MSX割り込みと2次スロット切り替えコードに使用され、変更してはいけません。ほとんどのCP/Mデバッガ(ZSIDやDDTなど)はブレークポイントエントリとしてアドレス38hを使用します。これらのプログラムは異なる再起動を使用するように変更する必要があります。 RST 28hをお勧めします。

アドレス005Chと006Chに設定された2つのFCBは、ファイル名として解釈される最初の2つのコマンドラインパラメータを含む未開封の有効なFCBです。両方のファイル名を使用する場合は、最初のファイルを開くと上書きされるため、2番目のファイルをメモリ内の別の場所にある別のFCBにコピーする必要があります。 FCBのフォーマットについてはセクション3.6を参照してください。

最初のコマンドが削除された状態で、コマンド行全体がアドレス0080hのデフォルトのディスク転送領域に格納されます。先頭に長さバイト、末尾にNULLが入ります(長さにはNULLも長さバイトも含まれません)。この文字列は大文字になり(環境文字列UPPERがONの場合)、CP/M互換性を確保するために入力された先行スペースがすべて含まれます。

MSX-DOS用の新しいプログラムはCP/M FCBを使うべきではありません。一般的に使いやすく、プログラムがディレクトリにアクセスしたりパス名を扱えるようにする他のMSX-DOS呼び出しが利用できるからです。

コマンドラインにアクセスするための改善された方法もあります。大文字ではないコマンドラインを含む "PARAMETERS"と呼ばれる環境文字列が設定されます。 "PROGRAM"と呼ばれるもう一つの環境文字列は、プログラムがそれらがロードされたドライブ、ディレクトリとファイル名を見つけることを可能にします。これらの環境文字列と環境文字列一般の詳細については3.5節を参照してください。