PC-Engineファイルシステム
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
] [
リンク元
]
開始行:
*第7章 PC−Engine ファイルシステム [#qaa0f9b6]
#setlinebreak(on)
*7.1 INT 21H システムファンクションコール [#u...
【ファンクション 0EH】
機能 デフォルト・ドライブの選択
入力 AH=0EH
DL=デフォルトに使用するドライブ番号(A:0,...
出力 AL=接続ドライブ数
破壊 AL,CF
説明 DLで指定されたドライブをデフォルト・ドライブと...
定は、パス名のドライブ指定を省略した場合などに有...
接続されているドライブの総数をALに返します。
【ファンクション 19H】
機能 デフォルト・ドライブの取得
入力 AH=19H
出力 AL=デフォルト・ドライブの番号(A:0,B:1...
破壊 AL,CF
説明 デフォルト・ドライブとして選択されているドライブ...
【ファンクション 1AH】
機能 システム情報エリアの設定
入力 AH=1AH
DX=システム情報エリアの開始オフセットアドレス
DS=システム情報エリアの開始セグメントアドレス
出力 −−−−
破壊 CF
説明 システム情報エリアのアドレスを設定します。このエ...
4EH,4FHでファイルの検索を行う時などに有効...
としては、プロセスコントローラのオフセット80H...
リアにデータを転送する場合、システムは上で設定し...
いますので、DXにはラップ・アラウンドを起こさな...
要があります。現在のシステム情報エリアのアドレス...
Hを用いて取得することができます。
【ファンクション 1BH】
機能 デフォルト・ドライブ・データの取得
入力 AH=1BH
出力 AL=1クラスタ当たりのセクタ数
CX=1セクタ当たりのバイト数
DX=1ドライブ当たりのクラスタ数
BX=メディアIDの格納領域のオフセットアドレス
DS=メディアIDの格納領域のセグメントアドレス
破壊 AX,BX,CX,DX,DS,CF
説明 デフォルト・ドライブの物理情報を各レジスタに返し...
を格納しているエリアのアドレスをDS:BXに返し...
対応するディスクのフォーマットは以下のようになり...
ID タイプ セクタ長 セクタ/トラック...
01H 2D 256バイト 16セクタ ...
02H 2HD 256バイト 26セクタ ...
F9H 2DD 512バイト 9セクタ ...
FBH 2DD 512バイト 8セクタ ...
FDH 2D 512バイト 9セクタ ...
FEH 2HD 1024バイト 8セクタ ...
FFH 2D 512バイト 8セクタ ...
D0H HD −−−− −−−− 5MB
D1H HD −−−− −−−− 10MB
D2H HD −−−− −−−− 20MB
D3H HD −−−− −−−− 40MB
参考 似たファンクションとして、ファンクション1CH,...
【ファンクション 1CH】
機能 ドライブ・データの取得
入力 AH=1CH
DL=ドライブ番号(デフォルト:0,A:1,B:...
出力 AL=FFH:無効なドライブ
その他:1クラスタ当たりのセクタ数
CX=1セクタ当たりのバイト数
DX=1ドライブ当たりのクラスタ数
BX=メディアIDの格納領域のオフセットアドレス
DS=メディアIDの格納領域のセグメントアドレス
破壊 AX,BX,CX,DX,DS,CF
説明 DLで指定されたドライブの物理情報を各レジスタに...
ライブが存在しない場合、ALにFFHを返します。...
タは意味を持ちません。ドライブが存在する場合、各...
理情報を返します。またメディアIDを格納している...
:BXに返します。メディアIDと、対応するディス...
のようになります。
ID タイプ セクタ長 セクタ/トラック...
01H 2D 256バイト 16セクタ ...
02H 2HD 256バイト 26セクタ ...
F9H 2DD 512バイト 9セクタ ...
FBH 2DD 512バイト 8セクタ ...
FDH 2D 512バイト 9セクタ ...
FEH 2HD 1024バイト 8セクタ ...
FFH 2D 512バイト 8セクタ ...
D0H HD −−−− −−−− 5MB
D1H HD −−−− −−−− 10MB
D2H HD −−−− −−−− 20MB
D3H HD −−−− −−−− 40MB
参考 似たファンクションとして、ファンクション1BH,...
【ファンクション 25H】
機能 割込みベクタの設定
入力 AH=25H
AL 割込みタイプ番号
DX 割込み処理ルーチンの開始オフセットアドレス
DS 割込み処理ルーチンの開始セグメントアドレス
出力 −−−−
破壊 CF
説明 指定された割込みベクタの内容を変更します。具体的...
割込みタイプに該当するベクタ領域に、DS:BXで...
ーチンのアドレスをセットします。通常、割込みベク...
そのベクタがすでに使用されているかどうかをチェッ...
もし使用されている場合、ユーザはまずファンクショ...
ベクタの値を読出し、それが新たな割込み処理ルーチ...
ルーチンを組む必要があります。
【ファンクション 2EH】
機能 リードアフタライトモードのセット/リセット
入力 AH=2EH
AL=00H:リードアフタライトの解除
01H:リードアフタライトの設定
出力 −−−−
破壊 CF
説明 レジスタALの値に応じて、リードアフタライトモー...
す。ALが00Hの場合、ディスクへデータを書込む...
ードが選択されます。またALが01Hの場合、ディ...
後、チェックリードにより結果を確認するモードが選...
は、ディスクに重要なデータを書込む際、その信頼性...
す。ただし処理時間が2倍近くになるため、使用時に...
またデフォルトのモードはオフ状態に設定されます。
【ファンクション 2FH】
機能 システム情報エリアのアドレスの取得
入力 AH=2FH
出力 BX=システム情報エリアの開始オフセットアドレス
ES=システム情報エリアの開始セグメントアドレス
破壊 BX,ES,CF
説明 ファンクション1AHで設定した、システム情報エリ...
プロセス実行開始後、一度も1AHが発行されていな...
してプロセスコントローラのオフセット80Hのアド...
【ファンクション 31H】
機能 プロセスの常駐終了
入力 AH=31H
AL=プロセス出力コード
DX=常駐するメモリのパラグラフサイズ
出力 ファンクション4BH実行時のレジスタ(CFを除く)
破壊 全レジスタ
説明 メモリを解放せずにプロセスを終了します。DXには...
パラグラフサイズが、またALにはプロセスの出力コ...
ればなりません。EXE形式のファイルの場合、一般...
同一セグメントに含まれるとは限りませんので、DX...
ログラム全てのサイズを指定する必要があります。ま...
100Hバイトのプロセスコントローラが存在するた...
る値は、このコントローラの大きさを含んでいる必要...
このファンクションは現在のプロセスを終了し、プロ...
モリサイズをDXの値に再設定します。この際、終了...
メモリアサインは変更しませんので、勝手に他のメモ...
ることはありません。
またALの出力コードは上位プロセスに情報を引渡す...
ション4DHを通して読出すことができます。
【ファンクション 33H】
機能 CTRL−Cの検査状態の設定
入力 AH=33H
AL=00H:CTRL−Cの検査状態の取得
01H:CTRL−Cの検査状態の設定
DL=00H:CTRL−Cの検査を禁止(設定時)
01H:CTRL−Cの検査を許可(設定時)
出力 AL=FFH:ALの指定が無効
その他:正常終了
DL=00H:CTRL−Cの検査は禁止(取得時)
01H:CTRL−Cの検査は許可(取得時)
破壊 AL,DL,CF
説明 INT 21Hシステムコールの各ファンクションに...
検査を行うかどうかを指定します。レジスタALはC...
定/取得を制御し、以下のような意味をもっています。
1)AL=00H:CTRL−Cの検査状態をDLに返...
2)AL=01H:CTRL−Cの検査状態をDLの指...
3)AL=その他:エラーとなり、ALにFFHを返...
CTRL−Cの検査が設定され、その入力が検出された...
セスコントローラのCTRL−C抜出しアドレスにもと...
す。
【ファンクション 35H】
機能 割込みベクタの取得
入力 AH=35H
AL=割込みタイプ番号
出力 BX=割込み処理ルーチンの開始オフセットアドレス
ES=割込み処理ルーチンの開始セグメントアドレス
破壊 BX,ES,CF
説明 指定した割込みベクタのアドレスをES:BXに返し...
イプ番号が設定されている必要があります。このファ...
ョン25Hと組になっており、通常はこれら2つのフ...
クタの設定/変更を行います。割込みベクタを変更す...
ンの抜出しアドレスは、前もってこのファンクション...
スに設定すべきです。
【ファンクション 36H】
機能 ディスクのフリースペースの取得
入力 AH=36H
DL=ドライブ番号(デフォルト:0,A:1,B:...
出力 BX=使用可能なクラスタ数
DX=1ドライブ当たりのクラスタ数
AX=FFFFH:無効なドライブ
その他 :1クラスタ当たりのセクタ数
CX=1セクタ当たりのバイト数
破壊 AX,BX,CX,DX,CF
説明 指定したドライブの使用可能なクラスタ数および物理...
ドライブ番号を与え、0がデフォルトを、1がドライ...
を指定します。ドライブ指定が無効の場合、AXにF...
うでなければBXにFATの空きクラスタ数を、また...
ィアの物理情報を返します。
【ファンクション 39H】
機能 ディレクトリの作成
入力 AH=39H
DX=パス名の先頭のオフセットアドレス
DS=パス名の先頭のセグメントアドレス
出力 CF=1,AX=03H:無効なパス名
05H:アクセス不可
0FH:無効なドライブ
CF=0 :正常終了
破壊 AX,CF
説明 DS:DXによって指定されたパス名を解析し、対応...
作成します。パス名はASCIZ形式で設定される必...
無効な文字が検出された場合、解析を中止してAXに...
またパス名のドライブ指定が無効な場合、AXにエラ...
パス中のディレクトリ名、ドライブ名が正常な場合、...
されたデバイスに対し、サブディレクトリを作成しま...
れたパスに該当するディレクトリセクタ上に、指定さ...
ントリを作成し、そのエントリ属性をサブディレクト...
またそのエントリに対応するFATクラスタも確保し...
ラスタの頭のエントリ領域に、その親ディレクトリ[...
レクトリ[.]を作成します。
【ファンクション 3AH】
機能 ディレクトリの削除
入力 AH=3AH
DX=パス名の先頭のオフセットアドレス
DS=パス名の先頭のセグメントアドレス
出力 CF=1,AX=03H:無効なパス名
05H:アクセス不可
0FH:無効なドライブ
10H:現在使用中のディレクトリ
CF=0 :正常終了
破壊 AX,CF
説明 指定されたサブディレクトリを削除します。DS:D...
クトリのパス名を示すASCIZ形式の文字列を指し...
削除するパス名が存在しない場合、AXにエラー03...
するパス名がルートディレクトリであるが、ディレク...
がリードオンリーである場合、アクセスを否定してA...
ます。さらに指定されたパスの指すディレクトリがカ...
ある場合、AXにエラー10Hを返します。
指定されたパスが正常な場合、そのサブディレクトリ...
エントリ、およびFAT上のクラスタチェインを解放...
リは、属性が異なるという以外の点では通常のファイ...
いため、削除の動作はファイルと同様に行われます。
【ファンクション 3BH】
機能 カレント・ディレクトリの変更
入力 AH=3BH
DX=パス名の先頭のオフセットアドレス
DS=パス名の先頭のセグメントアドレス
出力 CF=1,AX=03H:無効なパス名
05H:アクセス不可
0FH:無効なドライブ
CF=0 :正常終了
破壊 AX,CF
説明 カレント・ディレクトリを変更します。DS:DXは...
リのパス名を示すASCIZ形式の文字列を指してい...
更するパス名が存在しない場合、AXにエラー03H...
またパス名が有効である場合、そのディレクトリが新...
トリとして採用されます。
パス名でファイルおよびディレクトリを扱う場合、ル...
(ドライブ指定と最初の¥、および最後のヌル文字...
以内でなければなりません。これはディレクトリパス...
この長さまでしかサポートしていないためです。
【ファンクション 3CH】
機能 ファイルの作成
入力 AH=3CH
CX=ファイルの属性(ディレクトリエントリの属性)
DX=パス名の先頭のオフセットアドレス
DS=パス名の先頭のセグメントアドレス
出力 CF=1,AX=03H:無効なパス名
04H:オープン不可
05H:アクセス不可
0FH:無効なドライブ
CF=0,AX :作成・オープンされたファ...
破壊 AX,CF
説明 ファイルを作成し、作成したファイルをオープンし、...
DS:DXは作成するファイルのパス名を示すASC...
ていなければなりません。またCXにはファイルの属...
はなりません。属性はディレクトリエントリのそれと...
のようなビット対応になっています。
下位1ビット目:リードオンリー属性
下位2ビット目:隠れファイル属性
下位3ビット目:システムファイル属性
下位4ビット目:ボリュームラベル属性(指定不...
下位5ビット目:ディレクトリ属性(指定不可)
下位6ビット目:保存ファイル属性
同一名のファイルが存在しない場合、ディレクトリ上...
のファイルを形成します。また同一名のファイルが存...
リエントリを初期化し、不要となったFATチェイン...
ファイルを読出し/書込みのためにオープンし、ハン...
ただし、指定されたファイルの属性がリードオンリー...
ープンとなります。
また指定されたパス名が無効な場合、AXにエラー0...
ンするためのハンドルに空きがない場合、AXにエラ...
らにファイルが正常にオープン出来ない場合、もしく...
能なもの(ディレクトリ等)が含まれていた場合、A...
ます。このファンクションを用いて、サブディレクト...
ルを作成することは出来ません。
【ファンクション 3DH】
機能 ファイルハンドルのオープン
入力 AH=3DH
AL=オープン属性
DX=パス名の先頭のオフセットアドレス
DS=パス名の先頭のセグメントアドレス
出力 CF=1,AX=02H:存在しないファイル
03H:無効なパス名
04H:オープン不可
05H:アクセス不可
0FH:無効なドライブ
CF=0,AX :オープンされたファイルの...
破壊 AX,CF
説明 このファンクションはDS:DXによって指定された...
を読出し/書込み/双方(読出し&書込み)のモード...
名が無効である場合、もしくはパスが存在しない場合...
返します。またパス名によって指定されたファイルが...
エラー02Hを返します。カレント・プロセス中にオ...
ルの空きがない場合、もしくは内部システムテーブル...
にエラー04Hを返します。さらにリードオンリーの...
ンしようとした場合、もしくは属性がディレクトリの...
にエラー05Hを返します。
このファンクションでは、システムファイル、隠れフ...
いないため、これらのファイルもオープン/アクセス...
ァイルのオープンはALに設定されたオープン属性に...
常にオープンされた場合、AXにファイルハンドルを...
【ファンクション 3EH】
機能 ファイルハンドルのクローズ
入力 AH=3EH
BX=ファイルハンドル
出力 CF=1,AX=05H:アクセス不可
06H:無効なハンドル
CF=0 :正常終了
破壊 AX,BX,CF
説明 ファンクション3CH,3DHによってオープンされ...
ます。BXにはオープンされているファイルハンドル...
なりません。ファイルハンドルに誤りがある場合、も...
ローズされている場合、AXにエラー06Hを返しま...
ファイルハンドルに誤りがない場合、PCENGIN...
クローズし、そのファイルに対応する全てのシステム...
ます。
【ファンクション 3FH】
機能 ファイルデータの読込み
入力 AH=3FH
BX=ファイルハンドル
CX=読込むべきバイト数
DX=読込みバッファのオフセットアドレス
DS=読込みバッファのセグメントアドレス
出力 CF=1,AX=05H:アクセス不可
06H:無効なハンドル
CF=0,AX :読込まれたバイト数
破壊 AX,CF
説明 ハンドルによって指定されたファイルからデータを読...
イルハンドルが、CXには読込むべきデータのバイト...
ばなりません。また、DS:DXは読込んだデータの...
していなければなりません。指定されたファイルが読...
合、AXにエラー05Hを返します。またファイルハ...
いない場合、AXにエラー06Hを返します。
エラーがない場合、AXには読込んだデータのバイト...
ポインタが既に終点に達しているファイルを読込もう...
0になります。またCXで指定された読込みバイト数...
より大きい場合、AXにはCXよりも小さな値を返し...
定されたバイト数の全てがバッファ領域に転送される...
【ファンクション 40H】
機能 ファイルデータの書込み
入力 AH=40H
BX=ファイルハンドル
CX=書込むべきバイト数
DX=書込みバッファのオフセットアドレス
DS=書込みバッファのセグメントアドレス
出力 CF=1,AX=05H:アクセス不可
06H:無効なハンドル
CF=0,AX :書込まれたバイト数
破壊 AX,CF
説明 ハンドルによって指定されたファイルにデータを書込...
ルハンドルが、CXには書込むべきデータのバイト数...
なりません。またDS:DXは書込みデータの格納領...
なければなりません。指定されたファイルが書込み禁...
ラー05Hを返します。またファイルハンドルがオー...
AXにエラー06Hを返します。
エラーがない場合、AXには書込まれたバイト数を返...
クに書込む余裕がない場合、AXはCXで指定したバ...
示します。この時、一応書込みが行われているのでC...
このため、このファンクションの実行後は必ずAXの...
す。
【ファンクション 41H】
機能 ファイルの削除
入力 AH=41H
DX=削除するパス名を指す文字列のオフセットアド...
DS=削除するパス名を指す文字列のセグメントアド...
出力 CF=1,AX=02H:存在しないファイル
03H:無効なパス名
05H:アクセス不可
サブディレクトリエントリ
リードオンリーのエントリ
0FH:無効なドライブ
CF=0 :正常終了
破壊 AX,CF
説明 DS:DXによって指定されたパス名のファイルを削...
ス名はASCIZ形式の文字列でなければなりません...
合、AXにエラー03Hを返します。また該当するフ...
AXにエラー02Hを返します。さらにパス名の指定...
トリまたはリードオンリーのファイルである場合、A...
ます。
ファイルが存在し、かつ書込みが許されている場合に...
します。具体的には、該当するディレクトリエントリ...
スタチェインを解放することで処理を完了します。な...
ァイルを削除する場合には、まずファンクション43...
後、このファンクションを用いるようにする必要があ...
【ファンクション 42H】
機能 ファイルポインタの移動
入力 AH=42H
AL=移動方法
BX=ファイルハンドル
CX=移動するバイト数(上位16ビット)
DX=移動するバイト数(下位16ビット)
出力 CF=1,AX=01H:無効な移動方法
06H:無効なハンドル
CF=0,DX :新規のポインタ位置(上位...
AX :新規のポインタ位置(下位...
破壊 AX,DX,CF
説明 指定されたハンドルのファイルの読込み/書込みポイ...
ポインタは32ビットの絶対表現によるファイルのバ...
ファンクション3FH、40Hはこのポインタを参照...
書込みを行っているため、このポインタを制御するこ...
部をスキップしたり、逆に戻って読出し/書込みを行...
はポインタの移動方法で、以下の値を設定します。
00H:ポインタは、ファイルの先頭からのオフ...
す。
01H:ポインタは、現在のロケーションにオフ...
移動します。
02H:ポインタは、ファイルの終わりにオフセ...
動します。
結果として得られるDX:AXは実際のポインタロケ...
って、CX:DX=0でこのファンクションを実行し...
をDX:AXに返します。またポインタの移動方法と...
ファイル内のロケーションを得るためには、CX:D...
する必要があります。
ALの指定が00H〜02H以外の場合、AXにエラ...
たハンドルがオープンされていない場合には、AXに...
【ファンクション 43H】
機能 ファイルの属性の取得/設定
入力 AH=43H
AL=00H:ファイル属性の取得
01H:ファイル属性の設定
CX=設定すべき属性(設定時)
DX=パス名を指す文字列のオフセットアドレス
DS=パス名を指す文字列のセグメントアドレス
出力 CF=1,AX=01H:ALの指定が範囲外
02H:パス名がボリュームラベル...
03H:無効なパス名
05H:アクセス不可
0FH:無効なドライブ
CF=0,CX :ファイルの属性(取得時)
破壊 AX,CX,CF
説明 ファイルの属性を得る、または設定します。DS:D...
示すASCIZ形式の文字列を指していなければなり...
るか/設定するかを指定します。ALが00Hの場合...
ます。ALが01Hの場合、CXで指定された属性を...
エントリに設定します。この時、ディレクトリ属性お...
性を変更することは出来ません。ALが00H,01...
AXにエラー01Hを返します。またパス名が不適切...
ー03Hを返します。変更不可能な属性が指定される...
ルの属性を変更しようとした場合、AXにエラー05...
このファンクションの実行はディレクトリフィールド...
を書き変えることにより行われ、CXの値が適切か?...
能か?が検査されます。
【ファンクション 45H】
機能 ファイルハンドルの二重化
入力 AH=45H
BX=ファイルハンドル
出力 CF=1,AX=04H:オープン不可
06H:無効なハンドル
CF=0,AX :新規のファイルハンドル
破壊 AX,CF
説明 指定されたハンドルをもとに新たなハンドルを作成し...
は新旧どちらのハンドルを使用してもアクセスするこ...
ファイルポインタは1つしか使用出来ませんので、双...
す。従って、一方のハンドルがファイルリードやファ...
タロケーションを移動させた場合、他のハンドルのポ...
動してしまいます。BXはオープンされているファイ...
りません。BXに有効なハンドルが指定されなかった...
Hを返します。オープンされているハンドルが多く、...
アに空きがない場合、もしくは現在のプロセスで使用...
ルが存在しない場合、AXにエラー04Hを返します。
【ファンクション 46H】
機能 ファイルハンドルの強制二重化
入力 AH=46H
BX=既存のファイルハンドル
CX=新規のファイルハンドル
出力 CF=1,AX=04H:オ−プン不可
06H:無効なハンドル
CF=0 :正常終了
破壊 AX,CF
説明 指定されたハンドルをもとに新たなハンドルを作成し...
は新旧どちらのハンドルを使用してもアクセスするこ...
ファイルポインタは1つしか使用出来ませんので,双...
す。従って、一方のハンドルがファイルリ−ドやファイ...
タロケ−ションを移動させた場合、他のハンドルのポイ...
動してしまいます。BXはオ−プンされているファイル...
りません。BXに有効なハンドルが指定されなかった...
Hを返します。オ−プンされているハンドルが多く、ハ...
アに空きが無い場合、もしくは現在のプロセスで使用...
ルが存在しない場合、AXに04Hを返します。また...
ンドルでなければなりません。もし既にオ−プンされて...
合、同じくAXにエラ−04Hを返します。
【ファンクション 47H】
機能 カレント・ディレクトリパスの取得
入力 AH=47H
DL=ドライブ番号(デフォルト:0,A:1,B:...
SI=ディレクトリパスを読み込む領域のオフセット...
DS=ディレクトリパスを読み込む領域のセグメント...
出力 CF=1,AX=0Fh:無効なドライブ
CF=0 :正常終了
破壊 AX,CF
説明 指定したドライブのカレントディレクトリのパス名を...
領域に読出します。この領域には63バイト以上の長...
ばなりません。転送されるパス名はル−トディレクトリ...
したASCIZ形式の文字列となります。
例]ABC¥DEF¥GHI
ドライブの指定が無効な場合、AXに0FHを返...
【ファンクション 48H】
機能 メモリエリアの割り当て
入力 AH=48H
BX=割り当てるべきメモリの大きさ(パラグラフサ...
出力 CF=1,AX=07H:PID異常
08H:メモリ不足
BX :割り当て可能なメモリサイズ
CF=0,AX :割り当てたメモリのセグメ...
破壊 AX,BX,CF
説明 BXで指定された大きさのメモリエリアを割当てます...
ラフサイズ(1パラグラフ=16バイト)で表現され...
要求を満足するメモリが存在する場合、新たにPID...
されます。要求を満足するだけのメモリが確保されな...
大のメモリサイズをパラグラフ単位でBXに入れ、A...
ます。メモリの開き領域(空きメモリエリア)を検索...
PIDが発見されると、AXにエラ−07Hを返します...
意味を持ちません。また幾つかの空きメモリエリアが...
らはまず単一のメモリエリアに圧縮され、しかる後,...
断が行なわれます。
割当てる空きメモリエリアの選択は、ファンクション...
リ割当てモ−ドに基づいて行われます。
メモリ割当てモ−ドが00Hの場合、最下位の割当て可...
BXで指定されたメモリサイズを確保します。
メモリ割当てモ−ドが01Hの場合、全メモリ中で割当...
モリ領域に、BXで指定されたメモリサイズを確保し...
メモリ割当てモ−ドが02Hの場合、最上位の割当て可...
BXで指定されたメモリサイズを確保します。
【ファンクション 49H】
機能 割当てたメモリエリアの解放
入力 AH=49H
ES=解放すべきメモリエリアのセグメントアドレス
出力 CF=1,AX=07H:PID異常
CF=00 :正常終了
破壊 AX,CF
説明 ファンクション48Hによって割当てたメモリエリア...
モリエリアのセグメントアドレス(PIDの直後のセ...
ければなりません。ESに対応するPIDが矛盾した...
AXにエラ−07Hを返します。このファンクションで...
メモリエリアの圧縮は行ないません。
【ファンクション 4AH】
機能 割当てたメモリエリアの変更
入力 AH=4AH
ES=メモリエリアの先頭のセグメントアドレス
BX=変更したいメモリサイズ(パラグラフ単位)
出力 CF=1,AX=07H:PID異常
08H:メモリ不足
BX :変更可能な最大メモリサイズ
CF=0 :正常終了
破壊 AX,BX,CF
説明 ファンクション48Hで割当てたメモリエリアのサイ...
メモリエリアのセグメントアドレス(PIDの直後の...
なければなりません。またBXには変更したいメモリ...
で指定されていなければなりません。ESに対応する...
を含んでいた場合、AXにエラ−07Hを返します。
このファンクションでは、PIDのメモリサイズフィ−...
指定するサイズの方が小さい場合、ESに対応するP...
−ルドをBXの値に変更し、[ES+BX+1:0]の...
モリエリアを示すPIDを設置します。このPIDの...
は、ESで指定されたPIDの<旧メモリサイズ−BX...
逆に、PIDのメモリサイズフィ−ルドの値よりもBX...
合、ESに対応するPIDの次のPIDを調べ、空き...
空きエリアのPIDが連続している場合には、まずそ...
アに圧縮し、そうして得られた空きメモリサイズと現...
ズを加算します。<加算した値+1>(最大変更可能...
それよりも大きい場合、 ESに対応するPIDのメ...
BXの値に変更し、[ES+BX+1:0]の位置に...
アを示すPIDを設置します。このPIDのメモリサ...
更可能メモリサイズ−BX−1>となります。
また、最大変更可能メモリサイズがBXの指定より小...
の十分な領域がないのでBXに最大変更可能メモリサ...
−08Hを返します。
【ファンクション 4B00H】
機能 プロセスの実行
入力 AH=4BH
AL=00H
DX=実行するファイル名のパス名のオフセットアド...
DS=実行するファイル名のパス名のセグメントアド...
BX=パラメ−タブロック位置のオフセットアドレス
ES=パラメ−タブロック位置のセグメントアドレス
出力 CF=1,AX=01H:ALの指定が範囲外
02H:存在しないファィル
03H:無効なパス名
05H:アクセス不可
07H:PID異常
08H:ロ−ドメモリ不足
システムメモリ不足
0FH:無効なドライブ
CF=0 :正常終了
破壊 AX,CF
説明 このファンクションはDS:DXによって指定された...
グラム)をロ−ド実行します。即ち、プロセスの実行を...
は実行するファイルのパス名を指していなければなり...
イト以内)。またES:BXはパラメ−タブロックを指...
せん。このパラメ−タブロックは次の2項目によって構...
1)渡される環境セグメントのアドレス(2バイト)
下位プロセスが使用する環境エリアのセグメント...
し、上位プロセスの環境をそのまま下位プロセス...
を指定します。
2)渡されるコマンド行の格納アドレス(4バイト)
下位プロセスが使用するコマンド行の格納アドレ...
1バイト目がコマンドの文字数、第2バイト以降...
全体が128バイト以下でなくてはなりません.
このファンクションをコ−ルする上位プロセスは、下位...
行するのに十分なメモリ領域を、ファンクション4A...
しておく必要があります。このファンクションは、パ...
BXに基づいてプロセスコントロ−ラを作成し、DS:...
イルをロ−ド・実行します。また上位プロセスでオ−プ...
の全てを下位プロセスに引き渡します。
下位プロセスに渡される環境セグメントは個々環境情...
字列で形成されています。それぞれの文字列は連続し...
の最後は00Hで終わります。従って、このセグメン...
つ連続します。環境セグメントの格納アドレスが00...
は上位プロセスの環境をそのまま下位プロセスに引渡...
グメントを差別化しなければならないようなプロセス...
を指定します。
【ファンクション 4B03H】
機能 プログラムのオ−バ−レイロ−ド
入力 AH=4BH
AL=03H
DX=実行するファイル名のパス名のオフセットアド...
DS=実行するファイル名のパス名のセグメントアド...
BX=パラメ−タブロック位置のオフセットアドレス
ES=パラメ−タブロック位置のセグメントアドレス
出力 CF=1,AX=01H:ALの指定が範囲外
02H:存在しないファィル
03H:無効なパス名
05H:アクセス不可
07H:PID異常
08H:ロ−ドメモリ不足
システムメモリ不足
0FH:無効なドライブ
CF=0 :正常終了
破壊 AX,CF
説明 このファンクションはDS:DXによって指定された...
グラム)をロ−ドします。DS:DXはロ−ドするファ...
いなければなりません(パス名は64バイト以内)。...
−タブロックを指していなければなりません。このパラ...
2項目によって構成されています。
1)ロ−ドセグメント(2バイト)
プログラムをロ−ドすべきセグメントアドレスを指...
2)リロケ−ション要素(2バイト)
ロ−ドしたプログラムをリロケ−トしなければなら...
ラムのリロケ−ションを開始するセグメントアドレ...
このファンクションをコ−ルするプロセスは、プログラ...
自分のメモリエリア内に用意する必要があります。従...
ンではメモリの割当ては行わず、指定されたセグメン...
ドします。ただし、プロセスのメモリエリアを越えて...
ません。この場合、AXにエラ−08Hを返します。
具体的な処理としては、ES:BXによって指定され...
ら、DS:DXによって指定されたファイル(プログ...
リロケ−ション不要のプログラムの場合、ロ−ド直後終...
ョンが必要な場合、ファイル上のリロケ−ション情報を...
し、次にファイル上のプログラムをES:BXによっ...
アドレスにロ−ドします。その後、リロケ−ション情報...
ログラムをリロケ−トし、処理を終了します。
【ファンクション 4CH】
機能 プロセスの終了
入力 AH=4CH
AL=プロセス終了コ−ド
出力 ファンクション4BH実行時のレジスタ(CFを除く)
破壊 全レジスタ
説明 現在のプロセスを終了し、上位プロセスに制御を戻し...
プロセスの終了コ−ドを設定します。この出力コ−ドは...
を引渡すためのもので、ファンクション4DHを通じ...
照されます。また現在のプロセスのハンドルは全て無...
ン4BH実行時の上位プロセスのハンドル状態が復帰...
【ファンクション 4DH】
機能 下位プロセスからの出力コ−ドの取得
入力 AH=4DH
出力 AH=プロセス終了コ−ド
AL=プロセス出力コ−ド
破壊 AX,CF
説明 ファンクション31H,4CHによってシステムワ−ク...
終了コ−ドおよび出力コ−ドを取得します。このファン...
−ドを1回しか返しませんので、下位プロセスの実行後...
には上位プロセスが記憶しておく必要があります(2...
Hを返します)。終了コ−ドは、プロセスの終了課程を...
な内訳になっています。
00H:正常終了。
01H:CTRL−Cによる終了。
02H:ハ−ドウェア・エラ−終了。
03H:プログラム常駐のままの終了。
【ファンクション 4EH】
機能 最初に一致するファイルの検索
入力 AH=4EH
CX=検索する属性
DX=検索するパス名を示すASCIZ形式の文字列...
DS=検索するパス名を示すASCIZ形式の文字列...
出力 CF=1,AX=03H:無効なパス名
05H:アクセス不可
0FH:無効なドライブ
12H:ファイル検出不可
CF=0 :正常終了
破壊 AX,CF
説明 DS:DXによって指定されたパス名に該当するファ...
名にはワイルドカ−ド[?,*]が使用できます。最初...
情報がシステム情報エリアに格納されます。検索の対...
れた属性以下のファイルです。例えば、CXに00H...
のファイルとリ−ドオンリ−のファイルのみの検索にな...
設定された場合、通常のファイルの他に、隠しファイ...
ディレクトリが検索されます。全てのファイルを検索...
Hを設定してください.
検索するパス名に異常な文字が含まれている場合、A...
ます。またパス名の指定するドライブが存在しない場...
を返します。検索した結果、パス名に該当するファイ...
AXにエラ−12Hを返します。
システム情報エリアに格納されるデ−タ
┌──────┬──────┬──────┬──────┐
00H│ │ │ │ │
├──────┼──────┼──────┼──────┤
│ │ │ │ │
├──────┼──────┴──────┼──────┤
│ │ 予約域(21バイト) │ ...
├──────┼──────┬──────┼──────┤
│ │ │ │ │
├──────┴──────┼──────┼──────┤
│ ┃ │ │ │
├──────┬──────┼──────┴──────┤
14H│ │ 検索属性 │ ファイルの最終時刻 ...
├──────┴──────┼─────────────┤
18H│ ファイルの最終日付 │ ファイルのサイズ(下...
├─────────────┼──────┬──────┤
1CH│ ファイルのサイズ(上位) │ │ ...
├──────┬──────┼──────┼──────┤
│ │ │ │ │
├──── 検索したファイル名(13バイト) ─────┤
│ │ │ │ │
├──────┼──────┼──────┼──────┘
28H│ │ │ │←2AH
└──────┴──────┴──────┘
2CH
【ファンクション 4FH】
機能 次に一致するファイルの検索
入力 AH=4FH
出力 CF=1,AX=05H:アクセス不可
12H:ファンクション検出不可
CF=0 :正常終了
破壊 AX,CF
説明 ファンクション4EHによって検索された次のファイ...
れたファイル情報がシステム情報エリアに格納されま...
クション4EHでCXによって指定された属性以下の...
CXに00Hが設定された場合、通常のファイルのみ...
CXに16Hが設定された場合、通常のファイルの他...
テムファイル、ディレクトリが検索されます。全ての...
CXに3FHを設定してください。ファイルの検索は...
繰返すことによって行うことが出来ます。このファン...
エリアさえ適正ならば、4EHを用いなくても次の検...
また検索した結果、パス名に該当するファイルが存在...
12Hを返します。
システム情報エリアに格納されるデ−タ
┌──────┬──────┬──────┬──────┐
00H│ │ │ │ │
├──────┼──────┼──────┼──────┤
│ │ │ │ │
├──────┼──────┴──────┼──────┤
│ │ 予約域(21バイト) │ ...
├──────┼──────┬──────┼──────┤
│ │ │ │ │
├──────┼──────┼──────┼──────┤
│ │ │ │ │
├──────┼──────┼──────┴──────┤
14H│ │ 検索属性 │ ファイルの最終時刻 ...
├──────┴──────┼─────────────┤
18H│ ファイルの最終日付 │ ファイルのサイズ(下...
├─────────────┼──────┬──────┤
1CH│ ファイルのサイズ(上位) │ │ ...
├──────┬──────┼──────┼──────┤
│ │ │ │ │
├──── 検索したファイル名(13バイト) ─────┤
│ │ │ │ │
├──────┼──────┼──────┼──────┘
28H│ │ │ │←2AH
└──────┴──────┴──────┘
2CH
【ファンクション 54H】
機能 リ−ドアフタ−ライトモ−ドの取得
入力 AH=54H
出力 AL=現在のリ−ドアフタ−ライトモ−ドの値
00H:リ−ドアフタ−ライトオフ
01H:リ−ドアフタ−ライトオン
破壊 AL,CF
説明 ディスク書込み時のリ−ドアフタライト機能の動作状態...
ィスク書込み時に書込み動作のみを行う場合、ALに...
た、ディスク書込み時にチェックリ−ドを行う場合、A...
す。このモ−ドはファンクション2EHにより設定出来...
【ファンクション 56H】
機能 ディレクトリエントリの変更
入力 AH=56H
DX=既存ファイルのパス名の格納オフセットアドレス
DS=既存ファイルのパス名の格納セグメントアドレス
DI=新規パス名の格納オフセットアドレス
ES=新規パス名の格納セグメントアドレス
出力 CF=1,AX=02H:存在しないファイル
03H:無効なパス名
05H:アクセス不可
0FH:無効なドライブ
11H:ドライブ間変更
CF=0 :正常終了
AX,CF以外のレジスタは保持されます。
説明 ディレクトリエントリを変更することにより、ファイ...
ファンクションはDS:DXによって指定されたファ...
イルが存在しない場合、AXにエラ−02Hを返します...
た場合、次にES:DIによって指定されたパス名を...
該当するエントリがすでに存在する場合、AXにエラ−...
たドライブの指定が異なる場合、AXにエラ−11Hを...
DS:DX,ES:DIの指定するサブディレクトリ...
:DXの指定するエントリのファイル名(ファイル拡...
DIの指定するファイル名で置き代えられます。この...
領域は変更されません。
DS:DX,ES:DIの指定するサブディレクトリ...
の指定するサブディレクトリ上に、新たなファイルエ...
の時のエントリは、DS:DXエントリのファイル名...
Iの指定するファイル名とが合さったものとなります...
イルエントリは削除されます。
ES:DIによって指定されたファイル名が新たなデ...
ァイル名となります。また、DS:DXによって指定...
ます。
【ファンクション 57H】
機能 ファイルの日付/時刻の取得/設定
入力 AH=57H
AL=00H:日付/時刻の取得
01H:日付/時刻の設定
BX=ファイルハンドル
CX=設定すべき時刻(AL=01H)
DX=設定すべき日付(AL=01H)
出力 CF=1,AX=01H:ALの指定が範囲外
05H:アクセス不可
06H:無効なハンドル
CF=0,CX :ファイルの最終編集時刻(...
DX :ファイルの最終編集日付(...
AX,CX,DX,CF以外のレジスタは保持されま...
説明 ALが00Hの時、ファイルハンドルが示すファイル...
報を返します。またALが01Hの時、ファイルハン...
トリの日付/時刻情報を仮変更します。この変更日時...
むのは、そのファイルハンドルがクロ−ズされる時点と...
BXはオ−プンされているファイルハンドルでなければ...
定されたハンドルがオ−プンされていない場合、AXに...
す。また指定されたALが00H〜01Hの範囲にな...
1Hを返します。
日付/時刻の構成
┌─────┬─────┐
│ CH │ CL │
【時刻】 CX ├───┬─┴─┬───┤
│ 時 │ 分 │ 秒 │
└───┴───┴───┘
5 bits 6 bits 5 bits
┌─────┬─────┐
│ DH │ DL │
【日付】 DX ├────┬┴─┬───┤
│ 年 │ 月 │ 日 │
└────┴──┴───┘
7 bits 4 bits 5 bits
【ファンクション 58H】
機能 メモリ割当てモ−ドの取得/設定
入力 AH=58H
AL=00H:メモリ割当てモ−ドの取得
01H:メモリ割当てモ−ドの設定
BX=00H:下位アドレス(AL=01H)
01H:最小ブロック(AL=01H)
02H:上位アドレス(AL=01H)
出力 CF=1,AX=01H:ALの指定が範囲外
CF=0,AX=00H:下位アドレス(AL=00...
01H:最小ブロック(AL=00...
02H:上位アドレス(AL=00...
破壊 AX,BX,CF
説明 ALが00Hの場合、AXに現在選択されているメモ...
す。ALが01Hの場合、BXによって指定されたメ...
します。メモリ割当てモ−ドは、メモリエリアの設定時...
選択方法を指定するものです。このモ−ドはファンクシ...
参照されます、このモ−ドの内訳を以下に示します。
00H:メモリエリアを確保する際、空き領域の出来...
当てを行います。従って,割当てモ−ドとして...
合、開きメモリ領域の検索は下位アドレスか...
れた適合サイズの空き領域にメモリの割当て...
01H:メモリエリアを確保する際、可能な最小の空...
す。従って、割当てモ−ドとして01Hが選択...
リ領域の検索は下位アドレスから最終アドレ...
適合可能な最小の空きメモリ領域に割当てが...
02H:メモリエリアを確保する際、空き領域の出来...
当てを行います。従って、割当てモ−ドとして...
合、開きメモリ領域の検索は下位アドレスか...
れ、その中で適合可能な最上位のメモリ領域...
ALに00H〜02H以外の値が指定された場合,A...
ます.
【ファンクション 5AH】
機能 一時ファイルの自動作成
入力 AH=5AH
CX=ファイルの属性
DX=作成するパス名の格納オフセットアドレス
DS=作成するパス名の格納セグメントアドレス
出力 CF=1,AX=02H:パス名がボリュ−ムラベルを...
03H:無効なパス名
04H:オ−プン不可
05H:アクセス不可
0FH:無効なドライブ
CF=0,AX :一時ファイルのファイルハ...
破壊 AX,CX,DX,DS,CF
説明 DS:DXには一時ファイルを作成するサブディレク...
のパス名が与えられなければなりません。このパス名...
IZ文字列の長さより13バイト余計に必要であり、...
イルのファイル名が入ります。この時、ファイル名に...
属性にはCXによって指定されたものが用いられます...
クトリ、ボリュ−ムラベルを指定することはできません...
DS:DXは、サブディレクトリ名から一時ファイル...
DS:DX
↓
┌─────────┬─┬─────────────┐
│ ディレクトリ名 │00│ │
└─────────┴─┴─────────────┘
↓
┌─────────┬─┬──┬──┬──┬──┬─┐
│ ディレクトリ名 │¥│"時"│"分"│"秒"│"00"│00│
└─────────┴─┴──┴──┴──┴──┴─┘
"時":時を16進化した文字列(2バイト)
"分":分を16進化した文字列(2バイト)
"秒":秒を16進化した文字列(2バイト)
DS:DXによって指定されたディレクトリが存在しな...
03Hを返します。またファイルハンドルのためのシス...
AXにエラ−04Hを返します。
正常にファイルが形成された場合、AXにファイルハン...
した一時ファイルが発生した場合、新たなファイル名を...
くなるまでこれを繰返します。このファンクションは一...
うだけなので、一時ファイルが不要になった場合、これ...
ます。
【ファンクション 5BH】
機能 新たなファイルの作成
入力 AH=5BH
CX=ファイルの属性
DX=パス名の先頭のオフセットアクセス
DS=パス名の先頭のセグメントアクセス
出力 CF=1,AX=02H:パス名がボリュ−ムラベルを...
03H:無効なパス名
04H:オ−プン不可
05H:アクセス不可
0FH:無効なドライブ
50H:既に存在するファイル
CF=0 :作成・オ−プンされたファイ...
破壊 AX,CF
説明 ファイルを作成し、作成したファイルをオ−プンし、そ...
DS:DXは作成するファイルのパス名を示すASC...
ていなければなりません。またCXにはファイルの属...
はなりません。属性はディレクトリエントリのそれと...
のようなビット対応になっています。
下位1ビット目:リ−ドオンリ−属性
下位2ビット目:隠れファイル属性
下位3ビット目:システムファイル属性
下位4ビット目:ボリュ−ムラベル属性(指定不可)
下位5ビット目:ディレクトリ属性(指定不可)
下位6ビット目:保存ファイル属性
同一名のファイルが存在しない場合、ディレクトリ上に...
のファイルを形成します。その後、ファイルを読出し/...
ンし、ハンドルをAXに返します。ただし、指定された...
ドオンリ−の場合、読出しのみのオ−プンとなります。
また同一名のファイルが既に存在する場合、AXにエラ−...
指定されたパス名が無効な場合、AXにエラ−03Hを返...
るためのハンドルに空きが無い場合、AXにエラ−04H...
ファイルが正常にオ−プン出来ない場合,もしくはCXの...
もの(ディレクトリ等)が含まれている場合、AXにエ...
このファンクションは、ファイルが既に存在してる場合...
ファンクション3CHと同じ動作をします。
*7.2 システムインタラプトコ−ル [#me1b4f02]
23H・・・・・・・CTRL−Cブレ−ク処理
24H・・・・・・・ディスクエラ−ハンドラ
25H・・・・・・・ディスクセクタリ−ド
26H・・・・・・・ディスクセクタライト
【INT 23H】
機能 CTRL−Cブレ−ク処理
入力 −−−−
出力 −−−−
破壊 −−−−
説明 INT 21Hファンクションコ−ルの実行時にCTR...
つCTRL−C検査モ−ドが選択されている場合,シス...
の割込みを起動します.この割込みル−チンは現在実行...
SHELLのコマンド受け付けル−チンに制御を戻しま...
INT 23Hの割込みベクタは,プロセス起動時に...
域にコピ−され,終了時に元の値に戻されますので,こ...
ことにより,プロセス自身のINT 23Hル−チンを...
この際,システムの処理を継続させたい場合には,入...
保存して,IRETで抜ける必要があります.この時...
ァンクションコ−ル起動時のそれと同一です.また割込...
態は以下のようになっていますので,INT 23H...
ップしてIRETを行うと,直接ファンクションコ−ル...
することができます.
下位アドレス
┌──────┐
│ IP │\
├──────┤ │
│ CS │ │INT 23H
├──────┤ │
│ FLAG │/
├──────┤
│ IP │\
├──────┤ │
│ CS │ │INT 21H
├──────┤ │
│ FLAG │/
└──────┘
上位アドレス
CTRL−Cチェックはファンクションの頭で1回だけ...
長い処理時間を要するようなファンクションの場合で...
レ−クをかけることはできません.またファンクション...
−Cのチェックが禁止されている場合,INT 23H...
ません.
【INT 24H】
機能 ディスクエラ−ハンドラ
入力 AH=エラ−境界
AL=エラ−発生時のドライブ
DI=エラ−コ−ド
SI=エラ−発生時のドライバオフセットアドレス
BP=エラ−発生時のドライバオセグメントドレス
出力 AL=ユ−ザ−処理情報
破壊 −−−−
説明 ディスクアクセス中に回復不能なエラ−が検出された場...
24Hの割込みを起動します.この割込みル−チンはエ...
表示し,プロセス中止/アクセス再試行/エラ−無視の...
させます.この選択情報はIRET時にレジスタAL...
この値に基づいて後続の処理を行います.
INT 24Hの割込みベクタは,プロセス起動時に...
域にコピ−され,終了時に元の値に戻されますので,こ...
ことにより,プロセス自身のINT 24Hル−チンを...
この際,入力時のレジスタの保存は一切必要ありませ...
スタック状態は以下のようになっていますので,IN...
INT 21Hのレジスタをポップ・アップしてIR...
ンクションコ−ルの次のアドレスに移行することができ...
下位アドレス
┌──────┐
│ IP │\
│ CS │ │INT 24H
│ FLAG │/
├──────┤
│ AX │\
│ BX │ │
│ CX │ │
│ DX │ │
│ SI │ │INT 21H
│ DI │ │
│ BP │ │
│ DS │ │
│ ES │/
├──────┤
│ IP │\
│ CS │ │INT 21H
│ FLAG │/
└──────┘
上位アドレス
エラ−環境は,その最下位ビットのみが意味を持ち,0の...
ラ−を,1の場合は書込み時のエラ−を指定します.また...
したエラ−の種類を指定し,以下のような内訳になってい...
00H:プロテクトされたディスクへの書込み
01H:存在しないロ−カル・ユニット番号を指定
02H:ドライブが非レディ状態
03H:不正なコマンド番号
04H:FDCのCRCエラ−
05H:コマンドパラメ−タ−領域の長さが不適正
06H:FDCのシ−クエラ−
07H:不正なメディアタイプ
08H:セクタが検出不能
0AH:書込み時のエラ−
0BH:読出し時のエラ−
0CH:不定エラ−
出力時には,ユ−ザが指定した後続処理の内容をレジスタ...
この内訳を以下に示します.
00H:エラ−を無視し,ユ−ザプログラムに制御を戻し...
01H:エラ−が生じた時のドライバの処理を再試行しま...
02H:現在のプロセスを中止し,上位プロセスに処理...
【INT 25H】
機能 ディスクセクタリ−ド
入力 AL=ドライブ番号(0:A,1:B,………)
CX=リ−ドセクタ数
DX=開始セクタ番号
BX=リ−ドバッファのオフセットアドレス
DS=リ−ドバッファのセグメントアドレス
出力 CF=エラ−フラグ
AL=エラ−コ−ド(CF=1)
DI=リ−ドに成功したセクタ数
CX=リ−ドに失敗したセクタ数
破壊 AX,CX,DI,FLAG
説明 ディスクに対し,セクタ単位でのリ−ド処理を行います...
−ルは,RETF命令を用いてユ−ザプログラムに復帰...
側で処理を継続するためには,スタック上に積まれた...
してやる必要があります.このインタラプトコ−ルでエ...
INT 24Hのエラ−処理は起動せず,単にCFを1...
きます.この際,INT 24Hの場合と同一のエラ−...
に返します.またアクセスに成功したセクタの数をレ...
セクタの数をレジスタCXに返します.
指定したセクタの範囲がディスクの最終セクタを越え...
タ数の全てがアクセスできなくても,CFに1を返さ...
の結果は使用しているドライバに依存し,デフォルト...
・ドライバの場合,最終セクタを越えてもエラ−は返し...
【INT 26H】
機能 ディスクセクタライト
入力 AL=ドライブ番号(0:A,1:B,………)
CX=ライトセクタ数
DX=開始セクタ番号
BX=ライトバッファのオフセットアドレス
DS=ライトバッファのセグメントアドレス
出力 CF=エラ−フラグ
AL=エラ−コ−ド(CF=1)
DI=ライトに成功したセクタ数
CX=ライトに失敗したセクタ数
破壊 AX,CX,DI,FLAG
説明 ディスクに対し,セクタ単位でのライト処理を行いま...
−ルは,RETF命令を用いてユ−ザプログラムに復帰...
側で処理を継続するためには,スタック上に積まれた...
してやる必要があります.このインタラプトコ−ルでエ...
INT 24Hのエラ−処理は起動せず,単にCFを1...
きます.この際,INT 24Hの場合と同一のエラ−...
に返します.またアクセスに成功したセクタの数をレ...
セクタの数をレジスタCXに返します.
指定したセクタの範囲がディスクの最終セクタを越え...
タ数の全てがアクセスできなくても,CFに1を返さ...
の結果は使用しているドライバに依存し,デフォルト...
・ドライバの場合,最終セクタを越えてもエラ−は返し...
*7.3 システムエリア [#t8e83b1d]
【プロセスID】
説明 この領域は,メモリエリアの管理を行うのに用いられ...
48H,49H,4AH,4BH,4CHによりその...
各プロセスIDの先頭の1バイトは識別子の役割を果...
ロセスIDを,また5AHが最後のプロセスIDを示...
IDは正方向のチェイン構造をなし,現在のプロセス...
値に,オフセット[+3]に格納されている1ワ−ドの...
のプロセスIDのセグメントアドレスとなります.ま...
格納されている1ワ−ドが0000Hである場合,シス...
アをフリ−とみなします.この領域の内訳を以下に示し...
┌──────┬─────────────┬──────┐
00H│4Dor5A│ メモリの開始セグメント │メモリのパ...
├──────┼──────┬──────┼──────┤
04H│グラフサイズ│ │ │ │
├──────┼──────┴──────┼──────┤
08H│ │ システム予約域 │ ...
├──────┼──────┬──────┼──────┤
0CH│ │ │ │ │
└──────┴──────┴──────┴──────┘
【プロセスコントロ−ラ】
説明 この領域は,実行形式のプログラムの動作を管理する...
ションコ−ル4BHの実行時に,メモリエリアの先頭か...
域に割当てられます(PIDの直後の100Hバイト...
下に示します.
┌──────┬──────┬─────────────┐
00H│ │ │プロセス最終セグメント+...
├──────┴──────┴──────┬──────┤
04H│ システム予約域 ┃ │ ...
├──────┬──────┬──────┴──────┘
08H│ │ │ プロセス終了時の抜出し...
├──────┴──────┼─────────────┤
0CH│アドレス │ INT23Hル−チンの...
├─────────────┼─────────────┐
10H│アドレス(コピ−) │ INT24Hル−チンの...
├─────────────┼──────┬──────┐
14H│アドレス(コピ−) │ │ │
├──────┬──────┼──────┼──────┤
18H│ │ │ │ │
├──────┼──────┼──────┼──────┤
〜 システム予約域 ...
├──────┼──────┼──────┼──────┤
28H│ │ │ │ │
├──────┴──────┼──────┴──────┤
2CH│ プロセス環境セグメント │上位コントロ−ラセグメン...
├──────┬──────┼──────┬──────┤
30H│ │ │ │ │
├──────┼──────┼──────┼──────┤
〜 システム予約域 ...
├──────┼──────┼──────┼──────┤
4CH│ │ │ │ │
├──────┴──────┼──────┼──────┤
50H│ INT 21H │ RETF │ ...
├──────┬──────┼──────┼──────┤
54H│ │ │ │ │
├──────┼──────┼──────┼──────┘
〜 システム予約域 ...
├──────┼──────┼──────┼──────┤
7CH│ │ │ │ │
├──────┼──────┼──────┼──────┤
80H│ │ │ │ │
├──────┼──────┼──────┼──────┤
〜 デフォルトのシステム情報エリア ...
├──────┼──────┼──────┼──────┤
FCH│ │ │ │ │
└──────┴──────┴──────┴──────┘
終了行:
*第7章 PC−Engine ファイルシステム [#qaa0f9b6]
#setlinebreak(on)
*7.1 INT 21H システムファンクションコール [#u...
【ファンクション 0EH】
機能 デフォルト・ドライブの選択
入力 AH=0EH
DL=デフォルトに使用するドライブ番号(A:0,...
出力 AL=接続ドライブ数
破壊 AL,CF
説明 DLで指定されたドライブをデフォルト・ドライブと...
定は、パス名のドライブ指定を省略した場合などに有...
接続されているドライブの総数をALに返します。
【ファンクション 19H】
機能 デフォルト・ドライブの取得
入力 AH=19H
出力 AL=デフォルト・ドライブの番号(A:0,B:1...
破壊 AL,CF
説明 デフォルト・ドライブとして選択されているドライブ...
【ファンクション 1AH】
機能 システム情報エリアの設定
入力 AH=1AH
DX=システム情報エリアの開始オフセットアドレス
DS=システム情報エリアの開始セグメントアドレス
出力 −−−−
破壊 CF
説明 システム情報エリアのアドレスを設定します。このエ...
4EH,4FHでファイルの検索を行う時などに有効...
としては、プロセスコントローラのオフセット80H...
リアにデータを転送する場合、システムは上で設定し...
いますので、DXにはラップ・アラウンドを起こさな...
要があります。現在のシステム情報エリアのアドレス...
Hを用いて取得することができます。
【ファンクション 1BH】
機能 デフォルト・ドライブ・データの取得
入力 AH=1BH
出力 AL=1クラスタ当たりのセクタ数
CX=1セクタ当たりのバイト数
DX=1ドライブ当たりのクラスタ数
BX=メディアIDの格納領域のオフセットアドレス
DS=メディアIDの格納領域のセグメントアドレス
破壊 AX,BX,CX,DX,DS,CF
説明 デフォルト・ドライブの物理情報を各レジスタに返し...
を格納しているエリアのアドレスをDS:BXに返し...
対応するディスクのフォーマットは以下のようになり...
ID タイプ セクタ長 セクタ/トラック...
01H 2D 256バイト 16セクタ ...
02H 2HD 256バイト 26セクタ ...
F9H 2DD 512バイト 9セクタ ...
FBH 2DD 512バイト 8セクタ ...
FDH 2D 512バイト 9セクタ ...
FEH 2HD 1024バイト 8セクタ ...
FFH 2D 512バイト 8セクタ ...
D0H HD −−−− −−−− 5MB
D1H HD −−−− −−−− 10MB
D2H HD −−−− −−−− 20MB
D3H HD −−−− −−−− 40MB
参考 似たファンクションとして、ファンクション1CH,...
【ファンクション 1CH】
機能 ドライブ・データの取得
入力 AH=1CH
DL=ドライブ番号(デフォルト:0,A:1,B:...
出力 AL=FFH:無効なドライブ
その他:1クラスタ当たりのセクタ数
CX=1セクタ当たりのバイト数
DX=1ドライブ当たりのクラスタ数
BX=メディアIDの格納領域のオフセットアドレス
DS=メディアIDの格納領域のセグメントアドレス
破壊 AX,BX,CX,DX,DS,CF
説明 DLで指定されたドライブの物理情報を各レジスタに...
ライブが存在しない場合、ALにFFHを返します。...
タは意味を持ちません。ドライブが存在する場合、各...
理情報を返します。またメディアIDを格納している...
:BXに返します。メディアIDと、対応するディス...
のようになります。
ID タイプ セクタ長 セクタ/トラック...
01H 2D 256バイト 16セクタ ...
02H 2HD 256バイト 26セクタ ...
F9H 2DD 512バイト 9セクタ ...
FBH 2DD 512バイト 8セクタ ...
FDH 2D 512バイト 9セクタ ...
FEH 2HD 1024バイト 8セクタ ...
FFH 2D 512バイト 8セクタ ...
D0H HD −−−− −−−− 5MB
D1H HD −−−− −−−− 10MB
D2H HD −−−− −−−− 20MB
D3H HD −−−− −−−− 40MB
参考 似たファンクションとして、ファンクション1BH,...
【ファンクション 25H】
機能 割込みベクタの設定
入力 AH=25H
AL 割込みタイプ番号
DX 割込み処理ルーチンの開始オフセットアドレス
DS 割込み処理ルーチンの開始セグメントアドレス
出力 −−−−
破壊 CF
説明 指定された割込みベクタの内容を変更します。具体的...
割込みタイプに該当するベクタ領域に、DS:BXで...
ーチンのアドレスをセットします。通常、割込みベク...
そのベクタがすでに使用されているかどうかをチェッ...
もし使用されている場合、ユーザはまずファンクショ...
ベクタの値を読出し、それが新たな割込み処理ルーチ...
ルーチンを組む必要があります。
【ファンクション 2EH】
機能 リードアフタライトモードのセット/リセット
入力 AH=2EH
AL=00H:リードアフタライトの解除
01H:リードアフタライトの設定
出力 −−−−
破壊 CF
説明 レジスタALの値に応じて、リードアフタライトモー...
す。ALが00Hの場合、ディスクへデータを書込む...
ードが選択されます。またALが01Hの場合、ディ...
後、チェックリードにより結果を確認するモードが選...
は、ディスクに重要なデータを書込む際、その信頼性...
す。ただし処理時間が2倍近くになるため、使用時に...
またデフォルトのモードはオフ状態に設定されます。
【ファンクション 2FH】
機能 システム情報エリアのアドレスの取得
入力 AH=2FH
出力 BX=システム情報エリアの開始オフセットアドレス
ES=システム情報エリアの開始セグメントアドレス
破壊 BX,ES,CF
説明 ファンクション1AHで設定した、システム情報エリ...
プロセス実行開始後、一度も1AHが発行されていな...
してプロセスコントローラのオフセット80Hのアド...
【ファンクション 31H】
機能 プロセスの常駐終了
入力 AH=31H
AL=プロセス出力コード
DX=常駐するメモリのパラグラフサイズ
出力 ファンクション4BH実行時のレジスタ(CFを除く)
破壊 全レジスタ
説明 メモリを解放せずにプロセスを終了します。DXには...
パラグラフサイズが、またALにはプロセスの出力コ...
ればなりません。EXE形式のファイルの場合、一般...
同一セグメントに含まれるとは限りませんので、DX...
ログラム全てのサイズを指定する必要があります。ま...
100Hバイトのプロセスコントローラが存在するた...
る値は、このコントローラの大きさを含んでいる必要...
このファンクションは現在のプロセスを終了し、プロ...
モリサイズをDXの値に再設定します。この際、終了...
メモリアサインは変更しませんので、勝手に他のメモ...
ることはありません。
またALの出力コードは上位プロセスに情報を引渡す...
ション4DHを通して読出すことができます。
【ファンクション 33H】
機能 CTRL−Cの検査状態の設定
入力 AH=33H
AL=00H:CTRL−Cの検査状態の取得
01H:CTRL−Cの検査状態の設定
DL=00H:CTRL−Cの検査を禁止(設定時)
01H:CTRL−Cの検査を許可(設定時)
出力 AL=FFH:ALの指定が無効
その他:正常終了
DL=00H:CTRL−Cの検査は禁止(取得時)
01H:CTRL−Cの検査は許可(取得時)
破壊 AL,DL,CF
説明 INT 21Hシステムコールの各ファンクションに...
検査を行うかどうかを指定します。レジスタALはC...
定/取得を制御し、以下のような意味をもっています。
1)AL=00H:CTRL−Cの検査状態をDLに返...
2)AL=01H:CTRL−Cの検査状態をDLの指...
3)AL=その他:エラーとなり、ALにFFHを返...
CTRL−Cの検査が設定され、その入力が検出された...
セスコントローラのCTRL−C抜出しアドレスにもと...
す。
【ファンクション 35H】
機能 割込みベクタの取得
入力 AH=35H
AL=割込みタイプ番号
出力 BX=割込み処理ルーチンの開始オフセットアドレス
ES=割込み処理ルーチンの開始セグメントアドレス
破壊 BX,ES,CF
説明 指定した割込みベクタのアドレスをES:BXに返し...
イプ番号が設定されている必要があります。このファ...
ョン25Hと組になっており、通常はこれら2つのフ...
クタの設定/変更を行います。割込みベクタを変更す...
ンの抜出しアドレスは、前もってこのファンクション...
スに設定すべきです。
【ファンクション 36H】
機能 ディスクのフリースペースの取得
入力 AH=36H
DL=ドライブ番号(デフォルト:0,A:1,B:...
出力 BX=使用可能なクラスタ数
DX=1ドライブ当たりのクラスタ数
AX=FFFFH:無効なドライブ
その他 :1クラスタ当たりのセクタ数
CX=1セクタ当たりのバイト数
破壊 AX,BX,CX,DX,CF
説明 指定したドライブの使用可能なクラスタ数および物理...
ドライブ番号を与え、0がデフォルトを、1がドライ...
を指定します。ドライブ指定が無効の場合、AXにF...
うでなければBXにFATの空きクラスタ数を、また...
ィアの物理情報を返します。
【ファンクション 39H】
機能 ディレクトリの作成
入力 AH=39H
DX=パス名の先頭のオフセットアドレス
DS=パス名の先頭のセグメントアドレス
出力 CF=1,AX=03H:無効なパス名
05H:アクセス不可
0FH:無効なドライブ
CF=0 :正常終了
破壊 AX,CF
説明 DS:DXによって指定されたパス名を解析し、対応...
作成します。パス名はASCIZ形式で設定される必...
無効な文字が検出された場合、解析を中止してAXに...
またパス名のドライブ指定が無効な場合、AXにエラ...
パス中のディレクトリ名、ドライブ名が正常な場合、...
されたデバイスに対し、サブディレクトリを作成しま...
れたパスに該当するディレクトリセクタ上に、指定さ...
ントリを作成し、そのエントリ属性をサブディレクト...
またそのエントリに対応するFATクラスタも確保し...
ラスタの頭のエントリ領域に、その親ディレクトリ[...
レクトリ[.]を作成します。
【ファンクション 3AH】
機能 ディレクトリの削除
入力 AH=3AH
DX=パス名の先頭のオフセットアドレス
DS=パス名の先頭のセグメントアドレス
出力 CF=1,AX=03H:無効なパス名
05H:アクセス不可
0FH:無効なドライブ
10H:現在使用中のディレクトリ
CF=0 :正常終了
破壊 AX,CF
説明 指定されたサブディレクトリを削除します。DS:D...
クトリのパス名を示すASCIZ形式の文字列を指し...
削除するパス名が存在しない場合、AXにエラー03...
するパス名がルートディレクトリであるが、ディレク...
がリードオンリーである場合、アクセスを否定してA...
ます。さらに指定されたパスの指すディレクトリがカ...
ある場合、AXにエラー10Hを返します。
指定されたパスが正常な場合、そのサブディレクトリ...
エントリ、およびFAT上のクラスタチェインを解放...
リは、属性が異なるという以外の点では通常のファイ...
いため、削除の動作はファイルと同様に行われます。
【ファンクション 3BH】
機能 カレント・ディレクトリの変更
入力 AH=3BH
DX=パス名の先頭のオフセットアドレス
DS=パス名の先頭のセグメントアドレス
出力 CF=1,AX=03H:無効なパス名
05H:アクセス不可
0FH:無効なドライブ
CF=0 :正常終了
破壊 AX,CF
説明 カレント・ディレクトリを変更します。DS:DXは...
リのパス名を示すASCIZ形式の文字列を指してい...
更するパス名が存在しない場合、AXにエラー03H...
またパス名が有効である場合、そのディレクトリが新...
トリとして採用されます。
パス名でファイルおよびディレクトリを扱う場合、ル...
(ドライブ指定と最初の¥、および最後のヌル文字...
以内でなければなりません。これはディレクトリパス...
この長さまでしかサポートしていないためです。
【ファンクション 3CH】
機能 ファイルの作成
入力 AH=3CH
CX=ファイルの属性(ディレクトリエントリの属性)
DX=パス名の先頭のオフセットアドレス
DS=パス名の先頭のセグメントアドレス
出力 CF=1,AX=03H:無効なパス名
04H:オープン不可
05H:アクセス不可
0FH:無効なドライブ
CF=0,AX :作成・オープンされたファ...
破壊 AX,CF
説明 ファイルを作成し、作成したファイルをオープンし、...
DS:DXは作成するファイルのパス名を示すASC...
ていなければなりません。またCXにはファイルの属...
はなりません。属性はディレクトリエントリのそれと...
のようなビット対応になっています。
下位1ビット目:リードオンリー属性
下位2ビット目:隠れファイル属性
下位3ビット目:システムファイル属性
下位4ビット目:ボリュームラベル属性(指定不...
下位5ビット目:ディレクトリ属性(指定不可)
下位6ビット目:保存ファイル属性
同一名のファイルが存在しない場合、ディレクトリ上...
のファイルを形成します。また同一名のファイルが存...
リエントリを初期化し、不要となったFATチェイン...
ファイルを読出し/書込みのためにオープンし、ハン...
ただし、指定されたファイルの属性がリードオンリー...
ープンとなります。
また指定されたパス名が無効な場合、AXにエラー0...
ンするためのハンドルに空きがない場合、AXにエラ...
らにファイルが正常にオープン出来ない場合、もしく...
能なもの(ディレクトリ等)が含まれていた場合、A...
ます。このファンクションを用いて、サブディレクト...
ルを作成することは出来ません。
【ファンクション 3DH】
機能 ファイルハンドルのオープン
入力 AH=3DH
AL=オープン属性
DX=パス名の先頭のオフセットアドレス
DS=パス名の先頭のセグメントアドレス
出力 CF=1,AX=02H:存在しないファイル
03H:無効なパス名
04H:オープン不可
05H:アクセス不可
0FH:無効なドライブ
CF=0,AX :オープンされたファイルの...
破壊 AX,CF
説明 このファンクションはDS:DXによって指定された...
を読出し/書込み/双方(読出し&書込み)のモード...
名が無効である場合、もしくはパスが存在しない場合...
返します。またパス名によって指定されたファイルが...
エラー02Hを返します。カレント・プロセス中にオ...
ルの空きがない場合、もしくは内部システムテーブル...
にエラー04Hを返します。さらにリードオンリーの...
ンしようとした場合、もしくは属性がディレクトリの...
にエラー05Hを返します。
このファンクションでは、システムファイル、隠れフ...
いないため、これらのファイルもオープン/アクセス...
ァイルのオープンはALに設定されたオープン属性に...
常にオープンされた場合、AXにファイルハンドルを...
【ファンクション 3EH】
機能 ファイルハンドルのクローズ
入力 AH=3EH
BX=ファイルハンドル
出力 CF=1,AX=05H:アクセス不可
06H:無効なハンドル
CF=0 :正常終了
破壊 AX,BX,CF
説明 ファンクション3CH,3DHによってオープンされ...
ます。BXにはオープンされているファイルハンドル...
なりません。ファイルハンドルに誤りがある場合、も...
ローズされている場合、AXにエラー06Hを返しま...
ファイルハンドルに誤りがない場合、PCENGIN...
クローズし、そのファイルに対応する全てのシステム...
ます。
【ファンクション 3FH】
機能 ファイルデータの読込み
入力 AH=3FH
BX=ファイルハンドル
CX=読込むべきバイト数
DX=読込みバッファのオフセットアドレス
DS=読込みバッファのセグメントアドレス
出力 CF=1,AX=05H:アクセス不可
06H:無効なハンドル
CF=0,AX :読込まれたバイト数
破壊 AX,CF
説明 ハンドルによって指定されたファイルからデータを読...
イルハンドルが、CXには読込むべきデータのバイト...
ばなりません。また、DS:DXは読込んだデータの...
していなければなりません。指定されたファイルが読...
合、AXにエラー05Hを返します。またファイルハ...
いない場合、AXにエラー06Hを返します。
エラーがない場合、AXには読込んだデータのバイト...
ポインタが既に終点に達しているファイルを読込もう...
0になります。またCXで指定された読込みバイト数...
より大きい場合、AXにはCXよりも小さな値を返し...
定されたバイト数の全てがバッファ領域に転送される...
【ファンクション 40H】
機能 ファイルデータの書込み
入力 AH=40H
BX=ファイルハンドル
CX=書込むべきバイト数
DX=書込みバッファのオフセットアドレス
DS=書込みバッファのセグメントアドレス
出力 CF=1,AX=05H:アクセス不可
06H:無効なハンドル
CF=0,AX :書込まれたバイト数
破壊 AX,CF
説明 ハンドルによって指定されたファイルにデータを書込...
ルハンドルが、CXには書込むべきデータのバイト数...
なりません。またDS:DXは書込みデータの格納領...
なければなりません。指定されたファイルが書込み禁...
ラー05Hを返します。またファイルハンドルがオー...
AXにエラー06Hを返します。
エラーがない場合、AXには書込まれたバイト数を返...
クに書込む余裕がない場合、AXはCXで指定したバ...
示します。この時、一応書込みが行われているのでC...
このため、このファンクションの実行後は必ずAXの...
す。
【ファンクション 41H】
機能 ファイルの削除
入力 AH=41H
DX=削除するパス名を指す文字列のオフセットアド...
DS=削除するパス名を指す文字列のセグメントアド...
出力 CF=1,AX=02H:存在しないファイル
03H:無効なパス名
05H:アクセス不可
サブディレクトリエントリ
リードオンリーのエントリ
0FH:無効なドライブ
CF=0 :正常終了
破壊 AX,CF
説明 DS:DXによって指定されたパス名のファイルを削...
ス名はASCIZ形式の文字列でなければなりません...
合、AXにエラー03Hを返します。また該当するフ...
AXにエラー02Hを返します。さらにパス名の指定...
トリまたはリードオンリーのファイルである場合、A...
ます。
ファイルが存在し、かつ書込みが許されている場合に...
します。具体的には、該当するディレクトリエントリ...
スタチェインを解放することで処理を完了します。な...
ァイルを削除する場合には、まずファンクション43...
後、このファンクションを用いるようにする必要があ...
【ファンクション 42H】
機能 ファイルポインタの移動
入力 AH=42H
AL=移動方法
BX=ファイルハンドル
CX=移動するバイト数(上位16ビット)
DX=移動するバイト数(下位16ビット)
出力 CF=1,AX=01H:無効な移動方法
06H:無効なハンドル
CF=0,DX :新規のポインタ位置(上位...
AX :新規のポインタ位置(下位...
破壊 AX,DX,CF
説明 指定されたハンドルのファイルの読込み/書込みポイ...
ポインタは32ビットの絶対表現によるファイルのバ...
ファンクション3FH、40Hはこのポインタを参照...
書込みを行っているため、このポインタを制御するこ...
部をスキップしたり、逆に戻って読出し/書込みを行...
はポインタの移動方法で、以下の値を設定します。
00H:ポインタは、ファイルの先頭からのオフ...
す。
01H:ポインタは、現在のロケーションにオフ...
移動します。
02H:ポインタは、ファイルの終わりにオフセ...
動します。
結果として得られるDX:AXは実際のポインタロケ...
って、CX:DX=0でこのファンクションを実行し...
をDX:AXに返します。またポインタの移動方法と...
ファイル内のロケーションを得るためには、CX:D...
する必要があります。
ALの指定が00H〜02H以外の場合、AXにエラ...
たハンドルがオープンされていない場合には、AXに...
【ファンクション 43H】
機能 ファイルの属性の取得/設定
入力 AH=43H
AL=00H:ファイル属性の取得
01H:ファイル属性の設定
CX=設定すべき属性(設定時)
DX=パス名を指す文字列のオフセットアドレス
DS=パス名を指す文字列のセグメントアドレス
出力 CF=1,AX=01H:ALの指定が範囲外
02H:パス名がボリュームラベル...
03H:無効なパス名
05H:アクセス不可
0FH:無効なドライブ
CF=0,CX :ファイルの属性(取得時)
破壊 AX,CX,CF
説明 ファイルの属性を得る、または設定します。DS:D...
示すASCIZ形式の文字列を指していなければなり...
るか/設定するかを指定します。ALが00Hの場合...
ます。ALが01Hの場合、CXで指定された属性を...
エントリに設定します。この時、ディレクトリ属性お...
性を変更することは出来ません。ALが00H,01...
AXにエラー01Hを返します。またパス名が不適切...
ー03Hを返します。変更不可能な属性が指定される...
ルの属性を変更しようとした場合、AXにエラー05...
このファンクションの実行はディレクトリフィールド...
を書き変えることにより行われ、CXの値が適切か?...
能か?が検査されます。
【ファンクション 45H】
機能 ファイルハンドルの二重化
入力 AH=45H
BX=ファイルハンドル
出力 CF=1,AX=04H:オープン不可
06H:無効なハンドル
CF=0,AX :新規のファイルハンドル
破壊 AX,CF
説明 指定されたハンドルをもとに新たなハンドルを作成し...
は新旧どちらのハンドルを使用してもアクセスするこ...
ファイルポインタは1つしか使用出来ませんので、双...
す。従って、一方のハンドルがファイルリードやファ...
タロケーションを移動させた場合、他のハンドルのポ...
動してしまいます。BXはオープンされているファイ...
りません。BXに有効なハンドルが指定されなかった...
Hを返します。オープンされているハンドルが多く、...
アに空きがない場合、もしくは現在のプロセスで使用...
ルが存在しない場合、AXにエラー04Hを返します。
【ファンクション 46H】
機能 ファイルハンドルの強制二重化
入力 AH=46H
BX=既存のファイルハンドル
CX=新規のファイルハンドル
出力 CF=1,AX=04H:オ−プン不可
06H:無効なハンドル
CF=0 :正常終了
破壊 AX,CF
説明 指定されたハンドルをもとに新たなハンドルを作成し...
は新旧どちらのハンドルを使用してもアクセスするこ...
ファイルポインタは1つしか使用出来ませんので,双...
す。従って、一方のハンドルがファイルリ−ドやファイ...
タロケ−ションを移動させた場合、他のハンドルのポイ...
動してしまいます。BXはオ−プンされているファイル...
りません。BXに有効なハンドルが指定されなかった...
Hを返します。オ−プンされているハンドルが多く、ハ...
アに空きが無い場合、もしくは現在のプロセスで使用...
ルが存在しない場合、AXに04Hを返します。また...
ンドルでなければなりません。もし既にオ−プンされて...
合、同じくAXにエラ−04Hを返します。
【ファンクション 47H】
機能 カレント・ディレクトリパスの取得
入力 AH=47H
DL=ドライブ番号(デフォルト:0,A:1,B:...
SI=ディレクトリパスを読み込む領域のオフセット...
DS=ディレクトリパスを読み込む領域のセグメント...
出力 CF=1,AX=0Fh:無効なドライブ
CF=0 :正常終了
破壊 AX,CF
説明 指定したドライブのカレントディレクトリのパス名を...
領域に読出します。この領域には63バイト以上の長...
ばなりません。転送されるパス名はル−トディレクトリ...
したASCIZ形式の文字列となります。
例]ABC¥DEF¥GHI
ドライブの指定が無効な場合、AXに0FHを返...
【ファンクション 48H】
機能 メモリエリアの割り当て
入力 AH=48H
BX=割り当てるべきメモリの大きさ(パラグラフサ...
出力 CF=1,AX=07H:PID異常
08H:メモリ不足
BX :割り当て可能なメモリサイズ
CF=0,AX :割り当てたメモリのセグメ...
破壊 AX,BX,CF
説明 BXで指定された大きさのメモリエリアを割当てます...
ラフサイズ(1パラグラフ=16バイト)で表現され...
要求を満足するメモリが存在する場合、新たにPID...
されます。要求を満足するだけのメモリが確保されな...
大のメモリサイズをパラグラフ単位でBXに入れ、A...
ます。メモリの開き領域(空きメモリエリア)を検索...
PIDが発見されると、AXにエラ−07Hを返します...
意味を持ちません。また幾つかの空きメモリエリアが...
らはまず単一のメモリエリアに圧縮され、しかる後,...
断が行なわれます。
割当てる空きメモリエリアの選択は、ファンクション...
リ割当てモ−ドに基づいて行われます。
メモリ割当てモ−ドが00Hの場合、最下位の割当て可...
BXで指定されたメモリサイズを確保します。
メモリ割当てモ−ドが01Hの場合、全メモリ中で割当...
モリ領域に、BXで指定されたメモリサイズを確保し...
メモリ割当てモ−ドが02Hの場合、最上位の割当て可...
BXで指定されたメモリサイズを確保します。
【ファンクション 49H】
機能 割当てたメモリエリアの解放
入力 AH=49H
ES=解放すべきメモリエリアのセグメントアドレス
出力 CF=1,AX=07H:PID異常
CF=00 :正常終了
破壊 AX,CF
説明 ファンクション48Hによって割当てたメモリエリア...
モリエリアのセグメントアドレス(PIDの直後のセ...
ければなりません。ESに対応するPIDが矛盾した...
AXにエラ−07Hを返します。このファンクションで...
メモリエリアの圧縮は行ないません。
【ファンクション 4AH】
機能 割当てたメモリエリアの変更
入力 AH=4AH
ES=メモリエリアの先頭のセグメントアドレス
BX=変更したいメモリサイズ(パラグラフ単位)
出力 CF=1,AX=07H:PID異常
08H:メモリ不足
BX :変更可能な最大メモリサイズ
CF=0 :正常終了
破壊 AX,BX,CF
説明 ファンクション48Hで割当てたメモリエリアのサイ...
メモリエリアのセグメントアドレス(PIDの直後の...
なければなりません。またBXには変更したいメモリ...
で指定されていなければなりません。ESに対応する...
を含んでいた場合、AXにエラ−07Hを返します。
このファンクションでは、PIDのメモリサイズフィ−...
指定するサイズの方が小さい場合、ESに対応するP...
−ルドをBXの値に変更し、[ES+BX+1:0]の...
モリエリアを示すPIDを設置します。このPIDの...
は、ESで指定されたPIDの<旧メモリサイズ−BX...
逆に、PIDのメモリサイズフィ−ルドの値よりもBX...
合、ESに対応するPIDの次のPIDを調べ、空き...
空きエリアのPIDが連続している場合には、まずそ...
アに圧縮し、そうして得られた空きメモリサイズと現...
ズを加算します。<加算した値+1>(最大変更可能...
それよりも大きい場合、 ESに対応するPIDのメ...
BXの値に変更し、[ES+BX+1:0]の位置に...
アを示すPIDを設置します。このPIDのメモリサ...
更可能メモリサイズ−BX−1>となります。
また、最大変更可能メモリサイズがBXの指定より小...
の十分な領域がないのでBXに最大変更可能メモリサ...
−08Hを返します。
【ファンクション 4B00H】
機能 プロセスの実行
入力 AH=4BH
AL=00H
DX=実行するファイル名のパス名のオフセットアド...
DS=実行するファイル名のパス名のセグメントアド...
BX=パラメ−タブロック位置のオフセットアドレス
ES=パラメ−タブロック位置のセグメントアドレス
出力 CF=1,AX=01H:ALの指定が範囲外
02H:存在しないファィル
03H:無効なパス名
05H:アクセス不可
07H:PID異常
08H:ロ−ドメモリ不足
システムメモリ不足
0FH:無効なドライブ
CF=0 :正常終了
破壊 AX,CF
説明 このファンクションはDS:DXによって指定された...
グラム)をロ−ド実行します。即ち、プロセスの実行を...
は実行するファイルのパス名を指していなければなり...
イト以内)。またES:BXはパラメ−タブロックを指...
せん。このパラメ−タブロックは次の2項目によって構...
1)渡される環境セグメントのアドレス(2バイト)
下位プロセスが使用する環境エリアのセグメント...
し、上位プロセスの環境をそのまま下位プロセス...
を指定します。
2)渡されるコマンド行の格納アドレス(4バイト)
下位プロセスが使用するコマンド行の格納アドレ...
1バイト目がコマンドの文字数、第2バイト以降...
全体が128バイト以下でなくてはなりません.
このファンクションをコ−ルする上位プロセスは、下位...
行するのに十分なメモリ領域を、ファンクション4A...
しておく必要があります。このファンクションは、パ...
BXに基づいてプロセスコントロ−ラを作成し、DS:...
イルをロ−ド・実行します。また上位プロセスでオ−プ...
の全てを下位プロセスに引き渡します。
下位プロセスに渡される環境セグメントは個々環境情...
字列で形成されています。それぞれの文字列は連続し...
の最後は00Hで終わります。従って、このセグメン...
つ連続します。環境セグメントの格納アドレスが00...
は上位プロセスの環境をそのまま下位プロセスに引渡...
グメントを差別化しなければならないようなプロセス...
を指定します。
【ファンクション 4B03H】
機能 プログラムのオ−バ−レイロ−ド
入力 AH=4BH
AL=03H
DX=実行するファイル名のパス名のオフセットアド...
DS=実行するファイル名のパス名のセグメントアド...
BX=パラメ−タブロック位置のオフセットアドレス
ES=パラメ−タブロック位置のセグメントアドレス
出力 CF=1,AX=01H:ALの指定が範囲外
02H:存在しないファィル
03H:無効なパス名
05H:アクセス不可
07H:PID異常
08H:ロ−ドメモリ不足
システムメモリ不足
0FH:無効なドライブ
CF=0 :正常終了
破壊 AX,CF
説明 このファンクションはDS:DXによって指定された...
グラム)をロ−ドします。DS:DXはロ−ドするファ...
いなければなりません(パス名は64バイト以内)。...
−タブロックを指していなければなりません。このパラ...
2項目によって構成されています。
1)ロ−ドセグメント(2バイト)
プログラムをロ−ドすべきセグメントアドレスを指...
2)リロケ−ション要素(2バイト)
ロ−ドしたプログラムをリロケ−トしなければなら...
ラムのリロケ−ションを開始するセグメントアドレ...
このファンクションをコ−ルするプロセスは、プログラ...
自分のメモリエリア内に用意する必要があります。従...
ンではメモリの割当ては行わず、指定されたセグメン...
ドします。ただし、プロセスのメモリエリアを越えて...
ません。この場合、AXにエラ−08Hを返します。
具体的な処理としては、ES:BXによって指定され...
ら、DS:DXによって指定されたファイル(プログ...
リロケ−ション不要のプログラムの場合、ロ−ド直後終...
ョンが必要な場合、ファイル上のリロケ−ション情報を...
し、次にファイル上のプログラムをES:BXによっ...
アドレスにロ−ドします。その後、リロケ−ション情報...
ログラムをリロケ−トし、処理を終了します。
【ファンクション 4CH】
機能 プロセスの終了
入力 AH=4CH
AL=プロセス終了コ−ド
出力 ファンクション4BH実行時のレジスタ(CFを除く)
破壊 全レジスタ
説明 現在のプロセスを終了し、上位プロセスに制御を戻し...
プロセスの終了コ−ドを設定します。この出力コ−ドは...
を引渡すためのもので、ファンクション4DHを通じ...
照されます。また現在のプロセスのハンドルは全て無...
ン4BH実行時の上位プロセスのハンドル状態が復帰...
【ファンクション 4DH】
機能 下位プロセスからの出力コ−ドの取得
入力 AH=4DH
出力 AH=プロセス終了コ−ド
AL=プロセス出力コ−ド
破壊 AX,CF
説明 ファンクション31H,4CHによってシステムワ−ク...
終了コ−ドおよび出力コ−ドを取得します。このファン...
−ドを1回しか返しませんので、下位プロセスの実行後...
には上位プロセスが記憶しておく必要があります(2...
Hを返します)。終了コ−ドは、プロセスの終了課程を...
な内訳になっています。
00H:正常終了。
01H:CTRL−Cによる終了。
02H:ハ−ドウェア・エラ−終了。
03H:プログラム常駐のままの終了。
【ファンクション 4EH】
機能 最初に一致するファイルの検索
入力 AH=4EH
CX=検索する属性
DX=検索するパス名を示すASCIZ形式の文字列...
DS=検索するパス名を示すASCIZ形式の文字列...
出力 CF=1,AX=03H:無効なパス名
05H:アクセス不可
0FH:無効なドライブ
12H:ファイル検出不可
CF=0 :正常終了
破壊 AX,CF
説明 DS:DXによって指定されたパス名に該当するファ...
名にはワイルドカ−ド[?,*]が使用できます。最初...
情報がシステム情報エリアに格納されます。検索の対...
れた属性以下のファイルです。例えば、CXに00H...
のファイルとリ−ドオンリ−のファイルのみの検索にな...
設定された場合、通常のファイルの他に、隠しファイ...
ディレクトリが検索されます。全てのファイルを検索...
Hを設定してください.
検索するパス名に異常な文字が含まれている場合、A...
ます。またパス名の指定するドライブが存在しない場...
を返します。検索した結果、パス名に該当するファイ...
AXにエラ−12Hを返します。
システム情報エリアに格納されるデ−タ
┌──────┬──────┬──────┬──────┐
00H│ │ │ │ │
├──────┼──────┼──────┼──────┤
│ │ │ │ │
├──────┼──────┴──────┼──────┤
│ │ 予約域(21バイト) │ ...
├──────┼──────┬──────┼──────┤
│ │ │ │ │
├──────┴──────┼──────┼──────┤
│ ┃ │ │ │
├──────┬──────┼──────┴──────┤
14H│ │ 検索属性 │ ファイルの最終時刻 ...
├──────┴──────┼─────────────┤
18H│ ファイルの最終日付 │ ファイルのサイズ(下...
├─────────────┼──────┬──────┤
1CH│ ファイルのサイズ(上位) │ │ ...
├──────┬──────┼──────┼──────┤
│ │ │ │ │
├──── 検索したファイル名(13バイト) ─────┤
│ │ │ │ │
├──────┼──────┼──────┼──────┘
28H│ │ │ │←2AH
└──────┴──────┴──────┘
2CH
【ファンクション 4FH】
機能 次に一致するファイルの検索
入力 AH=4FH
出力 CF=1,AX=05H:アクセス不可
12H:ファンクション検出不可
CF=0 :正常終了
破壊 AX,CF
説明 ファンクション4EHによって検索された次のファイ...
れたファイル情報がシステム情報エリアに格納されま...
クション4EHでCXによって指定された属性以下の...
CXに00Hが設定された場合、通常のファイルのみ...
CXに16Hが設定された場合、通常のファイルの他...
テムファイル、ディレクトリが検索されます。全ての...
CXに3FHを設定してください。ファイルの検索は...
繰返すことによって行うことが出来ます。このファン...
エリアさえ適正ならば、4EHを用いなくても次の検...
また検索した結果、パス名に該当するファイルが存在...
12Hを返します。
システム情報エリアに格納されるデ−タ
┌──────┬──────┬──────┬──────┐
00H│ │ │ │ │
├──────┼──────┼──────┼──────┤
│ │ │ │ │
├──────┼──────┴──────┼──────┤
│ │ 予約域(21バイト) │ ...
├──────┼──────┬──────┼──────┤
│ │ │ │ │
├──────┼──────┼──────┼──────┤
│ │ │ │ │
├──────┼──────┼──────┴──────┤
14H│ │ 検索属性 │ ファイルの最終時刻 ...
├──────┴──────┼─────────────┤
18H│ ファイルの最終日付 │ ファイルのサイズ(下...
├─────────────┼──────┬──────┤
1CH│ ファイルのサイズ(上位) │ │ ...
├──────┬──────┼──────┼──────┤
│ │ │ │ │
├──── 検索したファイル名(13バイト) ─────┤
│ │ │ │ │
├──────┼──────┼──────┼──────┘
28H│ │ │ │←2AH
└──────┴──────┴──────┘
2CH
【ファンクション 54H】
機能 リ−ドアフタ−ライトモ−ドの取得
入力 AH=54H
出力 AL=現在のリ−ドアフタ−ライトモ−ドの値
00H:リ−ドアフタ−ライトオフ
01H:リ−ドアフタ−ライトオン
破壊 AL,CF
説明 ディスク書込み時のリ−ドアフタライト機能の動作状態...
ィスク書込み時に書込み動作のみを行う場合、ALに...
た、ディスク書込み時にチェックリ−ドを行う場合、A...
す。このモ−ドはファンクション2EHにより設定出来...
【ファンクション 56H】
機能 ディレクトリエントリの変更
入力 AH=56H
DX=既存ファイルのパス名の格納オフセットアドレス
DS=既存ファイルのパス名の格納セグメントアドレス
DI=新規パス名の格納オフセットアドレス
ES=新規パス名の格納セグメントアドレス
出力 CF=1,AX=02H:存在しないファイル
03H:無効なパス名
05H:アクセス不可
0FH:無効なドライブ
11H:ドライブ間変更
CF=0 :正常終了
AX,CF以外のレジスタは保持されます。
説明 ディレクトリエントリを変更することにより、ファイ...
ファンクションはDS:DXによって指定されたファ...
イルが存在しない場合、AXにエラ−02Hを返します...
た場合、次にES:DIによって指定されたパス名を...
該当するエントリがすでに存在する場合、AXにエラ−...
たドライブの指定が異なる場合、AXにエラ−11Hを...
DS:DX,ES:DIの指定するサブディレクトリ...
:DXの指定するエントリのファイル名(ファイル拡...
DIの指定するファイル名で置き代えられます。この...
領域は変更されません。
DS:DX,ES:DIの指定するサブディレクトリ...
の指定するサブディレクトリ上に、新たなファイルエ...
の時のエントリは、DS:DXエントリのファイル名...
Iの指定するファイル名とが合さったものとなります...
イルエントリは削除されます。
ES:DIによって指定されたファイル名が新たなデ...
ァイル名となります。また、DS:DXによって指定...
ます。
【ファンクション 57H】
機能 ファイルの日付/時刻の取得/設定
入力 AH=57H
AL=00H:日付/時刻の取得
01H:日付/時刻の設定
BX=ファイルハンドル
CX=設定すべき時刻(AL=01H)
DX=設定すべき日付(AL=01H)
出力 CF=1,AX=01H:ALの指定が範囲外
05H:アクセス不可
06H:無効なハンドル
CF=0,CX :ファイルの最終編集時刻(...
DX :ファイルの最終編集日付(...
AX,CX,DX,CF以外のレジスタは保持されま...
説明 ALが00Hの時、ファイルハンドルが示すファイル...
報を返します。またALが01Hの時、ファイルハン...
トリの日付/時刻情報を仮変更します。この変更日時...
むのは、そのファイルハンドルがクロ−ズされる時点と...
BXはオ−プンされているファイルハンドルでなければ...
定されたハンドルがオ−プンされていない場合、AXに...
す。また指定されたALが00H〜01Hの範囲にな...
1Hを返します。
日付/時刻の構成
┌─────┬─────┐
│ CH │ CL │
【時刻】 CX ├───┬─┴─┬───┤
│ 時 │ 分 │ 秒 │
└───┴───┴───┘
5 bits 6 bits 5 bits
┌─────┬─────┐
│ DH │ DL │
【日付】 DX ├────┬┴─┬───┤
│ 年 │ 月 │ 日 │
└────┴──┴───┘
7 bits 4 bits 5 bits
【ファンクション 58H】
機能 メモリ割当てモ−ドの取得/設定
入力 AH=58H
AL=00H:メモリ割当てモ−ドの取得
01H:メモリ割当てモ−ドの設定
BX=00H:下位アドレス(AL=01H)
01H:最小ブロック(AL=01H)
02H:上位アドレス(AL=01H)
出力 CF=1,AX=01H:ALの指定が範囲外
CF=0,AX=00H:下位アドレス(AL=00...
01H:最小ブロック(AL=00...
02H:上位アドレス(AL=00...
破壊 AX,BX,CF
説明 ALが00Hの場合、AXに現在選択されているメモ...
す。ALが01Hの場合、BXによって指定されたメ...
します。メモリ割当てモ−ドは、メモリエリアの設定時...
選択方法を指定するものです。このモ−ドはファンクシ...
参照されます、このモ−ドの内訳を以下に示します。
00H:メモリエリアを確保する際、空き領域の出来...
当てを行います。従って,割当てモ−ドとして...
合、開きメモリ領域の検索は下位アドレスか...
れた適合サイズの空き領域にメモリの割当て...
01H:メモリエリアを確保する際、可能な最小の空...
す。従って、割当てモ−ドとして01Hが選択...
リ領域の検索は下位アドレスから最終アドレ...
適合可能な最小の空きメモリ領域に割当てが...
02H:メモリエリアを確保する際、空き領域の出来...
当てを行います。従って、割当てモ−ドとして...
合、開きメモリ領域の検索は下位アドレスか...
れ、その中で適合可能な最上位のメモリ領域...
ALに00H〜02H以外の値が指定された場合,A...
ます.
【ファンクション 5AH】
機能 一時ファイルの自動作成
入力 AH=5AH
CX=ファイルの属性
DX=作成するパス名の格納オフセットアドレス
DS=作成するパス名の格納セグメントアドレス
出力 CF=1,AX=02H:パス名がボリュ−ムラベルを...
03H:無効なパス名
04H:オ−プン不可
05H:アクセス不可
0FH:無効なドライブ
CF=0,AX :一時ファイルのファイルハ...
破壊 AX,CX,DX,DS,CF
説明 DS:DXには一時ファイルを作成するサブディレク...
のパス名が与えられなければなりません。このパス名...
IZ文字列の長さより13バイト余計に必要であり、...
イルのファイル名が入ります。この時、ファイル名に...
属性にはCXによって指定されたものが用いられます...
クトリ、ボリュ−ムラベルを指定することはできません...
DS:DXは、サブディレクトリ名から一時ファイル...
DS:DX
↓
┌─────────┬─┬─────────────┐
│ ディレクトリ名 │00│ │
└─────────┴─┴─────────────┘
↓
┌─────────┬─┬──┬──┬──┬──┬─┐
│ ディレクトリ名 │¥│"時"│"分"│"秒"│"00"│00│
└─────────┴─┴──┴──┴──┴──┴─┘
"時":時を16進化した文字列(2バイト)
"分":分を16進化した文字列(2バイト)
"秒":秒を16進化した文字列(2バイト)
DS:DXによって指定されたディレクトリが存在しな...
03Hを返します。またファイルハンドルのためのシス...
AXにエラ−04Hを返します。
正常にファイルが形成された場合、AXにファイルハン...
した一時ファイルが発生した場合、新たなファイル名を...
くなるまでこれを繰返します。このファンクションは一...
うだけなので、一時ファイルが不要になった場合、これ...
ます。
【ファンクション 5BH】
機能 新たなファイルの作成
入力 AH=5BH
CX=ファイルの属性
DX=パス名の先頭のオフセットアクセス
DS=パス名の先頭のセグメントアクセス
出力 CF=1,AX=02H:パス名がボリュ−ムラベルを...
03H:無効なパス名
04H:オ−プン不可
05H:アクセス不可
0FH:無効なドライブ
50H:既に存在するファイル
CF=0 :作成・オ−プンされたファイ...
破壊 AX,CF
説明 ファイルを作成し、作成したファイルをオ−プンし、そ...
DS:DXは作成するファイルのパス名を示すASC...
ていなければなりません。またCXにはファイルの属...
はなりません。属性はディレクトリエントリのそれと...
のようなビット対応になっています。
下位1ビット目:リ−ドオンリ−属性
下位2ビット目:隠れファイル属性
下位3ビット目:システムファイル属性
下位4ビット目:ボリュ−ムラベル属性(指定不可)
下位5ビット目:ディレクトリ属性(指定不可)
下位6ビット目:保存ファイル属性
同一名のファイルが存在しない場合、ディレクトリ上に...
のファイルを形成します。その後、ファイルを読出し/...
ンし、ハンドルをAXに返します。ただし、指定された...
ドオンリ−の場合、読出しのみのオ−プンとなります。
また同一名のファイルが既に存在する場合、AXにエラ−...
指定されたパス名が無効な場合、AXにエラ−03Hを返...
るためのハンドルに空きが無い場合、AXにエラ−04H...
ファイルが正常にオ−プン出来ない場合,もしくはCXの...
もの(ディレクトリ等)が含まれている場合、AXにエ...
このファンクションは、ファイルが既に存在してる場合...
ファンクション3CHと同じ動作をします。
*7.2 システムインタラプトコ−ル [#me1b4f02]
23H・・・・・・・CTRL−Cブレ−ク処理
24H・・・・・・・ディスクエラ−ハンドラ
25H・・・・・・・ディスクセクタリ−ド
26H・・・・・・・ディスクセクタライト
【INT 23H】
機能 CTRL−Cブレ−ク処理
入力 −−−−
出力 −−−−
破壊 −−−−
説明 INT 21Hファンクションコ−ルの実行時にCTR...
つCTRL−C検査モ−ドが選択されている場合,シス...
の割込みを起動します.この割込みル−チンは現在実行...
SHELLのコマンド受け付けル−チンに制御を戻しま...
INT 23Hの割込みベクタは,プロセス起動時に...
域にコピ−され,終了時に元の値に戻されますので,こ...
ことにより,プロセス自身のINT 23Hル−チンを...
この際,システムの処理を継続させたい場合には,入...
保存して,IRETで抜ける必要があります.この時...
ァンクションコ−ル起動時のそれと同一です.また割込...
態は以下のようになっていますので,INT 23H...
ップしてIRETを行うと,直接ファンクションコ−ル...
することができます.
下位アドレス
┌──────┐
│ IP │\
├──────┤ │
│ CS │ │INT 23H
├──────┤ │
│ FLAG │/
├──────┤
│ IP │\
├──────┤ │
│ CS │ │INT 21H
├──────┤ │
│ FLAG │/
└──────┘
上位アドレス
CTRL−Cチェックはファンクションの頭で1回だけ...
長い処理時間を要するようなファンクションの場合で...
レ−クをかけることはできません.またファンクション...
−Cのチェックが禁止されている場合,INT 23H...
ません.
【INT 24H】
機能 ディスクエラ−ハンドラ
入力 AH=エラ−境界
AL=エラ−発生時のドライブ
DI=エラ−コ−ド
SI=エラ−発生時のドライバオフセットアドレス
BP=エラ−発生時のドライバオセグメントドレス
出力 AL=ユ−ザ−処理情報
破壊 −−−−
説明 ディスクアクセス中に回復不能なエラ−が検出された場...
24Hの割込みを起動します.この割込みル−チンはエ...
表示し,プロセス中止/アクセス再試行/エラ−無視の...
させます.この選択情報はIRET時にレジスタAL...
この値に基づいて後続の処理を行います.
INT 24Hの割込みベクタは,プロセス起動時に...
域にコピ−され,終了時に元の値に戻されますので,こ...
ことにより,プロセス自身のINT 24Hル−チンを...
この際,入力時のレジスタの保存は一切必要ありませ...
スタック状態は以下のようになっていますので,IN...
INT 21Hのレジスタをポップ・アップしてIR...
ンクションコ−ルの次のアドレスに移行することができ...
下位アドレス
┌──────┐
│ IP │\
│ CS │ │INT 24H
│ FLAG │/
├──────┤
│ AX │\
│ BX │ │
│ CX │ │
│ DX │ │
│ SI │ │INT 21H
│ DI │ │
│ BP │ │
│ DS │ │
│ ES │/
├──────┤
│ IP │\
│ CS │ │INT 21H
│ FLAG │/
└──────┘
上位アドレス
エラ−環境は,その最下位ビットのみが意味を持ち,0の...
ラ−を,1の場合は書込み時のエラ−を指定します.また...
したエラ−の種類を指定し,以下のような内訳になってい...
00H:プロテクトされたディスクへの書込み
01H:存在しないロ−カル・ユニット番号を指定
02H:ドライブが非レディ状態
03H:不正なコマンド番号
04H:FDCのCRCエラ−
05H:コマンドパラメ−タ−領域の長さが不適正
06H:FDCのシ−クエラ−
07H:不正なメディアタイプ
08H:セクタが検出不能
0AH:書込み時のエラ−
0BH:読出し時のエラ−
0CH:不定エラ−
出力時には,ユ−ザが指定した後続処理の内容をレジスタ...
この内訳を以下に示します.
00H:エラ−を無視し,ユ−ザプログラムに制御を戻し...
01H:エラ−が生じた時のドライバの処理を再試行しま...
02H:現在のプロセスを中止し,上位プロセスに処理...
【INT 25H】
機能 ディスクセクタリ−ド
入力 AL=ドライブ番号(0:A,1:B,………)
CX=リ−ドセクタ数
DX=開始セクタ番号
BX=リ−ドバッファのオフセットアドレス
DS=リ−ドバッファのセグメントアドレス
出力 CF=エラ−フラグ
AL=エラ−コ−ド(CF=1)
DI=リ−ドに成功したセクタ数
CX=リ−ドに失敗したセクタ数
破壊 AX,CX,DI,FLAG
説明 ディスクに対し,セクタ単位でのリ−ド処理を行います...
−ルは,RETF命令を用いてユ−ザプログラムに復帰...
側で処理を継続するためには,スタック上に積まれた...
してやる必要があります.このインタラプトコ−ルでエ...
INT 24Hのエラ−処理は起動せず,単にCFを1...
きます.この際,INT 24Hの場合と同一のエラ−...
に返します.またアクセスに成功したセクタの数をレ...
セクタの数をレジスタCXに返します.
指定したセクタの範囲がディスクの最終セクタを越え...
タ数の全てがアクセスできなくても,CFに1を返さ...
の結果は使用しているドライバに依存し,デフォルト...
・ドライバの場合,最終セクタを越えてもエラ−は返し...
【INT 26H】
機能 ディスクセクタライト
入力 AL=ドライブ番号(0:A,1:B,………)
CX=ライトセクタ数
DX=開始セクタ番号
BX=ライトバッファのオフセットアドレス
DS=ライトバッファのセグメントアドレス
出力 CF=エラ−フラグ
AL=エラ−コ−ド(CF=1)
DI=ライトに成功したセクタ数
CX=ライトに失敗したセクタ数
破壊 AX,CX,DI,FLAG
説明 ディスクに対し,セクタ単位でのライト処理を行いま...
−ルは,RETF命令を用いてユ−ザプログラムに復帰...
側で処理を継続するためには,スタック上に積まれた...
してやる必要があります.このインタラプトコ−ルでエ...
INT 24Hのエラ−処理は起動せず,単にCFを1...
きます.この際,INT 24Hの場合と同一のエラ−...
に返します.またアクセスに成功したセクタの数をレ...
セクタの数をレジスタCXに返します.
指定したセクタの範囲がディスクの最終セクタを越え...
タ数の全てがアクセスできなくても,CFに1を返さ...
の結果は使用しているドライバに依存し,デフォルト...
・ドライバの場合,最終セクタを越えてもエラ−は返し...
*7.3 システムエリア [#t8e83b1d]
【プロセスID】
説明 この領域は,メモリエリアの管理を行うのに用いられ...
48H,49H,4AH,4BH,4CHによりその...
各プロセスIDの先頭の1バイトは識別子の役割を果...
ロセスIDを,また5AHが最後のプロセスIDを示...
IDは正方向のチェイン構造をなし,現在のプロセス...
値に,オフセット[+3]に格納されている1ワ−ドの...
のプロセスIDのセグメントアドレスとなります.ま...
格納されている1ワ−ドが0000Hである場合,シス...
アをフリ−とみなします.この領域の内訳を以下に示し...
┌──────┬─────────────┬──────┐
00H│4Dor5A│ メモリの開始セグメント │メモリのパ...
├──────┼──────┬──────┼──────┤
04H│グラフサイズ│ │ │ │
├──────┼──────┴──────┼──────┤
08H│ │ システム予約域 │ ...
├──────┼──────┬──────┼──────┤
0CH│ │ │ │ │
└──────┴──────┴──────┴──────┘
【プロセスコントロ−ラ】
説明 この領域は,実行形式のプログラムの動作を管理する...
ションコ−ル4BHの実行時に,メモリエリアの先頭か...
域に割当てられます(PIDの直後の100Hバイト...
下に示します.
┌──────┬──────┬─────────────┐
00H│ │ │プロセス最終セグメント+...
├──────┴──────┴──────┬──────┤
04H│ システム予約域 ┃ │ ...
├──────┬──────┬──────┴──────┘
08H│ │ │ プロセス終了時の抜出し...
├──────┴──────┼─────────────┤
0CH│アドレス │ INT23Hル−チンの...
├─────────────┼─────────────┐
10H│アドレス(コピ−) │ INT24Hル−チンの...
├─────────────┼──────┬──────┐
14H│アドレス(コピ−) │ │ │
├──────┬──────┼──────┼──────┤
18H│ │ │ │ │
├──────┼──────┼──────┼──────┤
〜 システム予約域 ...
├──────┼──────┼──────┼──────┤
28H│ │ │ │ │
├──────┴──────┼──────┴──────┤
2CH│ プロセス環境セグメント │上位コントロ−ラセグメン...
├──────┬──────┼──────┬──────┤
30H│ │ │ │ │
├──────┼──────┼──────┼──────┤
〜 システム予約域 ...
├──────┼──────┼──────┼──────┤
4CH│ │ │ │ │
├──────┴──────┼──────┼──────┤
50H│ INT 21H │ RETF │ ...
├──────┬──────┼──────┼──────┤
54H│ │ │ │ │
├──────┼──────┼──────┼──────┘
〜 システム予約域 ...
├──────┼──────┼──────┼──────┤
7CH│ │ │ │ │
├──────┼──────┼──────┼──────┤
80H│ │ │ │ │
├──────┼──────┼──────┼──────┤
〜 デフォルトのシステム情報エリア ...
├──────┼──────┼──────┼──────┤
FCH│ │ │ │ │
└──────┴──────┴──────┴──────┘
ページ名: