Interruption 2Fh |
Fonction B7h |
APPEND installé |
---|---|---|
APPEND |
Description
Cette fonction permet à une application de tester si APPEND a été installé.
Entrée
Registre | Description | |
---|---|---|
AH | B7h | |
AL | Ce registre permet d'indiquer la sous-fonction : | |
Valeur | Description | |
00h | Cette valeur permet de demander l'état de l'installation | |
02h | Cette valeur permet de demander la version de APPEND. | |
04h | Cette valeur permet de demander un pointeur vers le chemin de APPEND. | |
06h | Cette valeur permet de demander l'état de la fonction d'APPEND. | |
07h | Cette valeur permet de fixer l'état de la fonction d'APPEND. | |
11h | Cette valeur permet de fixer l'état du nom trouvé de retour. | |
BX | Ce registre permet d'indiquer l'état d'APPEND si le registre AL = 07h : | |
Bit | Description | |
0 | Ce bit permet d'activer APPEND. | |
1 à 12 | Ce bit permet de réservé. | |
13 | Ce bit permet d'activer le commutateur /PATH. | |
14 | Ce bit permet d'activer le commutateur /E. | |
15 | Ce bit permet d'activer le commutateur /X. |
Sortie
Registre | Valeur ou description | |||
---|---|---|---|---|
FC | Ce registre de drapeau de retenue permet d'indiquer le résultat de l'opération : | |||
Valeur | Description | |||
0 | Cette valeur permet d'indiquer que l'opération a été un succès et dans ce cas : | |||
Registre | Description | |||
AL | Ce registre permet d'indiquer l'état de l'installation si la sous-fonction est appelé avec AL=00h : | |||
Code | Description | |||
00h | Cette erreur permet d'indiquer qu'il n'est pas installé et qu'il peut être installé. | |||
01h | Cette erreur permet d'indiquer qu'il n'est pas installé et qu'il ne peut pas être installé. | |||
FFh | Cette erreur permet d'indiquer qu'il est installé. | |||
AX | Ce registre permet d'indiquer s'il s'agit d'un APPEND du MS-DOS 4.0 si appelé avec AL=00h | |||
Code | Description | |||
FFFFh | Cette erreur permet d'indiquer qu'il s'agit de la version MS-DOS 4.0 d'APPEND. | |||
ES:DI | Cette paire de registre permet d'indiquer s'il s'agit du segment:déplacement du chemin APPEND active si appelé avec AL=04h | |||
BX | Ce registre permet d'indiquer l'état APPEND si appelé avec AL=06h | |||
1 | Cette valeur permet d'indiquer qu'une erreur s'est produite |
Remarque
- Si l'état de retour du nom trouvé est défini avec la sous-fonction 11h, le nom de fichier complet est renvoyé à l'application suivante pour appeler l'interruption 21h, fonction 3Dh, 43h ou 6Ch. Le nom est placé à la même adresse que la chaîne de caractères de paramètres ASCIZ pour l'interruption 21h, donc l'application doit être sûre de fournir un tampon de taille adéquate. L'état de retour du nom trouvé est réinitialisé après que APPEND ait traité un appel de l'interruption 21h.
Exemple
L'exemple suivant, écrit en Turbo Pascal, reproduit les appels d'interruption que la commande APPEND.COM effectue :
- Program _APPEND;
-
- Uses DOS;
-
- Var
- Regs:Registers;
- I:Integer;
- C:Char;
-
- Function StrToUpper(S:String):String;
- Var
- I:Byte;
- Begin
- For I:=1 to Length(S)do Begin
- If S[I] in['a'..'z']Then S[I]:=Chr(Ord(S[I])-32);
- End;
- StrToUpper:=S;
- End;
-
- BEGIN
- If(ParamStr(1)='/?')or(ParamStr(1)='--help')or(ParamStr(1)='-h')or
- (ParamStr(1)='/h')or(ParamStr(1)='/H')Then Begin
- WriteLn('APPEND : Cette commande permet d''ouvrir des fichiers ',
- 'quelques se trouvant dans les répertoires spécifiés ',
- 'comme s''il s''agissait du répertoire courant.');
- WriteLn;
- WriteLn('Syntaxe : APPEND [/E] [/PATH:ON|OFF] [/X:ON|OFF]');
- End
- Else
- If ParamCount>0 Then Begin
- For I:=1 to ParamCount do Begin
- If StrToUpper(ParamStr(I))='/E'Then Begin
- Regs.AX:=$B700;
- Intr($2F,Regs);
- Regs.AX:=$B707;
- Regs.BX:=Regs.BX or (1 shl 14);
- Intr($2F,Regs);
- End
- Else
- If StrToUpper(ParamStr(I))='/PATH:OFF'Then Begin
- Regs.AX:=$B700;
- Intr($2F,Regs);
- Regs.AX:=$B707;
- Regs.BX:=Regs.BX and Not(1 shl 13);
- Intr($2F,Regs);
- End
- Else
- If StrToUpper(ParamStr(I))='/PATH:ON'Then Begin
- Regs.AX:=$B700;
- Intr($2F,Regs);
- Regs.AX:=$B707;
- Regs.BX:=Regs.BX or (1 shl 13);
- Intr($2F,Regs);
- End
- Else
- If StrToUpper(ParamStr(I))='/X:OFF'Then Begin
- Regs.AX:=$B700;
- Intr($2F,Regs);
- Regs.AX:=$B707;
- Regs.BX:=Regs.BX and Not(1 shl 15);
- Intr($2F,Regs);
- End
- Else
- If StrToUpper(ParamStr(I))='/X:ON'Then Begin
- Regs.AX:=$B700;
- Intr($2F,Regs);
- Regs.AX:=$B707;
- Regs.BX:=Regs.BX or (1 shl 15);
- Intr($2F,Regs);
- End
- Else
- Begin
- WriteLn('Le paramStre ',ParamStr(I),' n''est pas reconnu.');
- Halt;
- End;
- End;
- End
- Else
- Begin
- Regs.AX:=$B704;
- Intr($2F,Regs);
- If(Regs.ES=0)and(Regs.DI=0)Then Begin
- WriteLn('Aucun chemin de recherche pour APPEND');
- End
- Else
- Begin
- {$IFNDEF FPC}
- I:=0;
- Repeat
- C:=Char(Mem[Regs.ES:Regs.DI+I]);
- Write(C);
- Inc(I);
- Until C=#0;
- {$ENDIF}
- WriteLn;
- End;
- End;
- END.
Voir également
Système d'exploitation - MS-DOS - Références de commandes et de programmes - «APPEND»
Système d'exploitation - MS-DOS 6 - Références de commandes et de programmes - «APPEND»
Dernière mise à jour : Jeudi, le 3 mars 2016