NEXTOR DDG 04 06 03

From Z80 Machines Wiki
Jump to: navigation, search

4.6.3. DEV_STATUS(4166h)

デバイスまたは論理ユニットの可用性を取得し、状況を変更します。

入力:A =デバイスインデックス、1〜7
        B =論理ユニット番号、1から7
            デバイス自体のステータスを返すには0
出力:A =指定された論理ユニットの状況
            0が指定された場合は、デバイス全体に対して
            0:デバイスまたは論理ユニットが使用不可、またはデバイス
               または指定された論理ユニット番号が無効です。
            1:最後のステータス要求以降、デバイスまたは論理ユニットは使用可能で変更されていません
            2:最後のステータス要求以降、デバイスまたは論理ユニットは使用可能で変更されました
               (デバイスの場合は、デバイスのプラグが抜かれ
                同じデバイスインデックスが割り当てられているデバイスが接続されています。
                論理ユニットの場合は、メディアが変更されています。
            3:最後のステータス要求以降、デバイスまたは論理ユニットは使用可能ですが、
               変更されたかどうかを判断することは不可能です。

このルーチンはデバイスのメディア変更ステータスを知らせます。 Nextorは通常、LUN_INFOによって返された情報ブロックに「取り外し可能」フラグが設定されている論理ユニットに対してのみこのルーチンを呼び出します。ただし、MSX-DOS 1モードで実行している場合は、ルーチンは固定論理ユニットに対しても呼び出されます(固定論理ユニットの場合、このルーチンは常にAに0または1を戻す必要があります)。

Nextorの現在のバージョンでは、このルーチンはB = 0で呼び出されることは決してありません(デバイス自体の状況を確認してください)。 USBバスなどのホットプラグ対応デバイスシステムのサポートは、将来のバージョンで予定されています。

Nextorは、ブートセクタチェックサムメカニズムを使用して、DEV_STATUSの呼び出しに応答してドライバがA = 3を返したときのデバイスの変更を管理します(詳細については、Nextor 2.0ユーザマニュアルの「メディア変更の管理」を参照)。ブートセクタの読み取りとチェックサムの計算を避けるために、ドライバは可能な限り適切なデバイス変更情報を返すべきです(つまり、DEV_STATUSは3ではなくA = 1または2を返すべきです)。

重要な注意:このルーチンによって戻される状況は、常に同じルーチンの直前の呼び出しに対するものです。デバイスが変更されている場合、DEV_RWへの呼び出しによってDEV_STATUSへの次の呼び出しがA = 1を返さないようにする必要があります。つまり、メディアの変更 - DEV_RWへの呼び出し - DEV_STATUSへの呼び出しの順序で、最後の呼び出しはA = 2を返さなければなりません。この動作は、Nextorドライブマッピングエンジンが正しく動作するために必要です。

システム起動時の最初の呼び出し時(DRV_INITが呼び出された後)にこのルーチンによって戻される値は無関係です。つまり、デバイスが使用可能であれば、A = 1またはA = 2が戻される可能性があります。