Section courante

A propos

Section administrative du site

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

Exemple

L'exemple suivant, écrit en Turbo Pascal, reproduit les appels d'interruption que la commande APPEND.COM effectue :

  1. Program _APPEND;
  2.  
  3. Uses DOS;
  4.  
  5. Var
  6.  Regs:Registers;
  7.  I:Integer;
  8.  C:Char;
  9.  
  10. Function StrToUpper(S:String):String;
  11. Var
  12.  I:Byte;
  13. Begin
  14.  For I:=1 to Length(S)do Begin
  15.   If S[I] in['a'..'z']Then S[I]:=Chr(Ord(S[I])-32);
  16.  End;
  17.  StrToUpper:=S;
  18. End;
  19.  
  20. BEGIN
  21.  If(ParamStr(1)='/?')or(ParamStr(1)='--help')or(ParamStr(1)='-h')or
  22.    (ParamStr(1)='/h')or(ParamStr(1)='/H')Then Begin
  23.   WriteLn('APPEND : Cette commande permet d''ouvrir des fichiers ',
  24.           'quelques se trouvant dans les répertoires spécifiés ',
  25.           'comme s''il s''agissait du répertoire courant.');
  26.   WriteLn;
  27.   WriteLn('Syntaxe : APPEND [/E] [/PATH:ON|OFF] [/X:ON|OFF]');
  28.  End
  29.   Else
  30.  If ParamCount>0 Then Begin
  31.   For I:=1 to ParamCount do Begin
  32.    If StrToUpper(ParamStr(I))='/E'Then Begin
  33.     Regs.AX:=$B700;
  34.     Intr($2F,Regs);
  35.     Regs.AX:=$B707;
  36.     Regs.BX:=Regs.BX or (1 shl 14);
  37.     Intr($2F,Regs);
  38.    End
  39.     Else
  40.    If StrToUpper(ParamStr(I))='/PATH:OFF'Then Begin
  41.     Regs.AX:=$B700;
  42.     Intr($2F,Regs);
  43.     Regs.AX:=$B707;
  44.     Regs.BX:=Regs.BX and Not(1 shl 13);
  45.     Intr($2F,Regs);
  46.    End
  47.     Else
  48.    If StrToUpper(ParamStr(I))='/PATH:ON'Then Begin
  49.     Regs.AX:=$B700;
  50.     Intr($2F,Regs);
  51.     Regs.AX:=$B707;
  52.     Regs.BX:=Regs.BX or (1 shl 13);
  53.     Intr($2F,Regs);
  54.    End
  55.     Else
  56.    If StrToUpper(ParamStr(I))='/X:OFF'Then Begin
  57.     Regs.AX:=$B700;
  58.     Intr($2F,Regs);
  59.     Regs.AX:=$B707;
  60.     Regs.BX:=Regs.BX and Not(1 shl 15);
  61.     Intr($2F,Regs);
  62.    End
  63.     Else
  64.    If StrToUpper(ParamStr(I))='/X:ON'Then Begin
  65.     Regs.AX:=$B700;
  66.     Intr($2F,Regs);
  67.     Regs.AX:=$B707;
  68.     Regs.BX:=Regs.BX or (1 shl 15);
  69.     Intr($2F,Regs);
  70.    End
  71.     Else
  72.    Begin
  73.     WriteLn('Le paramStre ',ParamStr(I),' n''est pas reconnu.');
  74.     Halt;
  75.    End;
  76.   End;
  77.  End
  78.   Else
  79.  Begin
  80.   Regs.AX:=$B704;
  81.   Intr($2F,Regs);
  82.   If(Regs.ES=0)and(Regs.DI=0)Then Begin
  83.    WriteLn('Aucun chemin de recherche pour APPEND');
  84.   End
  85.    Else
  86.   Begin
  87.    {$IFNDEF FPC}
  88.     I:=0;
  89.     Repeat
  90.      C:=Char(Mem[Regs.ES:Regs.DI+I]);
  91.      Write(C);
  92.      Inc(I);
  93.     Until C=#0;
  94.    {$ENDIF}
  95.    WriteLn;
  96.   End;
  97.  End;
  98. 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