Section courante

A propos

Section administrative du site

Voici divers fonction permettant la manipulation des répertoires du système d'exploitation compatible DOS.

  1. typedef unsigned char Byte;
  2. typedef unsigned int  Word;
  3.  
  4. Word GetCurrentDirectory(Byte *Path) {
  5.   Word Sortie;
  6.   Word Drapeau;
  7.   _DS = FP_SEG(Path);
  8.   _SI = FP_OFF(Path);
  9.   _DL = 0;
  10.   _AH = 0x47;
  11.   asm INT 0x21;
  12.   Sortie  = _AX;
  13.   Drapeau = _FLAGS;
  14.   if((Drapeau & 0x01) == 1) return(Sortie);
  15.                  else return(0);
  16.  }
  17.  
  18.  Word GetDirectory(Byte Drive, Byte *Path) {
  19.   Word Sortie;
  20.   Word Drapeau;
  21.   _DS = FP_SEG(Path);
  22.   _SI = FP_OFF(Path);
  23.   _DL = Drive - ('A' - 1);
  24.   _AH = 0x47;
  25.   asm INT 0x21;
  26.   Sortie  = _AX;
  27.   Drapeau = _FLAGS;
  28.   if((Drapeau & 0x01) == 1) return(Sortie);
  29.                  else return(0);
  30.  }
  31.  
  32.  Word ChangeDirectory(Byte *Path) {
  33.   Word Sortie;
  34.   Word Drapeau;
  35.   _DS = FP_SEG(Path);
  36.   _DX = FP_OFF(Path);
  37.   _AH = 0x3B;
  38.   asm INT 0x21;
  39.   Sortie  = _AX;
  40.   Drapeau = _FLAGS;
  41.   if((Drapeau & 0x01) == 1) return(Sortie);
  42.                  else return(0);
  43.  }
  44.  
  45.  Word ChangeParentDirectory(void) {
  46.   return(ChangeDirectory(".."));
  47.  }
  48.  
  49.  Word ChangeRootDirectory(void) {
  50.   return(ChangeDirectory("\\"));
  51.  }
  52.  
  53.  Word MakeDirectory(Byte *Path) {
  54.   Word Sortie;
  55.   Word Drapeau;
  56.   _DS = FP_SEG(Path);
  57.   _DX = FP_OFF(Path);
  58.   _AH = 0x39;
  59.   asm INT 0x21;
  60.   Sortie  = _AX;
  61.   Drapeau = _FLAGS;
  62.   if((Drapeau & 0x01) == 1) return(Sortie);
  63.                  else return(0);
  64.  }
  65.  
  66.  Word RemoveDirectory(Byte *Path) {
  67.   Word Sortie;
  68.   Word Drapeau;
  69.   _DS = FP_SEG(Path);
  70.   _DX = FP_OFF(Path);
  71.   _AH = 0x3A;
  72.   asm INT 0x21;
  73.   Sortie  = _AX;
  74.   Drapeau = _FLAGS;
  75.   if((Drapeau & 0x01) == 1) return(Sortie);
  76.                  else return(0);
  77.  }
  78.  
  79.  Word RenameDirectory(Byte *Source, Byte *Target) {
  80.   Byte Path[80];
  81.   Byte Buffer[0x24];
  82.   Byte *Ptr;
  83.   {
  84.    Word Temp;
  85.    Temp = GetCurrentDirectory(Path);
  86.    if(Temp != 0) return(Temp);
  87.   }
  88.   Buffer[0] = Path[0];
  89.   {
  90.    Byte I;
  91.    for(I = 1;I <= 0x24;I++) Buffer[I] = 0;
  92.    for(I = 0;I <= 11;I++)
  93.    {
  94.     Buffer[0x01+I] = Source[I];
  95.     Buffer[0x11+I] = Target[I];
  96.    }
  97.   }
  98.   Ptr = Buffer;
  99.   _DS = FP_SEG(Ptr);
  100.   _DX = FP_OFF(Ptr);
  101.   _AH = 0x17;
  102.   asm INT 0x21;
  103.   return(_AL+0L);
  104.  }


Dernière mise à jour : Dimanche, le 26 juillet 2015