home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 07 / tricks / diskch.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-04-06  |  1.8 KB  |  64 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    DISKCH.PAS                          *)
  3. (*        (c) 1990 Jan Laitenberger & TOOLBOX             *)
  4. (* ------------------------------------------------------ *)
  5. UNIT DiskCh;
  6.  
  7. INTERFACE
  8.        (* Die Funktionen stehen nur auf ATs zur Verfügung *)
  9.  
  10.   FUNCTION DiskTyp(Drive : BYTE) : BYTE;
  11.  
  12.   { Stellt Laufwerkstyp fest:
  13.     'Drive' -> Laufwerknummer (0=A, 1=B, 80h=1. Festplatte)
  14.      Ergebnis:   0 ->  Laufwerk nicht gefunden
  15.                  1 ->  Laufwerk erkennt keinen Disk-Wechsel
  16.                  2 ->  Laufwerk erkennt Disk-Wechsel
  17.                  3 ->  Laufwerk ist Festplatte             }
  18.  
  19.   FUNCTION DiskChange(Drive : BYTE) : BOOLEAN;
  20.  
  21.   { Ermittelt, ob die Diskette seit der letzten Disketten-
  22.     operation gewechselt wurde. Ist dies der Fall liefert
  23.     die Funktion solange den Wert 'TRUE', bis ein neuer
  24.     Diskettenzugriff erfolgt.
  25.     'Drive' -> Laufwerknummer (0=A, 1=B, 80h=1. Festplatte)
  26.     Ergebnis: TRUE -> Diskettenwechsel hat stattgefunden   }
  27.  
  28.  
  29. IMPLEMENTATION
  30.  
  31. USES Dos, Crt;
  32.  
  33. VAR
  34.   Regs: REGISTERS;
  35.  
  36.   FUNCTION DiskTyp(Drive : BYTE) : BYTE;
  37.   BEGIN
  38.     WITH Regs DO BEGIN
  39.       AH := $15;
  40.       DL := Drive;
  41.       Intr($13, Regs);
  42.       DiskTyp := AH;
  43.     END;
  44.   END;
  45.  
  46.   FUNCTION DiskChange(Drive: BYTE): BOOLEAN;
  47.   BEGIN
  48.     IF NOT (DiskTyp(Drive) = 2) THEN BEGIN
  49.       WriteLn (#13#10#7,
  50.               'Laufwerk erkennt keinen Disk-Wechsel!');
  51.       Halt;
  52.     END;
  53.     WITH Regs DO BEGIN
  54.       AH := $16;
  55.       DL := Drive;
  56.       Intr($13, Regs);
  57.       DiskChange := (AH = 6);
  58.     END;
  59.   END;
  60.  
  61. BEGIN
  62. END.
  63. (* ------------------------------------------------------ *)
  64. (*                 Ende von DISKCH.PAS                    *)