NEXTOR DDG 04 06 02

From Z80 Machines Wiki
Jump to: navigation, search

4.6.2.DEV_INFO(4163h)

デバイスに関する情報を返します。

入力:A =デバイスインデックス、1〜7
        B =返される情報:
            0:基本情報
            1:製造元名の文字列
            2:デバイス名文字列
            3:シリアル番号文字列
        HL =非ページ1 RAMのバッファへのポインタ
出力:A =エラーコード:
            0:わかりました
            1:デバイスが利用不可、情報が利用不可、
               または無効な情報インデックス

このルーチンは、ストレージデバイスの可用性をチェックし、それらに関する一般的な情報を取得するためにカーネルコードによって使用されます。 「基本情報」ブロックは必須であり(デバイス自体が利用できない場合にのみ利用できないようにしなければならない)、他のすべての情報ブロックはオプションであり、利用できない場合はエラーを返さなければなりません。

HLで渡されたアドレスが1ページになることはありません。そのため、ドライバはページングについて心配する必要はなく、指定されたアドレスに直接データを生成できます。

基本情報が要求されると、HLで提供されるバッファーは以下の情報で埋められなければなりません。

+0(1):論理ユニット数。1〜8です。 装置に論理ユニットがない場合は1 (機能的には1つだけの場合と同等です)。
+1(1):デバイス機能フラグ。現在のバージョンではこれはゼロでなければなりません。 

他のすべての情報ブロックはテキスト文字列の形式を取ります。これらは表示可能なASCII文字列(ASCIIコード32から126のみを含む)で、左寄せされ、スペースが埋め込まれている必要があります。

文字列がデバイスによってバイナリ形式で提供されている場合、ドライバは先頭に "0x"を付けた16進の大文字の文字列として返します。 文字列の最大長は64文字です。文字列が実際に長い場合は、左端の64文字を入力する必要があります。

シリアル番号文字列の場合は、右寄せで入力する必要があり、長すぎる場合は、左端ではなく右端の文字を入力する必要がある点を除いて、文字列に対する同じ共通規則が適用されます。

ドライバは、2つの異なるデバイスに対して製造元名、デバイス名、およびシリアル番号の同じ組み合わせを提供してはいけません。ハードコードされたシリアル番号は決して返されるべきではありません。ドライバがデバイス自体からシリアル番号を取得できない場合は、シリアル番号をまったく返さないはずです。