DOS環境目次

1. DOSの予備知識
 1.1 ﾌﾟﾛｸﾞﾗﾑ
 1.2 ﾌﾟﾛｾｽとﾏﾙﾁﾀｽｸ

2. ﾕｰｻﾞｰ･ﾌﾟﾛｸﾞﾗﾑ･ｲﾝﾀｰﾌｪｰｽ
 2.1 ﾒﾓﾘ管理ﾎﾟｲﾝﾀ、ﾌﾟﾛｾｽ管理ﾎﾟｲﾝﾀ
 2.2 ﾌﾟﾛｸﾞﾗﾑ最終ｱﾄﾞﾚｽ、割当ﾒﾓﾘ最終ｱﾄﾞﾚｽ
 2.3 起動行ﾎﾟｲﾝﾀ
 2.4 環境ﾎﾟｲﾝﾀ
 2.5 実行ｱﾄﾞﾚｽ
 2.6 ﾒﾓﾘ管理領域(MCB)一覧
 2.7 ﾌﾟﾛｾｽ管理領域(PSP)一覧

3. DOSｺｰﾙ機能
 3.1 DOSｺｰﾙの一般的な呼び出し方法
 3.2 DOSｺｰﾙ分類
  3.2.1 ｺﾝｿｰﾙ、ﾌﾟﾘﾝﾀ、RS-232C関係
  3.2.2 ﾒﾓﾘ管理関係
  3.2.3 ﾌﾟﾛｾｽ管理関係
  3.2.4 ﾌｧｲﾙ管理関係
  3.2.5 ﾃﾞｨﾚｸﾄﾘ管理関係
  3.2.6 ﾃﾞｨｽｸ関係
  3.2.7 日付時刻関係
  3.2.8 ｼｽﾃﾑ関係
 3.3 DOSｺｰﾙｴﾗｰ情報
 3.4 DOSｺｰﾙ一覧

4. ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞ
 4.1 ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞの基本構造
 4.2 ﾃﾞﾊﾞｲｽ･ﾍｯﾀﾞ
 4.3 ﾘｸｴｽﾄ･ﾍｯﾀﾞ、ﾃﾞｰﾀ
 4.4 ｽﾄﾗﾃｼﾞ･ﾙｰﾁﾝ
 4.5 割り込み処理ﾙｰﾁﾝ
 4.6 BPB、DPBの構造


DOSの予備知識

1. DOSの予備知識

1.1 ﾌﾟﾛｸﾞﾗﾑ
1.2 ﾌﾟﾛｾｽとﾏﾙﾁﾀｽｸ


ﾌﾟﾛｸﾞﾗﾑ

1.1 ﾌﾟﾛｸﾞﾗﾑ

ﾌﾟﾛｸﾞﾗﾑとは総体的な名称で、大別すると以下のように考えられます。
1.1.1 ｿｰｽﾌﾟﾛｸﾞﾗﾑ
これは通常、ｴﾃﾞｨﾀ等のﾌﾟﾛｸﾞﾗﾑを使用して作成されたC、ｱｾﾝﾌﾞﾘ言語等で記述されたASCII(厳密には文字ｺｰﾄﾞ)形式のﾌﾟﾛｸﾞﾗﾑです。ｴﾃﾞｨﾀとは、ｷｰﾎﾞｰﾄﾞから文字を入力し、ﾌｧｲﾙという形式で保存するﾌﾟﾛｸﾞﾗﾑです。ASCII形式とは、文字(CRT画面にそのまま表示した時に、意味のある文字となる)形式を意味し、各言語のｿｰｽ･ﾌｧｲﾙ、ﾃｷｽﾄ･ﾌｧｲﾙ、ﾄﾞｷｭﾒﾝﾄ･ﾌｧｲﾙ等がこれに該当します。

 ASCIIとは米国の7ﾋﾞｯﾄ系情報単位符号(つまり、文字ｺｰﾄﾞ)のことで、一般にいわれるASCCII形式が8単位系JIS符号やｼﾌﾄJISｺｰﾄﾞで作成されていますので、厳密には異なったものを指しています。しかし、これらのｺｰﾄﾞ体系で、ｱﾙﾌｧﾍﾞｯﾄと英記号の部分は共通となっています。通常、ﾌﾟﾛｸﾞﾗﾑの命令部分などの基本部分はｱﾙﾌｧﾍﾞｯﾄと英記号で構成され、また昔からの慣例ということで、ASCII形式という呼ばれ方をしています。
1.1.2 実行ﾌﾟﾛｸﾞﾗﾑ
これは、前記のｿｰｽ･ﾌﾟﾛｸﾞﾗﾑをｺﾝﾊﾟｲﾙ、ｱｾﾝﾌﾞﾙした結果、直接実行可能になったﾌﾟﾛｸﾞﾗﾑを指します。元のｿｰｽ･ﾌﾟﾛｸﾞﾗﾑから変換される実行ﾌﾟﾛｸﾞﾗﾑの形式は、1つとは限りません。通常ROMに書き込んで実行させる組み込み用ﾏｲｸﾛ･ｺﾝﾋﾟｭｰﾀの実行ﾌﾟﾛｸﾞﾗﾑは、機械語そのものですから、元のｿｰｽ･ﾌﾟﾛｸﾞﾗﾑに対して、唯一の実行ﾌﾟﾛｸﾞﾗﾑが作成されます。しかし、通常のOS環境下のﾌﾟﾛｸﾞﾗﾑ実行時は、OS内のﾌﾟﾛｸﾞﾗﾑ･ﾛｰﾀﾞｰがﾌｧｲﾙとなっている実行ﾌﾟﾛｸﾞﾗﾑ(実行ﾌｧｲﾙ)をﾒﾓﾘに展開し、実行されます。この時のﾒﾓﾘに展開された状態が、機械語そのものとなります。

 ﾌﾟﾛｸﾞﾗﾑ･ﾛｰﾀﾞｰは、複数の実行ﾌｧｲﾙ形式に対応しています。MS-DOSでは、.COM、.EXEで示される2つの実行形式ﾌｧｲﾙがあります。この形式の違いは、基本的にｱﾌﾞｿﾘｭｰﾄ形式とﾘﾛｹｰﾀﾌﾞﾙ形式の違いということになります。
1.1.2.1 ｱﾌﾞｿﾘｭｰﾄ(絶対)形式
対象ﾌﾟﾛｸﾞﾗﾑが実行するｱﾄﾞﾚｽ(絶対ｱﾄﾞﾚｽ)が決まっている形式です。通常、この形式の実行ﾌｧｲﾙは、機械語そのままがﾌｧｲﾙとなっており、ﾌﾟﾛｸﾞﾗﾑ･ﾛｰﾀﾞｰは、実行ﾌｧｲﾙの内容を特定のﾒﾓﾘへｺﾋﾟｰし、実行させます。この形式のﾌﾟﾛｸﾞﾗﾑ(ﾌｧｲﾙ)は、実行ｱﾄﾞﾚｽからのﾒﾓﾘ領域が空いている場合のみ実行が可能です。このため、ﾒﾓﾘの有効利用ができません。初期のﾊﾟｿｺﾝはｼﾝｸﾞﾙﾕｰｻﾞ、ｼﾝｸﾞﾙﾀｽｸ(ﾌﾟﾛｸﾞﾗﾑ)で使用されていたので、この形式でも問題がありませんでした。しかし、近年ﾏﾙﾁﾕｰｻﾞ、ﾏﾙﾁﾀｽｸ環境下では問題となり、この形式は通常使用されていません。MS-DOSでは、.COMがこの形式になります。

 x86系のCPUは、ｱﾄﾞﾚｽをｾﾚｸﾀ(ｾｸﾞﾒﾝﾄ)とｵﾌｾｯﾄで指定します。COM形式のﾌﾟﾛｸﾞﾗﾑは64Kﾊﾞｲﾄ(1ｾｸﾞﾒﾝﾄ)以内という制限があります。この制限は次の理由によります。1ｾｸﾞﾒﾝﾄ以内ということは、ｵﾌｾｯﾄがすべて唯一のｾｸﾞﾒﾝﾄ相対となります。即ち、ﾌﾟﾛｸﾞﾗﾑ･ﾛｰﾀﾞｰがCOM形式の実行ﾌｧｲﾙを任意のｱﾄﾞﾚｽにｺﾋﾟｰして、そのｱﾄﾞﾚｽのｾｸﾞﾒﾝﾄを指定して実行させるという方法でﾘﾛｹｰﾀﾌﾞﾙ化しています。ｾｸﾞﾒﾝﾄはｱﾄﾞﾚｽの下位4ﾋﾞｯﾄがないものですから、16ﾊﾞｲﾄ単位でしかｱﾄﾞﾚｽを指定できませんので、COM形式は16ﾊﾞｲﾄ境界の任意のｱﾄﾞﾚｽという制限が付きます。
1.1.2.2 ﾘﾛｹｰﾀﾌﾞﾙ(再配置可能)形式
対象ﾌﾟﾛｸﾞﾗﾑの実行ｱﾄﾞﾚｽがﾒﾓﾘ展開時に決まる形式です。通常、この形式の実行ﾌｧｲﾙは、仮のｱﾄﾞﾚｽで作成された機械語と再配置情報がﾌｧｲﾙとなっており、ﾌﾟﾛｸﾞﾗﾑ･ﾛｰﾀﾞｰは、実行ﾌｧｲﾙの機械語部をﾒﾓﾘにｺﾋﾟｰし、続く再配置情報を参照して、ﾒﾓﾘ上の機械語のｱﾄﾞﾚｽにより影響を受ける部分を実際のｱﾄﾞﾚｽに対応して変更し、実行させます。

 この形式のﾌﾟﾛｸﾞﾗﾑ(ﾌｧｲﾙ)は、ﾒﾓﾘの任意のｱﾄﾞﾚｽから展開、実行できます。現在の実行ﾌﾟﾛｸﾞﾗﾑ(ﾌｧｲﾙ)の主流で、MS-DOSでは.EXEがこの形式になります。
1.1.3 その他のﾌﾟﾛｸﾞﾗﾑ
ｿｰｽ･ﾌﾟﾛｸﾞﾗﾑから実行ﾌﾟﾛｸﾞﾗﾑへ変換される過程で作成される中間状態のﾌﾟﾛｸﾞﾗﾑ(ﾌｧｲﾙ)も広義には、ﾌﾟﾛｸﾞﾗﾑといえます。これらの代表が.OBJの形式で示されるｵﾌﾞｼﾞｪｸﾄ･ﾌｧｲﾙです。通常の.OBJ形式ﾌｧｲﾙには、他の.OBJ形式ﾌｧｲﾙとのﾘﾝｸ(結合)情報などが含まれており、最終的な実行形式に必要なもの以外のものも存在します。

 このｵﾌﾞｼﾞｪｸﾄという言葉は、その環境によって種々の目的に対して使用されますので、この場合のように中間(ﾌｧｲﾙ)というような意味で考えてはいけません。このようなｵﾌﾞｼﾞｪｸﾄ･ﾌｧｲﾙも含めて、広義には、ほとんどがﾌﾟﾛｸﾞﾗﾑといえますが、ﾜｰﾌﾟﾛで作成した文章ﾌｧｲﾙ等の純然たるﾃﾞｰﾀはﾌﾟﾛｸﾞﾗﾑとはいえません。


ﾌﾟﾛｾｽとﾏﾙﾁﾀｽｸ

1.2 ﾌﾟﾛｾｽとﾏﾙﾁﾀｽｸ

MS-DOSやWindowsなどのOS管理下で実行されるﾌﾟﾛｸﾞﾗﾑをﾌﾟﾛｾｽと呼びます。実行ﾌﾟﾛｸﾞﾗﾑはﾌﾟﾛｸﾞﾗﾑ･ﾛｰﾀﾞｰでﾒﾓﾘに展開され、OSの管理下になった時点で、ﾌﾟﾛｾｽと呼称を変えます。個々のﾌﾟﾛｾｽには、対応する独立した環境(環境変数のことではない)が与えられます。ただし、DOSでは、完全な環境ではありません。

 ﾌﾟﾛｾｽは実行中に4BHのDOSｺｰﾙで他の実行ﾌﾟﾛｸﾞﾗﾑをﾛｰﾄﾞ、実行させることができます(ﾌﾟﾛｾｽの増加)。この時、4BHのDOSｺｰﾙをしたﾌﾟﾛｾｽを親ﾌﾟﾛｾｽ、この結果、実行されたﾌﾟﾛｾｽを子ﾌﾟﾛｾｽと呼びます。この子ﾌﾟﾛｾｽが更に4BHのDOSｺｰﾙで実行させたﾌﾟﾛｾｽを孫ﾌﾟﾛｾｽと呼びます。この呼び方は、基準とするﾌﾟﾛｾｽからの位置関係を表しているだけで、絶対的なものではありません。通常COMMAND.COMからﾌﾟﾛｸﾞﾗﾑを実行させますが、この場合のCOMMAND.COMが親ﾌﾟﾛｾｽ、実行させたﾌﾟﾛｸﾞﾗﾑが子ﾌﾟﾛｾｽとなります。

 このように複数のﾌﾟﾛｾｽの実行が可能ですが、同時に実行はできません。つまり、4BHのDOSｺｰﾙをした親ﾌﾟﾛｾｽは、DOSｺｰﾙの結果実行された子ﾌﾟﾛｾｽが終了するまで実行が保留されます。子ﾌﾟﾛｾｽが4CH等のDOSｺｰﾙでﾌﾟﾛｾｽ終了をすると、親ﾌﾟﾛｾｽでは4BHのDOSｺｰﾙからの復帰という状態で、親ﾌﾟﾛｾｽの実行が再開されます。この時の戻値が子ﾌﾟﾛｾｽの終了情報(ｺｰﾄﾞ)で、子ﾌﾟﾛｾｽの終了状態を知ることができますが、大量のﾃﾞｰﾀを引き渡すことはできません。このような問題点を解決するために以下の機能があります。

■ | 大量ﾃﾞｰﾀの引き渡しのために共通(COMMON)領域の利用機能
■ | 同時実行のためのｽﾚｯﾄﾞ処理機能

 MS-DOSでは非公開ですがﾊﾞｯｸ･ｸﾞﾗｳﾝﾄﾞ処理機能が存在します。これは簡単なｽﾚｯﾄﾞを構成することで実現しています。

1.2.1 ｽﾚｯﾄﾞと並列処理

ｽﾚｯﾄﾞとは1つのﾌﾟﾛｾｽを実行させる権利を持っているものと考えて下さい。本書では、ﾀｽｸと同一として記述しています。実際に実行させる権利を持っているのはCPUなのですが、1つのｽﾚｯﾄﾞはCPUからある一定時間の実行させる権利を取得したものと考えます。複数のｽﾚｯﾄﾞが時間的に重複しないようにCPUから一定時間の実行させる権利を取得したとすると、CPUの時間経過による処理状態は次のようになります。

■ 時分割処理の概念
ｽﾚｯﾄﾞ1 ○ ○ ○ ･･･
ｽﾚｯﾄﾞ2 ○ ○ ･･･
ｽﾚｯﾄﾞ3 ○ ○ ･･･
t → 1 2 3 1 2 3 1 ･･･

○が実際にCPUが動作する場所(時間)で、当然同時刻の他のｽﾚｯﾄﾞは休止となります。

 実際には、DOSがCPUからｽﾚｯﾄﾞの管理を任され、一定時間毎にｽﾚｯﾄﾞを切り換えていると考えられます。また、図ではｽﾚｯﾄﾞがCPUをすべて占有するようになっていますが、現実にはﾊｰﾄﾞｳｪｱ割り込み等が存在し、その時は割り込み処理が実行されます。このことは、ﾌﾟﾛｸﾞﾗﾑが実行速度の問題を抱える場合に重要な影響を及ぼします。

 図のように複数の処理を順番にぐるぐる回るような構造をﾗｳﾝﾄﾞﾛﾋﾞﾝと呼びます。1つのﾌﾟﾛｾｽを複数のｽﾚｯﾄﾞに分割して実行させることも可能ですが、通常は1つのｽﾚｯﾄﾞで実行させます。複数のｽﾚｯﾄﾞに分割して実行させる場合、ｽﾚｯﾄﾞ間の同期を取るだけでも複雑となりますし、1つのｽﾚｯﾄﾞが環境を変更した場合、他のｽﾚｯﾄﾞも変更されてしまうという問題もあります。ｽﾚｯﾄﾞは0F8HのDOSｺｰﾙで実行されます(ｽﾚｯﾄﾞの増加)。

1.2.2 ｽﾚｯﾄﾞの状態遷移

ｽﾚｯﾄﾞには実行状態と待ち(ｽﾘｰﾌﾟ:Sleep)状態があります。ｽﾚｯﾄﾞが作成された時点では、ｽﾘｰﾌﾟ状態です。実行状態中でかつ実際に実行中の時、実行権を持っているといいます。実行権を持っている時はCPUを独占できますが、DOSｺｰﾙ等を行わなければｽﾚｯﾄﾞが切り換わりません(実行権占有)。この問題を防ぐためにｽﾚｯﾄﾞは一定時間で0FFHのDOSｺｰﾙで実行権の放棄を行わなければなりません。

 自分の処理を終了し、他のｽﾚｯﾄﾞからのﾃﾞｰﾀ待ち等になったｽﾚｯﾄﾞは、0FCHのDOSｺｰﾙでｽﾘｰﾌﾟ状態にします。ｽﾘｰﾌﾟ状態にすることで、実行権が回ってこず、その分他のｽﾚｯﾄﾞ等の処理時間に廻され、結果的に全体の処理速度が向上します。しかしｽﾘｰﾌﾟ状態のままでは永久に実行権が廻ってきません。一定時間後に実行状態とするには、0FCHのDOSｺｰﾙ実行時に一定時間後のﾀｲﾏ値を指定します。又、他のｽﾚｯﾄﾞに実行状態にしてもらう(ｳｪｲｸｱｯﾌﾟ:Wake up)という方法もあります。この方法はｽﾚｯﾄﾞ間通信(0FDHのDOSｺｰﾙ)で行います。

1.2.3 ｽﾚｯﾄﾞの削除
必要の無くなったｽﾚｯﾄﾞは、ﾒﾓﾘの無駄となるので、速やかに削除します。また、ﾌﾟﾛｾｽ終了時には、このﾌﾟﾛｾｽが作成したすべてのｽﾚｯﾄﾞを削除しなければなりません。ｽﾚｯﾄﾞの削除は、0F9HのDOSｺｰﾙで行いますが、複数ｽﾚｯﾄﾞを使用している場合は、無秩序にｽﾚｯﾄﾞを削除すればよいという訳にはいきません。無秩序にｽﾚｯﾄﾞを削除するとｼｽﾃﾑ異常となる場合があります。

 複数のｽﾚｯﾄﾞを削除する場合は、自分以外のｽﾚｯﾄﾞから削除します。削除したいｽﾚｯﾄﾞへｽﾚｯﾄﾞ間通信を利用し、ｺﾏﾝﾄﾞ番号0F9Hのｽﾚｯﾄﾞ削除要求をし、その後速やかに実行権を放棄し、削除したいｽﾚｯﾄﾞへ実行権が廻るようにします。ｽﾚｯﾄﾞ削除要求をされたｽﾚｯﾄﾞは、実行権がきたら、ｽﾚｯﾄﾞ削除要求を受取り、削除可能ならば、0F9HのDOSｺｰﾙで自ｽﾚｯﾄﾞ(自分自身)を削除します。

 削除不可能の場合は、削除要求を出したｽﾚｯﾄﾞが削除不可能を知るために、速やかに実行権を放棄します。削除要求を出したｽﾚｯﾄﾞは、実行権がきたら、0FAHのDOSｺｰﾙ(指定ｽﾚｯﾄﾞの詳細情報取得)を行い、この結果、取得が成功すれば削除要求が無視されたことになり、取得がｴﾗｰとなれば削除されたことが判明します。このようにして自身以外がすべて削除された後に自分自身を削除して削除完了となります。

1.2.4 ｽﾚｯﾄﾞ名(ID)とｽﾚｯﾄﾞ間通信

各々のｽﾚｯﾄﾞには、固有のIDとｽﾚｯﾄﾞ名が割り当てられます。このｽﾚｯﾄﾞID、ｽﾚｯﾄﾞ名を使用してｽﾚｯﾄﾞ間通信を行います。ｽﾚｯﾄﾞID、ｽﾚｯﾄﾞ名は、0FAHのDOSｺｰﾙ(指定ｽﾚｯﾄﾞの詳細情報取得)で取得することができます。0FDHのDOSｺｰﾙは、ｽﾚｯﾄﾞ間通信を行います。また、このDOSｺｰﾙ内のｺﾏﾝﾄﾞを使用して、ｽﾚｯﾄﾞのｳｪｲｸｱｯﾌﾟ、削除要求等を行えます。このDOSｺｰﾙのﾃﾞｰﾀ領域を使用して、自由なﾃﾞｰﾀの受け渡しが可能ですが、1対1の通信のみとなります。1対nの通信には、055HのDOSｺｰﾙの共通(COMMON)領域を使用するのが便利です。

1.2.5 環境・資源・子ﾌﾟﾛｾｽ

1つのﾌﾟﾛｾｽをﾏﾙﾁｽﾚｯﾄﾞで実行している時の環境は、すべてのｽﾚｯﾄﾞで同一です。これは、ﾒﾓﾘ、DOSの各処理がすべて同じ環境であるということです。従って複数のｽﾚｯﾄﾞでﾒﾓﾘ確保をしたり、他のｽﾚｯﾄﾞを残したままで00H,4CH等のDOSｺｰﾙで終了したり、ﾌﾞﾚｰｸ(^C)、DOSのｴﾗｰでの終了等は行ってはいけません。これらの処理は自分で処理し、終了の場合は前記のｽﾚｯﾄﾞの削除を参照して下さい。

 また、ｷｰﾎﾞｰﾄﾞ、CRT、ﾌｧｲﾙ等の入出力装置に対するｽﾚｯﾄﾞ間の競合を防止しなければなりません。ﾌｧｲﾙについては、ﾌｧｲﾙｼｪｱﾘﾝｸﾞ、ﾌｧｲﾙﾛｯｸのDOSｺｰﾙが用意されていますので、これを利用します。その他の入出力装置に対する保護処置はありませんので、各々のﾌﾟﾛｾｽ(ｽﾚｯﾄﾞ)で注意する以外方法がありません。

 通常、各ｽﾚｯﾄﾞは同一のﾒﾓﾘ管理上で動作します。従って7FHのDOSｺｰﾙでｽﾚｯﾄﾞ単位のﾒﾓﾘ管理を行う場合を除いて、不用意にﾒﾓﾘの確保、解放等を行ってはいけません。ｽﾚｯﾄﾞで子ﾌﾟﾛｾｽを実行した場合、子ﾌﾟﾛｾｽから戻ってきた時点で、速やかに実行権の放棄を行い、他のｽﾚｯﾄﾞに子ﾌﾟﾛｾｽが終了したことを知らせます。

1.2.6 共通(COMMON)領域

共通領域は55HのDOSｺｰﾙを用いﾌﾟﾛｾｽ間、ｽﾚｯﾄﾞ間等でのﾃﾞｰﾀの受け渡しに使用されます。複数の共通領域を設けることも可能ですが、大きさはﾒﾓﾘ容量に依存します。共通領域には、領域を指定してﾛｯｸ設定/解除が可能ですので、排他処理が可能となっています。

1.2.7 ﾌｧｲﾙｼｪｱﾘﾝｸﾞとﾌｧｲﾙﾛｯｸ

ﾌｧｲﾙｼｪｱﾘﾝｸﾞはﾌｧｲﾙの共有化を可能にし、ﾌｧｲﾙﾛｯｸはﾌｧｲﾙの排他処理を可能にします。ﾌｧｲﾙｼｪｱﾘﾝｸﾞはﾌｧｲﾙをｵｰﾌﾟﾝする時に指定し、3DHのDOSｺｰﾙで行います。ﾌｧｲﾙのﾛｯｸは既にｵｰﾌﾟﾝされているﾌｧｲﾙに対して、5CHのDOSｺｰﾙで行います。この機能では、ﾌｧｲﾙ内の特定領域という指定ができますので、ﾌｧｲﾙの部分だけﾛｯｸすることができます。


ﾕｰｻﾞｰ･ﾌﾟﾛｸﾞﾗﾑ･ｲﾝﾀｰﾌｪｰｽ

2. ﾕｰｻﾞｰ･ﾌﾟﾛｸﾞﾗﾑ･ｲﾝﾀｰﾌｪｰｽ

通常ﾌﾟﾛｸﾞﾗﾑ実行開始時の各ﾚｼﾞｽﾀは以下を示しています。その他のﾚｼﾞｽﾀ、ﾌﾗｸﾞは不定です。
DS:00H | = | ﾌﾟﾛｾｽ管理ﾎﾟｲﾝﾀ (PSP)
DS:BX | = | 起動行ﾎﾟｲﾝﾀ
ﾌﾟﾛｸﾞﾗﾑの管理はﾌﾟﾛｾｽ管理領域(PSP)を基本に行われます。ﾒﾓﾘ管理はPSPの直前16ﾊﾞｲﾄのﾒﾓﾘ管理領域(MCB)で行い、環境はPSP内の環境変数領域のﾎﾟｲﾝﾀで示されます。ﾕｰｻﾞｰ･ﾌﾟﾛｸﾞﾗﾑは、これらの情報を元にDOSと連携して目的の処理を行います。
2.1 ﾒﾓﾘ管理ﾎﾟｲﾝﾀ、ﾌﾟﾛｾｽ管理ﾎﾟｲﾝﾀ
2.2 ﾌﾟﾛｸﾞﾗﾑ最終ｱﾄﾞﾚｽ、割当ﾒﾓﾘ最終ｱﾄﾞﾚｽ
2.3 起動行ﾎﾟｲﾝﾀ
2.4 環境ﾎﾟｲﾝﾀ
2.5 実行ｱﾄﾞﾚｽ
2.6 ﾒﾓﾘ管理領域(MCB)一覧
2.7 ﾌﾟﾛｾｽ管理領域(PSP)一覧


ﾒﾓﾘ管理ﾎﾟｲﾝﾀ･ﾌﾟﾛｾｽ管理ﾎﾟｲﾝﾀ

2.1 ﾒﾓﾘ管理ﾎﾟｲﾝﾀ･ﾌﾟﾛｾｽ管理ﾎﾟｲﾝﾀ

ﾒﾓﾘ管理領域16ﾊﾞｲﾄ、続いてﾌﾟﾛｾｽ管理領域256ﾊﾞｲﾄで、ﾌﾟﾛｾｽ管理領域はPSP(ﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｸｽ)と呼ばれ、ﾌﾟﾛｾｽはPSPで管理されます。このPSPの先頭(ﾌﾟﾛｾｽ管理ﾎﾟｲﾝﾀ)はCOM型の場合、CS, DS, ES, SSのｵﾌｾｯﾄ=0からで、EXE型の場合、DS, ESのｵﾌｾｯﾄ=0からとなります。ﾒﾓﾘ管理領域は、PSPの直前に配置されますので、ﾒﾓﾘ管理ﾎﾟｲﾝﾀ = ﾌﾟﾛｾｽ管理ﾎﾟｲﾝﾀ - 16となります。


ﾌﾟﾛｸﾞﾗﾑ最終ｱﾄﾞﾚｽ･割当ﾒﾓﾘ最終ｱﾄﾞﾚｽ

2.2 ﾌﾟﾛｸﾞﾗﾑ最終ｱﾄﾞﾚｽ･割当ﾒﾓﾘ最終ｱﾄﾞﾚｽ

ﾌﾟﾛｸﾞﾗﾑ最終ｱﾄﾞﾚｽは、ﾌﾟﾛｸﾞﾗﾑに必要なﾒﾓﾘの最後のｱﾄﾞﾚｽを意味します。EXE型の場合は割り当てﾒﾓﾘ最終ｱﾄﾞﾚｽから判定できますが、COM型の場合は自分のﾌﾟﾛｸﾞﾗﾑ内で判定しなければなりません。割り当てﾒﾓﾘ最終ｱﾄﾞﾚｽは、DOSがこのﾌﾟﾛｸﾞﾗﾑに割り当てたﾒﾓﾘの最後のｱﾄﾞﾚｽを意味し、PSPの0002Hの1ﾜｰﾄﾞにｾｸﾞﾒﾝﾄ値(ﾊﾟﾗｸﾞﾗﾌ)として設定されています。実際には最終ｾｸﾞﾒﾝﾄ値+1が設定されます。本来、ﾌﾟﾛｸﾞﾗﾑ最終ｱﾄﾞﾚｽ=割当ﾒﾓﾘ最終ｱﾄﾞﾚｽとなるはずですが、COM型の場合、ﾌﾟﾛｸﾞﾗﾑ開始時に確保できるすべてのﾒﾓﾘを割り当てます。このため、通常、割り当てﾒﾓﾘ最終ｱﾄﾞﾚｽ＞ﾌﾟﾛｸﾞﾗﾑ最終ｱﾄﾞﾚｽとなります。この状態では子ﾌﾟﾛｾｽの実行は不可能です。

 このためにﾌﾟﾛｸﾞﾗﾑ最終ｱﾄﾞﾚｽを参照し、DOSｺｰﾙの4AHを実行して、割当ﾒﾓﾘの変更を行い、割当ﾒﾓﾘを縮小します。この処理以降はDOSｺｰﾙの48Hﾒﾓﾘの確保が有効となります。通常、PSPの0002Hの割り当てﾒﾓﾘ最終ｱﾄﾞﾚｽは、次に使用されるﾒﾓﾘ領域の先頭ｱﾄﾞﾚｽとなります。この値はﾊﾟﾗｸﾞﾗﾌですので、この値のｾｸﾞﾒﾝﾄｱﾄﾞﾚｽでｵﾌｾｯﾄｱﾄﾞﾚｽが0という意味になります。


起動行ﾎﾟｲﾝﾀ

2.3 起動行ﾎﾟｲﾝﾀ

起動行ﾎﾟｲﾝﾀはﾌﾟﾛｸﾞﾗﾑ実行開始時のDS:BXとなり、このｱﾄﾞﾚｽからﾌﾟﾛｸﾞﾗﾑ起動時のｺﾏﾝﾄﾞ行の内容が保存されています。ｺﾏﾝﾄﾞ行で指定するﾌｧｲﾙ名などの引数は、このﾎﾟｲﾝﾀの示す内容から取得します。起動行ﾎﾟｲﾝﾀが示す内容を次に示します。
■ ｱｾﾝﾌﾞﾘ言語による起動行ﾎﾟｲﾝﾀの示す内容の一般形記述
DB  n      ;
文字(ﾊﾞｲﾄ)数 (次の位置からの文字列の有効なﾊﾞｲﾄ数)
DB  ' ～ ' ;
起動行の文字列
DB  0DH    ;
終了子 (規約上は規定されていませんが、実際には存在します。)
文字数は起動行文字列の先頭から終了子(0DH)の直前までの文字(ﾊﾞｲﾄ)数を示します。起動行の文字列はｺﾏﾝﾄﾞ名(起動ﾌｧｲﾙ名)の次の位置からEnterｷｰ入力の直前の文字までです。ﾘﾀﾞｲﾚｸﾄなどの分離記号 < > | が存在する場合はその直前までです。
例:
C:\>TEST
 ABC DEF
>CON
赤の部分が文字列として起動行ﾊﾞｯﾌｧに格納されます。この場合の文字数は9となります。この例の場合の起動行ﾎﾟｲﾝﾀの示すﾒﾓﾘ上の内容を次に示します。
■ 上記例の場合の起動行ﾎﾟｲﾝﾀが示すﾒﾓﾘ上の内容
+0
 09H
文字(ﾊﾞｲﾄ)数
+1 | 20H | TEST直後のｽﾍﾟｰｽ
+2 | 41H | 文字 A
+3 | 42H | 文字 B
+4 | 43H | 文字 C
+5 | 20H | ABCとDEF間のｽﾍﾟｰｽ
+6 | 44H | 文字 D
+7 | 45H | 文字 E
+8 | 46H | 文字 F
+9 | 0DH | 規約上は以降不定


環境ﾎﾟｲﾝﾀ

2.4 環境ﾎﾟｲﾝﾀ

環境ﾎﾟｲﾝﾀはﾌﾟﾛｾｽ管理領域 (PSP)の002CHのﾜｰﾄﾞをｾｸﾞﾒﾝﾄとしたｵﾌｾｯﾄ0で、このｱﾄﾞﾚｽから環境領域があります。環境ﾎﾟｲﾝﾀが示す環境領域の内容を次に示します。(ｱｾﾝﾌﾞﾘ言語で表記した場合)
■ ｱｾﾝﾌﾞﾘ言語表記による環境変数の一般形
DB  ' ～ ',0 ;
1環境名と変数(ASCIZ)
････････････ ;
環境文字列数分続く
DB  0        ;
環境文字列の終了
DW  1        ;
実行ﾌｧｲﾙ文字列数(通常1)
DB  ' ～ ',0 ;
ﾄﾞﾗｲﾌﾞ、ﾊﾟｽを含む実行ﾌｧｲﾙ名ASCIZ文字列
環境領域は最大32Kﾊﾞｲﾄ以内で、先頭から環境文字列が連続しています。1つの環境文字列は環境名と環境変数からなり、文字列の最後は(00H)で終了しています。また、これらの環境文字列群の最後は、1ﾊﾞｲﾄの00Hで終了を示します。即ち環境文字列群の最後は2ﾊﾞｲﾄの00Hとなります。
例: ｱｾﾝﾌﾞﾘ言語表記による環境変数の例
DB  'PATH=\BIN\;\',0
DB  'DOS=A:\DOS\',0,0
PATH等の内部ｺﾏﾝﾄﾞで指定された環境文字列は、内部ｺﾏﾝﾄﾞ名が環境名となり、直後に'='、続いて内部ｺﾏﾝﾄﾞの引数の先頭からEnterｷｰ(CRｺｰﾄﾞ)の直前の文字までが変数名となり設定されます。SETｺﾏﾝﾄﾞで指定された環境文字列は、SETｺﾏﾝﾄﾞの引数の先頭からCRｺｰﾄﾞの直前までが、そのまま環境文字列となります。
例 SETｺﾏﾝﾄﾞによる指定 実際の環境文字列
1
SET ABC = DEF GHI
ABC = DEF GHI
2
SET ABC=DEF GHI
ABC=DEF GHI
環境文字列群に続いて、実行ﾌｧｲﾙ名領域があります。この領域には実行されたﾌﾟﾛｸﾞﾗﾑのﾌｧｲﾙ名がﾄﾞﾗｲﾌﾞ名ﾊﾟｽ名とともに文字列となっています。
例: ｱｾﾝﾌﾞﾘ言語表記による実行ﾌｧｲﾙ名領域の例
DW  1                   ;
文字列数(通常1)
DB  'C:\BIN\TEST.EXE',0 ;
ASCIZ文字列


実行ｱﾄﾞﾚｽ

2.5 実行ｱﾄﾞﾚｽ

COM型の場合はｾｸﾞﾒﾝﾄ=CSでｵﾌｾｯﾄ=0100Hとなり、EXE型の場合はCS:IPの値となります。

 COM型ではCSのｵﾌｾｯﾄ0からの256ﾊﾞｲﾄにﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSPが配置されます。その直後が実行開始ｱﾄﾞﾚｽとなります。この値は常に固定です。

 EXE型ではｱｾﾝﾌﾞﾙ時(最終的にはﾘﾝｸ時)の結果で実行開始ｱﾄﾞﾚｽが決定されます。この値はEXEﾌｧｲﾙ内に記録され、ﾌﾟﾛｸﾞﾗﾑ･ﾛｰﾀﾞによりﾒﾓﾘ上に配置される時に、実際の実行開始ｱﾄﾞﾚｽが計算されます。これはﾘﾛｹｰﾀﾌﾞﾙ形式のために物理ｱﾄﾞﾚｽが、この時に初めて確定されるからです。この実行開始ｱﾄﾞﾚｽはﾌﾟﾛｸﾞﾗﾑ･ﾛｰﾀﾞにより、CS:IPに設定されます。この結果、目的の位置からﾌﾟﾛｸﾞﾗﾑが開始されます。


ﾒﾓﾘ管理領域(MCB)一覧

2.6 ﾒﾓﾘ管理領域(MCB)一覧

実行開始時のDSのｵﾌｾｯﾄ0は、ﾌﾟﾛｾｽ管理ﾌﾞﾛｯｸ (PSP) の先頭ｱﾄﾞﾚｽを示しています。ﾒﾓﾘ管理ﾌﾞﾛｯｸ (MCB) は16ﾊﾞｲﾄで構成され、このPSPの先頭ｱﾄﾞﾚｽ-16からに存在します。
■ ﾒﾓﾘ管理領域(MCB)一覧
ｵﾌｾｯﾄ | ｻｲｽﾞ | 数 | 意味
0000H DB 1
識別子 | 文字 | 16進 | 意味
 | M | 4DH | 通常
 | Z | 5AH | 最後
0001H | DW | 1 | PSPのｾｸﾞﾒﾝﾄ･ｱﾄﾞﾚｽ
0003H | DW | 1 | 環境領域の容量(ﾊﾟﾗｸﾞﾗﾌ単位)
0005H | DB | 3 | 予約
0008H | DB | 8 | ﾌﾟﾛｾｽ名


ﾌﾟﾛｾｽ管理領域(PSP)一覧

2.7 ﾌﾟﾛｾｽ管理領域(PSP)一覧

実行開始時のDSのｵﾌｾｯﾄ0がﾌﾟﾛｾｽ管理ﾌﾞﾛｯｸ(PSP)の先頭ｱﾄﾞﾚｽを示しています。ﾌﾟﾛｾｽ管理領域はﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽとも呼ばれています。
■ ﾌﾟﾛｾｽ管理領域(PSP)一覧
ｵﾌｾｯﾄ | ｻｲｽﾞ | 数 | 意味
0000H | DW | 1 | 割り込み命令 INT 20H (ﾌﾟﾛｸﾞﾗﾑ終了用)
0002H | DW | 1 | 割当最終ｱﾄﾞﾚｽの次のﾊﾟﾗｸﾞﾗﾌ値
0004H | DB | 1 | 予約 (通常0)
0005H | DB | 1 | DOSｺｰﾙ用CALL命令 (9AH)
0006H | DW | 1 | DOSｺｰﾙ用ｵﾌｾｯﾄ･ｱﾄﾞﾚｽ
0008H | DW | 1 | DOSｺｰﾙ用ｾｸﾞﾒﾝﾄ･ｱﾄﾞﾚｽ
000AH | DD | 1 | ﾌﾟﾛｾｽ終了時 (INT22H) 処理ｱﾄﾞﾚｽ保存領域
000EH | DD | 1 | ^C中断時 (INT23H) 処理ｱﾄﾞﾚｽ保存領域
0012H | DD | 1 | ｴﾗｰによる中止時 (INT24H) 処理ｱﾄﾞﾚｽ保存領域
0016H | DW | 1 | 親ﾌﾟﾛｾｽPSPｾｸﾞﾒﾝﾄ･ｱﾄﾞﾚｽ
0018H | DB | 19 | 予約
002CH | DW | 1 | 環境領域のｾｸﾞﾒﾝﾄ･ｱﾄﾞﾚｽ
002EH | DB | 33 | 予約
0050H | DW | 1 | 割り込み命令 INT 21H (DOSｺｰﾙ用)
0052H | DB | 1 | FARﾘﾀｰﾝ命令 RETF (復帰用)
0053H | DB | 9 | 予約
005CH | DB | 16 | FCB1 (ﾌｧｲﾙ･ｺﾝﾄﾛｰﾙ･ﾌﾞﾛｯｸ)
006CH | DB | 16+4 | FCB2
0080H | DB | 1 | 起動行文字数 ([CR(Enter)]を除くﾊﾞｲﾄ数)
0081H | DB | 127 | 起動ﾌｧｲﾙ名の次から[CR(Enter)]までの文字列
これに続く0100HがCOM型のﾌﾟﾛｸﾞﾗﾑ先頭 (実行ｱﾄﾞﾚｽ) となります。


DOSｺｰﾙ機能

3. DOSｺｰﾙ機能

3.1 DOSｺｰﾙの一般的な呼び出し方法
3.2 DOSｺｰﾙ分類
 3.2.1 ｺﾝｿｰﾙ、ﾌﾟﾘﾝﾀ、RS-232C関係
 3.2.2 ﾒﾓﾘ管理関係
 3.2.3 ﾌﾟﾛｾｽ管理関係
 3.2.4 ﾌｧｲﾙ管理関係
 3.2.5 ﾃﾞｨﾚｸﾄﾘ管理関係
 3.2.6 ﾃﾞｨｽｸ関係
 3.2.7 日付時刻関係
 3.2.8 ｼｽﾃﾑ関係
3.3 DOSｺｰﾙｴﾗｰ情報
3.4 DOSｺｰﾙ一覧


DOSｺｰﾙ呼出法

3.1 DOSｺｰﾙの一般的な呼び出し方法

DOSｺｰﾙを行う場合の原則は次の手順に従います。
① | 必要な引数(各機能説明の【引数】欄)があれば、各機能説明の【引数】で指定のﾚｼﾞｽﾀ、ﾒﾓﾘに対応する値を設定します。
② | 対応するDOSｺｰﾙ番号をAHﾚｼﾞｽﾀに設定します。機能によってはALにも設定します。
③ | INT 21Hを実行すると、対応する機能を実行します。
④ | INT 21H実行後、【戻値】が結果情報となります。
⑤ | 結果に応じた適切な処理をします。
■ | 各機能説明で特記無き場合、【戻値】で示される以外のﾚｼﾞｽﾀの内容は保障されます。
■ | 原則としてｷｬﾘｰﾌﾗｸﾞ=1の場合はｴﾗｰで、AXﾚｼﾞｽﾀにｴﾗｰ･ｺｰﾄﾞが設定されます。


DOSｺｰﾙ･ｴﾗｰ情報

3.3 DOSｺｰﾙ･ｴﾗｰ情報

番号 意味
 1(01H)
無効DOSｺｰﾙ番号
 2(02H)
指定ﾌｧｲﾙ無し
 3(03H)
指定ﾃﾞｨﾚｸﾄﾘ無し
 4(04H)
ｵｰﾌﾟﾝされているﾌｧｲﾙが多すぎる
 5(05H)
不当なｱｸｾｽ
 6(06H)
無効なﾊﾝﾄﾞﾙ番号
 7(07H)
ﾒﾓﾘ管理領域破壊
 8(08H)
実行ﾒﾓﾘ量不足
 9(09H)
無効なﾒﾓﾘ管理ﾎﾟｲﾝﾀ
10(0AH)
不正な環境
11(0BH)
実行ﾌｧｲﾙ･ﾌｫｰﾏｯﾄ異常
12(0CH)
ｵｰﾌﾟﾝ時ｱｸｾｽ･ﾓｰﾄﾞ異常
13(0DH)
無効なﾃﾞｰﾀ
14(0EH)
(予約)
15(0FH)
無効なﾄﾞﾗｲﾌﾞ指定
16(10H)
ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘ削除不可
17(11H)
ﾃﾞﾊﾞｲｽ不一致
18(12H)
これ以上ﾌｧｲﾙが見つからない
19(13H)
書き込み不可能ﾌｧｲﾙ
20(14H)
ﾃﾞｨｽｸ･ﾄﾞﾗｲﾌﾞ不良
21(15H)
ﾃﾞｨｽｸ･ﾄﾞﾗｲﾌﾞ未準備
22(16H)
無効なﾃﾞｨｽｸ機能実行
23(17H)
ﾃﾞｨｽｸCRCｴﾗｰ
24(18H)
ﾃﾞｨｽｸ無効なﾃﾞｰﾀ長
25(19H)
ﾃﾞｨｽｸ･ｼｰｸ･ｴﾗｰ
26(1AH)
MS-DOS以外のﾃﾞｨｽｸ
27(1BH)
ﾃﾞｨｽｸのｾｸﾀ検出不能
28(1CH)
ﾌﾟﾘﾝﾀ用紙切れ
29(1DH)
書き込み失敗
30(1EH)
読み込み失敗
31(1FH)
その他通常の失敗
32(20H)
ﾌｧｲﾙ･ｼｪｱﾘﾝｸﾞ違反
33(21H)
ﾌｧｲﾙ･ﾛｯｸ違反
34(22H)
ﾃﾞｨｽｸ指定失敗
35(23H)
FCB使用不可能


DOSｺｰﾙ一覧

3.4 DOSｺｰﾙ一覧

AH : AL 機能内容
00H
ﾌﾟﾛｸﾞﾗﾑ終了
01H
ｷｰﾎﾞｰﾄﾞ入力 ([^C,^N,^P]処理有、標準出力へｴｺｰ･ﾊﾞｯｸ)
02H
標準出力へ文字表示 ([^C,^N,^P,^S]処理有)
03H
AUXから1ﾊﾞｲﾄ入力 ([^C]処理有)
04H
AUXへ1ﾊﾞｲﾄ出力 ([^C]処理有)
05H
PRN,LPTへ出力 ([^C]処理有)
06H
CONの入出力 ([^C]処理無)
07H
ｷｰﾎﾞｰﾄﾞ入力 ([^C]処理無)
08H
ｷｰﾎﾞｰﾄﾞ入力 ([^C,^N,^P]処理有)
09H
文字列表示 ([^C,^N,^P,^S]処理有)
0AH
文字列入力 ([^C,^N,^P]処理有、ASCIZ文字列)
0BH
ｷｰ入力状態取得 ([^C,^N,^P]処理有)
0CH
ｷｰﾊﾞｯﾌｧ解消後ｷｰ入力
0DH
ﾃﾞｨｽｸ･ﾊﾞｯﾌｧ解消
0EH
ｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞ指定
0FH
FCBによるﾌｧｲﾙ･ｵｰﾌﾟﾝ
10H
FCBによるﾌｧｲﾙ･ｸﾛｰｽﾞ
11H
FCBによる初回ﾌｧｲﾙ検索
12H
FCBによる次回ﾌｧｲﾙ検索
13H
FCBによるﾌｧｲﾙ削除
14H
FCBによるﾌｧｲﾙの順(ｼｰｹﾝｼｬﾙ)読み込み
15H
FCBによるﾌｧｲﾙの順(ｼｰｹﾝｼｬﾙ)書き込み
16H
FCBによるﾌｧｲﾙ作成
17H
ﾌｧｲﾙ名の変更
18H
未定義
19H
ｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞ番号取得
1AH
ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ(DTA)設定
1BH
ｶﾚﾝﾄﾄﾞﾗｲﾌﾞの構成取得
1CH
ﾄﾞﾗｲﾌﾞの構成取得
1DH
未定義
1EH
未定義
1FH
ﾃﾞﾌｫﾙﾄ･ﾃﾞｨｽｸ･ﾊﾟﾗﾒｰﾀ･ﾌﾞﾛｯｸ(DPB)取得
20H
未定義
21H
FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ読み込み
22H
FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ書き込み
23H
ﾌｧｲﾙの容量取得
24H
相対ﾚｺｰﾄﾞの設定
25H
割り込みﾍﾞｸﾀ設定
26H
新しいﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)の作成
27H
FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ･ﾌﾞﾛｯｸ読み込み
28H
FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ･ﾌﾞﾛｯｸ書き込み
29H
ﾌｧｲﾙ情報を展開 (FCB設定)
2AH
現在日付取得
2BH
現在日付設定
2CH
現在時刻取得
2DH
現在時刻設定
2EH
ﾍﾞﾘﾌｧｲ指定、解除
2FH
ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ(DTA)取得
30H
ﾊﾞｰｼﾞｮﾝ番号取得
31H
ﾌﾟﾛｸﾞﾗﾑ常駐終了
32H
ﾃﾞｨｽｸ･ﾊﾟﾗﾒｰﾀ･ﾌﾞﾛｯｸ(DPB)取得
33H 0,1
ﾌﾞﾚｰｸ･ﾁｪｯｸ取得、設定
33H 5
起動ﾄﾞﾗｲﾌﾞ取得
33H 6
ﾊﾞｰｼﾞｮﾝ番号取得 (Ver5.0以降)
34H
未定義
35H
割り込みﾍﾞｸﾀ取得
36H
ﾃﾞｨｽｸ残容量取得
37H
未定義
38H
国別情報を取得、設定
39H
ﾃﾞｨﾚｸﾄﾘ作成
3AH
ﾃﾞｨﾚｸﾄﾘ削除 (ｶﾚﾝﾄ,ﾙｰﾄ･ﾃﾞｨﾚｸﾄﾘを除く)
3BH
ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘ設定
3CH
ﾊﾝﾄﾞﾙによるﾌｧｲﾙ作成
3DH
ﾊﾝﾄﾞﾙによるﾌｧｲﾙ･ｵｰﾌﾟﾝ
3EH
ﾊﾝﾄﾞﾙによるﾌｧｲﾙ･ｸﾛｰｽﾞ
3FH
ﾊﾝﾄﾞﾙによるﾌｧｲﾙ読み込み
40H
ﾊﾝﾄﾞﾙによるﾌｧｲﾙ書き込み
41H
ﾌｧｲﾙ名によるﾌｧｲﾙ削除
42H
ﾌｧｲﾙ･ﾎﾟｲﾝﾀ移動
43H
ﾌｧｲﾙ属性取得、設定
44H 0
装置情報取得 (IOCTL機能有りのﾃﾞﾊﾞｲｽのみ有効)
44H 1
装置情報設定 (IOCTL機能有りのﾃﾞﾊﾞｲｽのみ有効)
44H 2
IOCTLｷｬﾗｸﾀ読み込み (IOCTL機能有りのｷｬﾗｸﾀ･ﾃﾞﾊﾞｲｽのみ有効)
44H 3
IOCTLｷｬﾗｸﾀ書き込み (IOCTL機能有りのｷｬﾗｸﾀ･ﾃﾞﾊﾞｲｽのみ有効)
44H 4
IOCTLﾌﾞﾛｯｸ読み込み (IOCTL機能有りのﾌﾞﾛｯｸ･ﾃﾞﾊﾞｲｽのみ有効)
44H 5
IOCTLﾌﾞﾛｯｸ書き込み (IOCTL機能有りのﾌﾞﾛｯｸ･ﾃﾞﾊﾞｲｽのみ有効)
44H 6
IOCTL入力状態取得 (IOCTL機能有りのﾃﾞﾊﾞｲｽのみ有効)
44H 7
IOCTL出力状態取得 (IOCTL機能有りのﾃﾞﾊﾞｲｽのみ有効)
45H
ﾊﾝﾄﾞﾙの二重化 (新ﾊﾝﾄﾞﾙ番号)
46H
ﾊﾝﾄﾞﾙの二重化 (指定ﾊﾝﾄﾞﾙ番号)
47H
ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘ取得
48H
ﾒﾓﾘ領域確保
49H
ﾒﾓﾘ領域解放
4AH
ﾒﾓﾘ領域変更
4BH 0
ﾌﾟﾛｸﾞﾗﾑのﾛｰﾄﾞと実行
4BH 1
ﾌﾟﾄｸﾞﾗﾑのﾛｰﾄﾞ
4BH 3
ﾌﾟﾛｸﾞﾗﾑのｵｰﾊﾞｰﾚｲ
4CH
終了ｺｰﾄﾞ付きﾌﾟﾛｸﾞﾗﾑ終了 (全ﾌｧｲﾙｸﾛｰｽﾞ)
4DH
終了ｺｰﾄﾞ取得
4EH
初回ﾌｧｲﾙ検索
4FH
次回ﾌｧｲﾙ検索 (4EH後の検索)
50H
ﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)ｾｸﾞﾒﾝﾄ値設定
51H
ﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)ｾｸﾞﾒﾝﾄ値取得
52H
未定義
53H
未定義
54H
ﾍﾞﾘﾌｧｲ状態取得
55H
未定義
56H
ﾌｧｲﾙ名変更、移動 (ﾃﾞｨﾚｸﾄﾘ名も可、同ﾄﾞﾗｲﾌﾞ内)
57H
ﾌｧｲﾙの日付時間取得、設定
58H
ﾒﾓﾘ領域確保方法取得、設定
59H
拡張ｴﾗｰ･ｺｰﾄﾞ取得
5AH
ﾊﾝﾄﾞﾙによる一時ﾌｧｲﾙ作成(ﾌｧｲﾙ名に?が可能)
5BH
ﾊﾝﾄﾞﾙによるﾌｧｲﾙ作成
5CH
ﾌｧｲﾙのﾛｯｸ制御
5DH
未定義
5EH
未定義
5FH
未定義
60H
未定義
61H
未定義
62H
ﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)ｾｸﾞﾒﾝﾄ値取得


DOSｺｰﾙ分類

3.2 DOSｺｰﾙ分類

3.2.1 ｺﾝｿｰﾙ、ﾌﾟﾘﾝﾀ、RS-232C関係
3.2.2 ﾒﾓﾘ管理関係
3.2.3 ﾌﾟﾛｾｽ管理関係
3.2.4 ﾌｧｲﾙ管理関係
3.2.5 ﾃﾞｨﾚｸﾄﾘ管理関係
3.2.6 ﾃﾞｨｽｸ関係
3.2.7 日付時刻関係
3.2.8 ｼｽﾃﾑ関係


ｺﾝｿｰﾙ関係

3.2.1 ｺﾝｿｰﾙ･ﾌﾟﾘﾝﾀ･RS-232C関係

AH= | 機能内容
01H | ｷｰﾎﾞｰﾄﾞ入力 ([^C,^N,^P]処理有、標準出力へｴｺｰ･ﾊﾞｯｸ)
02H | 標準出力へ文字表示 ([^C,^N,^P,^S]処理有)
06H | CONの入出力 ([^C]処理無)
07H | ｷｰﾎﾞｰﾄﾞ入力 ([^C]処理無)
08H | ｷｰﾎﾞｰﾄﾞ入力 ([^C,^N,^P]処理有)
09H | 文字列表示 ([^C,^N,^P,^S]処理有)
0AH | 文字列入力 ([^C,^N,^P]処理有、ASCIZ文字列)
0BH | ｷｰ入力状態取得 ([^C,^N,^P]処理有)
0CH | ｷｰｲﾝ･ﾊﾞｯﾌｧ解消後ｷｰ入力
44H | IOCTLによる直接入出力
05H | PRN,LPTへ出力 ([^C]処理有)
03H | AUXから1ﾊﾞｲﾄ入力 ([^C]処理有)
04H | AUXへ1ﾊﾞｲﾄ出力 ([^C]処理有)


ﾒﾓﾘ管理関係

3.2.2 ﾒﾓﾘ管理関係

AH= | 機能内容
48H | ﾒﾓﾘ領域確保
49H | ﾒﾓﾘ領域解放
4AH | ﾒﾓﾘ領域変更
58H | ﾒﾓﾘ領域確保方法取得、設定


ﾌﾟﾛｾｽ管理関係

3.2.3 ﾌﾟﾛｾｽ管理関係

AH= | 機能内容
00H | ﾌﾟﾛｸﾞﾗﾑ終了 (全ﾌｧｲﾙ･ｸﾛｰｽﾞ)
26H | 新しいﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)の作成
31H | ﾌﾟﾛｸﾞﾗﾑ常駐終了
4BH | ﾌﾟﾛｸﾞﾗﾑのﾛｰﾄﾞと実行
4CH | 終了ｺｰﾄﾞ付きﾌﾟﾛｸﾞﾗﾑ終了 (全ﾌｧｲﾙ･ｸﾛｰｽﾞ)
4DH | 終了ｺｰﾄﾞ取得
50H | ﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)ｾｸﾞﾒﾝﾄ値設定
51H | ﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)ｾｸﾞﾒﾝﾄ値取得
62H | ﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)ｾｸﾞﾒﾝﾄ値取得


ﾌｧｲﾙ管理関係

3.2.4 ﾌｧｲﾙ管理関係

AH= | 機能内容
0FH | FCBによるﾌｧｲﾙ･ｵｰﾌﾟﾝ
10H | FCBによるﾌｧｲﾙ･ｸﾛｰｽﾞ
13H | FCBによるﾌｧｲﾙ削除
14H | FCBによるﾌｧｲﾙ順(ｼｰｹﾝｼｬﾙ)読み込み
15H | FCBによるﾌｧｲﾙ順(ｼｰｹﾝｼｬﾙ)書き込み
16H | FCBによるﾌｧｲﾙ作成
17H | ﾌｧｲﾙ名の変更
1AH | ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ(DTA)設定
21H | FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ読み込み
22H | FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ書き込み
23H | ﾌｧｲﾙの容量取得
24H | 相対ﾚｺｰﾄﾞの設定
27H | FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ･ﾌﾞﾛｯｸ読み込み
28H | FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ･ﾌﾞﾛｯｸ書き込み
29H | ﾌｧｲﾙ情報を展開 (FCB設定)
2FH | ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ(DTA)取得
3CH | ﾊﾝﾄﾞﾙによるﾌｧｲﾙ作成
3DH | ﾊﾝﾄﾞﾙによるﾌｧｲﾙ･ｵｰﾌﾟﾝ
3EH | ﾊﾝﾄﾞﾙによるﾌｧｲﾙ･ｸﾛｰｽﾞ
3FH | ﾊﾝﾄﾞﾙによるﾌｧｲﾙ読み込み
40H | ﾊﾝﾄﾞﾙによるﾌｧｲﾙ書き込み
41H | ﾌｧｲﾙ名によるﾌｧｲﾙ削除
42H | ﾌｧｲﾙ･ﾎﾟｲﾝﾀ移動
45H | ﾊﾝﾄﾞﾙの二重化 (新ﾊﾝﾄﾞﾙ番号)
46H | ﾊﾝﾄﾞﾙの二重化 (指定ﾊﾝﾄﾞﾙ番号)
5AH | ﾊﾝﾄﾞﾙによる一時ﾌｧｲﾙ作成 (ﾌｧｲﾙ名に?が可能)
5BH | ﾊﾝﾄﾞﾙによるﾌｧｲﾙ作成 (同一ﾌｧｲﾙ名ｴﾗｰ処理)
5CH | ﾌｧｲﾙのﾛｯｸ制御


ﾃﾞｨﾚｸﾄﾘ管理関係

3.2.5 ﾃﾞｨﾚｸﾄﾘ管理関係

AH= | 機能内容
11H | FCBによる初回ﾌｧｲﾙ検索
12H | FCBによる次回ﾌｧｲﾙ検索 (11H後の検索)
39H | ﾃﾞｨﾚｸﾄﾘ作成
3AH | ﾃﾞｨﾚｸﾄﾘ削除 (ｶﾚﾝﾄ,ﾙｰﾄ･ﾃﾞｨﾚｸﾄﾘを除く)
3BH | ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘ設定
43H | ﾌｧｲﾙ属性取得、設定
47H | ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘ取得
4EH | 初回ﾌｧｲﾙ検索
4FH | 次回ﾌｧｲﾙ検索 (4EH後の検索)
56H | ﾌｧｲﾙ名変更、移動 (ﾃﾞｨﾚｸﾄﾘ名も可、同ﾄﾞﾗｲﾌﾞ内)
57H | ﾌｧｲﾙの日付時間取得、設定


ﾃﾞｨｽｸ関係

3.2.6 ﾃﾞｨｽｸ関係

AH= | 機能内容
0DH | ﾃﾞｨｽｸ･ﾊﾞｯﾌｧ解消
0EH | ｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞ指定
19H | ｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞ番号取得
1BH | ｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞの構成取得
1CH | ﾄﾞﾗｲﾌﾞの構成取得
1FH | ﾃﾞﾌｫﾙﾄ･ﾃﾞｨｽｸ･ﾊﾟﾗﾒｰﾀ･ﾌﾞﾛｯｸ(DPB)取得
32H | ﾃﾞｨｽｸ･ﾊﾟﾗﾒｰﾀ･ﾌﾞﾛｯｸ(DPB)取得
33H | 起動ﾄﾞﾗｲﾌﾞ取得 [AL=5]
36H | ﾃﾞｨｽｸ残容量取得


日付時刻関係

3.2.7 日付時刻関係

AH= | 機能内容
2AH | 現在日付取得
2BH | 現在日付設定
2CH | 現在時刻取得
2DH | 現在時刻設定


ｼｽﾃﾑ関係

3.2.8 ｼｽﾃﾑ関係

AH= | 機能内容
25H | 割り込みﾍﾞｸﾀ設定
2EH | ﾍﾞﾘﾌｧｲ指定、解除
30H | ﾊﾞｰｼﾞｮﾝ番号取得
33H | ﾌﾞﾚｰｸ･ﾁｪｯｸ取得、設定 [AL=0,1]
33H | ﾊﾞｰｼﾞｮﾝ番号取得 [AL=6] (Ver5.0以降)
35H | 割り込みﾍﾞｸﾀ取得
38H | 国別情報を取得、設定
54H | ﾍﾞﾘﾌｧｲ状態取得
59H | 拡張ｴﾗｰ･ｺｰﾄﾞ取得


ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞ

4. ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞ

4.1 ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞの基本構造
4.2 ﾃﾞﾊﾞｲｽ･ﾍｯﾀﾞ
4.3 ﾘｸｴｽﾄ･ﾍｯﾀﾞ、ﾃﾞｰﾀ
4.4 ｽﾄﾗﾃｼﾞ･ﾙｰﾁﾝ
4.5 割り込み処理ﾙｰﾁﾝ
4.6 BPB、DPBの構造


ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞの基本構造

4.1 ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞの基本構造

ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞは大別して、以下の構成となっています。
① | ﾃﾞﾊﾞｲｽ･ﾍｯﾀﾞ (ﾃﾞﾊﾞｲｽ定義)
② | ｽﾄﾗﾃｼﾞ･ﾙｰﾁﾝ
③ | 割り込み処理ﾙｰﾁﾝ (初期化を除く)
④ | 割り込み処理ﾙｰﾁﾝ (初期化)
ﾃﾞﾊﾞｲｽ･ﾍｯﾀﾞ内のｽﾄﾗﾃｼﾞ、割り込み処理ｱﾄﾞﾚｽはｵﾌｾｯﾄ･ｱﾄﾞﾚｽのみとなっています。このためにﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞは1ｾｸﾞﾒﾝﾄ(64Kﾊﾞｲﾄ)以内というｻｲｽﾞの制限があります。


ﾃﾞﾊﾞｲｽ･ﾍｯﾀﾞ

4.2 ﾃﾞﾊﾞｲｽ･ﾍｯﾀﾞ

ﾃﾞﾊﾞｲｽ･ﾍｯﾀﾞは必ずﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞの先頭に定義されます。　ﾃﾞﾊﾞｲｽ･ﾍｯﾀﾞは以下に示す18ﾊﾞｲﾄで構成されます。

■ ﾃﾞﾊﾞｲｽ･ﾍｯﾀﾞの構造
15 | 0
ﾘﾝｸ･ﾎﾟｲﾝﾀ (ｵﾌｾｯﾄ) |  | +0
ﾘﾝｸ･ﾎﾟｲﾝﾀ (ｾｸﾞﾒﾝﾄ) |  | +2
属性 |  | +4
ｽﾄﾗﾃｼﾞ処理ﾙｰﾁﾝ先頭ｱﾄﾞﾚｽ |  | +6
割り込み処理ﾙｰﾁﾝ先頭ｱﾄﾞﾚｽ |  | +8
ｷｬﾗｸﾀ型ﾃﾞﾊﾞｲｽの場合はﾃﾞﾊﾞｲｽ名、ﾌﾞﾛｯｸ型ﾃﾞﾊﾞｲｽの場合はﾕﾆｯﾄ数を示す8ﾊﾞｲﾄ |  | +10
例: ｱｾﾝﾌﾞﾘ言語での記述例
DRVHEAD: DD  ?          ;
ﾘﾝｸ･ﾎﾟｲﾝﾀ領域確保
         DW  8040H      ;
属性定義
         DW  STRGENT    ;
ｽﾄﾗﾃｼﾞ処理ｵﾌｾｯﾄ･ｱﾄﾞﾚｽ定義
         DW  INTJENT    ;
割り込み処理ｵﾌｾｯﾄ･ｱﾄﾞﾚｽ定義
         DB  'AUX     ' ;
ﾃﾞﾊﾞｲｽ名定義

■ ﾘﾝｸ･ﾎﾟｲﾝﾀ
すべてのﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞはﾁｪｲﾝされていて、ﾃﾞﾊﾞｲｽ要求が発生した場合、OSがこのﾁｪｲﾝを手繰って目的のﾄﾞﾗｲﾊﾞを探し当てます。この結合情報がﾘﾝｸ･ﾎﾟｲﾝﾀで、次のﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞのﾃﾞﾊﾞｲｽ･ﾍｯﾀﾞの先頭ｱﾄﾞﾚｽがOSによって設定されます。1つのﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞのみの場合や最後のﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞは、-1(終了子)が設定されます。

 MS-DOSでは、1つのﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞで複数のﾃﾞﾊﾞｲｽを制御する場合を想定しています。その場合は、ﾃﾞﾊﾞｲｽごとにﾍｯﾀﾞを必要とします。

■ 属性

ﾋﾞｯﾄ | 意味 |  |  | 備考
15 | ﾃﾞﾊﾞｲｽ型式 | 1 | ｷｬﾗｸﾀ型 | CON,AUX等のｼｰｹﾝｼｬﾙ処理がｷｬﾗｸﾀ型で、FD,HD等ｾｸﾀ単位処理がﾌﾞﾛｯｸ型
 |  | 0 | ﾌﾞﾛｯｸ型
14 | IOCTL機能 | 1 | IOCTL可 | DOSｺｰﾙのIOCTL処理が可能かを指定、ｻﾎﾟｰﾄしない場合は0
 |  | 0 | IOCTL不可
13 | Ouput until busy機能 | 1 | 有り | ｷｬﾗｸﾀ型
 |  | 0 | 無し
 | Non FAT ID機能 | 1 | 有り | ﾌﾞﾛｯｸ型
 |  | 0 | 無し
12 | 未定義 (常に0固定)
11 | 未定義 (常に0固定) |  |  | ｷｬﾗｸﾀ型
 | OPEN /COLSE /RM機能 | 1 | 有り | ﾌﾞﾛｯｸ型
 |  | 0 | 無し
10～7 | 未定義 (常に0固定)
6 | Ver対応 | 1 | Ver3.3以降 | Ver3.3以降ﾌﾗｸﾞ
 |  | 0 | Ver3.3以前
5 | 処理単位 | 1 | Rawﾓｰﾄﾞ (複数ﾊﾞｲﾄ単位処理) | ｷｬﾗｸﾀ型のみ、ﾌﾞﾛｯｸ型は常に0
 |  | 0 | Cookedﾓｰﾄﾞ (1ﾊﾞｲﾄ単位処理)
4 | 特殊装置 | 1 | 特殊な装置
 |  | 0 | 通常装置
3 | CLOCKﾃﾞﾊﾞｲｽ | 1 | CLOCKﾃﾞﾊﾞｲｽ
 |  | 0 | 通常ﾃﾞﾊﾞｲｽ
2 | NULﾃﾞﾊﾞｲｽ | 1 | NULﾃﾞﾊﾞｲｽ
 |  | 0 | 通常ﾃﾞﾊﾞｲｽ
1 | 標準出力ﾃﾞﾊﾞｲｽ | 1 | 標準出力ﾃﾞﾊﾞｲｽ (CON)
 |  | 0 | 通常ﾃﾞﾊﾞｲｽ
0 | 標準入力ﾃﾞﾊﾞｲｽ | 1 | 標準入力ﾃﾞﾊﾞｲｽ (CON)
 |  | 0 | 通常ﾃﾞﾊﾞｲｽ

■ ｽﾄﾗﾃｼﾞ処理ﾙｰﾁﾝ先頭(ｵﾌｾｯﾄ)ｱﾄﾞﾚｽ

ｽﾄﾗﾃｼﾞ処理ﾙｰﾁﾝの先頭(ｵﾌｾｯﾄ)ｱﾄﾞﾚｽを設定します。

■ 割り込み処理ﾙｰﾁﾝ先頭(ｵﾌｾｯﾄ)ｱﾄﾞﾚｽ

割り込み処理ﾙｰﾁﾝの先頭(ｵﾌｾｯﾄ)ｱﾄﾞﾚｽを設定します。

■ ﾃﾞﾊﾞｲｽ名
ﾃﾞﾊﾞｲｽ名領域は8ﾊﾞｲﾄで構成され、ｷｬﾗｸﾀ型ﾃﾞﾊﾞｲｽの場合は、ﾃﾞﾊﾞｲｽ名を先頭から設定します。残った領域はｽﾍﾟｰｽとします。ﾌﾞﾛｯｸ型ﾃﾞﾊﾞｲｽの場合は、先頭の１ﾊﾞｲﾄにﾕﾆｯﾄ数を設定します。残りの領域は特に規定されていません。ﾕﾆｯﾄ数とは、このﾃﾞﾊﾞｲｽﾄﾞﾗｲﾊﾞで処理する装置数のことです。
例: ｷｬﾗｸﾀ型ﾃﾞﾊﾞｲｽ
 DB  'AUX     '  ;
装置名AUX
例: ﾌﾞﾛｯｸ型ﾃﾞﾊﾞｲｽ
 DB  4,'       ' ;
FD4台


ﾘｸｴｽﾄ･ﾍｯﾀﾞ

4.3 ﾘｸｴｽﾄ･ﾍｯﾀﾞ、ﾃﾞｰﾀ

ﾘｸｴｽﾄ･ﾍｯﾀﾞは、DOSとのｲﾝﾀｰﾌｪｰｽに使用され、このﾍｯﾀﾞ･ｱﾄﾞﾚｽはｽﾄﾗﾃｼﾞ･ﾙｰﾁﾝへ渡されます。割り込み処理ﾙｰﾁﾝでは、このﾍｯﾀﾞ上でﾃﾞｰﾀ、ﾌﾗｸﾞの受け渡しをします。ﾘｸｴｽﾄ･ﾍｯﾀﾞの共通部分は5ﾊﾞｲﾄで以下のような構成です。

 ﾊﾟﾗﾒｰﾀはﾍｯﾀﾞに続いて存在し、ｺﾏﾝﾄﾞ･ｺｰﾄﾞにより異なります。これらはDOSが設定してから渡されますが、ｽﾃｰﾀｽ･ｺｰﾄﾞとｴﾗｰ･ｺｰﾄﾞは割り込み処理ﾙｰﾁﾝが結果に基づいて設定します。ﾊﾟﾗﾒｰﾀ部については、4.5 割り込み処理ﾙｰﾁﾝを参照して下さい。
■ ﾘｸｴｽﾄ･ﾍｯﾀﾞの構造
 | 7 | 0
+0 | ﾘｸｴｽﾄ･ﾍｯﾀﾞのﾊﾞｲﾄ数
+1 | ﾕﾆｯﾄ数 (ﾌﾞﾛｯｸ型のみ)
+2 | ｺﾏﾝﾄﾞ･ｺｰﾄﾞ
+3 | ｴﾗｰ･ｺｰﾄﾞ
+4 | ｽﾃｰﾀｽ･ｺｰﾄﾞ
+5 | ﾊﾟﾗﾒｰﾀ部 (ｺﾏﾝﾄﾞ･ｺｰﾄﾞに依存)

■ ﾘｸｴｽﾄ･ﾍｯﾀﾞのﾊﾞｲﾄ数

このﾘｸｴｽﾄ･ﾍｯﾀﾞのｻｲｽﾞをﾊﾞｲﾄ数で示します。ｻｲｽﾞには、このﾊﾞｲﾄやﾊﾟﾗﾒｰﾀ部を含みます。

■ ﾕﾆｯﾄ番号
ﾌﾞﾛｯｸ型ﾃﾞﾊﾞｲｽでのみ使用し、同一構造の複数ﾃﾞﾊﾞｲｽをｻﾎﾟｰﾄするﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞに対して、どのﾃﾞﾊﾞｲｽに対する要求かを指定するﾕﾆｯﾄ番号が示されます。ｷｬﾗｸﾀ型のﾄﾞﾗｲﾊﾞでは未使用です。

■ ｺﾏﾝﾄﾞ･ｺｰﾄﾞ

番号 | ｷｬﾗｸﾀ型 | ﾌﾞﾛｯｸ型
0 | 初期化
1 | 未使用 | ﾃﾞｨｽｸ交換検査
2 | 未使用 | Build BPB
3 | IOCTL入力
4 | 入力
5 | 先読み入力 | 未使用
6 | 入力状態検査 | 未使用
7 | 入力ﾊﾞｯﾌｧ･ﾃﾞｰﾀ消去 | 未使用
8 | 出力
9 | 出力とﾍﾞﾘﾌｧｲ
10 | 出力状態検査 | 未使用
11 | 出力ﾊﾞｯﾌｧ消去 | 未使用
12 | IOCTL出力
13 | Device open (OPEN/CLOSE/RM時)
14 | Device close (OPEN/CLOSE/RM時)
15 | Remove media (OPEN/CLOSE/RM時)
16 | Busyまで出力 (Output until busy時) | 未使用
17 | 未使用
18 | 未使用
19 | 拡張IOCTL (Ver3.3時)
20 | ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞ除去 | 未使用
21 | 未使用
22 | 未使用
23 | 未使用 | 論理ﾄﾞﾗｲﾌﾞ取得(Ver3.3時)
24 | 未使用 | 論理ﾄﾞﾗｲﾌﾞ設定(Ver3.3時)

■ ｴﾗｰ･ｺｰﾄﾞ
割り込み処理ﾙｰﾁﾝでｴﾗｰが発生した場合、ｴﾗｰ内容を次のｺｰﾄﾞで設定します。
ｺｰﾄﾞ | 意味
00H | 書き込み保護
01H | 不正ﾕﾆｯﾄ番号
02H | ﾄﾞﾗｲﾌﾞの準備ができていない
03H | 不正なｺﾏﾝﾄﾞ･ｺｰﾄﾞ
04H | CRCｴﾗｰ
05H | ﾃﾞｨｽｸ管理領域破壊
06H | ｼｰｸ･ｴﾗｰ
07H | 無効なﾒﾃﾞｨｱ
08H | ｾｸﾀ未検出
09H | ﾌﾟﾘﾝﾀの準備ができていない
0AH | 書き込みｴﾗｰ
0BH | 読み出しｴﾗｰ
0CH | その他のｴﾗｰ
0DH | 未定義
0EH | 未定義
0FH | 未定義

■ ｽﾃｰﾀｽ･ｺｰﾄﾞ
割り込み処理ﾙｰﾁﾝでの結果を次に従って設定します。
ﾋﾞｯﾄ | 意味
7 | 1=ｴﾗｰ 0=正常
6～2 | 0固定
1 | 1=Busy (状態取得時関係のみ)
0 | 1=処理終了 (通常=1)


ｽﾄﾗﾃｼﾞ･ﾙｰﾁﾝ

4.4 ｽﾄﾗﾃｼﾞ･ﾙｰﾁﾝ

本来の1処理がｽﾄﾗﾃｼﾞと割り込み処理に分離されているのは、ﾏﾙﾁﾀｽｸを意識しているからです。ﾏﾙﾁﾀｽｸ環境下で資源の共有化を有効に行うためにこのような構造をしています。現在のｼﾝｸﾞﾙﾀｽｸ下ではｽﾄﾗﾃｼﾞ、割り込み処理と連続して処理しても問題ありません。事実、DOSはｽﾄﾗﾃｼﾞ･ﾙｰﾁﾝ呼出後、すぐに割り込み処理を呼出します。

 ﾏﾙﾁﾀｽｸ下のｽﾄﾗﾃｼﾞ･ﾙｰﾁﾝは、ここで渡されるﾍｯﾀﾞｱﾄﾞﾚｽをFIFOに書き込み、処理を終了します。その後割り込み処理ﾙｰﾁﾝでFIFO内の要求を順次処理します。現在のDOSのｽﾄﾗﾃｼﾞ･ﾙｰﾁﾝでは、ES:BXのﾍｯﾀﾞ･ｱﾄﾞﾚｽを特定のﾒﾓﾘへ保存するだけです。ここでいうﾍｯﾀﾞ･ｱﾄﾞﾚｽとはﾘｸｴｽﾄ･ﾍｯﾀﾞ･ｱﾄﾞﾚｽのことで、ﾘｸｴｽﾄ･ﾍｯﾀﾞの詳細は4.3を参照して下さい。


割り込み処理ﾙｰﾁﾝ

4.5 割り込み処理ﾙｰﾁﾝ

ﾘｸｴｽﾄ･ﾍｯﾀﾞのｺﾏﾝﾄﾞ･ｺｰﾄﾞに対応する処理を実際に行います。通常、初期化処理(ｺﾏﾝﾄﾞ･ｺｰﾄﾞ=0)はﾌﾟﾛｸﾞﾗﾑの最後に置かれます。これは初期化が最初の1回しか実行しないので、初期化の最後でDOSにこのﾄﾞﾗｲﾊﾞの常駐ﾒﾓﾘ領域を返す時に、この初期化分のﾒﾓﾘを切り放し、ﾒﾓﾘを節約するためです。この処置によりﾒﾓﾘが有効に使用できます。

 以下に各ｺﾏﾝﾄﾞ･ｺｰﾄﾞに対する処理を示します。ﾊﾟﾗﾒｰﾀはﾘｸｴｽﾄ･ﾍｯﾀﾞに続くﾃﾞｰﾀで、以下のﾊﾟﾗﾒｰﾀ部の内容での記述順が下位側からとなります。

 ﾊﾟﾗﾒｰﾀにはDOSが設定してくる部分と割り込み処理ﾙｰﾁﾝが設定する部分が存在します。ここでは色分けで示します。
DOSが設定してくる部分
割り込み処理ﾙｰﾁﾝが設定する部分

■ 初期化
ｺﾏﾝﾄﾞ･ｺｰﾄﾞ : 0
対応するﾊｰﾄﾞｳｪｱ等の初期化を行います。必要ならば、起動行ﾎﾟｲﾝﾀが示すﾊﾟﾗﾒｰﾀを読み込み処理を行います。起動行ﾎﾟｲﾝﾀは、CONFIG.SYS等内の'DEVICE='の次を示しています。
■ ﾊﾟﾗﾒｰﾀ部の内容
ｻｲｽﾞ | 意味
DB | ﾕﾆｯﾄ数 (ﾌﾞﾛｯｸ型のみ、ｷｬﾗｸﾀ型は未使用)
DD | ﾄﾞﾗｲﾊﾞ終了ｱﾄﾞﾚｽ
DD | 起動行ﾎﾟｲﾝﾀ
 | BIOSﾊﾟﾗﾒｰﾀ･ﾌﾞﾛｯｸ･ｱﾄﾞﾚｽ (ﾌﾞﾛｯｸ型のみ、ｷｬﾗｸﾀ型は未使用)
DB | ﾄﾞﾗｲﾌﾞ番号 (ﾌﾞﾛｯｸ型のみ、0=A:, 1=B:, ･･･)
 | ﾒﾃﾞｨｱ識別子 (ﾌﾞﾛｯｸ型のみ)

■ ﾃﾞｨｽｸ交換検査
ｺﾏﾝﾄﾞ･ｺｰﾄﾞ : 1 ﾌﾞﾛｯｸ型のみ
対応するﾃﾞｨｽｸが交換されたかどうかを検査します。これは、DOS内のﾃﾞｨｽｸ･ﾊﾞｯﾌｧの有効/無効を意味します。
■ ﾊﾟﾗﾒｰﾀ部の内容
ｻｲｽﾞ | 意味
DB | ﾒﾃﾞｨｱ識別子
DB | 状態ｺｰﾄﾞ(1=交換されていない、0=不明、-1=交換された)

■ BIOSﾊﾟﾗﾒｰﾀ･ﾌﾞﾛｯｸ作成

ｺﾏﾝﾄﾞ･ｺｰﾄﾞ : 2 ﾌﾞﾛｯｸ型のみ
ﾃﾞｨｽｸ交換検査で交換された場合、以降の処理のために再度BPBを指定します。
■ ﾊﾟﾗﾒｰﾀ部の内容
ｻｲｽﾞ | 意味
DB | ﾒﾃﾞｨｱ識別子
DD | 転送ｱﾄﾞﾚｽ
 | BIOSﾊﾟﾗﾒｰﾀ･ﾌﾞﾛｯｸ･ｱﾄﾞﾚｽ

■ 入力・出力 (ｺﾏﾝﾄﾞ･ｺｰﾄﾞ: 3,4,8,9,12,16)

ｺﾏﾝﾄﾞ･ｺｰﾄﾞ : 3, 4, 8, 9, 12, 16
ﾃﾞｰﾀの入力、出力を行います。
■ ﾊﾟﾗﾒｰﾀ部の内容
ｻｲｽﾞ | 意味
DB | ﾒﾃﾞｨｱ識別子 (ﾌﾞﾛｯｸ型のみ)
DD | 転送ｱﾄﾞﾚｽ
DW | 転送ﾊﾞｲﾄ数 (ｷｬﾗｸﾀ型), 転送ｾｸﾀ数 (ﾌﾞﾛｯｸ型)
DW | 開始ｾｸﾀ番号 (ﾌﾞﾛｯｸ型のみ)

■ 先読み入力
ｺﾏﾝﾄﾞ･ｺｰﾄﾞ : 5 ｷｬﾗｸﾀ型のみ
通常、入力ﾊﾞｯﾌｧ内のﾃﾞｰﾀを返します。但し、ﾊﾞｯﾌｧ内からそのﾃﾞｰﾀを除きません。この時のﾃﾞｰﾀは、通常ｺﾏﾝﾄﾞｺｰﾄﾞ=4の入力で読み込まれます。先読み入力でﾃﾞｰﾀが存在した場合は、ﾃﾞｰﾀの設定以外にｽﾃｰﾀｽｺｰﾄﾞのﾋﾞｯﾄ1(BUSYﾋﾞｯﾄ)を0にします。存在しない場合は1に設定します。
■ ﾊﾟﾗﾒｰﾀ部の内容
ｻｲｽﾞ | 意味
DB | 先読みﾃﾞｰﾀ

■ 入力・出力状態取得

ｺﾏﾝﾄﾞ･ｺｰﾄﾞ : 6, 10 ｷｬﾗｸﾀ型のみ
入力状態、出力状態を取得します。入力ﾃﾞｰﾀが存在する場合や出力可能状態の場合は、ｽﾃｰﾀｽｺｰﾄﾞのﾋﾞｯﾄ1(BUSYﾋﾞｯﾄ)を0にします。入力ﾃﾞｰﾀがない場合や出力不可の場合はBUSYﾋﾞｯﾄ=1とします。

■ 入力・出力ﾊﾞｯﾌｧ初期化

ｺﾏﾝﾄﾞ･ｺｰﾄﾞ : 7, 11
入力、出力のﾊﾞｯﾌｧを初期化します。ﾊﾞｯﾌｧに残っているﾃﾞｰﾀは破棄(無視)されます。


BPB、DPBの構造

4.6 BPB、DPBの構造

■ BIOSﾊﾟﾗﾒｰﾀ･ﾌﾞﾛｯｸ(BPB)の構造
ｵﾌｾｯﾄ | ｻｲｽﾞ | 意味
+0 | DW | ﾊﾞｲﾄ数/1ｾｸﾀ
+2 | DB | ｾｸﾀ数/1ｱﾛｹｰｼｮﾝ
+3 | DW | 予約ｾｸﾀ数
+5 | DB | FAT個数
+6 | DW | ﾙｰﾄ･ﾃﾞｨﾚｸﾄﾘのｴﾝﾄﾘ数
+8 | DW | 全ｾｸﾀ数
+10 | DB | ﾒﾃﾞｨｱ識別子
+11 | DW | ｾｸﾀ数/1FAT
■ ﾃﾞｨｽｸ･ﾊﾟﾗﾒｰﾀ･ﾌﾞﾛｯｸ(DPB)の構造
ｵﾌｾｯﾄ | ｻｲｽﾞ | 意味
+0 | DB | 装置番号 (0=A:, 1=B:, ･･･)
+1 | DB | ﾃﾞﾊﾞｲｽﾄﾞﾗｲﾊﾞ内ﾕﾆｯﾄ番号
+2 | DW | ﾊﾞｲﾄ数/1ｾｸﾀ
+4 | DB | (ｾｸﾀ数/1ｸﾗｽﾀ)-1
+5 | DB | ｾｸﾀ数/1ｸﾗｽﾀを示す2nのnの値
+6 | DW | FAT先頭のｾｸﾀ番号
+8 | DB | FATの個数
+9 | DW | ﾙｰﾄﾃﾞｨﾚｸﾄﾘのｴﾝﾄﾘ数
+11 | DW | ﾃﾞｰﾀ部の先頭ｾｸﾀ番号
+13 | DW | 全ｸﾗｽﾀ数+1
+15 | DW | FATで占有するｾｸﾀ数
+17 | DW | ﾙｰﾄﾃﾞｨﾚｸﾄﾘの先頭ｾｸﾀ番号
+19 | DD | ﾃﾞﾊﾞｲｽﾄﾞﾗｲﾊﾞ先頭ｱﾄﾞﾚｽ
+23 | DB | ﾒﾃﾞｨｱ識別子
+24 | DB | DPB使用ﾌﾗｸﾞ (-1=未使用)
+25 | DD | 次のDPBの先頭ｱﾄﾞﾚｽ
+29 | DW | 最後に割り当てられたのｸﾗｽﾀ番号
+31 | DW | 未使用ｸﾗｽﾀ数


AH=00H

AH=00H ﾌﾟﾛｸﾞﾗﾑ終了

現在実行中のﾌﾟﾛｸﾞﾗﾑを終了します。ｵｰﾌﾟﾝされているﾌｧｲﾙは、子ﾌﾟﾛｾｽがｵｰﾌﾟﾝしたﾌｧｲﾙを含めすべてｸﾛｰｽﾞされます。この機能を正常に実行するには以下の制限があります。
■ | CSﾚｼﾞｽﾀはﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)のｾｸﾞﾒﾝﾄ値でなければなりません。
■ | 容量が変更されたﾌｧｲﾙは既にｸﾛｰｽﾞされていなければなりません。
【引数】
無し
【戻値】
無し (ﾌﾟﾛｸﾞﾗﾑが終了するので戻ってきません。)
注意: 過去のﾊﾞｰｼﾞｮﾝのMS-DOS用に作られたﾌﾟﾛｸﾞﾗﾑのための互換性を維持する目的の機能ですので、新規に作成する場合は4CHの終了ｺｰﾄﾞ付 きﾌﾟﾛｸﾞﾗﾑ終了を使用して下さい。


AH=0AH

AH=0AH 文字列入力

ｷｰ入力をEnterｷｰ入力まで、文字列ﾎﾟｲﾝﾀで示されるﾊﾞｯﾌｧへ取得します。指定した最大入力ﾊﾞｲﾄ数以上のｷｰ入力に対しては、ﾊﾞｯﾌｧへの取得は行われませんが、処理はEnterｷｰ入力まで継続されます。また、以下の機能ｷｰが入力された場合は、対応する処理を行います。
^C : | 親ﾌﾟﾛｾｽへ戻ります。(親ﾌﾟﾛｾｽの場合はﾌﾟﾛｸﾞﾗﾑ強制終了となります。)
^P : | 以降、標準出力をﾌﾟﾘﾝﾀへも同時に出力します。
^N : | 標準出力のﾌﾟﾘﾝﾀへの出力を中止(^Pの解除)します。
文字列ﾎﾟｲﾝﾀが示すﾒﾓﾘ上には、次の形式で領域を確保します。先頭の最大入力ﾊﾞｲﾄ数は、この機能呼び出し前に設定します。
■ ｱｾﾝﾌﾞﾘ言語表記による入力ﾊﾞｯﾌｧの構造
 DB  n        ;
許可する最大入力ﾊﾞｲﾄ数を指定します。
 DB  ?        ;
この機能終了時、OSにより、実際の入力ﾊﾞｲﾄ数が設定されます。
 DB  n DUP(?) ;
この機能終了時、OSにより、実際に入力された文字列が設定されます。
【引数】
DS:DX 文字列ﾎﾟｲﾝﾀ
【戻値】
無し
注意: 基本的に過去との互換性を保つための機能ですので、新規に作成する場合は3FHのﾊﾝﾄﾞﾙによるﾌｧｲﾙ読み込みで、ﾃﾞﾌｫﾙﾄのﾊﾝﾄﾞﾙ番号0(ｷｰﾎﾞｰﾄﾞ)を使用して下さい。


AH=0BH

AH=0BH ｷｰ入力状態取得

ｷｰの入力状態(入力の有無)を取得します。実際には、ｷｰ入力ﾊﾞｯﾌｧの入力状態を取得します。また、以下の機能ｷｰが入力された場合は、対応する処理を行います。
^C : | 親ﾌﾟﾛｾｽへ戻ります。(親ﾌﾟﾛｾｽの場合はﾌﾟﾛｸﾞﾗﾑ強制終了となります。)
^P : | 以降、標準出力をﾌﾟﾘﾝﾀへも同時に出力します。
^N : | 標準出力のﾌﾟﾘﾝﾀへの出力を中止(^Pの解除)します。
【引数】
無し
【戻値】
AL | 00H | 無し
 | 0FFH | 有り
【参考】
06H CONの入出力


AH=0CH

AH=0CH ｷｰｲﾝ･ﾊﾞｯﾌｧ解消後ｷｰ入力

ｷｰ入力ﾊﾞｯﾌｧを解消(ｸﾘｱ)後、ALで指定された各DOSｺｰﾙの処理を行います。この機能はﾌﾟﾛｸﾞﾗﾑ処理とｷｰ入力の同期に使用されます。ﾌﾟﾛｸﾞﾗﾑ処理の都合で、以前のｷｰ入力が残っていた場合に次の処理への影響を避けるために使用します。これは、ｷｰ入力が実際にはｷｰｲﾝ･ﾊﾞｯﾌｧにﾊﾞｯﾌｧﾘﾝｸﾞされていることによります。

 引数DS:DXはAL=10の文字列入力機能が指定された場合のみ必要となります。引数ALの値が規定のDOSｺｰﾙ番号以外の場合は、ｷｰｲﾝ･ﾊﾞｯﾌｧのｸﾘｱのみを実行します。戻値はｷｰｲﾝ･ﾊﾞｯﾌｧのｸﾘｱのみを行った場合を記述しており、規定のDOSｺｰﾙ機能を行った場合は、その機能の戻値に従います。
【引数】
DS:DX | 文字列ﾎﾟｲﾝﾀ (AL=0AH時のみ必要、0AH参照)
AL | ﾊﾞｯﾌｧｸﾘｱ後の実行DOSｺｰﾙ番号 (01H, 06H, 07H, 08H, 0AH)
【戻値】
AL | 00H | ｷｰ入力無し
 | ≠00H | ｷｰ入力有り (入力された文字ｺｰﾄﾞ)


AH=0DH

AH=0DH ﾃﾞｨｽｸ･ﾊﾞｯﾌｧ解消

ﾃﾞｨｽｸ･ﾊﾞｯﾌｧ上のﾃﾞｰﾀをﾌｧｲﾙに書き込み、ﾃﾞｨｽｸ･ﾊﾞｯﾌｧを解消(ｸﾘｱ)します。ﾌｧｲﾙのｸﾛｰｽﾞは行いませんので、完全にﾌｧｲﾙの書き込みを終了させるには、別にﾌｧｲﾙのｸﾛｰｽﾞ処理が必要となります。

 この機能はﾃﾞｨｽｸ･ﾊﾞｯﾌｧ上に残っている未書き込みﾃﾞｰﾀをﾃﾞｨｽｸに書き込み、次の操作に備えるために使用します。もし、ﾌｧｲﾙの使用終了時であれば、ﾌｧｲﾙのｸﾛｰｽﾞ処理で未書き込みﾃﾞｰﾀの書き込みも行われますので、特にこの機能を先行して行う必要はありません。

 通常、ﾃﾞｨｽｸ･ｼｽﾃﾑはﾃﾞｨｽｸに対するｱｸｾｽがﾃﾞｰﾀ･ﾊﾞｯﾌｧを介して行われ、このﾊﾞｯﾌｧをﾃﾞｨｽｸ･ﾊﾞｯﾌｧと呼びます。これはﾃﾞｨｽｸがﾌﾞﾛｯｸ型ﾃﾞﾊﾞｲｽというある一定量の単位でしかｱｸｾｽができないために、例えば1ﾊﾞｲﾄのｱｸｾｽでも1024ﾊﾞｲﾄ分のｱｸｾｽを行ってしまうことによるｵｰﾊﾞｰﾍｯﾄﾞに起因します。このｵｰﾊﾞｰﾍｯﾄﾞを防ぐためにﾃﾞｨｽｸ･ﾊﾞｯﾌｧでﾌﾞﾛｯｷﾝｸﾞ、ﾃﾞﾌﾞﾛｯｷﾝｸﾞを行っています。
【引数】
無し
【戻値】
無し
【参考】
10H | FCBによるﾌｧｲﾙ･ｸﾛｰｽﾞ
3EH | ﾊﾝﾄﾞﾙによるﾌｧｲﾙ･ｸﾛｰｽﾞ


AH=0EH

AH=0EH ｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞ指定

ｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞを設定します。戻値の論理ﾄﾞﾗｲﾌﾞ数はLASTDRIVE指定の影響を受け、例えば5以下の場合は常に5となります。この場合のように、実際に接続されているﾄﾞﾗｲﾌﾞ数とは異なる場合があります。ﾄﾞﾗｲﾌﾞ番号は0から始まり、0がA:、1がB:ﾄﾞﾗｲﾌﾞのように対応しています。存在しないﾄﾞﾗｲﾌﾞを指定した場合、標準のｴﾗｰ処理ﾊﾝﾄﾞﾗではｴﾗｰ表示となります。
【引数】
DL ﾄﾞﾗｲﾌﾞ番号 (A:=0, B:=1, ･･･)
【戻値】
AL 論理ﾄﾞﾗｲﾌﾞ数
【参考】
19H ｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞ番号取得


AH=0FH

AH=0FH FCBによるﾌｧｲﾙ･ｵｰﾌﾟﾝ

ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘのFCBで示される既に存在するﾌｧｲﾙをｵｰﾌﾟﾝします。存在しないﾌｧｲﾙを対象とする場合は、16HのFCBによるﾌｧｲﾙ作成を行います。
【引数】
DS:DX ｵｰﾌﾟﾝされていないFCBﾎﾟｲﾝﾀ
【戻値】
AL | 00H | 成功
 | 0FFH | ﾌｧｲﾙが存在しない、ｼｽﾃﾑﾌｧｲﾙ、隠しﾌｧｲﾙ
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は3DHのﾊﾝﾄﾞﾙによるﾌｧｲﾙ･ｵｰﾌﾟﾝを使用して下さい。


AH=01H

AH=01H ｷｰﾎﾞｰﾄﾞ入力

標準入力(通常ｷｰﾎﾞｰﾄﾞ)から1ﾊﾞｲﾄの文字ｺｰﾄﾞを取得します。ｷｰ入力は割り込みによって処理され、ﾊﾞｯﾌｧﾘﾝｸﾞされています。既にﾊﾞｯﾌｧにｷｰ入力が存在する場合はすぐに、無い場合はｷｰ入力を待って、ｷｰ入力を取得します。この時、標準出力(通常CRT)にｷｰ入力文字を表示(ｴｺｰ･ﾊﾞｯｸ)します。また、以下の機能ｷｰが入力された場合は、対応する処理を行います。
^C : | 親ﾌﾟﾛｾｽへ戻ります。(親ﾌﾟﾛｾｽの場合はﾌﾟﾛｸﾞﾗﾑ強制終了となります。)
^P : | 以降、標準出力をﾌﾟﾘﾝﾀへも同時に出力します。
^N : | 標準出力のﾌﾟﾘﾝﾀへの出力を中止(^Pの解除)します。
【引数】
無し
【戻値】
AL 入力された文字ｺｰﾄﾞ
注意: 基本的に過去との互換性を保つための機能ですので、新規に作成する場合は極力3FHのﾊﾝﾄﾞﾙによるﾌｧｲﾙ読み込みで、ﾃﾞﾌｫﾙﾄのﾊﾝﾄﾞﾙ番号0(ｷｰﾎﾞｰﾄﾞ)を使用して下さい。
【参考】
06H | CONの入出力
07H | ｷｰﾎﾞｰﾄﾞ入力 (機能ｷｰ無し)
08H | ｷｰﾎﾞｰﾄﾞ入力 (機能ｷｰ付き)


AH=1AH

AH=1AH ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ(DTA)設定

14H, 15H, 21H, 22H, 27H, 28HのFCBによるﾌｧｲﾙ操作、11H, 12H, 4EH, 4FHのﾃﾞｨﾚｸﾄﾘ検索で使用するﾊﾞｯﾌｧのﾒﾓﾘ･ｱﾄﾞﾚｽを設定します。このﾊﾞｯﾌｧはｾｸﾞﾒﾝﾄ境界を含んではいけません。ﾃﾞﾌｫﾙﾄのDTAはﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)内のｵﾌｾｯﾄ80Hで、標準ではDTAからの128ﾊﾞｲﾄがﾊﾞｯﾌｧとして使用されます。
【引数】
DS:DX ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ
【戻値】
無し
注意: 過去との互換性を保つための機能ですので、新規に作成する場合にFCBを使用するﾌｧｲﾙ操作を使用しなければ、4EH,4FHのﾃﾞｨﾚｸﾄﾘ検索を除いて本機能を使用する必要がほとんど無くなります。


AH=1BH

AH=1BH ｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞの構成取得

ｶﾚﾝﾄ(現在選択されている)ﾄﾞﾗｲﾌﾞの構成を取得します。戻値のALが0FFHの場合は、この機能がｴﾗｰとなったことを意味します。
【引数】
無し
【戻値】
DS:BX | ﾒﾃﾞｨｱ識別子のｱﾄﾞﾚｽ
DX | ｸﾗｽﾀ数/1ﾄﾞﾗｲﾌﾞ
CX | ﾊﾞｲﾄ数/1ｾｸﾀ
AL | ≠0FFH | ｾｸﾀ数/1ｸﾗｽﾀ
 | 0FFH | ｴﾗｰ
注意: 過去との互換性を保つための機能ですので、新規に作成する場合には36Hのﾄﾞﾗｲﾌﾞの残容量取得を使用して下さい。DS:BXで示されるﾒﾃﾞｨｱ識別子の内容は機種等で異なりますので、現在ではほとんど意味を持ちません。
【参考】
1CH ﾄﾞﾗｲﾌﾞの構成取得


AH=1CH

AH=1CH ﾄﾞﾗｲﾌﾞの構成取得

DLで指定したﾄﾞﾗｲﾌﾞの構成を取得します。引数のﾄﾞﾗｲﾌﾞ番号は0がｶﾚﾝﾄ、1がA:、2がB:ﾄﾞﾗｲﾌﾞというようになります。戻値のALが0FFHの場合は無効なﾄﾞﾗｲﾌﾞ指定という意味です。
【引数】
DL ﾄﾞﾗｲﾌﾞ番号 (ｶﾚﾝﾄ=0, A:=1, B:=2, ･･･)
【戻値】
DS:BX | ﾒﾃﾞｨｱ識別子のｱﾄﾞﾚｽ
DX | ｸﾗｽﾀ数/1ﾄﾞﾗｲﾌﾞ
CX | ﾊﾞｲﾄ数/1ｾｸﾀ
AL | ｾｸﾀ数/1ｸﾗｽﾀ
注意: 過去との互換性を保つための機能ですので、新規に作成する場合には36Hのﾄﾞﾗｲﾌﾞの残容量取得を使用して下さい。DS:BXで示されるﾒﾃﾞｨｱ識別子の内容は機種等で異なりますので、現在ではほとんど意味を持ちません。
【参考】
1BH ｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞの構成取得


AH=1FH

AH=1FH ﾃﾞﾌｫﾙﾄ･ﾃﾞｨｽｸ･ﾊﾟﾗﾒｰﾀ･ﾌﾞﾛｯｸ(DPB)取得

ｶﾚﾝﾄ･ﾃﾞｨｽｸのﾃﾞｨｽｸ･ﾊﾟﾗﾒｰﾀ･ﾌﾞﾛｯｸ(DPB)を取得します。
【引数】
無し
【戻値】
DS:BX DPB構造体のﾎﾟｲﾝﾀ
AL
00H | 正常終了
0FFH | ｴﾗｰ


AH=02H

AH=02H 標準出力へ文字表示

文字ｺｰﾄﾞで指定された文字を標準出力(通常CRT)に出力します。漢字等の2ﾊﾞｲﾄ系ｺｰﾄﾞは、上位ﾊﾞｲﾄ、下位ﾊﾞｲﾄの順で2回に分けて実行します。また、以下のｺｰﾄﾞが入力された場合は、対応する処理を行います。
^C : | 親ﾌﾟﾛｾｽへ戻ります。(親ﾌﾟﾛｾｽの場合はﾌﾟﾛｸﾞﾗﾑ強制終了となります。)
^P : | 以降、標準出力をﾌﾟﾘﾝﾀへも同時に出力します。
^N : | 標準出力のﾌﾟﾘﾝﾀへの出力を中止(^Pの解除)します。
^S : | 標準出力を一時停止します。(他のｷｰ入力で解除します。)
【引数】
DL 文字ｺｰﾄﾞ
【戻値】
無し
注意: 基本的に過去との互換性を保つための機能ですので、新規に作成する場合は極力40Hのﾊﾝﾄﾞﾙによるﾌｧｲﾙ書き込みで、ﾃﾞﾌｫﾙﾄのﾊﾝﾄﾞﾙ番号1(CRT)を使用して下さい。
【参考】
AH=06H CONの入出力


AH=2AH

AH=2AH 現在日付取得

現在の日付を取得します。戻り値はすべて2進数です。
【引数】
無し
【戻値】
CX | 年 | (実際に取り得る値: 1980～2099)
DH | 月 | (実際に取り得る値: 1～12)
DL | 日 | (実際に取り得る値: 1～31)
AL | 曜日 | (0=日,1=月,2=火,･･･,6=土)
【参考】
2BH | 現在日付設定
2CH | 現在時刻取得
2DH | 現在時刻設定


AH=2BH

AH=2BH 現在日付設定

日付を設定します。引数はすべて2進数です。
【引数】
CX | 年 | (指定可能な値: 1980～2099)
DH | 月 | (指定可能な値: 1～12)
DL | 日 | (指定可能な値: 1～31)
【戻値】
AL
00H | 有効 (正常終了)
0FFH | 無効 (中止終了)
【参考】
2AH | 現在日付取得
2CH | 現在時刻取得
2DH | 現在時刻設定


AH=2CH

AH=2CH 現在時刻取得

現在の時刻を取得します。戻り値はすべて2進数です。
【引数】
無し
【戻値】
CH | 時 | (0～23)
CL | 分 | (0～59)
DH | 秒 | (0～59)
【参考】
2AH | 現在日付取得
2BH | 現在日付設定
2DH | 現在時刻設定


AH=2DH

AH=2DH 現在時刻設定

時刻を設定します。引数はすべて2進数です。
【引数】
CH | 時 | (指定可能な値: 0～23)
CL | 分 | (指定可能な値: 0～59)
DH | 秒 | (指定可能な値: 0～59)
DL | 0 | 必ず00Hを設定
【戻値】
AL
00H | 有効 (正常終了)
0FFH | 無効 (中止終了)
【参考】
2AH | 現在日付取得
2BH | 現在日付設定
2CH | 現在時刻取得


AH=2EH

AH=2EH ﾍﾞﾘﾌｧｲ指定/解除

ﾃﾞｨｽｸへ書き込み時のﾍﾞﾘﾌｧｲの有無を指定します。一般的に、ﾍﾞﾘﾌｧｲすると信頼性が増しますが、速度が低下します。
【引数】
AL | 0 | 解除 (ﾍﾞﾘﾌｧｲ無し)
 | 1 | 設定 (ﾍﾞﾘﾌｧｲ有り)
DL | 0 | 必ず00Hを設定
【戻値】
無し
【参考】
54H ﾍﾞﾘﾌｧｲ状態取得


AH=2FH

AH=2FH ﾌﾟﾛｸﾞﾗﾑ

14H, 15H, 21H, 22H, 27H, 28HのFCBによるﾌｧｲﾙ操作、11H, 12H, 4EH, 4FHのﾃﾞｨﾚｸﾄﾘ検索で使用するﾊﾞｯﾌｧのﾒﾓﾘ･ｱﾄﾞﾚｽを取得します。ﾃﾞﾌｫﾙﾄのDTAはﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)内のｵﾌｾｯﾄ80Hで、標準でDTAからの128ﾊﾞｲﾄがﾊﾞｯﾌｧとして使用されます。
【引数】
無し
【戻値】
ES:BX ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ
注意: 過去との互換性を保つための機能ですので、新規に作成する場合にFCBを使用するﾌｧｲﾙ操作を使用しなければ、4EH, 4FHのﾃﾞｨﾚｸﾄﾘ検索を除いて本機能を使用する必要がほとんどなくなります。


AH=03H

AH=03H AUXから1ﾊﾞｲﾄ入力

補助入力(通常RS-232C)から1ﾊﾞｲﾄのﾃﾞｰﾀを取得します。また、以下のｺｰﾄﾞが入力された場合は、対応する処理を行います。
^C : 親ﾌﾟﾛｾｽへ戻ります。(親ﾌﾟﾛｾｽの場合はﾌﾟﾛｸﾞﾗﾑ強制終了となります。)
【引数】
無し
【戻値】
AL 入力ﾃﾞｰﾀ
注意: 基本的に過去との互換性を保つための機能ですので、新規に作成する場合は極力3FHのﾊﾝﾄﾞﾙによるﾌｧｲﾙ読み込みで、ﾃﾞﾌｫﾙﾄのﾊﾝﾄﾞﾙ番号3(補助入出力)を使用して下さい。


AH=3AH

AH=3AH ﾃﾞｨﾚｸﾄﾘ削除

文字列ﾎﾟｲﾝﾀで示されたｻﾌﾞﾃﾞｨﾚｸﾄﾘを削除します。このｻﾌﾞﾃﾞｨﾚｸﾄﾘ内にﾌｧｲﾙが存在する場合は、ｴﾗｰとなります。また、ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘ、ﾙｰﾄ･ﾃﾞｨﾚｸﾄﾘは削除できません。戻値のALはCF=1のｴﾗｰ時のみの意味です。
【引数】
DS:DX 文字列ﾎﾟｲﾝﾀ (ﾃﾞｨﾚｸﾄﾘ名を含むﾊﾟｽ名、ASCIZ)
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AL ｴﾗｰ時
03H | ﾊﾟｽが無効か、存在しない
05H | ｻﾌﾞﾃﾞｨﾚｸﾄﾘ内にﾌｧｲﾙが存在か、ﾙｰﾄ･ﾃﾞｨﾚｸﾄﾘ
10H | ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘ


AH=3BH

AH=3BH ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘ設定

文字列ﾎﾟｲﾝﾀで示されるﾃﾞｨﾚｸﾄﾘをｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘとします。文字列ﾎﾟｲﾝﾀで示されるﾃﾞｨﾚｸﾄﾘ名は64ﾊﾞｲﾄ以内とします。戻値のALはCF=1のｴﾗｰ時のみの意味です。
【引数】
DS:DX 文字列ﾎﾟｲﾝﾀ (ﾃﾞｨﾚｸﾄﾘ名を含むﾊﾟｽ名、ASCIZ)
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AL ｴﾗｰ時
03H ﾊﾟｽが無効か、存在しない
【参考】
47H ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘ取得


AH=3CH

AH=3CH ﾊﾝﾄﾞﾙによるﾌｧｲﾙ作成

文字列ﾎﾟｲﾝﾀで示されたﾌｧｲﾙを属性に従った状態で、ﾊﾝﾄﾞﾙ操作が可能な形式で作成します。文字列ﾎﾟｲﾝﾀで示されたﾌｧｲﾙ名と同じ名前のﾌｧｲﾙが存在した場合、以前のﾌｧｲﾙは消去されます。類似機能の5BHではｴﾗｰとなります。
【引数】
DS:DX 文字列ﾎﾟｲﾝﾀ (ﾌｧｲﾙ名を含むﾊﾟｽ名、ASCIZ)
CX ﾌｧｲﾙ属性
注: 以下のﾋﾞｯﾄ以外は常に0固定
ﾋﾞｯﾄ | 1の意味
5 | ｱｰｶｲﾌﾞ(保存)ﾌｧｲﾙ (ﾊﾞｯｸｱｯﾌﾟで消去)
4 | ｻﾌﾞﾃﾞｨﾚｸﾄﾘ名
3 | ﾎﾞﾘｭｰﾑ名 (ﾙｰﾄ･ﾃﾞｨﾚｸﾄﾘ上で1つのみ)
2 | ｼｽﾃﾑ･ﾌｧｲﾙ
1 | 隠しﾌｧｲﾙ
0 | 読み出し専用
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX | 成功時 | ﾊﾝﾄﾞﾙ番号
ｴﾗｰ時
03H | 無効なﾊﾟｽ、ﾌｧｲﾙ名
04H | ｵｰﾌﾟﾝされているﾌｧｲﾙが多すぎる
05H | ﾃﾞｨﾚｸﾄﾘ、ﾎﾞﾘｭｰﾑ指定、保護されているﾌｧｲﾙと同一ﾌｧｲﾙ名


AH=3DH

AH=3DH ﾊﾝﾄﾞﾙによるﾌｧｲﾙ･ｵｰﾌﾟﾝ

文字列ﾎﾟｲﾝﾀで示される既に存在するﾌｧｲﾙをｵｰﾌﾟﾝします。存在しないﾌｧｲﾙを対象とする場合は、3CHのﾊﾝﾄﾞﾙによるﾌｧｲﾙ作成を行います。ｲﾝﾍﾘｯﾄﾞ指定は、4BHのﾌﾟﾛｸﾞﾗﾑのﾛｰﾄﾞと実行で作成された子ﾌﾟﾛｾｽに自動的にﾌｧｲﾙ情報を引き渡すかを指定します。ｼｪｱﾘﾝｸﾞ指定では、複数ﾌﾟﾛｾｽが単一ﾌｧｲﾙをｱｸｾｽする時の排他処理を行います。
【引数】
DS:DX 文字列ﾎﾟｲﾝﾀ (ﾌｧｲﾙ名を含むﾊﾟｽ名、ASCIZ)
AL ﾌｧｲﾙ制御ｺｰﾄﾞ
ﾋﾞｯﾄ 意味
7 ｲﾝﾍﾘｯﾄﾞ指定
1 | 子ﾌﾟﾛｾｽに引き渡す
0 | 子ﾌﾟﾛｾｽに引き渡さない
6～4 ｼｪｱﾘﾝｸﾞ指定
100 | 読み書き許可
011 | 読み出し禁止
010 | 書き込み禁止
001 | 読み書き禁止
000 | 互換 (ｼｪｱﾘﾝｸﾞ無し)
3～0 ｱｸｾｽ指定
0010 | 読み書き両方
0001 | 書き込みのみ
0000 | 読み出しのみ
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX | 成功時 | ﾊﾝﾄﾞﾙ番号
ｴﾗｰ時
01H | 無効な機能番号、ｺｰﾄﾞ
02H | 無効なﾌｧｲﾙ名
03H | 無効なﾊﾟｽ名
04H | ｵｰﾌﾟﾝされているﾌｧｲﾙが多すぎる
05H | ﾃﾞｨﾚｸﾄﾘ、ﾎﾞﾘｭｰﾑ指定、ﾘｰﾄﾞ･ｵﾝﾘ･ﾌｧｲﾙに書き込みを指定
0CH | 無効なｱｸｾｽ指定ｺｰﾄﾞ


AH=3EH

AH=3EH ﾊﾝﾄﾞﾙによるﾌｧｲﾙ･ｸﾛｰｽﾞ

ﾊﾝﾄﾞﾙ番号で示されたﾌｧｲﾙをｸﾛｰｽﾞします。ﾌｧｲﾙの内容に変化が有った場合は必ずｸﾛｰｽﾞを行います。怠ると、異常な内容のﾌｧｲﾙとなる場合があります。戻値のAXはCF=1のｴﾗｰ時のみの意味です。
【引数】
BX ﾊﾝﾄﾞﾙ番号
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX ｴﾗｰ時
06H 現在ｵｰﾌﾟﾝされていないﾊﾝﾄﾞﾙ番号


AH=3FH

AH=3FH ﾊﾝﾄﾞﾙによるﾌｧｲﾙ読み込み

ﾊﾝﾄﾞﾙ番号で示されたﾌｧｲﾙから指定ﾊﾞｲﾄ数のﾃﾞｰﾀをﾊﾞｯﾌｧへ読み出します。この時のﾌｧｲﾙの読み出し位置は、その時のﾌｧｲﾙ･ﾎﾟｲﾝﾀの位置からです。ﾌｧｲﾙ･ﾎﾟｲﾝﾀは処理終了後、次のﾃﾞｰﾀ位置に設定されます。戻値の実際に読み出されたﾊﾞｲﾄ数が指定ﾊﾞｲﾄ数より小さい場合は、ﾌｧｲﾙの終了を意味します。標準入力(ｷｰﾎﾞｰﾄﾞ)を指定すると、Enterｷｰ入力までの入力となり、ﾘﾀﾞｲﾚｸﾄが有効となります。
【引数】
DS:DX | ﾊﾞｯﾌｧ･ﾎﾟｲﾝﾀ
CX | ﾊﾞｲﾄ数
BX | ﾊﾝﾄﾞﾙ番号
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX | 成功時 | 実際に読み込まれたﾊﾞｲﾄ数
ｴﾗｰ時
05H | ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはﾘｰﾄﾞ不可
06H | 指定ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはｵｰﾌﾟﾝされていない
【参考】
42H ﾌｧｲﾙ･ﾎﾟｲﾝﾀ移動


AH=04H

AH=04H AUXへ1ﾊﾞｲﾄ出力

補助出力(通常RS-232C)へ1ﾊﾞｲﾄのﾃﾞｰﾀを出力します。また、以下のｺｰﾄﾞが入力された場合は、対応する処理を行います。
^C : 親ﾌﾟﾛｾｽへ戻ります。(親ﾌﾟﾛｾｽの場合はﾌﾟﾛｸﾞﾗﾑ強制終了となります。)
【引数】
DL 1ﾊﾞｲﾄﾃﾞｰﾀ
【戻値】
無し
注意: 基本的に過去との互換性を保つための機能ですので、新規に作成する場合は極力40Hのﾊﾝﾄﾞﾙによるﾌｧｲﾙ書き込みで、ﾃﾞﾌｫﾙﾄのﾊﾝﾄﾞﾙ番号3(補助入出力)を使用して下さい。


AH=4AH

AH=4AH ﾒﾓﾘ領域変更

引数で示されたﾒﾓﾘ領域を指定容量(ﾊﾟﾗｸﾞﾗﾌ数)に変更します。変更はﾒﾓﾘ領域を拡大、縮小とも可能です。この引数の値はﾒﾓﾘ管理ﾎﾟｲﾝﾀではなく、本来のﾌﾟﾛｾｽ管理ﾎﾟｲﾝﾀとなります。48Hで割り当てたﾒﾓﾘの場合は、戻値の値が該当します。COM形式の実行ﾌﾟﾛｸﾞﾗﾑでは、実行時に全ﾒﾓﾘを割り当てるために、子ﾌﾟﾛｾｽの実行等ができません。この様な場合、この機能でﾒﾓﾘ領域を縮小して空きﾒﾓﾘ領域を作成します。
【引数】
ES | 変更するﾒﾓﾘ領域先頭ｾｸﾞﾒﾝﾄ値 (48H参照)
BX | 容量 (ﾊﾟﾗｸﾞﾗﾌ数)
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
BX | ｴﾗｰ時 | 割り当て可能最大ﾊﾟﾗｸﾞﾗﾌ数
AX | 成功時 | 確保したﾒﾓﾘの先頭ｾｸﾞﾒﾝﾄ値
ｴﾗｰ時
07H | ﾒﾓﾘ管理異常
08H | 空きﾒﾓﾘ不足
09H | 不当なﾒﾓﾘ領域


AH=4BH

AH=4BH ﾌﾟﾛｸﾞﾗﾑのﾛｰﾄﾞと実行

ﾌﾟﾛｸﾞﾗﾑのﾛｰﾄﾞと実行機能には次の機能があります。
AH=4BH:AL=00H
ﾌﾟﾛｸﾞﾗﾑのﾛｰﾄﾞと実行
AH=4BH:AL=01H
ﾌﾟﾛｸﾞﾗﾑのﾛｰﾄﾞ
AH=4BH:AL=03H
ﾌﾟﾛｸﾞﾗﾑのｵｰﾊﾞｰﾚｲ


AH=4BH:AL=00H

AH=4BH:AL=00H ﾌﾟﾛｸﾞﾗﾑのﾛｰﾄﾞと実行

文字列ﾎﾟｲﾝﾀで示されるﾌﾟﾛｸﾞﾗﾑをﾛｰﾄﾞ/実行します。
注意: 成功時、BX, CX, DX, DI, SI, BP, SP, DS, ES, SSﾚｼﾞｽﾀは破壊されます。
引数ES:BXのﾊﾟﾗﾒｰﾀ部ﾎﾟｲﾝﾀで示されるﾒﾓﾘ上のﾊﾟﾗﾒｰﾀの構造を次に示します。
■ ｱｾﾝﾌﾞﾘ言語表記によるﾊﾟﾗﾒｰﾀ部の構造
 DW  ? ;
元となる環境領域ｾｸﾞﾒﾝﾄ値 (0=親と同じ)
 DD  ? ;
ｺﾏﾝﾄﾞ行のｾｸﾞﾒﾝﾄ、ｵﾌｾｯﾄ値
 DD  ? ;
PSPｾｸﾞﾒﾝﾄ値、ｵﾌｾｯﾄ値=5CH (第1FCBのｾｸﾞﾒﾝﾄ、ｵﾌｾｯﾄ)
 DD  ? ;
PSPｾｸﾞﾒﾝﾄ値、ｵﾌｾｯﾄ値=6CH (第2FCBのｾｸﾞﾒﾝﾄ、ｵﾌｾｯﾄ)

【引数】
DS:DX | 文字列ﾎﾟｲﾝﾀ (ﾌｧｲﾙ名を含むﾊﾟｽ名、ASCIZ)
ES:BX | ﾊﾟﾗﾒｰﾀ部ﾎﾟｲﾝﾀ
AL | 0
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
BX | ｴﾗｰ時 | 割り当て可能最大ﾊﾟﾗｸﾞﾗﾌ数
AX | 成功時 | 確保したﾒﾓﾘの先頭ｾｸﾞﾒﾝﾄ値
ｴﾗｰ時
01H | 引数のALが0以外
02H | 指定ﾊﾟｽ、ﾌｧｲﾙが無効か存在しない
04H | ｵｰﾌﾟﾝされているﾌｧｲﾙが多すぎる
05H | ｱｸｾｽが拒否
08H | 空きﾒﾓﾘ不足
0AH | 環境領域が32Kﾊﾞｲﾄ超過
0BH | 指定EXEﾌｧｲﾙのﾌｫｰﾏｯﾄ異常


AH=4BH:AL=01H

AH=4BH:AL=01H ﾌﾟﾛｸﾞﾗﾑのﾛｰﾄﾞ

文字列ﾎﾟｲﾝﾀで示されるﾌﾟﾛｸﾞﾗﾑをﾛｰﾄﾞします。
注意: 成功時、BX, CX, DX, DI, SI, BP, SP, DS, ES, SSﾚｼﾞｽﾀは破壊されます。
引数ES:BXのﾊﾟﾗﾒｰﾀ部ﾎﾟｲﾝﾀで示されるﾒﾓﾘ上のﾊﾟﾗﾒｰﾀの構造を次に示します。
■ ｱｾﾝﾌﾞﾘ言語表記によるﾊﾟﾗﾒｰﾀ部の構造
 DW  ? ;
元となる環境領域ｾｸﾞﾒﾝﾄ値 (0=親と同じ)
 DD  ? ;
ｺﾏﾝﾄﾞ行のｾｸﾞﾒﾝﾄ、ｵﾌｾｯﾄ値
 DD  ? ;
PSPｾｸﾞﾒﾝﾄ値、ｵﾌｾｯﾄ値=5CH (第1FCBのｾｸﾞﾒﾝﾄ、ｵﾌｾｯﾄ)
 DD  ? ;
PSPｾｸﾞﾒﾝﾄ値、ｵﾌｾｯﾄ値=6CH (第2FCBのｾｸﾞﾒﾝﾄ、ｵﾌｾｯﾄ)

【引数】
DS:DX | 文字列ﾎﾟｲﾝﾀ (ﾌｧｲﾙ名を含むﾊﾟｽ名、ASCIZ)
ES:BX | ﾊﾟﾗﾒｰﾀ部ﾎﾟｲﾝﾀ
AL | 1
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
BX | ｴﾗｰ時 | 割り当て可能最大ﾊﾟﾗｸﾞﾗﾌ数
AX | 成功時 | 確保したﾒﾓﾘの先頭ｾｸﾞﾒﾝﾄ値
ｴﾗｰ時
01H | 引数のALが1以外
02H | 指定ﾊﾟｽ、ﾌｧｲﾙが無効か存在しない
04H | ｵｰﾌﾟﾝされているﾌｧｲﾙが多すぎる
05H | ｱｸｾｽが拒否
08H | 空きﾒﾓﾘ不足
0AH | 環境領域が32Kﾊﾞｲﾄ超過
0BH | 指定EXEﾌｧｲﾙのﾌｫｰﾏｯﾄ異常


AH=4BH:AL=03H

AH=4BH:AL=03H ﾌﾟﾛｸﾞﾗﾑのｵｰﾊﾞｰﾚｲ

文字列ﾎﾟｲﾝﾀで示されるﾌﾟﾛｸﾞﾗﾑをﾛｰﾄﾞ(ｵｰﾊﾞｰﾚｲ)します。ｵｰﾊﾞｰﾚｲのため、ﾒﾓﾘは既に確保されているとみなしなします。
注意: 成功時、BX, CX, DX, DI, SI, BP, SP, DS, ES, SSﾚｼﾞｽﾀは破壊されます。
引数ES:BXのﾊﾟﾗﾒｰﾀ部ﾎﾟｲﾝﾀで示されるﾒﾓﾘ上のﾊﾟﾗﾒｰﾀの構造を次に示します。
■ ｱｾﾝﾌﾞﾘ言語表記によるﾊﾟﾗﾒｰﾀ部の構造
 DW  ? ;
ﾛｰﾄﾞするﾒﾓﾘのｾｸﾞﾒﾝﾄ値
 DW  ? ;
ﾘﾛｹｰｼｮﾝ情報 (通常ﾛｰﾄﾞするﾒﾓﾘのｾｸﾞﾒﾝﾄ値)

【引数】
DS:DX | 文字列ﾎﾟｲﾝﾀ (ﾌｧｲﾙ名を含むﾊﾟｽ名、ASCIZ)
ES:BX | ﾊﾟﾗﾒｰﾀ部ﾎﾟｲﾝﾀ
AL | 3
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
BX | ｴﾗｰ時 | 割り当て可能最大ﾊﾟﾗｸﾞﾗﾌ数
AX | 成功時 | 確保したﾒﾓﾘの先頭ｾｸﾞﾒﾝﾄ値
ｴﾗｰ時
01H | 引数のALが3以外
02H | 指定ﾊﾟｽ、ﾌｧｲﾙが無効か存在しない
04H | ｵｰﾌﾟﾝされているﾌｧｲﾙが多すぎる
05H | ｱｸｾｽが拒否
0AH | 環境領域が32Kﾊﾞｲﾄ超過


AH=4CH

AH=4CH 終了ｺｰﾄﾞ付きﾌﾟﾛｸﾞﾗﾑ終了 (全ﾌｧｲﾙｸﾛｰｽﾞ)

ﾌﾟﾛｸﾞﾗﾑを終了します。この機能を子ﾌﾟﾛｾｽで実行すると、親ﾌﾟﾛｾｽに戻ります。この時、子ﾌﾟﾛｾｽがｵｰﾌﾟﾝしたﾌｧｲﾙを含めたﾌｧｲﾙをｸﾛｰｽﾞします。終了情報は、通常ﾌﾟﾛｸﾞﾗﾑの終了状態をｺｰﾄﾞとして設定します。これは、親ﾌﾟﾛｾｽが必要ならば参照し、対応する処理を行える様にするためです。例として、ﾊﾞｯﾁ処理中のIF ERRORLEVELの記述があります。この記述で、終了情報の結果により処理の変更が可能となります。
【引数】
AL 終了ｺｰﾄﾞ
【戻値】
無し (ﾌﾟﾛｸﾞﾗﾑ終了につき、戻って来ません。)


AH=4DH

AH=4DH 終了ｺｰﾄﾞ取得

自分が実行させた子ﾌﾟﾛｾｽの終了情報(ｺｰﾄﾞ)を取得します。
【引数】
無し
【戻値】
AH
0 | ﾌﾟﾛｸﾞﾗﾑ終了機能による終了
1 | [CTRL-C](ﾌﾞﾚｰｸ)による終了
2 | ﾊｰﾄﾞｳｪｱ異常による終了
3 | ﾌﾟﾛｸﾞﾗﾑ常駐終了(31H)機能による終了
AL 終了ｺｰﾄﾞ
【参考】
4CH 終了ｺｰﾄﾞ付きﾌﾟﾛｸﾞﾗﾑ終了


AH=4EH

AH=4EH 初回ﾌｧｲﾙ検索

文字列ﾎﾟｲﾝﾀで示されるﾌｧｲﾙをｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘ内で検索します。結果はﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ(DTA)で示される領域に設定されます。この機能は初回検索のみで、次回以降は4FHを使用します。

 成功時のDTAで示されるﾒﾓﾘ上の検索ﾌｧｲﾙ情報の構造を次に示します。
■ ｱｾﾝﾌﾞﾘ言語表記による検索ﾌｧｲﾙ情報の構造
 DB  21 DUP(?) ;
予約 (4FH次回用)
 DB  ?         ;
属性一致
 DW  ?         ;
ﾌｧｲﾙ最終時刻
 DW  ?         ;
ﾌｧｲﾙ最終日付
 DD  ?         ;
ﾌｧｲﾙ容量 (ﾊﾞｲﾄ数)
 DB  13 DUP(?) ;
ﾌｧｲﾙ名.拡張子+0

【引数】
DS:DX 文字列ﾎﾟｲﾝﾀ (ﾌｧｲﾙ名を含むﾊﾟｽ名、ASCIZ文字列で、ﾜｲﾙﾄﾞ･ｶｰﾄﾞも使用可)
CX 属性情報
ﾋﾞｯﾄに対してOR検索、3CH参照)
ﾋﾞｯﾄ | 1の意味
5 | ｱｰｶｲﾌﾞ(保存)ﾌｧｲﾙ (ﾊﾞｯｸｱｯﾌﾟで消去)
4 | ｻﾌﾞﾃﾞｨﾚｸﾄﾘ名
3 | ﾎﾞﾘｭｰﾑ名 (ﾙｰﾄ･ﾃﾞｨﾚｸﾄﾘ上で1つのみ)
2 | ｼｽﾃﾑ･ﾌｧｲﾙ
1 | 隠しﾌｧｲﾙ
0 | 読み出し専用
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
(DTA) | 成功時 | 検索ﾌｧｲﾙ情報ﾎﾟｲﾝﾀ
AX ｴﾗｰ時
02H | 指定ﾊﾟｽ、ﾌｧｲﾙが無効か存在しない
12H | 指定ﾊﾟｽに指定ﾌｧｲﾙが存在しない (これ以上無し)


AH=4FH

AH=4FH 次回ﾌｧｲﾙ検索 (4EH後の検索)

4EHの初回検索で該当有りの場合の次回検索以降を行います。結果はﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ(DTA)で示される領域に設定されます。DTAは4EHを実行した時と同じで、かつDTAで示される領域も保存されていなければなりません。

成功時のDTAで示されるﾒﾓﾘ上の検索ﾌｧｲﾙ情報の構造を次に示します。
■ ｱｾﾝﾌﾞﾘ言語表記による検索ﾌｧｲﾙ情報の構造
 DB  21 DUP(?) ;
予約 (4FH次回用)
 DB  ?         ;
属性一致
 DW  ?         ;
ﾌｧｲﾙ最終時刻
 DW  ?         ;
ﾌｧｲﾙ最終日付
 DD  ?         ;
ﾌｧｲﾙ容量 (ﾊﾞｲﾄ数)
 DB  13 DUP(?) ;
ﾌｧｲﾙ名.拡張子+0

【引数】
無し
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
(DTA) | 成功時 | 検索ﾌｧｲﾙ情報ﾎﾟｲﾝﾀ
AX ｴﾗｰ時
12H 指定ﾊﾟｽに指定ﾌｧｲﾙが存在しない (これ以上無し)


AH=05H

AH=05H PRN,LPTへ出力

標準ﾌﾟﾘﾝﾀ出力(通常ﾌﾟﾘﾝﾀ)に1ﾊﾞｲﾄの文字を出力します。また、以下のｺｰﾄﾞが入力された場合は、対応する処理を行います。
^C : 親ﾌﾟﾛｾｽへ戻ります。(親ﾌﾟﾛｾｽの場合はﾌﾟﾛｸﾞﾗﾑ強制終了となります。)
【引数】
DL 文字ｺｰﾄﾞ
【戻値】
無し
注意: 基本的に過去との互換性を保つための機能ですので、新規に作成する場合は極力40Hのﾊﾝﾄﾞﾙによるﾌｧｲﾙ書き込みで、ﾃﾞﾌｫﾙﾄのﾊﾝﾄﾞﾙ番号4(ﾌﾟﾘﾝﾀ)を使用して下さい。


AH=5AH

AH=5AH ﾊﾝﾄﾞﾙによる一時ﾌｧｲﾙ作成 (ﾌｧｲﾙ名に?が可能)

文字列ﾎﾟｲﾝﾀで示されるﾄﾞﾗｲﾌﾞのﾃﾞｨﾚｸﾄﾘに、存在しないﾌｧｲﾙ名で一時ﾌｧｲﾙを作成します。他に存在しないﾌｧｲﾙ名ということ以外は、通常のﾌｧｲﾙと同等です。

 引数DS:DXの文字列ﾎﾟｲﾝﾀが示すﾒﾓﾘ上のﾊﾟﾗﾒｰﾀ構造を次に示します。ﾊﾟｽを指定する場合は、この機能を実行する前にﾊﾟﾗﾒｰﾀ領域の先頭部分にﾊﾟｽ名を設定ます。この機能実行後にﾊﾟﾗﾒｰﾀ後部にDOSが作成したﾌｧｲﾙ名が、DOSにより設定されます。
■ ｱｾﾝﾌﾞﾘ言語表記によるﾊﾟﾗﾒｰﾀ部の構造
 DB  '～ '     ;
必要ならばﾊﾟｽ名指定
 DB  0         ;
分離子
 DB  12 DUP(?) ;
(DOSが作成するﾌｧｲﾙ名)

【引数】
DS:DX 文字列ﾎﾟｲﾝﾀ (ﾊﾟｽ名、ASCIZと余白)
CX ﾌｧｲﾙ属性
以下のﾋﾞｯﾄ以外は常に0固定
ﾋﾞｯﾄ | 1の意味
5 | ｱｰｶｲﾌﾞ(保存)ﾌｧｲﾙ (ﾊﾞｯｸｱｯﾌﾟで消去)
4 | ｻﾌﾞﾃﾞｨﾚｸﾄﾘ名
3 | ﾎﾞﾘｭｰﾑ名 (ﾙｰﾄ･ﾃﾞｨﾚｸﾄﾘ上で1つのみ)
2 | ｼｽﾃﾑ･ﾌｧｲﾙ
1 | 隠しﾌｧｲﾙ
0 | 読み出し専用
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX | 成功時 | ﾊﾝﾄﾞﾙ番号
ｴﾗｰ時
03H | 無効なﾊﾟｽ、ﾌｧｲﾙ名
05H | ﾃﾞｨﾚｸﾄﾘ、ﾎﾞﾘｭｰﾑ指定、保護されているﾌｧｲﾙと同一ﾌｧｲﾙ名
【参考】
3CH ﾊﾝﾄﾞﾙによるﾌｧｲﾙ作成


AH=5BH

AH=5BH ﾊﾝﾄﾞﾙによるﾌｧｲﾙ作成

文字列ﾎﾟｲﾝﾀで示されたﾌｧｲﾙを属性に従った状態で、ﾊﾝﾄﾞﾙ操作が可能な形式で作成します。文字列ﾎﾟｲﾝﾀで示されたﾌｧｲﾙ名と同じ名前のﾌｧｲﾙが存在した場合、3CHと異なりｴﾗｰとなります。
【引数】
DS:DX 文字列ﾎﾟｲﾝﾀ (ﾌｧｲﾙ名を含むﾊﾟｽ名、ASCIZ)
CX ﾌｧｲﾙ属性
以下のﾋﾞｯﾄ以外は常に0固定
ﾋﾞｯﾄ | 1の意味
5 | ｱｰｶｲﾌﾞ(保存)ﾌｧｲﾙ (ﾊﾞｯｸｱｯﾌﾟで消去)
4 | ｻﾌﾞﾃﾞｨﾚｸﾄﾘ名
3 | ﾎﾞﾘｭｰﾑ名 (ﾙｰﾄ･ﾃﾞｨﾚｸﾄﾘ上で1つのみ)
2 | ｼｽﾃﾑ･ﾌｧｲﾙ
1 | 隠しﾌｧｲﾙ
0 | 読み出し専用
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX | 成功時 | ﾊﾝﾄﾞﾙ番号
ｴﾗｰ時
03H | 無効なﾊﾟｽ、ﾌｧｲﾙ名
04H | ﾌｧｲﾙが多すぎる
05H | ﾃﾞｨﾚｸﾄﾘ、ﾎﾞﾘｭｰﾑ指定、保護されているﾌｧｲﾙと同一ﾌｧｲﾙ名
50H | 同一ﾌｧｲﾙ名のﾌｧｲﾙが既に存在


AH=5CH

AH=5CH ﾌｧｲﾙのﾛｯｸ制御

ﾌｧｲﾙの指定位置から指定ﾊﾞｲﾄ数の領域のﾛｯｸを設定/解除します。ﾛｯｸは、他のﾌﾟﾛｾｽからﾌｧｲﾙを保護(排他処理)するためのものです。
【引数】
SI:DI | ﾛｯｸ領域ﾊﾞｲﾄ数
CX:DX | ﾛｯｸ領域先頭位置 (ﾌｧｲﾙ先頭からのｵﾌｾｯﾄ)
BX | ﾊﾝﾄﾞﾙ番号
AL
  0
ﾛｯｸ設定
1 | ﾛｯｸ解除
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX ｴﾗｰ時
01H | ALの指定が無効
06H | ﾊﾝﾄﾞﾙ番号が無効か、ｵｰﾌﾟﾝされているﾌｧｲﾙ
21H | 無効なﾛｯｸ制御


AH=06H

AH=06H CONの入出力

標準入出力に対して文字の入出力を行います。基本動作は、01H, 02Hを集約した動作ですが、以下の点が異なります。
■ | 入力時、ｷｰ入力を待ちません。
■ | 入力時、ｴｺｰ･ﾊﾞｯｸを行いません。
■ | この機能の形式上、0FFHの出力ができません。
■ | 各機能ｷｰの処理を行いません。
【引数】
DL | 0FFH | ｷｰ入力ﾓｰﾄﾞ
 | ≠0FFH | 文字出力ﾓｰﾄﾞ (文字ｺｰﾄﾞ)
【戻値】
ZF | 入力時 | ZF=0 | ｷｰ入力有り
ZF=1 | ｷｰ入力無し
出力時 | 変化無し
AL 入力時 ZF=0
 00H
ZF=1 | 文字ｺｰﾄﾞ
出力時 | 変化無し
【参考】
07H | ｷｰﾎﾞｰﾄﾞ入力 (機能ｷｰ無し)
08H | ｷｰﾎﾞｰﾄﾞ入力 (機能ｷｰ付き)


AH=07H

AH=07H ｷｰﾎﾞｰﾄﾞ入力

ｷｰの入力を待ち、1ﾊﾞｲﾄの文字を取得します。01Hに似ていますが、以下の点で異なります。
■ | 入力時、ｴｺｰ･ﾊﾞｯｸを行いません。
■ | 各機能ｷｰの処理を行いません。
【引数】
無し
【戻値】
AL 入力された文字ｺｰﾄﾞ
【参考】
06H | CONの入出力
08H | ｷｰﾎﾞｰﾄﾞ入力 (機能ｷｰ付き)


AH=08H

AH=08H ｷｰﾎﾞｰﾄﾞ入力

ｷｰの入力を待ち、1ﾊﾞｲﾄの文字を取得します。01Hとは、ｴｺｰ･ﾊﾞｯｸの有無が異なり、08Hではｴｺｰ･ﾊﾞｯｸをしません。また、以下の機能ｷｰが入力された場合は、対応する処理を行います。
^C : | 親ﾌﾟﾛｾｽへ戻ります。(親ﾌﾟﾛｾｽの場合はﾌﾟﾛｸﾞﾗﾑ強制終了となります。)
^P : | 以降、標準出力をﾌﾟﾘﾝﾀへも同時に出力します。
^N : | 標準出力のﾌﾟﾘﾝﾀへの出力を中止(^Pの解除)します。
【引数】
無し
【戻値】
AL 入力された文字ｺｰﾄﾞ
【参考】
06H | CONの入出力
07H | ｷｰﾎﾞｰﾄﾞ入力 (機能ｷｰ無し)


AH=09H

AH=09H 文字列表示

文字列ﾎﾟｲﾝﾀで示される文字列を'$'(24H)の直前まで表示します。文字列ﾎﾟｲﾝﾀが示すﾒﾓﾘ上の内容は、この機能が文字数で指定する構造でないため、先頭ﾊﾞｲﾄから順に上位ｱﾄﾞﾚｽ方向に表示していきます。終了子'$'(24H)があると、この機能を終了します。結果的に終了子の直前までが表示されます。また、以下のｺｰﾄﾞが入力された場合は、対応する処理を行います。
^C : | 親ﾌﾟﾛｾｽへ戻ります。(親ﾌﾟﾛｾｽの場合はﾌﾟﾛｸﾞﾗﾑ強制終了となります。)
^P : | 以降、標準出力をﾌﾟﾘﾝﾀへも同時に出力します。
^N : | 標準出力のﾌﾟﾘﾝﾀへの出力を中止(^Pの解除)します。
^S : | 標準出力を一時停止します。(他のｷｰ入力で解除します。)
【引数】
DS:DX 文字列ﾎﾟｲﾝﾀ
【戻値】
無し
注意: 基本的に過去との互換性を保つための機能ですので、新規に作成する場合は極力40Hのﾊﾝﾄﾞﾙによるﾌｧｲﾙ書き込みで、ﾃﾞﾌｫﾙﾄのﾊﾝﾄﾞﾙ番号1(CRT)を使用して下さい。


AH=10H

AH=10H FCBによるﾌｧｲﾙ･ｸﾛｰｽﾞ

ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘのFCBで示された既にｵｰﾌﾟﾝされたﾌｧｲﾙをｸﾛｰｽﾞします。ﾌｧｲﾙの内容に変化が有った場合は、必ずｸﾛｰｽﾞを行います。怠ると、異常な内容のﾌｧｲﾙとなる場合があります。
【引数】
DS:DX ｵｰﾌﾟﾝされているFCBﾎﾟｲﾝﾀ
【戻値】
AL | 00H | 成功
 | 0FFH | ﾌｧｲﾙが存在しない
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は3EHのﾊﾝﾄﾞﾙによるﾌｧｲﾙ･ｸﾛｰｽﾞを使用して下さい。


AH=11H

AH=11H FCBによる初回ﾌｧｲﾙ検索

FCBで示されるﾌｧｲﾙをｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘ内で検索します。この機能は初回検索のみで、次回以降は12Hを使用します。
【引数】
DS:DX ｵｰﾌﾟﾝされていないFCBﾎﾟｲﾝﾀ
【戻値】
AL | 00H | ﾌｧｲﾙが存在する
 | 0FFH | ﾌｧｲﾙが存在しない
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は4EHの初回ﾌｧｲﾙ検索を使用して下さい。
【参考】
4FH 次回ﾌｧｲﾙ検索 (DTA使用)


AH=12H

AH=12H FCBによる次回ﾌｧｲﾙ検索

11Hの初回検索で該当有りの場合の次回検索以降を行います。
【引数】
DS:DX ｵｰﾌﾟﾝされていないFCBﾎﾟｲﾝﾀ
【戻値】
AL | 00H | ﾌｧｲﾙが存在する
 | 0FFH | ﾌｧｲﾙが存在しない
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は4FHの次回ﾌｧｲﾙ検索を使用して下さい。
【参考】
4EH 初回ﾌｧｲﾙ検索 (DTA使用)


AH=13H

AH=13H FCBによるﾌｧｲﾙ削除

ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘのFCBで示されるﾌｧｲﾙを削除しますが、ﾃﾞｨﾚｸﾄﾘは削除できません(3AH参照)。FCB内のﾌｧｲﾙ名には、ﾜｲﾙﾄﾞ･ｶｰﾄﾞ( ? * )も使用できます。
【引数】
DS:DX ｵｰﾌﾟﾝされていないFCBﾎﾟｲﾝﾀ
【戻値】
AL | 00H | 成功
 | 0FFH | ﾌｧｲﾙが存在しない
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は41Hのﾌｧｲﾙ名によるﾌｧｲﾙ削除を使用して下さい。


AH=14H

AH=14H FCBによるﾌｧｲﾙの順(ｼｰｹﾝｼｬﾙ)読み込み

ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘのFCBで示されたﾌｧｲﾙから1ﾚｺｰﾄﾞ(標準で128ﾊﾞｲﾄ)単位でﾃﾞｰﾀをﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ(DTA)で示されるﾊﾞｯﾌｧへ読み出します。この時のﾌｧｲﾙの読み出し位置は、その時のﾌｧｲﾙ･ﾎﾟｲﾝﾀの位置からで、ﾌｧｲﾙ･ﾎﾟｲﾝﾀは処理終了後、次のﾃﾞｰﾀ位置に設定されます。
【引数】
DS:DX ｵｰﾌﾟﾝされているFCBﾎﾟｲﾝﾀ
【戻値】
AL
00H | 正常終了 (ﾊﾞｯﾌｧには128ﾊﾞｲﾄﾃﾞｰﾀ)
01H | 既に全ﾃﾞｰﾀ読み出し済み (既にEOF)
02H | ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽで示されるﾊﾞｯﾌｧ容量不足
03H | 正常終了 (最終ﾚｺｰﾄﾞﾃﾞｰﾀ)
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は3FHのﾊﾝﾄﾞﾙによるﾌｧｲﾙ読み込みを使用して下さい。


AH=15H

AH=15H FCBによるﾌｧｲﾙの順(ｼｰｹﾝｼｬﾙ)書き込み

ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘのFCBで示されたﾌｧｲﾙへFCB内で指定されたﾊﾞｲﾄ数のﾃﾞｰﾀをﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ(DTA)で示されるﾊﾞｯﾌｧから書き込みます。この時のﾌｧｲﾙの書き込み位置は、その時のﾌｧｲﾙ･ﾎﾟｲﾝﾀの位置からで、ﾌｧｲﾙ･ﾎﾟｲﾝﾀは処理終了後、次のﾃﾞｰﾀ位置に設定されます。
【引数】
DS:DX ｵｰﾌﾟﾝされているFCBﾎﾟｲﾝﾀ
【戻値】
AL
00H | 正常終了
01H | ﾃﾞｨｽｸ空き容量不足
02H | ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽで示されるﾊﾞｯﾌｧ容量不足
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は40Hのﾊﾝﾄﾞﾙによるﾌｧｲﾙ書き込みを使用して下さい。


AH=16H

AH=16H FCBによるﾌｧｲﾙ作成

ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘのFCBで示されたﾌｧｲﾙを属性に従った状態で、FCBによるﾌｧｲﾙ操作が可能な形式で作成します。FCB内のﾌｧｲﾙ名と同じ名前のﾌｧｲﾙが存在した場合、以前のﾌｧｲﾙは消去されます。
【引数】
DS:DX ｵｰﾌﾟﾝされていないFCBﾎﾟｲﾝﾀ
【戻値】
AL
00H | 正常終了
0FFH | 空きﾃﾞｨﾚｸﾄﾘ領域無しで作成不能
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は3CHのﾊﾝﾄﾞﾙによるﾌｧｲﾙ作成を使用して下さい。


AH=17H

AH=17H ﾌｧｲﾙ名の変更

ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘのFCBで示される元ﾌｧｲﾙ名のﾌｧｲﾙの名前を先ﾌｧｲﾙ名に変更します。
【引数】
DS:DX 変更後ﾌｧｲﾙ名を含むFCBﾎﾟｲﾝﾀ
【戻値】
AL
00H | 正常終了
0FFH | 変更前ﾌｧｲﾙが存在しないか、変更後ﾌｧｲﾙ名と同じﾌｧｲﾙが既に存在している
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は56Hのﾌｧｲﾙ名の変更、移動を使用して下さい。


AH=19H

AH=19H ｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞ番号取得

現在のｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞ番号を取得します。ﾄﾞﾗｲﾌﾞ番号は0から始まり、0がA:、1がB:ﾄﾞﾗｲﾌﾞのように対応しています。
【引数】
無し
【戻値】
AL ﾄﾞﾗｲﾌﾞ番号 (A:=0, B:=1, ･･･)
【参考】
0EH ｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞ指定


AH=21H

AH=21H FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ読み込み

ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘのFCB内で指定されるﾚｺｰﾄﾞ番号のﾚｺｰﾄﾞ(標準で128ﾊﾞｲﾄ)をﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ(DTA)で示されるﾊﾞｯﾌｧに読み込みます。ﾚｺｰﾄﾞ番号は24Hの相対ﾚｺｰﾄﾞの設定で設定します。
【引数】
DS:DX ｵｰﾌﾟﾝされているFCBﾎﾟｲﾝﾀ
【戻値】
AL
00H | 正常終了 (ﾊﾞｯﾌｧには標準で128ﾊﾞｲﾄﾃﾞｰﾀ)
01H | 既に全ﾃﾞｰﾀ読み出し済み (既にEOF)
02H | ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽで示されるﾊﾞｯﾌｧ容量不足
03H | 正常終了 (最終ﾚｺｰﾄﾞﾃﾞｰﾀ)
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は3FHのﾊﾝﾄﾞﾙによるﾌｧｲﾙ読み込みを使用して下さい。
【参考】
27H FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ･ﾌﾞﾛｯｸ読み込み


AH=22H

AH=22H FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ書き込み

ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ(DTA)で示されるﾊﾞｯﾌｧからの1ﾚｺｰﾄﾞ(標準で128ﾊﾞｲﾄ)を、ｶﾚﾝﾄﾃﾞｨﾚｸﾄﾘのFCB内で指定されるﾚｺｰﾄﾞ番号のﾚｺｰﾄﾞに書き込みます。ﾚｺｰﾄﾞ番号は24Hの相対ﾚｺｰﾄﾞの設定で設定します。
【引数】
DS:DX ｵｰﾌﾟﾝされているFCBﾎﾟｲﾝﾀ
【戻値】
AL
00H | 正常終了
01H | ﾃﾞｨｽｸ空き容量不足
02H | ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽで示されるﾊﾞｯﾌｧ容量不足
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は40Hのﾊﾝﾄﾞﾙによるﾌｧｲﾙ書き込みを使用して下さい。
【参考】
28H FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ･ﾌﾞﾛｯｸ書き込み


AH=23H

AH=23H ﾌｧｲﾙの容量取得

ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘのFCBで示されたﾌｧｲﾙの容量をFCB内に取得します。
【引数】
DS:DX ｵｰﾌﾟﾝされていないFCBﾎﾟｲﾝﾀ
【戻値】
AL
00H | 成功 (ﾌｧｲﾙが存在)
0FFH | ﾌｧｲﾙが存在しない
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は42Hのﾌｧｲﾙ･ﾎﾟｲﾝﾀの移動を使用して下さい。


AH=24H

AH=24H 相対ﾚｺｰﾄﾞの設定

FCB内のﾌｧｲﾙ･ﾎﾟｲﾝﾀを(相対ﾚｺｰﾄﾞ番号とｶﾚﾝﾄﾚｺｰﾄﾞ番号を一致させるために)設定します。通常、21H, 22H, 27H, 28Hを実行する以前に本機能でﾌｧｲﾙ･ﾎﾟｲﾝﾀを指定します。
【引数】
DS:DX ｵｰﾌﾟﾝされているFCBﾎﾟｲﾝﾀ
【戻値】
無し
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は42Hのﾌｧｲﾙ･ﾎﾟｲﾝﾀの移動を使用して下さい。


AH=25H

AH=25H 割り込みﾍﾞｸﾀ設定

ﾍﾞｸﾀ番号で指定されたﾍﾞｸﾀにｱﾄﾞﾚｽを設定します。ﾍﾞｸﾀ位置はｾｸﾞﾒﾝﾄ0のｵﾌｾｯﾄがﾍﾞｸﾀ番号×4の位置になります。直接ﾒﾓﾘにﾍﾞｸﾀ･ｱﾄﾞﾚｽを書き込むことでも目的を達成できますが、本機能を使用すると各ﾌﾟﾛｾｽごとに同一ﾍﾞｸﾀ番号に対して異なるﾍﾞｸﾀ･ｱﾄﾞﾚｽを設定することが可能になり、また、ﾌﾟﾛｾｽ終了時にOSが元のﾍﾞｸﾀ･ｱﾄﾞﾚｽを復帰してくれます。
【引数】
DS:DX | 設定するｱﾄﾞﾚｽ (割り込み処理ﾙｰﾁﾝの先頭ｱﾄﾞﾚｽ)
AL | ﾍﾞｸﾀ番号
【戻値】
無し
【参考】
35H 割り込みﾍﾞｸﾀ取得


AH=26H

AH=26H 新しいPSPの作成

PSP(ﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ)を作成します。通常、ﾌﾟﾛｸﾞﾗﾑ実行時、DOSがPSPを自動的に作成します。48Hで新しくﾒﾓﾘ割り当てをした場合等は、PSPが作成されません。このﾒﾓﾘ領域でPSPを参照するﾌﾟﾛｸﾞﾗﾑを実行させる場合(通常、COM形式のﾌﾟﾛｸﾞﾗﾑ)等に、この機能を使用します。通常、この場合のPSPを作成するｱﾄﾞﾚｽは48H実行後の戻値となります。
【引数】
DX PSPを作成するｾｸﾞﾒﾝﾄ･ｱﾄﾞﾚｽ
【戻値】
無し
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は4BHのﾌﾟﾛｸﾞﾗﾑのﾛｰﾄﾞと実行を使用して下さい。


AH=27H

AH=27H FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ･ﾌﾞﾛｯｸ読み込み

ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘのFCB内で指定されるﾚｺｰﾄﾞ番号から、CXで示されるﾚｺｰﾄﾞ数分をﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ(DTA)で示されるﾊﾞｯﾌｧに読み込みます。
【引数】
DS:DX | ｵｰﾌﾟﾝされているFCBﾎﾟｲﾝﾀ
CX | ﾚｺｰﾄﾞ数
【戻値】
AL
00H | 正常終了 (ﾊﾞｯﾌｧにはﾚｺｰﾄﾞ数×128ﾊﾞｲﾄﾃﾞｰﾀ)
01H | 既に全ﾃﾞｰﾀ読み出し済み (既にEOF)
02H | ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽで示されるﾊﾞｯﾌｧ容量不足
03H | 正常終了 (最終ﾚｺｰﾄﾞ･ﾃﾞｰﾀ)
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は3FHのﾊﾝﾄﾞﾙによるﾌｧｲﾙ読み込みを使用して下さい。
【参考】
21H | FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ読み込み
24H | 相対ﾚｺｰﾄﾞの設定


AH=28H

AH=28H FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ･ﾌﾞﾛｯｸ書き込み

ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽ(DTA)で示されるﾊﾞｯﾌｧから、CXで示されるﾚｺｰﾄﾞ数分、ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘのFCB内で指定されるﾚｺｰﾄﾞ番号のﾚｺｰﾄﾞからに書き込みます。
【引数】
DS:DX | ｵｰﾌﾟﾝされているFCBﾎﾟｲﾝﾀ
CX | ﾚｺｰﾄﾞ数
【戻値】
AL
00H | 正常終了
01H | ﾃﾞｨｽｸ空き容量不足
02H | ﾃﾞｨｽｸ転送ｱﾄﾞﾚｽで示されるﾊﾞｯﾌｧ容量不足
注意: 過去との互換性を保つための機能ですので、新規に作成する場合は40Hのﾊﾝﾄﾞﾙによるﾌｧｲﾙ書き込みを使用して下さい。
【参考】
22H | FCBによるﾌｧｲﾙ･ﾗﾝﾀﾞﾑ書き込み
24H | 相対ﾚｺｰﾄﾞの設定


AH=29H

AH=29H ﾌｧｲﾙ情報を展開 (FCB設定)

文字列ﾎﾟｲﾝﾀで示されるﾌｧｲﾙ名などを各要素に分解し、FCB内にﾄﾞﾗｲﾌﾞ番号、ﾌｧｲﾙ名、拡張子として格納します。ﾜｲﾙﾄﾞ･ｶｰﾄﾞとして * がある場合は、対応するﾌｧｲﾙ名、拡張子にすべて ? が設定されます。

 文字列ﾎﾟｲﾝﾀで示される文字列の基本形式を次に示します。
ﾄﾞﾗｲﾌﾞ番号 : ﾌｧｲﾙ名 . 拡張子 ﾌｧｲﾙ分離記号
ﾌｧｲﾙ分離記号を以下に示します。
, . ; : = + / " [ ] \ < > | (ｽﾍﾟｰｽ) (ﾀﾌﾞ)
次に引数のES:DIで示すFCBﾎﾟｲﾝﾀが示すﾒﾓﾘ上の内容の記述例を示します。変数領域に以下の記述を行い、この機能を実行すると、OSにより、これらの内容が設定されます。
例: ｱｾﾝﾌﾞﾘ言語表記によるFCBの記述例
 DB ?        ;
ﾄﾞﾗｲﾌﾞ番号 (ｶﾚﾝﾄ=0, A:=1, B:=2, ･･･)
 DB 8 DUP(?) ;
ﾌｧｲﾙ名(8文字まで)
 DB 3 DUP(?) ;
ﾌｧｲﾙ名拡張子

【引数】
ES:DI | ｵｰﾌﾟﾝされていないFCBﾎﾟｲﾝﾀ
DS:SI | 解析する文字列ﾎﾟｲﾝﾀ
AL 下記参照 (ﾋﾞｯﾄ7～4は無視)
ﾋﾞｯﾄ | 0 | 1
3 | 拡張子無しは3文字ｽﾍﾟｰｽとする | 拡張子無しはFCB内の拡張子を変更しない
2 | ﾌｧｲﾙ名無しは8文字ｽﾍﾟｰｽとする | ﾌｧｲﾙ名無しはFCB内のﾌｧｲﾙ名を変更しない
1 | ﾄﾞﾗｲﾌﾞ番号無しはｶﾚﾝﾄ指定 | ﾄﾞﾗｲﾌﾞ番号無しはFCB内のﾄﾞﾗｲﾌﾞ番号を変更しない
0 | ﾌｧｲﾙ分離記号で解析終了 | 先行するﾌｧｲﾙ分離記号を無視
【戻値】
ES:DI | 設定されたｵｰﾌﾟﾝされていないFCBﾎﾟｲﾝﾀ
DS:SI | 解析された文字列の次位置
AL
00H | ﾜｲﾙﾄﾞ･ｶｰﾄﾞが使用されていない正常終了
01H | ﾜｲﾙﾄﾞ･ｶｰﾄﾞが使用されている正常終了
0FFH | ﾄﾞﾗｲﾌﾞ番号が無効
注意: 過去との互換性を保つための機能ですので、新規に作成する場合には、できるだけ使用しないことが望まれます。


AH=30H

AH=30H ﾊﾞｰｼﾞｮﾝ番号取得

MS-DOSのﾊﾞｰｼﾞｮﾝ番号を取得します。ﾊﾞｰｼﾞｮﾝによってDOSｺｰﾙの機能範囲等が異なりますので、ｱﾌﾟﾘｹｰｼｮﾝ･ﾌﾟﾛｸﾞﾗﾑにあっては、この機能によりﾊﾞｰｼﾞｮﾝ番号を確認して処理をするようにします。この結果、ﾊﾞｰｼﾞｮﾝの違いによる暴走、破壊を回避することができます。戻り値はすべて2進数です。OEM、ﾕｰｻﾞ･ｼﾘｱﾙ番号は常に0が返される場合があります。
【引数】
無し
【戻値】
AL | ﾊﾞｰｼﾞｮﾝ番号の整数部
AH | ﾊﾞｰｼﾞｮﾝ番号の小数部 (2桁分BCD)
BH | OEMのｼﾘｱﾙ番号
BL:CX | ﾕｰｻﾞ･ｼﾘｱﾙ番号
【参考】
33H:AL=6 ﾊﾞｰｼﾞｮﾝ番号取得


AH=31H

AH=31H ﾌﾟﾛｸﾞﾗﾑ常駐終了

ﾒﾓﾘ管理ﾌﾞﾛｯｸ(MCB)の次からﾊﾟﾗｸﾞﾗﾌ数で示されるﾒﾓﾘ領域を残したままﾌﾟﾛｸﾞﾗﾑを終了します。ｵｰﾌﾟﾝされているﾌｧｲﾙはｸﾛｰｽﾞされません。ﾊﾟﾗｸﾞﾗﾌは16ﾊﾞｲﾄを1とする単位です。注意を要するのは、ｺｰﾄﾞ部だけでなく、PSP部、ﾃﾞｰﾀ部、ｽﾀｯｸ領域も含めた常駐する必要なﾊﾟﾗｸﾞﾗﾌ数を設定しなければいけないことです。

 終了情報は、通常ﾌﾟﾛｸﾞﾗﾑの終了状態をｺｰﾄﾞとして設定します。これは、親ﾌﾟﾛｾｽが必要ならば参照し、対応する処理を行えるようにするためです。例として、ﾊﾞｯﾁ処理中のIF ERRORLEVELの記述があります。この記述で、終了情報の結果により処理の変更が可能となります。
【引数】
DX | 常駐ﾊﾟﾗｸﾞﾗﾌ数
AL | 終了情報
【戻値】
無し (ﾌﾟﾛｸﾞﾗﾑ終了につき戻って来ません。)


AH=32H

AH=32H ﾃﾞｨｽｸ･ﾊﾟﾗﾒｰﾀ･ﾌﾞﾛｯｸ(DPB)取得

指定ﾄﾞﾗｲﾌﾞのﾃﾞｨｽｸ･ﾊﾟﾗﾒｰﾀ･ﾌﾞﾛｯｸ(DPB)を取得します。
【引数】
DL ﾄﾞﾗｲﾌﾞ番号 (ｶﾚﾝﾄ=0, A:=1, B:=2, ･･･)
【戻値】
DS:BX DPBﾎﾟｲﾝﾀ
AL
≠0FFH | 正常終了
0FFH | 中止終了


AH=35H

AH=35H 割り込みﾍﾞｸﾀ取得

ﾍﾞｸﾀ番号で指定された割り込みﾍﾞｸﾀに設定されているｱﾄﾞﾚｽを取得します。ﾍﾞｸﾀ位置はｾｸﾞﾒﾝﾄ0のｵﾌｾｯﾄがﾍﾞｸﾀ番号×4の位置になります。
【引数】
AL ﾍﾞｸﾀ番号
【戻値】
ES:BX ﾍﾞｸﾀ･ｱﾄﾞﾚｽ (対応する割り込み処理ﾙｰﾁﾝの先頭ｱﾄﾞﾚｽ)
【参考】
25H 割り込みﾍﾞｸﾀ設定


AH=36H

AH=36H ﾃﾞｨｽｸ残容量取得

ﾄﾞﾗｲﾌﾞ番号で指定されたﾃﾞｨｽｸの空き容量を取得します。空きﾊﾞｲﾄ数=使用可能ｸﾗｽﾀ数×(ｾｸﾀ数/1ｸﾗｽﾀ)×(ﾊﾞｲﾄ数/1ｾｸﾀ)となります。
【引数】
DL ﾄﾞﾗｲﾌﾞ番号 (ｶﾚﾝﾄ=0, A:=1, B:=2, ･･･)
【戻値】
DX | 総ｸﾗｽﾀ数
CX | ﾊﾞｲﾄ数/1ｾｸﾀ
BX | 使用可能ｸﾗｽﾀ数
AX
≠0FFFFH | ｾｸﾀ数/1ｸﾗｽﾀ
＝0FFFFH | 無効なﾄﾞﾗｲﾌﾞ番号
【参考】
1BH | ｶﾚﾝﾄ･ﾄﾞﾗｲﾌﾞの構成取得
1CH | ﾄﾞﾗｲﾌﾞの構成取得


AH=38H

AH=38H 国別情報の取得/設定

国特有の時刻表示、通貨表示等の情報を取得、設定します。

 取得時に引数のDS:DXで示される情報ﾊﾞｯﾌｧ･ﾎﾟｲﾝﾀが示すﾒﾓﾘ上の変数領域の構造を次に示します。
■ ｱｾﾝﾌﾞﾘ言語表記による環境変数の一般形
注: 以下の記号ｺｰﾄﾞはASCIZ文字列
 DW  ?        ;
日付表示形式
値 | 意味
0 | USA | (月/日/年)
1 | EU | (日/月/年)
2 | 日本 | (年/月/日)
 DB  5 DUP(?) ;
通貨記号ｺｰﾄﾞ
 DB  2 DUP(?) ;
3桁毎の区切り記号ｺｰﾄﾞ
 DB  2 DUP(?) ;
10進分離記号ｺｰﾄﾞ
 DB  2 DUP(?) ;
日付分離記号ｺｰﾄﾞ
 DB  2 DUP(?) ;
時刻分離記号ｺｰﾄﾞ
 DB  ?        ;
通貨表示形式
ﾋﾞｯﾄ | 0 | 1
1 | 通貨記号と金額間にｽﾍﾟｰｽ無し | 通貨記号と金額間にｽﾍﾟｰｽ有り
0 | 金額の前に通貨記号 | 金額の後に通貨記号
 DB  ?        ;
通貨の小数点以下桁数
 DB  ?        ;
時刻表示形式 (0=12時間制、1=24時間制)
 DD  ?        ;
国固有ｺｰﾄﾞ変換ｴﾝﾄﾘｱﾄﾞﾚｽ (引数: AL, 戻値: AL)
 DB  2 DUP(?) ;
ﾃﾞｰﾀ･ﾘｽﾄ分離記号ｺｰﾄﾞ

【引数】
DS:DX | 情報ﾊﾞｯﾌｧ･ﾎﾟｲﾝﾀ (取得時のみ必要)
DX | ＝0FFFFH | 設定動作
≠0FFFFH | 取得動作
BX | 拡張国ｺｰﾄﾞ | (拡張国ｺｰﾄﾞ使用の設定時のみ必要)
AL | 00H | 現在の国情報
01H～0FEH | 国ｺｰﾄﾞ
0FFH | 拡張国ｺｰﾄﾞ有
注: 通常、国ｺｰﾄﾞは国際電話ﾌﾟﾚﾌｨｯｸｽ番号と同一
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX ｴﾗｰ時
02H 無効な国ｺｰﾄﾞ


AH=39H

AH=39H ﾃﾞｨﾚｸﾄﾘ作成

文字列ﾎﾟｲﾝﾀで示されたｻﾌﾞﾃﾞｨﾚｸﾄﾘを作成します。戻値のALはCF=1のｴﾗｰ時のみの意味です。
【引数】
DS:DX 文字列ﾎﾟｲﾝﾀ (ﾃﾞｨﾚｸﾄﾘ名を含むﾊﾟｽ名、ASCIZ)
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AL ｴﾗｰ時
03H | 無効なﾊﾟｽ名
05H | 親ﾃﾞｨﾚｸﾄﾘに空き無しか、同名のﾃﾞｨﾚｸﾄﾘが存在


AH=40H

AH=40H ﾊﾝﾄﾞﾙによるﾌｧｲﾙ書き込み

ﾊﾝﾄﾞﾙ番号で示されたﾌｧｲﾙへ指定ﾊﾞｲﾄ数のﾃﾞｰﾀをﾊﾞｯﾌｧから書き込みます。この時のﾌｧｲﾙの書き込み位置は、その時のﾌｧｲﾙ･ﾎﾟｲﾝﾀの位置からです。ﾌｧｲﾙ･ﾎﾟｲﾝﾀは処理終了後、次のﾃﾞｰﾀ位置に設定されます。戻値の実際に書き込まれたﾊﾞｲﾄ数が指定ﾊﾞｲﾄ数より小さい場合は、ﾃﾞｨｽｸに空き容量が無いことを意味します。CX=0を指定すると、ﾌｧｲﾙ容量を現在のﾌｧｲﾙ･ﾎﾟｲﾝﾀの位置までに変更します。
【引数】
DS:DX | ﾊﾞｯﾌｧ･ﾎﾟｲﾝﾀ
CX | ﾊﾞｲﾄ数
BX | ﾊﾝﾄﾞﾙ番号
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX | 成功時 | 実際に書き込まれたﾊﾞｲﾄ数
ｴﾗｰ時
05H | ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはﾗｲﾄ不可
06H | 指定ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはｵｰﾌﾟﾝされていない
【参考】
42H ﾌｧｲﾙ･ﾎﾟｲﾝﾀ移動


AH=41H

AH=41H ﾌｧｲﾙ名によるﾌｧｲﾙ削除

文字列ﾎﾟｲﾝﾀで示されたﾌｧｲﾙを削除しますが、読み出し専用のﾌｧｲﾙは削除できませんので、先行して43Hのﾌｧｲﾙ属性設定で読みだし専用を解除して下さい。この機能は唯一のﾌｧｲﾙを対象としますので、ﾜｲﾙﾄﾞ･ｶｰﾄﾞ( ? * )は使用できません。また、ﾃﾞｨﾚｸﾄﾘは削除できません。
【引数】
DS:DX 文字列ﾎﾟｲﾝﾀ(ﾌｧｲﾙ名を含むﾊﾟｽ名、ASCIZ)
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX ｴﾗｰ時
02H | 指定ﾌｧｲﾙが存在しない
05H | ﾃﾞｨﾚｸﾄﾘか読み出し専用ﾌｧｲﾙ
【参考】
3AH ﾃﾞｨﾚｸﾄﾘ削除


AH=42H

AH=42H ﾌｧｲﾙ･ﾎﾟｲﾝﾀ移動

ﾌｧｲﾙ･ﾎﾟｲﾝﾀ(ﾌｧｲﾙ上のﾃﾞｰﾀ･ﾎﾟｲﾝﾀ)を設定します。ﾊﾝﾄﾞﾙによる読み書き操作は、ﾌｧｲﾙ･ﾎﾟｲﾝﾀの指示する位置を基準に行われます。ﾌｧｲﾙの最後(ﾓｰﾄﾞ=2)でｵﾌｾｯﾄ=0を実行すると、ﾌｧｲﾙのｻｲｽﾞを知ることができます。
【引数】
CX:DX | ｵﾌｾｯﾄ (CX=上位、DX=下位の32ﾋﾞｯﾄ長)
BX | ﾊﾝﾄﾞﾙ番号
AL ﾓｰﾄﾞ
0 | ﾌｧｲﾙの先頭+ｵﾌｾｯﾄ
1 | 現在のﾌｧｲﾙ･ﾎﾟｲﾝﾀ+ｵﾌｾｯﾄ
2 | ﾌｧｲﾙの最後+ｵﾌｾｯﾄ
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
DX:AX | 成功時 | 変更後のﾌｧｲﾙ･ﾎﾟｲﾝﾀ
AX ｴﾗｰ時
01H = | 無効なﾓｰﾄﾞ番号
06H = | 指定ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはｵｰﾌﾟﾝされていない


AH=43H

AH=43H ﾌｧｲﾙ属性取得/設定

文字列ﾎﾟｲﾝﾀで示されたﾌｧｲﾙの属性を取得、設定(変更)します。
【引数】
DS:DX | 文字列ﾎﾟｲﾝﾀ (ﾌｧｲﾙ名を含むﾊﾟｽ名、ASCIZ)
CX ﾌｧｲﾙ属性 (設定時のみ必要)
注: 以下のﾋﾞｯﾄ以外は常に0固定
ﾋﾞｯﾄ | 1の意味
5 | ｱｰｶｲﾌﾞ(保存)ﾌｧｲﾙ (ﾊﾞｯｸｱｯﾌﾟで消去)
4 | ｻﾌﾞﾃﾞｨﾚｸﾄﾘ名
3 | ﾎﾞﾘｭｰﾑ名 (ﾙｰﾄ･ﾃﾞｨﾚｸﾄﾘ上で1つのみ)
2 | ｼｽﾃﾑ･ﾌｧｲﾙ
1 | 隠しﾌｧｲﾙ
0 | 読み出し専用
AL | ﾓｰﾄﾞ | 0 | 属性取得
1 | 属性設定
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
CX | 成功時 | 現在の属性 (引数のCX参照)
AX ｴﾗｰ時
01H = | 無効なﾓｰﾄﾞ番号
02H = | 無効なﾌｧｲﾙ名
03H = | 無効なﾊﾟｽ名
05H = | ﾃﾞｨﾚｸﾄﾘ、ﾎﾞﾘｭｰﾑ指定


AH=44H

AH=44H IOCTL機能によるﾃﾞﾊﾞｲｽ操作

ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞがIOCTL機能をｻﾎﾟｰﾄしている場合、次の機能が使用できます。
AH=44H:AL=0
装置情報取得
AH=44H:AL=1
装置情報設定
AH=44H:AL=2
IOCTLｷｬﾗｸﾀ読み込み (ｷｬﾗｸﾀ･ﾃﾞﾊﾞｲｽのみ有効)
AH=44H:AL=3
IOCTLｷｬﾗｸﾀ書き込み (ｷｬﾗｸﾀ･ﾃﾞﾊﾞｲｽのみ有効)
AH=44H:AL=4
IOCTLﾌﾞﾛｯｸ読み込み (ﾌﾞﾛｯｸ･ﾃﾞﾊﾞｲｽのみ有効)
AH=44H:AL=5
IOCTLﾌﾞﾛｯｸ書き込み (ﾌﾞﾛｯｸ･ﾃﾞﾊﾞｲｽのみ有効)
AH=44H:AL=6
IOCTL入力状態取得
AH=44H:AL=7
IOCTL出力状態取得


AH=45H

AH=45H ﾊﾝﾄﾞﾙの二重化 (新ﾊﾝﾄﾞﾙ番号)

元ﾊﾝﾄﾞﾙ番号で示されたﾌｧｲﾙに別のﾊﾝﾄﾞﾙ番号を設定します。この結果、同一ﾌｧｲﾙに2つﾊﾝﾄﾞﾙ番号が割り振られます。どちらのﾊﾝﾄﾞﾙ番号でもｱｸｾｽできます。但し、ﾌｧｲﾙ･ﾎﾟｲﾝﾀはﾌｧｲﾙに対応しているため、両ﾊﾝﾄﾞﾙに対し共通となります。
【引数】
BX 元ﾊﾝﾄﾞﾙ番号
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX | 成功時 | 新ﾊﾝﾄﾞﾙ番号
ｴﾗｰ時
04H | ｵｰﾌﾟﾝされているﾌｧｲﾙが多すぎる
06H | 指定ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはｵｰﾌﾟﾝされていない
【参考】
46H ﾊﾝﾄﾞﾙの二重化 (指定ﾊﾝﾄﾞﾙ番号)


AH=46H

AH=46H ﾊﾝﾄﾞﾙの二重化 (指定ﾊﾝﾄﾞﾙ番号)

元ﾊﾝﾄﾞﾙ番号で示されたﾌｧｲﾙに別の指定する新ﾊﾝﾄﾞﾙ番号を設定します。この結果、同一ﾌｧｲﾙに2つﾊﾝﾄﾞﾙ番号が割り振られます。どちらのﾊﾝﾄﾞﾙ番号でもｱｸｾｽできます。但し、ﾌｧｲﾙ･ﾎﾟｲﾝﾀはﾌｧｲﾙに対応している為、両ﾊﾝﾄﾞﾙに対し共通となります。新ﾊﾝﾄﾞﾙ番号が既に存在する場合は、そのﾌｧｲﾙをｸﾛｰｽﾞ後、割り当てます。
【引数】
BX | 元ﾊﾝﾄﾞﾙ番号
CX | 新ﾊﾝﾄﾞﾙ番号
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX ｴﾗｰ時
04H | ｵｰﾌﾟﾝされているﾌｧｲﾙが多すぎる
06H | 指定ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはｵｰﾌﾟﾝされていない
注意: 通常は45Hのﾊﾝﾄﾞﾙの二重化を使用します。


AH=47H

AH=47H ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘ取得

ﾄﾞﾗｲﾌﾞ番号で示されたﾄﾞﾗｲﾌﾞのｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘを結果ﾊﾞｯﾌｧに取得します。ﾊﾟｽ名は最大64ﾊﾞｲﾄまでが取得、格納されます。
【引数】
DS:SI | 結果ﾊﾞｯﾌｧﾎﾟｲﾝﾀ (\の次からのﾊﾟｽ名がASCIZ文字列で設定されます。)
DL | ﾄﾞﾗｲﾌﾞ番号 (ｶﾚﾝﾄ=0, A:=1, B:=2, ･･･)
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX ｴﾗｰ時
0FH 無効なﾄﾞﾗｲﾌﾞ番号
【参考】
3BH ｶﾚﾝﾄ･ﾃﾞｨﾚｸﾄﾘ設定


AH=48H

AH=48H ﾒﾓﾘ領域確保

指定容量のﾒﾓﾘ(ﾊﾟﾗｸﾞﾗﾌ単位)を確保します。1ﾊﾟﾗｸﾞﾗﾌは16ﾊﾞｲﾄです。実際に設定できる指定容量は、実装ﾒﾓﾘ容量等によって左右されます。戻値はｾｸﾞﾒﾝﾄ値で表わされ、ﾒﾓﾘ管理ﾎﾟｲﾝﾀ+16(通常PSP先頭ｱﾄﾞﾚｽ)を示します。この機能では、当然MCBは作成されますが、PSPは作成されません。PSPが必要な場合は、26Hの新しいPSP作成で作成します。
【引数】
BX 容量 (ﾊﾟﾗｸﾞﾗﾌ数)
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
BX | ｴﾗｰ時 | 割り当て可能最大ﾊﾟﾗｸﾞﾗﾌ数
AX | 成功時 | 確保したﾒﾓﾘの先頭ｾｸﾞﾒﾝﾄ値
ｴﾗｰ時
07H | ﾒﾓﾘ管理異常
08H | 空きﾒﾓﾘ不足
【参考】
58H ﾒﾓﾘ領域確保方法取得/設定


AH=49H

AH=49H ﾒﾓﾘ領域解放

引数で示されたﾒﾓﾘ領域を解放します。この引数の値はﾒﾓﾘ管理ﾎﾟｲﾝﾀではなく、本来のﾌﾟﾛｾｽ管理ﾎﾟｲﾝﾀとなります。48Hで割り当てたﾒﾓﾘの場合は、戻値の値が該当します。
【引数】
ES 解放するﾒﾓﾘ領域先頭ｾｸﾞﾒﾝﾄ値 (48H参照)
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX ｴﾗｰ時
07H | ﾒﾓﾘ管理異常
09H | 不当なﾒﾓﾘ領域


AH=50H

AH=50H ﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)ｾｸﾞﾒﾝﾄ値設定

ﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)のｾｸﾞﾒﾝﾄ値を設定します。この結果、設定したPSPのﾌﾟﾛｾｽに実行権が移動します。
【引数】
BX PSPのｾｸﾞﾒﾝﾄ値
【戻値】
無し (新PSPのﾌﾟﾛｾｽが実行されるために戻って来ません。)


AH=51H

AH=51H ﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)ｾｸﾞﾒﾝﾄ値取得

現ﾌﾟﾛｾｽのﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)のｾｸﾞﾒﾝﾄ値を取得します。62Hと同一機能です。
【引数】
無し
【戻値】
BX PSPのｾｸﾞﾒﾝﾄ値


AH=54H

AH=54H ﾍﾞﾘﾌｧｲ状態取得

ﾃﾞｨｽｸの書き込み時のﾍﾞﾘﾌｧｲの有無を取得します。
【引数】
無し
【戻値】
AL | 0 | 無し
 | 1 | 有り
【参考】
2EH ﾍﾞﾘﾌｧｲ指定/解除


AH=56H

AH=56H ﾌｧｲﾙ名変更、移動 (ﾃﾞｨﾚｸﾄﾘ名も可、同ﾄﾞﾗｲﾌﾞ内)

元ﾌｧｲﾙ名のﾌｧｲﾙの名前を先ﾌｧｲﾙ名に変更します。ﾃﾞｨﾚｸﾄﾘが異なる場合は、ﾌｧｲﾙの移動を伴います。但し、異なるﾄﾞﾗｲﾌﾞ間ではｴﾗｰとなります。また、元、先ともﾃﾞｨﾚｸﾄﾘの場合は、名前の変更のみ可能です。
【引数】
DS:DX | 元ﾌｧｲﾙ、ﾃﾞｨﾚｸﾄﾘ名文字列ﾎﾟｲﾝﾀ (ASCIZ)
ES:DI | 先ﾌｧｲﾙ、ﾃﾞｨﾚｸﾄﾘ名文字列ﾎﾟｲﾝﾀ (ASCIZ)
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX ｴﾗｰ時
02H | 元指定ﾌｧｲﾙが存在しない
05H | 元ﾌｧｲﾙがﾃﾞｨﾚｸﾄﾘか、先ﾌｧｲﾙが既に存在か、ﾌｧｲﾙが多すぎる


AH=57H

AH=57H ﾌｧｲﾙの日付時間取得/設定

ﾊﾝﾄﾞﾙ番号で示されるﾌｧｲﾙの日時情報を取得/設定します。
【引数】
DX 設定時 日付
ﾋﾞｯﾄ | 意味
15～9 | 年 (0～119 : 1980基準)
8～5 | 月 (1～12)
4～0 | 日 (1～31)
CX 設定時 時刻
ﾋﾞｯﾄ | 意味
15～11 | 時 (0～23)
10～6 | 分 (0～59)
5～0 | 秒 (0～29 : 2秒単位)
BX | ﾊﾝﾄﾞﾙ番号
AL | 0 | 取得
1 | 設定
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
DX | 成功時 | 日付
CX | 成功時 | 時刻
AX | 成功時 | 00H
ｴﾗｰ時
01H | ALの指定が無効
06H | 指定ﾊﾝﾄﾞﾙ番号が、現在ｵｰﾌﾟﾝされていない


AH=58H

AH=58H ﾒﾓﾘ領域確保方法取得/設定

48H等で確保するﾒﾓﾘの確保方法を取得、設定します。

 ① 確保方法取得
【引数】
AL 00H
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX 成功時
ﾋﾞｯﾄ | 意味
15～8 | 未定義 (常に0)
7～6 領域区分
0 | ｺﾝﾍﾞﾝｼｮﾅﾙ･ﾒﾓﾘに確保
1 | 上位ﾒﾓﾘ領域(UMB)に確保
2 | UMB、ｺﾝﾍﾞﾝｼｮﾅﾙの順に確保
5～0 方法区分
0 | ﾒﾓﾘ下位側から確保
1 | 必要最小ﾒﾓﾘから確保
2 | ﾒﾓﾘ上位側から確保
ｴﾗｰ時
01H ALの指定が無効

② 確保方法設定
【引数】
BX 確保方法
ﾋﾞｯﾄ | 意味
15～8 | 未定義 (常に0)
7～6 領域区分
1 | 上位ﾒﾓﾘ領域(UMB)に確保
2 | UMB、ｺﾝﾍﾞﾝｼｮﾅﾙの順に確保
5～0 方法区分
0 | ﾒﾓﾘ下位側から確保
1 | 必要最小ﾒﾓﾘから確保
2 | ﾒﾓﾘ上位側から確保
AL 01H
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX ｴﾗｰ時
01H ALの指定が無効

③ 上位ﾒﾓﾘ領域のﾘﾝｸ状態取得

【引数】
AL 02H
【戻値】
AX | 0 | ﾘﾝｸされていない
 | 1 | ﾘﾝｸされている

④ 上位ﾒﾓﾘ領域のﾘﾝｸ状態設定

【引数】
BX | 0 | ﾘﾝｸしない
 | 1 | ﾘﾝｸする
AL | 03H
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX ｴﾗｰ時
01H | 無効な機能
07H | 不正なﾒﾓﾘ制御


AH=59H

AH=59H 拡張ｴﾗｰ･ｺｰﾄﾞ取得

ｴﾗｰ時の詳細情報を取得します。この機能を実行するとES, DS, BP, DI, SI, DX, CLﾚｼﾞｽﾀが破壊されます。
【引数】
BX 0 (常に0を設定)
【戻値】
CH | 発生場所 (BH=5時のみ)
 | 01H | 不明
 | 02H | ﾃﾞｨｽｸ等のﾗﾝﾀﾞﾑ･ｱｸｾｽ･ﾌﾞﾛｯｸ･ﾃﾞﾊﾞｲｽ
 | 03H | ﾈｯﾄﾜｰｸ
 | 04H | ﾌﾟﾘﾝﾀ等のｼｰｹﾝｼｬﾙ･ｱｸｾｽ･ｷｬﾗｸﾀ･ﾃﾞﾊﾞｲｽ
 | 05H | ﾒﾓﾘ (RAM)
BH | ｴﾗｰｸﾗｽ
 | 01H | ﾒﾓﾘ容量、IOﾁｬﾈﾙ等の資源不足
 | 02H | ｴﾗｰではないがﾌｧｲﾙ･ﾛｯｸ等で終了すべき一時的状況
 | 03H | ｱｸｾｽ特権ｴﾗｰ (ﾈｯﾄﾜｰｸ)
 | 04H | ｼｽﾃﾑ･ｿﾌﾄｳｪｱの内部ｴﾗｰ
 | 05H | ﾊｰﾄﾞｳｪｱに起因するｴﾗｰ
 | 06H | 現在のﾌﾟﾛｾｽが原因で無いｼｽﾃﾑ･ｿﾌﾄｳｪｱのｴﾗｰ
 | 07H | ｱﾌﾟﾘｹｰｼｮﾝ･ﾌﾟﾛｸﾞﾗﾑのｴﾗｰ
 | 08H | ﾌｧｲﾙ又は項目が無い
 | 09H | ﾌｧｲﾙ又は項目が無効なﾌｫｰﾏｯﾄ、ﾀｲﾌﾟ等
 | 0AH | ﾌｧｲﾙ又は項目が内部的にﾛｯｸされている
 | 0BH | ﾃﾞｨｽｸﾄﾞﾗｲﾌﾞに問題がある
 | 0CH | その他の原因によるｴﾗｰ
BL | 対応処理
 | 01H | 再試行、ﾕｰｻﾞに確認を求める
 | 02H | 休止後に再試行
 | 03H | ﾄﾞﾗｲﾌﾞ、ﾌｧｲﾙ名等の入力ならば、再入力
 | 04H | ﾒﾓﾘをｸﾘｱし、終了する
 | 05H | 速やかに終了 (重大な異常)
 | 06H | ｴﾗｰｺｰﾄﾞ(AX)を参考に処理
 | 07H | ﾃﾞｨｽｸ変更、再試行等をﾕｰｻﾞ側で処理
AX | ｴﾗｰ･ｺｰﾄﾞ


AH=62H

AH=62H ﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)ｾｸﾞﾒﾝﾄ値取得

現ﾌﾟﾛｾｽのﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾚﾌｨｯｸｽ(PSP)のｾｸﾞﾒﾝﾄ値を取得します。51Hと同一機能です。
【引数】
無し
【戻値】
BX PSPのｾｸﾞﾒﾝﾄ値


AH=33H:AL=0,1

AH=33H:AL=0,1 ﾌﾞﾚｰｸ･ﾁｪｯｸ取得/設定

ﾌﾞﾚｰｸ(^C:03H)処理の範囲を指定します。01H～0CHのDOSｺｰﾙは常時ﾌﾞﾚｰｸ検査をしますが、その他のDOSｺｰﾙでのﾌﾞﾚｰｸ検査の許可/禁止を取得、設定します。
【引数】
DL 設定時
0 | 禁止
1 | 許可
AL
 0
取得
1 設定
【戻値】
DL
 0
禁止
1 許可


AH=33H:AL=05H

AH=33H:AL=05H 起動ﾄﾞﾗｲﾌﾞ取得

MS-DOSが起動されたﾄﾞﾗｲﾌﾞ番号を取得します。
【引数】
AL 5
【戻値】
DL ﾄﾞﾗｲﾌﾞ番号 (0=A:, 1=B:, ･･･)
AL
≠0FFH | 正常終了
0FFH | 中止終了 (ｴﾗｰ)


AH=33H:AL=06H

AH=33H:AL=06H ﾊﾞｰｼﾞｮﾝ番号取得

MS-DOSのﾊﾞｰｼﾞｮﾝ番号を取得します。ﾊﾞｰｼﾞｮﾝによってDOSｺｰﾙの機能範囲等が異なりますので、ｱﾌﾟﾘｹｰｼｮﾝ･ﾌﾟﾛｸﾞﾗﾑにあっては、この機能によりﾊﾞｰｼﾞｮﾝ番号を確認して処理をするようにします。この結果、ﾊﾞｰｼﾞｮﾝの違いによる暴走、破壊を回避することができます。戻り値はすべて2進数です。この機能はMS-DOSのﾊﾞｰｼﾞｮﾝ4.0以降で有効です。
【引数】
AL 6
【戻値】
DL | ﾘﾋﾞｼﾞｮﾝ番号 (ﾋﾞｯﾄ2～0)
DH
ﾊﾞｰｼﾞｮﾝ･ﾌﾗｸﾞ | 10H | HMAに常駐
 | ≠10H | ｺﾝﾍﾞﾝｼｮﾅﾙに常駐
BL | ﾊﾞｰｼﾞｮﾝ番号の整数部
BH | ﾊﾞｰｼﾞｮﾝ番号の小数部
AL
≠0FFH | 正常終了
0FFH | 中止終了(ｴﾗｰ)
【参考】
30H ﾊﾞｰｼﾞｮﾝ番号取得


AH=44H:AL=00H

AH=44H:AL=00H 装置情報取得 (IOCTL)

IOCTL機能を使用して、ﾃﾞﾊﾞｲｽ情報を取得します。ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞがIOCTL機能をｻﾎﾟｰﾄしているﾃﾞﾊﾞｲｽの場合のみ有効です。
【引数】
BX ﾊﾝﾄﾞﾙ番号
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
DX | 成功時 | 現在の属性
AX ｴﾗｰ時
01H | 無効なﾓｰﾄﾞ番号
06H | 指定ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはｵｰﾌﾟﾝされていない

■ IOCTLﾃﾞﾊﾞｲｽ属性

IOCTL機能で使用されるﾃﾞﾊﾞｲｽにはｷｬﾗｸﾀ型とﾌﾞﾛｯｸ型の2種類があり、各々でﾃﾞﾊﾞｲｽ属性の内容が異なります。また、取得時は16ﾋﾞｯﾄ長の属性ｺｰﾄﾞですが、設定時にはこの16長の内の下位8ﾋﾞｯﾄのみ使用されます。
■ ﾌﾞﾛｯｸ･ﾃﾞﾊﾞｲｽ型 (ﾋﾞｯﾄ7=0)
ﾋﾞｯﾄ | 意味
15 | 予約済
14 4404H, 4405HのIOCTLﾌﾞﾛｯｸ機能
1 | 有り
0 | 無し
13～8 | 予約済
7 | ﾌﾞﾛｯｸ･ﾃﾞﾊﾞｲｽ型 (=0)
6 | 書き込まれたﾌｧｲﾙ
5～0 | ﾄﾞﾗｲﾌﾞ番号 (0=A:, 1=B:, ･･･)
■ ｷｬﾗｸﾀ･ﾃﾞﾊﾞｲｽ型 (ﾋﾞｯﾄ7=1)
ﾋﾞｯﾄ | 意味
15 | 予約済
14 4402H, 4403HのIOCTLｷｬﾗｸﾀ機能
1 | 有り
0 | 無し
13～8 | 予約済
7 | ｷｬﾗｸﾀ･ﾃﾞﾊﾞｲｽ型 (=1)
6 EOF(1AH)ｺｰﾄﾞの扱い
1 | 終了子
0 | 入力ﾃﾞｰﾀ
5 CTRL-x機能 (33Hでﾌﾗｸﾞも必要)
1 | 無し
0 | 有り
4 | 予約済
3 | 1 | ｸﾛｯｸ･ﾃﾞﾊﾞｲｽ
0 | 通常のﾃﾞﾊﾞｲｽ
2 | 1 | NULﾃﾞﾊﾞｲｽ
0 | 通常のﾃﾞﾊﾞｲｽ
1 | 1 | 標準ｺﾝｿｰﾙ出力
0 | 通常のﾃﾞﾊﾞｲｽ
0 | 1 | 標準ｺﾝｿｰﾙ入力
0 | 通常のﾃﾞﾊﾞｲｽ


AH=44H:AL=01H

AH=44H:AL=01H 装置情報設定 (IOCTL)

IOCTL機能を使用して、ﾃﾞﾊﾞｲｽ情報を設定します。ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞがIOCTL機能をｻﾎﾟｰﾄしているﾃﾞﾊﾞｲｽの場合のみ有効です。
【引数】
BX | ﾊﾝﾄﾞﾙ番号
DH | 00H
DL | ﾃﾞﾊﾞｲｽ属性
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX ｴﾗｰ時
01H | 無効なﾓｰﾄﾞ番号
06H | 指定ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはｵｰﾌﾟﾝされていない


AH=44H:AL=02H

AH=44H:AL=02H IOCTLｷｬﾗｸﾀ読み込み

IOCTL機能を使用して、ﾃﾞﾊﾞｲｽからﾃﾞｰﾀを読み込みます。ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞがIOCTL機能をｻﾎﾟｰﾄしているｷｬﾗｸﾀ型ﾃﾞﾊﾞｲｽの場合のみ有効です。
【引数】
DS:DX | ﾊﾞｯﾌｧ･ﾎﾟｲﾝﾀ
CX | ﾊﾞｲﾄ数
BX | ﾊﾝﾄﾞﾙ番号
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX | 成功時 | 実際に読み込まれたﾊﾞｲﾄ数
ｴﾗｰ時
01H | 無効なﾓｰﾄﾞ番号
06H | 指定ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはｵｰﾌﾟﾝされていない


AH=44H:AL=03H

AH=44H:AL=03H IOCTLｷｬﾗｸﾀ書き込み

IOCTL機能を使用して、ﾃﾞﾊﾞｲｽへﾃﾞｰﾀを書き込みます。ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞがIOCTL機能をｻﾎﾟｰﾄしているｷｬﾗｸﾀ型ﾃﾞﾊﾞｲｽの場合のみ有効です。
【引数】
DS:DX | ﾊﾞｯﾌｧ･ﾎﾟｲﾝﾀ
CX | ﾊﾞｲﾄ数
BX | ﾊﾝﾄﾞﾙ番号
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX | 成功時 | 実際に書き込まれたﾊﾞｲﾄ数
ｴﾗｰ時
01H | 無効なﾓｰﾄﾞ番号
06H | 指定ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはｵｰﾌﾟﾝされていない


AH=44H:AL=04H

AH=44H:AL=04H IOCTLﾌﾞﾛｯｸ読み込み

IOCTL機能を使用して、ﾃﾞﾊﾞｲｽからﾃﾞｰﾀを読み込みます。ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞがIOCTL機能をｻﾎﾟｰﾄしているﾌﾞﾛｯｸ型ﾃﾞﾊﾞｲｽの場合のみ有効です。
【引数】
DS:DX | ﾊﾞｯﾌｧ･ﾎﾟｲﾝﾀ
CX | ﾊﾞｲﾄ数
BL | ﾄﾞﾗｲﾌﾞ番号 (ｶﾚﾝﾄ=0, A:=1, B:=2, ･･･)
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX | 成功時 | 実際に読み込まれたﾊﾞｲﾄ数
ｴﾗｰ時
01H | 無効なﾓｰﾄﾞ番号
06H | 指定ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはｵｰﾌﾟﾝされていない


AH=44H:AL=05H

AH=44H:AL=05H IOCTLﾌﾞﾛｯｸ書き込み

IOCTL機能を使用して、ﾃﾞﾊﾞｲｽへﾃﾞｰﾀを書き込みます。ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞがIOCTL機能をｻﾎﾟｰﾄしているﾌﾞﾛｯｸ型ﾃﾞﾊﾞｲｽの場合のみ有効です。
【引数】
DS:DX | ﾊﾞｯﾌｧ･ﾎﾟｲﾝﾀ
CX | ﾊﾞｲﾄ数
BL | ﾄﾞﾗｲﾌﾞ番号 (ｶﾚﾝﾄ=0, A:=1, B:=2, ･･･)
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX | 成功時 | 実際に書き込まれたﾊﾞｲﾄ数
ｴﾗｰ時
01H | 無効なﾓｰﾄﾞ番号
05H | 無効なﾄﾞﾗｲﾌﾞ番号


AH=44H:AL=06H

AH=44H:AL=06H IOCTL入力状態取得

IOCTL機能を使用して、ﾃﾞﾊﾞｲｽの入力状態を取得します。ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞがIOCTL機能をｻﾎﾟｰﾄしている場合のみ有効です。
【引数】
BX ﾊﾝﾄﾞﾙ番号
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX 成功時
00H | ﾋﾞｼﾞｰ (EOF)
0FFH | ﾚﾃﾞｨ
ｴﾗｰ時
01H | 無効なﾓｰﾄﾞ番号
06H | 指定ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはｵｰﾌﾟﾝされていない


AH=44H:AL=07H

AH=44H:AL=07H IOCTL出力状態取得

IOCTL機能を使用して、ﾃﾞﾊﾞｲｽの出力状態を取得します。ﾃﾞﾊﾞｲｽ･ﾄﾞﾗｲﾊﾞがIOCTL機能をｻﾎﾟｰﾄしている場合のみ有効です。
【引数】
BX ﾊﾝﾄﾞﾙ番号
【戻値】
CF | 0 | 成功
1 | ｴﾗｰ
AX 成功時
00H | ﾋﾞｼﾞｰ (EOF)
0FFH | ﾚﾃﾞｨ
ｴﾗｰ時
01H | 無効なﾓｰﾄﾞ番号
06H | 指定ﾊﾝﾄﾞﾙ番号のﾌｧｲﾙはｵｰﾌﾟﾝされていない


POPUP

項目概説

ﾊﾟﾗｸﾞﾗﾌ
ﾊﾞｲﾄ単位の量を1/16(切り捨て)した値で、ｱﾄﾞﾚｽとして使用する場合はｾｸﾞﾒﾝﾄ値に一致します。

ASCIZ文字列
文字列の最後に0(00H)を追加した形式で、00Hが文字列の終了を意味します。

^C,^N,^P,^S機能ｷｰ (ｺｰﾄﾞ)
CTRLｷｰを押しながら対応する文字ｷｰを押すことを意味します。この場合、実際の文字ｺｰﾄﾞはASCIIで制御ｺｰﾄﾞと定義されたｺｰﾄﾞとなります。このCTRLｷｰを押しながらの文字ｷｰ押下では、対応する文字ｷｰのｺｰﾄﾞ-40Hが実際のｺｰﾄﾞとなります。例えば[CTRL]+[C]の場合は、43H-40H=03Hが実際のｺｰﾄﾞとなります。MS-DOSでは、この制御ｺｰﾄﾞを次の意味で使用しています。
機能ｷｰ | 機能
CTRL + C | ﾌﾞﾚｰｸ
CTRL + S | 表示を一時停止
CTRL + N | 標準出力を[CON]に設定
CTRL + P | 標準出力を[PRN]に設定

ﾘﾀﾞｲﾚｸﾄ
入力装置や出力装置を一時的に置き換えることです。ｺﾏﾝﾄﾞ行(COMMAND.COM)で有効です。画面表示をﾌｧｲﾙにﾘﾀﾞｲﾚｸﾄして後でｴﾃﾞｨﾀなどでゆっくり見たり、ﾌﾟﾘﾝﾀで出力したりする場合に使用します。

標準ﾊﾝﾄﾞﾙ番号
MS-DOSではｷｰ入力やCRT出力を含めて、すべての入出力をﾌｧｲﾙとして扱います。ﾌｧｲﾙ操作は対応するﾊﾝﾄﾞﾙという番号で操作します。ﾃﾞｨｽｸ･ﾌｧｲﾙ以外は標準で次のものが定義済みとなっています。ﾃﾞｨｽｸ･ﾌｧｲﾙの標準定義はありません。
番号 | ﾃﾞﾊﾞｲｽ | 備考
0 | 標準入力 (ｷｰﾎﾞｰﾄﾞ) | CON
1 | 標準出力 (CRT) | CON
2 | 標準ｴﾗｰ出力 (CRT) | CON
3 | 標準外部入出力 (RS-232C) | AUX (PC/ATでは未定義)
4 | 標準ﾌﾟﾘﾝﾀ出力 (ﾌﾟﾘﾝﾀ) | PRN