home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 07_08 / tricks / drvedemo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1991-04-19  |  2.6 KB  |  101 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    DRVEDEMO.PAS                        *)
  3. (*        (c) 1991 Michael Plewe & TOOLBOX                *)
  4. (* ------------------------------------------------------ *)
  5. {$M 4000,0,0}                 { Nur wichtig für Exec(...); }
  6.  
  7. PROGRAM DriveDemo;
  8.  
  9. USES Crt, Dos;
  10.  
  11. CONST
  12.   DiskError : INTEGER = 0;
  13.   Path      : STRING  = '';
  14.   OldPath   : STRING  = '';
  15.  
  16. VAR
  17.   Dummy : BYTE;
  18.  
  19.   FUNCTION GetLogDriveState(No : BYTE): BYTE;
  20.   VAR
  21.     Regs : Registers;
  22.   BEGIN
  23.     DiskError := 0;
  24.     Regs.AH   := $44;
  25.     Regs.AL   := $0E;
  26.     Regs.BX   := No;
  27.     MsDos(Regs);
  28.     GetLogDriveState := Regs.AL;
  29.     IF (Regs.Flags AND FCarry <> 0) THEN
  30.       DiskError := Regs.AX;
  31.   END;
  32.  
  33.   FUNCTION SetLogDriveState(No : BYTE): BYTE;
  34.   VAR
  35.     Regs : Registers;
  36.   BEGIN
  37.     DiskError := 0;
  38.     Regs.AH   := $44;
  39.     Regs.AL   := $0F;
  40.     Regs.BX   := No;
  41.     MsDos(Regs);
  42.     SetLogDriveState := Regs.AL;
  43.     IF (Regs.Flags AND FCarry <> 0) THEN
  44.       DiskError := Regs.AX;
  45.   END;
  46.  
  47.   PROCEDURE WaitForKeypress;
  48.   VAR
  49.     c : CHAR;
  50.   BEGIN
  51.     c := ReadKey;
  52.   END;
  53.  
  54. BEGIN                      { Hauptprogramm/Demo }
  55.   OldPath := GetEnv('BGIPATH');
  56.              (* Im Environment: SET BGIPATH='D:\TURBO' *)
  57.   Path    := GetEnv('COMSPEC');
  58.  
  59.   ClrScr;
  60.   WriteLn('Für diese Demonstration muß das Laufwerk zum ',
  61.           'Lesen bereit sein!');
  62.   WriteLn(^J'So sieht die ganze Sache ohne Setzen der ',
  63.           'logischen Laufwerke aus...'^J);
  64.   Delay(2000);
  65.   ChDir('A:\');
  66.   Exec(Path, '/C DIR/W *.*');
  67.   ChDir('B:\');
  68.   Exec(Path, '/C DIR/W *.*');
  69.  
  70.   ClrScr;
  71.   WriteLn('...und so, wenn man alles selbst in die ',
  72.           'Hand nimmt!'^J);
  73.   Delay(2000);
  74.   IF GetLogDriveState(1) <> 0 THEN
  75.     Dummy := SetLogDriveState(1);
  76.   IF DiskError <> 0 THEN
  77.     WriteLn(^G^G^G^J'Fehler! Nr : ', DiskError, ^J);
  78.   WriteLn('Bitte Taste drücken, jetzt wird das Laufwerk ',
  79.           'A: angesprochen!');
  80.   WaitForKeypress;
  81.  
  82.   ChDir('A:\');
  83.   Exec(Path, '/C DIR/W *.*');
  84.   IF GetLogDriveState(2) <> 0 THEN
  85.     Dummy := SetLogDriveState(2);
  86.   IF DiskError <> 0 THEN
  87.     WriteLn(^G^G^G^J'Fehler! Nr : ', DiskError, ^J);
  88.   WriteLn(^J'Bitte Taste drücken, denn jetzt kommt ',
  89.           'Laufwerk B: !');
  90.   WaitForKeypress;
  91.  
  92.   ChDir('B:\');
  93.   Exec(Path,'/C DIR/W *.*');
  94.   ChDir(OldPath);
  95.   WriteLn(^J'Taste drücken... THE END');
  96.   WaitForKeypress;
  97. END.
  98. (* ------------------------------------------------------ *)
  99. (*                 Ende von DRVDEMO.PAS                   *)
  100.  
  101.