MSX-DOS2 FCS 03 55

From Z80 Machines Wiki
Jump to: navigation, search

3.55デバイスの入出力制御(4BH)

パラメータ:C = 4BH(_IOCTL)

B =ファイルハンドル

A =サブファンクションコード

00H =>ファイルハンドルの状態を取得する

01H => ASCII /バイナリモードに設定

02H =>テスト入力準備完了

03H =>テスト出力準備完了

04H =>画面サイズを探す

DE =その他のパラメータ

結果:A =エラー

DE =その他の結果


この機能により、ファイルハンドルのさまざまな側面を調べたり変更したりできます。特に、ファイルハンドルがディスクファイルを参照しているのか、デバイスを参照しているのかを判断するために使用できます。これは、ディスクファイルとデバイスI / Oで異なる動作をしたいプログラムに役立ちます。

この機能には、レジスターBのファイル・ハンドルと、さまざまな異なる操作の1つを指定するレジスターAのサブ機能コードが渡されます。特定のサブ機能に必要なその他のパラメーターはすべてレジスターDEに渡され、結果はレジスターDEに戻されます。サブファンクションコードが無効な場合、 "。ISBFN"エラーが返されます。

A = 0の場合、操作は「ファイルハンドル状況の取得」です。これはファイルハンドルに関する様々な情報を与えるフラグの単語を返します。この単語のフォーマットはデバイスファイルハンドルとディスクファイルハンドルで異なり、ビット7はそれがどれであるかを指定します。単語の形式は次のとおりです。


装置の場合:DE - b0 set =>コンソール入力装置

b1 set =>コンソール出力装置

b2..b4予約済み

b5 set => ASCIIモード

クリア=>バイナリモード

b6 set =>ファイルの終わり

b7は常に設定されています(=>デバイス)

b8..b15予約済み ディスクファイルの場合:DE - b0..b5ドライブ番号(0 = A:etc)

b6 set =>ファイルの終わり

b7常にクリア(=>ディスクファイル)

b8..b15予約済み

ファイルの終わりフラグは、ディスクファイルの場合と同じです。デバイスの場合、前回のデバイスからの読み込み試行で ".EOF"エラーが発生した場合に設定され、次回の読み込みでクリアされます。ディスクファイルの場合は、ファイルポインタとファイルサイズを比較することによって解決されます。

A = 1の場合、操作は「ASCII /バイナリモードの設定」です。この操作は、デバイスファイルハンドルに対してのみ許可されています。 ASCII /バイナリフラグは、レジスタEのビット5( "get file handle status"によって返される場所)に渡す必要があります。これはASCIIモードに設定され、バイナリモードにはクリアされます。レジスタDEの他のすべてのビットは無視されます。

A = 2または3の場合、動作はそれぞれ「テスト入力準備完了」または「テスト出力準備完了」である。どちらの場合も、レジスタEにフラグが返されます。これは、ファイルハンドルで文字の準備ができている場合はFFh、準備ができている場合は00hです。 「文字の準備」の正確な意味はデバイスによって異なります。ディスクファイルハンドルは常に出力の準備ができており、ファイルポインタがファイルの末尾にない限り、常に入力の準備ができています。 「CON」装置はキーボードの状態をチェックしてそれが入力の準備ができているかどうかを決定する。

A = 4の場合、操作は「画面サイズの取得」です。これにより、ファイルハンドルの論理画面サイズが、レジスターDの行数とレジスターEの列数とともに返されます。画面サイズのない装置(ディスク・ファイルなど)の場合、DとEの両方はゼロになります。したがって、どちらの結果もゼロは「無制限」と解釈されるべきです。例えば、この機能は、1行に印刷するファイル数を決定するために "DIR / W"コマンドによって使用され、レジスターEのゼロの値はデフォルトで80になります。